diff --git a/src/forge/GameAction.java b/src/forge/GameAction.java index 3ee038eaa80..8f0d5319d26 100644 --- a/src/forge/GameAction.java +++ b/src/forge/GameAction.java @@ -110,6 +110,7 @@ public class GameAction { PlayerZone oldBattlefield = AllZone.getZone(Constant.Zone.Battlefield, oldController); PlayerZone newBattlefield = AllZone.getZone(Constant.Zone.Battlefield, newController); + AllZone.TriggerHandler.suppressMode("ChangesZone"); ((PlayerZone_ComesIntoPlay) AllZone.Human_Battlefield).setTriggers(false); ((PlayerZone_ComesIntoPlay) AllZone.Computer_Battlefield).setTriggers(false); //so "enters the battlefield" abilities don't trigger @@ -122,6 +123,7 @@ public class GameAction { AllZone.Combat.removeFromCombat(c); } + AllZone.TriggerHandler.clearSuppression("ChangesZone"); ((PlayerZone_ComesIntoPlay) AllZone.Human_Battlefield).setTriggers(true); ((PlayerZone_ComesIntoPlay) AllZone.Computer_Battlefield).setTriggers(true); } diff --git a/src/forge/TriggerHandler.java b/src/forge/TriggerHandler.java index ac408d4035b..e2fba58efd6 100644 --- a/src/forge/TriggerHandler.java +++ b/src/forge/TriggerHandler.java @@ -6,6 +6,17 @@ import java.util.HashMap; public class TriggerHandler { private ArrayList registeredTriggers = new ArrayList(); + private ArrayList suppressedModes = new ArrayList(); + + public void suppressMode(String mode) + { + suppressedModes.add(mode); + } + + public void clearSuppression(String mode) + { + suppressedModes.remove(mode); + } public static Trigger parseTrigger(String name,String trigParse,Card host) { @@ -165,6 +176,10 @@ public class TriggerHandler { public void runTrigger(String mode,HashMap runParams) { + if(suppressedModes.contains(mode)) + { + return; + } //AP for(Trigger regtrig : registeredTriggers) {