Bug Fixes, code cleanup, macros substitutions for tokens

Adding colorless to a token is redundant since by default is colorless.
"may pay" is redundant when the cost is mana, it's necessary when the cost is life.
Acolyte of Affliction
Ajani, Strength Of The Pride Shouldn't Be Double Triggers
Akiri, Fearless Voyager
Arena Rector
Arrogant Poet
Artificer's Hex just falls off, removed
Body Snatcher When You Have No Creatures In Hand
Bump In The Night
Cacophony Scamp
Captain Eberhart
Chandra, Hope's Beacon
Deem Worthy
Desecrate Reality
Destructive Tampering
Drake Haven
Dredge The Mire
Explosive Welcome
Fungal Rebirth
Giver of Runes
Glissa's Scorn
Gurgling Anointer
Haunted Angel
Hungry Flames
Hypnotic Cloud
Inniaz, the Gale Force
Jukai Naturalist
Lord Windgrace
Nature's Cloak
Nature's Spiral
Rashmi, Eternities Crafter
Rohgahh, Kher Keep Overlord
So Shiny
Sparktongue Dragon
Sprouting Goblin missing a )
Temple Thief
The Grey Havens
The Mending of Dominaria was shuffling itself
Tolarian Contempt, have to misspell "rejection" on the counter name
Two-Handed Axe // Sweeping Cleave
Urborg Panther
Urza's Sylex
Victory Chimes
Vraska, Swarm's Eminence
Warmonger
This commit is contained in:
Eduardo MG
2024-07-06 17:36:58 -06:00
parent 3bbb1cea2c
commit 4e4108f547
5 changed files with 234 additions and 275 deletions

View File

@@ -76,12 +76,12 @@
#AUTO_DEFINE _AMASSSLIVER5_ if type(army|mybattlefield)~morethan~0 then name(Put 1/1 counters) name(Put 1/1 counters) notatarget(army|myBattlefield) transforms((Sliver,newability[counter(1/1.5)])) forever else name(Create Sliver Army) token(Sliver Army) and!( name(Put 1/1 counters) counter(1/1.5) notatarget(army|myBattlefield) )!
# Scry, Evergreen
#AUTO_DEFINE _SCRY_($c) scry:$c scrycore delayed dontshow donothing scrycoreend scryend
#AUTO_DEFINE _SCRY1_ scry:1 scrycore delayed dontshow donothing scrycoreend scryend
#AUTO_DEFINE _SCRY2_ scry:2 scrycore delayed dontshow donothing scrycoreend scryend
#AUTO_DEFINE _SCRY3_ scry:3 scrycore delayed dontshow donothing scrycoreend scryend
#AUTO_DEFINE _SCRY4_ scry:4 scrycore delayed dontshow donothing scrycoreend scryend
#AUTO_DEFINE _SCRY5_ scry:5 scrycore delayed dontshow donothing scrycoreend scryend
#AUTO_DEFINE _SCRY_($c) scry:$c scrycore delayed dontshow donothing scrycoreend scryend controller
#AUTO_DEFINE _SCRY1_ scry:1 scrycore delayed dontshow donothing scrycoreend scryend controller
#AUTO_DEFINE _SCRY2_ scry:2 scrycore delayed dontshow donothing scrycoreend scryend controller
#AUTO_DEFINE _SCRY3_ scry:3 scrycore delayed dontshow donothing scrycoreend scryend controller
#AUTO_DEFINE _SCRY4_ scry:4 scrycore delayed dontshow donothing scrycoreend scryend controller
#AUTO_DEFINE _SCRY5_ scry:5 scrycore delayed dontshow donothing scrycoreend scryend controller
# Fabricate
#AUTO_DEFINE _FABRICATE_($c) transforms((,newability[choice counter(1/1.$c)],newability[choice create(Servo:Artifact Creature Servo:1/1)*$c])) ueot
@@ -102,13 +102,13 @@
#AUTO_DEFINE _CHAMPION_($Word) aslongas(other $word|myBattlefield) choice notAtarget(other $word|myBattlefield) (blink)forsrc oneshot
# Metalcraft, not implemented
#AUTO_DEFINE _METALCRAFT_ aslongas(artifact|mybattlefield) >2
#AUTO_DEFINE _METALCRAFT_ if type(artifact|mybattlefield)~morethan~2 then
# Echo, not implemented
#AUTO_DEFINE _ECHO_($cost) $cost[{$c};next upkeep] sacrifice
# Threshold, not implemented
#AUTO_DEFINE _THRESHOLD_ if type(*|mygraveyard)~morethan~6
#AUTO_DEFINE _THRESHOLD_ if type(*|mygraveyard)~morethan~6 then
# Splice onto Arcane, not implemented
#AUTO_DEFINE _SPLICEARCANE_ movedTo(*[Arcane]|myStack):may castcard(copied noevent) target(*[Arcane]|myHand)
@@ -128,9 +128,6 @@
# Monstrosity, not implemented
#AUTO_DEFINE _MONSTROSITY_($cost,$c) name(Monstrosity) this(cantargetcard(*[-monstrous]) {$cost}:becomes(monstrous) forever && counter(1/1.$c)
# Outlast, not implemented
#AUTO_DEFINE _OUTLAST_($cost) {$cost}{$cost}:counter(1/1) all(this) asSorcery
# Investigate token, Shadows over Innistrad SOI
#AUTO_DEFINE _INVESTIGATE_ token(Clue)
@@ -167,9 +164,6 @@
#AUTO_DEFINE _SURVEIL3_ name(Surveil 3) reveal:psurveiloffsetplus3plusend optionone name(put in graveyard) target(<upto:psurveiloffsetplus3plusend>*|reveal) moveto(ownergraveyard) optiononeend optiontwo name(put in library) target(<psurveiloffsetplus3plusend>*|reveal) moveto(ownerlibrary) optiontwoend afterrevealed surveil afterrevealedend revealend
# Undergrowth, not implemented
#AUTO_DEFINE _UNDERGROWTH_ foreach(creature|myGraveyard)
# Afterlife
#AUTO_DEFINE _AFTERLIFETOKEN_ create(Spirit:Creature Spirit:1/1:white:black:flying)

