diff --git a/unpacked.ttslua b/unpacked.ttslua index 582336bb1..98fbd8b66 100644 --- a/unpacked.ttslua +++ b/unpacked.ttslua @@ -44,6 +44,40 @@ end)(nil) __bundle_register("__root", function(require, _LOADED, __bundle_register, __bundle_modules) require("core/Global") end) +__bundle_register("accessories/TokenArrangerApi", function(require, _LOADED, __bundle_register, __bundle_modules) +do + local TokenArrangerApi = {} + local guidReferenceApi = require("core/GUIDReferenceApi") + + -- local function to call the token arranger, if it is on the table + ---@param functionName string Name of the function to cal + ---@param argument? table Parameter to pass + local function callIfExistent(functionName, argument) + local tokenArranger = guidReferenceApi.getObjectByOwnerAndType("Mythos", "TokenArranger") + if tokenArranger ~= nil then + tokenArranger.call(functionName, argument) + end + end + + -- updates the token modifiers with the provided data + ---@param fullData table Contains the chaos token metadata + TokenArrangerApi.onTokenDataChanged = function(fullData) + callIfExistent("onTokenDataChanged", fullData) + end + + -- deletes already laid out tokens + TokenArrangerApi.deleteCopiedTokens = function() + callIfExistent("deleteCopiedTokens") + end + + -- updates the laid out tokens + TokenArrangerApi.layout = function() + Wait.time(function() callIfExistent("layout") end, 0.1) + end + + return TokenArrangerApi +end +end) __bundle_register("chaosbag/BlessCurseManagerApi", function(require, _LOADED, __bundle_register, __bundle_modules) do local BlessCurseManagerApi = {} @@ -104,93 +138,48 @@ do return BlessCurseManagerApi end end) -__bundle_register("util/SearchLib", function(require, _LOADED, __bundle_register, __bundle_modules) +__bundle_register("core/GUIDReferenceApi", function(require, _LOADED, __bundle_register, __bundle_modules) do - local SearchLib = {} - local filterFunctions = { - isActionToken = function(x) return x.getDescription() == "Action Token" end, - isCard = function(x) return x.type == "Card" end, - isDeck = function(x) return x.type == "Deck" end, - isCardOrDeck = function(x) return x.type == "Card" or x.type == "Deck" end, - isClue = function(x) return x.memo == "clueDoom" and x.is_face_down == false end, - isTileOrToken = function(x) return x.type == "Tile" end - } + local GUIDReferenceApi = {} - -- performs the actual search and returns a filtered list of object references - ---@param pos tts__Vector Global position - ---@param rot? tts__Vector Global rotation - ---@param size table Size - ---@param filter? string Name of the filter function - ---@param direction? table Direction (positive is up) - ---@param maxDistance? number Distance for the cast - local function returnSearchResult(pos, rot, size, filter, direction, maxDistance) - local filterFunc - if filter then - filterFunc = filterFunctions[filter] - end - local searchResult = Physics.cast({ - origin = pos, - direction = direction or { 0, 1, 0 }, - orientation = rot or { 0, 0, 0 }, - type = 3, - size = size, - max_distance = maxDistance or 0 + local function getGuidHandler() + return getObjectFromGUID("123456") + end + + ---@param owner string Parent object for this search + ---@param type string Type of object to search for + ---@return any: Object reference to the matching object + 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 + ---@return table: List of object references to matching objects + 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 + ---@return table: List of object references to matching objects + GUIDReferenceApi.getObjectsByOwner = function(owner) + return getGuidHandler().call("getObjectsByOwner", owner) + end + + -- sends new information to the reference handler to edit the main index + ---@param owner string Parent of the object + ---@param type string Type of the object + ---@param guid string GUID of the object + GUIDReferenceApi.editIndex = function(owner, type, guid) + return getGuidHandler().call("editIndex", { + owner = owner, + type = type, + guid = guid }) - - -- filtering the result - local objList = {} - for _, v in ipairs(searchResult) do - if not filter or filterFunc(v.hit_object) then - table.insert(objList, v.hit_object) - end - end - return objList end - -- searches the specified area - SearchLib.inArea = function(pos, rot, size, filter) - return returnSearchResult(pos, rot, size, filter) - end - - -- searches the area on an object - SearchLib.onObject = function(obj, filter) - pos = obj.getPosition() - size = obj.getBounds().size:setAt("y", 1) - return returnSearchResult(pos, _, size, filter) - end - - -- searches the specified position (a single point) - SearchLib.atPosition = function(pos, filter) - size = { 0.1, 2, 0.1 } - return returnSearchResult(pos, _, size, filter) - end - - -- searches below the specified position (downwards until y = 0) - SearchLib.belowPosition = function(pos, filter) - direction = { 0, -1, 0 } - maxDistance = pos.y - return returnSearchResult(pos, _, size, filter, direction, maxDistance) - end - - return SearchLib -end -end) -__bundle_register("core/OptionPanelApi", function(require, _LOADED, __bundle_register, __bundle_modules) -do - local OptionPanelApi = {} - - -- loads saved options - ---@param options table Set a new state for the option table - OptionPanelApi.loadSettings = function(options) - return Global.call("loadSettings", options) - end - - ---@return any: Table of option panel state - OptionPanelApi.getOptions = function() - return Global.getTable("optionPanel") - end - - return OptionPanelApi + return GUIDReferenceApi end end) __bundle_register("core/Global", function(require, _LOADED, __bundle_register, __bundle_modules) @@ -236,18 +225,12 @@ local bagSearchers = {} local hideTitleSplashWaitFunctionId = nil -- online functionality related variables -local MOD_VERSION = "3.6.0" +local MOD_VERSION = "3.7.0" local SOURCE_REPO = 'https://raw.githubusercontent.com/chr1z93/loadable-objects/main' local library, requestObj, modMeta local acknowledgedUpgradeVersions = {} local contentToShow = "campaigns" local currentListItem = 1 -local xmlVisibility = { - downloadWindow = false, - optionPanel = false, - playAreaGallery = false, - updateNotification = false -} local tabIdTable = { tab1 = "campaigns", tab2 = "scenarios", @@ -821,7 +804,7 @@ function setChaosBagState(tokenList) -- reset bless / curse manager blessCurseManagerApi.removeTakenTokensAndReset() - printToAll("Chaos bag set to chosen difficulty.", "Green") + printToAll("Chaos Bag set to chosen difficulty.", "Green") end -- spawns the specified chaos token and puts it into the chaos bag @@ -948,7 +931,7 @@ end -- click function for the "Custom URL" button in the playarea image gallery function onClick_customUrl(player) - onClick_toggleUi(_, "playareaGallery") + changeWindowVisibilityForColor(player.color, "playareaGallery") Wait.time(function() player.showInputDialog("Enter a custom URL for the playarea image", "", function(newURL) playAreaApi.updateSurface(newURL) @@ -966,47 +949,41 @@ end -- the download button on the placeholder objects calls this to directly initiate a download ---@param params table contains url and guid of replacement object function placeholder_download(params) + function downloadCoroutine() + -- show progress bar + UI.setAttribute('download_progress', 'active', true) + + -- update progress bar + while requestObj do + UI.setAttribute('download_progress', 'percentage', requestObj.download_progress * 100) + coroutine.yield(0) + end + UI.setAttribute('download_progress', 'percentage', 100) + + -- wait 30 frames + for i = 1, 30 do + coroutine.yield(0) + end + + -- hide progress bar + UI.setAttribute('download_progress', 'active', false) + + -- hide download window + changeWindowVisibilityForColor(params.player.color, "downloadWindow", false) + return 1 + end + local url = SOURCE_REPO .. '/' .. params.url requestObj = WebRequest.get(url, function (request) contentDownloadCallback(request, params) end) startLuaCoroutine(Global, 'downloadCoroutine') end -function downloadCoroutine() - -- show progress bar - UI.setAttribute('download_progress', 'active', true) - - -- update progress bar - while requestObj do - UI.setAttribute('download_progress', 'percentage', requestObj.download_progress * 100) - coroutine.yield(0) - end - UI.setAttribute('download_progress', 'percentage', 100) - - -- wait 30 frames - for i = 1, 30 do - coroutine.yield(0) - end - - -- hide progress bar - UI.setAttribute('download_progress', 'active', false) - - -- hide download window - if xmlVisibility.downloadWindow then - xmlVisibility.downloadWindow = false - UI.hide('downloadWindow') - end - return 1 -end - -- spawns a bag that contains every object from the library -function onClick_downloadAll() +function onClick_downloadAll(player) broadcastToAll("Download initiated - this will take a few minutes!") -- hide download window - if xmlVisibility.downloadWindow then - xmlVisibility.downloadWindow = false - UI.hide('downloadWindow') - end + changeWindowVisibilityForColor(player.color, "downloadWindow", false) startLuaCoroutine(Global, "coroutineDownloadAll") end @@ -1022,9 +999,9 @@ function coroutineDownloadAll() "rotX": 0, "rotY": 270, "rotZ": 0, - "scaleX": 1.0, - "scaleY": 1.0, - "scaleZ": 1.0 + "scaleX": 1, + "scaleY": 1, + "scaleZ": 1 }, "Nickname": "{{NICKNAME}}", "Bag": { @@ -1071,11 +1048,11 @@ function coroutineDownloadAll() end -- spawns a placeholder box for the selected object -function onClick_spawnPlaceholder() +function onClick_spawnPlaceholder(player) -- get object references local item = library[contentToShow][currentListItem] local dummy = guidReferenceApi.getObjectByOwnerAndType("Mythos", "PlaceholderBoxDummy") - + -- error handling if not item.boxsize or item.boxsize == "" or not item.boxart or item.boxart == "" then print("Error loading object.") @@ -1103,7 +1080,7 @@ function onClick_spawnPlaceholder() rotation = {0, 270, 0}, scale = scaleTable[item.boxsize], }) - + placeholder.setCustomObject({ mesh = meshTable[item.boxsize], diffuse = item.boxart, @@ -1122,39 +1099,84 @@ function onClick_spawnPlaceholder() Player.getPlayers()[1].pingTable(spawnPos) -- hide download window - if xmlVisibility.downloadWindow then - xmlVisibility.downloadWindow = false - UI.hide('downloadWindow') - end + changeWindowVisibilityForColor(player.color, "downloadWindow", false) end -- toggles the visibility of the respective UI ---@param player tts__Player Player that triggered this ----@param title string Name of the UI to toggle -function onClick_toggleUi(player, title) - if title == "Navigation Overlay" then +---@param windowId string Name of the UI to toggle +function onClick_toggleUi(player, windowId) + if windowId == "Navigation Overlay" then navigationOverlayApi.cycleVisibility(player.color) return - -- hide the playareaGallery if visible - elseif title == "downloadWindow" and xmlVisibility.playAreaGallery then - onClick_toggleUi(_, "playAreaGallery") - -- hide the downloadWindow if visible - elseif title == "playAreaGallery" and xmlVisibility.downloadWindow then - onClick_toggleUi(_, "downloadWindow") end - if xmlVisibility[title] then - -- small delay to allow button click sounds to play - Wait.time(function() UI.hide(title) end, 0.1) - else - UI.show(title) + -- hide the playAreaGallery if visible + if windowId == "downloadWindow" then + changeWindowVisibilityForColor(player.color, "playAreaGallery", false) + -- hide the downloadWindow if visible + elseif windowId == "playAreaGallery" then + changeWindowVisibilityForColor(player.color, "downloadWindow", false) end - xmlVisibility[title] = not xmlVisibility[title] + + changeWindowVisibilityForColor(player.color, windowId) +end + +-- toggles the visibility of the specific window for the specified color +---@param color string Player color to toggle the visibility for +---@param windowId string ID of the XML element +---@param overrideState? boolean Forcefully sets the new visibility +---@return boolean visible Returns the new state of the visibility +function changeWindowVisibilityForColor(color, windowId, overrideState) + -- current state + local colorString = UI.getAttribute(windowId, "visibility") or "" + + -- parse the visibility string + local visible = false + local viewers = {} + for str in string.gmatch(colorString, "%a+") do + table.insert(viewers, str) + if str == color then + visible = true + end + end + + -- add / remove the color as viewer + if visible == true then + removeValueFromTable(viewers, color) + elseif visible == false then + table.insert(viewers, color) + end + visible = not visible + + -- resolve override + if overrideState == true and visible == false then + table.insert(viewers, color) + visible = true + elseif overrideState == false and visible == true then + removeValueFromTable(viewers, color) + visible = false + end + + -- construct new string + local newColorString = "" + for _, viewer in ipairs(viewers) do + newColorString = newColorString .. viewer .. "|" + end + + -- remove last delimiter + newColorString = newColorString:sub(1, -2) + + -- update the visibility of the XML + UI.setAttribute(windowId, "visibility", newColorString) + UI.setAttribute(windowId, "active", newColorString ~= "") + + return visible end -- forwards the call to the onClick function -function togglePlayAreaGallery() - onClick_toggleUi(_, "playAreaGallery") +function togglePlayAreaGallery(playerColor) + changeWindowVisibilityForColor(playerColor, "playareaGallery") end -- updates the preview window @@ -1266,12 +1288,31 @@ function updateDownloadItemList() end contentList.attributes.height = #contentList.children * 27 - UI.setXmlTable(globalXml) + updateGlobalXml(globalXml) -- select the first item Wait.time(onClick_select, 0.2) end +-- this helper function updates the global XML while preserving the visibility of windows +function updateGlobalXml(newXml) + -- preserve visibility settings for these elements + local windowIdList = { + "playAreaGallery", + "downloadWindow", + "optionPanel" + } + + -- get current state and update newXml + for _, windowId in ipairs(windowIdList) do + local element = getXmlTableElementById(newXml, windowId) + element.attributes.active = UI.getAttribute(windowId, "active") + element.attributes.visibility = UI.getAttribute(windowId, "visibility") + end + + UI.setXmlTable(newXml) +end + -- called after the webrequest of downloading an item -- deletes the placeholder and spawns the downloaded item function contentDownloadCallback(request, params) @@ -1563,23 +1604,13 @@ function applyOptionPanelChange(id, state) -- option: Show hand helper for each player elseif id == "showHandHelper" then - local helperName = "Hand Helper" - local spawnData = playmatApi.getHelperSpawnData("All", helperName) - local i = 0 - for color, data in pairs(spawnData) do - i = i + 1 - optionPanel[id][i] = spawnOrRemoveHelper(state, helperName, data.position, data.rotation, color) - end + spawnOrRemoveHelperForPlayermats("Hand Helper", state) + optionPanel[id] = state -- option: Show search assistant for each player elseif id == "showSearchAssistant" then - local helperName = "Search Assistant" - local spawnData = playmatApi.getHelperSpawnData("All", helperName) - local i = 0 - for color, data in pairs(spawnData) do - i = i + 1 - optionPanel[id][i] = spawnOrRemoveHelper(state, helperName, data.position, data.rotation, color) - end + spawnOrRemoveHelperForPlayermats("Search Assistant", state) + optionPanel[id] = state -- option: Show attachment helper elseif id == "showAttachmentHelper" then @@ -1595,6 +1626,15 @@ function applyOptionPanelChange(id, state) end end +-- spawns or removes a helper object for all playermats +---@param helperName string Name of the helper object +---@param state boolean Contains the state of the option: true = spawn it, false = remove it +function spawnOrRemoveHelperForPlayermats(helperName, state) + for color, data in pairs(playmatApi.getHelperSpawnData("All", helperName)) do + spawnOrRemoveHelper(state, helperName, data.position, data.rotation, color) + end +end + -- handler for spawn / remove functions of helper objects ---@param state boolean Contains the state of the option: true = spawn it, false = remove it ---@param name string Name of the helper object @@ -1603,14 +1643,11 @@ end ---@param owner? string Owner of the object (defaults to "Mythos") ---@return string|nil GUID GUID of the spawnedObj (or nil if object was removed) function spawnOrRemoveHelper(state, name, position, rotation, owner) - if (type(state) == "table" and #state == 0) then - return removeHelperObject(name) - elseif state then + if state then Player.getPlayers()[1].pingTable(position) local spawnedGUID = spawnHelperObject(name, position, rotation).getGUID() local cleanName = name:gsub("%s+", "") guidReferenceApi.editIndex(owner or "Mythos", cleanName, spawnedGUID) - return spawnedGUID else return removeHelperObject(name) end @@ -1621,7 +1658,7 @@ end ---@param position tts__Vector Desired position of the object ---@param rotation? tts__Vector Desired rotation of the object (defaults to object's rotation) function spawnHelperObject(name, position, rotation) - local sourceBag = guidReferenceApi.getObjectByOwnerAndType("Mythos","OptionPanelSource") + local sourceBag = guidReferenceApi.getObjectByOwnerAndType("Mythos", "OptionPanelSource") -- error handling for missing sourceBag if not sourceBag then @@ -1650,41 +1687,24 @@ end -- removes the specified tool (by name) ---@param name string Object that should be removed function removeHelperObject(name) - -- links objects name to the respective option name (to grab the GUID for removal) - local referenceTable = { - ["Clean Up Helper"] = "showCleanUpHelper", - ["Hand Helper"] = "showHandHelper", - ["Search Assistant"] = "showSearchAssistant", - ["Displacement Tool"] = "showDisplacementTool", - ["Attachment Helper"] = "showAttachmentHelper", - ["CYOA Campaign Guides"] = "showCYOA" - } - - local data = optionPanel[referenceTable[name]] - - -- if there is a GUID stored, remove that object - if type(data) == "string" then - local obj = getObjectFromGUID(data) - if obj then obj.destruct() end - - -- if it is a table (e.g. for the "Hand Helper", remove all of them) - elseif type(data) == "table" then - for _, guid in pairs(data) do - local obj = getObjectFromGUID(guid) - if obj then obj.destruct() end - end + local cleanName = name:gsub("%s+", "") + for _, obj in pairs(guidReferenceApi.getObjectsByType(cleanName)) do + obj.destruct() end end -- loads saved options +---@param newOptions table Contains the new state for the option panel function loadSettings(newOptions) - -- TO-DO: instead of overriding, keep original table and only add new data - -- this will ensure that new options aren't set to nil when importing an old state - optionPanel = newOptions - updateOptionPanelState() - for id, state in pairs(optionPanel) do - applyOptionPanelChange(id, state) + for id, state in pairs(newOptions) do + if optionPanel[id] ~= state then + optionPanel[id] = state + applyOptionPanelChange(id, state) + end end + + -- update XML UI state + updateOptionPanelState() end -- loads the default options @@ -1701,7 +1721,8 @@ function onClick_defaultSettings() -- clean reset of variables optionPanel = { cardLanguage = "en", - playAreaConnectionColor = { 0.4, 0.4, 0.4, 1 }, + changePlayAreaImage = false, + playAreaConnectionColor = { a = 1, b = 0.4, g = 0.4, r = 0.4 }, playAreaConnections = true, playAreaSnapTags = true, showAttachmentHelper = false, @@ -1709,8 +1730,8 @@ function onClick_defaultSettings() showCYOA = false, showDisplacementTool = false, showDrawButton = false, - showHandHelper = {}, - showSearchAssistant = {}, + showHandHelper = false, + showSearchAssistant = false, showTitleSplash = true, useClueClickers = false, useResourceCounters = "disabled", @@ -1810,41 +1831,109 @@ function onClick_notification(_, parameter) end UI.hide("FinnIcon") UI.hide("updateNotification") - xmlVisibility["updateNotification"] = false end -end) -__bundle_register("accessories/TokenArrangerApi", function(require, _LOADED, __bundle_register, __bundle_modules) -do - local TokenArrangerApi = {} - local guidReferenceApi = require("core/GUIDReferenceApi") - -- local function to call the token arranger, if it is on the table - ---@param functionName string Name of the function to cal - ---@param argument? table Parameter to pass - local function callIfExistent(functionName, argument) - local tokenArranger = guidReferenceApi.getObjectByOwnerAndType("Mythos", "TokenArranger") - if tokenArranger ~= nil then - tokenArranger.call(functionName, argument) +--------------------------------------------------------- +-- Utility functions +--------------------------------------------------------- + +function removeValueFromTable(t, val) + for i, v in ipairs(t) do + if v == val then + table.remove(t, i) + break end end +end +end) +__bundle_register("core/MythosAreaApi", function(require, _LOADED, __bundle_register, __bundle_modules) +do + local MythosAreaApi = {} + local guidReferenceApi = require("core/GUIDReferenceApi") - -- updates the token modifiers with the provided data - ---@param fullData table Contains the chaos token metadata - TokenArrangerApi.onTokenDataChanged = function(fullData) - callIfExistent("onTokenDataChanged", fullData) + local function getMythosArea() + return guidReferenceApi.getObjectByOwnerAndType("Mythos", "MythosArea") end - -- deletes already laid out tokens - TokenArrangerApi.deleteCopiedTokens = function() - callIfExistent("deleteCopiedTokens") + ---@return any: Table of chaos token metadata (if provided through scenario reference card) + MythosAreaApi.returnTokenData = function() + return getMythosArea().call("returnTokenData") + end + + ---@return any: Object reference to the encounter deck + MythosAreaApi.getEncounterDeck = function() + return getMythosArea().call("getEncounterDeck") end - -- updates the laid out tokens - TokenArrangerApi.layout = function() - Wait.time(function() callIfExistent("layout") end, 0.1) + -- draw an encounter card for the requesting mat + ---@param mat tts__Object Playermat that triggered this + ---@param alwaysFaceUp boolean Whether the card should be drawn face-up + MythosAreaApi.drawEncounterCard = function(mat, alwaysFaceUp) + getMythosArea().call("drawEncounterCard", {mat = mat, alwaysFaceUp = alwaysFaceUp}) end - return TokenArrangerApi + -- reshuffle the encounter deck + MythosAreaApi.reshuffleEncounterDeck = function() + getMythosArea().call("reshuffleEncounterDeck") + end + + return MythosAreaApi +end +end) +__bundle_register("core/NavigationOverlayApi", function(require, _LOADED, __bundle_register, __bundle_modules) +do + local NavigationOverlayApi = {} + local guidReferenceApi = require("core/GUIDReferenceApi") + + local function getNOHandler() + return guidReferenceApi.getObjectByOwnerAndType("Mythos", "NavigationOverlayHandler") + end + + -- copies the visibility for the Navigation overlay + ---@param startColor string Color of the player to copy from + ---@param targetColor string Color of the targeted player + NavigationOverlayApi.copyVisibility = function(startColor, targetColor) + getNOHandler().call("copyVisibility", { + startColor = startColor, + targetColor = targetColor + }) + end + + -- changes the Navigation Overlay view ("Full View" --> "Play Areas" --> "Closed" etc.) + ---@param playerColor string Color of the player to update the visibility for + NavigationOverlayApi.cycleVisibility = function(playerColor) + getNOHandler().call("cycleVisibility", playerColor) + end + + -- loads the specified camera for a player + ---@param player tts__Player Player whose camera should be moved + ---@param camera number|string If number: Index of the camera view to load | If string: Color of the playermat to swap to + NavigationOverlayApi.loadCamera = function(player, camera) + getNOHandler().call("loadCameraFromApi", { + player = player, + camera = camera + }) + end + + return NavigationOverlayApi +end +end) +__bundle_register("core/OptionPanelApi", function(require, _LOADED, __bundle_register, __bundle_modules) +do + local OptionPanelApi = {} + + -- loads saved options + ---@param options table Set a new state for the option table + OptionPanelApi.loadSettings = function(options) + return Global.call("loadSettings", options) + end + + ---@return any: Table of option panel state + OptionPanelApi.getOptions = function() + return Global.getTable("optionPanel") + end + + return OptionPanelApi end end) __bundle_register("core/PlayAreaApi", function(require, _LOADED, __bundle_register, __bundle_modules) @@ -1964,6 +2053,33 @@ do return PlayAreaApi end end) +__bundle_register("core/SoundCubeApi", function(require, _LOADED, __bundle_register, __bundle_modules) +do + local SoundCubeApi = {} + local guidReferenceApi = require("core/GUIDReferenceApi") + + -- this table links the name of a trigger effect to its index + local soundIndices = { + ["Vacuum"] = 0, + ["Deep Bell"] = 1, + ["Dark Souls"] = 2 + } + + ---@param index number Index of the sound effect to play + local function playTriggerEffect(index) + local SoundCube = guidReferenceApi.getObjectByOwnerAndType("Mythos", "SoundCube") + SoundCube.AssetBundle.playTriggerEffect(index) + end + + -- plays the by name requested sound + ---@param soundName string Name of the sound to play + SoundCubeApi.playSoundByName = function(soundName) + playTriggerEffect(soundIndices[soundName]) + end + + return SoundCubeApi +end +end) __bundle_register("core/token/TokenChecker", function(require, _LOADED, __bundle_register, __bundle_modules) do local CHAOS_TOKEN_NAMES = { @@ -2002,144 +2118,6 @@ do return TokenChecker end end) -__bundle_register("core/GUIDReferenceApi", function(require, _LOADED, __bundle_register, __bundle_modules) -do - local GUIDReferenceApi = {} - - local function getGuidHandler() - return getObjectFromGUID("123456") - end - - ---@param owner string Parent object for this search - ---@param type string Type of object to search for - ---@return any: Object reference to the matching object - 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 - ---@return table: List of object references to matching objects - 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 - ---@return table: List of object references to matching objects - GUIDReferenceApi.getObjectsByOwner = function(owner) - return getGuidHandler().call("getObjectsByOwner", owner) - end - - -- sends new information to the reference handler to edit the main index - ---@param owner string Parent of the object - ---@param type string Type of the object - ---@param guid string GUID of the object - GUIDReferenceApi.editIndex = function(owner, type, guid) - return getGuidHandler().call("editIndex", { - owner = owner, - type = type, - guid = guid - }) - end - - return GUIDReferenceApi -end -end) -__bundle_register("core/NavigationOverlayApi", function(require, _LOADED, __bundle_register, __bundle_modules) -do - local NavigationOverlayApi = {} - local guidReferenceApi = require("core/GUIDReferenceApi") - - local function getNOHandler() - return guidReferenceApi.getObjectByOwnerAndType("Mythos", "NavigationOverlayHandler") - end - - -- copies the visibility for the Navigation overlay - ---@param startColor string Color of the player to copy from - ---@param targetColor string Color of the targeted player - NavigationOverlayApi.copyVisibility = function(startColor, targetColor) - getNOHandler().call("copyVisibility", { - startColor = startColor, - targetColor = targetColor - }) - end - - -- changes the Navigation Overlay view ("Full View" --> "Play Areas" --> "Closed" etc.) - ---@param playerColor string Color of the player to update the visibility for - NavigationOverlayApi.cycleVisibility = function(playerColor) - getNOHandler().call("cycleVisibility", playerColor) - end - - -- loads the specified camera for a player - ---@param player tts__Player Player whose camera should be moved - ---@param camera number|string If number: Index of the camera view to load | If string: Color of the playermat to swap to - NavigationOverlayApi.loadCamera = function(player, camera) - getNOHandler().call("loadCameraFromApi", { - player = player, - camera = camera - }) - end - - return NavigationOverlayApi -end -end) -__bundle_register("core/SoundCubeApi", function(require, _LOADED, __bundle_register, __bundle_modules) -do - local SoundCubeApi = {} - local guidReferenceApi = require("core/GUIDReferenceApi") - - -- this table links the name of a trigger effect to its index - local soundIndices = { - ["Vacuum"] = 0, - ["Deep Bell"] = 1, - ["Dark Souls"] = 2 - } - - ---@param index number Index of the sound effect to play - local function playTriggerEffect(index) - local SoundCube = guidReferenceApi.getObjectByOwnerAndType("Mythos", "SoundCube") - SoundCube.AssetBundle.playTriggerEffect(index) - end - - -- plays the by name requested sound - ---@param soundName string Name of the sound to play - SoundCubeApi.playSoundByName = function(soundName) - playTriggerEffect(soundIndices[soundName]) - end - - return SoundCubeApi -end -end) -__bundle_register("core/MythosAreaApi", function(require, _LOADED, __bundle_register, __bundle_modules) -do - local MythosAreaApi = {} - local guidReferenceApi = require("core/GUIDReferenceApi") - - local function getMythosArea() - return guidReferenceApi.getObjectByOwnerAndType("Mythos", "MythosArea") - end - - ---@return any: Table of chaos token metadata (if provided through scenario reference card) - MythosAreaApi.returnTokenData = function() - return getMythosArea().call("returnTokenData") - end - - ---@return any: Object reference to the encounter deck - MythosAreaApi.getEncounterDeck = function() - return getMythosArea().call("getEncounterDeck") - end - - -- draw an encounter card for the requesting mat - ---@param mat tts__Object Playermat that triggered this - ---@param alwaysFaceUp boolean Whether the card should be drawn face-up - MythosAreaApi.drawEncounterCard = function(mat, alwaysFaceUp) - getMythosArea().call("drawEncounterCard", {mat = mat, alwaysFaceUp = alwaysFaceUp}) - end - - return MythosAreaApi -end -end) __bundle_register("core/token/TokenManager", function(require, _LOADED, __bundle_register, __bundle_modules) do local guidReferenceApi = require("core/GUIDReferenceApi") @@ -2272,8 +2250,8 @@ do local playerCardData local locationData - local TokenManager = { } - local internal = { } + local TokenManager = {} + local internal = {} -- Spawns tokens for the card. This function is built to just throw a card at it and let it do -- the work once a card has hit an area where it might spawn tokens. It will check to see if @@ -2364,7 +2342,7 @@ do if shiftDown ~= nil then -- Copy the offsets to make sure we don't change the static values local baseOffsets = offsets - offsets = { } + offsets = {} -- get a vector for the shifting (downwards local to the card) local shiftDownVector = Vector(0, 0, shiftDown):rotateOver("y", card.getRotation().y) @@ -2382,7 +2360,7 @@ do if subType == nil then subType = "" end - + -- this is used to load the correct state for additional resource tokens (e.g. "Ammo") local callback = nil local stateID = stateTable[string.lower(subType)] @@ -2415,9 +2393,7 @@ do local tokenTemplate = tokenTemplates[loadTokenType] -- Take ONLY the Y-value for rotation, so we don't flip the token coming out of the bag - local rot = Vector(tokenTemplate.Transform.rotX, - 270, - tokenTemplate.Transform.rotZ) + local rot = Vector(tokenTemplate.Transform.rotX, 270, tokenTemplate.Transform.rotZ) if rotation ~= nil then rot.y = rotation.y end @@ -2519,7 +2495,7 @@ do -- Shift each spawned group after the first down so they don't pile on each other TokenManager.spawnTokenGroup(card, useInfo.token, tokenCount, (i - 1) * 0.8, useInfo.type) end - + tokenSpawnTrackerApi.markTokensSpawned(card.getGUID()) end @@ -2578,7 +2554,7 @@ do end if ((card.is_face_down and locationData.clueSide == 'back') - or (not card.is_face_down and locationData.clueSide == 'front')) then + or (not card.is_face_down and locationData.clueSide == 'front')) then if locationData.type == 'fixed' then return locationData.value elseif locationData.type == 'perPlayer' then @@ -2592,7 +2568,7 @@ do -- Gets the right uses structure for this card, based on metadata and face up/down state ---@param card tts__Object Card to pull the uses from internal.getUses = function(card) - local metadata = JSON.decode(card.getGMNotes()) or { } + local metadata = JSON.decode(card.getGMNotes()) or {} if metadata.type == "Location" then if card.is_face_down and metadata.locationBack ~= nil then return metadata.locationBack.uses @@ -2611,12 +2587,13 @@ do ---@param count number How many clues? ---@return table: Array of global positions to spawn the clues at internal.buildClueOffsets = function(card, count) - local pos = card.getPosition() - local cluePositions = { } + local cluePositions = {} for i = 1, count do local row = math.floor(1 + (i - 1) / 4) local column = (i - 1) % 4 - table.insert(cluePositions, Vector(pos.x + 1.5 - 0.55 * row, pos.y + 0.15, pos.z - 0.825 + 0.55 * column)) + local cluePos = card.positionToWorld(Vector(-0.825 + 0.55 * column, 0, -1.5 + 0.55 * row)) + cluePos.y = cluePos.y + 0.05 + table.insert(cluePositions, cluePos) end return cluePositions end @@ -2669,6 +2646,42 @@ do return TokenManager end end) +__bundle_register("core/token/TokenSpawnTrackerApi", function(require, _LOADED, __bundle_register, __bundle_modules) +do + local TokenSpawnTracker = {} + local guidReferenceApi = require("core/GUIDReferenceApi") + + local function getSpawnTracker() + return guidReferenceApi.getObjectByOwnerAndType("Mythos", "TokenSpawnTracker") + end + + TokenSpawnTracker.hasSpawnedTokens = function(cardGuid) + return getSpawnTracker().call("hasSpawnedTokens", cardGuid) + end + + TokenSpawnTracker.markTokensSpawned = function(cardGuid) + return getSpawnTracker().call("markTokensSpawned", cardGuid) + end + + TokenSpawnTracker.resetTokensSpawned = function(cardGuid) + return getSpawnTracker().call("resetTokensSpawned", cardGuid) + end + + TokenSpawnTracker.resetAllAssetAndEvents = function() + return getSpawnTracker().call("resetAllAssetAndEvents") + end + + TokenSpawnTracker.resetAllLocations = function() + return getSpawnTracker().call("resetAllLocations") + end + + TokenSpawnTracker.resetAll = function() + return getSpawnTracker().call("resetAll") + end + + return TokenSpawnTracker +end +end) __bundle_register("playermat/PlaymatApi", function(require, _LOADED, __bundle_register, __bundle_modules) do local PlaymatApi = {} @@ -2946,40 +2959,75 @@ do return PlaymatApi end end) -__bundle_register("core/token/TokenSpawnTrackerApi", function(require, _LOADED, __bundle_register, __bundle_modules) +__bundle_register("util/SearchLib", function(require, _LOADED, __bundle_register, __bundle_modules) do - local TokenSpawnTracker = {} - local guidReferenceApi = require("core/GUIDReferenceApi") + local SearchLib = {} + local filterFunctions = { + isActionToken = function(x) return x.getDescription() == "Action Token" end, + isCard = function(x) return x.type == "Card" end, + isDeck = function(x) return x.type == "Deck" end, + isCardOrDeck = function(x) return x.type == "Card" or x.type == "Deck" end, + isClue = function(x) return x.memo == "clueDoom" and x.is_face_down == false end, + isTileOrToken = function(x) return x.type == "Tile" end + } - local function getSpawnTracker() - return guidReferenceApi.getObjectByOwnerAndType("Mythos", "TokenSpawnTracker") + -- performs the actual search and returns a filtered list of object references + ---@param pos tts__Vector Global position + ---@param rot? tts__Vector Global rotation + ---@param size table Size + ---@param filter? string Name of the filter function + ---@param direction? table Direction (positive is up) + ---@param maxDistance? number Distance for the cast + local function returnSearchResult(pos, rot, size, filter, direction, maxDistance) + local filterFunc + if filter then + filterFunc = filterFunctions[filter] + end + local searchResult = Physics.cast({ + origin = pos, + direction = direction or { 0, 1, 0 }, + orientation = rot or { 0, 0, 0 }, + type = 3, + size = size, + max_distance = maxDistance or 0 + }) + + -- filtering the result + local objList = {} + for _, v in ipairs(searchResult) do + if not filter or filterFunc(v.hit_object) then + table.insert(objList, v.hit_object) + end + end + return objList end - TokenSpawnTracker.hasSpawnedTokens = function(cardGuid) - return getSpawnTracker().call("hasSpawnedTokens", cardGuid) + -- searches the specified area + SearchLib.inArea = function(pos, rot, size, filter) + return returnSearchResult(pos, rot, size, filter) end - TokenSpawnTracker.markTokensSpawned = function(cardGuid) - return getSpawnTracker().call("markTokensSpawned", cardGuid) + -- searches the area on an object + SearchLib.onObject = function(obj, filter) + pos = obj.getPosition() + size = obj.getBounds().size:setAt("y", 1) + return returnSearchResult(pos, _, size, filter) end - TokenSpawnTracker.resetTokensSpawned = function(cardGuid) - return getSpawnTracker().call("resetTokensSpawned", cardGuid) + -- searches the specified position (a single point) + SearchLib.atPosition = function(pos, filter) + size = { 0.1, 2, 0.1 } + return returnSearchResult(pos, _, size, filter) end - TokenSpawnTracker.resetAllAssetAndEvents = function() - return getSpawnTracker().call("resetAllAssetAndEvents") + -- searches below the specified position (downwards until y = 0) + SearchLib.belowPosition = function(pos, filter) + direction = { 0, -1, 0 } + maxDistance = pos.y + return returnSearchResult(pos, _, size, filter, direction, maxDistance) end - TokenSpawnTracker.resetAllLocations = function() - return getSpawnTracker().call("resetAllLocations") - end - - TokenSpawnTracker.resetAll = function() - return getSpawnTracker().call("resetAll") - end - - return TokenSpawnTracker + return SearchLib end end) return __bundle_require("__root") \ No newline at end of file diff --git a/unpacked.xml b/unpacked.xml index c80a6b4cb..09a97a89e 100644 --- a/unpacked.xml +++ b/unpacked.xml @@ -73,7 +73,6 @@ diff --git a/unpacked.yaml b/unpacked.yaml index 830459d06..b13b24214 100644 --- a/unpacked.yaml +++ b/unpacked.yaml @@ -224,7 +224,7 @@ CustomUIAssets: - Name: box-cover-mask-wide Type: 0 URL: http://cloud-3.steamusercontent.com/ugc/2115061298538827369/A20C2ECB8ECDC1B0AD8B2B38F68CA1C1F5E07D37/ -Date: Fri Feb 16 18:27:41 UTC 2024 +Date: Mon Mar 4 23:52:37 CET 2024 DecalPallet: - ImageURL: http://cloud-3.steamusercontent.com/ugc/1474319121424323663/BC5570ECF747F1B30224461B576E8B0FE7FA5F33/ Name: Achivement Checkmark @@ -233,7 +233,7 @@ DecalPallet: Name: Victory Display Size: 15 Decals: [] -EpochTime: 1708108061 +EpochTime: 1709592757 GameComplexity: '' GameMode: Arkham Horror LCG - Super Complete Edition GameType: '' @@ -284,7 +284,7 @@ Lighting: LutIndex: 0 ReflectionIntensity: 1 LuaScript: !include 'unpacked.ttslua' -LuaScriptState: '{"acknowledgedUpgradeVersions":[],"chaosTokensGUID":[],"optionPanel":{"cardLanguage":"en","changePlayAreaImage":false,"playAreaConnectionColor":{"a":1,"b":0.4,"g":0.4,"r":0.4},"playAreaConnections":true,"playAreaSnapTags":true,"showAttachmentHelper":false,"showCleanUpHelper":false,"showCYOA":false,"showDisplacementTool":false,"showDrawButton":false,"showHandHelper":[],"showSearchAssistant":[],"showTitleSplash":true,"useClueClickers":false,"useResourceCounters":"disabled","useSnapTags":true}}' +LuaScriptState: '{"acknowledgedUpgradeVersions":[],"chaosTokensGUID":[],"optionPanel":{"cardLanguage":"en","changePlayAreaImage":false,"playAreaConnectionColor":{"a":1,"b":0.4,"g":0.4,"r":0.4},"playAreaConnections":true,"playAreaSnapTags":true,"showAttachmentHelper":false,"showCleanUpHelper":false,"showCYOA":false,"showDisplacementTool":false,"showDrawButton":false,"showHandHelper":false,"showSearchAssistant":false,"showTitleSplash":true,"useClueClickers":false,"useResourceCounters":"disabled","useSnapTags":true}}' MusicPlayer: AudioLibrary: - Item1: http://cloud-3.steamusercontent.com/ugc/784110538847453001/4481D1CC5684FCF04AB143954DEFE09E94BF5CEB/ @@ -546,9 +546,7 @@ ObjectStates: - !include 'unpacked/Custom_Tile Tokencache_Curse 16a9a7.yaml' - !include 'unpacked/Custom_Tile Tokencache_Frost b2b7be.yaml' - !include 'unpacked/BlockSquare Physics Detector b300d8.yaml' -- !include 'unpacked/CardCustom New Player Back 85145d.yaml' -- !include 'unpacked/CardCustom New Encounter Back 5d5637.yaml' -- !include 'unpacked/Notecard Arkham SCE 3.6.0 - 2162024 - Page 1 2d0dbb.yaml' +- !include 'unpacked/Notecard Arkham SCE 3.7.0 - 352024 - Page 1 6657b6.yaml' PlayArea: 1 PlayerCounts: - 0 @@ -556,7 +554,7 @@ PlayerCounts: PlayingTime: - 0 - 0 -SaveName: Arkham SCE - 3.6.0 +SaveName: Arkham SCE - 3.7.0 Sky: Sky_Museum SkyURL: https://i.imgur.com/GkQqaOF.jpg SnapPoints: @@ -624,70 +622,6 @@ SnapPoints: x: -3.85 y: 1.58 z: -10.39 -- Position: - x: -45.3 - y: 1.48 - z: 31.67 -- Position: - x: -45.3 - y: 1.48 - z: 29.73 -- Position: - x: -45.3 - y: 1.48 - z: 27.8 -- Position: - x: -45.3 - y: 1.48 - z: 25.86 -- Position: - x: -45.3 - y: 1.48 - z: 23.93 -- Position: - x: -45.3 - y: 1.48 - z: 21.99 -- Position: - x: -45.3 - y: 1.48 - z: 20.06 -- Position: - x: -45.3 - y: 1.48 - z: -20.62 -- Position: - x: -45.3 - y: 1.48 - z: -22.55 -- Position: - x: -45.3 - y: 1.48 - z: -24.49 -- Position: - x: -45.3 - y: 1.48 - z: -26.43 -- Position: - x: -45.3 - y: 1.48 - z: -28.36 -- Position: - x: -45.3 - y: 1.48 - z: -30.3 -- Position: - x: -45.3 - y: 1.48 - z: -32.23 -- Position: - x: -28.64 - y: 1.48 - z: -38.65 - Rotation: - x: 0 - y: 315 - z: 0 - Position: x: -56.24 y: 1.49 diff --git a/unpacked/Bag Additional Player Cards 2cba6b.ttslua b/unpacked/Bag Additional Player Cards 2cba6b.ttslua index a9d8e79fc..47165bc67 100644 --- a/unpacked/Bag Additional Player Cards 2cba6b.ttslua +++ b/unpacked/Bag Additional Player Cards 2cba6b.ttslua @@ -61,6 +61,50 @@ function onLoad() self.addContextMenuItem("Update card index", function() allCardsBagApi.rebuildIndexForHotfix() end) end end) +__bundle_register("core/GUIDReferenceApi", function(require, _LOADED, __bundle_register, __bundle_modules) +do + local GUIDReferenceApi = {} + + local function getGuidHandler() + return getObjectFromGUID("123456") + end + + ---@param owner string Parent object for this search + ---@param type string Type of object to search for + ---@return any: Object reference to the matching object + 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 + ---@return table: List of object references to matching objects + 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 + ---@return table: List of object references to matching objects + GUIDReferenceApi.getObjectsByOwner = function(owner) + return getGuidHandler().call("getObjectsByOwner", owner) + end + + -- sends new information to the reference handler to edit the main index + ---@param owner string Parent of the object + ---@param type string Type of the object + ---@param guid string GUID of the object + GUIDReferenceApi.editIndex = function(owner, type, guid) + return getGuidHandler().call("editIndex", { + owner = owner, + type = type, + guid = guid + }) + end + + return GUIDReferenceApi +end +end) __bundle_register("playercards/AllCardsBagApi", function(require, _LOADED, __bundle_register, __bundle_modules) do local AllCardsBagApi = {} @@ -137,48 +181,4 @@ do return AllCardsBagApi end end) -__bundle_register("core/GUIDReferenceApi", function(require, _LOADED, __bundle_register, __bundle_modules) -do - local GUIDReferenceApi = {} - - local function getGuidHandler() - return getObjectFromGUID("123456") - end - - ---@param owner string Parent object for this search - ---@param type string Type of object to search for - ---@return any: Object reference to the matching object - 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 - ---@return table: List of object references to matching objects - 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 - ---@return table: List of object references to matching objects - GUIDReferenceApi.getObjectsByOwner = function(owner) - return getGuidHandler().call("getObjectsByOwner", owner) - end - - -- sends new information to the reference handler to edit the main index - ---@param owner string Parent of the object - ---@param type string Type of the object - ---@param guid string GUID of the object - GUIDReferenceApi.editIndex = function(owner, type, guid) - return getGuidHandler().call("editIndex", { - owner = owner, - type = type, - guid = guid - }) - end - - return GUIDReferenceApi -end -end) return __bundle_require("__root") \ No newline at end of file diff --git a/unpacked/Bag All Player Cards 15bb07.ttslua b/unpacked/Bag All Player Cards 15bb07.ttslua index 3b546d88f..2a191bd9d 100644 --- a/unpacked/Bag All Player Cards 15bb07.ttslua +++ b/unpacked/Bag All Player Cards 15bb07.ttslua @@ -41,6 +41,9 @@ local __bundle_require, __bundle_loaded, __bundle_register, __bundle_modules = ( return require, loaded, register, modules end)(nil) +__bundle_register("__root", function(require, _LOADED, __bundle_register, __bundle_modules) +require("playercards/AllCardsBag") +end) __bundle_register("playercards/AllCardsBag", function(require, _LOADED, __bundle_register, __bundle_modules) local cardIdIndex = { } local classAndLevelIndex = { } @@ -176,7 +179,6 @@ end function buildSupplementalIndexes() for cardId, card in pairs(cardIdIndex) do - local cardData = card.data local cardMetadata = card.metadata -- If the ID key and the metadata ID don't match this is a duplicate card created by an -- alternate_id, and we should skip it @@ -414,7 +416,4 @@ function isBasicWeakness(cardMetadata) and cardMetadata.basicWeaknessCount > 0 end end) -__bundle_register("__root", function(require, _LOADED, __bundle_register, __bundle_modules) -require("playercards/AllCardsBag") -end) return __bundle_require("__root") \ No newline at end of file diff --git a/unpacked/Bag All Player Cards 15bb07.yaml b/unpacked/Bag All Player Cards 15bb07.yaml index 754baef77..5368c1952 100644 --- a/unpacked/Bag All Player Cards 15bb07.yaml +++ b/unpacked/Bag All Player Cards 15bb07.yaml @@ -25,47 +25,47 @@ ContainedObjects: 46b147.yaml' - !include 'Bag All Player Cards 15bb07/Card If it bleeds... acf2b0.yaml' - !include 'Bag All Player Cards 15bb07/Card Beat Cop (2) 7001be.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Book of Living Myths c5fb1f.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Weeping Yurei 541bd9.yaml' +- !include 'Bag All Player Cards 15bb07/Card Book of Living Myths c5fb1f.yaml' +- !include 'Bag All Player Cards 15bb07/Card Weeping Yurei 541bd9.yaml' - !include "Bag All Player Cards 15bb07/CardCustom K\u014Dhaku Narukami cea427.yaml" -- !include "Bag All Player Cards 15bb07/CardCustom K\u014Dhaku Narukami 54eaa7.yaml" -- !include 'Bag All Player Cards 15bb07/CardCustom Ad Hoc c9fb2f.yaml' +- !include "Bag All Player Cards 15bb07/Card K\u014Dhaku Narukami 54eaa7.yaml" +- !include 'Bag All Player Cards 15bb07/Card Ad Hoc c9fb2f.yaml' - !include 'Bag All Player Cards 15bb07/Card Hasty Repairs 0821d5.yaml' - !include 'Bag All Player Cards 15bb07/CardCustom Wilson Richards ceb426.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Wilson Richards 55eab5.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Ancestral Token c1fb1f.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Aetheric Current (Yoth) 84ad64.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Aetheric Current (Yuggoth) 84ad65.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Failed Experiment acd281.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Flux Stabilizer 55990a.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Kate Winthrop ce2322.yaml' +- !include 'Bag All Player Cards 15bb07/Card Wilson Richards 55eab5.yaml' +- !include 'Bag All Player Cards 15bb07/Card Ancestral Token c1fb1f.yaml' +- !include 'Bag All Player Cards 15bb07/Card Aetheric Current (Yoth) 84ad64.yaml' +- !include 'Bag All Player Cards 15bb07/Card Aetheric Current (Yuggoth) 84ad65.yaml' +- !include 'Bag All Player Cards 15bb07/Card Failed Experiment acd281.yaml' +- !include 'Bag All Player Cards 15bb07/Card Flux Stabilizer 55990a.yaml' +- !include 'Bag All Player Cards 15bb07/Card Kate Winthrop ce2322.yaml' - !include 'Bag All Player Cards 15bb07/CardCustom Kate Winthrop ce2323.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Hatchet (1) 2ea0d3.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Token of Faith (3) 2ea0d1.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Transmogrify 9965dd.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Absolution aef183.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Confound (3) 9965de.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Strong-Armed (1) 294d6.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Survival Technique (2) 2ea0d4.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Scrimshaw Charm c1fb2e.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Vamp (3) add233.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Well-Dressed c6ac33.yaml' +- !include 'Bag All Player Cards 15bb07/Card Hatchet (1) 2ea0d3.yaml' +- !include 'Bag All Player Cards 15bb07/Card Token of Faith (3) 2ea0d1.yaml' +- !include 'Bag All Player Cards 15bb07/Card Transmogrify 9965dd.yaml' +- !include 'Bag All Player Cards 15bb07/Card Absolution aef183.yaml' +- !include 'Bag All Player Cards 15bb07/Card Confound (3) 9965de.yaml' +- !include 'Bag All Player Cards 15bb07/Card Strong-Armed (1) 294d6.yaml' +- !include 'Bag All Player Cards 15bb07/Card Survival Technique (2) 2ea0d4.yaml' +- !include 'Bag All Player Cards 15bb07/Card Scrimshaw Charm c1fb2e.yaml' +- !include 'Bag All Player Cards 15bb07/Card Vamp (3) add233.yaml' +- !include 'Bag All Player Cards 15bb07/Card Well-Dressed c6ac33.yaml' - !include 'Bag All Player Cards 15bb07/Card Fine Tuning (1) 103fbd.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Prismatic Spectacles (2) 3adcf5.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Drain Essence 9965aa.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Fake Credentials acd38d.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Cat Mask 847ed6.yaml' +- !include 'Bag All Player Cards 15bb07/Card Prismatic Spectacles (2) 3adcf5.yaml' +- !include 'Bag All Player Cards 15bb07/Card Drain Essence 9965aa.yaml' +- !include 'Bag All Player Cards 15bb07/Card Fake Credentials acd38d.yaml' +- !include 'Bag All Player Cards 15bb07/Card Cat Mask 847ed6.yaml' - !include 'Bag All Player Cards 15bb07/Card Hard Times 876557.yaml' - !include 'Bag All Player Cards 15bb07/Card Pete''s Guitar 876557.yaml' - !include 'Bag All Player Cards 15bb07/Card Ashcan Pete (Parallel Front) 5294c3.yaml' - !include 'Bag All Player Cards 15bb07/Card Ashcan Pete (Parallel Back) 5294c3.yaml' - !include 'Bag All Player Cards 15bb07/Card Ashcan Pete (Parallel) 5294c3.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Eldritch Tongue e8765a.yaml' +- !include 'Bag All Player Cards 15bb07/Card Eldritch Tongue e8765a.yaml' - !include 'Bag All Player Cards 15bb07/Card Tinker 102fbd.yaml' - !include 'Bag All Player Cards 15bb07/Card Hand-Eye Coordination (1) 102fcd.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom False Surrender adf28e.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Purified 294d6a.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom The Key of Solomon (4) ae54c6.yaml' +- !include 'Bag All Player Cards 15bb07/Card False Surrender adf28e.yaml' +- !include 'Bag All Player Cards 15bb07/Card Purified 294d6a.yaml' +- !include 'Bag All Player Cards 15bb07/Card The Key of Solomon (4) ae54c6.yaml' - !include 'Bag All Player Cards 15bb07/CardCustom The Necronomicon 5b2e10.yaml' - !include 'Bag All Player Cards 15bb07/Card Roland''s .38 Special 4edb91.yaml' - !include 'Bag All Player Cards 15bb07/Card Stubborn Detective 4ea68b.yaml' @@ -1505,6 +1505,11 @@ ContainedObjects: - !include 'Bag All Player Cards 15bb07/Card Amina Zidane 458edc.yaml' - !include 'Bag All Player Cards 15bb07/Card Amina Zidane 4c2a3d.yaml' - !include 'Bag All Player Cards 15bb07/CardCustom The Raven Quill Upgrade Sheet 23b96a.yaml' +- !include 'Bag All Player Cards 15bb07/CardCustom Hypnotic Gaze (2) (Taboo) e2bc50.yaml' +- !include 'Bag All Player Cards 15bb07/CardCustom Old Keyring (3) (Taboo) e7d989.yaml' +- !include 'Bag All Player Cards 15bb07/CardCustom Pay Day (1) (Taboo) 9f0b35.yaml' +- !include 'Bag All Player Cards 15bb07/CardCustom Scavenging (2) (Taboo) ff4aeb.yaml' +- !include 'Bag All Player Cards 15bb07/CardCustom Scavenging (Taboo) 1b76c8.yaml' - !include 'Bag All Player Cards 15bb07/Card Deck of Possibilities fefdfa.yaml' - !include "Bag All Player Cards 15bb07/Card Isamara Ordo\xF1ez 860cd7.yaml" - !include 'Bag All Player Cards 15bb07/Card Jenny Barnes 48b174.yaml' @@ -1617,77 +1622,77 @@ ContainedObjects: - !include 'Bag All Player Cards 15bb07/Card Final Rhapsody 561775.yaml' - !include 'Bag All Player Cards 15bb07/Card Jim Culver (Parallel Back) aba863.yaml' - !include 'Bag All Player Cards 15bb07/CardCustom The Beyond 37ab47.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Devil (2) 2a0ba5.yaml' +- !include 'Bag All Player Cards 15bb07/Card Devil (2) 2a0ba5.yaml' - !include 'Bag All Player Cards 15bb07/CardCustom Alessandra Zorzi cea425.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Alessandra Zorzi 54eaa5.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Zamacona 541ba9.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Wicked Athame c9fb1f.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Wolf Mask 975d89.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Beguile 019526.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Ofuda 860c1e.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Providential (2) 2cf42a.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Vamp add232.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom I''ll Pay You Back! 40e1ca.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Occult Reliquary (3) acd0c2.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Grift df75d7.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Guided by Faith aef282.yaml' +- !include 'Bag All Player Cards 15bb07/Card Alessandra Zorzi 54eaa5.yaml' +- !include 'Bag All Player Cards 15bb07/Card Zamacona 541ba9.yaml' +- !include 'Bag All Player Cards 15bb07/Card Wicked Athame c9fb1f.yaml' +- !include 'Bag All Player Cards 15bb07/Card Wolf Mask 975d89.yaml' +- !include 'Bag All Player Cards 15bb07/Card Beguile 019526.yaml' +- !include 'Bag All Player Cards 15bb07/Card Ofuda 860c1e.yaml' +- !include 'Bag All Player Cards 15bb07/Card Providential (2) 2cf42a.yaml' +- !include 'Bag All Player Cards 15bb07/Card Vamp add232.yaml' +- !include 'Bag All Player Cards 15bb07/Card I''ll Pay You Back! 40e1ca.yaml' +- !include 'Bag All Player Cards 15bb07/Card Occult Reliquary (3) acd0c2.yaml' +- !include 'Bag All Player Cards 15bb07/Card Grift df75d7.yaml' +- !include 'Bag All Player Cards 15bb07/Card Guided by Faith aef282.yaml' - !include 'Bag All Player Cards 15bb07/CardCustom Hank Samson 3764cc.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Hank Samson 3764cd.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Hank Samson (Assistant) 3764ce.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Hank Samson (Warden) 3764cf.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Hold Up aef182.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Pelt Shipment aa11bc.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Stir the Pot (5) add252.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Snitch (2) add242.yaml' +- !include 'Bag All Player Cards 15bb07/Card Hank Samson 3764cd.yaml' +- !include 'Bag All Player Cards 15bb07/Card Hank Samson (Assistant) 3764ce.yaml' +- !include 'Bag All Player Cards 15bb07/Card Hank Samson (Warden) 3764cf.yaml' +- !include 'Bag All Player Cards 15bb07/Card Hold Up aef182.yaml' +- !include 'Bag All Player Cards 15bb07/Card Pelt Shipment aa11bc.yaml' +- !include 'Bag All Player Cards 15bb07/Card Stir the Pot (5) add252.yaml' +- !include 'Bag All Player Cards 15bb07/Card Snitch (2) add242.yaml' - !include 'Bag All Player Cards 15bb07/Card Where''s Pa 9aba43.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Persistence (1) 2cf51.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Stouthearted 265ad2.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Control Variable 133868.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Blackmail File de456d.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Speak to the Dead c763aa.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Accursed e91c5e.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Throw the Book at Them! d617ab.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Fox Mask 4144cd.yaml' -- !include 'Bag All Player Cards 15bb07/CardCustom Mouse Mask 32ad21.yaml' -- !include 'Bag All Player Cards 15bb07/Card Task Force (0) a5c06a.yaml' +- !include 'Bag All Player Cards 15bb07/Card Persistence (1) 2cf51.yaml' +- !include 'Bag All Player Cards 15bb07/Card Stouthearted 265ad2.yaml' +- !include 'Bag All Player Cards 15bb07/Card Control Variable 133868.yaml' +- !include 'Bag All Player Cards 15bb07/Card Blackmail File de456d.yaml' +- !include 'Bag All Player Cards 15bb07/Card Speak to the Dead c763aa.yaml' +- !include 'Bag All Player Cards 15bb07/Card Accursed e91c5e.yaml' +- !include 'Bag All Player Cards 15bb07/Card Throw the Book at Them! d617ab.yaml' +- !include 'Bag All Player Cards 15bb07/Card Fox Mask 4144cd.yaml' +- !include 'Bag All Player Cards 15bb07/Card Mouse Mask 32ad21.yaml' +- !include 'Bag All Player Cards 15bb07/Card Task Force a5c06a.yaml' - !include 'Bag All Player Cards 15bb07/Card Microscope (4) fbd296.yaml' - !include 'Bag All Player Cards 15bb07/Card Back Injury f6c482.yaml' -- !include 'Bag All Player Cards 15bb07/Card Lightfooted (0) fe1fb6.yaml' +- !include 'Bag All Player Cards 15bb07/Card Lightfooted fe1fb6.yaml' - !include 'Bag All Player Cards 15bb07/Card Bewitching (3) db335c.yaml' - !include 'Bag All Player Cards 15bb07/Card Flurry of Blows (5) 9e7bc8.yaml' - !include 'Bag All Player Cards 15bb07/Card British Bull Dog (2) 7b7050.yaml' -- !include 'Bag All Player Cards 15bb07/Card Bianca Die Katz (0) 897a94.yaml' +- !include 'Bag All Player Cards 15bb07/Card Bianca Die Katz 897a94.yaml' - !include 'Bag All Player Cards 15bb07/Card Dirty Deeds (3) aa2d6a.yaml' - !include 'Bag All Player Cards 15bb07/Card Esoteric Method (1) 9250e1.yaml' -- !include 'Bag All Player Cards 15bb07/Card Katana (0) f5beb5.yaml' +- !include 'Bag All Player Cards 15bb07/Card Katana f5beb5.yaml' - !include 'Bag All Player Cards 15bb07/Card Ethereal Weaving (3) 697efd.yaml' - !include 'Bag All Player Cards 15bb07/Card Putrescent Rot 2d1e60.yaml' - !include 'Bag All Player Cards 15bb07/Card Ravenous Myconid (4) df93ca.yaml' - !include 'Bag All Player Cards 15bb07/Card Second Wind (2) c3c979.yaml' - !include 'Bag All Player Cards 15bb07/Card Fire Axe (2) 326ec3.yaml' -- !include 'Bag All Player Cards 15bb07/Card Stir the Pot (0) c25479.yaml' +- !include 'Bag All Player Cards 15bb07/Card Stir the Pot c25479.yaml' - !include 'Bag All Player Cards 15bb07/Card Keeper of the Key 014086.yaml' -- !include 'Bag All Player Cards 15bb07/Card Bide Your Time (0) 24d3b3.yaml' -- !include 'Bag All Player Cards 15bb07/Card Thorough Inquiry (0) c6b644.yaml' +- !include 'Bag All Player Cards 15bb07/Card Bide Your Time 24d3b3.yaml' +- !include 'Bag All Player Cards 15bb07/Card Thorough Inquiry c6b644.yaml' - !include 'Bag All Player Cards 15bb07/Card Steady-Handed (1) 9181f7.yaml' - !include 'Bag All Player Cards 15bb07/Card Dawn Star (1) 8b15d7.yaml' - !include 'Bag All Player Cards 15bb07/Card Seal of the Elders (5) d2b649.yaml' - !include 'Bag All Player Cards 15bb07/Card Keep Faith (2) 73e4ee.yaml' - !include 'Bag All Player Cards 15bb07/Card Mariner''s Compass (2) 596053.yaml' -- !include 'Bag All Player Cards 15bb07/Card Bank Job (0) c4dfa2.yaml' +- !include 'Bag All Player Cards 15bb07/Card Bank Job c4dfa2.yaml' - !include 'Bag All Player Cards 15bb07/Card Abyssal Rot bbeac6.yaml' - !include 'Bag All Player Cards 15bb07/Card Maimed Hand cb14d3.yaml' -- !include 'Bag All Player Cards 15bb07/Card Testing Sprint (0) a4846b.yaml' +- !include 'Bag All Player Cards 15bb07/Card Testing Sprint a4846b.yaml' - !include 'Bag All Player Cards 15bb07/Card Blade of Yoth c61a83.yaml' - !include 'Bag All Player Cards 15bb07/Card Call the Beyond (2) 0dd070.yaml' - !include 'Bag All Player Cards 15bb07/Card Gabriel Carillo (1) 7e1088.yaml' -- !include 'Bag All Player Cards 15bb07/Card Diabolical Luck (0) 1fea59.yaml' -- !include 'Bag All Player Cards 15bb07/Card Cleaning Kit (0) d07668.yaml' +- !include 'Bag All Player Cards 15bb07/Card Diabolical Luck 1fea59.yaml' +- !include 'Bag All Player Cards 15bb07/Card Cleaning Kit d07668.yaml' - !include 'Bag All Player Cards 15bb07/Card Evanescent Ascension 9e763b.yaml' -- !include 'Bag All Player Cards 15bb07/Card Matchbox (0) b533db.yaml' -- !include 'Bag All Player Cards 15bb07/Card British Bull Dog (0) 9b76a0.yaml' +- !include 'Bag All Player Cards 15bb07/Card Matchbox b533db.yaml' +- !include 'Bag All Player Cards 15bb07/Card British Bull Dog 9b76a0.yaml' - !include 'Bag All Player Cards 15bb07/Card Twilight Diadem a2f8f8.yaml' -- !include 'Bag All Player Cards 15bb07/Card Rod of Carnamagos (0) 66ec64.yaml' +- !include 'Bag All Player Cards 15bb07/Card Rod of Carnamagos 66ec64.yaml' - !include 'Bag All Player Cards 15bb07/Card Spectral Razor (2) b38ded.yaml' - !include 'Bag All Player Cards 15bb07/Card Ethereal Form (2) e58c7b.yaml' - !include 'Bag All Player Cards 15bb07/Card Cleaning Kit (3) 94c3e1.yaml' @@ -1696,7 +1701,7 @@ ContainedObjects: - !include 'Bag All Player Cards 15bb07/Card Fake Credentials (4) 7ebb67.yaml' - !include 'Bag All Player Cards 15bb07/Card Hunting Jacket (2) 5355fa.yaml' - !include 'Bag All Player Cards 15bb07/Card Dark Horse (5) d00e4d.yaml' -- !include 'Bag All Player Cards 15bb07/Card Antediluvian Hymn (0) ba4746.yaml' +- !include 'Bag All Player Cards 15bb07/Card Antediluvian Hymn ba4746.yaml' - !include 'Bag All Player Cards 15bb07/Card Aember Rot 3e6219.yaml' - !include 'Bag All Player Cards 15bb07/Card The Silver Moth 2c6dc1.yaml' - !include 'Bag All Player Cards 15bb07/Card Scarlet Rot fe476c.yaml' @@ -1711,7 +1716,7 @@ ContainedObjects: - !include 'Bag All Player Cards 15bb07/Card Bianca Die Katz 992ccd.yaml' - !include 'Bag All Player Cards 15bb07/Card Servant of Brass 06bc7e.yaml' - !include 'Bag All Player Cards 15bb07/Card Read the Signs (2) 5ce4d4.yaml' -- !include 'Bag All Player Cards 15bb07/Card Elaborate Distraction (0) d1422e.yaml' +- !include 'Bag All Player Cards 15bb07/Card Elaborate Distraction d1422e.yaml' Description: '' DragSelectable: true GMNotes: '' diff --git a/unpacked/Bag All Player Cards 15bb07/Card 21 or Bust 5210c2.yaml b/unpacked/Bag All Player Cards 15bb07/Card 21 or Bust 5210c2.yaml index 785851b60..f4b1d8a27 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card 21 or Bust 5210c2.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card 21 or Bust 5210c2.yaml @@ -12,7 +12,7 @@ CustomDeck: '3790': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/CardCustom Absolution aef183.yaml b/unpacked/Bag All Player Cards 15bb07/Card Absolution aef183.yaml similarity index 83% rename from unpacked/Bag All Player Cards 15bb07/CardCustom Absolution aef183.yaml rename to unpacked/Bag All Player Cards 15bb07/Card Absolution aef183.yaml index 9bd528207..2605d81bb 100644 --- a/unpacked/Bag All Player Cards 15bb07/CardCustom Absolution aef183.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Absolution aef183.yaml @@ -3,18 +3,18 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 125300 +CardID: 917316 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '1253': + '9173': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2278324186529136565/AE4B753BBB284EB12A0BDE36CEA3CD763C835AC0/ - NumHeight: 1 - NumWidth: 1 + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/ + NumHeight: 7 + NumWidth: 10 Type: 0 UniqueBack: false Description: '' @@ -33,7 +33,7 @@ Locked: false LuaScript: '' LuaScriptState: '' MeasureMovement: false -Name: CardCustom +Name: Card Nickname: Absolution SidewaysCard: false Snap: true diff --git a/unpacked/Bag All Player Cards 15bb07/Card Abyssal Rot bbeac6.yaml b/unpacked/Bag All Player Cards 15bb07/Card Abyssal Rot bbeac6.yaml index c8a82a664..eaffc0882 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Abyssal Rot bbeac6.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Abyssal Rot bbeac6.yaml @@ -3,16 +3,16 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 94732 +CardID: 917408 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '947': + '9174': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/CardCustom Accursed e91c5e.yaml b/unpacked/Bag All Player Cards 15bb07/Card Accursed e91c5e.yaml similarity index 83% rename from unpacked/Bag All Player Cards 15bb07/CardCustom Accursed e91c5e.yaml rename to unpacked/Bag All Player Cards 15bb07/Card Accursed e91c5e.yaml index 451893ece..5e0ec3669 100644 --- a/unpacked/Bag All Player Cards 15bb07/CardCustom Accursed e91c5e.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Accursed e91c5e.yaml @@ -3,18 +3,18 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 20100 +CardID: 917417 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '201': + '9174': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2172484009070977509/27A8CCF2BC48CAD909180D64177E86B8232F66C6/ - NumHeight: 1 - NumWidth: 1 + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/ + NumHeight: 7 + NumWidth: 10 Type: 0 UniqueBack: false Description: '' @@ -33,7 +33,7 @@ Locked: false LuaScript: '' LuaScriptState: '' MeasureMovement: false -Name: CardCustom +Name: Card Nickname: Accursed SidewaysCard: false Snap: true diff --git a/unpacked/Bag All Player Cards 15bb07/CardCustom Ad Hoc c9fb2f.yaml b/unpacked/Bag All Player Cards 15bb07/Card Ad Hoc c9fb2f.yaml similarity index 83% rename from unpacked/Bag All Player Cards 15bb07/CardCustom Ad Hoc c9fb2f.yaml rename to unpacked/Bag All Player Cards 15bb07/Card Ad Hoc c9fb2f.yaml index 1b47bfae7..6191f3d0d 100644 --- a/unpacked/Bag All Player Cards 15bb07/CardCustom Ad Hoc c9fb2f.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Ad Hoc c9fb2f.yaml @@ -3,18 +3,18 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 9100 +CardID: 917300 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '91': + '9173': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2223150865961116295/72473371D0DB68709B4B1B9343A748510A1BB30A/ - NumHeight: 1 - NumWidth: 1 + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/ + NumHeight: 7 + NumWidth: 10 Type: 0 UniqueBack: false Description: '' @@ -33,7 +33,7 @@ Locked: false LuaScript: '' LuaScriptState: '' MeasureMovement: false -Name: CardCustom +Name: Card Nickname: Ad Hoc SidewaysCard: false Snap: true diff --git a/unpacked/Bag All Player Cards 15bb07/Card Aember Rot 3e6219.yaml b/unpacked/Bag All Player Cards 15bb07/Card Aember Rot 3e6219.yaml index 33d90d477..21cabe075 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Aember Rot 3e6219.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Aember Rot 3e6219.yaml @@ -3,16 +3,16 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 94733 +CardID: 917409 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '947': + '9174': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/CardCustom Aetheric Current (Yoth) 84ad64.yaml b/unpacked/Bag All Player Cards 15bb07/Card Aetheric Current (Yoth) 84ad64.yaml similarity index 83% rename from unpacked/Bag All Player Cards 15bb07/CardCustom Aetheric Current (Yoth) 84ad64.yaml rename to unpacked/Bag All Player Cards 15bb07/Card Aetheric Current (Yoth) 84ad64.yaml index ba640e5c8..09eee19f2 100644 --- a/unpacked/Bag All Player Cards 15bb07/CardCustom Aetheric Current (Yoth) 84ad64.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Aetheric Current (Yoth) 84ad64.yaml @@ -3,18 +3,18 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 1700 +CardID: 917303 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '17': + '9173': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2279448008875866961/175F57B97C6DEC14F1F6E6420A318A76D38FFE8A/ - NumHeight: 1 - NumWidth: 1 + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/ + NumHeight: 7 + NumWidth: 10 Type: 0 UniqueBack: false Description: '' @@ -33,7 +33,7 @@ Locked: false LuaScript: '' LuaScriptState: '' MeasureMovement: false -Name: CardCustom +Name: Card Nickname: Aetheric Current (Yoth) SidewaysCard: false Snap: true diff --git a/unpacked/Bag All Player Cards 15bb07/CardCustom Aetheric Current (Yuggoth) 84ad65.yaml b/unpacked/Bag All Player Cards 15bb07/Card Aetheric Current (Yuggoth) 84ad65.yaml similarity index 83% rename from unpacked/Bag All Player Cards 15bb07/CardCustom Aetheric Current (Yuggoth) 84ad65.yaml rename to unpacked/Bag All Player Cards 15bb07/Card Aetheric Current (Yuggoth) 84ad65.yaml index 9b5f1c867..8786c8544 100644 --- a/unpacked/Bag All Player Cards 15bb07/CardCustom Aetheric Current (Yuggoth) 84ad65.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Aetheric Current (Yuggoth) 84ad65.yaml @@ -3,18 +3,18 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 12700 +CardID: 917302 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '127': + '9173': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2279448008875867121/DD34A54C059F9DE340A3C54406A276D202D1C329/ - NumHeight: 1 - NumWidth: 1 + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/ + NumHeight: 7 + NumWidth: 10 Type: 0 UniqueBack: false Description: '' @@ -33,7 +33,7 @@ Locked: false LuaScript: '' LuaScriptState: '' MeasureMovement: false -Name: CardCustom +Name: Card Nickname: Aetheric Current (Yuggoth) SidewaysCard: false Snap: true diff --git a/unpacked/Bag All Player Cards 15bb07/CardCustom Alessandra Zorzi 54eaa5.yaml b/unpacked/Bag All Player Cards 15bb07/Card Alessandra Zorzi 54eaa5.yaml similarity index 82% rename from unpacked/Bag All Player Cards 15bb07/CardCustom Alessandra Zorzi 54eaa5.yaml rename to unpacked/Bag All Player Cards 15bb07/Card Alessandra Zorzi 54eaa5.yaml index 663d3612a..001e75fa8 100644 --- a/unpacked/Bag All Player Cards 15bb07/CardCustom Alessandra Zorzi 54eaa5.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Alessandra Zorzi 54eaa5.yaml @@ -3,20 +3,20 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 1100 +CardID: 117303 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '11': + '1173': BackIsHidden: true - BackURL: http://cloud-3.steamusercontent.com/ugc/2172484009071330094/3AEFB558D789BC525F50DCC0217FA17627EB91BF/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2172484009071330266/6DD06B74E6DD4F473AB47C39DD17DF9FAD8B1455/ - NumHeight: 1 - NumWidth: 1 + BackURL: http://cloud-3.steamusercontent.com/ugc/2424696374430631817/A15FFE0907238AB578CFEB119974545A4408E3A1/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430631996/4C0628EA8BAEB615CBF9575C1B2F0389EED9C4B7/ + NumHeight: 2 + NumWidth: 4 Type: 0 - UniqueBack: false + UniqueBack: true Description: The Countess DragSelectable: true GMNotes: "{\n \"id\": \"10009\",\n \"type\": \"Investigator\",\n \"class\": \"Rogue\",\n @@ -39,7 +39,7 @@ Locked: false LuaScript: '' LuaScriptState: '' MeasureMovement: false -Name: CardCustom +Name: Card Nickname: Alessandra Zorzi SidewaysCard: true Snap: true diff --git a/unpacked/Bag All Player Cards 15bb07/CardCustom Ancestral Token c1fb1f.yaml b/unpacked/Bag All Player Cards 15bb07/Card Ancestral Token c1fb1f.yaml similarity index 84% rename from unpacked/Bag All Player Cards 15bb07/CardCustom Ancestral Token c1fb1f.yaml rename to unpacked/Bag All Player Cards 15bb07/Card Ancestral Token c1fb1f.yaml index a945daaac..f07f33a84 100644 --- a/unpacked/Bag All Player Cards 15bb07/CardCustom Ancestral Token c1fb1f.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Ancestral Token c1fb1f.yaml @@ -3,18 +3,18 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 4900 +CardID: 917311 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '49': + '9173': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2279447674651244606/B2275AD213AF8DD0B65170BD4E5E5E98E233A6C7/ - NumHeight: 1 - NumWidth: 1 + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/ + NumHeight: 7 + NumWidth: 10 Type: 0 UniqueBack: false Description: '' @@ -34,7 +34,7 @@ Locked: false LuaScript: '' LuaScriptState: '' MeasureMovement: false -Name: CardCustom +Name: Card Nickname: Ancestral Token SidewaysCard: false Snap: true diff --git a/unpacked/Bag All Player Cards 15bb07/Card Antediluvian Hymn (0) ba4746.yaml b/unpacked/Bag All Player Cards 15bb07/Card Antediluvian Hymn ba4746.yaml similarity index 86% rename from unpacked/Bag All Player Cards 15bb07/Card Antediluvian Hymn (0) ba4746.yaml rename to unpacked/Bag All Player Cards 15bb07/Card Antediluvian Hymn ba4746.yaml index 1aadce6fb..39d624700 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Antediluvian Hymn (0) ba4746.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Antediluvian Hymn ba4746.yaml @@ -3,16 +3,16 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 94737 +CardID: 917415 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '947': + '9174': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/ NumHeight: 7 NumWidth: 10 Type: 0 @@ -35,7 +35,7 @@ LuaScript: '' LuaScriptState: '' MeasureMovement: false Name: Card -Nickname: Antediluvian Hymn (0) +Nickname: Antediluvian Hymn SidewaysCard: false Snap: true Sticky: true diff --git a/unpacked/Bag All Player Cards 15bb07/Card Antiquary (3) 452db2.yaml b/unpacked/Bag All Player Cards 15bb07/Card Antiquary (3) 452db2.yaml index 7c9b03d17..b874aac3e 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Antiquary (3) 452db2.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Antiquary (3) 452db2.yaml @@ -3,7 +3,7 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 378962 +CardID: 378953 ColorDiffuse: b: 0.71324 g: 0.71324 @@ -12,7 +12,7 @@ CustomDeck: '3789': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 098132.yaml b/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 098132.yaml index f8c0d5670..a333720d2 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 098132.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 098132.yaml @@ -12,7 +12,7 @@ CustomDeck: '3790': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 1fdf4c.yaml b/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 1fdf4c.yaml index b08b27103..ab385fbff 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 1fdf4c.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 1fdf4c.yaml @@ -12,7 +12,7 @@ CustomDeck: '3790': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 4b1b99.yaml b/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 4b1b99.yaml index 3f237b881..97f29269d 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 4b1b99.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 4b1b99.yaml @@ -12,7 +12,7 @@ CustomDeck: '3790': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 88ff66.yaml b/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 88ff66.yaml index da6d6eace..dda6c6bb0 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 88ff66.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits (4) 88ff66.yaml @@ -12,7 +12,7 @@ CustomDeck: '3790': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits 8023f5.yaml b/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits 8023f5.yaml index 3c8830976..37123c924 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits 8023f5.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Archive of Conduits 8023f5.yaml @@ -12,7 +12,7 @@ CustomDeck: '3790': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Arm Injury 8f1420.yaml b/unpacked/Bag All Player Cards 15bb07/Card Arm Injury 8f1420.yaml index 20ea4096f..80c119e54 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Arm Injury 8f1420.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Arm Injury 8f1420.yaml @@ -3,7 +3,7 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 378917 +CardID: 378959 ColorDiffuse: b: 0.71324 g: 0.71324 @@ -12,7 +12,7 @@ CustomDeck: '3789': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Astronomical Atlas (3) 804397.yaml b/unpacked/Bag All Player Cards 15bb07/Card Astronomical Atlas (3) 804397.yaml index faf68b238..1331e42f6 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Astronomical Atlas (3) 804397.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Astronomical Atlas (3) 804397.yaml @@ -12,7 +12,7 @@ CustomDeck: '3790': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Back Injury f6c482.yaml b/unpacked/Bag All Player Cards 15bb07/Card Back Injury f6c482.yaml index e26a04bc7..b37622142 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Back Injury f6c482.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Back Injury f6c482.yaml @@ -3,16 +3,16 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 94760 +CardID: 917458 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '947': + '9174': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Bandages b460e1.yaml b/unpacked/Bag All Player Cards 15bb07/Card Bandages b460e1.yaml index 383985ca6..bb907a669 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Bandages b460e1.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Bandages b460e1.yaml @@ -12,7 +12,7 @@ CustomDeck: '3789': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Bangle of Jinxes (1) a65852.yaml b/unpacked/Bag All Player Cards 15bb07/Card Bangle of Jinxes (1) a65852.yaml index aa40e7496..24db3b896 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Bangle of Jinxes (1) a65852.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Bangle of Jinxes (1) a65852.yaml @@ -12,7 +12,7 @@ CustomDeck: '3789': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Bank Job (0) c4dfa2.yaml b/unpacked/Bag All Player Cards 15bb07/Card Bank Job c4dfa2.yaml similarity index 86% rename from unpacked/Bag All Player Cards 15bb07/Card Bank Job (0) c4dfa2.yaml rename to unpacked/Bag All Player Cards 15bb07/Card Bank Job c4dfa2.yaml index 6cdcd933d..3d693e37c 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Bank Job (0) c4dfa2.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Bank Job c4dfa2.yaml @@ -3,16 +3,16 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 94723 +CardID: 917361 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '947': + '9173': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/ NumHeight: 7 NumWidth: 10 Type: 0 @@ -35,7 +35,7 @@ LuaScript: '' LuaScriptState: '' MeasureMovement: false Name: Card -Nickname: Bank Job (0) +Nickname: Bank Job SidewaysCard: false Snap: true Sticky: true diff --git a/unpacked/Bag All Player Cards 15bb07/CardCustom Beguile 019526.yaml b/unpacked/Bag All Player Cards 15bb07/Card Beguile 019526.yaml similarity index 83% rename from unpacked/Bag All Player Cards 15bb07/CardCustom Beguile 019526.yaml rename to unpacked/Bag All Player Cards 15bb07/Card Beguile 019526.yaml index 0916b06c8..6ce952f03 100644 --- a/unpacked/Bag All Player Cards 15bb07/CardCustom Beguile 019526.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Beguile 019526.yaml @@ -3,18 +3,18 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 200 +CardID: 917305 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '2': + '9173': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2172484009071331078/3553DC91D67F802BAFFE9F674DBE991C2D439867/ - NumHeight: 1 - NumWidth: 1 + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/ + NumHeight: 7 + NumWidth: 10 Type: 0 UniqueBack: false Description: '' @@ -33,7 +33,7 @@ Locked: false LuaScript: '' LuaScriptState: '' MeasureMovement: false -Name: CardCustom +Name: Card Nickname: Beguile SidewaysCard: false Snap: true diff --git a/unpacked/Bag All Player Cards 15bb07/Card Bewitching (3) db335c.yaml b/unpacked/Bag All Player Cards 15bb07/Card Bewitching (3) db335c.yaml index 13d216344..d3dee04f8 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Bewitching (3) db335c.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Bewitching (3) db335c.yaml @@ -3,16 +3,16 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 94728 +CardID: 917401 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '947': + '9174': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Bianca Die Katz (0) 897a94.yaml b/unpacked/Bag All Player Cards 15bb07/Card Bianca Die Katz 897a94.yaml similarity index 86% rename from unpacked/Bag All Player Cards 15bb07/Card Bianca Die Katz (0) 897a94.yaml rename to unpacked/Bag All Player Cards 15bb07/Card Bianca Die Katz 897a94.yaml index 0a1a20b28..a9ad919d2 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Bianca Die Katz (0) 897a94.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Bianca Die Katz 897a94.yaml @@ -3,21 +3,21 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 94720 +CardID: 917354 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '947': + '9173': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/ NumHeight: 7 NumWidth: 10 Type: 0 UniqueBack: false -Description: Singing Your Songs +Description: Singing Your Song DragSelectable: true GMNotes: "{\n \"id\": \"10062\",\n \"type\": \"Asset\",\n \"slot\": \"Ally\",\n \ \"class\": \"Rogue\",\n \"cost\": 2,\n \"level\": 0,\n \"traits\": \"Ally. @@ -37,7 +37,7 @@ LuaScript: '' LuaScriptState: '' MeasureMovement: false Name: Card -Nickname: Bianca "Die Katz" (0) +Nickname: Bianca "Die Katz" SidewaysCard: false Snap: true Sticky: true diff --git a/unpacked/Bag All Player Cards 15bb07/Card Bianca Die Katz 992ccd.yaml b/unpacked/Bag All Player Cards 15bb07/Card Bianca Die Katz 992ccd.yaml index faa156016..b8a9fe69c 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Bianca Die Katz 992ccd.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Bianca Die Katz 992ccd.yaml @@ -3,21 +3,21 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 94721 +CardID: 917355 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '947': + '9173': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/ NumHeight: 7 NumWidth: 10 Type: 0 UniqueBack: false -Description: '' +Description: Enemy DragSelectable: true GMNotes: "{\n \"id\": \"10063\",\n \"type\": \"Enemy\",\n \"traits\": \"Humanoid. Criminal. Socialite.\",\n \"victory\": 0,\n \"cycle\": \"The Feast of Hemlock diff --git a/unpacked/Bag All Player Cards 15bb07/Card Bide Your Time (0) 24d3b3.yaml b/unpacked/Bag All Player Cards 15bb07/Card Bide Your Time 24d3b3.yaml similarity index 85% rename from unpacked/Bag All Player Cards 15bb07/Card Bide Your Time (0) 24d3b3.yaml rename to unpacked/Bag All Player Cards 15bb07/Card Bide Your Time 24d3b3.yaml index 592ea7349..4f101db29 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Bide Your Time (0) 24d3b3.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Bide Your Time 24d3b3.yaml @@ -3,16 +3,16 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 94755 +CardID: 917451 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '947': + '9174': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/ NumHeight: 7 NumWidth: 10 Type: 0 @@ -34,7 +34,7 @@ LuaScript: '' LuaScriptState: '' MeasureMovement: false Name: Card -Nickname: Bide Your Time (0) +Nickname: Bide Your Time SidewaysCard: false Snap: true Sticky: true diff --git a/unpacked/Bag All Player Cards 15bb07/Card Black Market (2) 20da53.yaml b/unpacked/Bag All Player Cards 15bb07/Card Black Market (2) 20da53.yaml index 53c958815..ce4a45e1b 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Black Market (2) 20da53.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Black Market (2) 20da53.yaml @@ -12,7 +12,7 @@ CustomDeck: '3790': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/CardCustom Blackmail File de456d.yaml b/unpacked/Bag All Player Cards 15bb07/Card Blackmail File de456d.yaml similarity index 84% rename from unpacked/Bag All Player Cards 15bb07/CardCustom Blackmail File de456d.yaml rename to unpacked/Bag All Player Cards 15bb07/Card Blackmail File de456d.yaml index c60667c31..500094670 100644 --- a/unpacked/Bag All Player Cards 15bb07/CardCustom Blackmail File de456d.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Blackmail File de456d.yaml @@ -3,18 +3,18 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 9400 +CardID: 917356 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '94': + '9173': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2195002645128569861/7143A7BF20E37A069E170A21D77C16C91D81374D/ - NumHeight: 1 - NumWidth: 1 + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/ + NumHeight: 7 + NumWidth: 10 Type: 0 UniqueBack: false Description: '' @@ -33,7 +33,7 @@ Locked: false LuaScript: '' LuaScriptState: '' MeasureMovement: false -Name: CardCustom +Name: Card Nickname: Blackmail File SidewaysCard: false Snap: true diff --git a/unpacked/Bag All Player Cards 15bb07/Card Blade of Yoth c61a83.yaml b/unpacked/Bag All Player Cards 15bb07/Card Blade of Yoth c61a83.yaml index 9da403822..318fecd60 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Blade of Yoth c61a83.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Blade of Yoth c61a83.yaml @@ -3,16 +3,16 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 94707 +CardID: 917328 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '947': + '9173': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Blessed Blade (4) 9401f4.yaml b/unpacked/Bag All Player Cards 15bb07/Card Blessed Blade (4) 9401f4.yaml index 208b23f66..e31212111 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Blessed Blade (4) 9401f4.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Blessed Blade (4) 9401f4.yaml @@ -3,16 +3,16 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 94705 +CardID: 917326 ColorDiffuse: b: 0.71324 g: 0.71324 r: 0.71324 CustomDeck: - '947': + '9173': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Blood Will Have Blood (2) e81f1e.yaml b/unpacked/Bag All Player Cards 15bb07/Card Blood Will Have Blood (2) e81f1e.yaml index 9ee958120..e7950b80b 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Blood Will Have Blood (2) e81f1e.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Blood Will Have Blood (2) e81f1e.yaml @@ -12,7 +12,7 @@ CustomDeck: '3789': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Blur (1) 5be76d.yaml b/unpacked/Bag All Player Cards 15bb07/Card Blur (1) 5be76d.yaml index 73a2cce61..92c4da83c 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Blur (1) 5be76d.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Blur (1) 5be76d.yaml @@ -3,7 +3,7 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 378947 +CardID: 378938 ColorDiffuse: b: 0.71324 g: 0.71324 @@ -12,7 +12,7 @@ CustomDeck: '3789': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Blur (4) 5ade28.yaml b/unpacked/Bag All Player Cards 15bb07/Card Blur (4) 5ade28.yaml index ddac27aca..3789cc91a 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Blur (4) 5ade28.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Blur (4) 5ade28.yaml @@ -3,7 +3,7 @@ AltLookAngle: y: 0 z: 0 Autoraise: true -CardID: 378949 +CardID: 378940 ColorDiffuse: b: 0.71324 g: 0.71324 @@ -12,7 +12,7 @@ CustomDeck: '3789': BackIsHidden: true BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/ NumHeight: 7 NumWidth: 10 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/Card Bob Jenkins 419b0c.yaml b/unpacked/Bag All Player Cards 15bb07/Card Bob Jenkins 419b0c.yaml index a89af910c..fd76d5e5f 100644 --- a/unpacked/Bag All Player Cards 15bb07/Card Bob Jenkins 419b0c.yaml +++ b/unpacked/Bag All Player Cards 15bb07/Card Bob Jenkins 419b0c.yaml @@ -11,8 +11,8 @@ ColorDiffuse: CustomDeck: '3795': BackIsHidden: true - BackURL: http://cloud-3.steamusercontent.com/ugc/1625226898126523297/2C981A8D79F76E3533ADD355F8AF406EA72B5162/ - FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126522542/E29FEBE196344F3DEE457BE957E9AF18310C6F39/ + BackURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578166/C21CC0E4ADE06C11419F36BAEDED0BDBFF8DE5E3/ + FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578395/F97B770FB90EA18B46F58614CCE0016406E3E777/ NumHeight: 2 NumWidth: 5 Type: 0 diff --git a/unpacked/Bag All Player Cards 15bb07/CardCustom Book of Living Myths c5fb1f.ttslua b/unpacked/Bag All Player Cards 15bb07/Card Book of Living Myths c5fb1f.ttslua similarity index 92% rename from unpacked/Bag All Player Cards 15bb07/CardCustom Book of Living Myths c5fb1f.ttslua rename to unpacked/Bag All Player Cards 15bb07/Card Book of Living Myths c5fb1f.ttslua index 53d5ca34f..51595cf49 100644 --- a/unpacked/Bag All Player Cards 15bb07/CardCustom Book of Living Myths c5fb1f.ttslua +++ b/unpacked/Bag All Player Cards 15bb07/Card Book of Living Myths c5fb1f.ttslua @@ -41,6 +41,9 @@ local __bundle_require, __bundle_loaded, __bundle_register, __bundle_modules = ( return require, loaded, register, modules end)(nil) +__bundle_register("__root", function(require, _LOADED, __bundle_register, __bundle_modules) +require("playercards/cards/BookofLivingMyths") +end) __bundle_register("chaosbag/ChaosBagApi", function(require, _LOADED, __bundle_register, __bundle_modules) do local ChaosBagApi = {} @@ -172,6 +175,116 @@ do return GUIDReferenceApi end end) +__bundle_register("playercards/cards/BookofLivingMyths", function(require, _LOADED, __bundle_register, __bundle_modules) +local chaosBagApi = require("chaosbag/ChaosBagApi") +local guidReferenceApi = require("core/GUIDReferenceApi") +local playmatApi = require("playermat/PlaymatApi") + +function onLoad(savedData) + self.addContextMenuItem("Enable Helper", createButtons) + if savedData ~= "" then + local loadedData = JSON.decode(savedData) + if loadedData.loopId then + createButtons() + end + end +end + +function deleteButtons() + self.clearContextMenu() + self.addContextMenuItem("Enable Helper", createButtons) + self.UI.setAttribute("inactives", "active", false) + self.UI.setAttribute("actives", "active", false) + if loopId then Wait.stop(loopId) end + loopId = nil + self.script_state = JSON.encode({ loopId = loopId }) +end + +-- create buttons and begin monitoring chaos bag for curse and bless tokens +function createButtons() + self.clearContextMenu() + self.addContextMenuItem("Clear Helper", deleteButtons) + self.UI.setAttribute("inactives", "active", true) + self.UI.setAttribute("actives", "active", true) + loopId = Wait.time(maybeUpdateButtonState, 1, -1) + self.script_state = JSON.encode({ loopId = loopId }) +end + +function resolveToken(player, _, tokenType) + local matColor + if player.color == "Black" then + matColor = playmatApi.getMatColorByPosition(self.getPosition()) + else + matColor = playmatApi.getMatColor(player.color) + end + + local mat = guidReferenceApi.getObjectByOwnerAndType(matColor, "Playermat") + chaosBagApi.drawChaosToken(mat, true, tokenType) +end + +-- count tokens in the bag and show appropriate buttons +function maybeUpdateButtonState() + local numInBag = getBlessCurseInBag() + local state = { Bless = false, Curse = false } + + if numInBag.Bless >= numInBag.Curse and numInBag.Bless > 0 then + state.Bless = true + end + + if numInBag.Curse >= numInBag.Bless and numInBag.Curse > 0 then + state.Curse = true + end + + setUiState(state) +end + +function getBlessCurseInBag() + local numInBag = { Bless = 0, Curse = 0 } + local chaosBag = chaosBagApi.findChaosBag() + + for _, v in ipairs(chaosBag.getObjects()) do + if v.name == "Bless" then + numInBag.Bless = numInBag.Bless + 1 + elseif v.name == "Curse" then + numInBag.Curse = numInBag.Curse + 1 + end + end + + return numInBag +end + +function setUiState(params) + -- set bless state + if params.Bless then + self.UI.show("Bless") + self.UI.hide("inactiveBless") + else + self.UI.show("inactiveBless") + self.UI.hide("Bless") + end + + -- set curse state + if params.Curse then + self.UI.show("Curse") + self.UI.hide("inactiveCurse") + else + self.UI.show("inactiveCurse") + self.UI.hide("Curse") + end +end + +function errorMessage() + local numInBag = getBlessCurseInBag() + + if numInBag.Bless == 0 and numInBag.Curse == 0 then + broadcastToAll("There are no Bless or Curse tokens in the chaos bag.", "Red") + elseif numInBag.Bless > numInBag.Curse then + broadcastToAll("There are more Bless tokens than Curse tokens in the chaos bag.", "Red") + else + broadcastToAll("There are more Curse tokens than Bless tokens in the chaos bag.", "Red") + end +end +end) __bundle_register("playermat/PlaymatApi", function(require, _LOADED, __bundle_register, __bundle_modules) do local PlaymatApi = {} @@ -520,113 +633,4 @@ do return SearchLib end end) -__bundle_register("__root", function(require, _LOADED, __bundle_register, __bundle_modules) -require("playercards/cards/BookofLivingMyths") -end) -__bundle_register("playercards/cards/BookofLivingMyths", function(require, _LOADED, __bundle_register, __bundle_modules) -local chaosBagApi = require("chaosbag/ChaosBagApi") -local guidReferenceApi = require("core/GUIDReferenceApi") -local playmatApi = require("playermat/PlaymatApi") - -function onSave() - return JSON.encode({ loopId = loopId }) -end - -function onLoad(savedData) - self.addContextMenuItem("Enable Helper", createButtons) - if savedData ~= "" then - local loadedData = JSON.decode(savedData) - if loadedData.loopId then - createButtons() - end - end -end - -function deleteButtons() - self.UI.setAttribute("inactives", "active", false) - self.UI.setAttribute("actives", "active", false) - self.clearContextMenu() - self.addContextMenuItem("Enable Helper", createButtons) - Wait.stop(loopId) - loopId = nil -end - --- Create buttons and begin monitoring chaos bag for curse and bless tokens -function createButtons() - self.clearContextMenu() - self.addContextMenuItem("Clear Helper", deleteButtons) - self.UI.setAttribute("inactives", "active", true) - self.UI.setAttribute("actives", "active", true) - self.UI.show("inactiveBless") - self.UI.show("inactiveCurse") - self.UI.hide("Bless") - self.UI.hide("Curse") - currentState = "Empty" - loopId = Wait.time(countBlessCurse, 1, -1) -end - -function resolveToken(_, _, tokenType) - local closestMatColor = playmatApi.getMatColorByPosition(self.getPosition()) - local mat = guidReferenceApi.getObjectByOwnerAndType(closestMatColor, "Playermat") - chaosBagApi.drawChaosToken(mat, true, tokenType) -end - --- count tokens in the bag and show appropriate buttons -function countBlessCurse() - local numInBag = { Bless = 0, Curse = 0 } - local chaosBag = chaosBagApi.findChaosBag() - local tokens = {} - for _, v in ipairs(chaosBag.getObjects()) do - if v.name == "Bless" then - numInBag.Bless = numInBag.Bless + 1 - elseif v.name == "Curse" then - numInBag.Curse = numInBag.Curse + 1 - end - end - - if numInBag.Bless > numInBag.Curse then - if currentState ~= "More Bless" then - self.UI.show("Bless") - self.UI.hide("inactiveBless") - self.UI.show("inactiveCurse") - self.UI.hide("Curse") - end - currentState = "More Bless" - elseif numInBag.Curse > numInBag.Bless then - if currentState ~= "More Curse" then - self.UI.show("Curse") - self.UI.hide("inactiveCurse") - self.UI.show("inactiveBless") - self.UI.hide("Bless") - end - currentState = "More Curse" - elseif numInBag.Curse == 0 then - if currentState ~= "Empty" then - self.UI.show("inactiveBless") - self.UI.hide("Bless") - self.UI.show("inactiveCurse") - self.UI.hide("Curse") - end - currentState = "Empty" - else - if currentState ~= "Equal" then - self.UI.show("Bless") - self.UI.hide("inactiveBless") - self.UI.show("Curse") - self.UI.hide("inactiveCurse") - end - currentState = "Equal" - end -end - -function errorMessage () - if currentState == "Empty" then - broadcastToAll("There are no Bless or Curse tokens in the chaos bag.","Red") - elseif currentState == "More Bless" then - broadcastToAll("There are more Bless tokens than Curse tokens in the chaos bag.","Red") - else - broadcastToAll("There are more Curse tokens than Bless tokens in the chaos bag.","Red") - end -end -end) return __bundle_require("__root") \ No newline at end of file diff --git a/unpacked/Bag All Player Cards 15bb07/CardCustom Book of Living Myths c5fb1f.xml b/unpacked/Bag All Player Cards 15bb07/Card Book of Living Myths c5fb1f.xml similarity index 52% rename from unpacked/Bag All Player Cards 15bb07/CardCustom Book of Living Myths c5fb1f.xml rename to unpacked/Bag All Player Cards 15bb07/Card Book of Living Myths c5fb1f.xml index acdc975e2..734ed66a8 100644 --- a/unpacked/Bag All Player Cards 15bb07/CardCustom Book of Living Myths c5fb1f.xml +++ b/unpacked/Bag All Player Cards 15bb07/Card Book of Living Myths c5fb1f.xml @@ -4,10 +4,20 @@ font="font_teutonic-arkham" fontSize="300" iconWidth="400" - iconAlignment="Right"/> + iconAlignment="Right" + text="Resolve"/> + + + + +