diff --git a/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java b/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java index 7d78d40a8d0..d0993eaac77 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java @@ -192,10 +192,14 @@ public class ReplacementHandler { } while(tailend != null); } - if (effectSA != null && replacementEffect.isIntrinsic()) { - effectSA.setIntrinsic(true); - effectSA.changeText(); - effectSA.setReplacementAbility(true); + if (effectSA != null) { + effectSA.setLastStateBattlefield(game.getLastStateBattlefield()); + effectSA.setLastStateGraveyard(game.getLastStateGraveyard()); + if (replacementEffect.isIntrinsic()) { + effectSA.setIntrinsic(true); + effectSA.changeText(); + effectSA.setReplacementAbility(true); + } } // Decider gets to choose whether or not to apply the replacement. diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index 89254d1e5b6..624cb91726d 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -146,6 +146,7 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit private StaticAbility mayPlay = null; private CardCollection lastStateBattlefield = null; + private CardCollection lastStateGraveyard = null; public CardCollection getLastStateBattlefield() { return lastStateBattlefield; @@ -154,6 +155,13 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit public void setLastStateBattlefield(final CardCollectionView lastStateBattlefield) { this.lastStateBattlefield = new CardCollection(lastStateBattlefield); } + public CardCollection getLastStateGraveyard() { + return lastStateGraveyard; + } + + public void setLastStateGraveyard(final CardCollectionView lastStateGraveyard) { + this.lastStateGraveyard = new CardCollection(lastStateGraveyard); + } protected SpellAbility(final Card iSourceCard, final Cost toPay) { this(iSourceCard, toPay, null); 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 9e478929082..2962f35e042 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java @@ -517,6 +517,7 @@ public class TriggerHandler { sa.setHostCard(host); sa.setLastStateBattlefield(game.getLastStateBattlefield()); + sa.setLastStateGraveyard(game.getLastStateGraveyard()); sa.setTrigger(true); sa.setSourceTrigger(regtrig.getId()); diff --git a/forge-game/src/main/java/forge/game/zone/MagicStack.java b/forge-game/src/main/java/forge/game/zone/MagicStack.java index ec3a482eb57..42c9edee2f6 100644 --- a/forge-game/src/main/java/forge/game/zone/MagicStack.java +++ b/forge-game/src/main/java/forge/game/zone/MagicStack.java @@ -501,7 +501,7 @@ public class MagicStack /* extends MyObservable */ implements Iterable