diff --git a/Mage/src/mage/abilities/DelayedTriggeredAbilities.java b/Mage/src/mage/abilities/DelayedTriggeredAbilities.java index 27da73e8cf4..5694ec48b45 100644 --- a/Mage/src/mage/abilities/DelayedTriggeredAbilities.java +++ b/Mage/src/mage/abilities/DelayedTriggeredAbilities.java @@ -56,7 +56,9 @@ import mage.game.events.GameEvent; DelayedTriggeredAbility ability = it.next(); if (ability.checkTrigger(event, game)) { ability.trigger(game, ability.controllerId); - it.remove(); + if (ability.getTriggerOnlyOnce()) { + it.remove(); + } } } } @@ -65,8 +67,9 @@ import mage.game.events.GameEvent; public void removeEndOfTurnAbilities() { for (Iterator it = this.iterator();it.hasNext();) { DelayedTriggeredAbility ability = it.next(); - if (ability.getDuration() == Duration.EndOfTurn) + if (ability.getDuration() == Duration.EndOfTurn) { it.remove(); + } } } diff --git a/Mage/src/mage/abilities/DelayedTriggeredAbility.java b/Mage/src/mage/abilities/DelayedTriggeredAbility.java index 0ff19de5c76..4339fa4bfb2 100644 --- a/Mage/src/mage/abilities/DelayedTriggeredAbility.java +++ b/Mage/src/mage/abilities/DelayedTriggeredAbility.java @@ -39,19 +39,26 @@ import mage.abilities.effects.Effect; public abstract class DelayedTriggeredAbility> extends TriggeredAbilityImpl { private Duration duration; + private Boolean triggerOnlyOnce; public DelayedTriggeredAbility(Effect effect) { this(effect, Duration.EndOfGame); } public DelayedTriggeredAbility(Effect effect, Duration duration) { + this(effect, duration, true); + } + + public DelayedTriggeredAbility(Effect effect, Duration duration, Boolean triggerOnlyOnce) { super(Zone.ALL, effect); this.duration = duration; + this.triggerOnlyOnce = triggerOnlyOnce; } public DelayedTriggeredAbility(final DelayedTriggeredAbility ability) { super(ability); this.duration = ability.duration; + this.triggerOnlyOnce = ability.triggerOnlyOnce; } @Override @@ -60,4 +67,8 @@ public abstract class DelayedTriggeredAbility