From 6c2c8cc6e822613c1fc57a720612850d1085124f Mon Sep 17 00:00:00 2001 From: tool4ever Date: Fri, 12 Jul 2024 14:48:37 +0200 Subject: [PATCH] Refresh active triggers after statics from ETB (#5580) * Refresh active triggers after statics from ETB * Style change --------- Co-authored-by: TRT <> --- .../src/main/java/forge/game/GameAction.java | 8 ++------ .../game/ability/effects/PermanentEffect.java | 13 ++----------- .../java/forge/game/card/CardZoneTable.java | 18 ++++++++++++------ 3 files changed, 16 insertions(+), 23 deletions(-) diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index 575e20cbc40..f9a852b674f 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -613,10 +613,6 @@ public class GameAction { } game.getTriggerHandler().clearActiveTriggers(copied, null); - // register all LTB trigger from last state battlefield - for (Card lki : lastBattlefield) { - game.getTriggerHandler().registerActiveLTBTrigger(lki); - } game.getTriggerHandler().registerActiveTrigger(copied, false); // play the change zone sound @@ -1438,6 +1434,8 @@ public class GameAction { } setHoldCheckingStaticAbilities(false); + table.triggerChangesZoneAll(game, null); + // important to collect first otherwise if a static fires it will mess up registered ones from LKI game.getTriggerHandler().collectTriggerForWaiting(); if (game.getTriggerHandler().runWaitingTriggers()) { @@ -1448,8 +1446,6 @@ public class GameAction { game.getCombat().removeAbsentCombatants(); } - table.triggerChangesZoneAll(game, null); - for (final Card c : cardsToUpdateLKI) { game.updateLastStateForCard(c); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/PermanentEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PermanentEffect.java index 8976393bc51..e6bb3e1bc7c 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PermanentEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PermanentEffect.java @@ -11,7 +11,6 @@ import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; import forge.game.card.CardZoneTable; import forge.game.spellability.SpellAbility; -import forge.game.zone.ZoneType; public class PermanentEffect extends SpellAbilityEffect { @@ -26,12 +25,8 @@ public class PermanentEffect extends SpellAbilityEffect { public void resolve(SpellAbility sa) { final Card host = sa.getHostCard(); final Game game = host.getGame(); - CardZoneTable table = new CardZoneTable(); - ZoneType previousZone = host.getZone().getZoneType(); - - Map moveParams = AbilityKey.newMap(); - moveParams.put(AbilityKey.LastStateBattlefield, game.copyLastStateBattlefield()); - moveParams.put(AbilityKey.LastStateGraveyard, game.copyLastStateGraveyard()); + final Map moveParams = AbilityKey.newMap(); + final CardZoneTable table = AbilityKey.addCardZoneTableParams(moveParams, sa); final Card c = game.getAction().moveToPlay(host, host.getController(), sa, moveParams); sa.setHostCard(c); @@ -47,10 +42,6 @@ public class PermanentEffect extends SpellAbilityEffect { registerDelayedTrigger(sa, "Sacrifice", Lists.newArrayList(c)); } - ZoneType newZone = c.getZone().getZoneType(); - if (newZone != previousZone) { - table.put(previousZone, newZone, c); - } table.triggerChangesZoneAll(game, sa); } } diff --git a/forge-game/src/main/java/forge/game/card/CardZoneTable.java b/forge-game/src/main/java/forge/game/card/CardZoneTable.java index 463b97cc803..c8867965587 100644 --- a/forge-game/src/main/java/forge/game/card/CardZoneTable.java +++ b/forge-game/src/main/java/forge/game/card/CardZoneTable.java @@ -5,8 +5,6 @@ package forge.game.card; import java.util.Map; -import org.apache.commons.lang3.ObjectUtils; - import com.google.common.collect.*; import forge.game.CardTraitBase; @@ -34,8 +32,8 @@ public class CardZoneTable extends ForwardingTable runParams = AbilityKey.newMap(); runParams.put(AbilityKey.Cards, new CardZoneTable(this));