Added new prmitives from MOM set, fixed primitives, improved flipacoin ability, imporved battle cards defeated trigger, added new filters for event to check permanents on graveyard.

This commit is contained in:
Vittorio Alfieri
2023-05-18 23:04:22 +02:00
parent 452cf4793f
commit 3bd3933c66
10 changed files with 316 additions and 44 deletions
@@ -4328,6 +4328,17 @@ mana={1}{W}
type=Enchantment type=Enchantment
[/card] [/card]
[card] [card]
name=Ashen Reaper
abilities=menace
auto=@each my end restriction{deadpermanent}:name(Put 1/1 counter) name(Put 1/1 counter) counter(1/1)
text=Menace -- At the beginning of your end step, put a +1/+1 counter on Ashen Reaper if a permanent was put into a graveyard from the battlefield this turn.
color=black,red
type=Creature
subtype=Zombie Elemental
power=2
toughness=1
[/card]
[card]
name=Ashiok's Erasure name=Ashiok's Erasure
abilities=flash abilities=flash
auto=name(Exile spell) target(*|stack) spellmover(exileimp) auto=name(Exile spell) target(*|stack) spellmover(exileimp)
@@ -5255,6 +5266,15 @@ mana={3}{B}{B}
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
name=Awaken the Maelstrom
abilities=doublefacedeath
auto=choice name(Controller draws) transforms((,newability[draw:2 controller],newability[ability$!may name(Put artifact in play) target(artifact|myhand) moveto(mybattlefield)!$ controller],newability[ability$!name(Copy permanent) target(*|mybattlefield) clone!$ controller],newability[thisforeach(variable{3}) ability$!name(Put 1/1 counter) target(creature|mybattlefield) counter(1/1)!$ controller],newability[ability$!name(Destroy permanent) target(*|opponentbattlefield) destroy!$ controller])) forever
auto=choice name(Opponent draws) transforms((,newability[draw:2 opponent],newability[ability$!may name(Put artifact in play) target(artifact|myhand) moveto(mybattlefield)!$ controller],newability[ability$!name(Copy permanent) target(*|mybattlefield) clone!$ controller],newability[thisforeach(variable{3}) ability$!name(Put 1/1 counter) target(creature|mybattlefield) counter(1/1)!$ controller],newability[ability$!name(Destroy permanent) target(*|opponentbattlefield) destroy!$ controller])) forever
text=Awaken the Maelstrom is all colors. -- Target player draws two cards. You may put an artifact card from your hand onto the battlefield. Create a token that's a copy of a permanent you control. Distribute three +1/+1 counters among one, two, or three creatures you control. Destroy target permanent an opponent controls.
color=white,blue,black,red,green
type=Sorcery
[/card]
[card]
name=Awaken the Sky Tyrant name=Awaken the Sky Tyrant
auto=@damageof(player) from(*|opponentstack,opponentbattlefield,opponentgraveyard,opponenthand,opponentexile,opponentsideboard):may sacrifice && _DRAGONTOKEN_ controller auto=@damageof(player) from(*|opponentstack,opponentbattlefield,opponentgraveyard,opponenthand,opponentexile,opponentsideboard):may sacrifice && _DRAGONTOKEN_ controller
text=When a source an opponent controls deals damage to you, sacrifice Awaken the Sky Tyrant. If you do, create a 5/5 red Dragon creature token with flying. text=When a source an opponent controls deals damage to you, sacrifice Awaken the Sky Tyrant. If you do, create a 5/5 red Dragon creature token with flying.
@@ -10827,7 +10847,6 @@ name=Brimaz, Blight of Oreskos
auto=@movedTo(creature[artifact]|mystack):name(Incubate X) name(Incubate X) all(trigger[to]) transforms((,newability[name(Incubate X) name(Incubate X) activate castcard(noevent costx!:manacost:! named!:Incubator:!)])) oneshot auto=@movedTo(creature[artifact]|mystack):name(Incubate X) name(Incubate X) all(trigger[to]) transforms((,newability[name(Incubate X) name(Incubate X) activate castcard(noevent costx!:manacost:! named!:Incubator:!)])) oneshot
auto=@movedTo(creature[-artifact&phyrexian]|mystack):name(Incubate X) name(Incubate X) all(trigger[to]) transforms((,newability[name(Incubate X) name(Incubate X) activate castcard(noevent costx!:manacost:! named!:Incubator:!)])) oneshot auto=@movedTo(creature[-artifact&phyrexian]|mystack):name(Incubate X) name(Incubate X) all(trigger[to]) transforms((,newability[name(Incubate X) name(Incubate X) activate castcard(noevent costx!:manacost:! named!:Incubator:!)])) oneshot
auto=@movedTo(phyrexian|graveyard) from(mybattlefield):name(Proliferate) _PROLIFERATE_ auto=@movedTo(phyrexian|graveyard) from(mybattlefield):name(Proliferate) _PROLIFERATE_
auto=@movedTo(*[counter{0/0.1.Phyrexian}]|graveyard) from(mybattlefield):name(Proliferate) _PROLIFERATE_
text=Whenever you cast a Phyrexian creature or artifact creature spell, incubate X, where X is that spell's mana value. (Create an Incubator token with X +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) -- At the beginning of each end step, if a Phyrexian died under your control this turn, proliferate. text=Whenever you cast a Phyrexian creature or artifact creature spell, incubate X, where X is that spell's mana value. (Create an Incubator token with X +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) -- At the beginning of each end step, if a Phyrexian died under your control this turn, proliferate.
mana={2}{W}{B} mana={2}{W}{B}
type=Legendary Creature type=Legendary Creature
@@ -34043,7 +34062,6 @@ name=Gift of Compleation
auto=name(Incubate 3) name(Incubate 3) activate castcard(noevent costx!:3:! named!:Incubator:!) auto=name(Incubate 3) name(Incubate 3) activate castcard(noevent costx!:3:! named!:Incubator:!)
aicode=activate transforms((,newability[surveil],newability[all(*[zpos<=psurveiloffsetplus1plusend]|mylibrary) transforms((,newability[if compare(genrand2)~equalto~1 then moveto(mygraveyard)])) oneshot])) oneshot aicode=activate transforms((,newability[surveil],newability[all(*[zpos<=psurveiloffsetplus1plusend]|mylibrary) transforms((,newability[if compare(genrand2)~equalto~1 then moveto(mygraveyard)])) oneshot])) oneshot
auto=@movedTo(phyrexian|graveyard) from(mybattlefield):name(Surveil 1) reveal:psurveiloffsetplus1plusend optionone name(put in graveyard) target(<upto:psurveiloffsetplus1plusend>*|reveal) moveto(ownergraveyard) optiononeend optiontwo name(put in library) target(<psurveiloffsetplus1plusend>*|reveal) moveto(ownerlibrary) optiontwoend afterrevealed surveil afterrevealedend revealend auto=@movedTo(phyrexian|graveyard) from(mybattlefield):name(Surveil 1) reveal:psurveiloffsetplus1plusend optionone name(put in graveyard) target(<upto:psurveiloffsetplus1plusend>*|reveal) moveto(ownergraveyard) optiononeend optiontwo name(put in library) target(<psurveiloffsetplus1plusend>*|reveal) moveto(ownerlibrary) optiontwoend afterrevealed surveil afterrevealedend revealend
auto=@movedTo(*[counter{0/0.1.Phyrexian}]|graveyard) from(mybattlefield):name(Surveil 1) reveal:psurveiloffsetplus1plusend optionone name(put in graveyard) target(<upto:psurveiloffsetplus1plusend>*|reveal) moveto(ownergraveyard) optiononeend optiontwo name(put in library) target(<psurveiloffsetplus1plusend>*|reveal) moveto(ownerlibrary) optiontwoend afterrevealed surveil afterrevealedend revealend
text=When Gift of Compleation enters the battlefield, incubate 3. (Create an Incubator token with three +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) -- Whenever a Phyrexian you control dies, surveil 1. (Look at the top card of your library. You may put that card into your graveyard.) text=When Gift of Compleation enters the battlefield, incubate 3. (Create an Incubator token with three +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) -- Whenever a Phyrexian you control dies, surveil 1. (Look at the top card of your library. You may put that card into your graveyard.)
mana={1}{B} mana={1}{B}
type=Enchantment type=Enchantment
@@ -36477,7 +36495,7 @@ toughness=4
[card] [card]
name=Grandmother Ravi Sengir name=Grandmother Ravi Sengir
abilities=flying abilities=flying
auto=@movedTo(creature|graveyard) from(opponentbattlefield):name(Put 1/1 counter) name(Put 1/1 counter) target(*[creature&legendary&human&wizard&isflipped]|mybattlefield) counter(1/1) auto=@movedTo(creature|graveyard) from(opponentbattlefield):name(Put 1/1 counter) name(Put 1/1 counter) counter(1/1)
auto=@movedTo(creature|graveyard) from(opponentbattlefield):name(Gain 1 life) life:1 controller auto=@movedTo(creature|graveyard) from(opponentbattlefield):name(Gain 1 life) life:1 controller
text=Flying -- Whenever a creature an opponent controls dies, put a +1/+1 counter on Grandmother Ravi Sengir and you gain 1 life. text=Flying -- Whenever a creature an opponent controls dies, put a +1/+1 counter on Grandmother Ravi Sengir and you gain 1 life.
color=black color=black
@@ -41851,8 +41869,7 @@ type=Artifact
[/card] [/card]
[card] [card]
name=Ichor Shade name=Ichor Shade
auto=@each my end restriction{morbid}:name(Put 1/1 counter) name(Put 1/1 counter) counter(1/1) auto=@each my end restriction{deadcreart}:name(Put 1/1 counter) name(Put 1/1 counter) counter(1/1)
auto=@each my end restriction{type(artifact[-creature&fresh]|mygraveyard)~morethan~0}:name(Put 1/1 counter) name(Put 1/1 counter) counter(1/1)
text=At the beginning of your end step, if an artifact or creature was put into a graveyard from the battlefield this turn, put a +1/+1 counter on Ichor Shade. text=At the beginning of your end step, if an artifact or creature was put into a graveyard from the battlefield this turn, put a +1/+1 counter on Ichor Shade.
mana={2}{B} mana={2}{B}
type=Creature type=Creature
@@ -43318,6 +43335,17 @@ mana={B}{G}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Inga and Esika
auto=lord(creature|mybattlefield) transforms((,newability[vigilance],newability[this(variable{type:creature:myrestrictedcastingzone}>0) {T}:add{W}],newability[this(variable{type:creature:myrestrictedcastingzone}>0) {T}:add{U}],newability[this(variable{type:creature:myrestrictedcastingzone}>0) {T}:add{B}],newability[this(variable{type:creature:myrestrictedcastingzone}>0) {T}:add{R}],newability[this(variable{type:creature:myrestrictedcastingzone}>0) {T}:add{G}]))
auto=@movedTo(creature[manacost>=3]|mystack):may name(Draw a card) draw:1 controller
text=Creatures you control have vigilance and "{T}: Add one mana of any color. Spend this mana only to cast a creature spell." -- Whenever you cast a creature spell, if three or more mana from creatures was spent to cast it, draw a card.
mana={2}{G}{U}
type=Legendary Creature
subtype=Human God
power=4
toughness=4
[/card]
[card]
name=Inga Rune-Eyes name=Inga Rune-Eyes
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=_SCRY3_ auto=_SCRY3_
@@ -43433,6 +43461,17 @@ power=3
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Injector Crocodile
autohand={2}{cycle}:name(search swamp) target(swamp|myLibrary) moveTo(myHand) and!( shuffle )!
auto=_DIES_name(Incubate 3) name(Incubate 3) activate castcard(noevent costx!:3:! named!:Incubator:!)
text=When Injector Crocodile dies, incubate 3. (Create an Incubator token with three +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) -- Swampcycling {2} ({2}, Discard this card: Search your library for a Swamp card, reveal it, put it into your hand, then shuffle.)
mana={4}{B}{B}
type=Creature
subtype=Phyrexian Crocodile
power=5
toughness=5
[/card]
[card]
name=Inkling Summoning name=Inkling Summoning
auto=token(Inkling,Creature Inkling,2/1,white,black,flying) auto=token(Inkling,Creature Inkling,2/1,white,black,flying)
text=Create a 2/1 white and black Inkling creature token with flying. text=Create a 2/1 white and black Inkling creature token with flying.
@@ -44079,6 +44118,38 @@ power=4
toughness=5 toughness=5
[/card] [/card]
[card] [card]
name=Invasion of Alara
backside=Awaken the Maelstrom
restriction=compare(isflipped)~equalto~0
anyzone={0}:doubleside(backside)
auto=counter(0/0.7.Defense)
auto=if type(*[-land;manacost<=4]|mylibrary)~morethan~1 then ability$!name(Put card in hand) name(Put card in hand) name(Put card in hand) target(*[-land;manacost<=4]|mylibrary) moveto(myhand) and!( transforms((,newability[may name(Cast another card) target(*[-land;manacost<=4]|mylibrary) activate castcard(normal)])) oneshot )! !$ controller
auto=if type(*[-land;manacost<=4]|mylibrary)~equalto~1 then ability$!name(Choose card) name(Choose card) name(Choose card) target(*[-land;manacost<=4]|mylibrary) moveto(myhand) and!( transforms((,newability[may name(Cast card) activate castcard(normal)])) oneshot )! !$ controller
auto=moveto(opponentbattlefield)
auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( moveto(ownergraveyard) and!( transforms((,newability[activate castcard(copied named!:awaken the maelstrom:!)])) oneshot )! )!
text=When Invasion of Alara enters the battlefield, exile cards from the top of your library until you exile two nonland cards with mana value 4 or less. You may cast one of those two cards without paying its mana cost. Put one of them into your hand. Then put the other cards exiled this way on the bottom of your library in a random order.
mana={W}{U}{B}{R}{G}
type=Battle
subtype=Siege
[/card]
[card]
name=Invasion of Amonkhet
backside=Lazotep Convert
restriction=compare(isflipped)~equalto~0
anyzone={0}:doubleside(backside)
auto=counter(0/0.4.Defense)
auto=ability$!name(Mill 3 cards) deplete:3!$ opponent
auto=ability$!name(Mill 3 cards) deplete:3!$ controller
auto=ability$!name(Discard a card) target(*|myhand) reject!$ opponent
auto=ability$!name(Draw a card) draw:1!$ controller
auto=moveto(opponentbattlefield)
auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Zombie) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Amonkhet enters the battlefield, each player mills three cards, then each opponent discards a card and you draw a card. (To mill three cards, a player puts the top three cards of their library into their graveyard.)
mana={1}{U}{B}
type=Battle
subtype=Siege
[/card]
[card]
name=Invasion of Arcavios name=Invasion of Arcavios
backside=Invocation of the Founders backside=Invocation of the Founders
restriction=compare(isflipped)~equalto~0 restriction=compare(isflipped)~equalto~0
@@ -44086,13 +44157,27 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.7.Defense) auto=counter(0/0.7.Defense)
auto=ability$!name(Search card) name(Search card) target(*[instant;sorcery]|mylibrary,mygraveyard,mysideboard) moveto(myhand)!$ controller auto=ability$!name(Search card) name(Search card) target(*[instant;sorcery]|mylibrary,mygraveyard,mysideboard) moveto(myhand)!$ controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Arcavios enters the battlefield, search your library, graveyard, and/or outside the game for an instant or sorcery card you own, reveal it, and put it into your hand. If you search your library this way, shuffle. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Arcavios enters the battlefield, search your library, graveyard, and/or outside the game for an instant or sorcery card you own, reveal it, and put it into your hand. If you search your library this way, shuffle.
mana={3}{U}{U} mana={3}{U}{U}
type=Battle type=Battle
subtype=Siege subtype=Siege
[/card] [/card]
[card] [card]
name=Invasion of Azgol
backside=Ashen Reaper
restriction=compare(isflipped)~equalto~0
anyzone={0}:doubleside(backside)
auto=counter(0/0.4.Defense)
auto=choice name name(Target opponent) transforms((,newability[life:-1 opponent],newability[ability$!name(Sacrifice creature or planeswalker) notatarget(*[creature;planeswalker]|mybattlefield) sacrifice!$ opponent],newability[moveto(opponentbattlefield)])) oneshot
auto=choice name name(Target controller) transforms((,newability[life:-1 controller],newability[ability$!name(Sacrifice creature or planeswalker) notatarget(*[creature;planeswalker]|mybattlefield) sacrifice!$ controller],newability[moveto(opponentbattlefield)])) oneshot
auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Zombie Elemental) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Azgol enters the battlefield, target player sacrifices a creature or planeswalker and loses 1 life.
mana={B}{R}
type=Battle
subtype=Siege
[/card]
[card]
name=Invasion of Belenon name=Invasion of Belenon
backside=Belenon War Anthem backside=Belenon War Anthem
restriction=compare(isflipped)~equalto~0 restriction=compare(isflipped)~equalto~0
@@ -44100,7 +44185,7 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.3.Defense) auto=counter(0/0.3.Defense)
auto=name(Create knight) token(Knight,Creature Knight,2/2,white,blue,vigilance) auto=name(Create knight) token(Knight,Creature Knight,2/2,white,blue,vigilance)
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Belenon enters the battlefield, create a 2/2 white and blue Knight creature token with vigilance. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Belenon enters the battlefield, create a 2/2 white and blue Knight creature token with vigilance.
mana={2}{W} mana={2}{W}
type=Battle type=Battle
@@ -44115,7 +44200,7 @@ auto=counter(0/0.5.Defense)
auto=name(Gain 4 life) life:4 controller auto=name(Gain 4 life) life:4 controller
auto=name(Draw a card) draw:1 controller auto=name(Draw a card) draw:1 controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Angel) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Angel) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Dominaria enters the battlefield, you gain 4 life and draw a card. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Dominaria enters the battlefield, you gain 4 life and draw a card.
mana={2}{W} mana={2}{W}
type=Battle type=Battle
@@ -44129,13 +44214,28 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.4.Defense) auto=counter(0/0.4.Defense)
auto=ability$!name(Discard 2 cards) name(Discard 2 cards) notatarget(<2>*|myhand) reject!$ opponent auto=ability$!name(Discard 2 cards) name(Discard 2 cards) notatarget(<2>*|myhand) reject!$ opponent
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Eldraine enters the battlefield, target opponent discards two cards. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Eldraine enters the battlefield, target opponent discards two cards.
mana={3}{B} mana={3}{B}
type=Battle type=Battle
subtype=Siege subtype=Siege
[/card] [/card]
[card] [card]
name=Invasion of Ergamon
backside=Truga Cliffcharger
restriction=compare(isflipped)~equalto~0
anyzone={0}:doubleside(backside)
auto=counter(0/0.4.Defense)
auto=ability$!name(Create treasure) token(Treasure Sur)!$ controller
auto=ability$!may name(Discard and draw) target(*|myhand) reject and!( transforms((,newability[draw:1 controller])) oneshot )!!$ controller
auto=moveto(opponentbattlefield)
auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Rhino) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Ergamon enters the battlefield, create a Treasure token. Then you may discard a card. If you do, draw a card.
mana={R}{G}
type=Battle
subtype=Siege
[/card]
[card]
name=Invasion of Fiora name=Invasion of Fiora
backside=Marchesa, Resolute Monarch backside=Marchesa, Resolute Monarch
restriction=compare(isflipped)~equalto~0 restriction=compare(isflipped)~equalto~0
@@ -44143,7 +44243,7 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.4.Defense) auto=counter(0/0.4.Defense)
auto=ability$!name(Choose one) choice name(Destroy all legendary creatures) all(creature[legendary]|battlefield) destroy _ choice name(Destroy all non-legendary creatures) all(creature[-legendary]|battlefield) destroy _ choice name(Destroy all creatures) all(creature|battlefield) destroy!$ controller auto=ability$!name(Choose one) choice name(Destroy all legendary creatures) all(creature[legendary]|battlefield) destroy _ choice name(Destroy all non-legendary creatures) all(creature[-legendary]|battlefield) destroy _ choice name(Destroy all creatures) all(creature|battlefield) destroy!$ controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Fiora enters the battlefield, choose one or both -- Destroy all legendary creatures. -- Destroy all nonlegendary creatures. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Fiora enters the battlefield, choose one or both -- Destroy all legendary creatures. -- Destroy all nonlegendary creatures.
mana={4}{B}{B} mana={4}{B}{B}
type=Battle type=Battle
@@ -44158,7 +44258,7 @@ auto=counter(0/0.3.Defense)
auto=if type(*[-land]|opponenthand)~morethan~0 then ability$!name(Look opponent's hand) name(Look opponent's hand) target(*[-land]|opponenthand) moveto(myreveal) and!( transforms((,newability[choice name(Exile card) moveto(opponentexile) and!( transforms((,newability[canplayfromexile],newability[changecost(colorless:2) forcedalive])) forever )!],newability[choice name(Don't exile card) moveto(opponenthand)])) forever )! !$ controller auto=if type(*[-land]|opponenthand)~morethan~0 then ability$!name(Look opponent's hand) name(Look opponent's hand) target(*[-land]|opponenthand) moveto(myreveal) and!( transforms((,newability[choice name(Exile card) moveto(opponentexile) and!( transforms((,newability[canplayfromexile],newability[changecost(colorless:2) forcedalive])) forever )!],newability[choice name(Don't exile card) moveto(opponenthand)])) forever )! !$ controller
auto=if type(*[-land]|opponenthand)~equalto~0 then ability$!name(Look opponent's hand) name(Look opponent's hand) target(*|opponenthand) moveto(opponentreveal) and!( moveto(opponenthand) )! !$ controller auto=if type(*[-land]|opponenthand)~equalto~0 then ability$!name(Look opponent's hand) name(Look opponent's hand) target(*|opponenthand) moveto(opponentreveal) and!( moveto(opponenthand) )! !$ controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Gobakhan enters the battlefield, look at target opponent's hand. You may exile a nonland card from it. For as long as that card remains exiled, its owner may play it. A spell cast this way costs {2} more to cast. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Gobakhan enters the battlefield, look at target opponent's hand. You may exile a nonland card from it. For as long as that card remains exiled, its owner may play it. A spell cast this way costs {2} more to cast.
mana={1}{W} mana={1}{W}
type=Battle type=Battle
@@ -44173,7 +44273,7 @@ aicode=activate transforms((,newability[if type(*[-instant;-sorcery;zpos<=5]|myL
auto=counter(0/0.4.Defense) auto=counter(0/0.4.Defense)
auto=ability$!name(Look top 5 cards) name(Look top 5 cards) reveal:5 optionone name(Get a permanent) target(<upto:1>*[-instant;-sorcery]|reveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend!$ controller auto=ability$!name(Look top 5 cards) name(Look top 5 cards) reveal:5 optionone name(Get a permanent) target(<upto:1>*[-instant;-sorcery]|reveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend!$ controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Dinosaur) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Dinosaur) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Ixalan enters the battlefield, look at the top five cards of your library. You may reveal a permanent card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Ixalan enters the battlefield, look at the top five cards of your library. You may reveal a permanent card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
mana={1}{G} mana={1}{G}
type=Battle type=Battle
@@ -44227,7 +44327,7 @@ auto=if compare(fullpaid)~equalto~19 then if type(creature[-human&manacost<=19]|
auto=if compare(fullpaid)~equalto~19 then if type(creature[-human&manacost<=19]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) auto=if compare(fullpaid)~equalto~19 then if type(creature[-human&manacost<=19]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield)
auto=if compare(fullpaid)~morethan~19 then if type(creature[-human&manacost<=20]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=20]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )! auto=if compare(fullpaid)~morethan~19 then if type(creature[-human&manacost<=20]|mygravelibrary)~morethan~0 then name(Search creature) name(Search creature) name(Search creature) target(creature[-human&manacost<=20]|mygravelibrary) moveto(mybattlefield) and!( all(this) moveto(opponentbattlefield) )!
auto=if compare(fullpaid)~morethan~19 then if type(creature[-human&manacost<=20]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield) auto=if compare(fullpaid)~morethan~19 then if type(creature[-human&manacost<=20]|mygravelibrary)~equalto~0 then moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Legendary Creature Dinosaur) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Legendary Creature Dinosaur) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Ikoria enters the battlefield, search your library and/or graveyard for a non-Human creature card with mana value X or less and put it onto the battlefield. If you search your library this way, shuffle. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Ikoria enters the battlefield, search your library and/or graveyard for a non-Human creature card with mana value X or less and put it onto the battlefield. If you search your library this way, shuffle.
mana={X}{G}{G} mana={X}{G}{G}
type=Battle type=Battle
@@ -44242,7 +44342,7 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.5.Defense) auto=counter(0/0.5.Defense)
auto=ability$!name(Creature gets -13/-13) name(Creature gets -13/-13) target(creature|opponentBattlefield) -13/-13 ueot!$ controller auto=ability$!name(Creature gets -13/-13) name(Creature gets -13/-13) target(creature|opponentBattlefield) -13/-13 ueot!$ controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- Flash -- When Invasion of Innistrad enters the battlefield, target creature an opponent controls gets -13/-13 until end of turn. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- Flash -- When Invasion of Innistrad enters the battlefield, target creature an opponent controls gets -13/-13 until end of turn.
mana={2}{B}{B} mana={2}{B}{B}
type=Battle type=Battle
@@ -44256,7 +44356,7 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.4.Defense) auto=counter(0/0.4.Defense)
auto=ability$!name(Tap creature or artifact) name(Tap creature or artifact) target(*[creature;artifact]|opponentbattlefield) transforms((,newability[tap],newability[counter(0/0.1.Stun)])) oneshot!$ controller auto=ability$!name(Tap creature or artifact) name(Tap creature or artifact) target(*[creature;artifact]|opponentbattlefield) transforms((,newability[tap],newability[counter(0/0.1.Stun)])) oneshot!$ controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Moonfolk Ninja) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Moonfolk Ninja) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Kamigawa enters the battlefield, tap target artifact or creature an opponent controls and put a stun counter on it. (If a permanent with a stun counter would become untapped, remove one from it instead.) text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Kamigawa enters the battlefield, tap target artifact or creature an opponent controls and put a stun counter on it. (If a permanent with a stun counter would become untapped, remove one from it instead.)
mana={3}{U} mana={3}{U}
type=Battle type=Battle
@@ -44270,7 +44370,7 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.4.Defense) auto=counter(0/0.4.Defense)
auto=ability$!name(Damage creatures and planeswalkers) name(Damage creatures and planeswalkers) all(*[creature;planeswalker]|battlefield) damage:3!$ controller auto=ability$!name(Damage creatures and planeswalkers) name(Damage creatures and planeswalkers) all(*[creature;planeswalker]|battlefield) damage:3!$ controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Karsus enters the battlefield, it deals 3 damage to each creature and each planeswalker. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Karsus enters the battlefield, it deals 3 damage to each creature and each planeswalker.
mana={2}{R}{R} mana={2}{R}{R}
type=Battle type=Battle
@@ -44284,7 +44384,7 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.4.Defense) auto=counter(0/0.4.Defense)
auto=name(Exile cards) name(Exile cards) all(*|myhand) moveto(myexile) and!( transforms((,newability[draw:1 controller],newability[counter(0/0.1.InvasionExiled) notrg],newability[this(counter{0/0.1.InvasionExiled}>0) canplayfromexile],newability[@each untap restriction{compare(hascntinvasionexiled)~morethan~0}:transforms((,newability[canplayfromexile])) ueot],newability[@each my upkeep restriction{compare(hascntinvasionexiled)~morethan~0}:removeallcounters(0/0.1.InvasionExiled)])) forever )! auto=name(Exile cards) name(Exile cards) all(*|myhand) moveto(myexile) and!( transforms((,newability[draw:1 controller],newability[counter(0/0.1.InvasionExiled) notrg],newability[this(counter{0/0.1.InvasionExiled}>0) canplayfromexile],newability[@each untap restriction{compare(hascntinvasionexiled)~morethan~0}:transforms((,newability[canplayfromexile])) ueot],newability[@each my upkeep restriction{compare(hascntinvasionexiled)~morethan~0}:removeallcounters(0/0.1.InvasionExiled)])) forever )!
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Kaldheim enters the battlefield, exile all cards from your hand, then draw that many cards. Until the end of your next turn, you may play cards exiled this way. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Kaldheim enters the battlefield, exile all cards from your hand, then draw that many cards. Until the end of your next turn, you may play cards exiled this way.
mana={3}{R} mana={3}{R}
type=Battle type=Battle
@@ -44298,7 +44398,7 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.4.Defense) auto=counter(0/0.4.Defense)
auto=ability$!may name(Discard and draw) target(*|myhand) reject and!( draw:2 controller )!!$ controller auto=ability$!may name(Discard and draw) target(*|myhand) reject and!( draw:2 controller )!!$ controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Mercadia enters the battlefield, you may discard a card. If you do, draw two cards. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Mercadia enters the battlefield, you may discard a card. If you do, draw two cards.
mana={1}{R} mana={1}{R}
type=Battle type=Battle
@@ -44312,7 +44412,7 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.6.Defense) auto=counter(0/0.6.Defense)
auto=ability$!name(Put counter and fight) name(Put counter and fight) target(creature|mybattlefield) transforms((,newability[counter(1/1)],newability[may name(Fights another creature) target(creature|opponentbattlefield) dynamicability<!powerstrike eachother!>])) ueot!$ controller auto=ability$!name(Put counter and fight) name(Put counter and fight) target(creature|mybattlefield) transforms((,newability[counter(1/1)],newability[may name(Fights another creature) target(creature|opponentbattlefield) dynamicability<!powerstrike eachother!>])) ueot!$ controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Ooze) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Ooze) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Muraganda enters the battlefield, put a +1/+1 counter on target creature you control. Then that creature fights up to one target creature you don't control. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Muraganda enters the battlefield, put a +1/+1 counter on target creature you control. Then that creature fights up to one target creature you don't control.
mana={4}{G} mana={4}{G}
type=Battle type=Battle
@@ -44326,7 +44426,7 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.4.Defense) auto=counter(0/0.4.Defense)
auto=ability$!name(Exile opponent permanent) target(*[multicolor]|opponentbattlefield) moveto(exile)!$ controller auto=ability$!name(Exile opponent permanent) target(*[multicolor]|opponentbattlefield) moveto(exile)!$ controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Artifact Creature Construct) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Artifact Creature Construct) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Ravnica enters the battlefield, exile target nonland permanent an opponent controls that isn't exactly two colors. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Ravnica enters the battlefield, exile target nonland permanent an opponent controls that isn't exactly two colors.
mana={5} mana={5}
type=Battle type=Battle
@@ -44340,7 +44440,7 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.5.Defense) auto=counter(0/0.5.Defense)
auto=ability$!may name(Damage creature) name(Damage creatures) target(creature|battlefield) damage:1!$ controller auto=ability$!may name(Damage creature) name(Damage creatures) target(creature|battlefield) damage:1!$ controller
auto=transforms((,newability[choice name(Damage opponent) damage:4 opponent && all(this) moveto(opponentbattlefield)],newability[choice name(Damage other battle) target(other *[battle]|battlefield) damage:4 && all(this) moveto(opponentbattlefield)])) oneshot auto=transforms((,newability[choice name(Damage opponent) damage:4 opponent && all(this) moveto(opponentbattlefield)],newability[choice name(Damage other battle) target(other *[battle]|battlefield) damage:4 && all(this) moveto(opponentbattlefield)])) oneshot
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Regatha enters the battlefield, it deals 4 damage to another target battle or opponent and 1 damage to up to one target creature. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Regatha enters the battlefield, it deals 4 damage to another target battle or opponent and 1 damage to up to one target creature.
mana={2}{R} mana={2}{R}
type=Battle type=Battle
@@ -44354,7 +44454,7 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.4.Defense) auto=counter(0/0.4.Defense)
auto=name(Create 2 Kraken) token(Kraken,Creature Kraken,1/1,blue,trample)*2 auto=name(Create 2 Kraken) token(Kraken,Creature Kraken,1/1,blue,trample)*2
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Legendary Creature Serpent) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Legendary Creature Serpent) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Segovia enters the battlefield, create two 1/1 blue Kraken creature tokens with trample. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Segovia enters the battlefield, create two 1/1 blue Kraken creature tokens with trample.
mana={2}{U} mana={2}{U}
type=Battle type=Battle
@@ -44368,7 +44468,7 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.6.Defense) auto=counter(0/0.6.Defense)
auto=ability$!may name(Return 3 permanents) target(<upto:3>*[-instant;-sorcery]|mygraveyard) moveto(ownerhand)!$ controller auto=ability$!may name(Return 3 permanents) target(<upto:3>*[-instant;-sorcery]|mygraveyard) moveto(ownerhand)!$ controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Shandalar enters the battlefield, return up to three target permanent cards from your graveyard to your hand. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Shandalar enters the battlefield, return up to three target permanent cards from your graveyard to your hand.
mana={3}{G}{G} mana={3}{G}{G}
type=Battle type=Battle
@@ -44381,7 +44481,7 @@ restriction=compare(isflipped)~equalto~0
anyzone={0}:doubleside(backside) anyzone={0}:doubleside(backside)
auto=counter(0/0.5.Defense) auto=counter(0/0.5.Defense)
auto=transforms((,newability[choice name(Damage player) damage:type:dragon:myhandplus2plusend target(player) && all(this) moveto(opponentbattlefield)],newability[choice name(Damage permanent) target(other *|battlefield) damage:type:dragon:myhandplus2plusend && all(this) moveto(opponentbattlefield)])) oneshot auto=transforms((,newability[choice name(Damage player) damage:type:dragon:myhandplus2plusend target(player) && all(this) moveto(opponentbattlefield)],newability[choice name(Damage permanent) target(other *|battlefield) damage:type:dragon:myhandplus2plusend && all(this) moveto(opponentbattlefield)])) oneshot
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )! asSorcery auto=@@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Enchantment) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Tarkir enters the battlefield, reveal any number of Dragon cards from your hand. When you do, Invasion of Tarkir deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Tarkir enters the battlefield, reveal any number of Dragon cards from your hand. When you do, Invasion of Tarkir deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.)
mana={1}{R} mana={1}{R}
type=Battle type=Battle
@@ -44409,7 +44509,7 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.4.Defense) auto=counter(0/0.4.Defense)
auto=ability$!name(Search library) name(Search library) target(*[aura;god;demigod]|mylibrary) moveto(myhand) and!( shuffle )! !$ controller auto=ability$!name(Search library) name(Search library) target(*[aura;god;demigod]|mylibrary) moveto(myhand) and!( shuffle )! !$ controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Legendary Enchantment Creature) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Legendary Enchantment Creature) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Theros enters the battlefield, search your library for an Aura, God, or Demigod card, reveal it, put it into your hand, then shuffle. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Theros enters the battlefield, search your library for an Aura, God, or Demigod card, reveal it, put it into your hand, then shuffle.
mana={2}{W} mana={2}{W}
type=Battle type=Battle
@@ -44424,7 +44524,7 @@ auto=counter(0/0.5.Defense)
auto=ability$!name(Deals 3 damage) name(Deals 3 damage) target(player,creature,planeswalker) damage:3!$ controller auto=ability$!name(Deals 3 damage) name(Deals 3 damage) target(player,creature,planeswalker) damage:3!$ controller
auto=name(Gain 3 life) life:3 controller auto=name(Gain 3 life) life:3 controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Legendary Creature Human Wizard) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Legendary Creature Human Wizard) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Ulgrotha enters the battlefield, it deals 3 damage to any other target and you gain 3 life. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Ulgrotha enters the battlefield, it deals 3 damage to any other target and you gain 3 life.
mana={4}{B} mana={4}{B}
type=Battle type=Battle
@@ -44438,7 +44538,7 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.4.Defense) auto=counter(0/0.4.Defense)
auto=draw:3 controller && ability$!name(Discard a card) name(Discard a card) reject notatarget(*|myhand)!$ controller auto=draw:3 controller && ability$!name(Discard a card) name(Discard a card) reject notatarget(*|myhand)!$ controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Artifact) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Artifact) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Vryn enters the battlefield, draw three cards, then discard a card. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Vryn enters the battlefield, draw three cards, then discard a card.
mana={3}{U} mana={3}{U}
type=Battle type=Battle
@@ -44452,7 +44552,7 @@ anyzone={0}:doubleside(backside)
auto=counter(0/0.6.Defense) auto=counter(0/0.6.Defense)
auto=ability$!may name(Search 2 basic lands) target(<upto:2>land[basic]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[tap(noevent)],newability[shuffle])) oneshot )!!$ controller auto=ability$!may name(Search 2 basic lands) target(<upto:2>land[basic]|mylibrary) moveto(mybattlefield) and!( transforms((,newability[tap(noevent)],newability[shuffle])) oneshot )!!$ controller
auto=moveto(opponentbattlefield) auto=moveto(opponentbattlefield)
auto=@counterremoved(0/0,1,Defense) from(this) restriction{compare(hascntdefense)~equalto~0}:name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Elemental) )! asSorcery auto=@defeated(this):name(Exile and transforms) name(Exile and transforms) moveto(ownerexile) and!( flip(backside) forcetype(Creature Elemental) )!
text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Zendikar enters the battlefield, search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle. text=(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.) -- When Invasion of Zendikar enters the battlefield, search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle.
mana={3}{G} mana={3}{G}
type=Battle type=Battle
@@ -48338,7 +48438,8 @@ toughness=6
[card] [card]
name=Krark, the Thumbless name=Krark, the Thumbless
abilities=partner abilities=partner
auto=@movedTo(instant,sorcery|mystack):name(flip a coin) all(trigger[to]) flipacoin winability activate castcard(copied noevent) winabilityend loseability fizzleto(hand) loseabilityend flipend auto=@movedTo(*[instant;sorcery]|mystack):name(Flip a coin) all(trigger[to]) flipacoin winability activate castcard(copied noevent) winabilityend loseability counter(0/0.1.KrarkEffect) loseabilityend flipend
auto=@counteradded(0/0.1.KrarkEffect) from(*[instant;sorcery]|mystack):name(Return spell to hand) target(*[counter{0/0.1.KrarkEffect}]|mystack) spellmover(hand)
text=Whenever you cast an instant or sorcery spell, flip a coin. If you lose the flip, return that spell to its owner's hand. If you win the flip, copy that spell, and you may choose new targets for the copy. -- Partner (You can have two commanders if both have partner.) text=Whenever you cast an instant or sorcery spell, flip a coin. If you lose the flip, return that spell to its owner's hand. If you win the flip, copy that spell, and you may choose new targets for the copy. -- Partner (You can have two commanders if both have partner.)
mana={1}{R} mana={1}{R}
type=Legendary Creature type=Legendary Creature
@@ -49459,6 +49560,16 @@ power=1
toughness=3 toughness=3
[/card] [/card]
[card] [card]
name=Lazotep Convert
auto=may name(Enter as copy) target(creature|graveyard) copy and!( transforms((Zombie,setpower=4,settoughness=4,newcolors[black])) forever )!
text=You may have Lazotep Convert enter the battlefield as a copy of any creature card in a graveyard, except it's a 4/4 black Zombie in addition to its other colors and types.
mana=blue,black
type=Creature
subtype=Zombie
power=4
toughness=4
[/card]
[card]
name=Lazotep Plating name=Lazotep Plating
auto=_AMASS_(1) auto=_AMASS_(1)
auto=all(*|myBattlefield) transforms((,newability[opponentshroud],newability[controllershroud])) ueot auto=all(*|myBattlefield) transforms((,newability[opponentshroud],newability[controllershroud])) ueot
@@ -62959,7 +63070,6 @@ toughness=5
[card] [card]
name=Phyrexian name=Phyrexian
backside=Incubator backside=Incubator
auto=counter(0/0.1.Phyrexian) notrg
type=Artifact Creature type=Artifact Creature
subtype=Phyrexian subtype=Phyrexian
power=0 power=0
@@ -91271,6 +91381,17 @@ power=2
toughness=2 toughness=2
[/card] [/card]
[card] [card]
name=Truga Cliffcharger
abilities=trample
auto=may name(Discard a card) target(*|myhand) reject and!( transforms((,newability[name(Search land or battle) target(*[land;battle]|mylibrary) moveto(myhand) and!( shuffle )!])) oneshot )!
text=Trample -- When Truga Cliffcharger enters the battlefield, you may discard a card. If you do, search your library for a land or battle card, reveal it, put it into your hand, then shuffle.
color=red,green
type=Creature
subtype=Rhino
power=3
toughness=4
[/card]
[card]
name=Trumpeting Gnarr name=Trumpeting Gnarr
abilities=mutate abilities=mutate
otherrestriction=type(creature[-human]|mybattlefield)~morethan~0 otherrestriction=type(creature[-human]|mybattlefield)~morethan~0
+31 -2
View File
@@ -784,6 +784,34 @@ public:
} }
}; };
class TrCardDefeated: public Trigger
{
public:
bool limitOnceATurn;
int triggeredTurn;
TrCardDefeated(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false) :
Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn)
{
triggeredTurn = -1;
}
int triggerOnEventImpl(WEvent * event)
{
WEventCardDefeated * e = dynamic_cast<WEventCardDefeated *> (event);
if (!e) return 0;
if (limitOnceATurn && triggeredTurn == game->turn)
return 0;
if (!tc->canTarget(e->card)) return 0;
triggeredTurn = game->turn;
return 1;
}
TrCardDefeated * clone() const
{
return NEW TrCardDefeated(*this);
}
};
class TrCardSurveiled: public Trigger class TrCardSurveiled: public Trigger
{ {
public: public:
@@ -6906,7 +6934,7 @@ public:
string abilityWin; string abilityWin;
string abilityLose; string abilityLose;
MTGAbility * abilityAltered; MTGAbility * abilityAltered;
AASetCoin(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, int side = -1,string toAdd = ""); AASetCoin(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, int side = -1, string toAdd = "");
int resolve(); int resolve();
const string getMenuText(); const string getMenuText();
AASetCoin * clone() const; AASetCoin * clone() const;
@@ -6917,7 +6945,8 @@ class GenericFlipACoin: public ActivatedAbility
public: public:
string baseAbility; string baseAbility;
AASetCoin * setCoin; AASetCoin * setCoin;
GenericFlipACoin(GameObserver* observer, int id, MTGCardInstance * source, Targetable * target, string toAdd = "", ManaCost * cost = NULL); int userchoice;
GenericFlipACoin(GameObserver* observer, int id, MTGCardInstance * source, Targetable * target, string toAdd = "", ManaCost * cost = NULL, int userchoice = 0);
int resolve(); int resolve();
const string getMenuText(); const string getMenuText();
GenericFlipACoin * clone() const; GenericFlipACoin * clone() const;
+1
View File
@@ -97,6 +97,7 @@ public:
bool turningOver; bool turningOver;
bool isMorphed; bool isMorphed;
int isFlipped; int isFlipped;
bool isDefeated;
string MeldedFrom; string MeldedFrom;
bool isPhased; bool isPhased;
bool isCascaded; bool isCascaded;
+6
View File
@@ -407,6 +407,12 @@ struct WEventCardBoasted : public WEventCardUpdate {
virtual Targetable * getTarget(int target); virtual Targetable * getTarget(int target);
}; };
//defeated event
struct WEventCardDefeated : public WEventCardUpdate {
WEventCardDefeated(MTGCardInstance * card);
virtual Targetable * getTarget(int target);
};
//surveil event //surveil event
struct WEventCardSurveiled : public WEventCardUpdate { struct WEventCardSurveiled : public WEventCardUpdate {
WEventCardSurveiled(MTGCardInstance * card); WEventCardSurveiled(MTGCardInstance * card);
+18 -10
View File
@@ -2613,7 +2613,7 @@ AACounter::AACounter(GameObserver* observer, int id, MTGCardInstance * source, M
if(_target->getCurrentZone() != _target->controller()->game->battlefield || if(_target->getCurrentZone() != _target->controller()->game->battlefield ||
_target->getCurrentZone() != _target->controller()->opponent()->game->battlefield) _target->getCurrentZone() != _target->controller()->opponent()->game->battlefield)
{ {
if(power||toughness) if(!_target->isFlipped && (power||toughness)) // Skipped control for flipped card to solve a bug on double faces cards (e.g. "Ashen Reaper").
{ {
if(_target->previousZone == _target->controller()->game->battlefield || if(_target->previousZone == _target->controller()->game->battlefield ||
_target->previousZone == _target->controller()->opponent()->game->battlefield) _target->previousZone == _target->controller()->opponent()->game->battlefield)
@@ -3416,8 +3416,8 @@ AASetNameChosen::~AASetNameChosen()
// //
//choosing flip coin //choosing flip coin
GenericFlipACoin::GenericFlipACoin(GameObserver* observer, int id, MTGCardInstance * source, Targetable *,string _toAdd, ManaCost * cost) : GenericFlipACoin::GenericFlipACoin(GameObserver* observer, int id, MTGCardInstance * source, Targetable *,string _toAdd, ManaCost * cost, int userchoice) :
ActivatedAbility(observer, id, source, cost, 0), baseAbility(_toAdd) ActivatedAbility(observer, id, source, cost, 0), baseAbility(_toAdd), userchoice(userchoice)
{ {
this->GetId(); this->GetId();
setCoin = NULL; setCoin = NULL;
@@ -3428,15 +3428,23 @@ int GenericFlipACoin::resolve()
if (!target) if (!target)
return 0; return 0;
vector<MTGAbility*>selection; vector<MTGAbility*>selection;
for (int i = 0; i <2; ++i) if(userchoice > 0 && userchoice <= 2){
{ setCoin = NEW AASetCoin(game, game->mLayers->actionLayer()->getMaxId(), source,(MTGCardInstance*)target, userchoice, baseAbility);
setCoin = NEW AASetCoin(game, game->mLayers->actionLayer()->getMaxId(), source,(MTGCardInstance*)target, i, baseAbility);
MTGAbility * set = setCoin->clone(); MTGAbility * set = setCoin->clone();
set->oneShot = true; set->oneShot = true;
selection.push_back(set); game->mLayers->actionLayer()->currentActionCard = (MTGCardInstance *)target;
set->resolve();
SAFE_DELETE(setCoin); SAFE_DELETE(setCoin);
} else{
for (int i = 1; i <=2; ++i)
{
setCoin = NEW AASetCoin(game, game->mLayers->actionLayer()->getMaxId(), source,(MTGCardInstance*)target, i, baseAbility);
MTGAbility * set = setCoin->clone();
set->oneShot = true;
selection.push_back(set);
SAFE_DELETE(setCoin);
}
} }
if(selection.size()) if(selection.size())
{ {
MTGAbility * a1 = NEW MenuAbility(game, this->GetId(), target, source,false,selection); MTGAbility * a1 = NEW MenuAbility(game, this->GetId(), target, source,false,selection);
@@ -3463,7 +3471,7 @@ GenericFlipACoin::~GenericFlipACoin()
} }
//set coin result //set coin result
AASetCoin::AASetCoin(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * _target,int _side , string toAlter): AASetCoin::AASetCoin(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * _target, int _side, string toAlter):
InstantAbility(observer, id, source),side(_side), abilityToAlter(toAlter) InstantAbility(observer, id, source),side(_side), abilityToAlter(toAlter)
{ {
this->target = _target; this->target = _target;
@@ -3475,7 +3483,7 @@ int AASetCoin::resolve()
MTGCardInstance * _target = (MTGCardInstance *)target; MTGCardInstance * _target = (MTGCardInstance *)target;
_target->coinSide = side; _target->coinSide = side;
int flip = game->getRandomGenerator()->random() % 2; int flip = 1 + game->getRandomGenerator()->random() % 2;
_target->lastFlipResult = flip; _target->lastFlipResult = flip;
WEvent * e = NEW WEventCardFlipCoin(_target, source->controller()->getDisplayName()); WEvent * e = NEW WEventCardFlipCoin(_target, source->controller()->getDisplayName());
game->receiveEvent(e); game->receiveEvent(e);
+62 -1
View File
@@ -461,6 +461,58 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
if(!isMorbid) if(!isMorbid)
return 0; return 0;
} }
check = restriction[i].find("deadpermanent");
if(check != string::npos)
{
bool isMorbid = false;
for(int cp = 0;cp < 2;cp++)
{
Player * checkCurrent = observer->players[cp];
MTGGameZone * grave = checkCurrent->game->graveyard;
for(unsigned int gy = 0;gy < grave->cardsSeenThisTurn.size();gy++)
{
MTGCardInstance * checkCard = grave->cardsSeenThisTurn[gy];
if(checkCard->isPermanent() &&
((checkCard->previousZone == checkCurrent->game->battlefield)||
(checkCard->previousZone == checkCurrent->opponent()->game->battlefield))//died from battlefield
)
{
isMorbid = true;
break;
}
}
if(isMorbid)
break;
}
if(!isMorbid)
return 0;
}
check = restriction[i].find("deadcreart");
if(check != string::npos)
{
bool isMorbid = false;
for(int cp = 0;cp < 2;cp++)
{
Player * checkCurrent = observer->players[cp];
MTGGameZone * grave = checkCurrent->game->graveyard;
for(unsigned int gy = 0;gy < grave->cardsSeenThisTurn.size();gy++)
{
MTGCardInstance * checkCard = grave->cardsSeenThisTurn[gy];
if((checkCard->isCreature() || checkCard->hasType(Subtypes::TYPE_ARTIFACT)) &&
((checkCard->previousZone == checkCurrent->game->battlefield)||
(checkCard->previousZone == checkCurrent->opponent()->game->battlefield))//died from battlefield
)
{
isMorbid = true;
break;
}
}
if(isMorbid)
break;
}
if(!isMorbid)
return 0;
}
check = restriction[i].find("zerodead"); check = restriction[i].find("zerodead");
if(check != string::npos)//returns true if zero if(check != string::npos)//returns true if zero
{ {
@@ -1358,6 +1410,10 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
if (TargetChooser * tc = parseSimpleTC(s, "boasted", card)) if (TargetChooser * tc = parseSimpleTC(s, "boasted", card))
return NEW TrCardBoasted(observer, id, card, tc, once, limitOnceATurn); return NEW TrCardBoasted(observer, id, card, tc, once, limitOnceATurn);
//a battle card has been defeated
if (TargetChooser * tc = parseSimpleTC(s, "defeated", card))
return NEW TrCardDefeated(observer, id, card, tc, once, limitOnceATurn);
//Surveil has been performed from a card //Surveil has been performed from a card
if (TargetChooser * tc = parseSimpleTC(s, "surveiled", card)) if (TargetChooser * tc = parseSimpleTC(s, "surveiled", card))
return NEW TrCardSurveiled(observer, id, card, tc, once, limitOnceATurn); return NEW TrCardSurveiled(observer, id, card, tc, once, limitOnceATurn);
@@ -2871,7 +2927,12 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
if (splitFlipCoin.size()) if (splitFlipCoin.size())
{ {
string a1 = splitFlipCoin[1]; string a1 = splitFlipCoin[1];
MTGAbility * a = NEW GenericFlipACoin(observer, id, card, target, a1); int userchoice = 0;
if(a1[0] >= 48 && a1[0] <= 57){
userchoice = (a1[0] - 48);
a1 = a1.substr(2);
}
MTGAbility * a = NEW GenericFlipACoin(observer, id, card, target, a1, NULL, userchoice);
a->oneShot = 1; a->oneShot = 1;
a->canBeInterrupted = false; a->canBeInterrupted = false;
return a; return a;
+1
View File
@@ -233,6 +233,7 @@ void MTGCardInstance::initMTGCI()
isMorphed = false; isMorphed = false;
MeldedFrom = ""; MeldedFrom = "";
isFlipped = 0; isFlipped = 0;
isDefeated = false;
isPhased = false; isPhased = false;
isCascaded = false; isCascaded = false;
phasedTurn = -1; phasedTurn = -1;
+25 -1
View File
@@ -557,9 +557,23 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone
copy->getManaCost()->getManaUsedToCast()->copy(card->getManaCost()->getManaUsedToCast()); copy->getManaCost()->getManaUsedToCast()->copy(card->getManaCost()->getManaUsedToCast());
} }
if(!card->hasType(Subtypes::TYPE_LEGENDARY) && copy->hasType(Subtypes::TYPE_LEGENDARY)) // This fix issue when cloning a card with nolegend option (e.g. Double Major) if(card->name == copy->name && !card->hasType(Subtypes::TYPE_LEGENDARY) && copy->hasType(Subtypes::TYPE_LEGENDARY)) // This fix issue when cloning a card with nolegend option (e.g. Double Major)
copy->removeType(Subtypes::TYPE_LEGENDARY); copy->removeType(Subtypes::TYPE_LEGENDARY);
std::vector<int> realTypes;
if(card->name == copy->backSide){ // This fix issue types problem when card dies as its backside (e.g. "Incubator" and "Phyrexian").
for (int i = ((int)copy->types.size())-1; i >= 0; --i){
realTypes.push_back(copy->types[i]);
copy->removeType(copy->types[i]);
}
for (int i = 0; i < ((int)card->types.size()); i++)
copy->addType(card->types[i]);
if(copy->types[0] == 1 && copy->types[1] == 7){ // Fix order for Legendary Creatures
copy->types[0] = 7;
copy->types[1] = 1;
}
}
// Copy all the counters of the original card... (solving the bug on comparison cards with counter before zone changing events) // Copy all the counters of the original card... (solving the bug on comparison cards with counter before zone changing events)
if(card->counters && doCopy && !asCopy && !inplaytoinplay){ if(card->counters && doCopy && !asCopy && !inplaytoinplay){
for (unsigned int i = 0; i < card->counters->counters.size(); i++){ for (unsigned int i = 0; i < card->counters->counters.size(); i++){
@@ -757,6 +771,16 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone
if(doCopy && !inplaytoinplay && copy->has(Constants::ISPREY)) if(doCopy && !inplaytoinplay && copy->has(Constants::ISPREY))
copy->basicAbilities[Constants::ISPREY] = 0; copy->basicAbilities[Constants::ISPREY] = 0;
if(realTypes.size() && card->name == copy->backSide){ // Reset original types when card dies as its backside (e.g. "Incubator" and "Phyrexian").
copy->types.clear();
for (int i = 0; i < ((int)realTypes.size()); i++)
copy->addType(realTypes[i]);
if(copy->types[0] == 1 && copy->types[1] == 7){ // Fix order for Legendary Creatures
copy->types[0] = 7;
copy->types[1] = 1;
}
}
// Erasing counters from copy after the event has been triggered (no counter can survive to a zone changing except the perpetual ones) // Erasing counters from copy after the event has been triggered (no counter can survive to a zone changing except the perpetual ones)
if(doCopy && !inplaytoinplay && copy->counters && copy->counters->mCount > 0){ if(doCopy && !inplaytoinplay && copy->counters && copy->counters->mCount > 0){
for (unsigned int i = 0; i < copy->counters->counters.size(); i++){ for (unsigned int i = 0; i < copy->counters->counters.size(); i++){
+10
View File
@@ -3992,6 +3992,16 @@ int MTGPlaneswalkerDamage::receiveEvent(WEvent * event)
removel->targetCard->toGrave(true); removel->targetCard->toGrave(true);
return 1; return 1;
} }
if(removel->removed && removel->targetCard && removel->targetCard->hasType(Subtypes::TYPE_BATTLE))
if(!removel->targetCard->counters->hasCounter("defense", 0, 0))
{
if(!removel->targetCard->isDefeated){
removel->targetCard->isDefeated = true;
WEvent * e = NEW WEventCardDefeated(removel->targetCard);
game->receiveEvent(e);
}
return 1;
}
} }
return 0; return 0;
} }
+11
View File
@@ -322,6 +322,11 @@ WEventCardBoasted::WEventCardBoasted(MTGCardInstance * card) :
{ {
} }
WEventCardDefeated::WEventCardDefeated(MTGCardInstance * card) :
WEventCardUpdate(card)
{
}
WEventCardSurveiled::WEventCardSurveiled(MTGCardInstance * card) : WEventCardSurveiled::WEventCardSurveiled(MTGCardInstance * card) :
WEventCardUpdate(card) WEventCardUpdate(card)
{ {
@@ -590,6 +595,12 @@ Targetable * WEventCardBoasted::getTarget(int target)
return NULL; return NULL;
} }
Targetable * WEventCardDefeated::getTarget(int target)
{
if (target) return card;
return NULL;
}
Targetable * WEventCardSurveiled::getTarget(int target) Targetable * WEventCardSurveiled::getTarget(int target)
{ {
if (target) return card; if (target) return card;