diff --git a/config.json b/config.json index a8a5ceb8..756b3ec1 100644 --- a/config.json +++ b/config.json @@ -177,7 +177,7 @@ "Decoration-Ammo.d35ee9", "VictoryDisplay.6ccd6d", "BuyersGuide.b5ecc1", - "OptionPanelSource.830bd0", + "ObjectSourceBag.830bd0", "SoundCube.3c988f", "TokenSpawningReference.f8b3a7", "3DText.d628cc", diff --git a/objects/Fan-MadeAccessories.aa8b38.json b/objects/Fan-MadeAccessories.aa8b38.json index 042ee175..681a130d 100644 --- a/objects/Fan-MadeAccessories.aa8b38.json +++ b/objects/Fan-MadeAccessories.aa8b38.json @@ -20,8 +20,7 @@ "SecretObjectivesUltimatums.b2077d", "UnderworldMarketHelper.3650ea", "Auto-failCounter.a9a321", - "ElderSignCounter.e62cb5", - "AdditionalVictoryPoints.958bc0" + "ElderSignCounter.e62cb5" ], "ContainedObjects_path": "Fan-MadeAccessories.aa8b38", "CustomMesh": { diff --git a/objects/Fan-MadeAccessories.aa8b38/Auto-failCounter.a9a321.json b/objects/Fan-MadeAccessories.aa8b38/Auto-failCounter.a9a321.json index 5a678902..4c688911 100644 --- a/objects/Fan-MadeAccessories.aa8b38/Auto-failCounter.a9a321.json +++ b/objects/Fan-MadeAccessories.aa8b38/Auto-failCounter.a9a321.json @@ -6,9 +6,9 @@ }, "Autoraise": true, "ColorDiffuse": { - "b": 1, - "g": 1, - "r": 1 + "b": 0, + "g": 0, + "r": 0 }, "CustomImage": { "CustomTile": { @@ -49,9 +49,9 @@ "rotX": 0, "rotY": 270, "rotZ": 0, - "scaleX": 0.81, + "scaleX": 1.5, "scaleY": 1, - "scaleZ": 0.81 + "scaleZ": 1.5 }, "Value": 0, "XmlUI": "" diff --git a/objects/Fan-MadeAccessories.aa8b38/ElderSignCounter.e62cb5.json b/objects/Fan-MadeAccessories.aa8b38/ElderSignCounter.e62cb5.json index 4e03720e..9d55ef18 100644 --- a/objects/Fan-MadeAccessories.aa8b38/ElderSignCounter.e62cb5.json +++ b/objects/Fan-MadeAccessories.aa8b38/ElderSignCounter.e62cb5.json @@ -6,9 +6,9 @@ }, "Autoraise": true, "ColorDiffuse": { - "b": 1, - "g": 1, - "r": 1 + "b": 0, + "g": 0, + "r": 0 }, "CustomImage": { "CustomTile": { @@ -49,9 +49,9 @@ "rotX": 0, "rotY": 270, "rotZ": 0, - "scaleX": 0.81, + "scaleX": 1.5, "scaleY": 1, - "scaleZ": 0.81 + "scaleZ": 1.5 }, "Value": 0, "XmlUI": "" diff --git a/objects/OptionPanelSource.830bd0.json b/objects/ObjectSourceBag.830bd0.json similarity index 82% rename from objects/OptionPanelSource.830bd0.json rename to objects/ObjectSourceBag.830bd0.json index 743e1af4..397d8dc8 100644 --- a/objects/OptionPanelSource.830bd0.json +++ b/objects/ObjectSourceBag.830bd0.json @@ -14,6 +14,7 @@ "r": 0.70588 }, "ContainedObjects_order": [ + "AdditionalVictoryPoints.958bc0", "CYOACampaignGuides.e87ea2", "AttachmentHelper.7f4976", "SearchAssistant.17aed0", @@ -22,8 +23,8 @@ "DisplacementTool.0f1374", "CleanUpHelper.26cf4b" ], - "ContainedObjects_path": "OptionPanelSource.830bd0", - "Description": "Contains the objects that are spawnable via option panel", + "ContainedObjects_path": "ObjectSourceBag.830bd0", + "Description": "Contains objects that are spawnable via scripting like the option panel", "DragSelectable": true, "GMNotes": "", "GUID": "830bd0", @@ -40,7 +41,7 @@ "MeasureMovement": false, "MeshIndex": -1, "Name": "Bag", - "Nickname": "OptionPanel Source", + "Nickname": "Object Source Bag", "Snap": true, "Sticky": true, "Tooltip": true, diff --git a/objects/Fan-MadeAccessories.aa8b38/AdditionalVictoryPoints.958bc0.json b/objects/ObjectSourceBag.830bd0/AdditionalVictoryPoints.958bc0.json similarity index 90% rename from objects/Fan-MadeAccessories.aa8b38/AdditionalVictoryPoints.958bc0.json rename to objects/ObjectSourceBag.830bd0/AdditionalVictoryPoints.958bc0.json index ade1c77f..bfe037d1 100644 --- a/objects/Fan-MadeAccessories.aa8b38/AdditionalVictoryPoints.958bc0.json +++ b/objects/ObjectSourceBag.830bd0/AdditionalVictoryPoints.958bc0.json @@ -33,8 +33,8 @@ "IgnoreFoW": false, "LayoutGroupSortIndex": 0, "Locked": false, + "LuaScript": "require(\"accessories/AdditionalVictoryPointsCard\")", "LuaScriptState": "{\"notes\":\"Click to type\",\"vp\":1}", - "LuaScript_path": "Fan-MadeAccessories.aa8b38/AdditionalVictoryPoints.958bc0.ttslua", "MeasureMovement": false, "Name": "CardCustom", "Nickname": "Additional Victory Points", @@ -46,9 +46,9 @@ ], "Tooltip": true, "Transform": { - "posX": -61.591, - "posY": 4.834, - "posZ": -74.678, + "posX": -4, + "posY": 2.5, + "posZ": 41, "rotX": 0, "rotY": 270, "rotZ": 0, diff --git a/objects/OptionPanelSource.830bd0/AttachmentHelper.7f4976.json b/objects/ObjectSourceBag.830bd0/AttachmentHelper.7f4976.json similarity index 100% rename from objects/OptionPanelSource.830bd0/AttachmentHelper.7f4976.json rename to objects/ObjectSourceBag.830bd0/AttachmentHelper.7f4976.json diff --git a/objects/OptionPanelSource.830bd0/AttachmentHelper.7f4976/AttachmentHelper.d45664.json b/objects/ObjectSourceBag.830bd0/AttachmentHelper.7f4976/AttachmentHelper.d45664.json similarity index 100% rename from objects/OptionPanelSource.830bd0/AttachmentHelper.7f4976/AttachmentHelper.d45664.json rename to objects/ObjectSourceBag.830bd0/AttachmentHelper.7f4976/AttachmentHelper.d45664.json diff --git a/objects/OptionPanelSource.830bd0/CYOACampaignGuides.e87ea2.json b/objects/ObjectSourceBag.830bd0/CYOACampaignGuides.e87ea2.json similarity index 100% rename from objects/OptionPanelSource.830bd0/CYOACampaignGuides.e87ea2.json rename to objects/ObjectSourceBag.830bd0/CYOACampaignGuides.e87ea2.json diff --git a/objects/OptionPanelSource.830bd0/CleanUpHelper.26cf4b.json b/objects/ObjectSourceBag.830bd0/CleanUpHelper.26cf4b.json similarity index 100% rename from objects/OptionPanelSource.830bd0/CleanUpHelper.26cf4b.json rename to objects/ObjectSourceBag.830bd0/CleanUpHelper.26cf4b.json diff --git a/objects/OptionPanelSource.830bd0/DisplacementTool.0f1374.json b/objects/ObjectSourceBag.830bd0/DisplacementTool.0f1374.json similarity index 100% rename from objects/OptionPanelSource.830bd0/DisplacementTool.0f1374.json rename to objects/ObjectSourceBag.830bd0/DisplacementTool.0f1374.json diff --git a/objects/OptionPanelSource.830bd0/HandHelper.450688.json b/objects/ObjectSourceBag.830bd0/HandHelper.450688.json similarity index 100% rename from objects/OptionPanelSource.830bd0/HandHelper.450688.json rename to objects/ObjectSourceBag.830bd0/HandHelper.450688.json diff --git a/objects/OptionPanelSource.830bd0/SearchAssistant.17aed0.json b/objects/ObjectSourceBag.830bd0/SearchAssistant.17aed0.json similarity index 100% rename from objects/OptionPanelSource.830bd0/SearchAssistant.17aed0.json rename to objects/ObjectSourceBag.830bd0/SearchAssistant.17aed0.json diff --git a/objects/OptionPanelSource.830bd0/Subject5U-21Helper.1335e8.json b/objects/ObjectSourceBag.830bd0/Subject5U-21Helper.1335e8.json similarity index 100% rename from objects/OptionPanelSource.830bd0/Subject5U-21Helper.1335e8.json rename to objects/ObjectSourceBag.830bd0/Subject5U-21Helper.1335e8.json diff --git a/objects/Search-A-Card.24051a.json b/objects/Search-A-Card.24051a.json index bfb882d5..b154bbaa 100644 --- a/objects/Search-A-Card.24051a.json +++ b/objects/Search-A-Card.24051a.json @@ -33,7 +33,7 @@ "IgnoreFoW": false, "LayoutGroupSortIndex": 0, "Locked": true, - "LuaScript": "require(\"playercards/CardSearch\")", + "LuaScript": "require(\"playercards/Search-A-Card\")", "LuaScriptState": "[true,false,\"\"]", "MeasureMovement": false, "Name": "Custom_Tile", @@ -48,9 +48,9 @@ "rotX": 0, "rotY": 270, "rotZ": 0, - "scaleX": 4, + "scaleX": 4.5, "scaleY": 1, - "scaleZ": 4 + "scaleZ": 4.5 }, "Value": 0, "XmlUI": "" diff --git a/objects/Fan-MadeAccessories.aa8b38/AdditionalVictoryPoints.958bc0.ttslua b/src/accessories/AdditionalVictoryPointsCard.ttslua similarity index 98% rename from objects/Fan-MadeAccessories.aa8b38/AdditionalVictoryPoints.958bc0.ttslua rename to src/accessories/AdditionalVictoryPointsCard.ttslua index 264bbdc3..dfe99353 100644 --- a/objects/Fan-MadeAccessories.aa8b38/AdditionalVictoryPoints.958bc0.ttslua +++ b/src/accessories/AdditionalVictoryPointsCard.ttslua @@ -1,4 +1,3 @@ --- Additional Victory Point Card local victoryDisplayApi = require("core/VictoryDisplayApi") local MIN_VALUE = -10 diff --git a/src/core/DoomCounter.ttslua b/src/core/DoomCounter.ttslua index 25cc836e..3d047b81 100644 --- a/src/core/DoomCounter.ttslua +++ b/src/core/DoomCounter.ttslua @@ -90,6 +90,7 @@ function broadcastDoom(val) local doomInPlayCounter = guidReferenceApi.getObjectByOwnerAndType("Mythos", "DoomInPlayCounter") if doomInPlayCounter and md.subtractDoomInPlay then doomInPlayCounter.call("toggleSubtractDoom", true) + printToAll("Right-click the small 'Doom in Play' counter and select 'Toggle Doom Mode' to change this.") end local doomInPlay = doomInPlayCounter and doomInPlayCounter.call("getDoomCount") or 0 local totalDoom = val + doomInPlay diff --git a/src/core/GUIDReferenceHandler.ttslua b/src/core/GUIDReferenceHandler.ttslua index a273cf3b..363b22f7 100644 --- a/src/core/GUIDReferenceHandler.ttslua +++ b/src/core/GUIDReferenceHandler.ttslua @@ -75,7 +75,7 @@ local GuidReferences = { MasterClueCounter = "4a3aa4", MythosArea = "9f334f", NavigationOverlayHandler = "797ede", - OptionPanelSource = "830bd0", + ObjectSourceBag = "830bd0", PlaceholderBoxDummy = "a93466", PlayArea = "721ba2", PlayAreaImageSelector = "b7b45b", diff --git a/src/core/GenericCounter.ttslua b/src/core/GenericCounter.ttslua index 78e6d0ca..baabb4c4 100644 --- a/src/core/GenericCounter.ttslua +++ b/src/core/GenericCounter.ttslua @@ -16,10 +16,10 @@ function onLoad(savedData) -- set position of label depending on object if tokenType == "damage" then position = { 0.1, -0.07, 0.1 } - rotation = { 180, 180, 0} + rotation = { 180, 180, 0 } elseif tokenType == "horror" then position = { -0.025, -0.07, 0.025 } - rotation = { 180, 180, 0} + rotation = { 180, 180, 0 } elseif tokenType == "resource" or tokenType == "resourceCounter" then position = { 0, 0.06, 0.1 } elseif tokenType == "ElderSignCounter" or tokenType == "AutofailCounter" then diff --git a/src/core/Global.ttslua b/src/core/Global.ttslua index 316a2220..e184d82b 100644 --- a/src/core/Global.ttslua +++ b/src/core/Global.ttslua @@ -1722,7 +1722,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", "ObjectSourceBag") -- error handling for missing sourceBag if not sourceBag then diff --git a/src/core/VictoryDisplay.ttslua b/src/core/VictoryDisplay.ttslua index 4057fca6..49688c8c 100644 --- a/src/core/VictoryDisplay.ttslua +++ b/src/core/VictoryDisplay.ttslua @@ -54,6 +54,14 @@ function onLoad() buttonParameters.position.x = 1.5 self.createButton(buttonParameters) + -- index 5: spawn additional VP card button + buttonParameters.label = "+" + buttonParameters.click_function = "spawnAdditionalVP" + buttonParameters.tooltip = "Spawn a card to track additional earned VP" + buttonParameters.color = { 86 / 255, 90 / 255, 233 / 255 } + buttonParameters.position.x = -1.82 + self.createButton(buttonParameters) + -- update the display label once Wait.time(updateCount, 1) end @@ -200,7 +208,8 @@ end function highlightMissingData() self.editButton({ index = 3, - tooltip = (highlightMissing and "Enable" or "Disable") .. " highlighting of cards without metadata (VP on these is not counted)." }) + tooltip = (highlightMissing and "En" or "Dis") .. "able highlighting of cards without metadata (VP on these is not counted)." + }) for _, obj in pairs(missingData) do if obj ~= nil then if highlightMissing then @@ -233,6 +242,16 @@ function highlightCountedVP() highlightCounted = not highlightCounted end +function spawnAdditionalVP() + local sourceBag = guidReferenceApi.getObjectByOwnerAndType("Mythos", "ObjectSourceBag") + for _, objData in ipairs(sourceBag.getData().ContainedObjects) do + if objData["Nickname"] == "Additional Victory Points" then + placeCard(spawnObjectData({ data = objData })) + return + end + end +end + -- places the provided card in the first empty spot function placeCard(card) local name = card.getName() or "Unnamed card" diff --git a/src/playercards/CardSearch.ttslua b/src/playercards/Search-A-Card.ttslua similarity index 89% rename from src/playercards/CardSearch.ttslua rename to src/playercards/Search-A-Card.ttslua index 2aca432e..4384a600 100644 --- a/src/playercards/CardSearch.ttslua +++ b/src/playercards/Search-A-Card.ttslua @@ -11,15 +11,15 @@ BUTTON_LABELS["search"][true] = "Name equals search term" BUTTON_LABELS["search"][false] = "Name contains search term" local inputParameters = {} -inputParameters.label = "Click to enter card name" +inputParameters.label = "Enter name / ID" inputParameters.input_function = "input_func" inputParameters.function_owner = self inputParameters.alignment = 2 -inputParameters.position = { x = 0, y = 0.1, z = -0.62 } -inputParameters.width = 3750 -inputParameters.height = 380 -inputParameters.font_size = 350 -inputParameters.scale = { 0.1, 1, 0.1 } +inputParameters.position = { x = 0, y = 0.1, z = -0.6 } +inputParameters.width = 3500 +inputParameters.height = 450 +inputParameters.font_size = 400 +inputParameters.scale = { 0.12, 1, 0.12 } inputParameters.color = { 0.9, 0.7, 0.5 } inputParameters.font_color = { 0, 0, 0 } @@ -103,11 +103,13 @@ function startSearch() return end - -- if the search string is a number, assume it's an ID and spawn the card directly - if tonumber(inputParameters.value) then + -- if the search string doesn't contain whitespace, attempt to treat it as ID + if not string.find(inputParameters.value, "%s") then local singleCard = allCardsBagApi.getCardById(inputParameters.value) - spawnCardList({ singleCard }) - return + if singleCard ~= nil then + spawnCardList({ singleCard }) + return + end end -- search all objects in bag diff --git a/src/playermat/Playermat.ttslua b/src/playermat/Playermat.ttslua index 34f22882..d4730b9a 100644 --- a/src/playermat/Playermat.ttslua +++ b/src/playermat/Playermat.ttslua @@ -1373,7 +1373,7 @@ function newInvestigatorCallback(newId) elseif newId == "89001" then -- Subject 5U-21 local pos = zones.getZonePosition(playerColor, "BelowSetAside") local rot = self.getRotation() - local sourceBag = guidReferenceApi.getObjectByOwnerAndType("Mythos", "OptionPanelSource") + local sourceBag = guidReferenceApi.getObjectByOwnerAndType("Mythos", "ObjectSourceBag") for _, objData in ipairs(sourceBag.getData().ContainedObjects) do if objData["Nickname"] == "Subject 5U-21 Helper" then local spawnedObj = spawnObjectData({ data = objData, position = pos, rotation = rot }) @@ -1447,6 +1447,7 @@ function updateTexture(overrideName) Wait.frames(function() for _, obj in ipairs(objectsToUnlock) do obj.setLock(false) + obj.resting = true end end, 5) end, function() return reloadedMat.loading_custom == false end) diff --git a/xml/Global/OptionPanel.xml b/xml/Global/OptionPanel.xml index 48960103..a68f5d49 100644 --- a/xml/Global/OptionPanel.xml +++ b/xml/Global/OptionPanel.xml @@ -353,12 +353,12 @@ - + - FAN-MADE ACCESSORIES + ACCESSORIES