diff --git a/forge-ai/src/main/java/forge/ai/AiAttackController.java b/forge-ai/src/main/java/forge/ai/AiAttackController.java index e40c8f97655..2dfa80957f5 100644 --- a/forge-ai/src/main/java/forge/ai/AiAttackController.java +++ b/forge-ai/src/main/java/forge/ai/AiAttackController.java @@ -116,7 +116,7 @@ public class AiAttackController { } }; for (Card c : CardLists.filter(defender.getCardsIn(ZoneType.Battlefield), canAnimate)) { - if (c.isToken() && !c.isCopiedToken()) { + if (c.isToken() && c.getCopiedPermanent() == null) { continue; } for (SpellAbility sa : c.getSpellAbilities()) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java index d5951faed84..391c9dff89c 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java @@ -152,7 +152,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect { for (int i = 0; i < multiplier; i++) { final Card copy = CardFactory.copyCopiableCharacteristics(c, sa.getActivatingPlayer()); copy.setToken(true); - copy.setCopiedToken(true); + copy.setCopiedPermanent(c); CardFactory.copyCopiableAbilities(c, copy); // add keywords from sa for (final String kw : keywords) { diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index bf4bda8c1f0..08320222163 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -148,7 +148,7 @@ public class Card extends GameEntity implements Comparable { private boolean tapped = false; private boolean sickness = true; // summoning sickness private boolean token = false; - private boolean copiedToken = false; + private Card copiedPermanent = null; private boolean copiedSpell = false; private ArrayList mustBlockCards = null; @@ -2921,25 +2921,25 @@ public class Card extends GameEntity implements Comparable { /** *

- * Setter for the field copiedToken. + * Getter for the field copiedPermanent. *

* - * @param b - * a boolean. + * @return a Card. */ - public final void setCopiedToken(final boolean b) { - this.copiedToken = b; + public final Card getCopiedPermanent() { + return this.copiedPermanent; } /** *

- * isCopiedToken. + * Setter for the field copiedPermanent. *

* - * @return a boolean. + * @param c + * a Card. */ - public final boolean isCopiedToken() { - return this.copiedToken; + public final void setCopiedPermanent(final Card c) { + this.copiedPermanent = c; } /** @@ -8939,7 +8939,7 @@ public class Card extends GameEntity implements Comparable { } public int getCMC(SplitCMCMode mode) { - if (isToken() && !isCopiedToken()) { + if (isToken() && getCopiedPermanent() == null) { return 0; } @@ -9157,4 +9157,12 @@ public class Card extends GameEntity implements Comparable { public Card getCardForUi() { return this; } + + public String getOracleText() { + CardRules rules = cardRules; + if (copiedPermanent != null) { //return oracle text of copied permanent if applicable + rules = copiedPermanent.getRules(); + } + return rules != null ? rules.getOracleText() : ""; + } } // end Card class diff --git a/forge-game/src/main/java/forge/game/card/CardFactory.java b/forge-game/src/main/java/forge/game/card/CardFactory.java index 79ce7037cbc..bdc50fc3604 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactory.java +++ b/forge-game/src/main/java/forge/game/card/CardFactory.java @@ -73,7 +73,7 @@ public class CardFactory { */ public final static Card copyCard(final Card in, boolean assignNewId) { Card out; - if (!(in.isToken() || in.isCopiedToken())) { + if (!(in.isToken() || in.getCopiedPermanent() != null)) { out = assignNewId ? getCard(in.getPaperCard(), in.getOwner()) : getCard(in.getPaperCard(), in.getOwner(), in.getUniqueNumber()); } else { // token diff --git a/forge-gui-mobile/src/forge/card/CardImageRenderer.java b/forge-gui-mobile/src/forge/card/CardImageRenderer.java index 34940f7ea5a..97b7f63f287 100644 --- a/forge-gui-mobile/src/forge/card/CardImageRenderer.java +++ b/forge-gui-mobile/src/forge/card/CardImageRenderer.java @@ -255,8 +255,7 @@ public class CardImageRenderer { g.drawImage(image, x + (w - iconSize) / 2, y + (h - iconSize) / 2, iconSize, iconSize); } else { - if (card.getRules() == null) { return; } //this can happen with certain tokens - String text = card.getRules().getOracleText(); + String text = card.getOracleText(); if (StringUtils.isEmpty(text)) { return; } text = text.replace("\\n", "\n"); //replace new line placeholders with actual new line characters