diff --git a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java index 5e923a32518..92f7e961fd7 100644 --- a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java +++ b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java @@ -12,6 +12,9 @@ import forge.game.spellability.*; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; + +import com.google.common.collect.Lists; // Wrapper ability that checks the requirements again just before // resolving, for intervening if clauses. @@ -373,6 +376,29 @@ public class WrappedAbility extends Ability implements ISpellAbility { return; } + // Check timestamps of triggered objects + final List original = Lists.newArrayList(sa.getTriggerRemembered()); + for (Object o : original) { + if (o instanceof Card) { + Card card = (Card) o; + Card current = game.getCardState(card); + if (current.getTimestamp() != card.getTimestamp()) { + sa.getTriggerRemembered().remove(o); + } + } + } + final Map triggerMap = new HashMap(sa.getTriggeringObjects()); + for (Entry ev : triggerMap.entrySet()) { + if (ev.getValue() instanceof Card) { + Card card = (Card) ev.getValue(); + Card current = game.getCardState(card); + if (current.getTimestamp() != card.getTimestamp()) { + sa.getTriggeringObjects().remove(ev.getKey()); + } + } + } + // TODO: List + getActivatingPlayer().getController().playSpellAbilityNoStack(sa, false); // Add eventual delayed trigger.