diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index f4508fb55b7..3c7aacfd654 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -2136,9 +2136,10 @@ public class CardFactoryUtil { final SpellAbility sa = card.getFirstSpellAbility(); sa.setMultiKickerManaCost(new ManaCost(new ManaCostParser(k[1]))); + sa.addAnnounceVar("Multikicker"); } } - + if (hasKeyword(card, "Fuse") != -1) { card.getState(CardCharacteristicName.Original).getSpellAbility().add(AbilityFactory.buildFusedAbility(card)); } @@ -2732,7 +2733,7 @@ public class CardFactoryUtil { // instantiate attach ability final SpellAbility sa = AbilityFactory.getAbility(abilityStr.toString(), card); card.addSpellAbility(sa); - // add ability to instrinic strings so copies/clones create the ability also + // add ability to intrinsic strings so copies/clones create the ability also card.getUnparsedAbilities().add(abilityStr.toString()); } 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 3e920acf371..fb290aa8ad6 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -302,18 +302,6 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit public boolean isSpell() { return false; } public boolean isAbility() { return true; } - - /** - *

- * isMultiKicker. - *

- * - * @return a boolean. - */ - public boolean isMultiKicker() { - return this.multiKickerManaCost != null && !this.isAnnouncing("Multikicker"); - } - /** *

* setIsMorphUp. @@ -384,14 +372,14 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit } public String getParamOrDefault(String key, String defaultValue) { - return mapParams == null || !mapParams.containsKey(key) ? defaultValue : mapParams.get(key); + return mapParams.containsKey(key) ? mapParams.get(key) : defaultValue; } public String getParam(String key) { - return mapParams == null ? null : mapParams.get(key); + return mapParams.get(key); } public boolean hasParam(String key) { - return mapParams == null ? false : mapParams.containsKey(key); + return mapParams.containsKey(key); } /** @@ -399,9 +387,7 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit * @param mapParams */ public void copyParamsToMap(Map mapParams) { - if (null != this.mapParams) { - mapParams.putAll(this.mapParams); - } + mapParams.putAll(this.mapParams); } // If this is not null, then ability was made in a factory @@ -1355,7 +1341,8 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit */ public boolean isAnnouncing(String variable) { String announce = getParam("Announce"); - if (StringUtils.isBlank(announce)) return false; + if (StringUtils.isBlank(announce)) { return false; } + String[] announcedOnes = TextUtil.split(announce, ','); for (String a : announcedOnes) { if (a.trim().equalsIgnoreCase(variable)) { @@ -1365,6 +1352,21 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit return false; } + public void addAnnounceVar(String variable) { + String announce = getParam("Announce"); + if (StringUtils.isBlank(announce)) { + mapParams.put("Announce", variable); + return; + } + String[] announcedOnes = TextUtil.split(announce, ','); + for (String a : announcedOnes) { + if (a.trim().equalsIgnoreCase(variable)) { + return; //don't add announce variable that already exists + } + } + mapParams.put("Announce", announce + ";" + variable); + } + public boolean isXCost() { CostPartMana cm = payCosts != null ? getPayCosts().getCostMana() : null; return cm != null && cm.getAmountOfX() > 0; diff --git a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java index 55763615c64..f9b36e39cbd 100644 --- a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java +++ b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java @@ -243,11 +243,6 @@ public class WrappedAbility extends Ability implements ISpellAbility { return sa.isFlashBackAbility(); } - @Override - public boolean isMultiKicker() { - return sa.isMultiKicker(); - } - @Override public boolean isSpell() { return sa.isSpell(); 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 153da4202da..18b46fec016 100644 --- a/forge-game/src/main/java/forge/game/zone/MagicStack.java +++ b/forge-game/src/main/java/forge/game/zone/MagicStack.java @@ -340,20 +340,6 @@ public class MagicStack /* extends MyObservable */ implements Iterable