From 101012e6c9a18fcf25ec2992edd3001d270e37a0 Mon Sep 17 00:00:00 2001 From: Chr1Z93 Date: Mon, 25 Mar 2024 23:31:50 +0100 Subject: [PATCH] updated clean up helper --- src/accessories/CleanUpHelper.ttslua | 50 +++++++++++++++++----------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/src/accessories/CleanUpHelper.ttslua b/src/accessories/CleanUpHelper.ttslua index bbfd1c04..9ab49401 100644 --- a/src/accessories/CleanUpHelper.ttslua +++ b/src/accessories/CleanUpHelper.ttslua @@ -1,7 +1,7 @@ ---[[ Cleans up the table for the next scenario in a campaign: -- sets counters to default values (resources and doom) or trauma values (health and sanity, if not disabled) from campaign log -- puts everything on playmats and hands into respective trashcans -- use the IGNORE_TAG to exclude objects from tidying (default: "CleanUpHelper_Ignore")]] +-- Cleans up the table for the next scenario in a campaign: +-- sets counters to default values (resources and doom) or trauma values (health and sanity, if not disabled) from campaign log +-- puts everything on playmats and hands into respective trashcans +-- use the IGNORE_TAG to exclude objects from tidying (default: "CleanUpHelper_Ignore") local blessCurseManagerApi = require("chaosbag/BlessCurseManagerApi") local chaosBagApi = require("chaosbag/ChaosBagApi") @@ -30,7 +30,6 @@ options["removeDrawnLines"] = false local buttonParameters = {} buttonParameters.function_owner = self - --------------------------------------------------------- -- option loading and GUI setup --------------------------------------------------------- @@ -114,7 +113,7 @@ function cleanUp(_, color) ignoreCustomDataHelper() getTrauma() - -- delay to account for potential state change + -- delay to account for potential state change of campaign log Wait.time(updateCounters, 0.2) resetDoomCounter() @@ -255,7 +254,7 @@ function tidyPlayareaCoroutine() for _, obj in ipairs(playAreaZone.getObjects()) do -- ignore these elements if obj.hasTag(IGNORE_TAG) == false - and obj.locked == false + and obj.locked == false and obj.interactable == true then coroutine.yield(0) trash.putObject(obj) @@ -279,7 +278,7 @@ function tidyPlayerMatCoroutine() -- get respective trash local trash = guidReferenceApi.getObjectByOwnerAndType(COLORS[i], "Trash") if trash == nil then - printToAll("Trashcan for " .. COLORS[i] .. " playmat could not be found!", "Red") + printToAll("Trashcan for " .. COLORS[i] .. " playmat could not be found! Skipping this playermat.", "Yellow") goto continue end @@ -296,28 +295,41 @@ function tidyPlayerMatCoroutine() if obj.hasTag(IGNORE_TAG) == false and obj.getDescription() ~= "Action Token" and obj.hasTag("chaosBag") == false - and obj.locked == false + and obj.locked == false and obj.interactable == true then coroutine.yield(0) trash.putObject(obj) - -- flip action tokens back to ready - elseif obj.getDescription() == "Action Token" and obj.is_face_down then - obj.flip() - end - end + -- action token handling + elseif obj.getDescription() == "Action Token" then + -- move the small action token to the proper position + if obj.getScale().x < 0.4 then + local pos = playmatApi.transformLocalPosition(Vector(-0.865, 0.1, -0.28), COLORS[i]) + obj.setPosition(pos) + end - -- reset "activeInvestigatorId" - if i < 5 then - local playermat = guidReferenceApi.getObjectByOwnerAndType(COLORS[i], "Playermat") - if playermat then - playermat.setVar("activeInvestigatorId", "00000") + -- flip action tokens back to ready + if obj.is_face_down then + obj.flip() + end + + -- reset action token state + local stateId = obj.getStateId() + if stateId ~= -1 and stateId ~= 6 then + obj.setState(6) + end end end end ::continue:: end + -- reset "activeInvestigatorId" + local playerMats = guidReferenceApi.getObjectsByType("Playermat") + for _, mat in pairs(playerMats) do + mat.setVar("activeInvestigatorId", "00000") + end + -- reset spawned data tokenSpawnTrackerApi.resetAll() local datahelper = guidReferenceApi.getObjectByOwnerAndType("Mythos", "DataHelper")