From 4fb3f4401ae0c5db20ee36ffb8e3b6b48e8e98a2 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Mon, 27 Jan 2025 12:05:00 -0500 Subject: [PATCH] v3.0.0: added a delay to time freeze press triggering triggering instantly caused effect order errors, including a dupe bug involving teleport traps --- .../items/artifacts/TimekeepersHourglass.java | 34 +++++++++++++------ .../plants/Swiftthistle.java | 34 +++++++++++++------ 2 files changed, 46 insertions(+), 22 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TimekeepersHourglass.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TimekeepersHourglass.java index ec1b4f6c6..acba36e99 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TimekeepersHourglass.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TimekeepersHourglass.java @@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.artifacts; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger; @@ -374,18 +375,29 @@ public class TimekeepersHourglass extends Artifact { } public void triggerPresses(){ - for (int cell : presses){ - Plant p = Dungeon.level.plants.get(cell); - if (p != null){ - p.trigger(); - } - Trap t = Dungeon.level.traps.get(cell); - if (t != null){ - t.trigger(); - } - } - + ArrayList toTrigger = presses; presses = new ArrayList<>(); + Actor.add(new Actor() { + { + actPriority = VFX_PRIO; + } + + @Override + protected boolean act() { + for (int cell : toTrigger){ + Plant p = Dungeon.level.plants.get(cell); + if (p != null){ + p.trigger(); + } + Trap t = Dungeon.level.traps.get(cell); + if (t != null){ + t.trigger(); + } + } + Actor.remove(this); + return true; + } + }); } public void disarmPresses(){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Swiftthistle.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Swiftthistle.java index f531d4b6b..207871b4b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Swiftthistle.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Swiftthistle.java @@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.plants; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Haste; @@ -122,18 +123,29 @@ public class Swiftthistle extends Plant { } public void triggerPresses(){ - for (int cell : presses){ - Plant p = Dungeon.level.plants.get(cell); - if (p != null){ - p.trigger(); - } - Trap t = Dungeon.level.traps.get(cell); - if (t != null){ - t.trigger(); - } - } - + ArrayList toTrigger = presses; presses = new ArrayList<>(); + Actor.add(new Actor() { + { + actPriority = VFX_PRIO; + } + + @Override + protected boolean act() { + for (int cell : toTrigger){ + Plant p = Dungeon.level.plants.get(cell); + if (p != null){ + p.trigger(); + } + Trap t = Dungeon.level.traps.get(cell); + if (t != null){ + t.trigger(); + } + } + Actor.remove(this); + return true; + } + }); } public void disarmPresses(){