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

View File

@@ -86,6 +86,7 @@ auto=@movedto(other *|battlefield) restriction{type(*[isflipped]|nonbattlezone)~
#Monarch rule
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
auto=@each cleanup:all(*|myBattlefield) resetDamage

View File

@@ -85,6 +85,7 @@ auto=@movedto(other *|battlefield) restriction{type(*[isflipped]|nonbattlezone)~
#Monarch rule
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
auto=@each cleanup:all(*|myBattlefield) resetDamage

View File

@@ -3938,8 +3938,8 @@ toughness=3
[/card]
[card]
name=Avenging Huntbonder
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])
abilities=double strike
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.
mana={3}{W}{W}
type=Creature
@@ -3951,7 +3951,7 @@ toughness=3
name=Avian Oddity
abilities=flying,cycling
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.
mana={3}{U}
type=Creature
@@ -5120,9 +5120,9 @@ name=Beast Viv
auto=this(counter{0/0.1.Vigilance}>=1) vigilance
auto=this(counter{0/0.1.Reach}>=1) reach
auto=this(counter{0/0.1.Trample}>=1) trample
auto=choice name(Vigilance) counter(0/0,1,Vigilance)
auto=choice name(Reach) counter(0/0,1,Reach)
auto=choice name(Trample) counter(0/0,1,Trample)
auto=choice name(Vigilance counter) counter(0/0,1,Vigilance)
auto=choice name(Reach counter) counter(0/0,1,Reach)
auto=choice name(Trample counter) counter(0/0,1,Trample)
type=Creature
subttype=Beast
power=3
@@ -6318,8 +6318,7 @@ toughness=2
name=Blood Curdle
target=creature
auto=destroy
auto=counter(0/0,1,Menace)
auto=transforms((,newability[this(counter{0/0.1.Menace}>=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
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}
type=Instant
@@ -7218,8 +7217,8 @@ type=Sorcery
name=Boot Nipper
auto=this(counter{0/0.1.Deathtouch}>=1) deathtouch
auto=this(counter{0/0.1.Lifelink}>=1) lifelink
auto=choice name(Deathtouch) counter(0/0,1,Deathtouch)
auto=choice name(Lifelink) counter(0/0,1,Lifelink)
auto=choice name(Deathtouch counter) counter(0/0,1,Deathtouch)
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.
mana={1}{B}
type=Creature
@@ -8439,9 +8438,7 @@ toughness=3
[card]
name=Call of the Death-Dweller
target=<upto:2>creature[manacost<=3]|myGraveyard
auto=moveTo(myBattlefield)
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])]))
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 )!
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}
type=Sorcery
@@ -13119,7 +13116,7 @@ subtype=Equipment
[card]
name=Crystalline Giant
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.Hexproof}>=1) opponentshroud
auto=this(counter{0/0.1.Lifelink}>=1) lifelink
@@ -14033,10 +14030,20 @@ power=3
toughness=2
[/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
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)
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.
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."
mana={1}{W}{B}
type=Legendary Creature
subtype=Zombie Soldier
@@ -16239,8 +16246,7 @@ type=Enchantment
[/card]
[card]
name=Domesticated Hydra
auto=this(cantargetcard(*[-monstrous]) {X}{G}{G}{G}:becomes(monstrous) forever && counter(1/1,X)
auto=aslongas(this[monstrous]|myBattlefield) trample
auto=this(cantargetcard(*[-monstrous]) {X}{G}{G}{G}:becomes(monstrous) forever && counter(1/1,X) && transforms((,newability[trample])) forever
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}
type=Creature
@@ -17663,8 +17669,8 @@ toughness=1
[/card]
[card]
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={1}{W}{T}:counter(1/1,1) all(creature[lifelink]|myBattlefield)
auto=target(creature[-human]|myBattlefield) transforms((,newability[counter(0/0.1.Lifelink)],newability[this(counter{0/0.1.Lifelink}>=1) lifelink])) forever
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.
mana={2}{B}
type=Creature
@@ -20358,7 +20364,7 @@ type=Sorcery
[card]
name=Ezuri, Claw of Progress
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.
mana={2}{G}{U}
type=Legendary Creature
@@ -22646,8 +22652,8 @@ subtype=Aura
name=Flycatcher Giraffid
auto=this(counter{0/0.1.Vigilance}>=1) vigilance
auto=this(counter{0/0.1.Reach}>=1) reach
auto=choice name(Flying) counter(0/0,1,Vigilance)
auto=choice name(First Strike) counter(0/0,1,Reach)
auto=choice name(Vigilance counter) counter(0/0,1,Vigilance)
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.
mana={4}{G}
type=Creature
@@ -23275,8 +23281,8 @@ toughness=6
[/card]
[card]
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={1}{W}{T}:counter(1/1,1) all(creature[Menace]|myBattlefield)
auto=target(creature[-human]|myBattlefield) transforms((,newability[counter(0/0.1.Menace)],newability[this(counter{0/0.1.Menace}>=1) menace])) forever
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.
mana={2}{R}
type=Creature
@@ -23491,8 +23497,7 @@ type=Sorcery
name=Fully Grown
target=creature
auto=3/3 ueot
auto=counter(0/0,1,Trample)
auto=transforms((,newability[this(counter{0/0.1.Trample}>=1) trample]))
auto=transforms((,newability[counter(0/0.1.Trample)],newability[this(counter{0/0.1.Trample}>=1) trample])) forever
text=Target creature gets +3/+3 until end of turn. Put a trample counter on it.
mana={2}{G}
type=Instant
@@ -27075,9 +27080,9 @@ name=Grimdancer
auto=this(counter{0/0.1.Deathtouch}>=1) deathtouch
auto=this(counter{0/0.1.Lifelink}>=1) lifelink
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 & Lifelink) 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(Menace and Deathtouch counters) counter(0/0,1,Menace) && counter(0/0,1,Deathtouch)
auto=choice name(Menace and Lifelink counters) counter(0/0,1,Deathtouch) && counter(0/0,1,Lifelink)
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.
mana={1}{B}{B}
type=Creature
@@ -28692,8 +28697,7 @@ toughness=2
name=Heightened Reflexes
target=creature
auto=1/0 ueot
auto=counter(0/0,1,First Strike)
auto=transforms((,newability[this(counter{0/0.1.First Strike}>=1) first strike]))
auto=transforms((,newability[counter(0/0.1.FirstStrike)],newability[this(counter{0/0.1.FirstStrike}>=1) first strike])) forever
text=Target creature gets +1/+0 until end of turn. Put a first strike counter on it.
mana={R}
type=Instant
@@ -28721,9 +28725,9 @@ toughness=3
[card]
name=Helica Glider
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(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.
mana={2}{W}
type=Creature
@@ -29619,6 +29623,7 @@ auto=mypoolsave(green)
auto=mypoolsave(blue)
auto=mypoolsave(artifact)
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(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})
@@ -29678,8 +29683,8 @@ type=Artifact
[/card]
[card]
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={1}{W}{T}:counter(1/1,1) all(creature[trample]|myBattlefield)
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={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.
mana={2}{G}
type=Creature
@@ -30114,7 +30119,7 @@ type=Sorcery
[card]
name=Hunted Nightmare
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.
mana={1}{B}{B}
type=Creature
@@ -33399,9 +33404,9 @@ type=Sorcery
[/card]
[card]
name=Kalemne, Disciple of Iroas
abilities=double strike, vigilance
abilities=double strike,vigilance
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.
mana={2}{R}{W}
type=Legendary Creature
@@ -33979,9 +33984,9 @@ toughness=3
[/card]
[card]
name=Kelsien, the Plague
abilities=Vigilance,haste
anyzone=type:alterexperience:nonbattlezone/type:alterexperience:nonbattlezone cdaactive
auto={T}:damage:1 target(creature|opponentBattlefield) transforms((,newability[_DIES_alterexperience:1 controller
abilities=vigilance,haste
auto=lord(this) pexperience/pexperience nonstatic
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.
mana={R}{W}{B}
type=Legendary Creature
@@ -34326,7 +34331,7 @@ type=Sorcery
[/card]
[card]
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.
mana={5}{G}{G}
type=Instant
@@ -35212,6 +35217,7 @@ auto=mypoolsave(green)
auto=mypoolsave(blue)
auto=mypoolsave(artifact)
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(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})
@@ -36274,6 +36280,7 @@ toughness=3
name=Leyline Tyrant
abilities=flying
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
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}
@@ -37679,7 +37686,7 @@ subtype=Aura
[card]
name=Luminous Broodmoth
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.
mana={2}{W}{W}
type=Creature
@@ -39340,6 +39347,17 @@ type=Sorcery
subtype=Lesson
[/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
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
@@ -39967,8 +39985,8 @@ subtype=Aura
[card]
name=Mirri, Weatherlight Duelist
abilities=first strike
auto=aslongas(this[tapped]) lord(creature[-attacking]|opponentbattlefield) cantattack
auto=aslongas(this[tapped]) lord(creature[-attacking]|opponentbattlefield) cantpwattack
auto=this(tapped) lord(creature[-attacking]|opponentbattlefield) cantattack
auto=this(tapped) lord(creature[-attacking]|opponentbattlefield) cantpwattack
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.
mana={1}{G}{W}
@@ -40395,9 +40413,9 @@ type=Instant
[/card]
[card]
name=Momentum Rumbler
auto=this(counter{0/0.1.First Strike}>=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):this(counter{0/0.1.First Strike}>0) double strike ueot
auto=this(counter{0/0.1.FirstStrike}>=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(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.
mana={3}{R}
type=Creature
@@ -43507,6 +43525,7 @@ toughness=4
[card]
name=Omnath, Locus of Mana
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
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}
@@ -50047,8 +50066,9 @@ type=Sorcery
[/card]
[card]
name=Return from Extinction
auto=choice moveto(myhand) target(creature|mygraveyard)
auto=choice moveto(myhand) target(<2>creature[share!types!]|mygraveyard)
restriction=type(creature|mygraveyard)~morethan~0
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.
mana={1}{B}
type=Sorcery
@@ -52549,7 +52569,7 @@ toughness=1
name=Sanctuary Smasher
abilities=first strike,cycling
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.
mana={4}{R}{R}
type=Creature
@@ -59398,7 +59418,7 @@ type=Instant
name=Splendor Mare
abilities=lifelink,cycling
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.
mana={2}{W}
type=Creature
@@ -59475,8 +59495,7 @@ type=Instant
name=Spontaneous Flight
target=creature
auto=2/2 ueot
auto=counter(0/0,1,Flying)
auto=transforms((,newability[this(counter{0/0.1.Flying}>=1) flying]))
auto=transforms((,newability[counter(0/0.1.Flying)],newability[this(counter{0/0.1.Flying}>=1) flying])) forever
text=Target creature gets +2/+2 until end of turn. Put a flying counter on it.
mana={2}{W}
type=Instant
@@ -61156,8 +61175,8 @@ type=Instant
name=Sudden Spinnerets
target=creature
auto=1/3 ueot
auto=counter(0/0,1,Reach)
auto=transforms((,newability[this(counter{0/0.1.Reach}>=1) reach],newability[untap(this)]))
auto=untap
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.
mana={G}
type=Instant
@@ -62313,28 +62332,28 @@ toughness=4
[/card]
[card]
name=Taj-Nar Swordsmith
aicode=activate moveTo(mybattlefield) target(equipment|mylibrary)
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=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=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=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=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=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=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=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=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=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=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=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=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=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=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=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=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=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=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=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=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(Don't pay) donothing
auto=choice name(X = 0) transforms((,newability[name(Search equipment) target(equipment[manacost=0]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
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=choice name(X = 2) transforms((,newability[pay[[{2}]] name(Pay and search equipment) target(equipment[manacost<=2]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
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=choice name(X = 4) transforms((,newability[pay[[{4}]] name(Pay and search equipment) target(equipment[manacost<=4]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
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=choice name(X = 6) transforms((,newability[pay[[{6}]] name(Pay and search equipment) target(equipment[manacost<=6]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
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=choice name(X = 8) transforms((,newability[pay[[{8}]] name(Pay and search equipment) target(equipment[manacost<=8]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
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=choice name(X = 10) transforms((,newability[pay[[{10}]] name(Pay and search equipment) target(equipment[manacost<=10]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
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=choice name(X = 12) transforms((,newability[pay[[{12}]] name(Pay and search equipment) target(equipment[manacost<=12]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
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=choice name(X = 14) transforms((,newability[pay[[{14}]] name(Pay and search equipment) target(equipment[manacost<=14]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
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=choice name(X = 16) transforms((,newability[pay[[{16}]] name(Pay and search equipment) target(equipment[manacost<=16]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
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=choice name(X = 18) transforms((,newability[pay[[{18}]] name(Pay and search equipment) target(equipment[manacost<=18]|mylibrary) moveTo(mybattlefield) and!( shuffle )!])) oneshot
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=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.
mana={3}{W}
type=Creature
@@ -65151,7 +65170,7 @@ toughness=6
name=Titanoth Rex
abilities=trample,cycling
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.
mana={7}{G}{G}
type=Creature
@@ -66971,9 +66990,7 @@ type=Instant
[card]
name=Unbreakable Bond
target=creature|myGraveyard
auto=moveTo(myBattlefield)
auto=counter(0/0,1,Lifelink)
auto=transforms((,newability[this(counter{0/0.1.Lifelink}>=1) lifelink]))
auto=moveTo(myBattlefield) and!( transforms((,newability[counter(0/0.1.Lifelink)],newability[this(counter{0/0.1.Lifelink}>=1) lifelink])) forever )!
text=Return target creature card from your graveyard to the battlefield with a lifelink counter on it.
mana={4}{B}
type=Sorcery
@@ -67221,9 +67238,7 @@ toughness=4
[card]
name=Unexpected Fangs
target=creature
auto=counter(1/1,1)
auto=counter(0/0,1,Lifelink)
auto=transforms((,newability[this(counter{0/0.1.Lifelink}>=1) lifelink]))
auto=transforms((,newability[counter(1/1)],newability[counter(0/0.1.Lifelink)],newability[this(counter{0/0.1.Lifelink}>=1) lifelink])) forever
text=Put a +1/+1 counter and a lifelink counter on target creature.
mana={1}{B}
type=Instant
@@ -69378,7 +69393,7 @@ toughness=3
name=Void Beckoner
abilities=deathtouch,cycling
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.
mana={6}{B}{B}
type=Creature

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.
mana={8}
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
subtype=Eldrazi Leech
power=6
@@ -23958,7 +23958,7 @@ type=Instant
name=Crown of Ascension
target=creature
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.
mana={1}{U}
type=Enchantment
@@ -23969,7 +23969,7 @@ name=Crown of Awe
target=creature
auto=protection from black
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.
mana={1}{W}
type=Enchantment
@@ -24006,7 +24006,7 @@ name=Crown of Fury
target=creature
auto=1/0
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.
mana={1}{R}
type=Enchantment
@@ -24016,7 +24016,7 @@ subtype=Aura
name=Crown of Suspicion
target=creature
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.
mana={1}{B}
type=Enchantment
@@ -24026,7 +24026,7 @@ subtype=Aura
name=Crown of Vigor
target=creature
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.
mana={1}{G}
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
mana={10}
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
subtype=Eldrazi Boar
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.
mana={8}
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
subtype=Eldrazi Insect
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.
mana={9}
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
subtype=Eldrazi Crab
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.
mana={8}
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
subtype=Eldrazi Octopus
power=5
@@ -46469,7 +46469,8 @@ toughness=2
[/card]
[card]
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
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}
@@ -49643,8 +49644,7 @@ type=Land
[/card]
[card]
name=Gravepurge
target=<anyamount>creature|mygraveyard
auto=moveTo(mylibrary)
auto=may name(Return creature to library) target(<anyamount>creature|mygraveyard) moveTo(mylibrary)
auto=draw:1 controller
text=Put any number of target creature cards from your graveyard on top of your library. -- Draw a card.
mana={2}{B}
@@ -58253,8 +58253,8 @@ toughness=1
[/card]
[card]
name=Ink Dissolver
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
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
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}
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.
mana={8}
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
subtype=Eldrazi Insect
power=4
@@ -63239,7 +63239,7 @@ toughness=3
[/card]
[card]
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.
mana={2}{W}
type=Creature
@@ -63891,7 +63891,7 @@ toughness=3
[card]
name=Konda's Banner
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}
mana={2}
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.
mana={8}
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
subtype=Eldrazi Horror
power=5
@@ -66094,7 +66094,7 @@ toughness=2
[card]
name=Leaf-Crowned Elder
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.
mana={2}{G}{G}
type=Creature
@@ -75047,7 +75047,7 @@ toughness=4
[/card]
[card]
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
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}
@@ -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.
mana={9}
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
subtype=Eldrazi Beast
power=6
@@ -76922,8 +76922,8 @@ toughness=3
[/card]
[card]
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 )!)!
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
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
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}
type=Creature
@@ -79808,8 +79808,8 @@ toughness=1
[/card]
[card]
name=Nightshade Schemers
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
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
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}
type=Creature
@@ -84648,7 +84648,7 @@ toughness=1
[card]
name=Patron of the Akki
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
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.
@@ -84661,7 +84661,7 @@ toughness=5
[card]
name=Patron of the Kitsune
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
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.
@@ -84674,7 +84674,7 @@ toughness=6
[card]
name=Patron of the Moon
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
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.
@@ -84687,7 +84687,7 @@ toughness=4
[card]
name=Patron of the Nezumi
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
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.
@@ -84700,7 +84700,7 @@ toughness=6
[card]
name=Patron of the Orochi
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
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.
@@ -90092,8 +90092,8 @@ type=Sorcery
[/card]
[card]
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) )!)!
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
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
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}
type=Creature
@@ -92863,8 +92863,9 @@ type=Enchantment
[/card]
[card]
name=Reciprocate
target=creature[controllerdamager]
auto=moveto(exile)
restriction=type(creature[damager]|battlefield)~morethan~0
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.
mana={W}
type=Instant
@@ -94444,7 +94445,8 @@ type=Instant
[/card]
[card]
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.
mana={2}{W}{W}
type=Instant
@@ -102176,8 +102178,8 @@ toughness=4
[/card]
[card]
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) )!)!
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
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
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}
type=Creature
@@ -110255,7 +110257,8 @@ toughness=2
[card]
name=Spear of Heliod
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.
mana={1}{W}{W}
type=Legendary Enchantment Artifact
@@ -112186,8 +112189,8 @@ type=Sorcery
[/card]
[card]
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 )!)!
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
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
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}
type=Creature
@@ -113731,7 +113734,7 @@ toughness=2
[card]
name=Stoneforge Masterwork
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}
mana={1}
type=Artifact
@@ -126414,13 +126417,16 @@ auto=mypoolsave(blue)
auto=mypoolsave(black)
auto=mypoolsave(white)
auto=mypoolsave(green)
auto=mypoolsave(colorless)
auto=mypoolsave(artifact)
auto=mypoolsave(land)
auto=opponentpoolsave(red)
auto=opponentpoolsave(green)
auto=opponentpoolsave(blue)
auto=opponentpoolsave(black)
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.
mana={3}{G}
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.
mana={8}
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
subtype=Eldrazi Crab
power=4
@@ -131561,8 +131567,8 @@ toughness=3
[/card]
[card]
name=Wandering Graybeard
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
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
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}
type=Creature
@@ -132397,8 +132403,8 @@ toughness=4
[/card]
[card]
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)!)!
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
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
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}
type=Creature
@@ -134591,8 +134597,8 @@ toughness=2
[/card]
[card]
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) )!)!
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
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
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}
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
mana={7}
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
subtype=Eldrazi Hippogriff
power=3

View File

@@ -627,6 +627,7 @@ subtype=Daretti
name=Daretti, Scrap Savant
abilities=canbecommander
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: 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

View File

@@ -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.
type=Conspiracy
[/card]
[card]
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.
@@ -6939,15 +6938,6 @@ power=3
toughness=3
[/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
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}

View File

@@ -499,7 +499,34 @@ public:
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
{
public:
@@ -4023,6 +4050,19 @@ public:
AAAlterEnergy * clone() const;
~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
class AABoastEvent: public ActivatedAbilityTP
{
@@ -5164,7 +5204,8 @@ class AManaPoolSaver: public MTGAbility
public:
string Color;
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 destroy();
AManaPoolSaver * clone() const;
@@ -5177,7 +5218,7 @@ public:
REDrawReplacement * re;
MTGAbility * replacer;
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 destroy();
ADrawReplacer * clone() const;

View File

@@ -43,6 +43,7 @@ public:
int extraTurn;
int drawCounter;
int energyCount;
int experienceCount;
int yidaroCount;
int dungeonCompleted;
int numOfCommandCast;

View File

@@ -352,6 +352,15 @@ struct WEventplayerEnergized : public WEvent {
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
struct WEventplayerMonarch : public WEvent {
WEventplayerMonarch(Player * player);

View File

@@ -1376,6 +1376,8 @@ int AAAlterEnergy::resolve()
if(pTarget)
{
pTarget->energyCount += energy;
if(pTarget->energyCount < 0)
pTarget->energyCount = 0;
if(energy > 0)
{
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
AADamagePrevent::AADamagePrevent(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int preventing, ManaCost * _cost,
int who) :
@@ -2615,6 +2660,12 @@ int AARemoveSingleCounter::resolve()
a->oneShot = true;
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)
{
Counters * counters = cTarget->counters;
@@ -2688,6 +2739,16 @@ int AADuplicateCounters::resolve()
a->oneShot = true;
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)
{
Counters * counters = cTarget->counters;
@@ -2768,6 +2829,12 @@ int AAProliferate::resolve()
a->oneShot = true;
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)
{
Counters * counters = cTarget->counters;
@@ -3517,23 +3584,37 @@ GenericPaidAbility::~GenericPaidAbility()
SAFE_DELETE(baseAbility);
}
//saves a listed mana type until end of turn.
AManaPoolSaver::AManaPoolSaver(GameObserver* observer, int id, MTGCardInstance * source,string color, bool otherPlayer) :
MTGAbility(observer, id, source),Color(color),OtherPlayer(otherPlayer)
//saves a listed mana type.
AManaPoolSaver::AManaPoolSaver(GameObserver* observer, int id, MTGCardInstance * source,string color, bool otherPlayer, bool removePool) :
MTGAbility(observer, id, source),Color(color),OtherPlayer(otherPlayer),RemovePool(removePool)
{
}
int AManaPoolSaver::addToGame()
{
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;
}
int AManaPoolSaver::destroy()
{
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;
}
@@ -6099,6 +6180,22 @@ int AARemoveMana::resolve()
return 1;
}
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
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)
{
const vector<string> values = MTGAllCards::getValuesById();
for (size_t i = 0; i <values.size(); ++i)
{
if (!MTGAllCards::isSubtypeOfType(i,Subtypes::TYPE_CREATURE))
continue;
types.push_back(i);
}
const vector<string> values = MTGAllCards::getCreatureValuesById();
for (size_t i = 0; i < values.size(); ++i)
types.push_back(MTGAllCards::findType(values.at(i)));
}
else
{

View File

@@ -411,9 +411,9 @@ MTGCardInstance * CardDescriptor::match(MTGCardInstance * card)
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)
|| (CDopponentDamaged == 1 && !card->damageToOpponent && card->controller() == p)
|| (CDopponentDamaged == -1 && card->damageToController && card->controller() == p->opponent())

View File

@@ -33,6 +33,7 @@ void GuiAvatar::Render()
int life = player->life;
int poisonCount = player->poisonCount;
int energyCount = player->energyCount;
int experienceCount = player->experienceCount;
WFont * mFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT);
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
TargetChooser * tc = NULL;
@@ -166,6 +167,23 @@ void GuiAvatar::Render()
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();
}

View File

@@ -1192,7 +1192,6 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
attackingTrigger,attackedAloneTrigger,notBlockedTrigger,attackBlockedTrigger,blockingTrigger);
}
//energized player - controller of card
if (TargetChooser * tc = parseSimpleTC(s, "energizedof", card))
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))
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
if (TargetChooser * tc = parseSimpleTC(s, "becomesmonarchof", card))
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 NULL;
}
//mana of the listed type doesnt get emptied from the pools.
vector<string>colorType = parseBetween(s,"poolsave(",")",false);
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 ");
if (found != string::npos)
{
@@ -3690,6 +3698,17 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
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
vector<string> splitDungeonCompleted = parseBetween(s, "completedungeon:", " ", false);
if (splitDungeonCompleted.size())

View File

@@ -35,6 +35,7 @@ Player::Player(GameObserver *observer, string file, string fileSmall, MTGDeck *
extraTurn = 0;
drawCounter = 0;
energyCount = 0;
experienceCount = 0;
yidaroCount = 0;
dungeonCompleted = 0;
numOfCommandCast = 0;

View File

@@ -602,6 +602,7 @@ void Rules::initGame(GameObserver *g, bool currentPlayerSet)
p->damageCount = initState.playerData[i].player->damageCount;
p->preventable = initState.playerData[i].player->preventable;
p->energyCount = initState.playerData[i].player->energyCount;
p->experienceCount = initState.playerData[i].player->experienceCount;
p->yidaroCount = initState.playerData[i].player->yidaroCount;
p->dungeonCompleted = initState.playerData[i].player->dungeonCompleted;
p->numOfCommandCast = initState.playerData[i].player->numOfCommandCast;

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) :
player(player)
{
@@ -605,6 +610,12 @@ Targetable * WEventplayerEnergized::getTarget(Player * player)
return NULL;
}
Targetable * WEventplayerExperienced::getTarget(Player * player)
{
if (player) return player;
return NULL;
}
Targetable * WEventplayerMonarch::getTarget(Player * player)
{
if (player) return player;

View File

@@ -1289,6 +1289,10 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card)
{
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
{
intValue = atoi(s.c_str());