From cb7d3ab2845d79b1e57e7727ad9d58cf869b4028 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Wed, 27 Aug 2014 17:08:19 +0200 Subject: [PATCH] Added custom duration handling to delayed triggered abilities. --- Mage/src/mage/abilities/DelayedTriggeredAbilities.java | 6 ++++++ Mage/src/mage/abilities/DelayedTriggeredAbility.java | 7 +++++++ Mage/src/mage/game/GameImpl.java | 3 ++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Mage/src/mage/abilities/DelayedTriggeredAbilities.java b/Mage/src/mage/abilities/DelayedTriggeredAbilities.java index 26047226d87..54f668a4dd1 100644 --- a/Mage/src/mage/abilities/DelayedTriggeredAbilities.java +++ b/Mage/src/mage/abilities/DelayedTriggeredAbilities.java @@ -54,6 +54,12 @@ import mage.game.events.GameEvent; if (this.size() > 0) { for (Iterator it = this.iterator();it.hasNext();) { DelayedTriggeredAbility ability = it.next(); + if (ability.getDuration().equals(Duration.Custom)){ + if (ability.isInactive(game)) { + it.remove(); + continue; + } + } if (ability.checkTrigger(event, game)) { ability.trigger(game, ability.controllerId); if (ability.getTriggerOnlyOnce()) { diff --git a/Mage/src/mage/abilities/DelayedTriggeredAbility.java b/Mage/src/mage/abilities/DelayedTriggeredAbility.java index 06a8fc4f4cd..d0457dc5c75 100644 --- a/Mage/src/mage/abilities/DelayedTriggeredAbility.java +++ b/Mage/src/mage/abilities/DelayedTriggeredAbility.java @@ -31,6 +31,7 @@ package mage.abilities; import mage.abilities.effects.Effect; import mage.constants.Duration; import mage.constants.Zone; +import mage.game.Game; /** * @@ -74,4 +75,10 @@ public abstract class DelayedTriggeredAbility extends TriggeredAbilityImpl { public Boolean getTriggerOnlyOnce() { return triggerOnlyOnce; } + + public void init(Game game) {}; + + public boolean isInactive(Game game) { + return false; + } } diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 98b5471742e..f09fa37a73c 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -1258,7 +1258,7 @@ public abstract class GameImpl implements Game, Serializable { manaAbiltiy.resolve(this); } else { - TriggeredAbility newAbility = (TriggeredAbility) ability.copy(); + TriggeredAbility newAbility = ability.copy(); newAbility.newId(); state.addTriggeredAbility(newAbility); } @@ -1268,6 +1268,7 @@ public abstract class GameImpl implements Game, Serializable { public void addDelayedTriggeredAbility(DelayedTriggeredAbility delayedAbility) { DelayedTriggeredAbility newAbility = delayedAbility.copy(); newAbility.newId(); + newAbility.init(this); state.addDelayedTriggeredAbility(newAbility); }