Fixed all primitives with Fuse cost (now we use a special kicker cost for them), fixed all primitives with double kicker cost (now we use other and kicker cost togheter), added a new ability "hasnokicker" for primitives which have kicker for other purpose (e.g. Fuse cards), fixed an issue on cost name for both kicker and retrace cost, improved green highlight management for cards which can play in exile and graveyard (such as retrace cards, flashback cards, and so on), improved kicker cost management.

This commit is contained in:
Vittorio Alfieri
2021-02-16 16:08:08 +01:00
parent ed330fa70c
commit 6c9c770f2d
7 changed files with 179 additions and 166 deletions

View File

@@ -964,6 +964,7 @@ toughness=3
[/card] [/card]
[card] [card]
name=Alive // Well name=Alive // Well
abilities=hasnokicker
other={W} name(Well) other={W} name(Well)
kicker={W} name(Fuse) kicker={W} name(Fuse)
auto=if paid(alternative) then life:twicetype:creature:mybattlefield auto=if paid(alternative) then life:twicetype:creature:mybattlefield
@@ -1284,10 +1285,12 @@ toughness=4
[/card] [/card]
[card] [card]
name=Anavolver name=Anavolver
other={3}{G}{B} name(Kicker {B}) abilities=hasotherkicker
auto=if paid(alternative) then transforms((,newability[counter(1/1.1)],newability[{L:3}:regenerate])) forever other={3}{G}{B} name(Kicker Black)
kicker={1}{U} kicker={1}{U} name(Kicker Blue or Both)
auto=kicker ifnot paid(alternative) then transforms((,newability[counter(1/1.2)],newability[flying])) forever 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." 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} mana={3}{G}
type=Creature type=Creature
@@ -2395,8 +2398,7 @@ toughness=2
[/card] [/card]
[card] [card]
name=Ardenvale Paladin name=Ardenvale Paladin
other={1}{W}{W}{W} name(Adamant) auto=if casted(this) then if spent({W}{W}{W}) then counter(1/1,1)
auto=if paid(alternative) 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. 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} mana={3}{W}
type=Creature type=Creature
@@ -2494,6 +2496,7 @@ toughness=2
[card] [card]
name=Armed // Dangerous name=Armed // Dangerous
target=creature target=creature
abilities=hasnokicker
other={3}{G} name(Dangerous) other={3}{G} name(Dangerous)
kicker={3}{G} name(Fuse) kicker={3}{G} name(Fuse)
auto=if paid(alternative) then transforms((,newability[lure])) ueot auto=if paid(alternative) then transforms((,newability[lure])) ueot
@@ -4356,6 +4359,7 @@ toughness=1
[/card] [/card]
[card] [card]
name=Beck // Call name=Beck // Call
abilities=hasnokicker
other={4}{W}{U} name(Call) other={4}{W}{U} name(Call)
kicker={4}{W}{U} name(Fuse) kicker={4}{W}{U} name(Fuse)
auto=if paid(alternative) then token(Bird,Creature Bird,1/1,white,flying)*4 auto=if paid(alternative) then token(Bird,Creature Bird,1/1,white,flying)*4
@@ -6420,6 +6424,7 @@ toughness=3
[/card] [/card]
[card] [card]
name=Breaking // Entering name=Breaking // Entering
abilities=hasnokicker
other={4}{B}{R} name(Entering) other={4}{B}{R} name(Entering)
kicker={4}{B}{R} name(Fuse) 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 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]
[card] [card]
name=Catch // Release name=Catch // Release
abilities=hasnokicker
other={4}{R}{W} name(Release) other={4}{R}{W} name(Release)
kicker={4}{R}{W} name(Fuse) kicker={4}{R}{W} name(Fuse)
auto=if paid(alternative) then ability$!name(Sacrifice artifact) name(Sacrifice artifact) notatarget(artifact|mybattlefield) sacrifice!$ controller 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]
[card] [card]
name=Cauldron's Gift name=Cauldron's Gift
target=creature|myGraveyard auto=if casted(this) then if spent({B}{B}{B}) then deplete:4 controller
other={2}{B}{B}{B} name(Adamant) auto=may name(Return creature in play) target(creature|myGraveyard) moveto(mybattlefield) and!( transforms((,newability[counter(1/1)])) oneshot )!
auto=if paid(alternative) then deplete:4 controller
auto=may moveto(mybattlefield) && counter(1/1,1)
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. 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} mana={4}{B}
type=Sorcery type=Sorcery
@@ -9302,12 +9306,11 @@ type=Instant
[/card] [/card]
[card] [card]
name=Clockwork Servant name=Clockwork Servant
other={W}{W}{W} name(Adamant White) auto=if casted(this) then if spent({G}{G}{G}) then draw:1 controller
other={U}{U}{U} name(Adamant Blue) auto=if casted(this) then if spent({W}{W}{W}) then draw:1 controller
other={R}{R}{R} name(Adamant Red) auto=if casted(this) then if spent({U}{U}{U}) then draw:1 controller
other={G}{G}{G} name(Adamant Green) auto=if casted(this) then if spent({R}{R}{R}) then draw:1 controller
other={B}{B}{B} name(Adamant Black) auto=if casted(this) then if spent({B}{B}{B}) then draw:1 controller
auto=if paid(alternative) 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. 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} mana={3}
type=Artifact Creature type=Artifact Creature
@@ -9731,26 +9734,28 @@ type=Sorcery
[card] [card]
name=Comet Storm name=Comet Storm
abilities=hasotherkicker abilities=hasotherkicker
auto=this(X>0) choice name(kicker = 0) name(kicker = 0) target(player,creature,planeswalker) damage:X other={X}{R}{R} name(Pay kicker)
auto=this(X>1) choice name(kicker = 1) name(kicker = 1) target(<2>player,creature,planeswalker) damage:Xminus1minusend auto=this(X>0) ifnot paid(alternative) then target(player,creature,planeswalker) damage:X
auto=this(X>2) choice name(kicker = 2) name(kicker = 2) target(<3>player,creature,planeswalker) damage:Xminus2minusend 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>3) choice name(kicker = 3) name(kicker = 3) target(<4>player,creature,planeswalker) damage:Xminus3minusend 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>4) choice name(kicker = 4) name(kicker = 4) target(<5>player,creature,planeswalker) damage:Xminus4minusend 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>5) choice name(kicker = 5) name(kicker = 5) target(<6>player,creature,planeswalker) damage:Xminus5minusend 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>6) choice name(kicker = 6) name(kicker = 6) target(<7>player,creature,planeswalker) damage:Xminus6minusend 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>7) choice name(kicker = 7) name(kicker = 7) target(<8>player,creature,planeswalker) damage:Xminus7minusend 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>8) choice name(kicker = 8) name(kicker = 8) target(<9>player,creature,planeswalker) damage:Xminus8minusend 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>9) choice name(kicker = 9) name(kicker = 9) target(<10>player,creature,planeswalker) damage:Xminus9minusend 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>10) choice name(kicker = 10) name(kicker = 10) target(<11>player,creature,planeswalker) damage:Xminus10minusend 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>11) choice name(kicker = 11) name(kicker = 11) target(<12>player,creature,planeswalker) damage:Xminus11minusend 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>12) choice name(kicker = 12) name(kicker = 12) target(<13>player,creature,planeswalker) damage:Xminus12minusend 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>13) choice name(kicker = 13) name(kicker = 13) target(<14>player,creature,planeswalker) damage:Xminus13minusend 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>14) choice name(kicker = 14) name(kicker = 14) target(<15>player,creature,planeswalker) damage:Xminus14minusend 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>15) choice name(kicker = 15) name(kicker = 15) target(<16>player,creature,planeswalker) damage:Xminus15minusend 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>16) choice name(kicker = 16) name(kicker = 16) target(<17>player,creature,planeswalker) damage:Xminus16minusend 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>17) choice name(kicker = 17) name(kicker = 17) target(<18>player,creature,planeswalker) damage:Xminus17minusend 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>18) choice name(kicker = 18) name(kicker = 18) target(<19>player,creature,planeswalker) damage:Xminus18minusend 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>19) choice name(kicker = 19) name(kicker = 19) target(<20>player,creature,planeswalker) damage:Xminus19minusend 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. 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} mana={X}{R}{R}
type=Instant type=Instant
@@ -11468,7 +11473,7 @@ toughness=2
name=Daghatar the Adamant name=Daghatar the Adamant
abilities=vigilance abilities=vigilance
auto=counter(1/1,4) 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. 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} mana={3}{W}
type=Legendary Creature type=Legendary Creature
@@ -13741,6 +13746,7 @@ type=Instant
[/card] [/card]
[card] [card]
name=Down // Dirty name=Down // Dirty
abilities=hasnokicker
other={2}{G} name(Dirty) other={2}{G} name(Dirty)
kicker={2}{G} name(Fuse) kicker={2}{G} name(Fuse)
otherrestriction=type(*|mygraveyard)~morethan~0 otherrestriction=type(*|mygraveyard)~morethan~0
@@ -15348,8 +15354,7 @@ subtype=Equipment
[card] [card]
name=Embereth Paladin name=Embereth Paladin
abilities=haste abilities=haste
other={1}{R}{R}{R} name(Adamant) auto=if casted(this) then if spent({R}{R}{R}) then counter(1/1)
auto=if paid(alternative) then counter(1/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. 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} mana={3}{R}
type=Creature type=Creature
@@ -17009,6 +17014,7 @@ toughness=3
[/card] [/card]
[card] [card]
name=Far // Away name=Far // Away
abilities=hasnokicker
other={2}{B} name(Away) other={2}{B} name(Away)
kicker={2}{B} name(Fuse) kicker={2}{B} name(Fuse)
restriction=type(creature|battlefield)~morethan~0 restriction=type(creature|battlefield)~morethan~0
@@ -18380,8 +18386,10 @@ toughness=6
[card] [card]
name=Flesh // Blood name=Flesh // Blood
target=creature target=creature
abilities=hasnokicker
other={R}{G} name(Blood) other={R}{G} name(Blood)
kicker={R}{G} name(Fuse) 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(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=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) auto=ifnot paid(alternative) then counter(1/1,storedpower)
@@ -18658,11 +18666,9 @@ subtype=Equipment
[/card] [/card]
[card] [card]
name=Foreboding Fruit name=Foreboding Fruit
other={B}{B}{B} name(Adamant)
auto=if paid(alternative) then token(-473141)
target=player target=player
auto=draw:2 auto=draw:2 && life:-2
auto=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.") 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} mana={2}{B}
type=Sorcery type=Sorcery
@@ -19519,8 +19525,7 @@ toughness=2
[/card] [/card]
[card] [card]
name=Garenbrig Paladin name=Garenbrig Paladin
other={2}{G}{G}{G} name(Adamant) auto=if casted(this) then if spent({G}{G}{G}) then counter(1/1)
auto=if paid(alternative) then counter(1/1,1)
auto=cantbeblockedby(creature[power<=2]) 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. 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} mana={4}{G}
@@ -20457,6 +20462,7 @@ toughness=6
[card] [card]
name=Give // Take name=Give // Take
target=creature target=creature
abilities=hasnokicker
other={2}{U} name(Take) other={2}{U} name(Take)
kicker={2}{U} name(Fuse) kicker={2}{U} name(Fuse)
otherrestriction=type(creature|mybattlefield)~morethan~0 otherrestriction=type(creature|mybattlefield)~morethan~0
@@ -23804,12 +23810,11 @@ type=Legendary Artifact
[/card] [/card]
[card] [card]
name=Henge Walker name=Henge Walker
other={W}{W}{W} name(Adamant White) auto=if casted(this) then if spent({G}{G}{G}) then counter(1/1)
other={U}{U}{U} name(Adamant Blue) auto=if casted(this) then if spent({W}{W}{W}) then counter(1/1)
other={R}{R}{R} name(Adamant Red) auto=if casted(this) then if spent({U}{U}{U}) then counter(1/1)
other={G}{G}{G} name(Adamant Green) auto=if casted(this) then if spent({R}{R}{R}) then counter(1/1)
other={B}{B}{B} name(Adamant Black) auto=if casted(this) then if spent({B}{B}{B}) then counter(1/1)
auto=if paid(alternative) then counter(1/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. 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} mana={3}
type=Artifact Creature type=Artifact Creature
@@ -25274,12 +25279,14 @@ type=Enchantment
[/card] [/card]
[card] [card]
name=Illuminate name=Illuminate
abilities=hasotherkicker
target=creature target=creature
other={X}{2}{R}{R} name(Kicker Red)
kicker={3}{U} name(Kicker Blue or both)
auto=damage:X auto=damage:X
other={X}{2}{R}{R} name(Kicker {2}{R})
auto=if paid(alternative) then damage:X targetcontroller auto=if paid(alternative) then damage:X targetcontroller
kicker={3}{U} auto=if paid(kicker) then draw:X controller
auto=kicker ifnot paid(alternative) 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. 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} mana={X}{R}
type=Sorcery type=Sorcery
@@ -31014,8 +31021,7 @@ toughness=3
[card] [card]
name=Locthwain Paladin name=Locthwain Paladin
abilities=menace abilities=menace
other={1}{B}{B}{B} name(Adamant) auto=if casted(this) then if spent({B}{B}{B}) then counter(1/1)
auto=if paid(alternative) then counter(1/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. 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} mana={3}{B}
type=Creature type=Creature
@@ -34259,11 +34265,8 @@ type=Enchantment
[/card] [/card]
[card] [card]
name=Mythos of Brokkos name=Mythos of Brokkos
abilities=hiddenface 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(<upto:2>*[-instant;-sorcery]|myGraveyard)],newability[shuffle])) oneshot )!
aicode=activate moveto(myGraveyard) target(*|mylibrary) auto=if casted(this) then ifnot spent({U}{B}) then name(Return to hand) moveTo(myHand) target(<upto:2>*[-instant;-sorcery]|myGraveyard)
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(<upto:2>artifact,enchantment,land,creature,planeswalker|myGraveyard)
auto=ifnot paid(alternative) then moveTo(myHand) target(<upto:2>artifact,enchantment,land,creature,planeswalker|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. 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} mana={2}{G}{G}
type=Sorcery type=Sorcery
@@ -34271,27 +34274,24 @@ type=Sorcery
[card] [card]
name=Mythos of Illuna name=Mythos of Illuna
target=*[-instant;-sorcery] target=*[-instant;-sorcery]
other={R}{G}{U}{U} name(Spend B and G) auto=if casted(this) then ifnot spent({R}{G}) then clone
auto=ifnot paid(alternative) then clone auto=if casted(this) then if spent({R}{G}) then clone and!( if cantargetcard(creature|*) then transforms((,newability[target(creature|opponentbattlefield) dynamicability<!powerstrike eachother!>])) oneshot )!
auto=if paid(alternative) then clone and!( transforms((,newability[target(creature|opponentbattlefield) dynamicability<!powerstrike eachother!>])) ueot )!
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." 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} mana={2}{U}{U}
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
name=Mythos of Nethroi name=Mythos of Nethroi
other={G}{W}{B} name(Spend G and W) auto=if casted(this) then if spent({G}{W}) then destroy target(*[-land]|battlefield)
auto=if paid(alternative) then destroy target(*[-land]|battlefield) auto=if casted(this) then ifnot spent({G}{W}) then destroy target(creature|battlefield)
auto=ifnot paid(alternative) 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. text=Destroy target nonland permanent if it's a creature or if {G}{W} was spent to cast this spell.
mana={2}{B} mana={2}{B}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Mythos of Vadrok name=Mythos of Vadrok
other={W}{U}{R}{R} name(Spend W and U) 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=ifnot paid(alternative) 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
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
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. 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} mana={2}{R}{R}
type=Sorcery type=Sorcery
@@ -34578,12 +34578,12 @@ toughness=2
[/card] [/card]
[card] [card]
name=Necravolver name=Necravolver
other={2}{B}{W} name(Kicker W) abilities=hasotherkicker
auto=if paid(alternative) then counter(1/1) other={2}{B}{W} name(Kicker White)
auto=if paid(alternative) then transforms((,newability[lifelink])) forever kicker={1}{G} name(Kicker Green or both)
kicker={1}{G} auto=if paid(alternative) then transforms((,newability[counter(1/1)],newability[lifelink])) forever
auto=kicker ifnot paid(alternative) then counter(1/1,2) auto=if paid(kicker) then transforms((,newability[counter(1/1.2)],newability[trample])) forever
auto=kicker ifnot paid(alternative) then transforms((,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." 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} mana={2}{B}
type=Creature type=Creature
@@ -35178,10 +35178,12 @@ toughness=4
[/card] [/card]
[card] [card]
name=Nightscape Battlemage 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) auto=if paid(alternative) then destroy target(land)
kicker={2}{U} auto=if paid(kicker) then ability$!name(Return creatures) name(Return creatures) target(<upto:2>creature[-black]) moveto(ownerhand)!$ controller
auto=kicker ifnot paid(alternative) then target(<upto:2>creature[-black]) moveto(ownerhand) 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. 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} mana={2}{B}
type=Creature type=Creature
@@ -36438,9 +36440,9 @@ type=Instant
[/card] [/card]
[card] [card]
name=Once and Future name=Once and Future
other={1}{G}{G}{G} name(Adamant) abilities=exiledeath
auto=ifnot paid(alternative) then moveto(myHand) target(*|myGraveyard) && moveto(myLibrary) target(*|myGraveyard) && moveto(exile) all(this) 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 paid(alternative) then moveto(myHand) target(<upto:2>*|mygraveyard) && moveto(exile) all(this) auto=if casted(this) then if spent({G}{G}{G}) then target(<upto:2>*|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. 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} mana={3}{G}
type=Instant type=Instant
@@ -37091,10 +37093,9 @@ type=Instant
[/card] [/card]
[card] [card]
name=Outmuscle name=Outmuscle
other={1}{G}{G}{G} name(Adamant)
target=creature|myBattlefield target=creature|myBattlefield
auto=counter(1/1,1) 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<!powerstrike eachother!>])) ueot auto=transforms((,newability[target(creature|opponentbattlefield) dynamicability<!powerstrike eachother!>])) 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. 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} mana={3}{G}
@@ -39218,6 +39219,7 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Profit // Loss name=Profit // Loss
abilities=hasnokicker
other={2}{B} name(Loss) other={2}{B} name(Loss)
kicker={2}{B} name(Fuse) kicker={2}{B} name(Fuse)
auto=if paid(alternative) then all(creature|opponentbattlefield) -1/-1 ueot auto=if paid(alternative) then all(creature|opponentbattlefield) -1/-1 ueot
@@ -39288,6 +39290,7 @@ toughness=2
[/card] [/card]
[card] [card]
name=Protect // Serve name=Protect // Serve
abilities=hasnokicker
other={1}{U} name(Serve) other={1}{U} name(Serve)
kicker={1}{U} name(Fuse) kicker={1}{U} name(Fuse)
auto=if paid(alternative) then target(creature) -6/0 ueot auto=if paid(alternative) then target(creature) -6/0 ueot
@@ -40210,11 +40213,12 @@ toughness=3
[/card] [/card]
[card] [card]
name=Rakavolver name=Rakavolver
other={2}{R}{U} name(Kicker blu mana} abilities=hasotherkicker
auto=if paid(alternative) then counter(1/1) && flying other={2}{R}{U} name(Kicker Blue)
kicker={1}{W} kicker={1}{W} name(Kicker White or both)
auto=kicker ifnot paid(alternative) then counter(1/1,2) && lifelink auto=if paid(alternative) then transforms((,newability[counter(1/1)],newability[flying])) forever
auto=kicker if paid(alternative) then counter(1/1,3) && lifelink && flying 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. 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} mana={2}{R}
type=Creature type=Creature
@@ -40336,9 +40340,8 @@ toughness=3
[/card] [/card]
[card] [card]
name=Rally for the Throne name=Rally for the Throne
auto=create(Human:creature Human:1/1:white)*2 auto=token(Human,Creature Human,1/1,white)*2
other={W}{W}{W} name(Adamant) auto=if casted(this) then if spent({W}{W}{W}) then life:type:creature:mybattlefield controller
auto=if paid(alternative) 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. 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} mana={2}{W}
type=Instant type=Instant
@@ -40858,6 +40861,7 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Ready // Willing name=Ready // Willing
abilities=hasnokicker
other={1}{W}{B} name(Willing) other={1}{W}{B} name(Willing)
kicker={1}{W}{B} name(Fuse) kicker={1}{W}{B} name(Fuse)
auto=if paid(alternative) then all(creature|mybattlefield) transforms((,newability[lifelink],newability[deathtouch])) ueot auto=if paid(alternative) then all(creature|mybattlefield) transforms((,newability[lifelink],newability[deathtouch])) ueot
@@ -42638,14 +42642,11 @@ subtype=Aura
[/card] [/card]
[card] [card]
name=River's Grasp name=River's Grasp
aicode=activate reject notatarget(*[-land]|opponenthand) 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
other={3}{B} name(Spend black mana) 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 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({U}) then ability$!name(Return creature to hand) name(Return creature to hand) target(creature|battlefield) moveto(ownerhand)!$ controller
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
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.) 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 type=Sorcery
[/card] [/card]
[card] [card]
@@ -45102,9 +45103,8 @@ type=Snow Sorcery
[card] [card]
name=Searing Barrage name=Searing Barrage
target=creature target=creature
other={2}{R}{R}{R} name(Adamant)
auto=damage:5 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. 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} mana={4}{R}
type=Instant type=Instant
@@ -47003,9 +47003,8 @@ toughness=5
[/card] [/card]
[card] [card]
name=Silverflame Ritual name=Silverflame Ritual
other={1}{W}{W}{W} name(Adamant) auto=all(creature|mybattlefield) counter(1/1)
auto=all(creature|mybattlefield) counter(1/1,1) auto=if casted(this) then if spent({W}{W}{W}) then all(creature|mybattlefield) transforms((,newability[vigilance])) ueot
auto=if paid(alternative) then all(creature|mybattlefield) vigilance
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. 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} mana={3}{W}
type=Sorcery type=Sorcery
@@ -47917,9 +47916,8 @@ toughness=2
[card] [card]
name=Slaying Fire name=Slaying Fire
target=creature,player,planeswalker target=creature,player,planeswalker
other={R}{R}{R} name(Adamant) auto=if casted(this) then if spent({R}{R}{R}) then name(Deals 4 damages) name(Deals 4 damages) damage:4
auto=if paid(alternative) then name(Deals 4 damages) name(Deals 4 damages) damage:4 target(player,creature,planeswalker) auto=if casted(this) then ifnot spent({R}{R}{R}) then name(Deals 3 damages) name(Deals 3 damages) damage:3
auto=ifnot paid(alternative) then name(Deals 3 damages) name(Deals 3 damages) damage:3 target(player,creature,planeswalker)
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. 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} mana={2}{R}
type=Instant type=Instant
@@ -50799,10 +50797,12 @@ toughness=2
[/card] [/card]
[card] [card]
name=Stormscape Battlemage name=Stormscape Battlemage
abilities=hasotherkicker
other={2}{U}{W} name(Kicker white) other={2}{U}{W} name(Kicker white)
kicker={2}{B} name(Kicker black or both)
auto=if paid(alternative) then life:3 controller auto=if paid(alternative) then life:3 controller
kicker={2}{B} auto=if paid(kicker) then bury target(creature[-black])
auto=kicker ifnot paid(alternative) 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. 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} mana={2}{U}
type=Creature type=Creature
@@ -51253,9 +51253,9 @@ toughness=5
[card] [card]
name=Sundering Stroke name=Sundering Stroke
other={R}{R}{R}{R}{R}{R}{R} name(Adamant) other={R}{R}{R}{R}{R}{R}{R} name(Adamant)
auto=if paid(alternative) then damage:7 target(<upto:3>player,creature,planeswalker) auto=if casted(this) then if spent({R}{R}{R}{R}{R}{R}{R}) then damage:7 target(<upto:3>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=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=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 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. 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} mana={6}{R}
type=Sorcery type=Sorcery
@@ -51339,10 +51339,12 @@ toughness=3
[/card] [/card]
[card] [card]
name=Sunscape Battlemage name=Sunscape Battlemage
abilities=hasotherkicker
other={4}{W}{U} name(kicker Blue) other={4}{W}{U} name(kicker Blue)
kicker={1}{G} name(kicker Green or both)
auto=if paid(alternative) then draw:2 controller auto=if paid(alternative) then draw:2 controller
kicker={1}{G} auto=if paid(kicker) then destroy target(creature[flying])
auto=kicker ifnot paid(alternative) 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. 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} mana={2}{W}
type=Creature type=Creature
@@ -53619,8 +53621,7 @@ toughness=2
name=Thieving Skydiver name=Thieving Skydiver
abilities=flying,hasotherkicker abilities=flying,hasotherkicker
other={X}{1}{U} name(Pay kicker) 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=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 )!
auto=if paid(alternative) then choice name(Choose non-equipment artifact) target(artifact[manacost<=X]) moveTo(myBattlefield)
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. 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} mana={1}{U}
type=Creature type=Creature
@@ -53732,10 +53733,12 @@ toughness=3
[/card] [/card]
[card] [card]
name=Thornscape Battlemage 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) auto=if paid(alternative) then destroy target(artifact)
kicker={R} auto=if paid(kicker) then ability$!name(Deal 2 damage) name(Deal 2 damage) damage:2 target(creature,player)!$ controller
auto=kicker ifnot paid(alternative) then damage:2 target(creature,player) 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. 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} mana={2}{G}
type=Creature type=Creature
@@ -54190,10 +54193,12 @@ toughness=4
[/card] [/card]
[card] [card]
name=Thunderscape Battlemage 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) auto=if paid(alternative) then destroy target(enchantment)
kicker={1}{B} auto=if paid(kicker) then target(player) ability$!name(Discard 2 cards) name(Discard 2 cards) reject notatarget(<2>*|myhand)!$ targetedplayer
auto=kicker ifnot paid(alternative) then target(player) ability$!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. 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} mana={2}{R}
type=Creature type=Creature
@@ -54604,6 +54609,7 @@ toughness=2
[card] [card]
name=Toil // Trouble name=Toil // Trouble
target=player target=player
abilities=hasnokicker
other={2}{R} name(Trouble) other={2}{R} name(Trouble)
kicker={2}{R} name(Fuse) kicker={2}{R} name(Fuse)
auto=if paid(alternative) then damage:type:*:targetedpersonshand targetedplayer auto=if paid(alternative) then damage:type:*:targetedpersonshand targetedplayer
@@ -55677,6 +55683,7 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Turn // Burn name=Turn // Burn
abilities=hasnokicker
other={1}{R} name(Burn) other={1}{R} name(Burn)
kicker={1}{R} name(Fuse) kicker={1}{R} name(Fuse)
auto=if paid(alternative) then ability$!name(Deal Damage) name(Deal Damage) damage:2 target(player,creature)!$ controller 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]
[card] [card]
name=Turn into a Pumpkin name=Turn into a Pumpkin
other={1}{U}{U}{U} name(Adamant)
auto=if paid(alternative) then token(-473141)
target=*[-land] target=*[-land]
auto=moveto(ownerhand) auto=moveto(ownerhand)
auto=draw:1 controller 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.") 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} mana={3}{U}
type=Instant type=Instant
@@ -56368,9 +56374,8 @@ type=Instant
[/card] [/card]
[card] [card]
name=Unexplained Vision 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 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 auto=draw:3 controller
text=Draw three cards. -- Adamant — If at least three blue mana was spent to cast this spell, scry 3. text=Draw three cards. -- Adamant — If at least three blue mana was spent to cast this spell, scry 3.
mana={4}{U} mana={4}{U}
@@ -57068,8 +57073,7 @@ toughness=4
[card] [card]
name=Vantress Paladin name=Vantress Paladin
abilities=flying abilities=flying
other={1}{U}{U}{U} name(Adamant) auto=if casted(this) then if spent({U}{U}{U}) then counter(1/1)
auto=if paid(alternative) then counter(1/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. 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} mana={3}{U}
type=Creature type=Creature
@@ -59121,6 +59125,7 @@ type=Enchantment
[/card] [/card]
[card] [card]
name=Wear // Tear name=Wear // Tear
abilities=hasnokicker
other={W} name(Tear) other={W} name(Tear)
kicker={W} name(Fuse) kicker={W} name(Fuse)
otherrestriction=type(enchantment|battlefield)~morethan~0 otherrestriction=type(enchantment|battlefield)~morethan~0

