diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index 51de04b81..1eba8a9ba 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -964,6 +964,7 @@ toughness=3 [/card] [card] name=Alive // Well +abilities=hasnokicker other={W} name(Well) kicker={W} name(Fuse) auto=if paid(alternative) then life:twicetype:creature:mybattlefield @@ -1284,10 +1285,12 @@ toughness=4 [/card] [card] name=Anavolver -other={3}{G}{B} name(Kicker {B}) -auto=if paid(alternative) then transforms((,newability[counter(1/1.1)],newability[{L:3}:regenerate])) forever -kicker={1}{U} -auto=kicker ifnot paid(alternative) then transforms((,newability[counter(1/1.2)],newability[flying])) forever +abilities=hasotherkicker +other={3}{G}{B} name(Kicker Black) +kicker={1}{U} name(Kicker Blue or Both) +auto=if paid(alternative) then transforms((,newability[counter(1/1)],newability[{L:3}:regenerate])) forever +auto=if paid(kicker) then transforms((,newability[counter(1/1.2)],newability[flying])) forever +auto=if paid(kicker) then pay({B}) name(Pay also kicker black) transforms((,newability[counter(1/1)],newability[{L:3}:regenerate])) forever text=Kicker {1}{U} and/or {B} (You may pay an additional {1}{U} and/or {B} as you cast this spell.) -- If Anavolver was kicked with its {1}{U} kicker, it enters the battlefield with two +1/+1 counters on it and with flying. -- If Anavolver was kicked with its {B} kicker, it enters the battlefield with a +1/+1 counter on it and with "Pay 3 life: Regenerate Anavolver." mana={3}{G} type=Creature @@ -2395,8 +2398,7 @@ toughness=2 [/card] [card] name=Ardenvale Paladin -other={1}{W}{W}{W} name(Adamant) -auto=if paid(alternative) then counter(1/1,1) +auto=if casted(this) then if spent({W}{W}{W}) then counter(1/1,1) text=Adamant — If at least three white mana was spent to cast this spell, Ardenvale Paladin enters the battlefield with a +1/+1 counter on it. mana={3}{W} type=Creature @@ -2494,6 +2496,7 @@ toughness=2 [card] name=Armed // Dangerous target=creature +abilities=hasnokicker other={3}{G} name(Dangerous) kicker={3}{G} name(Fuse) auto=if paid(alternative) then transforms((,newability[lure])) ueot @@ -4356,6 +4359,7 @@ toughness=1 [/card] [card] name=Beck // Call +abilities=hasnokicker other={4}{W}{U} name(Call) kicker={4}{W}{U} name(Fuse) auto=if paid(alternative) then token(Bird,Creature Bird,1/1,white,flying)*4 @@ -6420,6 +6424,7 @@ toughness=3 [/card] [card] name=Breaking // Entering +abilities=hasnokicker other={4}{B}{R} name(Entering) kicker={4}{B}{R} name(Fuse) auto=if paid(alternative) then ability$!name(Put in play) name(Put in play) target(creature|graveyard) moveTo(mybattlefield) and!( transforms((,newability[haste])) ueot )! !$ controller @@ -7731,6 +7736,7 @@ toughness=2 [/card] [card] name=Catch // Release +abilities=hasnokicker other={4}{R}{W} name(Release) kicker={4}{R}{W} name(Fuse) auto=if paid(alternative) then ability$!name(Sacrifice artifact) name(Sacrifice artifact) notatarget(artifact|mybattlefield) sacrifice!$ controller @@ -7788,10 +7794,8 @@ toughness=1 [/card] [card] name=Cauldron's Gift -target=creature|myGraveyard -other={2}{B}{B}{B} name(Adamant) -auto=if paid(alternative) then deplete:4 controller -auto=may moveto(mybattlefield) && counter(1/1,1) +auto=if casted(this) then if spent({B}{B}{B}) then deplete:4 controller +auto=may name(Return creature in play) target(creature|myGraveyard) moveto(mybattlefield) and!( transforms((,newability[counter(1/1)])) oneshot )! text=Adamant — If at least three black mana was spent to cast this spell, put the top four cards of your library into your graveyard. -- You may choose a creature card in your graveyard. If you do, return it to the battlefield with an additional +1/+1 counter on it. mana={4}{B} type=Sorcery @@ -9302,12 +9306,11 @@ type=Instant [/card] [card] name=Clockwork Servant -other={W}{W}{W} name(Adamant White) -other={U}{U}{U} name(Adamant Blue) -other={R}{R}{R} name(Adamant Red) -other={G}{G}{G} name(Adamant Green) -other={B}{B}{B} name(Adamant Black) -auto=if paid(alternative) then draw:1 controller +auto=if casted(this) then if spent({G}{G}{G}) then draw:1 controller +auto=if casted(this) then if spent({W}{W}{W}) then draw:1 controller +auto=if casted(this) then if spent({U}{U}{U}) then draw:1 controller +auto=if casted(this) then if spent({R}{R}{R}) then draw:1 controller +auto=if casted(this) then if spent({B}{B}{B}) then draw:1 controller text=Adamant — When Clockwork Servant enters the battlefield, if at least three mana of the same color was spent to cast it, draw a card. mana={3} type=Artifact Creature @@ -9731,26 +9734,28 @@ type=Sorcery [card] name=Comet Storm abilities=hasotherkicker -auto=this(X>0) choice name(kicker = 0) name(kicker = 0) target(player,creature,planeswalker) damage:X -auto=this(X>1) choice name(kicker = 1) name(kicker = 1) target(<2>player,creature,planeswalker) damage:Xminus1minusend -auto=this(X>2) choice name(kicker = 2) name(kicker = 2) target(<3>player,creature,planeswalker) damage:Xminus2minusend -auto=this(X>3) choice name(kicker = 3) name(kicker = 3) target(<4>player,creature,planeswalker) damage:Xminus3minusend -auto=this(X>4) choice name(kicker = 4) name(kicker = 4) target(<5>player,creature,planeswalker) damage:Xminus4minusend -auto=this(X>5) choice name(kicker = 5) name(kicker = 5) target(<6>player,creature,planeswalker) damage:Xminus5minusend -auto=this(X>6) choice name(kicker = 6) name(kicker = 6) target(<7>player,creature,planeswalker) damage:Xminus6minusend -auto=this(X>7) choice name(kicker = 7) name(kicker = 7) target(<8>player,creature,planeswalker) damage:Xminus7minusend -auto=this(X>8) choice name(kicker = 8) name(kicker = 8) target(<9>player,creature,planeswalker) damage:Xminus8minusend -auto=this(X>9) choice name(kicker = 9) name(kicker = 9) target(<10>player,creature,planeswalker) damage:Xminus9minusend -auto=this(X>10) choice name(kicker = 10) name(kicker = 10) target(<11>player,creature,planeswalker) damage:Xminus10minusend -auto=this(X>11) choice name(kicker = 11) name(kicker = 11) target(<12>player,creature,planeswalker) damage:Xminus11minusend -auto=this(X>12) choice name(kicker = 12) name(kicker = 12) target(<13>player,creature,planeswalker) damage:Xminus12minusend -auto=this(X>13) choice name(kicker = 13) name(kicker = 13) target(<14>player,creature,planeswalker) damage:Xminus13minusend -auto=this(X>14) choice name(kicker = 14) name(kicker = 14) target(<15>player,creature,planeswalker) damage:Xminus14minusend -auto=this(X>15) choice name(kicker = 15) name(kicker = 15) target(<16>player,creature,planeswalker) damage:Xminus15minusend -auto=this(X>16) choice name(kicker = 16) name(kicker = 16) target(<17>player,creature,planeswalker) damage:Xminus16minusend -auto=this(X>17) choice name(kicker = 17) name(kicker = 17) target(<18>player,creature,planeswalker) damage:Xminus17minusend -auto=this(X>18) choice name(kicker = 18) name(kicker = 18) target(<19>player,creature,planeswalker) damage:Xminus18minusend -auto=this(X>19) choice name(kicker = 19) name(kicker = 19) target(<20>player,creature,planeswalker) damage:Xminus19minusend +other={X}{R}{R} name(Pay kicker) +auto=this(X>0) ifnot paid(alternative) then target(player,creature,planeswalker) damage:X +auto=this(X>0) if paid(alternative) then choice name(kicker = 0) name(kicker = 0) name(kicker = 0) target(player,creature,planeswalker) damage:X +auto=this(X>1) if paid(alternative) then choice name(kicker = 1) name(kicker = 1) name(kicker = 1) target(<2>player,creature,planeswalker) damage:Xminus1minusend +auto=this(X>2) if paid(alternative) then choice name(kicker = 2) name(kicker = 2) name(kicker = 2) target(<3>player,creature,planeswalker) damage:Xminus2minusend +auto=this(X>3) if paid(alternative) then choice name(kicker = 3) name(kicker = 3) name(kicker = 3) target(<4>player,creature,planeswalker) damage:Xminus3minusend +auto=this(X>4) if paid(alternative) then choice name(kicker = 4) name(kicker = 4) name(kicker = 4) target(<5>player,creature,planeswalker) damage:Xminus4minusend +auto=this(X>5) if paid(alternative) then choice name(kicker = 5) name(kicker = 5) name(kicker = 5) target(<6>player,creature,planeswalker) damage:Xminus5minusend +auto=this(X>6) if paid(alternative) then choice name(kicker = 6) name(kicker = 6) name(kicker = 6) target(<7>player,creature,planeswalker) damage:Xminus6minusend +auto=this(X>7) if paid(alternative) then choice name(kicker = 7) name(kicker = 7) name(kicker = 7) target(<8>player,creature,planeswalker) damage:Xminus7minusend +auto=this(X>8) if paid(alternative) then choice name(kicker = 8) name(kicker = 8) name(kicker = 8) target(<9>player,creature,planeswalker) damage:Xminus8minusend +auto=this(X>9) if paid(alternative) then choice name(kicker = 9) name(kicker = 9) name(kicker = 9) target(<10>player,creature,planeswalker) damage:Xminus9minusend +auto=this(X>10) if paid(alternative) then choice name(kicker = 10) name(kicker = 10) name(kicker = 10) target(<11>player,creature,planeswalker) damage:Xminus10minusend +auto=this(X>11) if paid(alternative) then choice name(kicker = 11) name(kicker = 11) name(kicker = 11) target(<12>player,creature,planeswalker) damage:Xminus11minusend +auto=this(X>12) if paid(alternative) then choice name(kicker = 12) name(kicker = 12) name(kicker = 12) target(<13>player,creature,planeswalker) damage:Xminus12minusend +auto=this(X>13) if paid(alternative) then choice name(kicker = 13) name(kicker = 13) name(kicker = 13) target(<14>player,creature,planeswalker) damage:Xminus13minusend +auto=this(X>14) if paid(alternative) then choice name(kicker = 14) name(kicker = 14) name(kicker = 14) target(<15>player,creature,planeswalker) damage:Xminus14minusend +auto=this(X>15) if paid(alternative) then choice name(kicker = 15) name(kicker = 15) name(kicker = 15) target(<16>player,creature,planeswalker) damage:Xminus15minusend +auto=this(X>16) if paid(alternative) then choice name(kicker = 16) name(kicker = 16) name(kicker = 16) target(<17>player,creature,planeswalker) damage:Xminus16minusend +auto=this(X>17) if paid(alternative) then choice name(kicker = 17) name(kicker = 17) name(kicker = 17) target(<18>player,creature,planeswalker) damage:Xminus17minusend +auto=this(X>18) if paid(alternative) then choice name(kicker = 18) name(kicker = 18) name(kicker = 18) target(<19>player,creature,planeswalker) damage:Xminus18minusend +auto=this(X>19) if paid(alternative) then choice name(kicker = 19) name(kicker = 19) name(kicker = 19) target(<20>player,creature,planeswalker) damage:Xminus19minusend text=Multikicker {1} (You may pay an additional {1} any number of times as you cast this spell.) -- Choose any target, then choose another target for each time this spell was kicked. Comet Storm deals X damage to each of them. mana={X}{R}{R} type=Instant @@ -11468,7 +11473,7 @@ toughness=2 name=Daghatar the Adamant abilities=vigilance auto=counter(1/1,4) -auto={1}{BG}{BG}:target(creature) counter(1/1,-1) && transforms((,newability[target(another creature) counter(1/1,1)])) +auto={1}{BG}{BG}:name(Move 1/1 counter) target(creature[counter{1/1}]|battlefield) transforms((,newability[name(Put 1/1 counter) target(other creature|battlefield) counter(1/1)],newability[counter(1/1.-1)])) oneshot text=Vigilance -- Daghatar the Adamant enters the battlefield with four +1/+1 counters on it. -- {1}{BG}{BG}: Move a +1/+1 counter from target creature onto a second target creature. mana={3}{W} type=Legendary Creature @@ -13741,6 +13746,7 @@ type=Instant [/card] [card] name=Down // Dirty +abilities=hasnokicker other={2}{G} name(Dirty) kicker={2}{G} name(Fuse) otherrestriction=type(*|mygraveyard)~morethan~0 @@ -15348,8 +15354,7 @@ subtype=Equipment [card] name=Embereth Paladin abilities=haste -other={1}{R}{R}{R} name(Adamant) -auto=if paid(alternative) then counter(1/1,1) +auto=if casted(this) then if spent({R}{R}{R}) then counter(1/1) text=Haste -- Adamant — If at least three red mana was spent to cast this spell, Embereth Paladin enters the battlefield with a +1/+1 counter on it. mana={3}{R} type=Creature @@ -17009,6 +17014,7 @@ toughness=3 [/card] [card] name=Far // Away +abilities=hasnokicker other={2}{B} name(Away) kicker={2}{B} name(Fuse) restriction=type(creature|battlefield)~morethan~0 @@ -18380,8 +18386,10 @@ toughness=6 [card] name=Flesh // Blood target=creature +abilities=hasnokicker other={R}{G} name(Blood) kicker={R}{G} name(Fuse) +otherrestriction=type(creature|myBattlefield)~morethan~0 auto=if paid(alternative) then transforms((,newability[name(Deal damage) damage:power target(player^creature)])) forever auto=if paid(kicker) then ability$!name(Creature deals damage) name(Creature deals damage) target(creature|myBattlefield) transforms((,newability[name(Deal damage) damage:power target(player^creature)])) forever!$ controller auto=ifnot paid(alternative) then counter(1/1,storedpower) @@ -18658,11 +18666,9 @@ subtype=Equipment [/card] [card] name=Foreboding Fruit -other={B}{B}{B} name(Adamant) -auto=if paid(alternative) then token(-473141) target=player -auto=draw:2 -auto=life:-2 +auto=draw:2 && life:-2 +auto=if casted(this) then if spent({B}{B}{B}) then token(-473141) controller text=Target player draws two cards and loses 2 life. -- Adamant — If at least three black mana was spent to cast this spell, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") mana={2}{B} type=Sorcery @@ -19519,8 +19525,7 @@ toughness=2 [/card] [card] name=Garenbrig Paladin -other={2}{G}{G}{G} name(Adamant) -auto=if paid(alternative) then counter(1/1,1) +auto=if casted(this) then if spent({G}{G}{G}) then counter(1/1) auto=cantbeblockedby(creature[power<=2]) text=Adamant — If at least three green mana was spent to cast this spell, Garenbrig Paladin enters the battlefield with a +1/+1 counter on it. -- Garenbrig Paladin can't be blocked by creatures with power 2 or less. mana={4}{G} @@ -20457,6 +20462,7 @@ toughness=6 [card] name=Give // Take target=creature +abilities=hasnokicker other={2}{U} name(Take) kicker={2}{U} name(Fuse) otherrestriction=type(creature|mybattlefield)~morethan~0 @@ -23804,12 +23810,11 @@ type=Legendary Artifact [/card] [card] name=Henge Walker -other={W}{W}{W} name(Adamant White) -other={U}{U}{U} name(Adamant Blue) -other={R}{R}{R} name(Adamant Red) -other={G}{G}{G} name(Adamant Green) -other={B}{B}{B} name(Adamant Black) -auto=if paid(alternative) then counter(1/1,1) +auto=if casted(this) then if spent({G}{G}{G}) then counter(1/1) +auto=if casted(this) then if spent({W}{W}{W}) then counter(1/1) +auto=if casted(this) then if spent({U}{U}{U}) then counter(1/1) +auto=if casted(this) then if spent({R}{R}{R}) then counter(1/1) +auto=if casted(this) then if spent({B}{B}{B}) then counter(1/1) text=Adamant — If at least three mana of the same color was spent to cast this spell, Henge Walker enters the battlefield with a +1/+1 counter on it. mana={3} type=Artifact Creature @@ -25274,12 +25279,14 @@ type=Enchantment [/card] [card] name=Illuminate +abilities=hasotherkicker target=creature +other={X}{2}{R}{R} name(Kicker Red) +kicker={3}{U} name(Kicker Blue or both) auto=damage:X -other={X}{2}{R}{R} name(Kicker {2}{R}) auto=if paid(alternative) then damage:X targetcontroller -kicker={3}{U} -auto=kicker ifnot paid(alternative) then draw:X controller +auto=if paid(kicker) then draw:X controller +auto=if paid(kicker) then pay({2}{R}) name(Pay also kicker red) damage:castx targetcontroller text=Kicker {2}{R} and/or {3}{U} (You may pay an additional {2}{R} and/or {3}{U} as you cast this spell.) -- Illuminate deals X damage to target creature. If Illuminate was kicked with its {2}{R} kicker, it deals X damage to that creature's controller. If Illuminate was kicked with its {3}{U} kicker, you draw X cards. mana={X}{R} type=Sorcery @@ -31014,8 +31021,7 @@ toughness=3 [card] name=Locthwain Paladin abilities=menace -other={1}{B}{B}{B} name(Adamant) -auto=if paid(alternative) then counter(1/1,1) +auto=if casted(this) then if spent({B}{B}{B}) then counter(1/1) text=Menace (This creature can't be blocked except by two or more creatures.) -- Adamant — If at least three black mana was spent to cast this spell, Locthwain Paladin enters the battlefield with a +1/+1 counter on it. mana={3}{B} type=Creature @@ -34259,11 +34265,8 @@ type=Enchantment [/card] [card] name=Mythos of Brokkos -abilities=hiddenface -aicode=activate moveto(myGraveyard) target(*|mylibrary) -other={U}{B}{G} name(Spend U and B) -auto=if paid(alternative) then (search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(<1>*|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>*|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend && moveTo(myHand) target(artifact,enchantment,land,creature,planeswalker|myGraveyard) -auto=ifnot paid(alternative) then moveTo(myHand) target(artifact,enchantment,land,creature,planeswalker|myGraveyard) +auto=if casted(this) then if spent({U}{B}) then name(Search library) target(*|mylibrary) moveto(myGraveyard) and!( transforms((,newability[name(Return to hand) moveTo(myHand) target(*[-instant;-sorcery]|myGraveyard)],newability[shuffle])) oneshot )! +auto=if casted(this) then ifnot spent({U}{B}) then name(Return to hand) moveTo(myHand) target(*[-instant;-sorcery]|myGraveyard) text=If {U}{B} -- was spent to cast this spell, search your library for a card, put that card into your graveyard, then shuffle your library. -- Return up to two permanent cards from your graveyard to your hand. mana={2}{G}{G} type=Sorcery @@ -34271,27 +34274,24 @@ type=Sorcery [card] name=Mythos of Illuna target=*[-instant;-sorcery] -other={R}{G}{U}{U} name(Spend B and G) -auto=ifnot paid(alternative) then clone -auto=if paid(alternative) then clone and!( transforms((,newability[target(creature|opponentbattlefield) dynamicability])) ueot )! +auto=if casted(this) then ifnot spent({R}{G}) then clone +auto=if casted(this) then if spent({R}{G}) then clone and!( if cantargetcard(creature|*) then transforms((,newability[target(creature|opponentbattlefield) dynamicability])) oneshot )! text=Create a token that's a copy of target permanent. If {R}{G} was spent to cast this spell, instead create a token that's a copy of that permanent, except the token has "When this permanent enters the battlefield, if it's a creature, it fights up to one target creature you don't control." mana={2}{U}{U} type=Sorcery [/card] [card] name=Mythos of Nethroi -other={G}{W}{B} name(Spend G and W) -auto=if paid(alternative) then destroy target(*[-land]|battlefield) -auto=ifnot paid(alternative) then destroy target(creature|battlefield) +auto=if casted(this) then if spent({G}{W}) then destroy target(*[-land]|battlefield) +auto=if casted(this) then ifnot spent({G}{W}) then destroy target(creature|battlefield) text=Destroy target nonland permanent if it's a creature or if {G}{W} was spent to cast this spell. mana={2}{B} type=Instant [/card] [card] name=Mythos of Vadrok -other={W}{U}{R}{R} name(Spend W and U) -auto=ifnot paid(alternative) then thisforeach(variable{5}) ability$!name(Deal 1 damage) name(Deal 1 damage) target(creature,planewsalker) damage:1!$ controller -auto=if paid(alternative) then thisforeach(variable{5}) ability$!name(Deal 1 damage) name(Deal 1 damage) target(creature,planewsalker) damage:1 && cantattack uynt && cantblock uynt!$ controller +auto=if casted(this) then ifnot spent({W}{U}) then thisforeach(variable{5}) ability$!name(Deal 1 damage) name(Deal 1 damage) target(creature,planewsalker) damage:1!$ controller +auto=if casted(this) then if spent({W}{U}) then thisforeach(variable{5}) ability$!name(Deal 1 damage) name(Deal 1 damage) target(creature,planewsalker) transforms((,newability[damage:1],newability[cantattack],newability[cantblock],newability[noactivatedability])) uynt!$ controller text=Mythos of Vadrok deals 5 damage divided as you choose among any number of target creatures and/or planeswalkers. If {W}{U} was spent to cast this spell, until your next turn, those permanents can't attack or block and their activated abilities can't be activated. mana={2}{R}{R} type=Sorcery @@ -34578,12 +34578,12 @@ toughness=2 [/card] [card] name=Necravolver -other={2}{B}{W} name(Kicker W) -auto=if paid(alternative) then counter(1/1) -auto=if paid(alternative) then transforms((,newability[lifelink])) forever -kicker={1}{G} -auto=kicker ifnot paid(alternative) then counter(1/1,2) -auto=kicker ifnot paid(alternative) then transforms((,newability[trample])) forever +abilities=hasotherkicker +other={2}{B}{W} name(Kicker White) +kicker={1}{G} name(Kicker Green or both) +auto=if paid(alternative) then transforms((,newability[counter(1/1)],newability[lifelink])) forever +auto=if paid(kicker) then transforms((,newability[counter(1/1.2)],newability[trample])) forever +auto=if paid(kicker) then pay({W}) name(Pay also kicker white) transforms((,newability[counter(1/1)],newability[lifelink])) forever text=Kicker {1}{G} and/or {W} (You may pay an additional {1}{G} and/or {W} as you cast this spell.) -- If Necravolver was kicked with its {1}{G} kicker, it enters the battlefield with two +1/+1 counters on it and with trample. -- If Necravolver was kicked with its {W} kicker, it enters the battlefield with a +1/+1 counter on it and with "Whenever Necravolver deals damage, you gain that much life." mana={2}{B} type=Creature @@ -35178,10 +35178,12 @@ toughness=4 [/card] [card] name=Nightscape Battlemage -other={4}{B}{R} name(Kicker 2R) +abilities=hasotherkicker +other={4}{B}{R} name(Kicker Red) +kicker={2}{U} name(Kicker Blue or both) auto=if paid(alternative) then destroy target(land) -kicker={2}{U} -auto=kicker ifnot paid(alternative) then target(creature[-black]) moveto(ownerhand) +auto=if paid(kicker) then ability$!name(Return creatures) name(Return creatures) target(creature[-black]) moveto(ownerhand)!$ controller +auto=if paid(kicker) then pay({2}{R}) name(Pay also kicker red) destroy target(land|battlefield) text=Kicker {2}{U} and/or {2}{R} (You may pay an additional {2}{U} and/or {2}{R} as you cast this spell.) -- When Nightscape Battlemage enters the battlefield, if it was kicked with its {2}{U} kicker, return up to two target nonblack creatures to their owners' hands. -- When Nightscape Battlemage enters the battlefield, if it was kicked with its {2}{R} kicker, destroy target land. mana={2}{B} type=Creature @@ -36438,9 +36440,9 @@ type=Instant [/card] [card] name=Once and Future -other={1}{G}{G}{G} name(Adamant) -auto=ifnot paid(alternative) then moveto(myHand) target(*|myGraveyard) && moveto(myLibrary) target(*|myGraveyard) && moveto(exile) all(this) -auto=if paid(alternative) then moveto(myHand) target(*|mygraveyard) && moveto(exile) all(this) +abilities=exiledeath +auto=if casted(this) then ifnot spent({G}{G}{G}) then target(*|myGraveyard) moveto(myHand) and!( transforms((,newability[name(Return to library) target(*|myGraveyard) moveto(myLibrary)])) oneshot )! +auto=if casted(this) then if spent({G}{G}{G}) then target(*|mygraveyard) moveto(myHand) text=Return target card from your graveyard to your hand. Put up to one other target card from your graveyard on top of your library. Exile Once and Future. -- Adamant — If at least three green mana was spent to cast this spell, instead return those cards to your hand and exile Once and Future. mana={3}{G} type=Instant @@ -37091,10 +37093,9 @@ type=Instant [/card] [card] name=Outmuscle -other={1}{G}{G}{G} name(Adamant) target=creature|myBattlefield auto=counter(1/1,1) -auto=if paid(alternative) then indestructible ueot +auto=if casted(this) then if spent({G}{G}{G}) then transforms((,newability[indestructible])) ueot auto=transforms((,newability[target(creature|opponentbattlefield) dynamicability])) ueot text=Put a +1/+1 counter on target creature you control, then it fights target creature you don't control. (Each deals damage equal to its power to the other.) -- Adamant — If at least three green mana was spent to cast this spell, the creature you control gains indestructible until end of turn. mana={3}{G} @@ -39218,6 +39219,7 @@ type=Sorcery [/card] [card] name=Profit // Loss +abilities=hasnokicker other={2}{B} name(Loss) kicker={2}{B} name(Fuse) auto=if paid(alternative) then all(creature|opponentbattlefield) -1/-1 ueot @@ -39288,6 +39290,7 @@ toughness=2 [/card] [card] name=Protect // Serve +abilities=hasnokicker other={1}{U} name(Serve) kicker={1}{U} name(Fuse) auto=if paid(alternative) then target(creature) -6/0 ueot @@ -40210,11 +40213,12 @@ toughness=3 [/card] [card] name=Rakavolver -other={2}{R}{U} name(Kicker blu mana} -auto=if paid(alternative) then counter(1/1) && flying -kicker={1}{W} -auto=kicker ifnot paid(alternative) then counter(1/1,2) && lifelink -auto=kicker if paid(alternative) then counter(1/1,3) && lifelink && flying +abilities=hasotherkicker +other={2}{R}{U} name(Kicker Blue) +kicker={1}{W} name(Kicker White or both) +auto=if paid(alternative) then transforms((,newability[counter(1/1)],newability[flying])) forever +auto=if paid(kicker) then transforms((,newability[counter(1/1.2)],newability[lifelink])) forever +auto=if paid(kicker) then pay({U}) name(Pay also kicker blue) transforms((,newability[counter(1/1)],newability[flying])) forever text=Kicker {1}{W} and/or {U} (You may pay an additional {1}{W} and/or {U} as you cast this spell.) -- If Rakavolver was kicked with its {1}{W} kicker, it enters the battlefield with two +1/+1 counters on it and with "Whenever Rakavolver deals damage, you gain that much life." -- If Rakavolver was kicked with its {U} kicker, it enters the battlefield with a +1/+1 counter on it and with flying. mana={2}{R} type=Creature @@ -40336,9 +40340,8 @@ toughness=3 [/card] [card] name=Rally for the Throne -auto=create(Human:creature Human:1/1:white)*2 -other={W}{W}{W} name(Adamant) -auto=if paid(alternative) then life:type:creature:mybattlefield controller +auto=token(Human,Creature Human,1/1,white)*2 +auto=if casted(this) then if spent({W}{W}{W}) then life:type:creature:mybattlefield controller text=Create two 1/1 white Human creature tokens. -- Adamant — If at least three white mana was spent to cast this spell, you gain 1 life for each creature you control. mana={2}{W} type=Instant @@ -40858,6 +40861,7 @@ type=Sorcery [/card] [card] name=Ready // Willing +abilities=hasnokicker other={1}{W}{B} name(Willing) kicker={1}{W}{B} name(Fuse) auto=if paid(alternative) then all(creature|mybattlefield) transforms((,newability[lifelink],newability[deathtouch])) ueot @@ -42638,14 +42642,11 @@ subtype=Aura [/card] [card] name=River's Grasp -aicode=activate reject notatarget(*[-land]|opponenthand) -other={3}{B} name(Spend black mana) -auto=if paid(alternative) then reveal:type:*:opponenthand revealzone(opponenthand) optionone name(choose discards) notatarget(<1>*[-land]|reveal) transforms((,newability[moveto(ownerhand) all(other *|reveal)],newability[moveto(ownerhand) and!(reject)!])) ueot optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerhand) and!( all(*|reveal) moveto(ownerhand) )! optiontwoend revealend -auto=ifnot paid(alternative) then target(creature|battlefield) moveto(ownerhand) -kicker={B} -auto=kicker ifnot paid(alternative) then reveal:type:*:opponenthand revealzone(opponenthand) optionone name(choose discards) notatarget(<1>*[-land]|reveal) transforms((,newability[moveto(ownerhand) all(other *|reveal)],newability[moveto(ownerhand) and!(reject)!])) ueot optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerhand) and!( all(*|reveal) moveto(ownerhand) )! optiontwoend revealend +auto=if casted(this) then if spent({B}) then if type(*[-land]|opponenthand)~morethan~0 then ability$!name(Discard non-land card) name(Discard non-land card) name(Discard non-land card) reject target(*[-land]|opponenthand)!$ controller +auto=if casted(this) then if spent({B}) then if type(*[-land]|opponenthand)~equalto~0 then ability$!name(Look opponent's hand) name(Look opponent's hand) name(Look opponent's hand) target(*|opponenthand) moveto(opponenthand)!$ controller +auto=if casted(this) then if spent({U}) then ability$!name(Return creature to hand) name(Return creature to hand) target(creature|battlefield) moveto(ownerhand)!$ controller text=If {U} was spent to cast River's Grasp, return up to one target creature to its owner's hand. If {B} was spent to cast River's Grasp, target player reveals his or her hand, you choose a nonland card from it, then that player discards that card. (Do both if {U}{B} was spent.) -mana={3}{U} +mana={3}{UB} type=Sorcery [/card] [card] @@ -45102,9 +45103,8 @@ type=Snow Sorcery [card] name=Searing Barrage target=creature -other={2}{R}{R}{R} name(Adamant) auto=damage:5 -auto=if paid(alternative) then damage:3 targetController +auto=if casted(this) then if spent({R}{R}{R}) then damage:3 targetController text=Searing Barrage deals 5 damage to target creature. -- Adamant — If at least three red mana was spent to cast this spell, Searing Barrage deals 3 damage to that creature's controller. mana={4}{R} type=Instant @@ -47003,9 +47003,8 @@ toughness=5 [/card] [card] name=Silverflame Ritual -other={1}{W}{W}{W} name(Adamant) -auto=all(creature|mybattlefield) counter(1/1,1) -auto=if paid(alternative) then all(creature|mybattlefield) vigilance +auto=all(creature|mybattlefield) counter(1/1) +auto=if casted(this) then if spent({W}{W}{W}) then all(creature|mybattlefield) transforms((,newability[vigilance])) ueot text=Put a +1/+1 counter on each creature you control. -- Adamant — If at least three white mana was spent to cast this spell, creatures you control gain vigilance until end of turn. mana={3}{W} type=Sorcery @@ -47917,9 +47916,8 @@ toughness=2 [card] name=Slaying Fire target=creature,player,planeswalker -other={R}{R}{R} name(Adamant) -auto=if paid(alternative) then name(Deals 4 damages) name(Deals 4 damages) damage:4 target(player,creature,planeswalker) -auto=ifnot paid(alternative) then name(Deals 3 damages) name(Deals 3 damages) damage:3 target(player,creature,planeswalker) +auto=if casted(this) then if spent({R}{R}{R}) then name(Deals 4 damages) name(Deals 4 damages) damage:4 +auto=if casted(this) then ifnot spent({R}{R}{R}) then name(Deals 3 damages) name(Deals 3 damages) damage:3 text=Slaying Fire deals 3 damage to any target. -- Adamant — If at least three red mana was spent to cast this spell, it deals 4 damage instead. mana={2}{R} type=Instant @@ -50799,10 +50797,12 @@ toughness=2 [/card] [card] name=Stormscape Battlemage +abilities=hasotherkicker other={2}{U}{W} name(Kicker white) +kicker={2}{B} name(Kicker black or both) auto=if paid(alternative) then life:3 controller -kicker={2}{B} -auto=kicker ifnot paid(alternative) then bury target(creature[-black]) +auto=if paid(kicker) then bury target(creature[-black]) +auto=if paid(kicker) then pay({W}) name(Pay also kicker white) life:3 controller text=Kicker {W} and/or {2}{B}(You may pay an additional {W} and/or {2}{B} as you cast this spell.) -- When Stormscape Battlemage enters the battlefield, if it was kicked with its {W} kicker, you gain 3 life. -- When Stormscape Battlemage enters the battlefield, if it was kicked with its {2}{B} kicker, destroy target nonblack creature. That creature can't be regenerated. mana={2}{U} type=Creature @@ -51253,9 +51253,9 @@ toughness=5 [card] name=Sundering Stroke other={R}{R}{R}{R}{R}{R}{R} name(Adamant) -auto=if paid(alternative) then damage:7 target(player,creature,planeswalker) -auto=ifnot paid(alternative) then ability$!name(Deal 1 damage) name(Deal 1 damage) target(player,creature,planewsalker) damage:2!$ controller -auto=ifnot paid(alternative) then thisforeach(variable{3}) ability$!name(Deal 2 damage) name(Deal 2 damage) target(player,creature,planewsalker) damage:2!$ controller +auto=if casted(this) then if spent({R}{R}{R}{R}{R}{R}{R}) then damage:7 target(player,creature,planeswalker) +auto=if casted(this) then ifnot spent({R}{R}{R}{R}{R}{R}{R}) then ability$!name(Deal 1 damage) name(Deal 1 damage) target(player,creature,planewsalker) damage:1!$ controller +auto=if casted(this) then ifnot spent({R}{R}{R}{R}{R}{R}{R}) then thisforeach(variable{3}) ability$!name(Deal 2 damage) name(Deal 2 damage) target(player,creature,planewsalker) damage:2!$ controller text=Sundering Stroke deals 7 damage divided as you choose among one, two, or three targets. If at least seven red mana was spent to cast this spell, instead Sundering Stroke deals 7 damage to each of those permanents and/or players. mana={6}{R} type=Sorcery @@ -51339,10 +51339,12 @@ toughness=3 [/card] [card] name=Sunscape Battlemage +abilities=hasotherkicker other={4}{W}{U} name(kicker Blue) +kicker={1}{G} name(kicker Green or both) auto=if paid(alternative) then draw:2 controller -kicker={1}{G} -auto=kicker ifnot paid(alternative) then destroy target(creature[flying]) +auto=if paid(kicker) then destroy target(creature[flying]) +auto=if paid(kicker) then pay({2}{U}) name(Pay also kicker blue) draw:2 controller text=Kicker {1}{G} and/or {2}{U} (You may pay an additional {1}{G} and/or {2}{U} as you cast this spell.) -- When Sunscape Battlemage enters the battlefield, if it was kicked with its {1}{G} kicker, destroy target creature with flying. -- When Sunscape Battlemage enters the battlefield, if it was kicked with its {2}{U} kicker, draw two cards. mana={2}{W} type=Creature @@ -53619,8 +53621,7 @@ toughness=2 name=Thieving Skydiver abilities=flying,hasotherkicker other={X}{1}{U} name(Pay kicker) -auto=if paid(alternative) then choice name(Choose equipment artifact) target(artifact[equipment;manacost<=X]) moveTo(myBattlefield) and!(rehook)! -auto=if paid(alternative) then choice name(Choose non-equipment artifact) target(artifact[manacost<=X]) moveTo(myBattlefield) +auto=this(X>0) if paid(alternative) then choice name(Choose artifact) name(Choose artifact) name(Choose artifact) target(artifact[manacost<=X]|battlefield) moveTo(myBattlefield) and!( transforms((,newability[if cantargetcard(equipment|*) then name(Attach to Thieving Skydiver) name(Attach to Thieving Skydiver) rehook target(creature|myBattlefield)])) forever )! text=Kicker {X}. X can't be 0. (You may pay an additional {X} as you cast this spell.) -- Flying -- When Thieving Skydiver enters the battlefield, if it was kicked, gain control of target artifact with converted mana cost X or less. If that artifact is an Equipment, attach it to Thieving Skydiver. mana={1}{U} type=Creature @@ -53732,10 +53733,12 @@ toughness=3 [/card] [card] name=Thornscape Battlemage -other={2}{G}{W} name(Kicker white) +abilities=hasotherkicker +other={2}{G}{W} name(Kicker White) +kicker={R} name(Kicker Red or both) auto=if paid(alternative) then destroy target(artifact) -kicker={R} -auto=kicker ifnot paid(alternative) then damage:2 target(creature,player) +auto=if paid(kicker) then ability$!name(Deal 2 damage) name(Deal 2 damage) damage:2 target(creature,player)!$ controller +auto=if paid(kicker) then pay({W}) name(Pay also kicker white) destroy target(artifact) text=Kicker {R} and/or {W} (You may pay an additional {R} and/or {W} as you cast this spell.) -- When Thornscape Battlemage enters the battlefield, if it was kicked with its {R} kicker, it deals 2 damage to target creature or player. -- When Thornscape Battlemage enters the battlefield, if it was kicked with its {W} kicker, destroy target artifact. mana={2}{G} type=Creature @@ -54190,10 +54193,12 @@ toughness=4 [/card] [card] name=Thunderscape Battlemage -other={2}{R}{G} name(Kicker green) +abilities=hasotherkicker +other={2}{R}{G} name(Kicker Green) +kicker={1}{B} name(Kicker Black or both) auto=if paid(alternative) then destroy target(enchantment) -kicker={1}{B} -auto=kicker ifnot paid(alternative) then target(player) ability$!name(Discard 2 cards) reject notatarget(<2>*|myhand)!$ targetedplayer +auto=if paid(kicker) then target(player) ability$!name(Discard 2 cards) name(Discard 2 cards) reject notatarget(<2>*|myhand)!$ targetedplayer +auto=if paid(kicker) then pay({G}) name(Pay also kicker green) destroy target(enchantment) text=Kicker {1}{B} and/or {G} (You may pay an additional {1}{B} and/or {G} as you cast this spell.) -- When Thunderscape Battlemage enters the battlefield, if it was kicked with its {1}{B} kicker, target player discards two cards. -- When Thunderscape Battlemage enters the battlefield, if it was kicked with its {G} kicker, destroy target enchantment. mana={2}{R} type=Creature @@ -54604,6 +54609,7 @@ toughness=2 [card] name=Toil // Trouble target=player +abilities=hasnokicker other={2}{R} name(Trouble) kicker={2}{R} name(Fuse) auto=if paid(alternative) then damage:type:*:targetedpersonshand targetedplayer @@ -55677,6 +55683,7 @@ type=Sorcery [/card] [card] name=Turn // Burn +abilities=hasnokicker other={1}{R} name(Burn) kicker={1}{R} name(Fuse) auto=if paid(alternative) then ability$!name(Deal Damage) name(Deal Damage) damage:2 target(player,creature)!$ controller @@ -55697,11 +55704,10 @@ type=Instant [/card] [card] name=Turn into a Pumpkin -other={1}{U}{U}{U} name(Adamant) -auto=if paid(alternative) then token(-473141) target=*[-land] auto=moveto(ownerhand) auto=draw:1 controller +auto=if casted(this) then if spent({U}{U}{U}) then token(-473141) text=Return target nonland permanent to its owner's hand. Draw a card. -- Adamant — If at least three blue mana was spent to cast this spell, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") mana={3}{U} type=Instant @@ -56368,9 +56374,8 @@ type=Instant [/card] [card] name=Unexplained Vision -other={2}{U}{U}{U} name(Adamant) aicode=activate transforms((,newability[all(*[zpos<=3]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot -auto=if paid(alternative) then scry:3 scrycore delayed dontshow donothing scrycoreend scryend +auto=if casted(this) then if spent({U}{U}{U}) then scry:3 scrycore delayed dontshow donothing scrycoreend scryend auto=draw:3 controller text=Draw three cards. -- Adamant — If at least three blue mana was spent to cast this spell, scry 3. mana={4}{U} @@ -57068,8 +57073,7 @@ toughness=4 [card] name=Vantress Paladin abilities=flying -other={1}{U}{U}{U} name(Adamant) -auto=if paid(alternative) then counter(1/1,1) +auto=if casted(this) then if spent({U}{U}{U}) then counter(1/1) text=Flying -- Adamant — If at least three blue mana was spent to cast this spell, Vantress Paladin enters the battlefield with a +1/+1 counter on it. mana={3}{U} type=Creature @@ -59121,6 +59125,7 @@ type=Enchantment [/card] [card] name=Wear // Tear +abilities=hasnokicker other={W} name(Tear) kicker={W} name(Fuse) otherrestriction=type(enchantment|battlefield)~morethan~0 diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index 996b224a9..a80ec6dcc 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -5446,7 +5446,7 @@ toughness=1 [card] name=Arctic Merfolk abilities=hasotherkicker -auto=alternative counter(1/1,1) all(this) +auto=if paid(alternative) then counter(1/1,1) all(this) text=Kicker - Return a creature you control to its owner's hand. (You may return a creature you control to its owner's hand in addition to any other costs as you cast this spell.) -- If Arctic Merfolk was kicked, it enters the battlefield with a +1/+1 counter on it. mana={1}{U} other={1}{U}{H(creature|mybattlefield)} name(Pay Kicker) @@ -12192,11 +12192,11 @@ type=Sorcery [card] name=Blood Tribute abilities=hasotherkicker -target=opponent -auto=lifeleech:-halfdownopponentlifetotal targetedplayer +other={4}{B}{B}{T(vampire|mybattlefield)} name(Pay Kicker) +auto=if paid(alternative) then lifeleech:-halfdownopponentlifetotal opponent +auto=ifnot paid(alternative) then life:-halfdownopponentlifetotal opponent text=Kicker - Tap an untapped Vampire you control. (You may tap a Vampire you control in addition to any other costs as you cast this spell.) -- Target opponent loses half his or her life, rounded up. If Blood Tribute was kicked, you gain life equal to the life lost this way. mana={4}{B}{B} -other={4}{b}{b}{t(vampire|mybattlefield)} name(Pay Kicker) type=Sorcery [/card] [card] @@ -12998,11 +12998,11 @@ toughness=2 name=Bog Down abilities=hasotherkicker target=player -auto=ability$!name(discard 2 cards) target(<2>*|myhand) reject!$ targetedplayer -auto=alternative ability$!target(*|myhand) reject!$ targetedplayer +other={2}{B}{S(land|mybattlefield)}{S(land|mybattlefield)} name(Pay Kicker) +auto=ifnot paid(alternative) then ability$!name(discard 2 cards) name(discard 2 cards) notatarget(<2>*|myhand) reject!$ targetedplayer +auto=if paid(alternative) then ability$!name(discard 3 cards) name(discard 3 cards) notatarget(<2>*|myhand) reject!$ targetedplayer text=Kicker - Sacrifice two lands. (You may sacrifice two lands in addition to any other costs as you cast this spell.) -- Target player discards two cards. If Bog Down was kicked, that player discards three cards instead. mana={2}{B} -other={2}{B}{s(land|mybattlefield)}{s(land|mybattlefield)} name(Pay Kicker) type=Sorcery [/card] [card] @@ -31465,8 +31465,8 @@ type=Enchantment [card] name=Dralnu's Pet abilities=hasotherkicker -other={3}{B}{U}{U}{D(other creature|myhand)} name(Kicker) -auto=if paid(alternative) then counter(1/1,storedmanacost) && transforms((,flying)) forever +other={3}{B}{U}{U}{D(other creature|myhand)} name(Pay Kicker) +auto=if paid(alternative) then counter(1/1,storedmanacost) && transforms((,newability[flying])) forever text=Kicker - {2}{B}, Discard a creature card. (You may pay {2}{B} and discard a creature card in addition to any other costs as you cast this spell.) -- If Dralnu's Pet was kicked, it enters the battlefield with flying and with X +1/+1 counters on it, where X is the discarded card's converted mana cost. mana={1}{U}{U} type=Creature @@ -33224,10 +33224,11 @@ type=Land [card] name=Dwarven Landslide abilities=hasotherkicker -target=land -auto=destroy other={4}{R}{R}{S(land|myBattlefield)} name(Pay Kicker) -auto=alternative destroy target(land) +restriction=type(land|battlefield)~morethan~0 +otherrestriction=type(land|battlefield)~morethan~1 +auto=ifnot paid(alternative) then name(Destroy 1 land) name(Destroy 1 land) destroy target(land|battlefield) +auto=if paid(alternative) then name(Destroy 2 lands) name(Destroy 2 lands) destroy target(<2>land|battlefield) text=Kicker - {2}{R}, Sacrifice a land. (You may pay {2}{R} and sacrifice a land in addition to any other costs as you cast this spell.) -- Destroy target land. If Dwarven Landslide was kicked, destroy another target land. mana={3}{R} type=Sorcery @@ -61440,7 +61441,7 @@ toughness=2 [card] name=Kangee, Aerie Keeper abilities=flying,hasotherkicker -other={X}{4}{W}{U} name(Kicker) +other={X}{4}{W}{U} name(Pay Kicker) auto=if paid(alternative) then counter(0/0,X,Feather) auto=thisforeach(counter{0/0.1.Feather}) lord(other creature[bird]) 1/1 text=Kicker {X}{2} (You may pay an additional {X}{2} as you cast this spell.) -- Flying -- When Kangee, Aerie Keeper enters the battlefield, if it was kicked, put X feather counters on it. -- Other Bird creatures get +1/+1 for each feather counter on Kangee, Aerie Keeper. @@ -69483,7 +69484,7 @@ name=Magma Burst abilities=hasotherkicker target=creature,player auto=damage:3 -auto=alternative damage:3 target(other creature,player) +auto=if paid(alternative) then damage:3 target(other creature,player) text=Kicker - Sacrifice two lands. (You may sacrifice two lands in addition to any other costs as you cast this spell.) -- Magma Burst deals 3 damage to target creature or player. If Magma Burst was kicked, it deals 3 damage to another target creature or player. mana={3}{R} other={3}{r}{s(land|mybattlefield)}{s(land|mybattlefield)} name(Pay Kicker) @@ -86246,9 +86247,9 @@ type=Enchantment [card] name=Phyrexian Scuta abilities=hasotherkicker -text=Kicker - Pay 3 life. (You may pay 3 life in addition to any other costs as you cast this spell.) -- If Phyrexian Scuta was kicked, it enters the battlefield with two +1/+1 counters on it. -auto=alternative counter(1/1,2) all(this) other={3}{B}{L:3} name(Pay Kicker) +auto=if paid(alternative) then counter(1/1,2) all(this) +text=Kicker - Pay 3 life. (You may pay 3 life in addition to any other costs as you cast this spell.) -- If Phyrexian Scuta was kicked, it enters the battlefield with two +1/+1 counters on it. mana={3}{B} type=Creature subtype=Zombie @@ -88348,12 +88349,12 @@ subtype=Aura [card] name=Primal Growth abilities=hasotherkicker +other={2}{G}{S(creature|mybattlefield)} name(Pay Kicker) aicode=activate transforms((,newability[ifnot paid(alternative) then target(land[basic]|mylibrary) moveto(mybattlefield)],newability[if paid(alternative) then target(<2>land[basic]|mylibrary) moveto(mybattlefield)])) ueot auto=ifnot paid(alternative) then name(search card) reveal:plibrarycount optionone name(choose card) target(land[basic]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield) and!(tap(noevent))!)! afterrevealedend revealend auto=if paid(alternative) then name(search card) reveal:plibrarycount optionone name(choose card) target(land[basic]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield) and!(tap(noevent))!)! afterrevealedend revealend text=Kicker - Sacrifice a creature. (You may sacrifice a creature in addition to any other costs as you cast this spell.) -- Search your library for a basic land card, put that card onto the battlefield, then shuffle your library. If Primal Growth was kicked, instead search your library for two basic land cards, put them onto the battlefield, then shuffle your library. mana={2}{G} -other={2}{G}{S(creature|mybattlefield)} name(Pay Kicker) type=Sorcery [/card] [card] @@ -97463,12 +97464,13 @@ type=Instant [card] name=Rushing River abilities=hasotherkicker -target=*[-land]|battlefield -auto=moveto(ownerhand) -auto=alternative target(*[-land]|battlefield) moveto(ownerhand) +other={2}{U}{S(land|mybattlefield)} name(Pay Kicker) +restriction=type(*[-land]|battlefield)~morethan~0 +otherrestriction=type(*[-land]|battlefield)~morethan~1 +auto=ifnot paid(alternative) then name(Return 1 non-land permanent) name(Return 1 non-land permanent) target(*[-land]|battlefield) moveto(ownerhand) +auto=if paid(alternative) then name(Return 2 non-land permanents) name(Return 2 non-land permanents) target(<2>*[-land]|battlefield) moveto(ownerhand) text=Kicker - Sacrifice a land. (You may sacrifice a land in addition to any other costs as you cast this spell.) -- Return target nonland permanent to its owner's hand. If Rushing River was kicked, return another target nonland permanent to its owner's hand. mana={2}{U} -other={2}{U}{S(land|mybattlefield)} name(Pay Kicker) type=Instant [/card] [card] diff --git a/projects/mtg/include/MTGDefinitions.h b/projects/mtg/include/MTGDefinitions.h index d686f9b5f..c1bbaebbc 100644 --- a/projects/mtg/include/MTGDefinitions.h +++ b/projects/mtg/include/MTGDefinitions.h @@ -303,7 +303,8 @@ class Constants BOAST = 176, TWOBOAST = 177, REPLACESCRY = 178, - NB_BASIC_ABILITIES = 179, + HASNOKICKER = 179, + NB_BASIC_ABILITIES = 180, RARITY_S = 'S', //Special Rarity RARITY_M = 'M', //Mythics diff --git a/projects/mtg/src/CardDescriptor.cpp b/projects/mtg/src/CardDescriptor.cpp index 4c70db8ba..08fda91bf 100644 --- a/projects/mtg/src/CardDescriptor.cpp +++ b/projects/mtg/src/CardDescriptor.cpp @@ -265,9 +265,9 @@ MTGCardInstance * CardDescriptor::match(MTGCardInstance * card) if (excludedSet.any()) return NULL; - if ((hasKickerCost == -1 && (card->getManaCost()->getKicker() || card->basicAbilities[Constants::HASOTHERKICKER])) || (hasKickerCost == 1 && (!card->getManaCost()->getKicker() && !card->basicAbilities[Constants::HASOTHERKICKER]))) + if ((hasKickerCost == -1 && ((card->getManaCost()->getKicker() && !card->basicAbilities[Constants::HASNOKICKER]) || (!card->getManaCost()->getKicker() && card->basicAbilities[Constants::HASOTHERKICKER]))) || (hasKickerCost == 1 && !((card->getManaCost()->getKicker() && !card->basicAbilities[Constants::HASNOKICKER]) || (!card->getManaCost()->getKicker() && card->basicAbilities[Constants::HASOTHERKICKER])))) { - match = NULL; + match = NULL; //Some kicker costs are not a real kicker (e.g. Fuse cost). } if ((hasFlashbackCost == -1 && card->getManaCost()->getFlashback()) || (hasFlashbackCost == 1 && !card->getManaCost()->getFlashback())) diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index 6ea9e32a9..32009e076 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -256,9 +256,9 @@ void CardGui::Render() { if(game) { - if((card->has(Constants::CANPLAYFROMEXILE)||card->has(Constants::PAYZERO))|| - ((card->has(Constants::CANPLAYFROMGRAVEYARD) || card->has(Constants::TEMPFLASHBACK) || card->getManaCost()->getFlashback()) && game->isInGrave(card)) || - (card->has(Constants::FORETELL) && card->foretellTurn > -1 && game->turn > card->foretellTurn && game->isInExile(card))) + if(card->has(Constants::PAYZERO) || + ((card->has(Constants::CANPLAYFROMGRAVEYARD) || card->has(Constants::TEMPFLASHBACK) || card->getManaCost()->getFlashback() || card->getManaCost()->getRetrace()) && game->isInGrave(card)) || + (((card->has(Constants::FORETELL) && card->foretellTurn > -1 && game->turn > card->foretellTurn) || card->has(Constants::CANPLAYFROMEXILE)) && game->isInExile(card))) fakeborder->SetColor(ARGB((int)(actA),7,235,7));//green border else fakeborder->SetColor(ARGB((int)(actA),15,15,15)); diff --git a/projects/mtg/src/MTGDefinitions.cpp b/projects/mtg/src/MTGDefinitions.cpp index 764dd2f4f..4185132f8 100644 --- a/projects/mtg/src/MTGDefinitions.cpp +++ b/projects/mtg/src/MTGDefinitions.cpp @@ -194,7 +194,7 @@ const char* Constants::MTGBasicAbilities[] = { "mentor", "prowess", "nofizzle alternative", //No fizzle if card has been paid with alternative cost. - "hasotherkicker", //Kicker cost is expressed with "other" keyword (eg. not mana kicker such as life and/or tap a creature), + "hasotherkicker", //Kicker cost is expressed with "other" keyword (eg. not mana kicker such as life and/or tap a creature) "partner", //Has partner ability "canbecommander", //Can be a commander (eg. some planeswalkers can) "iscommander", //It's the current commander @@ -209,7 +209,8 @@ const char* Constants::MTGBasicAbilities[] = { "anytypeofmanaability", //It allows to spend mana as it were of any color to activate abilities. "boast", //It has boast ability "twoboast", //It has boast twice ability (e.g. Birgi, God of Storytelling) - "replacescry" //It has scry replacement ability + "replacescry", //It has scry replacement ability + "hasnokicker" //Kicker cost is not a real kicker cost (eg. cards with Fuse cost) }; map Constants::MTGBasicAbilitiesMap; diff --git a/projects/mtg/src/MTGRules.cpp b/projects/mtg/src/MTGRules.cpp index 09ffd055b..eb35ba979 100644 --- a/projects/mtg/src/MTGRules.cpp +++ b/projects/mtg/src/MTGRules.cpp @@ -526,7 +526,7 @@ int MTGPutInPlayRule::reactToClick(MTGCardInstance * card) while(previousManaPool->canAfford(withKickerCost,card->has(Constants::ANYTYPEOFMANA))) { withKickerCost->add(withKickerCost->getKicker()); - card->kicked += 1; + if(!card->basicAbilities[Constants::HASNOKICKER]) card->kicked += 1; //Some kicker costs are not a real kicker (e.g. Fuse cost). } for(int i = 0;i < card->kicked;i++) player->getManaPool()->pay(card->getManaCost()->getKicker()); @@ -537,7 +537,7 @@ int MTGPutInPlayRule::reactToClick(MTGCardInstance * card) { player->getManaPool()->pay(card->getManaCost()->getKicker()); payResult = ManaCost::MANA_PAID_WITH_KICKER; - card->kicked = 1; + if(!card->basicAbilities[Constants::HASNOKICKER]) card->kicked = 1; //Some kicker costs are not a real kicker (e.g. Fuse cost). card->alternateCostPaid[ManaCost::MANA_PAID_WITH_KICKER] = 1; } delete withKickerCost; @@ -595,7 +595,7 @@ int MTGPutInPlayRule::reactToClick(MTGCardInstance * card) if (!card->has(Constants::STORM)) { copy->X = spell->computeX(copy); - if(card->setX > -1 && (card->getReducedManaCost()->getConvertedCost() > 0 || card->getIncreasedManaCost()->getConvertedCost() > 0)) //Try to Apply the correct X value due to cost reduction/increasement. + if(card->setX > -1) //Try to Apply the correct X value due to cost reduction/increasement and or a kicker payment. copy->X = card->setX; copy->castX = copy->X; } @@ -638,6 +638,8 @@ int MTGKickerRule::isReactingToClick(MTGCardInstance * card, ManaCost *) if(card->model->data->getManaCost()->getKicker() && card->model->data->getManaCost()->getKicker()->alternativeName.size()) alternativeName = card->model->data->getManaCost()->getKicker()->alternativeName; + else + alternativeName = ""; if ((card->hasType(Subtypes::TYPE_INSTANT)) || card->has(Constants::FLASH) || card->has(Constants::ASFLASH) || (card->StackIsEmptyandSorcerySpeed())) { @@ -675,7 +677,7 @@ int MTGKickerRule::reactToClick(MTGCardInstance * card) { if (!game->targetListIsSet(card)) { - card->kicked = 1; + if(!card->basicAbilities[Constants::HASNOKICKER]) card->kicked = 1; //Some kicker costs are not a real kicker (e.g. Fuse cost). return 0; } } @@ -698,7 +700,7 @@ int MTGKickerRule::reactToClick(MTGCardInstance * card) while(previousManaPool->canAfford(withKickerCost,card->has(Constants::ANYTYPEOFMANA))) { withKickerCost->add(withKickerCost->getKicker()); - card->kicked += 1; + if(!card->basicAbilities[Constants::HASNOKICKER]) card->kicked += 1; //Some kicker costs are not a real kicker (e.g. Fuse cost). } for(int i = 0;i < card->kicked;i++) player->getManaPool()->pay(card->getManaCost()->getKicker()); @@ -709,7 +711,7 @@ int MTGKickerRule::reactToClick(MTGCardInstance * card) { player->getManaPool()->pay(card->getManaCost()->getKicker()); payResult = ManaCost::MANA_PAID_WITH_KICKER; - card->kicked = 1; + if(!card->basicAbilities[Constants::HASNOKICKER]) card->kicked = 1; //Some kicker costs are not a real kicker (e.g. Fuse cost). card->alternateCostPaid[ManaCost::MANA_PAID_WITH_KICKER] = 1; } delete withKickerCost; @@ -1027,19 +1029,19 @@ int MTGAlternativeCostRule::reactToClick(MTGCardInstance * card, ManaCost *alter SAFE_DELETE(previousManaPool); card->alternateCostPaid[alternateCostType] = 1; - + if(card->has(Constants::HASOTHERKICKER)) //Fix for cards which have kicker cost implemented with other cost. + card->kicked = 1; + if (card->isLand()) { MTGCardInstance * copy = player->game->putInZone(card, card->currentZone, player->game->temp); Spell * spell = NEW Spell(game, 0,copy,NULL,NULL, alternateCostType); - copy->alternateCostPaid[alternateCostType] = 1; spell->resolve(); SAFE_DELETE(spell); } else { MTGCardInstance * copy = player->game->putInZone(card, card->currentZone, player->game->stack); - copy->alternateCostPaid[alternateCostType] = 1; game->mLayers->stackLayer()->addSpell(copy, game->targetChooser, spellCost, alternateCostType, 0); game->targetChooser = NULL; if(alternateCostType == ManaCost::MANA_PAID_WITH_BESTOW) @@ -1271,6 +1273,8 @@ int MTGRetraceRule::isReactingToClick(MTGCardInstance * card, ManaCost * mana) if(card->model->data->getManaCost()->getRetrace() && card->model->data->getManaCost()->getRetrace()->alternativeName.size()) alternativeName = card->model->data->getManaCost()->getRetrace()->alternativeName; + else + alternativeName = ""; return MTGAlternativeCostRule::isReactingToClick( card, mana, retraceCost); }