diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 4c3168d0c4b..7a913d430bc 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -167,7 +167,6 @@ public class Card extends GameEntity implements Comparable { private Map counters = new TreeMap(); private Map triggeringObjects = new TreeMap(); - private ArrayList staticAbilityStrings = new ArrayList(); private ArrayList extrinsicKeyword = new ArrayList(); // Hidden keywords won't be displayed on the card private ArrayList hiddenExtrinsicKeyword = new ArrayList(); @@ -5336,7 +5335,7 @@ public class Card extends GameEntity implements Comparable { * a {@link java.util.ArrayList} object. */ public final void setStaticAbilityStrings(final ArrayList a) { - staticAbilityStrings = new ArrayList(a); + getCharacteristics().setStaticAbilityStrings(new ArrayList(a)); } /** @@ -5345,7 +5344,7 @@ public class Card extends GameEntity implements Comparable { * @return the static ability strings */ public final ArrayList getStaticAbilityStrings() { - return staticAbilityStrings; + return getCharacteristics().getStaticAbilityStrings(); } /** @@ -5358,7 +5357,7 @@ public class Card extends GameEntity implements Comparable { */ public final void addStaticAbilityString(final String s) { if (s.trim().length() != 0) { - staticAbilityStrings.add(s); + getCharacteristics().getStaticAbilityStrings().add(s); } } diff --git a/src/main/java/forge/card/CardCharacteristics.java b/src/main/java/forge/card/CardCharacteristics.java index 15129e3eca0..920e9ffd023 100644 --- a/src/main/java/forge/card/CardCharacteristics.java +++ b/src/main/java/forge/card/CardCharacteristics.java @@ -31,6 +31,7 @@ public class CardCharacteristics { private ArrayList manaAbility = new ArrayList(); private ArrayList triggers = new ArrayList(); private ArrayList staticAbilities = new ArrayList(); + private ArrayList staticAbilityStrings = new ArrayList(); private String ImageFilename = ""; private Map sVars = new TreeMap(); private ArrayList Sets = new ArrayList(); @@ -226,4 +227,16 @@ public class CardCharacteristics { public void setSets(ArrayList sets0) { Sets = new ArrayList(sets0); // TODO: Add 0 to parameter's name. } + /** + * @return the staticAbilityStrings + */ + public ArrayList getStaticAbilityStrings() { + return staticAbilityStrings; + } + /** + * @param staticAbilityStrings0 the staticAbilityStrings to set + */ + public void setStaticAbilityStrings(ArrayList staticAbilityStrings0) { + this.staticAbilityStrings = staticAbilityStrings0; // TODO: Add 0 to parameter's name. + } } diff --git a/src/main/java/forge/card/cardFactory/AbstractCardFactory.java b/src/main/java/forge/card/cardFactory/AbstractCardFactory.java index 45593aa4aed..6a3a4dda788 100644 --- a/src/main/java/forge/card/cardFactory/AbstractCardFactory.java +++ b/src/main/java/forge/card/cardFactory/AbstractCardFactory.java @@ -471,11 +471,7 @@ public abstract class AbstractCardFactory implements NewConstants, CardFactoryIn CardFactoryUtil.parseKeywords(card, cardName); addAbilityFactoryAbilities(card); - if(card.hasAlternateState()) { - card.changeState(); - addAbilityFactoryAbilities(card); - card.changeState(); - } + //register static abilities @@ -485,6 +481,18 @@ public abstract class AbstractCardFactory implements NewConstants, CardFactoryIn card.addStaticAbility(stAbs.get(i)); } } + + if(card.hasAlternateState()) { + card.changeState(); + addAbilityFactoryAbilities(card); + stAbs = card.getStaticAbilityStrings(); + if (stAbs.size() > 0) { + for (int i = 0; i < stAbs.size(); i++) { + card.addStaticAbility(stAbs.get(i)); + } + } + card.changeState(); + } //******************************************************************