View File

@@ -5446,7 +5446,7 @@ toughness=1
[card] [card]
name=Arctic Merfolk name=Arctic Merfolk
abilities=hasotherkicker 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. 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} mana={1}{U}
other={1}{U}{H(creature|mybattlefield)} name(Pay Kicker) other={1}{U}{H(creature|mybattlefield)} name(Pay Kicker)
@@ -12192,11 +12192,11 @@ type=Sorcery
[card] [card]
name=Blood Tribute name=Blood Tribute
abilities=hasotherkicker abilities=hasotherkicker
target=opponent other={4}{B}{B}{T(vampire|mybattlefield)} name(Pay Kicker)
auto=lifeleech:-halfdownopponentlifetotal targetedplayer 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. 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} mana={4}{B}{B}
other={4}{b}{b}{t(vampire|mybattlefield)} name(Pay Kicker)
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
@@ -12998,11 +12998,11 @@ toughness=2
name=Bog Down name=Bog Down
abilities=hasotherkicker abilities=hasotherkicker
target=player target=player
auto=ability$!name(discard 2 cards) target(<2>*|myhand) reject!$ targetedplayer other={2}{B}{S(land|mybattlefield)}{S(land|mybattlefield)} name(Pay Kicker)
auto=alternative ability$!target(*|myhand) reject!$ targetedplayer 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. 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} mana={2}{B}
other={2}{B}{s(land|mybattlefield)}{s(land|mybattlefield)} name(Pay Kicker)
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
@@ -31465,8 +31465,8 @@ type=Enchantment
[card] [card]
name=Dralnu's Pet name=Dralnu's Pet
abilities=hasotherkicker abilities=hasotherkicker
other={3}{B}{U}{U}{D(other creature|myhand)} name(Kicker) other={3}{B}{U}{U}{D(other creature|myhand)} name(Pay Kicker)
auto=if paid(alternative) then counter(1/1,storedmanacost) && transforms((,flying)) forever 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. 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} mana={1}{U}{U}
type=Creature type=Creature
@@ -33224,10 +33224,11 @@ type=Land
[card] [card]
name=Dwarven Landslide name=Dwarven Landslide
abilities=hasotherkicker abilities=hasotherkicker
target=land
auto=destroy
other={4}{R}{R}{S(land|myBattlefield)} name(Pay Kicker) 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. 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} mana={3}{R}
type=Sorcery type=Sorcery
@@ -61440,7 +61441,7 @@ toughness=2
[card] [card]
name=Kangee, Aerie Keeper name=Kangee, Aerie Keeper
abilities=flying,hasotherkicker 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=if paid(alternative) then counter(0/0,X,Feather)
auto=thisforeach(counter{0/0.1.Feather}) lord(other creature[bird]) 1/1 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. 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 abilities=hasotherkicker
target=creature,player target=creature,player
auto=damage:3 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. 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} mana={3}{R}
other={3}{r}{s(land|mybattlefield)}{s(land|mybattlefield)} name(Pay Kicker) other={3}{r}{s(land|mybattlefield)}{s(land|mybattlefield)} name(Pay Kicker)
@@ -86246,9 +86247,9 @@ type=Enchantment
[card] [card]
name=Phyrexian Scuta name=Phyrexian Scuta
abilities=hasotherkicker 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) 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} mana={3}{B}
type=Creature type=Creature
subtype=Zombie subtype=Zombie
@@ -88348,12 +88349,12 @@ subtype=Aura
[card] [card]
name=Primal Growth name=Primal Growth
abilities=hasotherkicker 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 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=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(<upto:2>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(<upto:2>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. 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} mana={2}{G}
other={2}{G}{S(creature|mybattlefield)} name(Pay Kicker)
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
@@ -97463,12 +97464,13 @@ type=Instant
[card] [card]
name=Rushing River name=Rushing River
abilities=hasotherkicker abilities=hasotherkicker
target=*[-land]|battlefield other={2}{U}{S(land|mybattlefield)} name(Pay Kicker)
auto=moveto(ownerhand) restriction=type(*[-land]|battlefield)~morethan~0
auto=alternative target(*[-land]|battlefield) moveto(ownerhand) 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. 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} mana={2}{U}
other={2}{U}{S(land|mybattlefield)} name(Pay Kicker)
type=Instant type=Instant
[/card] [/card]
[card] [card]