File diff suppressed because it is too large Load Diff

View File

@@ -6171,15 +6171,6 @@ mana={2}{U}
type=Instant
[/card]
[card]
name=Artificer's Hex
target=equipment
auto=@each my upkeep:transforms((,newability[destroy all(parents)])) ueot
text=Enchant Equipment. -- At the beginning of your upkeep, if enchanted Equipment is attached to a creature, destroy that creature.
mana={B}
type=Enchantment
subtype=Aura
[/card]
[card]
name=Artificer's Intuition
aicode=activate target(artifact[manacost<=1]|mylibrary) moveto(ownerHand)
auto={U}{D(artifact|myhand)}:name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(<1>artifact[manacost<=1]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(ownerHand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>*|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend
@@ -13019,8 +13010,8 @@ toughness=5
[/card]
[card]
name=Body Snatcher
auto=choice restriction{type(creature|myhand)~morethan~0} reject notatarget(creature|myhand)
auto=choice moveTo(exile)
auto=choice reject notatarget(creature|myhand)
auto=@movedTo(mygraveyard) from(this|battlefield):moveTo(myBattlefield) target(creature|mygraveyard)
autograveyard=moveTo(exile)
text=When Body Snatcher enters the battlefield, you may discard a creature card. If you don't, exile Body Snatcher. -- When Body Snatcher dies, exile Body Snatcher and return target creature card from your graveyard to the battlefield.
@@ -15689,7 +15680,8 @@ type=Enchantment
[/card]
[card]
name=Bump in the Night
auto=life:-3 opponent
target=opponent
auto=life:-3
flashback={5}{R}
text=Target opponent loses 3 life. -- Flashback {5}{R}
mana={B}
@@ -35194,7 +35186,7 @@ toughness=1
[/card]
[card]
name=Elvish Scrapper
auto={G}{T}{S}:destroy target(other artifact)
auto={G}{T}{S}:destroy target(artifact)
text={G}, {T}, Sacrifice Elvish Scrapper: Destroy target artifact.
mana={G}
type=Creature
@@ -47099,7 +47091,7 @@ toughness=3
name=Glissa's Scorn
target=artifact
auto=destroy
auto=life:-3 targetController
auto=life:-1 targetController
text=Destroy target artifact. Its controller loses 1 life.
mana={1}{G}
type=Instant
@@ -52749,7 +52741,7 @@ toughness=5
[card]
name=Haunted Angel
abilities=flying
autograveyard=token(Angel,Creature Angel,3/3,flying black) opponent && moveto(exile)
auto=_DIES_token(Angel,Creature Angel,3/3,flying,black) opponent && moveto(exile)
text=Flying -- When Haunted Angel dies, exile Haunted Angel and each other player puts a 3/3 black Angel creature token with flying onto the battlefield.
mana={2}{W}
type=Creature
@@ -53337,7 +53329,7 @@ toughness=2
name=Heart-Piercer Bow
auto={1}:equip
auto=@combat(attacking) source(mytgt):damage:1 target(creature|opponentbattlefield)
text=Whenever equipped creature attacks, Heart-Piercer Bow deals 1 damage to target creature defending player controls.
text=Whenever equipped creature attacks, Heart-Piercer Bow deals 1 damage to target creature defending player controls. -- Equip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.)
mana={2}
type=Artifact
subtype=Equipment
@@ -56690,8 +56682,8 @@ subtype=Aura
[card]
name=Hypnotic Cloud
target=player
auto=ability$!name(discard) target(*|myhand) reject!$ targetedplayer
auto=if paid(kicker) then ability$!name(discard) target(<2>*|myhand) reject!$ targetedplayer
auto=ifnot paid(kicker) then ability$!name(discard) target(*|myhand) reject!$ targetedplayer
auto=if paid(kicker) then ability$!name(discard) target(<3>*|myhand) reject!$ targetedplayer
kicker={4}
text=Kicker {4} (You may pay an additional {4} as you cast this spell.) -- Target player discards a card. If Hypnotic Cloud was kicked, that player discards three cards instead.
mana={1}{B}
@@ -69580,7 +69572,7 @@ toughness=2
[/card]
[card]
name=Mage Slayer
auto=@combat(attacking) source(mytgt) :dynamicability<!mytgt powerstrike targetopponent!>
auto=@combat(attacking) source(mytgt):dynamicability<!mytgt powerstrike targetopponent!>
auto={3}:equip
text=Whenever equipped creature attacks, it deals damage equal to its power to defending player. -- Equip {3}
mana={1}{R}{G}
@@ -73600,7 +73592,7 @@ toughness=3
[/card]
[card]
name=Midnight Guard
auto=@movedTo(other creature|mybattlefield):untap
auto=@movedTo(other creature|battlefield):untap
text=Whenever another creature enters the battlefield, untap Midnight Guard.
mana={2}{W}
type=Creature
@@ -73618,7 +73610,7 @@ type=Instant
[card]
name=Midnight Ritual
target=<prex>creature|mygraveyard
auto=moveTo(exile) and!( create(Zombie:Creature Zombie:2/2:black) )!
auto=moveTo(exile) and!( _ZOMBIETOKEN_ )!
text=Exile X target creature cards from your graveyard. For each creature card exiled this way, put a 2/2 black Zombie creature token onto the battlefield.
mana={X}{2}{B}
type=Sorcery
@@ -78535,8 +78527,8 @@ type=Instant
[/card]
[card]
name=Nature's Cloak
auto=lord(creature|myBattlefield) forestwalk
text=Green creatures you control gain forestwalk until end of turn.
auto=all(creature[green]|myBattlefield) forestwalk
text=Green creatures you control gain forestwalk until end of turn. (They can't be blocked as long as defending player controls a Forest.)
mana={2}{G}
type=Sorcery
[/card]
@@ -78572,9 +78564,9 @@ type=Sorcery
[/card]
[card]
name=Nature's Spiral
target=artifact,creature,enchantment,land|myGraveyard
target=*[-instant;-sorcery]|myGraveyard
auto=moveto(ownerHand)
text=Return target permanent card from your graveyard to your hand. (A permanent card is an artifact, creature, enchantment, land, or planeswalker card.)
text=Return target permanent card from your graveyard to your hand.
mana={1}{G}
type=Sorcery
[/card]
@@ -80718,7 +80710,7 @@ toughness=2
[card]
name=Noosegraf Mob
auto=counter(1/1,5)
auto=@movedto(*|stack):this(counter{1/1.1}>0) transforms((,newability[counter(1/1.-1) all(this) ],newability[create(Zombie:Creature Zombie:2/2:black) controller])) forever
auto=@movedto(*|stack):this(counter{1/1.1}>0) transforms((,newability[counter(1/1.-1) all(this) ],newability[_ZOMBIETOKEN_ controller])) forever
text=Noosegraf Mob enters the battlefield with five +1/+1 counters on it. -- Whenever a player casts a spell, remove a +1/+1 counter from Noosegraf Mob. If you do, put a 2/2 black Zombie creature token onto the battlefield.
mana={4}{B}{B}
type=Creature
@@ -81396,7 +81388,7 @@ type=Enchantment
[card]
name=Oath of Liliana
auto=ability$!name(sacrifice) notatarget(creature|mybattlefield) sacrifice !$ opponent
auto=@each endofturn:if type(planeswalker[fresh]|mybattlefield)~morethan~0 then create(Zombie:Creature Zombie:2/2:black)
auto=@each endofturn:if type(planeswalker[fresh]|mybattlefield)~morethan~0 then _ZOMBIETOKEN_
text=When Oath of Liliana enters the battlefield, each opponent sacrifices a creature. -- At the beginning of each end step, if a planeswalker entered the battlefield under your control this turn, put a 2/2 black Zombie creature token onto the battlefield.
mana={2}{B}
type=Legendary Enchantment
@@ -84395,7 +84387,7 @@ toughness=2
name=Paragon of Gathering Mists
auto=lord(other creature[blue]|myBattlefield) 1/1
auto={U}{T}:target(other creature[blue]|myBattlefield):flying ueot
text=Other blue creatures you control get +1/+1. -- {G}{T}: Another target blue creature you control gains flying until end of turn.
text=Other blue creatures you control get +1/+1. -- {U}{T}: Another target blue creature you control gains flying until end of turn.
mana={3}{U}
type=Creature
subtype=Human Wizard
@@ -84416,8 +84408,8 @@ toughness=2
[card]
name=Paragon of Open Graves
auto=lord(other creature[black]|myBattlefield) 1/1
auto={1}{B}{T}:target(other creature[black]|myBattlefield):deathtouch ueot
text=Other black creatures you control get +1/+1. -- {1}{B}{T}: Another target black creature you control gains deathtouch until end of turn.
auto={2}{B}{T}:target(other creature[black]|myBattlefield):deathtouch ueot
text=Other black creatures you control get +1/+1. -- {2}{B}{T}: Another target black creature you control gains deathtouch until end of turn.
mana={3}{B}
type=Creature
subtype=Skeleton Warrior
@@ -88252,7 +88244,7 @@ subtype=Aura
name=Preeminent Captain
abilities=First Strike
auto=_ATTACKING_target(creature[soldier]|myhand) readytofight
text=Whenever Preeminent Captain attacks, you may put a Soldier creature card from your hand onto the battlefield tapped and attacking.
text=First strike (This creature deals combat damage before creatures without first strike.) -- Whenever Preeminent Captain attacks, you may put a Soldier creature card from your hand onto the battlefield tapped and attacking.
mana={2}{W}
type=Creature
subtype=Kithkin Soldier
@@ -92053,27 +92045,27 @@ toughness=3
[/card]
[card]
name=Rashmi, Eternities Crafter
auto=@movedto(*[-land;manacost=1]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<1]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=2]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<2]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=3]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<3]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=4]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<4]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=5]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<5]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=6]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<6]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=7]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<7]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=8]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<8]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=9]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<9]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=10]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<10]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=11]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<11]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=12]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<12]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=13]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<13]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=14]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<14]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=15]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<15]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=16]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<16]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=17]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<17]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=18]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<18]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=19]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<19]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=20]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<20]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=21]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<21]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=1]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=0]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=2]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=1]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=3]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=2]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=4]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=3]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=5]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=4]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=6]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=5]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=7]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=6]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=8]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=7]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=9]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=8]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=10]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=9]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=11]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=10]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=12]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=11]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=13]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=12]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=14]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=13]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=15]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=14]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=16]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=15]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=17]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=16]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=18]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=17]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=19]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=18]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=20]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=19]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
auto=@movedto(*[-land;manacost=21]|mystack) restriction{thisturn(*|mystack)~lessthan~1} turnlimited:reveal:1 revealzone(mylibrary) optionone name(choose card) target(*[-land;manacost<=20]|reveal) moveto(myexile) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put in hand) all(*|reveal) moveto(ownerhand) optiontwoend afterrevealed all(tobecast|myexile) moveto(myexile) and!( activate castcard(normal) )! afterrevealedend revealend
text=Whenever you cast your first spell each turn, reveal the top card of your library. If it's a nonland card with mana value less than that spell's, you may cast it without paying its mana cost. If you don't cast the revealed card, put it into your hand.
mana={2}{G}{U}
type=Legendary Creature
@@ -92126,7 +92118,7 @@ auto=this(counter{0/0.13.Charge}=) {T}{S}:destroy all(*[-land;manacost=13])
auto=this(counter{0/0.14.Charge}=) {T}{S}:destroy all(*[-land;manacost=14])
auto=this(counter{0/0.15.Charge}=) {T}{S}:destroy all(*[-land;manacost=15])
auto=this(counter{0/0.16.Charge}=) {T}{S}:destroy all(*[-land;manacost=16])
text={T}: Put a charge counter on Grindclock. -- {T}: Sacrifice Ratchet Bomb: Destroy each nonland permanent with mana value equal to the number of charge counters on Ratchet Bomb.
text={T}: Put a charge counter on Ratchet Bomb. -- {T}: Sacrifice Ratchet Bomb: Destroy each nonland permanent with mana value equal to the number of charge counters on Ratchet Bomb.
mana={2}
type=Artifact
[/card]
@@ -94475,7 +94467,7 @@ type=Enchantment
name=Restless Apparition
abilities=persist
auto={WB}{WB}{WB}:3/3
text={W/B}{W/B}{W/B}: Restless Apparition gets +3/+3 until end of turn. -- Persist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owners control with a -1/-1 counter on it.)
text={W/B}{W/B}{W/B}: Restless Apparition gets +3/+3 until end of turn. -- Persist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.)
mana={WB}{WB}{WB}
type=Creature
subtype=Spirit
@@ -109738,7 +109730,7 @@ name=Soul of New Phyrexia
abilities=trample
auto={5}:all(*|mybattlefield) indestructible ueot
autograveyard={5}{E}:all(*|mybattlefield) indestructible ueot
text=Trample. -- {5}:Permanents you control gain indestructible until end of turn. -- {5}:Permanents you control gain indestructible until end of turn.
text=Trample. -- {5}:Permanents you control gain indestructible until end of turn. -- {5}, Exile Soul of New Phyrexia from your graveyard: Permanents you control gain indestructible until end of turn.
mana={6}
type=Artifact Creature
subtype=Phyrexian Avatar
@@ -125868,7 +125860,7 @@ type=Instant
[/card]
[card]
name=Underhanded Designs
auto=@movedTo(artifact|myBattlefield):may pay[[{1}]] && life:-1 opponent && life:1 controller
auto=@movedTo(artifact|myBattlefield):pay[[{1}]] && life:-1 opponent && life:1 controller
auto={1}{B}{S}:destroy target(creature) restriction{type(artifact|mybattlefield)~morethan~1}
text=Whenever an artifact enters the battlefield under your control, you may pay {1}. If you do, each opponent loses 1 life and you gain 1 life. -- {1}{B}, Sacrifice Underhanded Designs: Destroy target creature. Activate this ability only if you control two or more artifacts.
mana={1}{B}
@@ -132058,7 +132050,7 @@ type=Instant
name=Warlord's Axe
auto={4}:equip
auto=teach(creature) 3/1
text=Equipped creature gets +3/+1.
text=Equipped creature gets +3/+1. -- Equip {4} ({4}: Attach to target creature you control. Equip only as a sorcery.)
mana={3}
type=Artifact
subtype=Equipment

