diff --git a/.gitattributes b/.gitattributes index 5976aedf564..ec29113c055 100644 --- a/.gitattributes +++ b/.gitattributes @@ -8889,6 +8889,7 @@ res/cardsfolder/r/ruinous_minotaur.txt svneol=native#text/plain res/cardsfolder/r/ruins_of_trokair.txt svneol=native#text/plain res/cardsfolder/r/rukh_egg.txt svneol=native#text/plain res/cardsfolder/r/rule_of_law.txt -text +res/cardsfolder/r/rumbling_aftershocks.txt -text res/cardsfolder/r/rumbling_crescendo.txt svneol=native#text/plain res/cardsfolder/r/rumbling_slum.txt svneol=native#text/plain res/cardsfolder/r/rumbling_slum_avatar.txt -text diff --git a/res/cardsfolder/r/rumbling_aftershocks.txt b/res/cardsfolder/r/rumbling_aftershocks.txt new file mode 100644 index 00000000000..e6dcbfaea10 --- /dev/null +++ b/res/cardsfolder/r/rumbling_aftershocks.txt @@ -0,0 +1,9 @@ +Name:Rumbling Aftershocks +ManaCost:4 R +Types:Enchantment +T:Mode$ SpellCast | ValidCard$ Card.YouCtrl+kicked | Execute$ DamageSomeone | OptionalDecider$ You | TriggerDescription$ Whenever you cast a kicked spell, you may have CARDNAME deal damage to target creature or player equal to the number of times that spell was kicked. +SVar:DamageSomeone:AB$ DealDamage | Cost$ 0 | ValidTgts$ Creature,Player | References$ X | NumDmg$ X | TgtPrompt$ Select target creature or player +SVar:X:TriggeredSpellAbility$Count$TimesKicked +SVar:Picture:http://www.wizards.com/global/images/magic/general/rumbling_aftershocks.jpg +Oracle:Whenever you cast a kicked spell, you may have Rumbling Aftershocks deal damage to target creature or player equal to the number of times that spell was kicked. +SetInfo:WWK Uncommon \ No newline at end of file diff --git a/src/main/java/forge/card/ability/AbilityUtils.java b/src/main/java/forge/card/ability/AbilityUtils.java index fdfbfc6ba6c..4bb8d55e059 100644 --- a/src/main/java/forge/card/ability/AbilityUtils.java +++ b/src/main/java/forge/card/ability/AbilityUtils.java @@ -304,7 +304,9 @@ public class AbilityUtils { // Try to fetch variable, try ability first, then card. String svarval = null; - if (ability != null) { + if (amount.indexOf('$') > 0 ) // when there is a dollar sign, it's not a reference, it's a raw value! + svarval = amount; + else if (ability != null) { svarval = ability.getSVar(amount); } if (StringUtils.isBlank(svarval)) { @@ -339,7 +341,7 @@ public class AbilityUtils { } // Parse Object$Property string - final String[] calcX = svarval.split("\\$"); + final String[] calcX = svarval.split("\\$", 2); // Incorrect parses mean zero. if ((calcX.length == 1) || calcX[1].equals("none")) { @@ -500,6 +502,11 @@ public class AbilityUtils { } return CardFactoryUtil.playerXCount(players, calcX[1], card) * multiplier; } + if(calcX[0].equals("TriggeredSpellAbility")) { + final SpellAbility root = ability.getRootAbility(); + SpellAbility sat = (SpellAbility) root.getTriggeringObject("SpellAbility"); + return calculateAmount(sat.getSourceCard(), calcX[1], sat); + } // Added on 9/30/12 (ArsenalNut) - Ended up not using but might be useful in future /* if (calcX[0].startsWith("EnchantedController")) {