Added/fixed primitives, fixed crash with Taj-Nar Swordsmith, Fixed monarch switch after player takes combat damage, fixed allsubtypes in transforms keyword, fixed controllerdamager and opponentdamager keywords and all primitives using them, fixed Emerge alternative cost restriction, fixed Kinship condition on same creature subtype, added alterexperience keyword and fixed all primitives that use experience counters, fixed all primitives using ability counters from Ikoria, fixed mypoolsave keyword in order to don't finish effect at the end of turn, fixed all primitives using mypoolsave (e.g. Omnath, Locus of Mana), fixed Gravepurge and Daretti, Scrap Savant, in order to allow the player to discard zero cards while using their effects.

This commit is contained in:
Vittorio Alfieri
2021-07-29 03:33:33 +02:00
parent d2fbaaf320
commit 2cbb011fe3
17 changed files with 380 additions and 169 deletions
+1
View File
@@ -86,6 +86,7 @@ auto=@movedto(other *|battlefield) restriction{type(*[isflipped]|nonbattlezone)~
#Monarch rule #Monarch rule
auto=@each my endofturn restriction{compare(pmonarch)~morethan~0}:draw:1 auto=@each my endofturn restriction{compare(pmonarch)~morethan~0}:draw:1
auto=@combatdamageof(player) restriction{compare(pmonarch)~morethan~0}:becomesmonarch opponent
#reset Creature damage at the cleanup phase #reset Creature damage at the cleanup phase
auto=@each cleanup:all(*|myBattlefield) resetDamage auto=@each cleanup:all(*|myBattlefield) resetDamage
+1
View File
@@ -85,6 +85,7 @@ auto=@movedto(other *|battlefield) restriction{type(*[isflipped]|nonbattlezone)~
#Monarch rule #Monarch rule
auto=@each my endofturn restriction{compare(pmonarch)~morethan~0}:draw:1 auto=@each my endofturn restriction{compare(pmonarch)~morethan~0}:draw:1
auto=@combatdamageof(player) restriction{compare(pmonarch)~morethan~0}:becomesmonarch opponent
#reset Creature damage at the cleanup phase #reset Creature damage at the cleanup phase
auto=@each cleanup:all(*|myBattlefield) resetDamage auto=@each cleanup:all(*|myBattlefield) resetDamage
@@ -3938,8 +3938,8 @@ toughness=3
[/card] [/card]
[card] [card]
name=Avenging Huntbonder name=Avenging Huntbonder
abilities=Double Strike abilities=double strike
auto=@combat(attacking) source(this):transforms((,newability[counter(0/0,1,Double Strike)],newability[this(counter{0/0.1.Double Strike}>=1) double strike])) target(other creature[attacking]) auto=@combat(attacking) source(this):name(Put double strike counter) target(other creature[attacking]) transforms((,newability[counter(0/0.1.DoubleStrike)],newability[this(counter{0/0.1.DoubleStrike}>=1) double strike])) forever
text=Double strike -- Whenever Avenging Huntbonder attacks, put a double strike counter on another target attacking creature. text=Double strike -- Whenever Avenging Huntbonder attacks, put a double strike counter on another target attacking creature.
mana={3}{W}{W} mana={3}{W}{W}
type=Creature type=Creature
@@ -3951,7 +3951,7 @@ toughness=3
name=Avian Oddity name=Avian Oddity
abilities=flying,cycling abilities=flying,cycling
autohand=__CYCLING__({2}{U}) autohand=__CYCLING__({2}{U})
autohand=@cycled(this|myHand):transforms((,newability[counter(0/0,1,Flying],newability[this(counter{0/0.1.Flying}>=1) flying target(creature|myBattlefield)])) autohand=@cycled(this|myHand):name(Put flying counter) target(creature|myBattlefield) transforms((,newability[counter(0/0.1.Flying],newability[this(counter{0/0.1.Flying}>=1) flying])) forever
text=Flying -- Cycling {2}{U} ({2}{U}, Discard this card: Draw a card.) -- When you cycle Avian Oddity, put a flying counter on target creature you control. text=Flying -- Cycling {2}{U} ({2}{U}, Discard this card: Draw a card.) -- When you cycle Avian Oddity, put a flying counter on target creature you control.
mana={3}{U} mana={3}{U}
type=Creature type=Creature
@@ -5120,9 +5120,9 @@ name=Beast Viv
auto=this(counter{0/0.1.Vigilance}>=1) vigilance auto=this(counter{0/0.1.Vigilance}>=1) vigilance
auto=this(counter{0/0.1.Reach}>=1) reach auto=this(counter{0/0.1.Reach}>=1) reach
auto=this(counter{0/0.1.Trample}>=1) trample auto=this(counter{0/0.1.Trample}>=1) trample
auto=choice name(Vigilance) counter(0/0,1,Vigilance) auto=choice name(Vigilance counter) counter(0/0,1,Vigilance)
auto=choice name(Reach) counter(0/0,1,Reach) auto=choice name(Reach counter) counter(0/0,1,Reach)
auto=choice name(Trample) counter(0/0,1,Trample) auto=choice name(Trample counter) counter(0/0,1,Trample)
type=Creature type=Creature
subttype=Beast subttype=Beast
power=3 power=3
@@ -6318,8 +6318,7 @@ toughness=2
name=Blood Curdle name=Blood Curdle
target=creature target=creature
auto=destroy auto=destroy
auto=counter(0/0,1,Menace) auto=name(Put menace counter) target(creature|myBattlefield) transforms((,newability[counter(0/0.1.Menace)],newability[this(counter{0/0.1.Menace}>=1) menace])) forever
auto=transforms((,newability[this(counter{0/0.1.Menace}>=1) menace]))
text=Destroy target creature. Put a menace counter on a creature you control. (It can't be blocked except by two or more creatures.) text=Destroy target creature. Put a menace counter on a creature you control. (It can't be blocked except by two or more creatures.)
mana={3}{B} mana={3}{B}
type=Instant type=Instant
@@ -7218,8 +7217,8 @@ type=Sorcery
name=Boot Nipper name=Boot Nipper
auto=this(counter{0/0.1.Deathtouch}>=1) deathtouch auto=this(counter{0/0.1.Deathtouch}>=1) deathtouch
auto=this(counter{0/0.1.Lifelink}>=1) lifelink auto=this(counter{0/0.1.Lifelink}>=1) lifelink
auto=choice name(Deathtouch) counter(0/0,1,Deathtouch) auto=choice name(Deathtouch counter) counter(0/0,1,Deathtouch)
auto=choice name(Lifelink) counter(0/0,1,Lifelink) auto=choice name(Lifelink counter) counter(0/0,1,Lifelink)
text=Boot Nipper enters the battlefield with your choice of a deathtouch counter or a lifelink counter on it. text=Boot Nipper enters the battlefield with your choice of a deathtouch counter or a lifelink counter on it.
mana={1}{B} mana={1}{B}
type=Creature type=Creature
@@ -8439,9 +8438,7 @@ toughness=3
[card] [card]
name=Call of the Death-Dweller name=Call of the Death-Dweller
target=<upto:2>creature[manacost<=3]|myGraveyard target=<upto:2>creature[manacost<=3]|myGraveyard
auto=moveTo(myBattlefield) auto=moveTo(myBattlefield) and!( transforms((,newability[counter(0/0.1.Deathtouch)],newability[this(counter{0/0.1.Deathtouch}>=1) deathtouch],newability[counter(0/0.1.Menace)],newability[this(counter{0/0.1.Menace}>=1) menace])) forever )!
auto=counter(0/0,1,Menace) <upto:2>target(creature[manacost<=3]
auto=transforms((,newability[this(counter{0/0.1.Menace}>=1) menace <upto:2>target(creature[manacost<=3])]))
text=Return up to two target creature cards with total converted mana cost 3 or less from your graveyard to the battlefield. Put a deathtouch counter on either of them. Then put a menace counter on either of them. text=Return up to two target creature cards with total converted mana cost 3 or less from your graveyard to the battlefield. Put a deathtouch counter on either of them. Then put a menace counter on either of them.
mana={2}{B} mana={2}{B}
type=Sorcery type=Sorcery
@@ -13119,7 +13116,7 @@ subtype=Equipment
[card] [card]
name=Crystalline Giant name=Crystalline Giant
auto=this(counter{0/0.1.Flying}>=1) flying auto=this(counter{0/0.1.Flying}>=1) flying
auto=this(counter{0/0.1.First Strike}>=1) first strike auto=this(counter{0/0.1.FirstStrike}>=1) first strike
auto=this(counter{0/0.1.Deathtouch}>=1) deathtouch auto=this(counter{0/0.1.Deathtouch}>=1) deathtouch
auto=this(counter{0/0.1.Hexproof}>=1) opponentshroud auto=this(counter{0/0.1.Hexproof}>=1) opponentshroud
auto=this(counter{0/0.1.Lifelink}>=1) lifelink auto=this(counter{0/0.1.Lifelink}>=1) lifelink
@@ -14033,10 +14030,20 @@ power=3
toughness=2 toughness=2
[/card] [/card]
[card] [card]
name=Daxos Spirit Token
anyzone=pexperience/pexperience cdaactive
text=This creatures power and toughness are each equal to the number of experience counters you have.
type=Enchantment Creature
subtype=Spirit
color=black,white
power=*
toughness=*
[/card]
[card]
name=Daxos the Returned name=Daxos the Returned
auto=@movedTo(enchantment|mystack):alterexperience:1 controller auto=@movedTo(enchantment|mystack):alterexperience:1 controller
auto={1}{W}{B}: token(Spirit,Creature Enchantment Spirit,[anyzone:type:alterexperience:mybattlefield/type:alterexperience:mybattlefield cdaactive],withe,black) auto={1}{W}{B}:name(Create Spirit) token(Daxos Spirit Token)
text=Whenever you cast an enchantment spell, you get an experience counter. -- {1}{W}{B}: Create a white and black Spirit enchantment creature token. It has This creatures power and toughness are each equal to the number of experience counters you have. text=Whenever you cast an enchantment spell, you get an experience counter. -- {1}{W}{B}: Create a white and black Spirit enchantment creature token. It has "This creatures power and toughness are each equal to the number of experience counters you have."
mana={1}{W}{B} mana={1}{W}{B}
type=Legendary Creature type=Legendary Creature
subtype=Zombie Soldier subtype=Zombie Soldier
@@ -16239,8 +16246,7 @@ type=Enchantment
[/card] [/card]
[card] [card]
name=Domesticated Hydra name=Domesticated Hydra
auto=this(cantargetcard(*[-monstrous]) {X}{G}{G}{G}:becomes(monstrous) forever && counter(1/1,X) auto=this(cantargetcard(*[-monstrous]) {X}{G}{G}{G}:becomes(monstrous) forever && counter(1/1,X) && transforms((,newability[trample])) forever
auto=aslongas(this[monstrous]|myBattlefield) trample
text={X}{G}{G}{G}: Monstrosity X. (If this creature isnt monstrous, put X +1/+1 counters on it and it becomes monstrous.) -- As long as Domesticated Hydra is monstrous, it has trample. text={X}{G}{G}{G}: Monstrosity X. (If this creature isnt monstrous, put X +1/+1 counters on it and it becomes monstrous.) -- As long as Domesticated Hydra is monstrous, it has trample.
mana={2}{G}{G} mana={2}{G}{G}
type=Creature type=Creature
@@ -17663,8 +17669,8 @@ toughness=1
[/card] [/card]
[card] [card]
name=Duskfang Mentor name=Duskfang Mentor
auto=target(creature[-human]|myBattlefield) transforms((,newability[counter(0/0,1,Lifelink)],newability[this(counter{0/0.1.Lifelink}>=1) lifelink])) auto=target(creature[-human]|myBattlefield) transforms((,newability[counter(0/0.1.Lifelink)],newability[this(counter{0/0.1.Lifelink}>=1) lifelink])) forever
auto={1}{W}{T}:counter(1/1,1) all(creature[lifelink]|myBattlefield) auto={1}{B}{T}:counter(1/1,1) all(creature[lifelink]|myBattlefield)
text=When Duskfang Mentor enters the battlefield, put a lifelink counter on target non-Human creature you control. -- {1}{B}, {T}: Put a +1/+1 counter on each creature you control with lifelink. text=When Duskfang Mentor enters the battlefield, put a lifelink counter on target non-Human creature you control. -- {1}{B}, {T}: Put a +1/+1 counter on each creature you control with lifelink.
mana={2}{B} mana={2}{B}
type=Creature type=Creature
@@ -20358,7 +20364,7 @@ type=Sorcery
[card] [card]
name=Ezuri, Claw of Progress name=Ezuri, Claw of Progress
auto=@movedTo(creature[power<=2]|myBattlefield):alterexperience:1 controller auto=@movedTo(creature[power<=2]|myBattlefield):alterexperience:1 controller
auto=@each my combatbegins:foreach(anyzone:alterexperience) counter(1/1,1) target(other creature|myBattlefield) auto=@each my combatbegins:name(Put 1/1 counters) counter(1/1,pexperience) target(other creature|myBattlefield)
text=Whenever a creature with power 2 or less enters the battlefield under your control, you get an experience counter. -- At the beginning of combat on your turn, put X +1/+1 counters on another target creature you control, where X is the number of experience counters you have. text=Whenever a creature with power 2 or less enters the battlefield under your control, you get an experience counter. -- At the beginning of combat on your turn, put X +1/+1 counters on another target creature you control, where X is the number of experience counters you have.
mana={2}{G}{U} mana={2}{G}{U}
type=Legendary Creature type=Legendary Creature
@@ -22646,8 +22652,8 @@ subtype=Aura
name=Flycatcher Giraffid name=Flycatcher Giraffid
auto=this(counter{0/0.1.Vigilance}>=1) vigilance auto=this(counter{0/0.1.Vigilance}>=1) vigilance
auto=this(counter{0/0.1.Reach}>=1) reach auto=this(counter{0/0.1.Reach}>=1) reach
auto=choice name(Flying) counter(0/0,1,Vigilance) auto=choice name(Vigilance counter) counter(0/0,1,Vigilance)
auto=choice name(First Strike) counter(0/0,1,Reach) auto=choice name(Reach counter) counter(0/0,1,Reach)
text=Flycatcher Giraffid enters the battlefield with your choice of a vigilance counter or a reach counter on it. text=Flycatcher Giraffid enters the battlefield with your choice of a vigilance counter or a reach counter on it.
mana={4}{G} mana={4}{G}
type=Creature type=Creature
@@ -23275,8 +23281,8 @@ toughness=6
[/card] [/card]
[card] [card]
name=Frillscare Mentor name=Frillscare Mentor
auto=target(creature[-human]|myBattlefield) transforms((,newability[counter(0/0,1,Menace)],newability[this(counter{0/0.1.Menace}>=1) menace])) auto=target(creature[-human]|myBattlefield) transforms((,newability[counter(0/0.1.Menace)],newability[this(counter{0/0.1.Menace}>=1) menace])) forever
auto={1}{W}{T}:counter(1/1,1) all(creature[Menace]|myBattlefield) auto={2}{R}{T}:counter(1/1,1) all(creature[Menace]|myBattlefield)
text=When Frillscare Mentor enters the battlefield, put a menace counter on target non-Human creature you control. (It can't be blocked except by two or more creatures.) -- {2}{R}, {T}: Put a +1/+1 counter on each creature you control with menace. text=When Frillscare Mentor enters the battlefield, put a menace counter on target non-Human creature you control. (It can't be blocked except by two or more creatures.) -- {2}{R}, {T}: Put a +1/+1 counter on each creature you control with menace.
mana={2}{R} mana={2}{R}
type=Creature type=Creature
@@ -23491,8 +23497,7 @@ type=Sorcery
name=Fully Grown name=Fully Grown
target=creature target=creature
auto=3/3 ueot auto=3/3 ueot
auto=counter(0/0,1,Trample) auto=transforms((,newability[counter(0/0.1.Trample)],newability[this(counter{0/0.1.Trample}>=1) trample])) forever
auto=transforms((,newability[this(counter{0/0.1.Trample}>=1) trample]))
text=Target creature gets +3/+3 until end of turn. Put a trample counter on it. text=Target creature gets +3/+3 until end of turn. Put a trample counter on it.
mana={2}{G} mana={2}{G}
type=Instant type=Instant
@@ -27075,9 +27080,9 @@ name=Grimdancer
auto=this(counter{0/0.1.Deathtouch}>=1) deathtouch auto=this(counter{0/0.1.Deathtouch}>=1) deathtouch
auto=this(counter{0/0.1.Lifelink}>=1) lifelink auto=this(counter{0/0.1.Lifelink}>=1) lifelink
auto=this(counter{0/0.1.Menace}>=1) menace auto=this(counter{0/0.1.Menace}>=1) menace
auto=choice name(Menace & Deathtouch) counter(0/0,1,Menace) && counter(0/0,1,Deathtouch) auto=choice name(Menace and Deathtouch counters) counter(0/0,1,Menace) && counter(0/0,1,Deathtouch)
auto=choice name(Menace & Lifelink) counter(0/0,1,Deathtouch) && counter(0/0,1,Lifelink) auto=choice name(Menace and Lifelink counters) counter(0/0,1,Deathtouch) && counter(0/0,1,Lifelink)
auto=choice name(Lifelink & Deathtouch) counter(0/0,1,Lifelink) && counter(0/0,1,Deathtouch) auto=choice name(Lifelink and Deathtouch counters) counter(0/0,1,Lifelink) && counter(0/0,1,Deathtouch)
text=Grimdancer enters the battlefield with your choice of two different counters on it from among menace, deathtouch, and lifelink. text=Grimdancer enters the battlefield with your choice of two different counters on it from among menace, deathtouch, and lifelink.
mana={1}{B}{B} mana={1}{B}{B}
type=Creature type=Creature
@@ -28692,8 +28697,7 @@ toughness=2
name=Heightened Reflexes name=Heightened Reflexes
target=creature target=creature
auto=1/0 ueot auto=1/0 ueot
auto=counter(0/0,1,First Strike) auto=transforms((,newability[counter(0/0.1.FirstStrike)],newability[this(counter{0/0.1.FirstStrike}>=1) first strike])) forever
auto=transforms((,newability[this(counter{0/0.1.First Strike}>=1) first strike]))
text=Target creature gets +1/+0 until end of turn. Put a first strike counter on it. text=Target creature gets +1/+0 until end of turn. Put a first strike counter on it.
mana={R} mana={R}
type=Instant type=Instant
@@ -28721,9 +28725,9 @@ toughness=3
[card] [card]
name=Helica Glider name=Helica Glider
auto=this(counter{0/0.1.Flying}>=1) flying auto=this(counter{0/0.1.Flying}>=1) flying
auto=this(counter{0/0.1.First Strike}>=1) first strike auto=this(counter{0/0.1.FirstStrike}>=1) first strike
auto=choice name(Flying) counter(0/0,1,Flying) auto=choice name(Flying) counter(0/0,1,Flying)
auto=choice name(First Strike) counter(0/0,1,First Strike) auto=choice name(First Strike) counter(0/0,1,FirstStrike)
text=Helica Glider enters the battlefield with your choice of a flying counter or a first strike counter on it. text=Helica Glider enters the battlefield with your choice of a flying counter or a first strike counter on it.
mana={2}{W} mana={2}{W}
type=Creature type=Creature
@@ -29619,6 +29623,7 @@ auto=mypoolsave(green)
auto=mypoolsave(blue) auto=mypoolsave(blue)
auto=mypoolsave(artifact) auto=mypoolsave(artifact)
auto=mypoolsave(land) auto=mypoolsave(land)
auto=@movedto(this|nonbattlezone) from(battlefield):name(Terminate effect) name(Terminate effect) transforms((,newability[mypoolsave(red) terminate],newability[mypoolsave(green) terminate],newability[mypoolsave(blue) terminate],newability[mypoolsave(black) terminate],newability[mypoolsave(white) terminate],newability[mypoolsave(artifact) terminate],newability[mypoolsave(land) terminate])) oneshot
auto=@each untap restriction{compare(mybluepoolcount)~morethan~0}:thisforeach(variable{mybluepoolcount}) add{C} && removemana({U}) auto=@each untap restriction{compare(mybluepoolcount)~morethan~0}:thisforeach(variable{mybluepoolcount}) add{C} && removemana({U})
auto=@each untap restriction{compare(mygreenpoolcount)~morethan~0}:thisforeach(variable{mygreenpoolcount}) add{C} && removemana({G}) auto=@each untap restriction{compare(mygreenpoolcount)~morethan~0}:thisforeach(variable{mygreenpoolcount}) add{C} && removemana({G})
auto=@each untap restriction{compare(myredpoolcount)~morethan~0}:thisforeach(variable{myredpoolcount})add{C} && removemana({R}) auto=@each untap restriction{compare(myredpoolcount)~morethan~0}:thisforeach(variable{myredpoolcount})add{C} && removemana({R})
@@ -29678,8 +29683,8 @@ type=Artifact
[/card] [/card]
[card] [card]
name=Hornbash Mentor name=Hornbash Mentor
auto=target(creature[-human]|myBattlefield) transforms((,newability[counter(0/0,1,Trample)],newability[this(counter{0/0.1.Trample}>=1) trample])) auto=name(Put trample counter) target(creature[-human]|myBattlefield) transforms((,newability[counter(0/0.1.Trample)],newability[this(counter{0/0.1.Trample}>=1) trample])) forever
auto={1}{W}{T}:counter(1/1,1) all(creature[trample]|myBattlefield) auto={2}{G}{T}:counter(1/1) all(creature[trample]|myBattlefield)
text=When Hornbash Mentor enters the battlefield, put a trample counter on target non-Human creature you control. -- {2}{G}, {T}: Put a +1/+1 counter on each creature you control with trample. text=When Hornbash Mentor enters the battlefield, put a trample counter on target non-Human creature you control. -- {2}{G}, {T}: Put a +1/+1 counter on each creature you control with trample.
mana={2}{G} mana={2}{G}
type=Creature type=Creature
@@ -30114,7 +30119,7 @@ type=Sorcery
[card] [card]
name=Hunted Nightmare name=Hunted Nightmare
abilities=menace abilities=menace
auto=notatarget(creature[-human]) transforms((,newability[counter(0/0,1,Deathtouch)],newability[this(counter{0/0.1.Deathtouch}>=1) deathtouch])) opponent auto=ability$!name(Put Deathtouch counter) name(Put Deathtouch counter) target(creature|myBattlefield) transforms((,newability[counter(0/0.1.Deathtouch)],newability[this(counter{0/0.1.Deathtouch}>=1) deathtouch])) forever!$ opponent
text=Menace -- When Hunted Nightmare enters the battlefield, target opponent puts a deathtouch counter on a creature they control. text=Menace -- When Hunted Nightmare enters the battlefield, target opponent puts a deathtouch counter on a creature they control.
mana={1}{B}{B} mana={1}{B}{B}
type=Creature type=Creature
@@ -33399,9 +33404,9 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Kalemne, Disciple of Iroas name=Kalemne, Disciple of Iroas
abilities=double strike, vigilance abilities=double strike,vigilance
auto=@movedto(creature[manacost>=5]|mystack):alterexperience:1 controller auto=@movedto(creature[manacost>=5]|mystack):alterexperience:1 controller
auto=foreach(anyzone:alterexperience) 1/1 auto=lord(this) pexperience/pexperience nonstatic
text=Double strike, vigilance -- Whenever you cast a creature spell with converted mana cost 5 or greater, you get an experience counter. -- Kalemne, Disciple of Iroas gets +1/+1 for each experience counter you have. text=Double strike, vigilance -- Whenever you cast a creature spell with converted mana cost 5 or greater, you get an experience counter. -- Kalemne, Disciple of Iroas gets +1/+1 for each experience counter you have.
mana={2}{R}{W} mana={2}{R}{W}
type=Legendary Creature type=Legendary Creature
@@ -33979,9 +33984,9 @@ toughness=3
[/card] [/card]
[card] [card]
name=Kelsien, the Plague name=Kelsien, the Plague
abilities=Vigilance,haste abilities=vigilance,haste
anyzone=type:alterexperience:nonbattlezone/type:alterexperience:nonbattlezone cdaactive auto=lord(this) pexperience/pexperience nonstatic
auto={T}:damage:1 target(creature|opponentBattlefield) transforms((,newability[_DIES_alterexperience:1 controller auto={T}:name(Damage creature) target(creature|opponentbattlefield) transforms((,newability[_DIES_alterexperience:1 opponent],newability[damage:1])) ueot
text=Vigilance, haste -- Kelsien, the Plague gets +1/+1 for each experience counter you have. -- {T}: Kelsien deals 1 damage to target creature you dont control. When that creature dies this turn, you get an experience counter. text=Vigilance, haste -- Kelsien, the Plague gets +1/+1 for each experience counter you have. -- {T}: Kelsien deals 1 damage to target creature you dont control. When that creature dies this turn, you get an experience counter.
mana={R}{W}{B} mana={R}{W}{B}
type=Legendary Creature type=Legendary Creature
@@ -34326,7 +34331,7 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Kindred Summons name=Kindred Summons
auto=activatechooseatype all(creature[chosentype]|mybattlefield) transforms((,newability[target(creature[share!types!]|mylibrary) moveto(mybattlefield) and! shuffle )!])) oneshot activatechooseend auto=activatechooseatype transforms((,newability[reveal:plibrarycount optionone name(Get creatures) target(<type:creature[chosentype]:myBattlefield>creature[chosentype]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) all(*|reveal) moveto(mylibrary) and!( shuffle )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!( moveTo(myBattlefield) )! afterrevealedend revealend])) oneshot activatechooseend
text=Choose a creature type. Reveal cards from the top of your library until you reveal X creature cards of the chosen type, where X is the number of creatures you control of that type. Put those cards onto the battlefield, then shuffle the rest of the revealed cards into your library. text=Choose a creature type. Reveal cards from the top of your library until you reveal X creature cards of the chosen type, where X is the number of creatures you control of that type. Put those cards onto the battlefield, then shuffle the rest of the revealed cards into your library.
mana={5}{G}{G} mana={5}{G}{G}
type=Instant type=Instant
@@ -35212,6 +35217,7 @@ auto=mypoolsave(green)
auto=mypoolsave(blue) auto=mypoolsave(blue)
auto=mypoolsave(artifact) auto=mypoolsave(artifact)
auto=mypoolsave(land) auto=mypoolsave(land)
auto=@movedto(this|nonbattlezone) from(battlefield):name(Terminate effect) name(Terminate effect) transforms((,newability[mypoolsave(red) terminate],newability[mypoolsave(green) terminate],newability[mypoolsave(blue) terminate],newability[mypoolsave(black) terminate],newability[mypoolsave(white) terminate],newability[mypoolsave(artifact) terminate],newability[mypoolsave(land) terminate])) oneshot
auto=@each untap restriction{compare(mybluepoolcount)~morethan~0}:thisforeach(variable{mybluepoolcount}) add{C} && removemana({U}) auto=@each untap restriction{compare(mybluepoolcount)~morethan~0}:thisforeach(variable{mybluepoolcount}) add{C} && removemana({U})
auto=@each untap restriction{compare(mygreenpoolcount)~morethan~0}:thisforeach(variable{mygreenpoolcount}) add{C} && removemana({G}) auto=@each untap restriction{compare(mygreenpoolcount)~morethan~0}:thisforeach(variable{mygreenpoolcount}) add{C} && removemana({G})
auto=@each untap restriction{compare(myredpoolcount)~morethan~0}:thisforeach(variable{myredpoolcount})add{C} && removemana({R}) auto=@each untap restriction{compare(myredpoolcount)~morethan~0}:thisforeach(variable{myredpoolcount})add{C} && removemana({R})
@@ -36274,6 +36280,7 @@ toughness=3
name=Leyline Tyrant name=Leyline Tyrant
abilities=flying abilities=flying
auto=mypoolsave(red) auto=mypoolsave(red)
auto=@movedto(this|nonbattlezone) from(battlefield):name(Terminate effect) name(Terminate effect) transforms((,newability[mypoolsave(red) terminate])) oneshot
auto=_DIES_:choice name(Pay X red mana) name(Pay X red mana) ability$!name(Damage X) pay[[{X:red}]] name(Damage any target) target(player,creature,planeswalker) damage:X!$ controller auto=_DIES_:choice name(Pay X red mana) name(Pay X red mana) ability$!name(Damage X) pay[[{X:red}]] name(Damage any target) target(player,creature,planeswalker) damage:X!$ controller
text=Flying -- You don't lose unspent red mana as steps and phases end. -- When Leyline Tyrant dies, you may pay any amount of {R}. When you do, it deals that much damage to any target. text=Flying -- You don't lose unspent red mana as steps and phases end. -- When Leyline Tyrant dies, you may pay any amount of {R}. When you do, it deals that much damage to any target.
mana={2}{R}{R} mana={2}{R}{R}
@@ -37679,7 +37686,7 @@ subtype=Aura
[card] [card]
name=Luminous Broodmoth name=Luminous Broodmoth
abilities=flying abilities=flying
auto=@movedto(creature[-flying]|myGraveyard) from(myBattlefield):all(trigger[to]) moveTo(myBattlefield) and!( transforms((,newability[counter(0/0.1.Flying],newability[this(counter{0/0.1.Flying}>=1) flying])) forever )! auto=@movedto(creature[-flying;-counter{0/0.1.Flying}]|myGraveyard) from(myBattlefield):all(trigger[to]) moveTo(myBattlefield) and!( transforms((,newability[counter(0/0.1.Flying)],newability[this(counter{0/0.1.Flying}>=1) flying])) forever )!
text=Flying -- Whenever a creature you control without flying dies, return it to the battlefield under its owner's control with a flying counter on it. text=Flying -- Whenever a creature you control without flying dies, return it to the battlefield under its owner's control with a flying counter on it.
mana={2}{W}{W} mana={2}{W}{W}
type=Creature type=Creature
@@ -39340,6 +39347,17 @@ type=Sorcery
subtype=Lesson subtype=Lesson
[/card] [/card]
[card] [card]
name=Meren of Clan Nel Toth
auto=@movedTo(other creature|graveyard) from(myBattlefield):alterexperience:1 controller
auto=@each my endofturn restriction{type(creature|mygraveyard)~morethan~0}:name(Choose a creature) target(creature|mygraveyard) transforms((,newability[if compare(manacost)~morethan~compare(pexperience) then moveto(myhand) else moveto(mybattlefield)])) oneshot
text=Whenever another creature you control dies, you get an experience counter. -- At the beginning of your end step, choose target creature card in your graveyard. If that card's converted mana cost is less than or equal to the number of experience counters you have, return it to the battlefield. Otherwise, put it into your hand.
mana={2}{B}{G}
type=Legendary Creature
subtype=Human Shaman
power=3
toughness=4
[/card]
[card]
name=Merfolk Branchwalker name=Merfolk Branchwalker
aicode=activate transforms((,newability[explores],newability[if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand)])) oneshot aicode=activate transforms((,newability[explores],newability[if type(land[zpos=1]|mylibrary)~lessthan~1 then all(this) counter(1/1) else all(land[zpos=1]|mylibrary) moveto(myhand)])) oneshot
auto=name(Explores) reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend afterrevealed explores afterrevealedend revealend auto=name(Explores) reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend afterrevealed explores afterrevealedend revealend
@@ -39967,8 +39985,8 @@ subtype=Aura
[card] [card]
name=Mirri, Weatherlight Duelist name=Mirri, Weatherlight Duelist
abilities=first strike abilities=first strike
auto=aslongas(this[tapped]) lord(creature[-attacking]|opponentbattlefield) cantattack auto=this(tapped) lord(creature[-attacking]|opponentbattlefield) cantattack
auto=aslongas(this[tapped]) lord(creature[-attacking]|opponentbattlefield) cantpwattack auto=this(tapped) lord(creature[-attacking]|opponentbattlefield) cantpwattack
auto=@combat(attacking) source(this):aslongas(creature[blocking]|opponentBattlefield) lord(creature[-blocking]|opponentbattlefield) cantblock auto=@combat(attacking) source(this):aslongas(creature[blocking]|opponentBattlefield) lord(creature[-blocking]|opponentbattlefield) cantblock
text=First strike -- Whenever Mirri, Weatherlight Duelist attacks, each opponent can't block with more than one creature this combat. -- As long as Mirri, Weatherlight Duelist is tapped, no more than one creature can attack you each combat. text=First strike -- Whenever Mirri, Weatherlight Duelist attacks, each opponent can't block with more than one creature this combat. -- As long as Mirri, Weatherlight Duelist is tapped, no more than one creature can attack you each combat.
mana={1}{G}{W} mana={1}{G}{W}
@@ -40395,9 +40413,9 @@ type=Instant
[/card] [/card]
[card] [card]
name=Momentum Rumbler name=Momentum Rumbler
auto=this(counter{0/0.1.First Strike}>=1) first strike auto=this(counter{0/0.1.FirstStrike}>=1) first strike
auto=@combat(attacking) source(this):this(counter{0/0.1.First Strike}<1) counter(0/0,1,First Strike) auto=@combat(attacking) source(this) restriction{compare(hascntfirststrike)~equalto~0)}:name(Put first strike counter) counter(0/0,1,FirstStrike)
auto=@combat(attacking) source(this):this(counter{0/0.1.First Strike}>0) double strike ueot auto=@combat(attacking) source(this):this(cantargetcard(*[first strike]|*) transforms((,newability[double strike])) ueot
text=Whenever Momentum Rumbler attacks, if it doesn't have first strike, put a first strike counter on it. -- Whenever Momentum Rumbler attacks, if it has first strike, it gains double strike until end of turn. text=Whenever Momentum Rumbler attacks, if it doesn't have first strike, put a first strike counter on it. -- Whenever Momentum Rumbler attacks, if it has first strike, it gains double strike until end of turn.
mana={3}{R} mana={3}{R}
type=Creature type=Creature
@@ -43507,6 +43525,7 @@ toughness=4
[card] [card]
name=Omnath, Locus of Mana name=Omnath, Locus of Mana
auto=mypoolsave(green) auto=mypoolsave(green)
auto=@movedto(this|nonbattlezone) from(battlefield):name(Terminate effect) name(Terminate effect) transforms((,newability[mypoolsave(green) terminate])) oneshot
anyzone=mygreenpoolcountplus1plusend/mygreenpoolcountplus1plusend cdaactive anyzone=mygreenpoolcountplus1plusend/mygreenpoolcountplus1plusend cdaactive
text=Green mana doesn't empty from your mana pool as steps and phases end. -- Omnath, Locus of Mana gets +1/+1 for each green mana in your mana pool. text=Green mana doesn't empty from your mana pool as steps and phases end. -- Omnath, Locus of Mana gets +1/+1 for each green mana in your mana pool.
mana={2}{G} mana={2}{G}
@@ -50047,8 +50066,9 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Return from Extinction name=Return from Extinction
auto=choice moveto(myhand) target(creature|mygraveyard) restriction=type(creature|mygraveyard)~morethan~0
auto=choice moveto(myhand) target(<2>creature[share!types!]|mygraveyard) auto=choice name(Return 1 creature) target(creature|mygraveyard) moveTo(myhand)
auto=if type(creature|mygraveyard)~morethan~1 then choice name(Return 2 creatures) name(Return 2 creatures) target(creature|mygraveyard) moveTo(myhand) and!( transforms((,newability[name(Choose another creature) target(other *[creature;share!types!]|mygraveyard) moveTo(myhand)])) oneshot )!
text=Choose one — -- • Return target creature card from your graveyard to your hand. -- • Return two target creature cards that share a creature type from your graveyard to your hand. text=Choose one — -- • Return target creature card from your graveyard to your hand. -- • Return two target creature cards that share a creature type from your graveyard to your hand.
mana={1}{B} mana={1}{B}
type=Sorcery type=Sorcery
@@ -52549,7 +52569,7 @@ toughness=1
name=Sanctuary Smasher name=Sanctuary Smasher
abilities=first strike,cycling abilities=first strike,cycling
autohand=__CYCLING__({2}{R}) autohand=__CYCLING__({2}{R})
autohand=@cycled(this|myHand):transforms((,newability[counter(0/0,1,First Strike],newability[this(counter{0/0.1.First Strike}>=1) first strike target(creature|myBattlefield)])) autohand=@cycled(this|myHand):name(Put a first strike counter) target(creature|myBattlefield) transforms((,newability[counter(0/0.1.FirstStrike],newability[this(counter{0/0.1.FirstStrike}>=1) first strike])) forever
text=First strike -- Cycling {2}{R} ({2}{R}, Discard this card: Draw a card.) -- When you cycle Sanctuary Smasher, put a first strike counter on target creature you control. text=First strike -- Cycling {2}{R} ({2}{R}, Discard this card: Draw a card.) -- When you cycle Sanctuary Smasher, put a first strike counter on target creature you control.
mana={4}{R}{R} mana={4}{R}{R}
type=Creature type=Creature
@@ -59398,7 +59418,7 @@ type=Instant
name=Splendor Mare name=Splendor Mare
abilities=lifelink,cycling abilities=lifelink,cycling
autohand=__CYCLING__({1}{W}) autohand=__CYCLING__({1}{W})
autohand=@cycled(this|myHand):transforms((,newability[counter(0/0,1,Lifelink],newability[this(counter{0/0.1.Lifelink}>=1) lifelink target(creature|myBattlefield)])) autohand=@cycled(this|myHand):name(Put lifelink counter) target(creature|myBattlefield) transforms((,newability[counter(0/0.1.Lifelink],newability[this(counter{0/0.1.Lifelink}>=1) lifelink])) forever
text=Lifelink -- Cycling {1}{W} ({1}{W}, Discard this card: Draw a card.) -- When you cycle Splendor Mare, put a lifelink counter on target creature you control. text=Lifelink -- Cycling {1}{W} ({1}{W}, Discard this card: Draw a card.) -- When you cycle Splendor Mare, put a lifelink counter on target creature you control.
mana={2}{W} mana={2}{W}
type=Creature type=Creature
@@ -59475,8 +59495,7 @@ type=Instant
name=Spontaneous Flight name=Spontaneous Flight
target=creature target=creature
auto=2/2 ueot auto=2/2 ueot
auto=counter(0/0,1,Flying) auto=transforms((,newability[counter(0/0.1.Flying)],newability[this(counter{0/0.1.Flying}>=1) flying])) forever
auto=transforms((,newability[this(counter{0/0.1.Flying}>=1) flying]))
text=Target creature gets +2/+2 until end of turn. Put a flying counter on it. text=Target creature gets +2/+2 until end of turn. Put a flying counter on it.
mana={2}{W} mana={2}{W}
type=Instant type=Instant
@@ -61156,8 +61175,8 @@ type=Instant
name=Sudden Spinnerets name=Sudden Spinnerets
target=creature target=creature
auto=1/3 ueot auto=1/3 ueot
auto=counter(0/0,1,Reach) auto=untap
auto=transforms((,newability[this(counter{0/0.1.Reach}>=1) reach],newability[untap(this)])) auto=transforms((,newability[counter(0/0.1.Reach)],newability[this(counter{0/0.1.Reach}>=1) reach])) forever
text=Target creature gets +1/+3 until end of turn. Put a reach counter on it. Untap it. text=Target creature gets +1/+3 until end of turn. Put a reach counter on it. Untap it.
mana={G} mana={G}
type=Instant type=Instant
@@ -62313,28 +62332,28 @@ toughness=4
[/card] [/card]
[card] [card]
name=Taj-Nar Swordsmith name=Taj-Nar Swordsmith
aicode=activate moveTo(mybattlefield) target(equipment|mylibrary) auto=choice name(Don't pay) donothing
auto=name(May pay X for equipment) may pay[[{0}]]:name(search equipment) Reveal:type:[Equipment<=0]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=0]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=0]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 0) transforms((,newability[name(Search equipment) target(equipment[manacost=0]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{1}]]:name(search equipment) Reveal:type:[Equipment<=1]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=1]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=1]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 1) transforms((,newability[pay[[{1}]] name(Pay and search equipment) target(equipment[manacost<=1]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{2}]]:name(search equipment) Reveal:type:[Equipment<=2]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=2]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=2]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 2) transforms((,newability[pay[[{2}]] name(Pay and search equipment) target(equipment[manacost<=2]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{3}]]:name(search equipment) Reveal:type:[Equipment<=3]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=3]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=3]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 3) transforms((,newability[pay[[{3}]] name(Pay and search equipment) target(equipment[manacost<=3]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{4}]]:name(search equipment) Reveal:type:[Equipment<=4]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=4]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=4]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 4) transforms((,newability[pay[[{4}]] name(Pay and search equipment) target(equipment[manacost<=4]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{5}]]:name(search equipment) Reveal:type:[Equipment<=5]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=5]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=5]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 5) transforms((,newability[pay[[{5}]] name(Pay and search equipment) target(equipment[manacost<=5]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{6}]]:name(search equipment) Reveal:type:[Equipment<=6]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=6]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=6]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 6) transforms((,newability[pay[[{6}]] name(Pay and search equipment) target(equipment[manacost<=6]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{7}]]:name(search equipment) Reveal:type:[Equipment<=7]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=7]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=7]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 7) transforms((,newability[pay[[{7}]] name(Pay and search equipment) target(equipment[manacost<=7]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{8}]]:name(search equipment) Reveal:type:[Equipment<=8]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=8]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=8]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 8) transforms((,newability[pay[[{8}]] name(Pay and search equipment) target(equipment[manacost<=8]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{9}]]:name(search equipment) Reveal:type:[Equipment<=9]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=9]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=9]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 9) transforms((,newability[pay[[{9}]] name(Pay and search equipment) target(equipment[manacost<=9]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{10}]]:name(search equipment) Reveal:type:[Equipment<=10]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=10]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=10]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 10) transforms((,newability[pay[[{10}]] name(Pay and search equipment) target(equipment[manacost<=10]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{11}]]:name(search equipment) Reveal:type:[Equipment<=11]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=11]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=11]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 11) transforms((,newability[pay[[{11}]] name(Pay and search equipment) target(equipment[manacost<=11]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{12}]]:name(search equipment) Reveal:type:[Equipment<=12]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=12]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=12]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 12) transforms((,newability[pay[[{12}]] name(Pay and search equipment) target(equipment[manacost<=12]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{13}]]:name(search equipment) Reveal:type:[Equipment<=13]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=13]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=13]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 13) transforms((,newability[pay[[{13}]] name(Pay and search equipment) target(equipment[manacost<=13]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{14}]]:name(search equipment) Reveal:type:[Equipment<=14]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=14]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=14]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 14) transforms((,newability[pay[[{14}]] name(Pay and search equipment) target(equipment[manacost<=14]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{15}]]:name(search equipment) Reveal:type:[Equipment<=15]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=15]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=15]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 15) transforms((,newability[pay[[{15}]] name(Pay and search equipment) target(equipment[manacost<=15]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{16}]]:name(search equipment) Reveal:type:[Equipment<=16]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=16]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=16]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 16) transforms((,newability[pay[[{16}]] name(Pay and search equipment) target(equipment[manacost<=16]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{17}]]:name(search equipment) Reveal:type:[Equipment<=17]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=17]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=17]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 17) transforms((,newability[pay[[{17}]] name(Pay and search equipment) target(equipment[manacost<=17]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{18}]]:name(search equipment) Reveal:type:[Equipment<=18]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=18]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=18]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 18) transforms((,newability[pay[[{18}]] name(Pay and search equipment) target(equipment[manacost<=18]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{19}]]:name(search equipment) Reveal:type:[Equipment<=19]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=19]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=19]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 19) transforms((,newability[pay[[{19}]] name(Pay and search equipment) target(equipment[manacost<=19]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
auto=name(May pay X for equipment) may pay[[{20}]]:name(search equipment) Reveal:type:[Equipment<=20]:mylibrary revealzone(mylibrary) optionone name(choose an equipment) target(<1>[equipment<=20]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mybattlefield)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>[equipment<=20]|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend auto=choice name(X = 20) transforms((,newability[pay[[{20}]] name(Pay and search equipment) target(equipment[manacost<=20]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
text=When Taj-Nar Swordsmith enters the battlefield, you may pay {X}. If you do, search your library for an Equipment card with converted mana cost X or less and put that card onto the battlefield. Then shuffle your library. text=When Taj-Nar Swordsmith enters the battlefield, you may pay {X}. If you do, search your library for an Equipment card with converted mana cost X or less and put that card onto the battlefield. Then shuffle your library.
mana={3}{W} mana={3}{W}
type=Creature type=Creature
@@ -65151,7 +65170,7 @@ toughness=6
name=Titanoth Rex name=Titanoth Rex
abilities=trample,cycling abilities=trample,cycling
autohand=__CYCLING__({1}{G}) autohand=__CYCLING__({1}{G})
autohand=@cycled(this|myHand):transforms((,newability[counter(0/0,1,Trample],newability[this(counter{0/0.1.Trample}>=1) trample target(creature|myBattlefield)]))) autohand=@cycled(this|myHand):name(Put trample counter) target(creature|myBattlefield) transforms((,newability[counter(0/0.1.Trample],newability[this(counter{0/0.1.Trample}>=1) trample]))) forever
text=Trample -- Cycling {1}{G} ({1}{G}, Discard this card: Draw a card.) -- When you cycle Titanoth Rex, put a trample counter on target creature you control. text=Trample -- Cycling {1}{G} ({1}{G}, Discard this card: Draw a card.) -- When you cycle Titanoth Rex, put a trample counter on target creature you control.
mana={7}{G}{G} mana={7}{G}{G}
type=Creature type=Creature
@@ -66971,9 +66990,7 @@ type=Instant
[card] [card]
name=Unbreakable Bond name=Unbreakable Bond
target=creature|myGraveyard target=creature|myGraveyard
auto=moveTo(myBattlefield) auto=moveTo(myBattlefield) and!( transforms((,newability[counter(0/0.1.Lifelink)],newability[this(counter{0/0.1.Lifelink}>=1) lifelink])) forever )!
auto=counter(0/0,1,Lifelink)
auto=transforms((,newability[this(counter{0/0.1.Lifelink}>=1) lifelink]))
text=Return target creature card from your graveyard to the battlefield with a lifelink counter on it. text=Return target creature card from your graveyard to the battlefield with a lifelink counter on it.
mana={4}{B} mana={4}{B}
type=Sorcery type=Sorcery
@@ -67221,9 +67238,7 @@ toughness=4
[card] [card]
name=Unexpected Fangs name=Unexpected Fangs
target=creature target=creature
auto=counter(1/1,1) auto=transforms((,newability[counter(1/1)],newability[counter(0/0.1.Lifelink)],newability[this(counter{0/0.1.Lifelink}>=1) lifelink])) forever
auto=counter(0/0,1,Lifelink)
auto=transforms((,newability[this(counter{0/0.1.Lifelink}>=1) lifelink]))
text=Put a +1/+1 counter and a lifelink counter on target creature. text=Put a +1/+1 counter and a lifelink counter on target creature.
mana={1}{B} mana={1}{B}
type=Instant type=Instant
@@ -69378,7 +69393,7 @@ toughness=3
name=Void Beckoner name=Void Beckoner
abilities=deathtouch,cycling abilities=deathtouch,cycling
autohand=__CYCLING__({2}{B}) autohand=__CYCLING__({2}{B})
autohand=@cycled(this|myHand):transforms((,newability[counter(0/0,1,Deathtouch)],newability[this(counter{0/0.1.Deathtouch}>=1) deathtouch])) target(creature|myBattlefield)] autohand=@cycled(this|myHand):name(Put Deathtouch counter) target(creature|myBattlefield) transforms((,newability[counter(0/0.1.Deathtouch)],newability[this(counter{0/0.1.Deathtouch}>=1) deathtouch])) forever
text=Deathtouch -- Cycling {2}{B} ({2}{B}, Discard this card: Draw a card.) -- When you cycle Void Beckoner, put a deathtouch counter on target creature you control. text=Deathtouch -- Cycling {2}{B} ({2}{B}, Discard this card: Draw a card.) -- When you cycle Void Beckoner, put a deathtouch counter on target creature you control.
mana={6}{B}{B} mana={6}{B}{B}
type=Creature type=Creature
+58 -52
View File
@@ -299,7 +299,7 @@ autostack=if casted(this) then choice target(opponent) life:-3 && life:3 control
text=Emerge {6}{B} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Abundant Maw, target opponent loses 3 life and you gain 3 life. text=Emerge {6}{B} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Abundant Maw, target opponent loses 3 life and you gain 3 life.
mana={8} mana={8}
other={emerge}{6}{B} name(Emerge) other={emerge}{6}{B} name(Emerge)
otherrestriction=compare(ishumannt)~morethan~0,type(creature|myBattlefield)~morethan~0 otherrestriction=compare(ishuman)~morethan~0,type(creature|myBattlefield)~morethan~0
type=Creature type=Creature
subtype=Eldrazi Leech subtype=Eldrazi Leech
power=6 power=6
@@ -23958,7 +23958,7 @@ type=Instant
name=Crown of Ascension name=Crown of Ascension
target=creature target=creature
auto=flying auto=flying
auto={S}:transforms((,newability[all(creature[share!types!]) flying ueot])) ueot auto={S}:transforms((,newability[all(*[creature;share!types!]) flying ueot])) ueot
text=Enchant creature -- Enchanted creature has flying. -- Sacrifice Crown of Ascension: Enchanted creature and other creatures that share a creature type with it gain flying until end of turn. text=Enchant creature -- Enchanted creature has flying. -- Sacrifice Crown of Ascension: Enchanted creature and other creatures that share a creature type with it gain flying until end of turn.
mana={1}{U} mana={1}{U}
type=Enchantment type=Enchantment
@@ -23969,7 +23969,7 @@ name=Crown of Awe
target=creature target=creature
auto=protection from black auto=protection from black
auto=protection from red auto=protection from red
auto={S}:transforms((,newability[all(creature[share!types!]) protection from black ueot],newability[all(creature[share!types!]) protection from red ueot])) ueot auto={S}:transforms((,newability[all(*[creature;share!types!]) protection from black ueot],newability[all(*[creature;share!types!]) protection from red ueot])) ueot
text=Enchant creature -- Enchanted creature has protection from black and from red. -- Sacrifice Crown of Awe: Enchanted creature and other creatures that share a creature type with it gain protection from black and from red until end of turn. text=Enchant creature -- Enchanted creature has protection from black and from red. -- Sacrifice Crown of Awe: Enchanted creature and other creatures that share a creature type with it gain protection from black and from red until end of turn.
mana={1}{W} mana={1}{W}
type=Enchantment type=Enchantment
@@ -24006,7 +24006,7 @@ name=Crown of Fury
target=creature target=creature
auto=1/0 auto=1/0
auto=first strike auto=first strike
auto={S}:transforms((,newability[all(creature[share!types!]) first strike ueot],newability[all(creature[share!types!]) 1/0 ueot])) ueot auto={S}:transforms((,newability[all(*[creature;share!types!]) first strike ueot],newability[all(*[creature;share!types!]) 1/0 ueot])) ueot
text=Enchant creature -- Enchanted creature gets +1/+0 and has first strike. -- Sacrifice Crown of Fury: Enchanted creature and other creatures that share a creature type with it get +1/+0 and gain first strike until end of turn. text=Enchant creature -- Enchanted creature gets +1/+0 and has first strike. -- Sacrifice Crown of Fury: Enchanted creature and other creatures that share a creature type with it get +1/+0 and gain first strike until end of turn.
mana={1}{R} mana={1}{R}
type=Enchantment type=Enchantment
@@ -24016,7 +24016,7 @@ subtype=Aura
name=Crown of Suspicion name=Crown of Suspicion
target=creature target=creature
auto=2/-1 auto=2/-1
auto={S}:transforms((,newability[all(creature[share!types!]) 2/-1 ueot])) ueot auto={S}:transforms((,newability[all(*[creature;share!types!]) 2/-1 ueot])) ueot
text=Enchant creature -- Enchanted creature gets +2/-1. -- Sacrifice Crown of Suspicion: Enchanted creature and other creatures that share a creature type with it get +2/-1 until end of turn. text=Enchant creature -- Enchanted creature gets +2/-1. -- Sacrifice Crown of Suspicion: Enchanted creature and other creatures that share a creature type with it get +2/-1 until end of turn.
mana={1}{B} mana={1}{B}
type=Enchantment type=Enchantment
@@ -24026,7 +24026,7 @@ subtype=Aura
name=Crown of Vigor name=Crown of Vigor
target=creature target=creature
auto=1/1 auto=1/1
auto={S}:transforms((,newability[all(creature[share!types!]) 1/1 ueot])) ueot auto={S}:transforms((,newability[all(*[creature;share!types!]) 1/1 ueot])) ueot
text=Enchant creature -- Enchanted creature gets +1/+1. -- Sacrifice Crown of Vigor: Enchanted creature and other creatures that share a creature type with it get +1/+1 until end of turn. text=Enchant creature -- Enchanted creature gets +1/+1. -- Sacrifice Crown of Vigor: Enchanted creature and other creatures that share a creature type with it get +1/+1 until end of turn.
mana={1}{G} mana={1}{G}
type=Enchantment type=Enchantment
@@ -27459,7 +27459,7 @@ autostack=if casted(this) then all(creature|mybattlefield) transforms((,newabili
text=Emerge {6}{G}{G}{G} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Decimator of the Provinces, creatures you control get +2/+2 and gain trample until end of turn. -- Trample, haste text=Emerge {6}{G}{G}{G} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Decimator of the Provinces, creatures you control get +2/+2 and gain trample until end of turn. -- Trample, haste
mana={10} mana={10}
other={emerge}{6}{G}{G}{G} name(Emerge) other={emerge}{6}{G}{G}{G} name(Emerge)
otherrestriction=compare(ishumannt)~morethan~0,type(creature|myBattlefield)~morethan~0 otherrestriction=compare(ishuman)~morethan~0,type(creature|myBattlefield)~morethan~0
type=Creature type=Creature
subtype=Eldrazi Boar subtype=Eldrazi Boar
power=7 power=7
@@ -30188,7 +30188,7 @@ autostack=if casted(this) then ability$!name(Reveal) reveal:type:*:opponenthand
text=Emerge {5}{B}{B} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Distended Mindbender, target opponent reveals his or her hand. You choose from it a nonland card with converted mana cost 3 or less and a card with converted mana cost 4 or greater. That player discards those cards. text=Emerge {5}{B}{B} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Distended Mindbender, target opponent reveals his or her hand. You choose from it a nonland card with converted mana cost 3 or less and a card with converted mana cost 4 or greater. That player discards those cards.
mana={8} mana={8}
other={emerge}{5}{B}{B} name(Emerge) other={emerge}{5}{B}{B} name(Emerge)
otherrestriction=compare(ishumannt)~morethan~0,type(creature|myBattlefield)~morethan~0 otherrestriction=compare(ishuman)~morethan~0,type(creature|myBattlefield)~morethan~0
type=Creature type=Creature
subtype=Eldrazi Insect subtype=Eldrazi Insect
power=5 power=5
@@ -32499,7 +32499,7 @@ auto=opponentshroud ueot
text=Flash (You may cast this spell any time you could cast an instant.) -- Emerge {7}{U} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- Drownyard Behemoth has hexproof as long as it entered the battlefield this turn. text=Flash (You may cast this spell any time you could cast an instant.) -- Emerge {7}{U} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- Drownyard Behemoth has hexproof as long as it entered the battlefield this turn.
mana={9} mana={9}
other={emerge}{7}{U} name(Emerge) other={emerge}{7}{U} name(Emerge)
otherrestriction=compare(ishumannt)~morethan~0,type(creature|myBattlefield)~morethan~0 otherrestriction=compare(ishuman)~morethan~0,type(creature|myBattlefield)~morethan~0
type=Creature type=Creature
subtype=Eldrazi Crab subtype=Eldrazi Crab
power=5 power=5
@@ -34185,7 +34185,7 @@ autostack=if casted(this) then target(<upto:4>*|battlefield) tap
text=Flash -- Emerge {5}{U}{U} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Elder Deep-Fiend, tap up to four target permanents. text=Flash -- Emerge {5}{U}{U} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Elder Deep-Fiend, tap up to four target permanents.
mana={8} mana={8}
other={emerge}{5}{U}{U} name(Emerge) other={emerge}{5}{U}{U} name(Emerge)
otherrestriction=compare(ishumannt)~morethan~0,type(creature|myBattlefield)~morethan~0 otherrestriction=compare(ishuman)~morethan~0,type(creature|myBattlefield)~morethan~0
type=Creature type=Creature
subtype=Eldrazi Octopus subtype=Eldrazi Octopus
power=5 power=5
@@ -46469,7 +46469,8 @@ toughness=2
[/card] [/card]
[card] [card]
name=Giltspire Avenger name=Giltspire Avenger
auto={t}:target(creature[controllerdamager]) destroy auto={T}:name(Destroy opponent creature) target(creature[opponentdamager]|opponentbattlefield) destroy
auto={T}:name(Destroy your creature) target(creature[controllerdamager]|mybattlefield) destroy
abilities=exalted abilities=exalted
text=Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.) -- {T}: Destroy target creature that dealt damage to you this turn. text=Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.) -- {T}: Destroy target creature that dealt damage to you this turn.
mana={G}{W}{U} mana={G}{W}{U}
@@ -49643,8 +49644,7 @@ type=Land
[/card] [/card]
[card] [card]
name=Gravepurge name=Gravepurge
target=<anyamount>creature|mygraveyard auto=may name(Return creature to library) target(<anyamount>creature|mygraveyard) moveTo(mylibrary)
auto=moveTo(mylibrary)
auto=draw:1 controller auto=draw:1 controller
text=Put any number of target creature cards from your graveyard on top of your library. -- Draw a card. text=Put any number of target creature cards from your graveyard on top of your library. -- Draw a card.
mana={2}{B} mana={2}{B}
@@ -58253,8 +58253,8 @@ toughness=1
[/card] [/card]
[card] [card]
name=Ink Dissolver name=Ink Dissolver
aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(creature[share!types!]|*) then deplete:3 opponent )!)! aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(*[creature;share!types!]|*) then deplete:3 opponent )!)!
auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(creature[share!types!]|reveal)~morethan~0 then deplete:3 opponent optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(*[creature;share!types!]|reveal)~morethan~0 then deplete:3 opponent optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend
text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Ink Dissolver, you may reveal it. If you do, each opponent puts the top three cards of his or her library into his or her graveyard. text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Ink Dissolver, you may reveal it. If you do, each opponent puts the top three cards of his or her library into his or her graveyard.
mana={1}{U} mana={1}{U}
type=Creature type=Creature
@@ -59396,7 +59396,7 @@ autostack=if casted(this) then token(Insect,creature insect, 1/1,green)*2
text=Emerge {6}{G} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast It of the Horrid Swarm, put two 1/1 green Insect creature tokens onto the battlefield. text=Emerge {6}{G} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast It of the Horrid Swarm, put two 1/1 green Insect creature tokens onto the battlefield.
mana={8} mana={8}
other={emerge}{6}{G} name(Emerge) other={emerge}{6}{G} name(Emerge)
otherrestriction=compare(ishumannt)~morethan~0,type(creature|myBattlefield)~morethan~0 otherrestriction=compare(ishuman)~morethan~0,type(creature|myBattlefield)~morethan~0
type=Creature type=Creature
subtype=Eldrazi Insect subtype=Eldrazi Insect
power=4 power=4
@@ -63239,7 +63239,7 @@ toughness=3
[/card] [/card]
[card] [card]
name=Kithkin Zephyrnaut name=Kithkin Zephyrnaut
auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(creature[share!types!]|reveal)~morethan~0 then +2/+2 ueot && flying ueot && vigilance ueot optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(*[creature;share!types!]|reveal)~morethan~0 then +2/+2 ueot && flying ueot && vigilance ueot optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend
text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Kithkin Zephyrnaut, you may reveal it. If you do, Kithkin Zephyrnaut gets +2/+2 and gains flying and vigilance until end of turn. text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Kithkin Zephyrnaut, you may reveal it. If you do, Kithkin Zephyrnaut gets +2/+2 and gains flying and vigilance until end of turn.
mana={2}{W} mana={2}{W}
type=Creature type=Creature
@@ -63891,7 +63891,7 @@ toughness=3
[card] [card]
name=Konda's Banner name=Konda's Banner
auto={2}:equip target(creature[legendary]|mybattlefield) auto={2}:equip target(creature[legendary]|mybattlefield)
auto=teach(creature) transforms((,newability[lord(creature[share!color!]) 1/1],newability[lord(creature[share!types!]) 1/1])) auto=teach(creature) transforms((,newability[lord(creature[share!color!]) 1/1],newability[lord(*[creature;share!types!]) 1/1]))
text=Konda's Banner can be attached only to a legendary creature. -- Creatures that share a color with equipped creature get +1/+1. -- Creatures that share a creature type with equipped creature get +1/+1. -- Equip {2} text=Konda's Banner can be attached only to a legendary creature. -- Creatures that share a color with equipped creature get +1/+1. -- Creatures that share a creature type with equipped creature get +1/+1. -- Equip {2}
mana={2} mana={2}
type=Legendary Artifact type=Legendary Artifact
@@ -65579,7 +65579,7 @@ autostack=if casted(this) then target(*[-land]|battlefield) moveto(ownerlibrary)
text=Emerge {5}{G}{U} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Lashweed Lurker, you may put target nonland permanent on top of its owner's library. text=Emerge {5}{G}{U} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Lashweed Lurker, you may put target nonland permanent on top of its owner's library.
mana={8} mana={8}
other={emerge}{5}{G}{U} name(Emerge) other={emerge}{5}{G}{U} name(Emerge)
otherrestriction=compare(ishumannt)~morethan~0,type(creature|myBattlefield)~morethan~0 otherrestriction=compare(ishuman)~morethan~0,type(creature|myBattlefield)~morethan~0
type=Creature type=Creature
subtype=Eldrazi Horror subtype=Eldrazi Horror
power=5 power=5
@@ -66094,7 +66094,7 @@ toughness=2
[card] [card]
name=Leaf-Crowned Elder name=Leaf-Crowned Elder
aicode=activate target(creature[share!types!zpos=1]|mylibrary) castcard(normal) aicode=activate target(creature[share!types!zpos=1]|mylibrary) castcard(normal)
auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(creature[share!types!]|reveal)~morethan~0 then may castcard(restricted) target(*|reveal) optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(*[creature;share!types!]|reveal)~morethan~0 then may castcard(restricted) target(*|reveal) optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend
text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Leaf-Crowned Elder, you may reveal it. If you do, you may play that card without paying its mana cost. text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Leaf-Crowned Elder, you may reveal it. If you do, you may play that card without paying its mana cost.
mana={2}{G}{G} mana={2}{G}{G}
type=Creature type=Creature
@@ -75047,7 +75047,7 @@ toughness=4
[/card] [/card]
[card] [card]
name=Mistform Warchief name=Mistform Warchief
auto=lord(creature[share!types!]|mycastingzone) altercost(colorless,-1) chooseend auto=lord(*[creature;share!types!]|mycastingzone) altercost(colorless,-1) chooseend
auto={T}:activatechooseatype all(this) becomes(removecreaturesubtypes) && becomes(chosentype) ueot activatechooseend auto={T}:activatechooseatype all(this) becomes(removecreaturesubtypes) && becomes(chosentype) ueot activatechooseend
text=Creature spells you cast that share a creature type with Mistform Warchief cost {1} less to cast. -- {T}: Mistform Warchief becomes the creature type of your choice until end of turn. text=Creature spells you cast that share a creature type with Mistform Warchief cost {1} less to cast. -- {T}: Mistform Warchief becomes the creature type of your choice until end of turn.
mana={2}{U} mana={2}{U}
@@ -75290,7 +75290,7 @@ autostack=if casted(this) then may destroy target(artifact,enchantment)
text=Emerge {7}{G} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Mockery of Nature, you may destroy target artifact or enchantment. text=Emerge {7}{G} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Mockery of Nature, you may destroy target artifact or enchantment.
mana={9} mana={9}
other={emerge}{7}{G} name(Emerge) other={emerge}{7}{G} name(Emerge)
otherrestriction=compare(ishumannt)~morethan~0,type(creature|myBattlefield)~morethan~0 otherrestriction=compare(ishuman)~morethan~0,type(creature|myBattlefield)~morethan~0
type=Creature type=Creature
subtype=Eldrazi Beast subtype=Eldrazi Beast
power=6 power=6
@@ -76922,8 +76922,8 @@ toughness=3
[/card] [/card]
[card] [card]
name=Mudbutton Clanger name=Mudbutton Clanger
aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(creature[share!types!]|*) then all(this) 1/1 ueot )!)! aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(*[creature;share!types!]|*) then all(this) 1/1 ueot )!)!
auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(creature[share!types!]|reveal)~morethan~0 then all(this) +1/+1 ueot optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(*[creature;share!types!]|reveal)~morethan~0 then all(this) +1/+1 ueot optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend
text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Mudbutton Clanger, you may reveal it. If you do, Mudbutton Clanger gets +1/+1 until end of turn. text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Mudbutton Clanger, you may reveal it. If you do, Mudbutton Clanger gets +1/+1 until end of turn.
mana={R} mana={R}
type=Creature type=Creature
@@ -79808,8 +79808,8 @@ toughness=1
[/card] [/card]
[card] [card]
name=Nightshade Schemers name=Nightshade Schemers
aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(creature[share!types!]|*) then life:-2 opponent )!)! aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(*[creature;share!types!]|*) then life:-2 opponent )!)!
auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(creature[share!types!]|reveal)~morethan~0 then life:-2 opponent optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(*[creature;share!types!]|reveal)~morethan~0 then life:-2 opponent optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend
text=Flying -- Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Nightshade Schemers, you may reveal it. If you do, each opponent loses 2 life. text=Flying -- Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Nightshade Schemers, you may reveal it. If you do, each opponent loses 2 life.
mana={4}{B} mana={4}{B}
type=Creature type=Creature
@@ -84648,7 +84648,7 @@ toughness=1
[card] [card]
name=Patron of the Akki name=Patron of the Akki
other={kgoblin} name(Goblin Offering) other={kgoblin} name(Goblin Offering)
otherrestriction=compare(ishumannt)~morethan~0,type(goblin|myBattlefield)~morethan~0 otherrestriction=compare(ishuman)~morethan~0,type(goblin|myBattlefield)~morethan~0
abilities=offering abilities=offering
auto=@combat(attacking) source(this):all(creature[attacking]) 2/0 ueot auto=@combat(attacking) source(this):all(creature[attacking]) 2/0 ueot
text=Goblin offering (You may cast this card any time you could cast an instant by sacrificing a Goblin and paying the difference in mana costs between this and the sacrificed Goblin. Mana cost includes color.) -- Whenever Patron of the Akki attacks, creatures you control get +2/+0 until end of turn. text=Goblin offering (You may cast this card any time you could cast an instant by sacrificing a Goblin and paying the difference in mana costs between this and the sacrificed Goblin. Mana cost includes color.) -- Whenever Patron of the Akki attacks, creatures you control get +2/+0 until end of turn.
@@ -84661,7 +84661,7 @@ toughness=5
[card] [card]
name=Patron of the Kitsune name=Patron of the Kitsune
other={kfox} name(Fox Offering) other={kfox} name(Fox Offering)
otherrestriction=compare(ishumannt)~morethan~0,type(fox|myBattlefield)~morethan~0 otherrestriction=compare(ishuman)~morethan~0,type(fox|myBattlefield)~morethan~0
abilities=offering abilities=offering
auto=@each blockers:may life:type:creature[attacking]:battlefield controller auto=@each blockers:may life:type:creature[attacking]:battlefield controller
text=Fox offering (You may cast this card any time you could cast an instant by sacrificing a Fox and paying the difference in mana costs between this and the sacrificed Fox. Mana cost includes color.) -- Whenever a creature attacks, you may gain 1 life. text=Fox offering (You may cast this card any time you could cast an instant by sacrificing a Fox and paying the difference in mana costs between this and the sacrificed Fox. Mana cost includes color.) -- Whenever a creature attacks, you may gain 1 life.
@@ -84674,7 +84674,7 @@ toughness=6
[card] [card]
name=Patron of the Moon name=Patron of the Moon
other={kmoonfolk} name(Moonfolk Offering) other={kmoonfolk} name(Moonfolk Offering)
otherrestriction=compare(ishumannt)~morethan~0,type(moonfolk|myBattlefield)~morethan~0 otherrestriction=compare(ishuman)~morethan~0,type(moonfolk|myBattlefield)~morethan~0
abilities=flying,offering abilities=flying,offering
auto={1}:name(put 2 lands in play) moveto(mybattlefield) and!(tap(noevent))! notatarget(<upto:2>land|myhand) auto={1}:name(put 2 lands in play) moveto(mybattlefield) and!(tap(noevent))! notatarget(<upto:2>land|myhand)
text=Moonfolk offering (You may cast this card any time you could cast an instant by sacrificing a Moonfolk and paying the difference in mana costs between this and the sacrificed Moonfolk. Mana cost includes color.) -- Flying -- {1}: Put up to two land cards from your hand onto the battlefield tapped. text=Moonfolk offering (You may cast this card any time you could cast an instant by sacrificing a Moonfolk and paying the difference in mana costs between this and the sacrificed Moonfolk. Mana cost includes color.) -- Flying -- {1}: Put up to two land cards from your hand onto the battlefield tapped.
@@ -84687,7 +84687,7 @@ toughness=4
[card] [card]
name=Patron of the Nezumi name=Patron of the Nezumi
other={krat} name(Rat Offering) other={krat} name(Rat Offering)
otherrestriction=compare(ishumannt)~morethan~0,type(rat|myBattlefield)~morethan~0 otherrestriction=compare(ishuman)~morethan~0,type(rat|myBattlefield)~morethan~0
abilities=offering abilities=offering
auto=@movedto(*|opponentgraveyard) from(battlefield):life:-1 opponent auto=@movedto(*|opponentgraveyard) from(battlefield):life:-1 opponent
text=Rat offering (You may cast this card any time you could cast an instant by sacrificing a Rat and paying the difference in mana costs between this and the sacrificed Rat. Mana cost includes color.) -- Whenever a permanent is put into an opponent's graveyard, that player loses 1 life. text=Rat offering (You may cast this card any time you could cast an instant by sacrificing a Rat and paying the difference in mana costs between this and the sacrificed Rat. Mana cost includes color.) -- Whenever a permanent is put into an opponent's graveyard, that player loses 1 life.
@@ -84700,7 +84700,7 @@ toughness=6
[card] [card]
name=Patron of the Orochi name=Patron of the Orochi
other={ksnake} name(Snake Offering) other={ksnake} name(Snake Offering)
otherrestriction=compare(ishumannt)~morethan~0,type(snake|myBattlefield)~morethan~0 otherrestriction=compare(ishuman)~morethan~0,type(snake|myBattlefield)~morethan~0
abilities=offering abilities=offering
auto={T}:name(untap all green creatures and forests) untap all(forest) && untap all(creature[green]) limit:1 auto={T}:name(untap all green creatures and forests) untap all(forest) && untap all(creature[green]) limit:1
text=Snake offering (You may cast this card any time you could cast an instant by sacrificing a Snake and paying the difference in mana costs between this and the sacrificed Snake. Mana cost includes color.) -- {T}: Untap all Forests and all green creatures. Activate this ability only once each turn. text=Snake offering (You may cast this card any time you could cast an instant by sacrificing a Snake and paying the difference in mana costs between this and the sacrificed Snake. Mana cost includes color.) -- {T}: Untap all Forests and all green creatures. Activate this ability only once each turn.
@@ -90092,8 +90092,8 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Pyroclast Consul name=Pyroclast Consul
aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(creature[share!types!]|*) then damage:2 all(creature|battlefield) )!)! aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(*[creature;share!types!]|*) then damage:2 all(creature|battlefield) )!)!
auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(creature[share!types!]|reveal)~morethan~0 then all(creature|battlefield) damage:2 optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(*[creature;share!types!]|reveal)~morethan~0 then all(creature|battlefield) damage:2 optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend
text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Pyroclast Consul, you may reveal it. If you do, Pyroclast Consul deals 2 damage to each creature. text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Pyroclast Consul, you may reveal it. If you do, Pyroclast Consul deals 2 damage to each creature.
mana={3}{R}{R} mana={3}{R}{R}
type=Creature type=Creature
@@ -92863,8 +92863,9 @@ type=Enchantment
[/card] [/card]
[card] [card]
name=Reciprocate name=Reciprocate
target=creature[controllerdamager] restriction=type(creature[damager]|battlefield)~morethan~0
auto=moveto(exile) auto=if type(creature[opponentdamager]|opponentbattlefield)~morethan~0 then choice name(Exile opponent creature) name(Exile opponent creature) target(creature[opponentdamager]|opponentbattlefield) moveto(exile)
auto=if type(creature[controllerdamager]|mybattlefield)~morethan~0 then choice name(Exile your creature) name(Exile your creature) target(creature[controllerdamager]|mybattlefield) moveto(exile)
text=Exile target creature that dealt damage to you this turn. text=Exile target creature that dealt damage to you this turn.
mana={W} mana={W}
type=Instant type=Instant
@@ -94444,7 +94445,8 @@ type=Instant
[/card] [/card]
[card] [card]
name=Retaliate name=Retaliate
auto=all(creature[controllerdamager]) destroy auto=all(creature[opponentdamager]|opponentbattlefield) destroy
auto=all(creature[controllerdamager]|mybattlefield) destroy
text=Destroy all creatures that dealt damage to you this turn. text=Destroy all creatures that dealt damage to you this turn.
mana={2}{W}{W} mana={2}{W}{W}
type=Instant type=Instant
@@ -102176,8 +102178,8 @@ toughness=4
[/card] [/card]
[card] [card]
name=Sensation Gorger name=Sensation Gorger
aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(creature[share!types!]|*) then reject all(*|hand) && draw:4 all(player) )!)! aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(*[creature;share!types!]|*) then reject all(*|hand) && draw:4 all(player) )!)!
auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(creature[share!types!]|reveal)~morethan~0 then all(player) discard:20 && draw:4 optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(*[creature;share!types!]|reveal)~morethan~0 then all(player) discard:20 && draw:4 optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend
text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Sensation Gorger, you may reveal it. If you do, each player discards his or her hand and draws four cards. text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Sensation Gorger, you may reveal it. If you do, each player discards his or her hand and draws four cards.
mana={1}{R}{R} mana={1}{R}{R}
type=Creature type=Creature
@@ -110255,7 +110257,8 @@ toughness=2
[card] [card]
name=Spear of Heliod name=Spear of Heliod
auto=lord(creature|mybattlefield) 1/1 auto=lord(creature|mybattlefield) 1/1
auto={1}{W}{W}{T}:target(creature[controllerdamager]|battlefield) destroy auto={1}{W}{W}{T}:name(Destroy opponent creature) target(creature[opponentdamager]|opponentbattlefield) destroy
auto={1}{W}{W}{T}:name(Destroy your creature) target(creature[controllerdamager]|mybattlefield) destroy
text=Creatures you control get +1/+1. -- {1}{W}{W}, {T}: Destroy target creature that dealt damage to you this turn. text=Creatures you control get +1/+1. -- {1}{W}{W}, {T}: Destroy target creature that dealt damage to you this turn.
mana={1}{W}{W} mana={1}{W}{W}
type=Legendary Enchantment Artifact type=Legendary Enchantment Artifact
@@ -112186,8 +112189,8 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Squeaking Pie Grubfellows name=Squeaking Pie Grubfellows
aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(creature[share!types!]|*) then ability$!name(discard) reject notatarget(*|myhand)!$ opponent )!)! aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(*[creature;share!types!]|*) then ability$!name(discard) reject notatarget(*|myhand)!$ opponent )!)!
auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(creature[share!types!]|reveal)~morethan~0 then discard:1 opponent optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(*[creature;share!types!]|reveal)~morethan~0 then discard:1 opponent optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend
text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Squeaking Pie Grubfellows, you may reveal it. If you do, each opponent discards a card. text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Squeaking Pie Grubfellows, you may reveal it. If you do, each opponent discards a card.
mana={3}{B} mana={3}{B}
type=Creature type=Creature
@@ -113731,7 +113734,7 @@ toughness=2
[card] [card]
name=Stoneforge Masterwork name=Stoneforge Masterwork
auto={2}:equip auto={2}:equip
auto=teach(creature) transforms((,newability[foreach(other creature[share!types!]|mybattlefield) 1/1])) auto=teach(creature) transforms((,newability[foreach(other *[creature;share!types!]|mybattlefield) 1/1]))
text=Equipped creature gets +1/+1 for each other creature you control that shares a creature type with it. -- Equip {2} text=Equipped creature gets +1/+1 for each other creature you control that shares a creature type with it. -- Equip {2}
mana={1} mana={1}
type=Artifact type=Artifact
@@ -126414,13 +126417,16 @@ auto=mypoolsave(blue)
auto=mypoolsave(black) auto=mypoolsave(black)
auto=mypoolsave(white) auto=mypoolsave(white)
auto=mypoolsave(green) auto=mypoolsave(green)
auto=mypoolsave(colorless) auto=mypoolsave(artifact)
auto=mypoolsave(land)
auto=opponentpoolsave(red) auto=opponentpoolsave(red)
auto=opponentpoolsave(green) auto=opponentpoolsave(green)
auto=opponentpoolsave(blue) auto=opponentpoolsave(blue)
auto=opponentpoolsave(black) auto=opponentpoolsave(black)
auto=opponentpoolsave(white) auto=opponentpoolsave(white)
auto=opponentpoolsave(colorless) auto=opponentpoolsave(artifact)
auto=opponentpoolsave(land)
auto=@movedto(this|nonbattlezone) from(battlefield):name(Terminate effect) name(Terminate effect) transforms((,newability[mypoolsave(red) terminate],newability[mypoolsave(green) terminate],newability[mypoolsave(blue) terminate],newability[mypoolsave(black) terminate],newability[mypoolsave(white) terminate],newability[mypoolsave(artifact) terminate],newability[mypoolsave(land) terminate],newability[opponentpoolsave(red) terminate],newability[opponentpoolsave(green) terminate],newability[opponentpoolsave(blue) terminate],newability[opponentpoolsave(black) terminate],newability[opponentpoolsave(white) terminate],newability[opponentpoolsave(artifact) terminate],newability[opponentpoolsave(land) terminate])) oneshot
text=Mana pools don't empty as steps and phases end. text=Mana pools don't empty as steps and phases end.
mana={3}{G} mana={3}{G}
type=Enchantment type=Enchantment
@@ -128431,7 +128437,7 @@ autostack=if casted(this) then may moveTo(myhand) target(instant,sorcery|mygrave
text=Emerge {6}{U} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Vexing Scuttler, you may return target instant or sorcery card from your graveyard to your hand. text=Emerge {6}{U} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Vexing Scuttler, you may return target instant or sorcery card from your graveyard to your hand.
mana={8} mana={8}
other={emerge}{6}{U} name(Emerge) other={emerge}{6}{U} name(Emerge)
otherrestriction=compare(ishumannt)~morethan~0,type(creature|myBattlefield)~morethan~0 otherrestriction=compare(ishuman)~morethan~0,type(creature|myBattlefield)~morethan~0
type=Creature type=Creature
subtype=Eldrazi Crab subtype=Eldrazi Crab
power=4 power=4
@@ -131561,8 +131567,8 @@ toughness=3
[/card] [/card]
[card] [card]
name=Wandering Graybeard name=Wandering Graybeard
aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(creature[share!types!]|*) then life:4 controller)!)! aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(*[creature;share!types!]|*) then life:4 controller)!)!
auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(creature[share!types!]|reveal)~morethan~0 then life:4 controller optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(*[creature;share!types!]|reveal)~morethan~0 then life:4 controller optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend
text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Wandering Graybeard, you may reveal it. If you do, you gain 4 life. text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Wandering Graybeard, you may reveal it. If you do, you gain 4 life.
mana={3}{W}{W} mana={3}{W}{W}
type=Creature type=Creature
@@ -132397,8 +132403,8 @@ toughness=4
[/card] [/card]
[card] [card]
name=Waterspout Weavers name=Waterspout Weavers
aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(creature[share!types!]|*) then all(creature|mybattlefield) flying ueot)!)! aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(*[creature;share!types!]|*) then all(creature|mybattlefield) flying ueot)!)!
auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(creature[share!types!]|reveal)~morethan~0 then all(creature|mybattlefield) flying ueot optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(*[creature;share!types!]|reveal)~morethan~0 then all(creature|mybattlefield) flying ueot optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend
text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Waterspout Weavers, you may reveal it. If you do, each creature you control gains flying until end of turn. text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Waterspout Weavers, you may reveal it. If you do, each creature you control gains flying until end of turn.
mana={3}{U}{U} mana={3}{U}{U}
type=Creature type=Creature
@@ -134591,8 +134597,8 @@ toughness=2
[/card] [/card]
[card] [card]
name=Winnower Patrol name=Winnower Patrol
aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(creature[share!types!]|*) then all(this) counter(1/1) )!)! aicode=activate target(*[zpos=1]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary) and!(if cantargetcard(*[creature;share!types!]|*) then all(this) counter(1/1) )!)!
auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(creature[share!types!]|reveal)~morethan~0 then all(this) counter(1/1,1) optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend auto=@each my upkeep:name(Kinship) reveal:1 optionone if type(*[creature;share!types!]|reveal)~morethan~0 then all(this) counter(1/1,1) optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend
text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Winnower Patrol, you may reveal it. If you do, put a +1/+1 counter on Winnower Patrol. text=Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Winnower Patrol, you may reveal it. If you do, put a +1/+1 counter on Winnower Patrol.
mana={2}{G} mana={2}{G}
type=Creature type=Creature
@@ -135954,7 +135960,7 @@ autostack=if casted(this) then draw:1
text=Emerge {5}{U} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Wretched Gryff, draw a card. -- Flying text=Emerge {5}{U} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.) -- When you cast Wretched Gryff, draw a card. -- Flying
mana={7} mana={7}
other={emerge}{5}{U} name(Emerge) other={emerge}{5}{U} name(Emerge)
otherrestriction=compare(ishumannt)~morethan~0,type(creature|myBattlefield)~morethan~0 otherrestriction=compare(ishuman)~morethan~0,type(creature|myBattlefield)~morethan~0
type=Creature type=Creature
subtype=Eldrazi Hippogriff subtype=Eldrazi Hippogriff
power=3 power=3
@@ -627,6 +627,7 @@ subtype=Daretti
name=Daretti, Scrap Savant name=Daretti, Scrap Savant
abilities=canbecommander abilities=canbecommander
auto=counter(0/0,3,loyalty) auto=counter(0/0,3,loyalty)
auto={C(0/0,2,Loyalty)}:name(+2: Don't discard) donothing
auto={C(0/0,2,Loyalty)}:name(+2: Discard and Draw) reject notatarget(<upto:2>*|myhand) and!( draw:1 controller )! auto={C(0/0,2,Loyalty)}:name(+2: Discard and Draw) reject notatarget(<upto:2>*|myhand) and!( draw:1 controller )!
auto={C(0/0,-2,Loyalty)}:name(-2: Sacrifice an Artifact) sacrifice notatarget(artifact|mybattlefield) and!( moveto(mybattlefield) target(artifact|mygraveyard) )! auto={C(0/0,-2,Loyalty)}:name(-2: Sacrifice an Artifact) sacrifice notatarget(artifact|mybattlefield) and!( moveto(mybattlefield) target(artifact|mygraveyard) )!
auto={C(0/0,-10,Loyalty)}:name(-10: Emblem: "Reanimate artifacts") emblem transforms((,newability[@movedTo(artifact|mygraveyard) from(battlefield):all(trigger[to]) phaseaction[endofturn once] moveTo(mybattlefield)])) forever dontremove auto={C(0/0,-10,Loyalty)}:name(-10: Emblem: "Reanimate artifacts") emblem transforms((,newability[@movedTo(artifact|mygraveyard) from(battlefield):all(trigger[to]) phaseaction[endofturn once] moveTo(mybattlefield)])) forever dontremove
@@ -2962,7 +2962,6 @@ name=Double Stroke
text=Hidden agenda (Start the game with this conspiracy face down in the command zone and secretly name a card. You may turn this conspiracy face up any time and reveal the chosen name.) -- Whenever you cast an instant or sorcery spell with the chosen name, you may copy it. You may choose new targets for the copy. text=Hidden agenda (Start the game with this conspiracy face down in the command zone and secretly name a card. You may turn this conspiracy face up any time and reveal the chosen name.) -- Whenever you cast an instant or sorcery spell with the chosen name, you may copy it. You may choose new targets for the copy.
type=Conspiracy type=Conspiracy
[/card] [/card]
[card] [card]
name=Doubling Chant name=Doubling Chant
text=For each creature you control, you may search your library for a creature card with the same name as that creature. Put those cards onto the battlefield, then shuffle your library. text=For each creature you control, you may search your library for a creature card with the same name as that creature. Put those cards onto the battlefield, then shuffle your library.
@@ -6939,15 +6938,6 @@ power=3
toughness=3 toughness=3
[/card] [/card]
[card] [card]
name=Meren of Clan Nel Toth
text=Whenever another creature you control dies, you get an experience counter. -- At the beginning of your end step, choose target creature card in your graveyard. If that card's converted mana cost is less than or equal to the number of experience counters you have, return it to the battlefield. Otherwise, put it into your hand.
mana={2}{B}{G}
type=Legendary Creature
subtype=Human Shaman
power=3
toughness=4
[/card]
[card]
name=Merieke Ri Berit name=Merieke Ri Berit
text=Merieke Ri Berit doesn't untap during your untap step. -- {T}: Gain control of target creature for as long as you control Merieke Ri Berit. When Merieke Ri Berit leaves the battlefield or becomes untapped, destroy that creature. It can't be regenerated. text=Merieke Ri Berit doesn't untap during your untap step. -- {T}: Gain control of target creature for as long as you control Merieke Ri Berit. When Merieke Ri Berit leaves the battlefield or becomes untapped, destroy that creature. It can't be regenerated.
mana={W}{U}{B} mana={W}{U}{B}
+43 -2
View File
@@ -499,7 +499,34 @@ public:
return NEW TrplayerEnergized(*this); return NEW TrplayerEnergized(*this);
} }
}; };
class TrplayerExperienced: public Trigger
{
public:
bool thiscontroller, thisopponent;
TrplayerExperienced(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc,bool once = false, bool thiscontroller = false, bool thisopponent = false) :
Trigger(observer, id, source,once, tc),thiscontroller(thiscontroller),thisopponent(thisopponent)
{
}
int triggerOnEventImpl(WEvent * event)
{
WEventplayerExperienced * e = dynamic_cast<WEventplayerExperienced *> (event);
if (!e) return 0;
if (!tc->canTarget(e->player)) return 0;
if(thiscontroller)
if(e->player != source->controller())
return 0;
if(thisopponent)
if(e->player == source->controller())
return 0;
return 1;
}
TrplayerExperienced * clone() const
{
return NEW TrplayerExperienced(*this);
}
};
class TrplayerMonarch: public Trigger class TrplayerMonarch: public Trigger
{ {
public: public:
@@ -4023,6 +4050,19 @@ public:
AAAlterEnergy * clone() const; AAAlterEnergy * clone() const;
~AAAlterEnergy(); ~AAAlterEnergy();
}; };
//Experience Counter
class AAAlterExperience: public ActivatedAbilityTP
{
public:
int experience;
AAAlterExperience(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int energy, ManaCost * _cost = NULL,
int who = TargetChooser::UNSET);
int resolve();
const string getMenuText();
AAAlterExperience * clone() const;
~AAAlterExperience();
};
//Boast Event //Boast Event
class AABoastEvent: public ActivatedAbilityTP class AABoastEvent: public ActivatedAbilityTP
{ {
@@ -5164,7 +5204,8 @@ class AManaPoolSaver: public MTGAbility
public: public:
string Color; string Color;
bool OtherPlayer; bool OtherPlayer;
AManaPoolSaver(GameObserver* observer, int id, MTGCardInstance * source,string Color = "",bool otherPlayer = false); bool RemovePool;
AManaPoolSaver(GameObserver* observer, int id, MTGCardInstance * source, string Color = "", bool otherPlayer = false, bool removePool = false);
int addToGame(); int addToGame();
int destroy(); int destroy();
AManaPoolSaver * clone() const; AManaPoolSaver * clone() const;
@@ -5177,7 +5218,7 @@ public:
REDrawReplacement * re; REDrawReplacement * re;
MTGAbility * replacer; MTGAbility * replacer;
bool OtherPlayer; bool OtherPlayer;
ADrawReplacer(GameObserver* observer, int id, MTGCardInstance * source, MTGAbility * _replace = NULL,bool otherPlayer = false); ADrawReplacer(GameObserver* observer, int id, MTGCardInstance * source, MTGAbility * _replace = NULL, bool otherPlayer = false);
int addToGame(); int addToGame();
int destroy(); int destroy();
ADrawReplacer * clone() const; ADrawReplacer * clone() const;
+1
View File
@@ -43,6 +43,7 @@ public:
int extraTurn; int extraTurn;
int drawCounter; int drawCounter;
int energyCount; int energyCount;
int experienceCount;
int yidaroCount; int yidaroCount;
int dungeonCompleted; int dungeonCompleted;
int numOfCommandCast; int numOfCommandCast;
+9
View File
@@ -352,6 +352,15 @@ struct WEventplayerEnergized : public WEvent {
virtual Targetable * getTarget(Player * player); virtual Targetable * getTarget(Player * player);
}; };
//alterexperience event
struct WEventplayerExperienced : public WEvent {
WEventplayerExperienced(Player * player, int nb_count);
Player * player;
int nb_count;
using WEvent::getTarget;
virtual Targetable * getTarget(Player * player);
};
//monarch event //monarch event
struct WEventplayerMonarch : public WEvent { struct WEventplayerMonarch : public WEvent {
WEventplayerMonarch(Player * player); WEventplayerMonarch(Player * player);
+105 -13
View File
@@ -1376,6 +1376,8 @@ int AAAlterEnergy::resolve()
if(pTarget) if(pTarget)
{ {
pTarget->energyCount += energy; pTarget->energyCount += energy;
if(pTarget->energyCount < 0)
pTarget->energyCount = 0;
if(energy > 0) if(energy > 0)
{ {
WEvent * e = NEW WEventplayerEnergized(pTarget, energy); WEvent * e = NEW WEventplayerEnergized(pTarget, energy);
@@ -1401,6 +1403,49 @@ AAAlterEnergy::~AAAlterEnergy()
{ {
} }
//AA Experience Counters
AAAlterExperience::AAAlterExperience(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int experience, ManaCost * _cost,
int who) :
ActivatedAbilityTP(observer, _id, _source, _target, _cost, who), experience(experience)
{
}
int AAAlterExperience::resolve()
{
Damageable * _target = (Damageable *) getTarget();
if (_target)
{
Player * pTarget = (Player*)_target;
if(pTarget)
{
pTarget->experienceCount += experience;
if(pTarget->experienceCount < 0)
pTarget->experienceCount = 0;
if(experience > 0)
{
WEvent * e = NEW WEventplayerExperienced(pTarget, experience);
game->receiveEvent(e);
}//todo loses experience event
}
}
return 0;
}
const string AAAlterExperience::getMenuText()
{
WParsedInt parsedNum(experience);
return _(parsedNum.getStringValue() + " Experience ").c_str();
}
AAAlterExperience * AAAlterExperience::clone() const
{
return NEW AAAlterExperience(*this);
}
AAAlterExperience::~AAAlterExperience()
{
}
//Damage Prevent //Damage Prevent
AADamagePrevent::AADamagePrevent(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int preventing, ManaCost * _cost, AADamagePrevent::AADamagePrevent(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int preventing, ManaCost * _cost,
int who) : int who) :
@@ -2615,6 +2660,12 @@ int AARemoveSingleCounter::resolve()
a->oneShot = true; a->oneShot = true;
pcounters.push_back(a); pcounters.push_back(a);
} }
else if(pTarget && pTarget->experienceCount)
{
MTGAbility * a = NEW AAAlterExperience(game, game->mLayers->actionLayer()->getMaxId(), source, target, -nb, NULL);
a->oneShot = true;
pcounters.push_back(a);
}
else if (cTarget && cTarget->counters) else if (cTarget && cTarget->counters)
{ {
Counters * counters = cTarget->counters; Counters * counters = cTarget->counters;
@@ -2688,6 +2739,16 @@ int AADuplicateCounters::resolve()
a->oneShot = true; a->oneShot = true;
pcounters.push_back(a); pcounters.push_back(a);
} }
else if(pTarget && pTarget->experienceCount)
{
MTGAbility * a = NULL;
if(single)
a = NEW AAAlterExperience(game, game->mLayers->actionLayer()->getMaxId(), source, target, 1, NULL);
else
a = NEW AAAlterExperience(game, game->mLayers->actionLayer()->getMaxId(), source, target, pTarget->experienceCount, NULL);
a->oneShot = true;
pcounters.push_back(a);
}
else if (cTarget && cTarget->counters) else if (cTarget && cTarget->counters)
{ {
Counters * counters = cTarget->counters; Counters * counters = cTarget->counters;
@@ -2768,6 +2829,12 @@ int AAProliferate::resolve()
a->oneShot = true; a->oneShot = true;
pcounters.push_back(a); pcounters.push_back(a);
} }
else if(pTarget && pTarget->experienceCount && pTarget == source->controller())
{
MTGAbility * a = NEW AAAlterExperience(game, game->mLayers->actionLayer()->getMaxId(), source, target, 1, NULL);
a->oneShot = true;
pcounters.push_back(a);
}
else if (cTarget && cTarget->counters) else if (cTarget && cTarget->counters)
{ {
Counters * counters = cTarget->counters; Counters * counters = cTarget->counters;
@@ -3517,23 +3584,37 @@ GenericPaidAbility::~GenericPaidAbility()
SAFE_DELETE(baseAbility); SAFE_DELETE(baseAbility);
} }
//saves a listed mana type until end of turn. //saves a listed mana type.
AManaPoolSaver::AManaPoolSaver(GameObserver* observer, int id, MTGCardInstance * source,string color, bool otherPlayer) : AManaPoolSaver::AManaPoolSaver(GameObserver* observer, int id, MTGCardInstance * source,string color, bool otherPlayer, bool removePool) :
MTGAbility(observer, id, source),Color(color),OtherPlayer(otherPlayer) MTGAbility(observer, id, source),Color(color),OtherPlayer(otherPlayer),RemovePool(removePool)
{ {
} }
int AManaPoolSaver::addToGame() int AManaPoolSaver::addToGame()
{ {
int colorInt = Constants::GetColorStringIndex(Color.c_str()); int colorInt = Constants::GetColorStringIndex(Color.c_str());
source->controller()->poolDoesntEmpty->add(colorInt,1); if(OtherPlayer){
if(RemovePool)
source->controller()->opponent()->poolDoesntEmpty->remove(colorInt,1);
else
source->controller()->opponent()->poolDoesntEmpty->add(colorInt,1);
}
else {
if(RemovePool)
source->controller()->poolDoesntEmpty->remove(colorInt,1);
else
source->controller()->poolDoesntEmpty->add(colorInt,1);
}
return 1; return 1;
} }
int AManaPoolSaver::destroy() int AManaPoolSaver::destroy()
{ {
int colorInt = Constants::GetColorStringIndex(Color.c_str()); int colorInt = Constants::GetColorStringIndex(Color.c_str());
source->controller()->poolDoesntEmpty->remove(colorInt,1); if(OtherPlayer)
source->controller()->opponent()->poolDoesntEmpty->remove(colorInt,1);
else
source->controller()->poolDoesntEmpty->remove(colorInt,1);
return 1; return 1;
} }
@@ -6100,6 +6181,22 @@ int AARemoveMana::resolve()
} }
manaPool->Empty(); manaPool->Empty();
} }
else if(game->getCurrentGamePhase() == MTG_PHASE_ENDOFTURN && !forceclean)
{
if(player->poolDoesntEmpty->getConvertedCost())
{
ManaCost * toSave = NEW ManaCost();
for(int k = Constants::MTG_COLOR_ARTIFACT; k < Constants::NB_Colors;k++)
{
if(player->poolDoesntEmpty->getCost(k))
toSave->add(k,manaPool->getCost(k));
}
player->getManaPool()->pay(manaPool->Diff(toSave));
delete(toSave);
return 1;
}
manaPool->Empty();
}
else else
manaPool->Empty(); manaPool->Empty();
} }
@@ -7144,14 +7241,9 @@ ATransformer::ATransformer(GameObserver* observer, int id, MTGCardInstance * sou
if (stypes.find("allsubtypes") != string::npos || stypes.find("removecreaturesubtypes") != string::npos) if (stypes.find("allsubtypes") != string::npos || stypes.find("removecreaturesubtypes") != string::npos)
{ {
const vector<string> values = MTGAllCards::getValuesById(); const vector<string> values = MTGAllCards::getCreatureValuesById();
for (size_t i = 0; i <values.size(); ++i) for (size_t i = 0; i < values.size(); ++i)
{ types.push_back(MTGAllCards::findType(values.at(i)));
if (!MTGAllCards::isSubtypeOfType(i,Subtypes::TYPE_CREATURE))
continue;
types.push_back(i);
}
} }
else else
{ {
+2 -2
View File
@@ -411,9 +411,9 @@ MTGCardInstance * CardDescriptor::match(MTGCardInstance * card)
match = NULL; match = NULL;
} }
if(CDopponentDamaged == -1 || CDopponentDamaged == 1) if(CDopponentDamaged == -1 || CDopponentDamaged == 1 || CDcontrollerDamaged == -1 || CDcontrollerDamaged == 1)
{ {
Player * p = card->controller()->opponent();//controller()->opponent(); Player * p = card->controller();
if ((CDopponentDamaged == -1 && card->damageToOpponent && card->controller() == p) if ((CDopponentDamaged == -1 && card->damageToOpponent && card->controller() == p)
|| (CDopponentDamaged == 1 && !card->damageToOpponent && card->controller() == p) || (CDopponentDamaged == 1 && !card->damageToOpponent && card->controller() == p)
|| (CDopponentDamaged == -1 && card->damageToController && card->controller() == p->opponent()) || (CDopponentDamaged == -1 && card->damageToController && card->controller() == p->opponent())
+18
View File
@@ -33,6 +33,7 @@ void GuiAvatar::Render()
int life = player->life; int life = player->life;
int poisonCount = player->poisonCount; int poisonCount = player->poisonCount;
int energyCount = player->energyCount; int energyCount = player->energyCount;
int experienceCount = player->experienceCount;
WFont * mFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT); WFont * mFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT);
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE); mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
TargetChooser * tc = NULL; TargetChooser * tc = NULL;
@@ -166,6 +167,23 @@ void GuiAvatar::Render()
break; break;
} }
} }
//experience
char experience[15];
if (experienceCount > 0)
{
sprintf(experience, "%i", experienceCount);
switch (corner)
{
case TOP_LEFT:
mFont->SetColor(ARGB((int)actA / 1, 255, 0, 255));
mFont->DrawString(experience, actX + 2, actY + 24);
break;
case BOTTOM_RIGHT:
mFont->SetColor(ARGB((int)actA / 1 ,255, 0, 255));
mFont->DrawString(experience, actX - 10, actY - 27, JGETEXT_RIGHT);
break;
}
}
PlayGuiObject::Render(); PlayGuiObject::Render();
} }
+22 -3
View File
@@ -1192,7 +1192,6 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
attackingTrigger,attackedAloneTrigger,notBlockedTrigger,attackBlockedTrigger,blockingTrigger); attackingTrigger,attackedAloneTrigger,notBlockedTrigger,attackBlockedTrigger,blockingTrigger);
} }
//energized player - controller of card //energized player - controller of card
if (TargetChooser * tc = parseSimpleTC(s, "energizedof", card)) if (TargetChooser * tc = parseSimpleTC(s, "energizedof", card))
return NEW TrplayerEnergized(observer, id, card, tc,once,true,false); return NEW TrplayerEnergized(observer, id, card, tc,once,true,false);
@@ -1201,6 +1200,14 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
if (TargetChooser * tc = parseSimpleTC(s, "energizedfoeof", card)) if (TargetChooser * tc = parseSimpleTC(s, "energizedfoeof", card))
return NEW TrplayerEnergized(observer, id, card, tc,once,false,true); return NEW TrplayerEnergized(observer, id, card, tc,once,false,true);
//experienced player - controller of card
if (TargetChooser * tc = parseSimpleTC(s, "experiencedof", card))
return NEW TrplayerExperienced(observer, id, card, tc,once,true,false);
//experienced player - opponent of card controller
if (TargetChooser * tc = parseSimpleTC(s, "experiencedfoeof", card))
return NEW TrplayerExperienced(observer, id, card, tc,once,false,true);
//becomes monarch - controller of card //becomes monarch - controller of card
if (TargetChooser * tc = parseSimpleTC(s, "becomesmonarchof", card)) if (TargetChooser * tc = parseSimpleTC(s, "becomesmonarchof", card))
return NEW TrplayerMonarch(observer, id, card, tc,once,true,false); return NEW TrplayerMonarch(observer, id, card, tc,once,true,false);
@@ -2619,14 +2626,15 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
return NEW APaired(observer,id, card,card->myPair,a); return NEW APaired(observer,id, card,card->myPair,a);
return NULL; return NULL;
} }
//mana of the listed type doesnt get emptied from the pools. //mana of the listed type doesnt get emptied from the pools.
vector<string>colorType = parseBetween(s,"poolsave(",")",false); vector<string>colorType = parseBetween(s,"poolsave(",")",false);
if (colorType.size()) if (colorType.size())
{ {
return NEW AManaPoolSaver(observer,id, card,colorType[1],s.find("opponentpool")!=string::npos); return NEW AManaPoolSaver(observer, id, card, colorType[1], s.find("opponentpool")!=string::npos, s.find("terminate") != string::npos);// Added a way to terminate effect when source card leave battlefield.
} }
//opponent replace draw with //opponent replace draw with
found = s.find("opponentreplacedraw "); found = s.find("opponentreplacedraw ");
if (found != string::npos) if (found != string::npos)
{ {
@@ -3690,6 +3698,17 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
return a; return a;
} }
//alter experience
vector<string> splitExperience = parseBetween(s, "alterexperience:", " ", false);
if (splitExperience.size())
{
int exp = atoi(splitExperience[1].c_str());
Targetable * t = spell ? spell->getNextTarget() : NULL;
MTGAbility * a = NEW AAAlterExperience(observer, id, card, t, exp, NULL, who);
a->oneShot = 1;
return a;
}
//alter dungeon completed //alter dungeon completed
vector<string> splitDungeonCompleted = parseBetween(s, "completedungeon:", " ", false); vector<string> splitDungeonCompleted = parseBetween(s, "completedungeon:", " ", false);
if (splitDungeonCompleted.size()) if (splitDungeonCompleted.size())
+1
View File
@@ -35,6 +35,7 @@ Player::Player(GameObserver *observer, string file, string fileSmall, MTGDeck *
extraTurn = 0; extraTurn = 0;
drawCounter = 0; drawCounter = 0;
energyCount = 0; energyCount = 0;
experienceCount = 0;
yidaroCount = 0; yidaroCount = 0;
dungeonCompleted = 0; dungeonCompleted = 0;
numOfCommandCast = 0; numOfCommandCast = 0;
+1
View File
@@ -602,6 +602,7 @@ void Rules::initGame(GameObserver *g, bool currentPlayerSet)
p->damageCount = initState.playerData[i].player->damageCount; p->damageCount = initState.playerData[i].player->damageCount;
p->preventable = initState.playerData[i].player->preventable; p->preventable = initState.playerData[i].player->preventable;
p->energyCount = initState.playerData[i].player->energyCount; p->energyCount = initState.playerData[i].player->energyCount;
p->experienceCount = initState.playerData[i].player->experienceCount;
p->yidaroCount = initState.playerData[i].player->yidaroCount; p->yidaroCount = initState.playerData[i].player->yidaroCount;
p->dungeonCompleted = initState.playerData[i].player->dungeonCompleted; p->dungeonCompleted = initState.playerData[i].player->dungeonCompleted;
p->numOfCommandCast = initState.playerData[i].player->numOfCommandCast; p->numOfCommandCast = initState.playerData[i].player->numOfCommandCast;
+11
View File
@@ -287,6 +287,11 @@ WEventplayerEnergized::WEventplayerEnergized(Player * player, int nb_count) :
{ {
} }
WEventplayerExperienced::WEventplayerExperienced(Player * player, int nb_count) :
player(player), nb_count(nb_count)
{
}
WEventplayerMonarch::WEventplayerMonarch(Player * player) : WEventplayerMonarch::WEventplayerMonarch(Player * player) :
player(player) player(player)
{ {
@@ -605,6 +610,12 @@ Targetable * WEventplayerEnergized::getTarget(Player * player)
return NULL; return NULL;
} }
Targetable * WEventplayerExperienced::getTarget(Player * player)
{
if (player) return player;
return NULL;
}
Targetable * WEventplayerMonarch::getTarget(Player * player) Targetable * WEventplayerMonarch::getTarget(Player * player)
{ {
if (player) return player; if (player) return player;
+4
View File
@@ -1289,6 +1289,10 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card)
{ {
intValue = (card->controller()->isAI())?0:1; intValue = (card->controller()->isAI())?0:1;
} }
else if (s == "pexperience" || s == "oexperience")
{
intValue = (s == "pexperience")?card->controller()->experienceCount:card->controller()->opponent()->experienceCount;
}
else if(!intValue)//found nothing, try parsing a atoi else if(!intValue)//found nothing, try parsing a atoi
{ {
intValue = atoi(s.c_str()); intValue = atoi(s.c_str());