diff --git a/forge-game/src/main/java/forge/game/Game.java b/forge-game/src/main/java/forge/game/Game.java index 08da265ce41..cfd9b21e4f7 100644 --- a/forge-game/src/main/java/forge/game/Game.java +++ b/forge-game/src/main/java/forge/game/Game.java @@ -789,6 +789,7 @@ public class Game { cc.removeImprintedCard(c); cc.removeEncodedCard(c); cc.removeRemembered(c); + cc.removeAttachedTo(c); } getAction().ceaseToExist(c, false); // CR 603.2f owner of trigger source lost game diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index b4dcf95746b..89ec43318e4 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -920,17 +920,14 @@ public class GameAction { } public void ceaseToExist(Card c, boolean skipTrig) { - final String origin = c.getZone().getZoneType().name(); - c.getZone().remove(c); - c.setZone(null); // CR 603.6c other players LTB triggers should work if (!skipTrig) { game.addChangeZoneLKIInfo(c); - Card lki = null; CardCollectionView lastBattlefield = game.getLastStateBattlefield(); int idx = lastBattlefield.indexOf(c); + Card lki = null; if (idx != -1) { lki = lastBattlefield.get(idx); } @@ -942,12 +939,10 @@ public class GameAction { game.getCombat().saveLKI(lki); } game.getTriggerHandler().registerActiveLTBTrigger(lki); - final Map runParams = AbilityKey.mapFromCard(c); runParams.put(AbilityKey.CardLKI, lki); - runParams.put(AbilityKey.Origin, origin); + runParams.put(AbilityKey.Origin, c.getZone().getZoneType().name()); game.getTriggerHandler().runTrigger(TriggerType.ChangesZone, runParams, false); - game.getTriggerHandler().runWaitingTriggers(); } } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java index 93c36cd3a7c..3628d261a12 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java @@ -640,5 +640,7 @@ public class TriggerHandler { delayedTriggers.remove(t); } } + // run all ChangesZone + runWaitingTriggers(); } }