From a9926feea3486cf33931288315e1184daf995998 Mon Sep 17 00:00:00 2001 From: maple Date: Sun, 7 Jun 2026 23:39:58 +0900 Subject: [PATCH] Freeze monsters for turn combat --- RootDesk/MyDesk/SlayDeckController.codeblock | 40 +++++++++++++++++++- tools/gen-slaydeck.mjs | 34 +++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) diff --git a/RootDesk/MyDesk/SlayDeckController.codeblock b/RootDesk/MyDesk/SlayDeckController.codeblock index eaaa7b5..0ee9ea3 100644 --- a/RootDesk/MyDesk/SlayDeckController.codeblock +++ b/RootDesk/MyDesk/SlayDeckController.codeblock @@ -148,7 +148,7 @@ "Name": null }, "Arguments": [], - "Code": "self:SetEntityEnabled(\"/ui/DefaultGroup/MainMenu\", false)\nself:SetEntityEnabled(\"/ui/DefaultGroup/CardHand\", true)\nself:SetEntityEnabled(\"/ui/DefaultGroup/DeckHud\", true)\nself:StartCombat()", + "Code": "self:SetEntityEnabled(\"/ui/DefaultGroup/MainMenu\", false)\nself:SetEntityEnabled(\"/ui/DefaultGroup/CardHand\", true)\nself:SetEntityEnabled(\"/ui/DefaultGroup/DeckHud\", true)\nself:ConfigureTurnBasedMonsters()\nself:StartCombat()", "Scope": 2, "ExecSpace": 6, "Attributes": [], @@ -169,6 +169,44 @@ "Attributes": [], "Name": "StartCombat" }, + { + "Return": { + "Type": "void", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [], + "Code": "for mapIndex = 1, 11 do\n\tlocal mapName = \"map\" .. string.format(\"%02d\", mapIndex)\n\tfor i = 1, 6 do\n\t\tself:ConfigureMonsterForTurnCombat(_EntityService:GetEntityByPath(\"/maps/\" .. mapName .. \"/Monster\" .. tostring(i)))\n\tend\n\tself:ConfigureMonsterForTurnCombat(_EntityService:GetEntityByPath(\"/maps/\" .. mapName .. \"/StaticMonsterTemplate\"))\n\tself:ConfigureMonsterForTurnCombat(_EntityService:GetEntityByPath(\"/maps/\" .. mapName .. \"/MoveMonsterTemplate\"))\n\tself:ConfigureMonsterForTurnCombat(_EntityService:GetEntityByPath(\"/maps/\" .. mapName .. \"/ChaseMonsterTemplate\"))\n\tself:ConfigureMonsterForTurnCombat(_EntityService:GetEntityByPath(\"/maps/\" .. mapName .. \"/monster-43\"))\nend", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "ConfigureTurnBasedMonsters" + }, + { + "Return": { + "Type": "void", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": null + }, + "Arguments": [ + { + "Type": "Entity", + "DefaultValue": null, + "SyncDirection": 0, + "Attributes": [], + "Name": "monster" + } + ], + "Code": "if monster == nil then\n\treturn\nend\nif monster.AIWanderComponent ~= nil then\n\tmonster.AIWanderComponent.Enable = false\nend\nif monster.AIChaseComponent ~= nil then\n\tmonster.AIChaseComponent.Enable = false\nend\nif monster.MovementComponent ~= nil then\n\tmonster.MovementComponent.Enable = false\nend\nif monster.RigidbodyComponent ~= nil then\n\tmonster.RigidbodyComponent.MoveVelocity = Vector2.zero\n\tmonster.RigidbodyComponent.RealMoveVelocity = Vector2.zero\nend\nif monster.TransformComponent ~= nil then\n\tlocal scale = monster.TransformComponent.Scale\n\tmonster.TransformComponent.Scale = Vector3(-math.abs(scale.x), math.abs(scale.y), scale.z)\nend\nif monster.StateComponent ~= nil then\n\tmonster.StateComponent:ChangeState(\"IDLE\")\nend", + "Scope": 2, + "ExecSpace": 6, + "Attributes": [], + "Name": "ConfigureMonsterForTurnCombat" + }, { "Return": { "Type": "void", diff --git a/tools/gen-slaydeck.mjs b/tools/gen-slaydeck.mjs index a00ceca..de8bde0 100644 --- a/tools/gen-slaydeck.mjs +++ b/tools/gen-slaydeck.mjs @@ -467,6 +467,7 @@ self.NewGameHandler = buttonEntity:ConnectEvent(ButtonClickEvent, self.StartNewG method('StartNewGame', `self:SetEntityEnabled("/ui/DefaultGroup/MainMenu", false) self:SetEntityEnabled("/ui/DefaultGroup/CardHand", true) self:SetEntityEnabled("/ui/DefaultGroup/DeckHud", true) +self:ConfigureTurnBasedMonsters() self:StartCombat()`), method('StartCombat', `self.MaxEnergy = 3 self.Turn = 0 @@ -476,6 +477,39 @@ self.DrawPile = { "Strike", "Strike", "Strike", "Strike", "Strike", "Defend", "D self:Shuffle(self.DrawPile) self:BindButtons() self:StartPlayerTurn()`), + method('ConfigureTurnBasedMonsters', `for mapIndex = 1, 11 do +\tlocal mapName = "map" .. string.format("%02d", mapIndex) +\tfor i = 1, 6 do +\t\tself:ConfigureMonsterForTurnCombat(_EntityService:GetEntityByPath("/maps/" .. mapName .. "/Monster" .. tostring(i))) +\tend +\tself:ConfigureMonsterForTurnCombat(_EntityService:GetEntityByPath("/maps/" .. mapName .. "/StaticMonsterTemplate")) +\tself:ConfigureMonsterForTurnCombat(_EntityService:GetEntityByPath("/maps/" .. mapName .. "/MoveMonsterTemplate")) +\tself:ConfigureMonsterForTurnCombat(_EntityService:GetEntityByPath("/maps/" .. mapName .. "/ChaseMonsterTemplate")) +\tself:ConfigureMonsterForTurnCombat(_EntityService:GetEntityByPath("/maps/" .. mapName .. "/monster-43")) +end`), + method('ConfigureMonsterForTurnCombat', `if monster == nil then +\treturn +end +if monster.AIWanderComponent ~= nil then +\tmonster.AIWanderComponent.Enable = false +end +if monster.AIChaseComponent ~= nil then +\tmonster.AIChaseComponent.Enable = false +end +if monster.MovementComponent ~= nil then +\tmonster.MovementComponent.Enable = false +end +if monster.RigidbodyComponent ~= nil then +\tmonster.RigidbodyComponent.MoveVelocity = Vector2.zero +\tmonster.RigidbodyComponent.RealMoveVelocity = Vector2.zero +end +if monster.TransformComponent ~= nil then +\tlocal scale = monster.TransformComponent.Scale +\tmonster.TransformComponent.Scale = Vector3(-math.abs(scale.x), math.abs(scale.y), scale.z) +end +if monster.StateComponent ~= nil then +\tmonster.StateComponent:ChangeState("IDLE") +end`, [{ Type: 'Entity', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'monster' }]), method('Shuffle', `if list == nil then \treturn end