diff --git a/src/accessories/CleanUpHelper.ttslua b/src/accessories/CleanUpHelper.ttslua index 2b1711fa..d719d488 100644 --- a/src/accessories/CleanUpHelper.ttslua +++ b/src/accessories/CleanUpHelper.ttslua @@ -6,6 +6,7 @@ Cleans up the table for the next scenario in a campaign: local tokenSpawnTrackerApi = require("core/token/TokenSpawnTrackerApi") local soundCubeApi = require("core/SoundCubeApi") local playmatApi = require("playermat/PlaymatApi") +local blessCurseManagerApi = require("chaosbag/BlessCurseManagerApi") -- these objects will be ignored local IGNORE_GUIDS = { @@ -168,10 +169,11 @@ function cleanUp(_, color) updateCounters(CLUE_CLICKER_GUIDS, 0, "Clue clickers") resetSkillTrackers() resetDoomCounter() - removeBlessCurse(color) + blessCurseManagerApi.removeAll(color) removeLines() discardHands() tokenSpawnTrackerApi.resetAll() + Global.call("releaseAllSealedTokens", color) printToAll("Tidying main play area...", "White") startLuaCoroutine(self, "tidyPlayareaCoroutine") @@ -180,6 +182,7 @@ end --------------------------------------------------------- -- modular functions, called by other functions --------------------------------------------------------- + function updateCounters(tableOfGUIDs, tableOfNewValues, info) if tonumber(tableOfNewValues) then local value = tableOfNewValues @@ -266,17 +269,6 @@ function getTrauma() end end --- get rid of bless/curse tokens via bless/curse manager -function removeBlessCurse(color) - local BlessCurseManager = getObjectFromGUID("5933fb") - - if BlessCurseManager ~= nil then - BlessCurseManager.call("doRemove", color) - else - printToAll("Bless / Curse manager could not be found and thus bless/curse tokens were skipped.", "Yellow") - end -end - -- remove drawn lines function removeLines() if options["removeDrawnLines"] then diff --git a/src/chaosbag/BlessCurseManager.ttslua b/src/chaosbag/BlessCurseManager.ttslua index faf3258a..ce9eafc3 100644 --- a/src/chaosbag/BlessCurseManager.ttslua +++ b/src/chaosbag/BlessCurseManager.ttslua @@ -63,14 +63,21 @@ function onLoad(saved_state) self.addContextMenuItem("Remove all", doRemove) self.addContextMenuItem("Reset", doReset) - -- initializing tables + -- initializing tables + initializeState() + broadcastCount("Curse") + broadcastCount("Bless") +end + +function resetTables() numInPlay = { Bless = 0, Curse = 0 } tokensTaken = { Bless = {}, Curse = {} } sealedTokens = {} - Wait.time(initializeState, 1) end function initializeState() + resetTables() + -- count tokens in the bag local chaosbag = Global.call("findChaosBag") local tokens = {} @@ -95,9 +102,6 @@ function initializeState() end end end - - broadcastCount("Curse") - broadcastCount("Bless") end function broadcastCount(token) @@ -133,15 +137,15 @@ function doRemove(color) broadcastToColor("Removed " .. removeTakenTokens("Bless") .. " Bless and " .. removeTakenTokens("Curse") .. " Curse tokens from play.", color, "White") - doReset(color) + resetTables() + tokenArrangerApi.layout() end -- context menu function 2 function doReset(color) - playerColor = color - numInPlay = { Bless = 0, Curse = 0 } - tokensTaken = { Bless = {}, Curse = {} } initializeState() + broadcastCount("Curse") + broadcastCount("Bless") tokenArrangerApi.layout() end diff --git a/src/chaosbag/BlessCurseManagerApi.ttslua b/src/chaosbag/BlessCurseManagerApi.ttslua index 3e35b801..694e98b2 100644 --- a/src/chaosbag/BlessCurseManagerApi.ttslua +++ b/src/chaosbag/BlessCurseManagerApi.ttslua @@ -26,6 +26,12 @@ do getObjectFromGUID(MANAGER_GUID).call("broadcastStatus", playerColor) end + -- removes all bless / curse tokens from the chaos bag and play + ---@param playerColor String Color of the player to show the broadcast to + BlessCurseManagerApi.removeAll = function(playerColor) + getObjectFromGUID(MANAGER_GUID).call("doRemove", playerColor) + end + -- adds Wendy's menu to the hovered card (allows sealing of tokens) ---@param color String Color of the player to show the broadcast to BlessCurseManagerApi.addWendysMenu = function(playerColor, hoveredObject) diff --git a/src/core/Global.ttslua b/src/core/Global.ttslua index 020abc1a..68c413de 100644 --- a/src/core/Global.ttslua +++ b/src/core/Global.ttslua @@ -39,6 +39,7 @@ local mythosAreaApi = require("core/MythosAreaApi") local tokenArrangerApi = require("accessories/TokenArrangerApi") local blessCurseManagerApi = require("chaosbag/BlessCurseManagerApi") local navigationOverlayApi = require("core/NavigationOverlayApi") +local tokenChecker = require("core/token/TokenChecker") -- online functionality related variables local MOD_VERSION = "3.1.0" @@ -645,6 +646,14 @@ function emptyChaosBag() end end +-- returns all sealed tokens on cards to the chaos bag +function releaseAllSealedTokens(playerColor) + local chaosbag = findChaosBag() + for _, obj in ipairs(getObjectsWithTag("CardThatSeals")) do + obj.call("releaseAllTokens", playerColor) + end +end + --------------------------------------------------------- -- Content Importing and XML functions --------------------------------------------------------- diff --git a/src/playercards/CardsThatSealTokens.ttslua b/src/playercards/CardsThatSealTokens.ttslua index cbcc0a2b..03c09c3a 100644 --- a/src/playercards/CardsThatSealTokens.ttslua +++ b/src/playercards/CardsThatSealTokens.ttslua @@ -80,6 +80,7 @@ function onLoad(savedData) sealedTokens = JSON.decode(savedData) or {} ID_URL_MAP = Global.getTable("ID_URL_MAP") generateContextMenu() + self.addTag("CardThatSeals") end -- builds the context menu