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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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 creature’s 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 creature’s 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 creature’s 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 isn’t 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 don’t 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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -43,6 +43,7 @@ public:
|
||||
int extraTurn;
|
||||
int drawCounter;
|
||||
int energyCount;
|
||||
int experienceCount;
|
||||
int yidaroCount;
|
||||
int dungeonCompleted;
|
||||
int numOfCommandCast;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user