ah_sce_unpacked/unpacked/Custom_Token Playmat Image Swapper b7b45b.ttslua
2024-01-06 21:32:29 -05:00

1331 lines
46 KiB
Plaintext

-- Bundled by luabundle {"version":"1.6.0"}
local __bundle_require, __bundle_loaded, __bundle_register, __bundle_modules = (function(superRequire)
local loadingPlaceholder = {[{}] = true}
local register
local modules = {}
local require
local loaded = {}
register = function(name, body)
if not modules[name] then
modules[name] = body
end
end
require = function(name)
local loadedModule = loaded[name]
if loadedModule then
if loadedModule == loadingPlaceholder then
return nil
end
else
if not modules[name] then
if not superRequire then
local identifier = type(name) == 'string' and '\"' .. name .. '\"' or tostring(name)
error('Tried to require ' .. identifier .. ', but no such module has been registered')
else
return superRequire(name)
end
end
loaded[name] = loadingPlaceholder
loadedModule = modules[name](require, loaded, register, modules)
loaded[name] = loadedModule
end
return loadedModule
end
return require, loaded, register, modules
end)(nil)
__bundle_register("core/PlayAreaSelector", function(require, _LOADED, __bundle_register, __bundle_modules)
require("core/PlayAreaImageData") -- this fills the variable "PLAYAREA_IMAGE_DATA"
local playAreaApi = require("core/PlayAreaApi")
local typeIndex, selectionIndex
function onSave() return JSON.encode({typeIndex = typeIndex, selectionIndex = selectionIndex}) end
function onLoad(savedData)
self.createButton({
function_owner = self,
click_function = "onClick_toggleGallery",
tooltip = "Show Image Gallery",
height = 1500,
width = 1500,
color = { 1, 1, 1, 0 }
})
local loadedData = JSON.decode(savedData) or {}
typeIndex = loadedData.typeIndex or 1
selectionIndex = loadedData.selectionIndex or 1
Wait.time(updatePlayareaGallery, 0.5)
end
-- click function for main button
function onClick_toggleGallery()
Global.call("togglePlayareaGallery")
end
function onClick_defaultImage()
playAreaApi.updateSurface()
Global.call("togglePlayareaGallery")
end
function getDataSubTableByIndex(dataTable, index)
local loopId = 1
for i, v in pairs(dataTable) do
if index == loopId then return v end
loopId = loopId + 1
end
return {}
end
function updatePlayareaGallery()
-- get subtables
local dataForType = getDataSubTableByIndex(PLAYAREA_IMAGE_DATA, typeIndex)
local dataForSelection = getDataSubTableByIndex(dataForType, selectionIndex)
-- get global xml to insert elements
local globalXml = UI.getXmlTable()
-- selectable items
local itemSelection = getXmlTableElementById(globalXml, 'itemSelection')
itemSelection.children = {}
local i = 0
for itemName, _ in pairs(dataForType) do
i = i + 1
table.insert(itemSelection.children,
{
tag = "Panel",
attributes = { class = "itemPanel", id = "typePanel" .. i },
children = {
tag = "Text",
value = itemName,
attributes = { class = "itemText", id = "typeListText" .. i }
}
})
end
-- selectable images for that item
local playareaList = getXmlTableElementById(globalXml, 'playareaList')
playareaList.children = {}
for i, v in ipairs(dataForSelection) do
table.insert(playareaList.children,
{
tag = "VerticalLayout",
attributes = { class = "imageBox", id = "image" .. i },
children = {
{
tag = 'Image',
attributes = { class = "playareaImage", image = v.URL }
},
{
tag = 'Text',
value = v.Name,
attributes = { class = "imageName" }
}
}
})
end
playareaList.attributes.height = round(#playareaList.children / 2, 0) * 380
UI.setXmlTable(globalXml)
Wait.time(highlightTabAndItem, 0.1)
end
function onClick_imageTab(_, _, tabId)
typeIndex = tonumber(tabId:sub(9))
selectionIndex = 1
updatePlayareaGallery()
end
function onClick_listItem(_, _, listId)
selectionIndex = tonumber(listId:sub(10))
updatePlayareaGallery()
end
function onClick_image(_, _, id)
local imageIndex = tonumber(id:sub(6))
local dataForType = getDataSubTableByIndex(PLAYAREA_IMAGE_DATA, typeIndex)
local dataForSelection = getDataSubTableByIndex(dataForType, selectionIndex)
local newURL = dataForSelection[imageIndex].URL
playAreaApi.updateSurface(newURL)
Global.call("togglePlayareaGallery")
end
function highlightTabAndItem()
-- highlight active tab
for i = 1, 5 do
local color = "#888888"
if i == typeIndex then color = "#ffffff" end
UI.setAttribute("imageTab" .. i, "color", color)
end
-- highlight item
UI.setAttribute("typePanel" .. selectionIndex, "color", "grey")
UI.setAttribute("typeListText" .. selectionIndex, "color", "black")
end
-- loops through an XML table and returns the specified object
---@param ui Table XmlTable (get this via getXmlTable)
---@param id String Id of the object to return
function getXmlTableElementById(ui, id)
for _, obj in ipairs(ui) do
if obj.attributes and obj.attributes.id and obj.attributes.id == id then return obj end
if obj.children then
local result = getXmlTableElementById(obj.children, id)
if result then return result end
end
end
return nil
end
-- utility function
function round(num, numDecimalPlaces)
local mult = 10 ^ (numDecimalPlaces or 0)
return math.floor(num * mult + 0.5) / mult
end
end)
__bundle_register("core/PlayAreaApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local PlayAreaApi = {}
local guidReferenceApi = require("core/GUIDReferenceApi")
local function getPlayArea()
return guidReferenceApi.getObjectByOwnerAndType("Mythos", "PlayArea")
end
local function getInvestigatorCounter()
return guidReferenceApi.getObjectByOwnerAndType("Mythos", "InvestigatorCounter")
end
-- Returns the current value of the investigator counter from the playmat
---@return Integer. Number of investigators currently set on the counter
PlayAreaApi.getInvestigatorCount = function()
return getInvestigatorCounter().getVar("val")
end
-- Updates the current value of the investigator counter from the playmat
---@param count Number of investigators to set on the counter
PlayAreaApi.setInvestigatorCount = function(count)
getInvestigatorCounter().call("updateVal", count)
end
-- Move all contents on the play area (cards, tokens, etc) one slot in the given direction. Certain
-- fixed objects will be ignored, as will anything the player has tagged with 'displacement_excluded'
---@param playerColor Color Color of the player requesting the shift for messages
PlayAreaApi.shiftContentsUp = function(playerColor)
return getPlayArea().call("shiftContentsUp", playerColor)
end
PlayAreaApi.shiftContentsDown = function(playerColor)
return getPlayArea().call("shiftContentsDown", playerColor)
end
PlayAreaApi.shiftContentsLeft = function(playerColor)
return getPlayArea().call("shiftContentsLeft", playerColor)
end
PlayAreaApi.shiftContentsRight = function(playerColor)
return getPlayArea().call("shiftContentsRight", playerColor)
end
-- Reset the play area's tracking of which cards have had tokens spawned.
PlayAreaApi.resetSpawnedCards = function()
return getPlayArea().call("resetSpawnedCards")
end
-- Event to be called when the current scenario has changed.
---@param scenarioName Name of the new scenario
PlayAreaApi.onScenarioChanged = function(scenarioName)
getPlayArea().call("onScenarioChanged", scenarioName)
end
-- Sets this playmat's snap points to limit snapping to locations or not.
-- If matchTypes is false, snap points will be reset to snap all cards.
---@param matchTypes Boolean Whether snap points should only snap for the matching card types.
PlayAreaApi.setLimitSnapsByType = function(matchCardTypes)
getPlayArea().call("setLimitSnapsByType", matchCardTypes)
end
-- Receiver for the Global tryObjectEnterContainer event. Used to clear vector lines from dragged
-- cards before they're destroyed by entering the container
PlayAreaApi.tryObjectEnterContainer = function(container, object)
getPlayArea().call("tryObjectEnterContainer", { container = container, object = object })
end
-- counts the VP on locations in the play area
PlayAreaApi.countVP = function()
return getPlayArea().call("countVP")
end
-- highlights all locations in the play area without metadata
---@param state Boolean True if highlighting should be enabled
PlayAreaApi.highlightMissingData = function(state)
return getPlayArea().call("highlightMissingData", state)
end
-- highlights all locations in the play area with VP
---@param state Boolean True if highlighting should be enabled
PlayAreaApi.highlightCountedVP = function(state)
return getPlayArea().call("countVP", state)
end
-- Checks if an object is in the play area (returns true or false)
PlayAreaApi.isInPlayArea = function(object)
return getPlayArea().call("isInPlayArea", object)
end
PlayAreaApi.getSurface = function()
return getPlayArea().getCustomObject().image
end
PlayAreaApi.updateSurface = function(url)
return getPlayArea().call("updateSurface", url)
end
-- Called by Custom Data Helpers to push their location data into the Data Helper. This adds the
-- data to the local token manager instance.
---@param args Table Single-value array holding the GUID of the Custom Data Helper making the call
PlayAreaApi.updateLocations = function(args)
getPlayArea().call("updateLocations", args)
end
PlayAreaApi.getCustomDataHelper = function()
return getPlayArea().getVar("customDataHelper")
end
return PlayAreaApi
end
end)
__bundle_register("core/PlayAreaImageData", function(require, _LOADED, __bundle_register, __bundle_modules)
PLAYAREA_IMAGE_DATA = {
["Official Campaigns"] = {
["Night of the Zealot"] = {
{
Name = "I - The Gathering 1",
URL = "https://i.ibb.co/6NWqg1K/Zealot-Gathering.jpg"
},
{
Name = "III - Devourer Below 1",
URL = "https://i.ibb.co/x5QFzrx/Zealot-3-Devourer-Below-Helen-Castelow.png"
},
{
Name = "III - Devourer Below 2",
URL = "https://i.ibb.co/6r6LFGz/Zealot-3-Devourer-Below-Sarah-Miller.png"
}
},
["The Dunwich Legacy"] = {
{
Name = "I-A - Extracurricular Activity 1",
URL = "https://i.ibb.co/tDxX8KS/Dunwich-1-Extracurricular-Activity-Igor-Kirdeika.jpg"
},
{
Name = "I-A - Extracurricular Activity 2",
URL = "https://i.ibb.co/RQ6z0pj/Dunwich-1-Extracurricular-Activity-Joseph-Diaz.jpg"
},
{
Name = "I-A - Extracurricular Activity 3",
URL = "https://i.ibb.co/nnJdwL2/Dunwich-1-Extracurricular-Activity-Tomasz-Jedruszek.jpg"
},
{
Name = "I-B - House Always Wins 1",
URL = "https://i.ibb.co/8XPLdr9/Dunwich-2-House-Always-Wins-Jonny-Klein.jpg"
},
{
Name = "I-B - House Always Wins 2",
URL = "https://i.ibb.co/HtX95GK/Dunwich-2-House-Always-Wins-Robert-Laskey.jpg"
},
{
Name = "I-B - House Always Wins 3",
URL = "https://i.ibb.co/MCLP3Sz/Dunwich-2-House-Always-Wins-XX-l.jpg"
},
{
Name = "I-B - House Always Wins 4",
URL = "https://i.ibb.co/w7Pf5sd/Dunwich-2-House-Always-Wins-XX-l-2.jpg"
},
{
Name = "II - Miskatonic Museum 1",
URL = "https://i.ibb.co/x1Kf7qG/Dunwich-3-Miskatonic-Museum-Emre-Aktuna.jpg"
},
{
Name = "II - Miskatonic Museum 2",
URL = "https://i.ibb.co/yWXVPcN/Dunwich-3-Miskatonic-Museum-Richard-Wright.jpg"
},
{
Name = "III - Essex County Express",
URL = "https://i.ibb.co/602CMZb/Dunwich-4-Essex-County-Express-David-Alvarez.jpg"
},
{
Name = "IV - Blood on the Altar 1",
URL = "https://i.ibb.co/3CYHDhf/Dunwich-5-Blood-on-the-Altar.jpg"
},
{
Name = "IV - Blood on the Altar 2",
URL = "https://i.ibb.co/FbxcCY2/Dunwich-5-Blood-on-the-Altar-Chris-Ostrowski.jpg"
},
{
Name = "IV - Blood on the Altar 3",
URL = "https://i.ibb.co/sJf6YsZ/Dunwich-5-Blood-on-the-Altar-Lucas-Staniec.jpg"
},
{
Name = "IV - Blood on the Altar 4",
URL = "https://i.ibb.co/kBPNGBd/Dunwich-5-Blood-on-the-Altar-Mark-Molnar.jpg"
},
{
Name = "V - Undimensioned and Unseen 1",
URL = "https://i.ibb.co/QvfhjDv/Dunwich-6-Undimensioned-and-Unseen-Frej-Agelii.jpg"
},
{
Name = "V - Undimensioned and Unseen 2",
URL = "https://i.ibb.co/4VL9gSK/Dunwich-6-Undimensioned-and-Unseen-Lucas-Staniec.jpg"
},
{
Name = "V - Undimensioned and Unseen 3",
URL = "https://i.ibb.co/wBFsS8P/Dunwich-6-Undimensioned-and-Unseen-Michal-Teliga-jpg.jpg"
},
{
Name = "V - Undimensioned and Unseen 4",
URL = "https://i.ibb.co/wwGDcq6/Dunwich-6-Undimensioned-and-Unseen-Tomasz-Jedruszek.jpg"
},
{
Name = "VI - Where Doom Awaits 1",
URL = "https://i.ibb.co/TvMwqj4/Dunwich-7-Where-Doom-Awaits.jpg"
},
{
Name = "VI - Where Doom Awaits 2",
URL = "https://i.ibb.co/S6cSLH9/Dunwich-7-Where-Doom-Awaits-3.jpg"
},
{
Name = "VI - Where Doom Awaits 3",
URL = "https://i.ibb.co/khBX32g/Dunwich-7-Where-Doom-Awaits-4.jpg"
},
{
Name = "VI - Where Doom Awaits 4",
URL = "https://i.ibb.co/S0hcwN8/Dunwich-7-Where-Doom-Awaits-5.jpg"
},
{
Name = "VI - Where Doom Awaits 5",
URL = "https://i.ibb.co/Lxv1Bjp/Dunwich-7-Where-Doom-Awaits-Luca-Trentin.jpg"
},
{
Name = "VII - Lost in Time and Space 1",
URL = "https://i.ibb.co/rtTpbDx/Dunwich-8-Lost-in-Time-amp-Space.jpg"
},
{
Name = "VII - Lost in Time and Space 2",
URL = "https://i.ibb.co/dBXP0GL/Dunwich-8-Lost-in-Time-amp-Space-Chris-Ostrowski.jpg"
},
{
Name = "VII - Lost in Time and Space 3",
URL = "https://i.ibb.co/0XcnxFD/Dunwich-8-Lost-in-Time-amp-Space-Lino-Drieghe.jpg"
}
},
["The Path to Carcosa"] = {
{
Name = "I - Curtain Call",
URL = "https://i.ibb.co/TcnKXJD/Carcosa-1-Curtain-Call-Mark-Molnar.jpg"
},
{
Name = "II - Last King 1",
URL = "https://i.ibb.co/JRQJKR8/Carcosa-2-Last-King-Cristi-Balanescu.jpg"
},
{
Name = "II - Last King 2",
URL = "https://i.ibb.co/NZzBwgv/Carcosa-2-Last-King-Cristi-Balanescu-2.jpg"
},
{
Name = "II - Last King 3",
URL = "https://i.ibb.co/x56ZHt7/Carcosa-2-Last-King-Wu-Mengjia.jpg"
},
{
Name = "III - Echoes of the Past",
URL = "https://i.ibb.co/R6gSm0D/Carcosa-3-Echoes-of-the-Past-Heather-Savage.jpg"
},
{
Name = "IV - Unspeakable Oath 1",
URL = "https://i.ibb.co/DzzDQQQ/Carcosa-4-Unspeakable-Oath.jpg"
},
{
Name = "IV - Unspeakable Oath 2",
URL = "https://i.ibb.co/9gqBzXr/Carcosa-4-Unspeakable-Oath-2-Mark-Molnar.jpg"
},
{
Name = "IV - Unspeakable Oath 3",
URL = "https://i.ibb.co/wWL73c9/Carcosa-4-Unspeakable-Oath-Paul-Fairbairn.jpg"
},
{
Name = "V - Phantom of Truth 1",
URL = "https://i.ibb.co/mzpz1Dd/Carcosa-5-Phantom-of-Truth-Lucas-Staniec.jpg"
},
{
Name = "V - Phantom of Truth 2",
URL = "https://i.ibb.co/Vp1wNbT/Carcosa-5-Phantom-of-Truth-Tomasz-Jedruszek.jpg"
},
{
Name = "VI - Pallid Mask 1",
URL = "https://i.ibb.co/Bf5LByY/Carcosa-6-Pallid-Mask-Greg-Bobrowski.jpg"
},
{
Name = "VI - Pallid Mask 2",
URL = "https://i.ibb.co/1v1J9Xx/Carcosa-6-Pallid-Mask-Rafal-Pyra.jpg"
},
{
Name = "VII - Black Star Rises 1",
URL = "https://i.ibb.co/TB451t7/Carcosa-7-Black-Star-Rises-Audric-Gatoux.jpg"
},
{
Name = "VII - Black Star Rises 2",
URL = "https://i.ibb.co/nC8Ncxx/Carcosa-7-Black-Star-Rises-Chris-Kintner.jpg"
},
{
Name = "VIII - Dim Carcosa 1",
URL = "https://i.ibb.co/QvS4y3D/Carcosa-8-Dim-Carcosa-Alexandr-Elichev.jpg"
},
{
Name = "VIII - Dim Carcosa 2",
URL = "https://i.ibb.co/hR95x7k/Carcosa-8-Dim-Carcosa-Yuri-Shepherd.jpg"
}
},
["The Forgotten Age"] = {
{
Name = "I - Untamed Wilds 1",
URL = "https://i.ibb.co/BLhwCG1/Forgotten-Age-1-Untamed-Wilds-David-Frasheski.jpg"
},
{
Name = "I - Untamed Wilds 2",
URL = "https://i.ibb.co/SnJfsNy/Forgotten-Age-1-Untamed-Wilds-David-Frasheski-2.jpg"
},
{
Name = "I - Untamed Wilds 3",
URL = "https://i.ibb.co/kcx1tvp/Forgotten-Age-1-Untamed-Wilds-Ethan-Patrick-Harris.jpg"
},
{
Name = "I - Untamed Wilds 4",
URL = "https://i.ibb.co/HPbJwXk/Forgotten-Age-1-Untamed-Wilds-Lucas-Staniec.jpg"
},
{
Name = "I - Untamed Wilds 5",
URL = "https://i.ibb.co/bbq1ZrK/Forgotten-Age-1-Untamed-Wilds-Nele-Diel.jpg"
},
{
Name = "II - Doom of Etzli 1",
URL = "https://i.ibb.co/Pw4by4q/Forgotten-Age-2-Doom-of-Eztli-Cristi-Balanescu.jpg"
},
{
Name = "II - Doom of Etzli 2",
URL = "https://i.ibb.co/xqW6cXR/Forgotten-Age-2-Doom-of-Eztli-Greg-Bobrowski.jpg"
},
{
Name = "II - Doom of Etzli 3",
URL = "https://i.ibb.co/kgsC3pb/Forgotten-Age-2-Doom-of-Eztli-Nele-Diel.jpg"
},
{
Name = "III - Threads of Fate",
URL = "https://i.ibb.co/Bn0Pjng/Forgotten-Age-3-Threads-of-Fate-Jokubas-Uogintas.jpg"
},
{
Name = "IV - Boundary Beyond 1",
URL = "https://i.ibb.co/yPZ9v2X/Forgotten-Age-4-Boundary-Beyond-Greg-Bobrowski-2-jpg.jpg"
},
{
Name = "IV - Boundary Beyond 2",
URL = "https://i.ibb.co/vm0JgFs/Forgotten-Age-4-Boundary-Beyond-Greg-Bobrowski-jpg.jpg"
},
{
Name = "IV - Boundary Beyond 3",
URL = "https://i.ibb.co/D1rh9Ry/Forgotten-Age-4-Boundary-Beyond-Nele-Diel.jpg"
},
{
Name = "V - Heart of the Elders I-1",
URL = "https://i.ibb.co/jzKvv6P/Forgotten-Age-5-Heart-of-the-Elders-I-Lucas-Staniec.jpg"
},
{
Name = "V - Heart of the Elders I-2",
URL = "https://i.ibb.co/mR79MX4/Forgotten-Age-5-Heart-of-the-Elders-I-Lucas-Staniec-2.jpg"
},
{
Name = "V - Heart of the Elders II",
URL = "https://i.ibb.co/pQSbL0t/Forgotten-Age-5-Heart-of-the-Elders-II-Nele-Diel.jpg"
},
{
Name = "VI - City of Archives 1",
URL = "https://i.ibb.co/f04DSPb/Forgotten-Age-6-City-of-Archives.jpg"
},
{
Name = "VI - City of Archives 2",
URL = "https://i.ibb.co/WsSBrYj/Forgotten-Age-6-City-of-Archives-2.jpg"
},
{
Name = "VI - City of Archives 3",
URL = "https://i.ibb.co/qdPbSZ8/Forgotten-Age-6-City-of-Archives-Chris-Ostrowski.jpg"
},
{
Name = "VII - Depths of Yoth 1",
URL = "https://i.ibb.co/dbLKgGv/Forgotten-Age-7-Depths-of-Yoth-Diego-Arbetta.jpg"
},
{
Name = "VII - Depths of Yoth 2",
URL = "https://i.ibb.co/NW7Wp98/Forgotten-Age-7-Depths-of-Yoth-Greg-Bobrowski.jpg"
},
{
Name = "VII - Depths of Yoth 3",
URL = "https://i.ibb.co/257zr7c/Forgotten-Age-7-Depths-of-Yoth-Greg-Bobrowski-2-jpg.jpg"
},
{
Name = "VIII - Shattered Aeons 1",
URL = "https://i.ibb.co/KwnWTGR/Forgotten-Age-8-Shattered-Aeons.jpg"
},
{
Name = "VIII - Shattered Aeons 2",
URL = "https://i.ibb.co/b7kVd4F/Forgotten-Age-8-Shattered-Aeons-Alexandr-Elichev.jpg"
}
},
["The Circle Undone"] = {
{
Name = "0 - Prologue",
URL = "https://i.ibb.co/gm4C6yy/Circle-Undone-0-Prologue-Ted-Galaday.jpg"
},
{
Name = "I - Witching Hour",
URL = "https://i.ibb.co/kgJ34WS/Circle-Undone-1-Witching-Hour-Nele-Diel.jpg"
},
{
Name = "II - At Death's Doorstep 1",
URL = "https://i.ibb.co/qNWzH0Y/Circle-Undone-2-At-Death-039-s-Doorstep-Emilio-Rodriguez.jpg"
},
{
Name = "II - At Death's Doorstep 2",
URL = "https://i.ibb.co/T1zp1QN/Circle-Undone-2-At-Death-039-s-Doorstep-Emilio-Rodriguez-2.jpg"
},
{
Name = "II - At Death's Doorstep 3",
URL = "https://i.ibb.co/ZJfYZ1w/Circle-Undone-2-At-Death-039-s-Doorstep-Majid-Azim.jpg"
},
{
Name = "III - The Secret Name 1",
URL = "https://i.ibb.co/hsBw4JQ/Circle-Undone-3-Secret-Name-Jeff-Jumper.jpg"
},
{
Name = "III - The Secret Name 2",
URL = "https://i.ibb.co/MpcPXR5/Circle-Undone-3-Secret-Name-Pierre-Santamaria.jpg"
},
{
Name = "III - The Secret Name 3",
URL = "https://i.ibb.co/LQ8rdKs/Circle-Undone-3-The-Secret-Name-Greg-Bobrowski.jpg"
},
{
Name = "III - The Secret Name 4",
URL = "https://i.ibb.co/0D7LzxV/Circle-Undone-3-The-Secret-Name-Robert-Laskey.jpg"
},
{
Name = "IV - Wages of Sin 1",
URL = "https://i.ibb.co/fDMqH1C/Circle-Undone-4-Wages-of-Sin-Emilio-Rodriguez.jpg"
},
{
Name = "IV - Wages of Sin 2",
URL = "https://i.ibb.co/HDrKkZF/Circle-Undone-4-Wages-of-Sin-Emilio-Rodriguez-2.jpg"
},
{
Name = "IV - Wages of Sin 3",
URL = "https://i.ibb.co/vkpG8cM/Circle-Undone-4-Wages-of-Sin-Greg-Bobrowski.jpg"
},
{
Name = "IV - Wages of Sin 4",
URL = "https://i.ibb.co/CMj007q/Circle-Undone-4-Wages-of-Sin-Mateusz-Michalski.jpg"
},
{
Name = "IV - Wages of Sin 5",
URL = "https://i.ibb.co/sj1bS5x/Circle-Undone-4-Wages-of-Sin-Serge-Da-Silva-Dias.jpg"
},
{
Name = "V - For the Greater Good 1",
URL = "https://i.ibb.co/LDyqjbj/Circle-Undone-5-For-the-Greater-Good.jpg"
},
{
Name = "V - For the Greater Good 2",
URL = "https://i.ibb.co/pPzXNd1/Circle-Undone-5-For-the-Greater-Good-2.jpg"
},
{
Name = "V - For the Greater Good 3",
URL = "https://i.ibb.co/8rMLvJH/Circle-Undone-5-For-the-Greater-Good-Greg-Bobrowski.jpg"
},
{
Name = "V - For the Greater Good 4",
URL = "https://i.ibb.co/vj1q4Cm/Circle-Undone-5-For-the-Greater-Good-Robert-Laskey.jpg"
},
{
Name = "VI - Union and Disillusioned",
URL = "https://i.ibb.co/n7SD1tB/Circle-Undone-6-Union-amp-Disillusioned-Andreas-Rocha.jpg"
},
{
Name = "VII - In the Clutches of Chaos 1",
URL = "https://i.ibb.co/bFXBNh7/Circle-Undone-7-In-the-Clutches-of-Chaos.jpg"
},
{
Name = "VII - In the Clutches of Chaos 2",
URL = "https://i.ibb.co/m6DshNg/Circle-Undone-7-In-the-Clutches-of-Chaos-Alexandr-Elichev.jpg"
},
{
Name = "VII - In the Clutches of Chaos 3",
URL = "https://i.ibb.co/k2p4yfG/Circle-Undone-7-In-the-Clutches-of-Chaos-Jokubas-Uogintas.jpg"
},
{
Name = "VIII - Before the Black Throne 1",
URL = "https://i.ibb.co/9TPwvP6/Circle-Undone-8-Before-the-Black-Throne-Aaron-Luke-Wilson.jpg"
},
{
Name = "VIII - Before the Black Throne 2",
URL = "https://i.ibb.co/VNtgH4v/Circle-Undone-8-Before-the-Black-Throne-Greg-Bobrowski.jpg"
}
},
["The Dream-Eaters"] = {
{
Name = "I-A - Beyond the Gates of Sleep 1",
URL = "https://i.ibb.co/S6sCy7G/Dream-Eaters-1-A-Beyond-the-Gates-of-Sleep-Phoebe-Herring.jpg"
},
{
Name = "I-A - Beyond the Gates of Sleep 2",
URL = "https://i.ibb.co/kBfW9SC/Dream-Eaters-1-A-Beyond-the-Gates-of-Sleep-Regina-Kurnya.jpg"
},
{
Name = "I-A - Beyond the Gates of Sleep 3",
URL = "https://i.ibb.co/HGvnxdX/Dream-Eaters-1-A-Beyond-the-Gates-of-Sleep-Jason-Scheier.jpg"
},
{
Name = "I-B - Waking Nightmare",
URL = "https://i.ibb.co/sWsZCv8/Dream-Eaters-1-B-Waking-Nightmare-Josh-Gould-jpg.jpg"
},
{
Name = "II-A - Search for Kadath 1",
URL = "https://i.ibb.co/4SwzCD8/Dream-Eaters-2-A-Search-for-Kadath-Andrei-Khrutskii.jpg"
},
{
Name = "II-A - Search for Kadath 2",
URL = "https://i.ibb.co/WpZ4fMc/Dream-Eaters-2-A-Search-for-Kadath-Dan-Iorgulescu.jpg"
},
{
Name = "II-A - Search for Kadath 3",
URL = "https://i.ibb.co/jwsn0jf/Dream-Eaters-2-A-Search-for-Kadath-Diana-Tsareva.jpg"
},
{
Name = "II-A - Search for Kadath 4",
URL = "https://i.ibb.co/pd9vxmL/Dream-Eaters-2-A-Search-for-Kadath-Helen-Ilnytska.jpg"
},
{
Name = "II-A - Search for Kadath 5",
URL = "https://i.ibb.co/MZ7Qtcc/Dream-Eaters-2-A-Search-for-Kadath-Nele-Diel.jpg"
},
{
Name = "II-B - Thousand Shapes of Horror 1",
URL = "https://i.ibb.co/9s7M0PP/Dream-Eaters-2-B-Thousand-Shapes-of-Horror-Nele-Diel-2.jpg"
},
{
Name = "II-B - Thousand Shapes of Horror 2",
URL = "https://i.ibb.co/T4Pqx0H/Dream-Eaters-2-B-Thousand-Shapes-of-Horror-Nele-Diel.jpg"
},
{
Name = "II-B - Thousand Shapes of Horror 3",
URL = "https://i.ibb.co/VJFQVYd/Dream-Eaters-2-B-Thousand-Shapes-of-Horror-Greg-Bobrowski.jpg"
},
{
Name = "III-A - Dark Side of the Moon 1",
URL = "https://i.ibb.co/B2DfXLZ/Dream-Eaters-3-A-Dark-Side-of-the-Moon-Dabanli.jpg"
},
{
Name = "III-A - Dark Side of the Moon 2",
URL = "https://i.ibb.co/c27JRvv/Dream-Eaters-3-A-Dark-Side-of-the-Moon-Frej-Agelii.jpg"
},
{
Name = "III-B - Point of No Return 1",
URL = "https://i.ibb.co/dMGNB9Y/Dream-Eaters-3-B-Point-of-No-Return-Daria-Khlebnikova.jpg"
},
{
Name = "III-B - Point of No Return 2",
URL = "https://i.ibb.co/dpXxPmz/Dream-Eaters-3-B-Point-of-No-Return-Karine-Villette.jpg"
},
{
Name = "IV-A - Where the Gods Dwell",
URL = "https://i.ibb.co/v4nqw6G/Dream-Eaters-4-A-Where-the-Gods-Dwell-Samantha-Franco.jpg"
},
{
Name = "IV-B - Weaver of the Cosmos 1",
URL = "https://i.ibb.co/7btNBS1/Dream-Eaters-4-B-Weaver-of-the-Cosmos-Diana-Franco.jpg"
},
{
Name = "IV-B - Weaver of the Cosmos 2",
URL = "https://i.ibb.co/RY7y22b/Dream-Eaters-4-B-Weaver-of-the-Cosmos-Leanna-Crossan.jpg"
},
{
Name = "IV-B - Weaver of the Cosmos 3",
URL = "https://i.ibb.co/f8LBbFW/Dream-Eaters-4-B-Weaver-of-the-Cosmos-Nele-Diel.jpg"
}
},
["The Innsmouth Conspiracy"] = {
{
Name = "I - Pit of Despair 1",
URL = "https://i.ibb.co/2sc0F61/Innsmouth-1-Pit-of-Despair-Amanda-Castrillo.jpg"
},
{
Name = "I - Pit of Despair 2",
URL = "https://i.ibb.co/Nj9JLBQ/Innsmouth-1-Pit-of-Despair-J-Mill.jpg"
},
{
Name = "II - Vanishing of Elina Harper 1",
URL = "https://i.ibb.co/2j74cVn/Innsmouth-2-Vanishing-of-Elina-Harper-Konstantin-Vohwinkel.jpg"
},
{
Name = "II - Vanishing of Elina Harper 2",
URL = "https://i.ibb.co/r2VqHSn/Innsmouth-2-Vanishing-of-Elina-Harper-Mihail-Bila.jpg"
},
{
Name = "II - Vanishing of Elina Harper 3",
URL = "https://i.ibb.co/hFQMm7N/Innsmouth-2-Vanishing-of-Elina-Harper-Richard-Wright.jpg"
},
{
Name = "II - Vanishing of Elina Harper 4",
URL = "https://i.ibb.co/2nZKGN6/Innsmouth-2-Vanishing-of-Elina-Harper-Tomasz-Jedruszek-1.jpg"
},
{
Name = "II - Vanishing of Elina Harper 5",
URL = "https://i.ibb.co/WxLpKrM/Innsmouth-2-Vanishing-of-Elina-Harper-Tomasz-Jedruszek-2.jpg"
},
{
Name = "III - In Too Deep 1",
URL = "https://i.ibb.co/SsQ3my4/Innsmouth-3-In-Too-Deep-David-Frasheski.jpg"
},
{
Name = "III - In Too Deep 2",
URL = "https://i.ibb.co/jgQ8zQN/Innsmouth-3-In-Too-Deep-Klaudia-Bezak.jpg"
},
{
Name = "III - In Too Deep 3",
URL = "https://i.ibb.co/VVgtNM1/Innsmouth-3-In-Too-Deep-Patrik-Antonescu.jpg"
},
{
Name = "IV - Devil Reef 1",
URL = "https://i.ibb.co/Jrf6CJ0/Innsmouth-4-Devil-Reef-Ludovic-Sanson.jpg"
},
{
Name = "IV - Devil Reef 2",
URL = "https://i.ibb.co/4jfwDZR/Innsmouth-4-Devil-Reef-Marc-Stewart.jpg"
},
{
Name = "V - Horror in High Gear 1",
URL = "https://i.ibb.co/vqYJjYJ/Innsmouth-5-Horror-in-High-Gear-Greg-Bobrowski.jpg"
},
{
Name = "V - Horror in High Gear 2",
URL = "https://i.ibb.co/yYrzbYS/Innsmouth-5-Horror-in-High-Gear-Greg-Bobrowski-2.jpg"
},
{
Name = "V - Horror in High Gear 3",
URL = "https://i.ibb.co/fpKWhGY/Innsmouth-5-Horror-in-High-Gear-Guillem-H-Pongiluppi.jpg"
},
{
Name = "V - Horror in High Gear 4",
URL = "https://i.ibb.co/YkLFy7y/Innsmouth-5-Horror-in-High-Gear-Rostyslav-Zagornov.jpg"
},
{
Name = "VI - Light in the Fog 1",
URL = "https://i.ibb.co/v1rhgqJ/Innsmouth-6-Light-in-the-Fog-Florian-Aupetit.jpg"
},
{
Name = "VI - Light in the Fog 2",
URL = "https://i.ibb.co/Db2pRd6/Innsmouth-6-Light-in-the-Fog-JB-Caillet.jpg"
},
{
Name = "VII - Lair of Dagon 1",
URL = "https://i.ibb.co/QPwzQL5/Innsmouth-7-Lair-of-Dagon-Daria-Khlebnikova.jpg"
},
{
Name = "VII - Lair of Dagon 2",
URL = "https://i.ibb.co/MZBpCbs/Innsmouth-7-Lair-of-Dagon-Guillem-H-Pongiluppi.jpg"
},
{
Name = "VIII - Into the Maelstrom 1",
URL = "https://i.ibb.co/fkSXDgs/Innsmouth-8-Into-the-Maelstrom-Dimitri-Bielak.jpg"
},
{
Name = "VIII - Into the Maelstrom 2",
URL = "https://i.ibb.co/k56Dn9q/Innsmouth-8-Into-the-Maelstrom-Mateusz-Michalski.jpg"
}
},
["Edge of the Earth"] = {
{
Name = "I - Ice and Death 1",
URL = "https://i.ibb.co/FWZMWtW/Edge-1-Ice-and-Death-David-Frasheski.png"
},
{
Name = "I - Ice and Death 2",
URL = "https://i.ibb.co/QDGV0jQ/Edge-1-Ice-and-Death-Felix-Riano.png"
},
{
Name = "I - Ice and Death 3",
URL = "https://i.ibb.co/hFJQM8v/Edge-1-Ice-and-Death-Mike-Gizienski.png"
},
{
Name = "??? - Fatal Mirage",
URL = "https://i.ibb.co/KzwvjJN/Edge-2-Fatal-Mirage-David-Frasheski.png"
},
{
Name = "II - Forbidden Peaks 1",
URL = "https://i.ibb.co/C2SLByt/Edge-2-Forbidden-Peaks-David-Frasheski-2.png"
},
{
Name = "II - Forbidden Peaks 2",
URL = "https://i.ibb.co/0cGkkBL/Edge-3-Forbidden-Peaks-David-Frasheski.png"
},
{
Name = "III - City of Elder Things 1",
URL = "https://i.ibb.co/FbpgBD3/Edge-4-City-Francois-Baranger.png"
},
{
Name = "III - City of Elder Things 2",
URL = "https://i.ibb.co/ncRvHr3/Edge-4-City-Francois-Baranger-2.png"
},
{
Name = "IV - Heart of Madness 1",
URL = "https://i.ibb.co/rk0qR4z/Edge-5-Heart-of-Madness-Karol-Sollich.png"
},
{
Name = "IV - Heart of Madness 2",
URL = "https://i.ibb.co/NVFjx6N/Edge-5-Heart-of-Madness-Miguel-Coimbra.png"
}
},
["The Scarlet Keys"] = {
{
Name = "5-A Riddles and Rain",
URL = "http://cloud-3.steamusercontent.com/ugc/2037357792057358580/E9E5FE4028C08B3D4883406821221B73C8B5B2C7/"
},
{
Name = "11-B Dead Heat",
URL = "http://cloud-3.steamusercontent.com/ugc/2038485431566443853/CAD7771D90141EA6D5FFAFE1EC5E7AD9647C82DB/"
},
{
Name = "16-D Sanguine Shadows",
URL = "http://cloud-3.steamusercontent.com/ugc/2037357792057358704/4A7261EB31511467CBC46E876476DD205F528A4B/"
},
{
Name = "21-F Dealings in the Dark",
URL = "http://cloud-3.steamusercontent.com/ugc/2037357792057358816/7C9FE4C34CD0A7AE87EF054742D878F310C71AA7/"
},
{
Name = "28-I Dancing Mad",
URL = "http://cloud-3.steamusercontent.com/ugc/2037357792056955518/EAB857DD5629EC6A3078FB0A3A703B85B5F514B9/"
},
{
Name = "23-K On Thin Ice",
URL = "http://cloud-3.steamusercontent.com/ugc/2038485431566444026/EB5628E254AE25DA89A9C999EAAD995ECF67068E/"
},
{
Name = "38-N Dogs of War",
URL = "http://cloud-3.steamusercontent.com/ugc/2038485431566444199/194FD9A713907197471A55411AE300B62C5F5278/"
},
{
Name = "46-Q Shades of Suffering",
URL = "http://cloud-3.steamusercontent.com/ugc/2038485431566444330/3ED2CCE95DE933546E1B5CBBF445D773E6D65465/"
},
{
Name = "56-Y ???",
URL = "http://cloud-3.steamusercontent.com/ugc/2038485431566444450/FE4C335B0F72E83900A4EED0FD1A1D304D70D6B7/"
},
{
Name = "59-Z Congress of Keys I",
URL = "http://cloud-3.steamusercontent.com/ugc/2038485431566444576/5BB32469ED412D59BB0A46E57D226500B1D0568B/"
},
{
Name = "59-Z Congress of Keys II",
URL = "http://cloud-3.steamusercontent.com/ugc/2038485431566444690/B01A1FEAB57473D9B6DF11B92D62C214AA1C2C02/"
}
}
},
["Official Scenarios"] = {
["The Blob That Ate Everything"] = {
{
Name = "The Blob That Ate Everything 1",
URL = "https://i.ibb.co/JxFV4ZN/Blob-That-Ate-Everything-Emilio-Rodriguez.jpg"
},
{
Name = "The Blob That Ate Everything 2",
URL = "https://i.ibb.co/qJzstWF/Blob-That-Ate-Everything-Emilio-Rodriguez.jpg"
}
},
["Carnevale of Horrors"] = {
{
Name = "Carnevale of Horrors 1",
URL = "https://i.ibb.co/ZchJBpz/Carnevale-of-Horrors.jpg"
},
},
["Curse of the Rougarou"] = {
{
Name = "Curse of the Rougarou 1",
URL = "https://i.ibb.co/Qf7Sr7P/Curse-of-the-Rougarou.jpg"
},
{
Name = "Curse of the Rougarou 2",
URL = "https://i.ibb.co/hs1Qjp0/Curse-of-the-Rougarou-Ann-Kovaleva.jpg"
},
{
Name = "Curse of the Rougarou 3",
URL = "https://i.ibb.co/BK7rmJ9/Curse-of-the-Rougarou-Karine-Villette.jpg"
},
{
Name = "Curse of the Rougarou 4",
URL = "https://i.ibb.co/ZxGTC1w/Curse-of-the-Rougarou-Lachlan-Page.jpg"
},
{
Name = "Curse of the Rougarou 5",
URL = "https://i.ibb.co/HgNXJhW/Curse-of-the-Rougarou-Vladimir-Manyukhin.jpg"
}
},
["Guardians of the Abyss"] = {
{
Name = "Guardians of the Abyss 1",
URL = "https://i.ibb.co/gD3R6cw/Guardians-of-the-Abyss-Jake-Murray.jpg"
},
{
Name = "Guardians of the Abyss 2",
URL = "https://i.ibb.co/jMHPcvz/Guardians-of-the-Abyss-Jose-Vega.jpg"
},
{
Name = "Guardians of the Abyss 3",
URL = "https://i.ibb.co/99pqXQP/Guardians-of-the-Abyss-Koke-Nunez.jpg"
},
{
Name = "Guardians of the Abyss 4",
URL = "https://i.ibb.co/QbMvjbx/Guardians-of-the-Abyss-Mike-Szabados.jpg"
},
{
Name = "Guardians of the Abyss 5",
URL = "https://i.ibb.co/zFDt9Q8/Guardians-of-the-Abyss-Nele-Diel.jpg"
},
{
Name = "Guardians of the Abyss 6",
URL = "https://i.ibb.co/Vpzptmt/Guardians-of-the-Abyss-Yujin-Choo.jpg"
}
},
["Labyrinths of Lunacy"] = {
{
Name = "Labyrinths of Lunacy 1",
URL = "https://i.ibb.co/f17PMCC/Labyrinths-of-Lunacy-Cordelia-Wolf.jpg"
},
{
Name = "Labyrinths of Lunacy 2",
URL = "https://i.ibb.co/44DXfWw/Labyrinths-of-Lunacy-Richard-Wright.jpg"
},
{
Name = "Labyrinths of Lunacy 3",
URL = "https://i.ibb.co/jMQhs68/Labyrinths-of-Lunacy-Robert-Berg.jpg"
}
},
["Murder at Excelsior Hotel"] = {
{
Name = "Murder at Excelsior Hotel 1",
URL = "https://i.ibb.co/5cQ6LvN/Murder-at-Excelsior-Hotel-Alistair-Mitchell.jpg"
},
{
Name = "Murder at Excelsior Hotel 2",
URL = "https://i.ibb.co/vBQRHNS/Murder-at-Excelsior-Hotel-Romain-Bayle.jpg"
}
},
["War of the Outer Gods"] = {
{
Name = "War of the Outer Gods",
URL = "https://i.ibb.co/wLNGFTG/War-of-the-Outer-Gods-Joshua-Cairos.jpg"
}
}
},
["Fan-Made Campaigns"] = {
["Cyclopean Foundations"] = {
{
Name = "I - Lost Moorings 1",
URL = "https://i.ibb.co/DQ76z3c/Cyclopean-1-Lost-Moorings-Care-Line-Art.png"
},
{
Name = "I - Lost Moorings 2",
URL = "https://i.ibb.co/c6LJNfr/Cyclopean-1-Lost-Moorings-Jake-Murray.png"
},
{
Name = "II - Going Twice",
URL = "https://i.ibb.co/P6h3vbm/Cyclopean-2-Going-Twice-Quentin-Bouilloud.png"
},
{
Name = "III - Private Lives",
URL = "https://i.ibb.co/9qK9Fzd/Cyclopean-3-Private-Lives-Christian-Bravery.png"
},
{
Name = "IV - Crumbling Masonry 1",
URL = "https://i.ibb.co/pdrGK6p/Cyclopean-4-Crumbling-Masonry-Pete-Amachree.png"
},
{
Name = "IV - Crumbling Masonry 2",
URL = "https://i.ibb.co/5RFcGyP/Cyclopean-4-Crumbling-Masonry-Simon-Craghead.png"
},
{
Name = "V - Across Dreadful Waters",
URL = "https://i.ibb.co/3mYfFNB/Cyclopean-5-Across-Dreadful-Waters-Ev-Shipard.png"
},
{
Name = "VI - Blood From Stones",
URL = "https://i.ibb.co/ynmQNSB/Cyclopean-6-Blood-From-Stones-Marc-Simonetti.png"
},
{
Name = "VII - Pyroclastic Flow 1",
URL = "https://i.ibb.co/s1JDkFv/Cyclopean-7-Pyroclastic-Flow-Bastien-Grivet.png"
},
{
Name = "VII - Pyroclastic Flow 2",
URL = "https://i.ibb.co/qs8Sk2N/Cyclopean-7-Pyroclastic-Flow-Rachid-Lotf.png"
},
{
Name = "VIII - Tomb of Dead Dreams 1",
URL = "https://i.ibb.co/0MwX460/Cyclopean-8-Tomb-of-Dead-Dreams-Guillem-H-Pongiluppi.png"
},
{
Name = "VIII - Tomb of Dead Dreams 2",
URL = "https://i.ibb.co/mGnKNcy/Cyclopean-8-Tomb-of-Dead-Dreams-Richard-Benning.png"
},
{
Name = "VIII - Tomb of Dead Dreams 3",
URL = "https://i.ibb.co/vmBM8x2/Cyclopean-8-Tomb-of-Dead-Dreams-Walter-Brocca.png"
}
},
["Dark Matter"] = {
{
Name = "I - Tatterdemalion 1",
URL = "https://i.ibb.co/DRMPGVt/Dark-Matter-1-Tatterdemalion-Andrey-Vozny.jpg"
},
{
Name = "I - Tatterdemalion 2",
URL = "https://i.ibb.co/1JzrrX2/Dark-Matter-1-Tatterdemalion-Brian-Taylor.jpg"
},
{
Name = "I - Tatterdemalion 3",
URL = "https://i.ibb.co/DzvvgGf/Dark-Matter-1-Tatterdemalion-John-Wallin-Liberto.jpg"
},
{
Name = "I - Tatterdemalion 4",
URL = "https://i.ibb.co/sQf85b8/Dark-Matter-1-Tatterdemalion-Paul-Pepera.jpg"
},
{
Name = "II - Electric Nightmares 1",
URL = "https://i.ibb.co/hLGVBt7/Dark-Matter-2-Electric-Nightmares-Dean-Lawrence.jpg"
},
{
Name = "II - Electric Nightmares 2",
URL = "https://i.ibb.co/cTKZQ61/Dark-Matter-2-Electric-Nightmares-Robert-Thoma.jpg"
},
{
Name = "IIIa - Lost Quantum",
URL = "https://i.ibb.co/6vyXv90/Dark-Matter-3-Lost-Quantum-Michael-Rajecki.jpg"
},
{
Name = "IIIb - In the Shadow of Earth 1",
URL = "https://i.ibb.co/DfbTKHP/Dark-Matter-4-In-the-Shadow-of-Earth-Jihoo-Kim.jpg"
},
{
Name = "IIIb - In the Shadow of Earth 2",
URL = "https://i.ibb.co/MCvPmCb/Dark-Matter-4-In-the-Shadow-of-Earth-N5-Luckybuuncle.jpg"
},
{
Name = "IIIc - Strange Moons",
URL = "https://i.ibb.co/b2d8qvg/Dark-Matter-5-Strange-Moons-Hongyu-Yin.jpg"
},
{
Name = "V - Fragment of Carcosa 1",
URL = "https://i.ibb.co/7WnTyYT/Dark-Matter-7-Fragment-of-Carcosa-Colin-Moore.jpg"
},
{
Name = "V - Fragment of Carcosa 2",
URL = "https://i.ibb.co/mG2Brrd/Dark-Matter-7-Fragments-of-Carcosa-Matthieu-Rebuffat.jpg"
},
{
Name = "VI - Starfall 1",
URL = "https://i.ibb.co/CJ3LKL7/Dark-Matter-8-Starfall-Vadim-Sadovski.jpg"
},
{
Name = "VI - Starfall 2",
URL = "https://i.ibb.co/Njd1FcB/Dark-Matter-8-Starfall-Vadim-Sadovski-2.jpg"
},
{
Name = "VI - Starfall 3",
URL = "https://i.ibb.co/W0Cx7bb/Dark-Matter-8-Starfall-Vadim-Sadovski-3.jpg"
}
},
["The Ghosts of Onigawa"] = {
{
Name = "I - The Ghosts of Onigawa",
URL = "https://github.com/ArkhamDotCards/theghostsofonigawa/blob/main/product/onigawa-playmat-01.png?raw=true"
},
{
Name = "II - In The Shadow Of Mount Kokoro",
URL = "https://github.com/ArkhamDotCards/theghostsofonigawa/blob/main/product/onigawa-playmat-02.png?raw=true"
},
{
Name = "III - The Onigawa River",
URL = "https://github.com/ArkhamDotCards/theghostsofonigawa/blob/main/product/onigawa-playmat-03.png?raw=true"
},
{
Name = "IV - The Crimson Butterfly",
URL = "https://github.com/ArkhamDotCards/theghostsofonigawa/blob/main/product/onigawa-playmat-04.png?raw=true"
},
{
Name = "V - The Koi Conspiracy",
URL = "https://github.com/ArkhamDotCards/theghostsofonigawa/blob/main/product/onigawa-playmat-05.png?raw=true"
}
}
},
["Fan-Made Scenarios"] = {
["Side Scenarios (FM)"] = {
{
Name = "Consternation on the Constellation",
URL = "https://i.ibb.co/Tw2xBP1/Consternation-Constellation.jpg"
},
{
Name = "Symphony of Erich Zann",
URL = "https://i.ibb.co/SNr8tqN/Symphony-of-Erich-Zann-Hazel-Yingling.jpg"
}
}
},
["Other Images"] = {
["Arkham Locations"] = {
{
Name = "Downtown 1",
URL = "https://i.ibb.co/FzRk98n/Arkham-Downtown-Cristi-Balanescu.jpg"
},
{
Name = "Downtown 2",
URL = "https://i.ibb.co/W2yJ5QZ/Arkham-Downtown-Jokubas-Uogintas.jpg"
},
{
Name = "Eastside 1",
URL = "https://i.ibb.co/W3QvdZW/Arkham-Eastside-Cristi-Balanescu.jpg"
},
{
Name = "Eastside 2",
URL = "https://i.ibb.co/xfn1Fp8/Arkham-Eastside-Jokubas-Uogintas.jpg"
},
{
Name = "French Hill",
URL = "https://i.ibb.co/N7Lk7jc/Arkham-French-Hill-Cristi-Balanescu.jpg"
},
{
Name = "Merchant District",
URL = "https://i.ibb.co/HTNCCq4/Arkham-Merchant-District-Jokubas-Uogintas.jpg"
},
{
Name = "Generic 1",
URL = "https://i.ibb.co/hswfZD6/Arkham-Guillem-H-Pongiluppi.jpg"
},
{
Name = "Generic 2",
URL = "https://i.ibb.co/5h5cMyF/Arkham-Guillem-H-Pongiluppi-2.jpg"
},
{
Name = "Generic 3",
URL = "https://i.ibb.co/ZBdVsWt/Arkham-Guillem-H-Pongiluppi-3.jpg"
},
{
Name = "Generic 4",
URL = "https://i.ibb.co/6NwbM59/Arkham-Michele-Botticelli.jpg"
},
{
Name = "Generic 5",
URL = "https://i.ibb.co/N6sxyq5/Arkham-Mihail-Bila.jpg"
},
{
Name = "Generic 6",
URL = "https://i.ibb.co/B393zxv/Arkham-Tomasz-Jedruszek.jpg"
},
{
Name = "Generic 7",
URL = "https://i.ibb.co/2WQ2Vt6/Arkham-Tomasz-Jedruszek-2.jpg"
},
{
Name = "Generic 8",
URL = "https://i.ibb.co/R7pQ9Y7/Arkham-Tomasz-Jedruszek-3.jpg"
},
{
Name = "Miskatonic University",
URL = "https://i.ibb.co/ncz9xjP/Arkham-Miskatonic-University-Jokubas-Uogintas.jpg"
},
{
Name = "Northside",
URL = "https://i.ibb.co/sVWx1R3/Arkham-Northside-Jokubas-Uogintas.jpg"
},
{
Name = "Rivertown",
URL = "https://i.ibb.co/RyJnHmz/Arkham-Rivertown-Jokubas-Uogintas.jpg"
},
{
Name = "Southside",
URL = "https://i.ibb.co/5GW5jg5/Arkham-Southside-Jokubas-Uogintas.jpg"
},
{
Name = "Uptown",
URL = "https://i.ibb.co/YXjvkMn/Arkham-Uptown-Jokubas-Uogintas.jpg"
}
},
["Default Image"] = {
{
Name = "Default Image",
URL = "http://cloud-3.steamusercontent.com/ugc/998015670465071049/FFAE162920D67CF38045EFBD3B85AD0F916147B2/"
}
},
["Unsorted"] = {
{
Name = "Kingsport",
URL = "https://i.ibb.co/rbkk7ys/Kingsport-Tomasz-Jedruszek.jpg"
},
{
Name = "Devil",
URL = "http://cloud-3.steamusercontent.com/ugc/2115062479282248687/DD84A3CB3C4A475A5D093CB413A16A5CEA5FBF79/"
},
{
Name = "Mystic Board",
URL = "http://cloud-3.steamusercontent.com/ugc/2115062479282248488/EC27B1215F558A39954C27477D8B4F916CA211E5/"
}
}
}
}
end)
__bundle_register("core/GUIDReferenceApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local GUIDReferenceApi = {}
local function getGuidHandler()
return getObjectFromGUID("123456")
end
-- returns all matching objects as a table with references
---@param owner String Parent object for this search
---@param type String Type of object to search for
GUIDReferenceApi.getObjectByOwnerAndType = function(owner, type)
return getGuidHandler().call("getObjectByOwnerAndType", { owner = owner, type = type })
end
-- returns all matching objects as a table with references
---@param type String Type of object to search for
GUIDReferenceApi.getObjectsByType = function(type)
return getGuidHandler().call("getObjectsByType", type)
end
-- returns all matching objects as a table with references
---@param owner String Parent object for this search
GUIDReferenceApi.getObjectsByOwner = function(owner)
return getGuidHandler().call("getObjectsByOwner", owner)
end
return GUIDReferenceApi
end
end)
__bundle_register("__root", function(require, _LOADED, __bundle_register, __bundle_modules)
require("core/PlayAreaSelector")
end)
return __bundle_require("__root")