View File

@@ -303,7 +303,8 @@ class Constants
BOAST = 176, BOAST = 176,
TWOBOAST = 177, TWOBOAST = 177,
REPLACESCRY = 178, REPLACESCRY = 178,
NB_BASIC_ABILITIES = 179, HASNOKICKER = 179,
NB_BASIC_ABILITIES = 180,
RARITY_S = 'S', //Special Rarity RARITY_S = 'S', //Special Rarity
RARITY_M = 'M', //Mythics RARITY_M = 'M', //Mythics

View File

@@ -265,9 +265,9 @@ MTGCardInstance * CardDescriptor::match(MTGCardInstance * card)
if (excludedSet.any()) if (excludedSet.any())
return NULL; 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())) if ((hasFlashbackCost == -1 && card->getManaCost()->getFlashback()) || (hasFlashbackCost == 1 && !card->getManaCost()->getFlashback()))

View File

@@ -256,9 +256,9 @@ void CardGui::Render()
{ {
if(game) if(game)
{ {
if((card->has(Constants::CANPLAYFROMEXILE)||card->has(Constants::PAYZERO))|| if(card->has(Constants::PAYZERO) ||
((card->has(Constants::CANPLAYFROMGRAVEYARD) || card->has(Constants::TEMPFLASHBACK) || card->getManaCost()->getFlashback()) && game->isInGrave(card)) || ((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 && game->isInExile(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 fakeborder->SetColor(ARGB((int)(actA),7,235,7));//green border
else else
fakeborder->SetColor(ARGB((int)(actA),15,15,15)); fakeborder->SetColor(ARGB((int)(actA),15,15,15));

View File

@@ -194,7 +194,7 @@ const char* Constants::MTGBasicAbilities[] = {
"mentor", "mentor",
"prowess", "prowess",
"nofizzle alternative", //No fizzle if card has been paid with alternative cost. "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 "partner", //Has partner ability
"canbecommander", //Can be a commander (eg. some planeswalkers can) "canbecommander", //Can be a commander (eg. some planeswalkers can)
"iscommander", //It's the current commander "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. "anytypeofmanaability", //It allows to spend mana as it were of any color to activate abilities.
"boast", //It has boast ability "boast", //It has boast ability
"twoboast", //It has boast twice ability (e.g. Birgi, God of Storytelling) "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<string,int> Constants::MTGBasicAbilitiesMap; map<string,int> Constants::MTGBasicAbilitiesMap;

View File

@@ -526,7 +526,7 @@ int MTGPutInPlayRule::reactToClick(MTGCardInstance * card)
while(previousManaPool->canAfford(withKickerCost,card->has(Constants::ANYTYPEOFMANA))) while(previousManaPool->canAfford(withKickerCost,card->has(Constants::ANYTYPEOFMANA)))
{ {
withKickerCost->add(withKickerCost->getKicker()); 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++) for(int i = 0;i < card->kicked;i++)
player->getManaPool()->pay(card->getManaCost()->getKicker()); player->getManaPool()->pay(card->getManaCost()->getKicker());
@@ -537,7 +537,7 @@ int MTGPutInPlayRule::reactToClick(MTGCardInstance * card)
{ {
player->getManaPool()->pay(card->getManaCost()->getKicker()); player->getManaPool()->pay(card->getManaCost()->getKicker());
payResult = ManaCost::MANA_PAID_WITH_KICKER; 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; card->alternateCostPaid[ManaCost::MANA_PAID_WITH_KICKER] = 1;
} }
delete withKickerCost; delete withKickerCost;
@@ -595,7 +595,7 @@ int MTGPutInPlayRule::reactToClick(MTGCardInstance * card)
if (!card->has(Constants::STORM)) if (!card->has(Constants::STORM))
{ {
copy->X = spell->computeX(copy); 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->X = card->setX;
copy->castX = copy->X; 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()) if(card->model->data->getManaCost()->getKicker() && card->model->data->getManaCost()->getKicker()->alternativeName.size())
alternativeName = card->model->data->getManaCost()->getKicker()->alternativeName; 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())) 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)) 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; return 0;
} }
} }
@@ -698,7 +700,7 @@ int MTGKickerRule::reactToClick(MTGCardInstance * card)
while(previousManaPool->canAfford(withKickerCost,card->has(Constants::ANYTYPEOFMANA))) while(previousManaPool->canAfford(withKickerCost,card->has(Constants::ANYTYPEOFMANA)))
{ {
withKickerCost->add(withKickerCost->getKicker()); 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++) for(int i = 0;i < card->kicked;i++)
player->getManaPool()->pay(card->getManaCost()->getKicker()); player->getManaPool()->pay(card->getManaCost()->getKicker());
@@ -709,7 +711,7 @@ int MTGKickerRule::reactToClick(MTGCardInstance * card)
{ {
player->getManaPool()->pay(card->getManaCost()->getKicker()); player->getManaPool()->pay(card->getManaCost()->getKicker());
payResult = ManaCost::MANA_PAID_WITH_KICKER; 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; card->alternateCostPaid[ManaCost::MANA_PAID_WITH_KICKER] = 1;
} }
delete withKickerCost; delete withKickerCost;
@@ -1027,19 +1029,19 @@ int MTGAlternativeCostRule::reactToClick(MTGCardInstance * card, ManaCost *alter
SAFE_DELETE(previousManaPool); SAFE_DELETE(previousManaPool);
card->alternateCostPaid[alternateCostType] = 1; 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()) if (card->isLand())
{ {
MTGCardInstance * copy = player->game->putInZone(card, card->currentZone, player->game->temp); MTGCardInstance * copy = player->game->putInZone(card, card->currentZone, player->game->temp);
Spell * spell = NEW Spell(game, 0,copy,NULL,NULL, alternateCostType); Spell * spell = NEW Spell(game, 0,copy,NULL,NULL, alternateCostType);
copy->alternateCostPaid[alternateCostType] = 1;
spell->resolve(); spell->resolve();
SAFE_DELETE(spell); SAFE_DELETE(spell);
} }
else else
{ {
MTGCardInstance * copy = player->game->putInZone(card, card->currentZone, player->game->stack); 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->mLayers->stackLayer()->addSpell(copy, game->targetChooser, spellCost, alternateCostType, 0);
game->targetChooser = NULL; game->targetChooser = NULL;
if(alternateCostType == ManaCost::MANA_PAID_WITH_BESTOW) 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()) if(card->model->data->getManaCost()->getRetrace() && card->model->data->getManaCost()->getRetrace()->alternativeName.size())
alternativeName = card->model->data->getManaCost()->getRetrace()->alternativeName; alternativeName = card->model->data->getManaCost()->getRetrace()->alternativeName;
else
alternativeName = "";
return MTGAlternativeCostRule::isReactingToClick( card, mana, retraceCost); return MTGAlternativeCostRule::isReactingToClick( card, mana, retraceCost);
} }