diff --git a/.gitattributes b/.gitattributes index aad7594e2ab..cf628a4308a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9933,6 +9933,7 @@ res/cardsfolder/s/spidersilk_net.txt svneol=native#text/plain res/cardsfolder/s/spiderwig_boggart.txt svneol=native#text/plain res/cardsfolder/s/spidery_grasp.txt -text res/cardsfolder/s/spike_breeder.txt svneol=native#text/plain +res/cardsfolder/s/spike_cannibal.txt -text res/cardsfolder/s/spike_colony.txt svneol=native#text/plain res/cardsfolder/s/spike_drone.txt svneol=native#text/plain res/cardsfolder/s/spike_feeder.txt svneol=native#text/plain @@ -10292,6 +10293,7 @@ res/cardsfolder/s/structural_collapse.txt -text res/cardsfolder/s/student_of_elements_tobita_master_of_winds.txt -text res/cardsfolder/s/student_of_warfare.txt svneol=native#text/plain res/cardsfolder/s/stuffy_doll.txt svneol=native#text/plain +res/cardsfolder/s/stuffy_doll_avatar.txt -text res/cardsfolder/s/stun.txt svneol=native#text/plain res/cardsfolder/s/stun_sniper.txt svneol=native#text/plain res/cardsfolder/s/stunted_growth.txt svneol=native#text/plain diff --git a/res/cardsfolder/s/spike_cannibal.txt b/res/cardsfolder/s/spike_cannibal.txt new file mode 100644 index 00000000000..9c4f2d70ec4 --- /dev/null +++ b/res/cardsfolder/s/spike_cannibal.txt @@ -0,0 +1,13 @@ +Name:Spike Cannibal +ManaCost:1 B B +Types:Creature Spike +Text:no text +PT:0/0 +K:etbCounter:P1P1:1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigMoveCounter | TriggerDescription$ When CARDNAME enters the battlefield, move all +1/+1 counters from all creatures onto it. +SVar:TrigMoveCounter:AB$ RepeatEach | Cost$ 0 | RepeatCards$ Creature | RepeatSubAbility$ DBMove +SVar:DBMove:DB$ MoveCounter | Source$ Remembered | Defined$ Self | CounterNum$ All | CounterType$ P1P1 +SVar:Picture:http://www.wizards.com/global/images/magic/general/spike_cannibal.jpg +SetInfo:EXO|Uncommon|http://magiccards.info/scans/en/ex/75.jpg +Oracle:Spike Cannibal enters the battlefield with a +1/+1 counter on it.\nWhen Spike Cannibal enters the battlefield, move all +1/+1 counters from all creatures onto it. +End \ No newline at end of file diff --git a/res/cardsfolder/s/stuffy_doll_avatar.txt b/res/cardsfolder/s/stuffy_doll_avatar.txt new file mode 100644 index 00000000000..be9fad61e82 --- /dev/null +++ b/res/cardsfolder/s/stuffy_doll_avatar.txt @@ -0,0 +1,21 @@ +Name:Stuffy Doll Avatar +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+0/-6 +A:AB$ ChooseSource | Cost$ 0 | ActivationZone$ Command | Choices$ Card | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBTargetOpp | ActivationLimit$ 1 | SpellDescription$ If damage would be dealt to you this turn by a source of your choice, prevent that damage. CARDNAME deals damage to you and target opponent equal to half the damage prevented this way, rounded up. Activate this ability only once each turn. +SVar:DBTargetOpp:DB$ Pump | ValidTgts$ Opponent | TgtPrompt$ Select target opponent to give damamge | RememberObjects$ Targeted | StackDescription$ None | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | ReplacementEffects$ SelflessNonCombat,SelflessCombat | RememberObjects$ Remembered | ImprintCards$ Self | SVars$ CombatDmg,NonCombatDmg,AvatarCombat,AvatarnonCombat,X | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 +SVar:SelflessCombat:Event$ DamageDone | ValidTarget$ You | ValidSource$ Card.IsRemembered | IsCombat$ True | ReplaceWith$ CombatDmg | Description$ If damage would be dealt to you this turn by a source of your choice, prevent that damage. Stuffy Doll Avatar deals damage to you and target opponent equal to half the damage prevented this way, rounded up. Activate this ability only once each turn. +SVar:SelflessNonCombat:Event$ DamageDone | ValidTarget$ You | ValidSource$ Card.IsRemembered | IsCombat$ False | ReplaceWith$ NonCombatDmg | Secondary$ True | Description$ If damage would be dealt to you this turn by a source of your choice, prevent that damage. Stuffy Doll Avatar deals damage to you and target opponent equal to half the damage prevented this way, rounded up. Activate this ability only once each turn. +SVar:CombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ You | DamageSource$ Imprinted | CombatDamage$ True | NumDmg$ X | SubAbility$ AvatarCombat +SVar:AvatarCombat:DB$ DealDamage | Defined$ Player.IsRemembered | DamageSource$ Imprinted | CombatDamage$ True | NumDmg$ X +SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ You | DamageSource$ Imprinted | CombatDamage$ False | NumDmg$ X | SubAbility$ AvatarnonCombat +SVar:AvatarnonCombat:DB$ DealDamage | Defined$ Player.IsRemembered | DamageSource$ Imprinted | CombatDamage$ False | NumDmg$ X +SVar:X:ReplaceCount$DamageAmount/HalfUp +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:Rarity:Special +SVar:Picture:http://www.cardforge.org/fpics/vgd-lq/stuffy_doll_avatar.jpg +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard-mtgo/stuffy-doll.jpg +Oracle:Hand +0, life -6\n{0}: If damage would be dealt to you this turn by a source of your choice, prevent that damage. Stuffy Doll Avatar deals damage to you and target opponent equal to half the damage prevented this way, rounded up. Activate this ability only once each turn. +End \ No newline at end of file diff --git a/src/main/java/forge/card/ability/ai/CountersMoveAi.java b/src/main/java/forge/card/ability/ai/CountersMoveAi.java index 336bdaa7cab..c4160b10c96 100644 --- a/src/main/java/forge/card/ability/ai/CountersMoveAi.java +++ b/src/main/java/forge/card/ability/ai/CountersMoveAi.java @@ -26,8 +26,10 @@ public class CountersMoveAi extends SpellAbilityAi { final String amountStr = sa.getParam("CounterNum"); // TODO handle proper calculation of X values based on Cost - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), amountStr, sa); - + int amount = 0; + if (!sa.getParam("CounterNum").equals("All")) { + amount = AbilityUtils.calculateAmount(sa.getSourceCard(), amountStr, sa); + } // don't use it if no counters to add if (amount <= 0) { return false; @@ -49,13 +51,19 @@ public class CountersMoveAi extends SpellAbilityAi { final Target abTgt = sa.getTarget(); final String type = sa.getParam("CounterType"); final String amountStr = sa.getParam("CounterNum"); - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), amountStr, sa); + int amount = 0; + if (!sa.getParam("CounterNum").equals("All")) { + amount = AbilityUtils.calculateAmount(sa.getSourceCard(), amountStr, sa); + } boolean chance = false; boolean preferred = true; final CounterType cType = CounterType.valueOf(sa.getParam("CounterType")); final List srcCards = AbilityUtils.getDefinedCards(host, sa.getParam("Source"), sa); final List destCards = AbilityUtils.getDefinedCards(host, sa.getParam("Defined"), sa); + if ((srcCards.size() > 0 && sa.getParam("CounterNum").equals("All"))) { + amount = srcCards.get(0).getCounters(cType); + } if (abTgt == null) { if ((srcCards.size() > 0) && cType.equals(CounterType.P1P1) // move +1/+1 counters away diff --git a/src/main/java/forge/card/ability/effects/CountersMoveEffect.java b/src/main/java/forge/card/ability/effects/CountersMoveEffect.java index 45c46ba27d3..e2cba82325b 100644 --- a/src/main/java/forge/card/ability/effects/CountersMoveEffect.java +++ b/src/main/java/forge/card/ability/effects/CountersMoveEffect.java @@ -48,7 +48,10 @@ public class CountersMoveEffect extends SpellAbilityEffect { final Card host = sa.getSourceCard(); final CounterType cType = CounterType.valueOf(sa.getParam("CounterType")); - final int amount = AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("CounterNum"), sa); + int amount = 0; + if (!sa.getParam("CounterNum").equals("All")) { + amount = AbilityUtils.calculateAmount(host, sa.getParam("CounterNum"), sa); + } Card source = null; List srcCards; @@ -61,6 +64,9 @@ public class CountersMoveEffect extends SpellAbilityEffect { if (srcCards.size() > 0) { source = srcCards.get(0); } + if (sa.getParam("CounterNum").equals("All")) { + amount = source.getCounters(cType); + } List tgtCards; if (!sa.hasParam("Defined") && tgt != null) { tgtCards = tgt.getTargetCards();