diff --git a/.gitattributes b/.gitattributes index 3351ce3faef..7c84b36f35c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7864,6 +7864,7 @@ res/cardsfolder/s/shields_of_velis_vel.txt -text res/cardsfolder/s/shifting_sky.txt -text res/cardsfolder/s/shifting_sliver.txt svneol=native#text/plain res/cardsfolder/s/shifting_wall.txt svneol=native#text/plain +res/cardsfolder/s/shifty_doppelganger.txt -text svneol=unset#text/plain res/cardsfolder/s/shimian_specter.txt svneol=native#text/plain res/cardsfolder/s/shimmer.txt -text res/cardsfolder/s/shimmer_myr.txt svneol=native#text/plain diff --git a/res/cardsfolder/s/shifty_doppelganger.txt b/res/cardsfolder/s/shifty_doppelganger.txt new file mode 100644 index 00000000000..ad410154212 --- /dev/null +++ b/res/cardsfolder/s/shifty_doppelganger.txt @@ -0,0 +1,15 @@ +Name:Shifty Doppelganger +ManaCost:2 U +Types:Creature Shapeshifter +Text:no text +PT:1/1 +A:AB$ ChangeZone | Cost$ 3 U Exile<1/CARDNAME> | Origin$ Hand | Destination$ Battlefield | ChangeType$ Creature.YouOwn | Optional$ True | RememberChanged$ True | SubAbility$ DBAnimate | SpellDescription$ You may put a creature card from your hand onto the battlefield. If you do, that creature gains haste until end of turn. At the beginning of the next end step, sacrifice that creature. If you do, return CARDNAME to the battlefield. +SVar:DBAnimate:DB$ Animate | Defined$ Remembered | Keywords$ Haste | Triggers$ TrigSacrificeEOT | sVars$ TrigSac,DBBounce,DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Creature | ConditionCompare$ EQ1 | RememberObjects$ Self +SVar:TrigSacrificeEOT:Mode$ Phase | Phase$ End of Turn | Execute$ TrigSac | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of the next end step, sacrifice CARDNAME. +SVar:TrigSac:AB$ Sacrifice | Cost$ 0 | RememberSacrificed$ True | SubAbility$ DBBounce +SVar:DBBounce:DB$ ChangeZoneAll | Origin$ Exile | Defined$ You | Destination$ Battlefield | ChangeType$ Card.IsRemembered | ConditionDefined$ Remembered | ConditionPresent$ Card.Self | ConditionCompare$ EQ1 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:RemAIDeck:True +SVar:Rarity:Rare +SVar:Picture:http://www.wizards.com/global/images/magic/general/shifty_doppelganger.jpg +End \ No newline at end of file diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java index 69e0bbc4692..d0a769b5b02 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAnimate.java @@ -477,12 +477,18 @@ public final class AbilityFactoryAnimate { final Card host = af.getHostCard(); final Map svars = host.getSVars(); long timest = -1; + String animateRemembered = null; //if host is not on the battlefield don't apply if (params.containsKey("UntilHostLeavesPlay") && !AllZoneUtil.isCardInPlay(sa.getSourceCard())) { return; } + + // Remember Objects + if (params.containsKey("RememberObjects")) { + animateRemembered = params.get("RememberObjects"); + } // AF specific params int power = -1; @@ -664,6 +670,13 @@ public final class AbilityFactoryAnimate { removedReplacements.add(re); } } + + // give Remembered + if (animateRemembered != null) { + for (final Object o : AbilityFactory.getDefinedObjects(host, animateRemembered, sa)) { + c.addRemembered(o); + } + } final boolean givesStAbs = (stAbs.size() > 0); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java b/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java index 354604ccebd..7bfe5d4ca74 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactorySacrifice.java @@ -454,9 +454,9 @@ public class AbilityFactorySacrifice { if (valid.equals("Self")) { if (AllZone.getZoneOf(card).is(Constant.Zone.Battlefield)) { Singletons.getModel().getGameAction().sacrifice(card); - } - if (remSacrificed) { - card.addRemembered(card); + if (remSacrificed) { + card.addRemembered(card); + } } } else {