diff --git a/Mage/src/mage/cards/Card.java b/Mage/src/mage/cards/Card.java index e612d5084ac..6516ea4ee45 100644 --- a/Mage/src/mage/cards/Card.java +++ b/Mage/src/mage/cards/Card.java @@ -61,7 +61,10 @@ public interface Card extends MageObject { public boolean isFaceDown(); public boolean canTransform(); + public void setCanTransform(boolean value); public Card getSecondCardFace(); + public void setSecondCardFace(Card card); + public boolean isNightCard(); public void assignNewId(); diff --git a/Mage/src/mage/cards/CardImpl.java b/Mage/src/mage/cards/CardImpl.java index edd9d069b5b..64e262c8913 100644 --- a/Mage/src/mage/cards/CardImpl.java +++ b/Mage/src/mage/cards/CardImpl.java @@ -386,4 +386,14 @@ public abstract class CardImpl> extends MageObjectImpl public boolean isNightCard() { return this.nightCard; } + + @Override + public void setCanTransform(boolean canTransform) { + this.canTransform = canTransform; + } + + @Override + public void setSecondCardFace(Card card) { + this.secondSideCard = card; + } } diff --git a/Mage/src/mage/game/permanent/PermanentToken.java b/Mage/src/mage/game/permanent/PermanentToken.java index 7a3e1487c82..541b95a19f5 100644 --- a/Mage/src/mage/game/permanent/PermanentToken.java +++ b/Mage/src/mage/game/permanent/PermanentToken.java @@ -28,12 +28,14 @@ package mage.game.permanent; -import mage.game.permanent.token.Token; -import java.util.UUID; import mage.Constants.Zone; import mage.abilities.Ability; +import mage.cards.Card; import mage.game.Game; import mage.game.events.ZoneChangeEvent; +import mage.game.permanent.token.Token; + +import java.util.UUID; /** * @@ -104,6 +106,8 @@ public class PermanentToken extends PermanentImpl { return token; } + + @Override public PermanentToken copy() { return new PermanentToken(this); diff --git a/Mage/src/mage/game/permanent/token/Token.java b/Mage/src/mage/game/permanent/token/Token.java index 38310c70b9b..798482b47a5 100644 --- a/Mage/src/mage/game/permanent/token/Token.java +++ b/Mage/src/mage/game/permanent/token/Token.java @@ -47,6 +47,8 @@ public class Token extends MageObjectImpl { protected String description; private UUID lastAddedTokenId; + private boolean canTransform; + private Card secondCardFace; public Token(String name, String description) { this.name = name; @@ -68,6 +70,7 @@ public class Token extends MageObjectImpl { public Token(final Token token) { super(token); this.description = token.description; + this.canTransform = token.canTransform; } public String getDescription() { @@ -96,6 +99,10 @@ public class Token extends MageObjectImpl { amount = event.getAmount(); for (int i = 0; i < amount; i++) { PermanentToken permanent = new PermanentToken(this, controllerId, setCode); + if (this.canTransform) { + permanent.setCanTransform(this.canTransform); + permanent.setSecondCardFace(this.secondCardFace); + } game.getBattlefield().addPermanent(permanent); this.lastAddedTokenId = permanent.getId(); permanent.entersBattlefield(sourceId, game); @@ -107,4 +114,11 @@ public class Token extends MageObjectImpl { return false; } + public void setCanTransform(boolean canTransform) { + this.canTransform = canTransform; + } + + public void setSecondCardFace(Card card) { + this.secondCardFace = card; + } } diff --git a/Mage/src/mage/game/stack/Spell.java b/Mage/src/mage/game/stack/Spell.java index 33d3267961d..d89441c6feb 100644 --- a/Mage/src/mage/game/stack/Spell.java +++ b/Mage/src/mage/game/stack/Spell.java @@ -351,6 +351,10 @@ public class Spell> implements StackObject, Card { return false; } + @Override + public void setCanTransform(boolean value) { + } + @Override public Card getSecondCardFace() { return null; @@ -436,5 +440,9 @@ public class Spell> implements StackObject, Card { public void setCopiedSpell(boolean isCopied) { this.copiedSpell = isCopied; } + + @Override + public void setSecondCardFace(Card card) { + } } diff --git a/Mage/src/mage/util/functions/CopyFunction.java b/Mage/src/mage/util/functions/CopyFunction.java index d994f11805e..5c8db865a1f 100644 --- a/Mage/src/mage/util/functions/CopyFunction.java +++ b/Mage/src/mage/util/functions/CopyFunction.java @@ -79,6 +79,11 @@ public class CopyFunction implements Function { target.getPower().setValue(source.getPower().getValue()); target.getToughness().setValue(source.getToughness().getValue()); + if (source.canTransform()) { + target.setCanTransform(true); + target.setSecondCardFace(source.getSecondCardFace()); + } + return target; } diff --git a/Mage/src/mage/util/functions/CopyTokenFunction.java b/Mage/src/mage/util/functions/CopyTokenFunction.java index f65345c75a4..9e41b453d23 100644 --- a/Mage/src/mage/util/functions/CopyTokenFunction.java +++ b/Mage/src/mage/util/functions/CopyTokenFunction.java @@ -30,6 +30,7 @@ package mage.util.functions; import mage.Constants; import mage.abilities.Ability; import mage.cards.Card; +import mage.game.permanent.PermanentToken; import mage.game.permanent.token.Token; /** @@ -79,6 +80,11 @@ public class CopyTokenFunction implements Function { target.getPower().setValue(source.getPower().getValue()); target.getToughness().setValue(source.getToughness().getValue()); + if (source.canTransform()) { + target.setCanTransform(true); + target.setSecondCardFace(source.getSecondCardFace()); + } + return target; }