View File

@@ -107,7 +107,7 @@ subtype=Ajani
[card]
name=Ajani, Strength of the Pride
auto=counter(0/0,5,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Gain life equal to planeswalkers and creatures) life:type:creature:myBattlefield controller && life:type:planeswalker:myBattlefield controller
auto={C(0/0,1,Loyalty)}:name(+1: Gain life equal to planeswalkers and creatures) life:type:*[creature;planeswalker]:myBattlefield controller
auto={C(0/0,-2,Loyalty)}:name(-2: Create Ajani's Pridemate) token(Ajani's Pridemate)
auto={C(0/0,0,Loyalty)}:name(-0: Exile Ajani and creatures opponent) if compare(lifetotalminusstartinglifeminusend)~morethan~14 then moveto(exile) all(this) && moveto(exile) all(*[creature;artifact]|opponentbattlefield)
text=+1: You gain life equal to the number of creatures you control plus the number of planeswalkers you control. -- -2: Create a 2/2 white Cat Soldier creature token named Ajani's Pridemate with "Whenever you gain life, put a +1/+1 counter on Ajani's Pridemate." -- 0: If you have at least 15 life more than your starting life total, exile Ajani, Strength of the Pride and each artifact and creature your opponents control.
@@ -562,7 +562,7 @@ subtype=Chandra
name=Chandra, Hope's Beacon
auto=counter(0/0,5,loyalty)
auto=@movedTo(*[instant;sorcery]|mystack) turnlimited:name(Copy spell) name(Copy spell) all(trigger[to]) transforms((,newability[name(Copy spell) activate castcard(copied noevent)])) oneshot
auto={C(0/0,+2,Loyalty)}:name(+2: Add 2 mana) thisforeach(variable{2}) ability$!name(Choose one) choice name(Add white) add{W} _ choice name(Add blue) add{U} _ choice name(Add red) add{R} _ choice name(Add green) add{G} _ choice name(Add black) add{B}!$ controller
auto={C(0/0,+2,Loyalty)}:name(+2: Add 2 mana) thisforeach(variable{2}) ability$!name(Choose one) choice name(Add white) add{W} _ choice name(Add blue) add{U} _ choice name(Add red) add{B} _ choice name(Add green) add{R} _ choice name(Add black) add{G}!$ controller
auto={C(0/0,+1,Loyalty)}:name(+1: Exile top 5 cards) all(*[zpos<=5]|mylibrary) moveto(myexile) and!( if cantargetcard(*[instant;sorcery]|*) then transforms((,newability[canplayfromexile])) ueot )!
auto={C(0/0,-1,Loyalty)}:name(-1: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:1!$ controller
auto={C(0/0,-1,Loyalty)}:name(-1: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:1!$ controller
@@ -1113,7 +1113,7 @@ name=Garruk, Unleashed
auto=counter(0/0,4,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Target creature gets +3/+3 and trample) target(creature) 3/3 ueot && trample ueot
auto={C(0/0,-2,Loyalty)}:name(-2: Create a Beast 3/3) _BEASTTOKEN_ && transforms((,newability[if type(creature|opponentbattlefield)~morethan~type(creature|mybattlefield) then counter(0/0,1,Loyalty) all(this)])) oneshot
auto={C(0/0,-7,Loyalty)}:name(-7: Emblem: "Search a creature") emblem transforms((,newability[@each my endofturn:may moveTo(myBattlefield) target(creature|myLibrary) && shuffle])) forever dontremove
auto={C(0/0,-7,Loyalty)}:name(-7: Emblem: "Search a creature") emblem transforms((,newability[@each my endofturn:may target(creature|myLibrary) moveTo(myBattlefield) && shuffle])) forever dontremove
text=+1: Up to one target creature gets +3/+3 and gains trample until end of turn. -- 2: Create a 3/3 green Beast creature token. Then if an opponent controls more creatures than you, put a loyalty counter on Garruk, Unleashed. -- 7: You get an emblem with "At the beginning of your end step, you may search your library for a creature card, put it onto the battlefield, then shuffle your library."
mana={2}{G}{G}
type=Legendary Planeswalker
@@ -2117,7 +2117,7 @@ subtype=Lolth
name=Lord Windgrace
abilities=canbecommander
auto=counter(0/0,5,Loyalty)
auto={C(0/0,2,Loyalty)}:name(+2: Discard land and draw) target(land|myhand) reject and!( draw:2 controller )!
auto={C(0/0,2,Loyalty)}:restriction{type(land|myhand)~morethan~0} name(+2: Discard land and draw) target(land|myhand) reject and!( draw:2 controller )!
auto={C(0/0,2,Loyalty)}:name(+2: Discard non-land and draw) target(*[-land]|myhand) reject and!( draw:1 controller )!
auto={C(0/0,-3,Loyalty)}:name(-3: Return up to two lands from graveyard) target(<upto:2>*[land]|myGraveyard) moveTo(myBattlefield)
auto={C(0/0,-11,Loyalty)}:name(-11: Destroy and create cats) thisforeach(variable{6}) ability$!name(Choose one) choice name(Destroy and create cat) target(*[-land]|battlefield) destroy && token(Cat,Creature Cat,2/2,green,forestwalk) _ choice name(Just create cat) token(Cat,Creature Cat,2/2,green,forestwalk)!$ controller
@@ -3762,8 +3762,8 @@ subtype=Vraska
[card]
name=Vraska, Swarm's Eminence
auto=counter(0/0,5,loyalty)
auto=@combatdamaged(player,planeswalker) from(creature[deathtouch]|myBattlefield):all(trigger[to]) counter(1/1)
auto={C(0/0,-2,Loyalty)}:name(-2: Create a 1/1 Assassin) token(Assassin Vra)
auto=@combatdamaged(player,planeswalker) from(*[deathtouch]|myBattlefield):all(trigger[from]) counter(1/1)
auto={C(0/0,-2,Loyalty)}:name(-2: Create a 1/1 Assassin) create(Assassin:Creature Assassin:1/1:black:deathtouch) and!( transforms((,newability[@damaged(planeswalker) from(this):all(trigger[to]) destroy])) forever )!
text=Whenever a creature you control with deathtouch deals damage to a player or planeswalker, put a +1/+1 counter on that creature. -- -2: Create a 1/1 black Assassin creature token with deathtouch and "Whenever this creature deals damage to a planeswalker, destroy that planeswalker."
mana={2}{BG}{BG}
type=Legendary Planeswalker

View File

@@ -434,6 +434,7 @@ Player * Rules::loadPlayerRandomCommander(GameObserver* observer, int isAI)
cmdTempDeck->addRandomCards(1, 0, 0, -1, "legendary");
myCommandZone = NEW DeckDataWrapper(cmdTempDeck);
commander = myCommandZone->getCard(0, true);
delete myCommandZone; // Clean up to avoid memory leaks
}
stringstream cid;
@@ -452,11 +453,10 @@ Player * Rules::loadPlayerRandomCommander(GameObserver* observer, int isAI)
if(colors.data()[0] != 0) { colors.insert(colors.begin(),0); }
// Add basic lands
int numLands = 40;
// Add lands
int numLands = colors.size() > 1 ? 40 / (colors.size() - 1) : 40;
if(colors.size() > 1)
{
numLands /= colors.size() - 1;
for (unsigned int i = 1; i < colors.size(); i++)
{
tempDeck->addRandomCards(numLands, 0, 0, -1, lands[colors.data()[i]].c_str());