diff --git a/projects/mtg/bin/Res/sets/primitives/_macros.txt b/projects/mtg/bin/Res/sets/primitives/_macros.txt index c1897be04..175e3da62 100644 --- a/projects/mtg/bin/Res/sets/primitives/_macros.txt +++ b/projects/mtg/bin/Res/sets/primitives/_macros.txt @@ -177,7 +177,7 @@ #AUTO_DEFINE _RIOT_ movedTo(this|myBattlefield):transforms((,newability[ability$! name(Choose counter or ability) choice name(Put a +1/+1 counter) counter(1/1) target(creature) _ choice name(Gains Haste) haste target(creature) forever !$ controller])) # Learn -#AUTO_DEFINE _LEARN_ name(Learn) transforms((,newability[if type(*[lesson]|mysideboard)~morethan~0 then choice name(Put lesson in hand) name(Put lesson in hand) target(*[lesson]|mysideboard) moveto(myhand)],newability[if type(*|myhand)~morethan~0 then choice name(Discard and draw) name(Discard and draw) target(*|myhand) reject and!(draw:1)!],newability[if type(Retriever Phoenix|mygraveyard)~morethan~0 then choice name(Return a Retriever Phoenix) name(Return a Retriever Phoenix) target(Retriever Phoenix|mygraveyard) moveto(myBattlefield)],newability[choice name(Don't learn) donothing])) oneshot +#AUTO_DEFINE _LEARN_ name(Learn) transforms((,newability[if type(*[lesson]|mysideboard)~morethan~0 then choice name(Put lesson in hand) name(Put lesson in hand) target(*[lesson]|mysideboard) moveto(myhand)],newability[if type(*|myhand)~morethan~0 then choice name(Discard and draw) name(Discard and draw) target(*|myhand) reject and!(draw:1)!],newability[if type(Retriever Phoenix|mygraveyard)~morethan~0 then choice name(Return a Retriever Phoenix) name(Return a Retriever Phoenix) target(Retriever Phoenix|mygraveyard) moveto(myBattlefield)],newability[choice name(Don't learn) donothing])) oneshot controller # Spectacle, if an opponent lost life this turn #AUTO_DEFINE _SPECTACLE_ compare(oplifelost)~morethan~0 diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index 7d2fee5f6..350c5a4c0 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -3689,7 +3689,7 @@ type=Artifact name=Arcane Subtraction target=creature auto=-4/0 ueot -auto=_LEARN_ controller +auto=_LEARN_ text=Target creature gets -4/-0 until end of turn. -- Learn. (You may reveal a Lesson card you own from outside the game and put it into your hand, or discard a card to draw a card.) mana={1}{U} type=Instant @@ -9322,7 +9322,7 @@ subtype=Equipment name=Blade of Shared Souls auto=teach(creature) transforms((,newability[if cantargetcard(*[-bladed]|*) then may name(Become a copy) name(Become a copy) target(other creature|mybattlefield) copy and!( all(this) transforms((bladed,newability[this(cantargetcard(*[bladed]|*) {0}:name(Copy effect ends) name(Copy effect ends) flip(myorigname) undocpy])) forever )!])) auto={2}:equip -auto=livingweapontoken(Rebel,Creature Rebel,2/2) +auto=livingweapontoken(Rebel,Creature Rebel,2/2,red) text=For Mirrodin! (When this Equipment enters the battlefield, create a 2/2 red Rebel creature token, then attach this to it.) -- Whenever Blade of Shared Souls becomes attached to a creature, for as long as Blade of Shared Souls remains attached to it, you may have that creature become a copy of another target creature you control. -- Equip {2} mana={2}{U} type=Artifact @@ -9444,7 +9444,7 @@ name=Bladehold War-Whip #MISSING: Equip abilities you activate of other Equipment cost {1} less to activate. auto=teach(creature) double strike auto={3}{R}{W}:equip -auto=livingweapontoken(Rebel,Rebel,2/2,red) +auto=livingweapontoken(Rebel,Creature Rebel,2/2,red) text=For Mirrodin! (When this Equipment enters the battlefield, create a 2/2 red Rebel creature token, then attach this to it.) -- Equip abilities you activate of other Equipment cost {1} less to activate. -- Equipped creature has double strike. -- Equip {3}{R}{W} mana={1}{R}{W} type=Artifact @@ -12845,7 +12845,7 @@ toughness=3 [/card] [card] name=Bristly Bill, Spine Sower -auto=@movedTo(land|myBattlefield):target(creature) counter(1/1) +auto=@movedTo(land|myBattlefield):counter(1/1) target(creature) auto={3}{G}{G}:transforms((,newability[thisforeach(counter{1/1.1}) counter(1/1) all(this)])) oneshot all(creature|myBattlefield) text=Landfall - Whenever a land enters the battlefield under your control, put a +1/+1 counter on target creature. -- {3}{G}{G}: Double the number of +1/+1 counters on each creature you control. mana={1}{G} @@ -16124,7 +16124,7 @@ backside=Chandra, Roaring Flame restriction=compare(isflipped)~equalto~0 anyzone={0}:doubleside(backside) auto=@movedTo(*[red]|mystack) restriction{compare(isflipped)~equalto~0}:untap -auto={T}:name(Deal 1 damage) target(player) damage:1 && if compare(totaldmg)~morethan~2 then all(this) moveto(exile) and!( moveto(ownerbattlefield) and!( flip(backside) )! )! +auto={T}:name(Deal 1 damage) target(player) damage:1 && if compare(oplifelost)~morethan~2 then all(this) moveto(exile) and!( moveto(ownerbattlefield) and!( flip(backside) )! )! text=Whenever you cast a red spell, untap Chandra, Fire of Kaladesh. -- {T}: Chandra, Fire of Kaladesh deals 1 damage to target player. If Chandra has dealt 3 or more damage this turn, exile her, then return her to the battlefield transformed under her owner's control. // Chandra, Roaring Flame mana={1}{R}{R} type=Legendary Creature @@ -20905,7 +20905,7 @@ type=Artifact [card] name=Crown of Gondor auto=@movedto(creature[legendary]|mybattlefield) restriction{compare(pmonarch)~equalto~0,compare(omonarch)~equalto~0}:name(Becomes monarch) ability$!_MONARCH_CONTROLLER_!$ controller -auto=this(variable{pmonarch}>0) {1}:name(Equip as monarch) name(Equip as monarch) name(Equip as monarch) rehook target(creature|mybattlefield) +auto=this(variable{pmonarch}>0) {1}:name(Equip as monarch) name(Equip as monarch) name(Equip as monarch) rehook target(creature|mybattlefield) asSorcery auto={4}:equip auto=teach(creature) type:creature:mybattlefield/type:creature:mybattlefield nonstatic text=Equipped creature gets +1/+1 for each creature you control. -- When a legendary creature enters the battlefield under your control, if there is no monarch, you become the monarch. -- Equip {4}. This ability costs {3} less to activate if you're the monarch. @@ -32546,6 +32546,7 @@ type=Instant [card] name=Expel from Orazca target=*[-land] +auto=_ASCEND_ controller auto=choice name(owner's hand) moveTo(ownerHand) auto=_CITY'S_BLESSING_ choice name(owner's library) moveTo(ownerLibrary) text=Ascend (If you control ten or more permanents, you get the city's blessing for the rest of the game.) -- Return target nonland permanent to its owner's hand. If you have the city's blessing, you may put that permanent on top of its owner's library instead. @@ -35697,7 +35698,7 @@ type=Artifact name=Fists of Flame target=creature auto=draw:1 controller -auto=thisforeach(variable{pdrewcount}>0) 1/1 ueot && trample ueot +auto=thisforeach(variable{pdrewcount}>0) 1/0 ueot && trample ueot text=Draw a card. Until end of turn, target creature gains trample and gets +1/+0 for each card you've drawn this turn. mana={1}{R} type=Instant @@ -47593,7 +47594,7 @@ toughness=2 [card] name=Holy Frazzle-Cannon auto={1}:equip -auto=teach(creature) transforms((,newability[_ATTACKING_name(Put 1/1 counter) all(other *[creature;share!types!]|myBattlefield) counter(1/1)])) +auto=teach(creature) transforms((,newability[_ATTACKING_name(Put 1/1 counter) all(*[creature;share!types!]|myBattlefield) counter(1/1)])) text=Whenever equipped creature attacks, put a +1/+1 counter on that creature and each other creature you control that shares a creature type with it. -- Equip {1} color=black,white type=Artifact @@ -49486,7 +49487,7 @@ toughness=1 name=Illustrious Wanderglyph auto=_ASCEND_ auto=@movedTo(*|myBattlefield) restriction{type(City's Blessing|mybattlefield)~equalto~0}:_ASCEND_ -auto=_CITY'S_BLESSING_ lord(other creature|myBattlefield) +2/+2 +auto=_CITY'S_BLESSING_ lord(other creature[artifact]|myBattlefield) +2/+2 auto=@each upkeep:_GNOMETOKEN_ text=Ascend (If you control ten or more permanents, you get the city's blessing for the rest of the game.) -- Other artifact creatures you control get +2/+2 as long as you have the city's blessing. -- At the beginning of each upkeep, create a 1/1 colorless Gnome artifact creature token. mana={4}{W} @@ -49760,7 +49761,7 @@ subtype=Aura [card] name=Imperial Aerosaur abilities=flying -auto=target(other creature|mybattlefield) flying ueot && 1/1 ueot +auto=target(other creature|mybattlefield) transforms((,newability[1/1],newability[flying])) ueot text=Flying -- When Imperial Aerosaur enters the battlefield, another target creature you control gets +1/+1 and gains flying until end of turn. mana={3}{W} type=Creature @@ -55734,8 +55735,9 @@ name=Kiora Bests the Sea God auto=token(Kraken Omi) auto=counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore) -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}) tap all(*[-land]|opponentbattlefield) && frozen -auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) MoveTo(myBattlefield) target(*|opponentbattlefield) && untap && sacrifice(this) +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) all(*[-land]|opponentbattlefield) transforms((,newability[tap],newability[freeze])) ueot +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) target(*|opponentbattlefield) moveTo(myBattlefield) and!(untap)! +auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) sacrifice(this) text=(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.) -- I - Create an 8/8 blue Kraken creature token with hexproof. -- II - Tap all nonland permanents target opponent controls. They don't untap during their controller's next untap step. -- III - Gain control of target permanent an opponent controls. Untap it. mana={5}{U}{U} type=Enchantment @@ -68509,10 +68511,8 @@ toughness=1 [card] name=Neverwinter Hydra abilities=trample -auto=if compare(halfpaid)~morethan~0 then counter(1/1) -auto=@dierolled(this) from(controller) once:counter(1/1,-1) auto=_WARD_(4) -auto=thisforeach(variable{halfpaid}>0) ability$!name(Roll a d6) name(Roll a d6) all(mysource) rolld6 6 winability counter(1/1.lastrollresult) winabilityend loseability counter(1/1.lastrollresult) loseabilityend rolld6end!$ controller +auto=thisforeach(variable{halfpaid}) all(this) rolld6 6 winability counter(1/1,lastrollresult) winabilityend loseability counter(1/1,lastrollresult) loseabilityend rolld6end text=As Neverwinter Hydra enters the battlefield, roll X d6. It enters with a number of +1/+1 counters on it equal to the total of those results. -- Trample -- Ward {4} (Whenever this creature becomes the target of a spell or ability an opponent controls, counter it unless that player pays {4}.) mana={X}{X}{G}{G} type=Creature @@ -77621,14 +77621,14 @@ type=Sorcery [card] name=Pteramander abilities=flying -auto={7}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~0} _ADAPT_(4) -auto={6}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~1} _ADAPT_(4) -auto={5}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~2} _ADAPT_(4) -auto={4}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~3} _ADAPT_(4) -auto={3}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~4} _ADAPT_(4) -auto={2}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~5} _ADAPT_(4) -auto={1}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~6} _ADAPT_(4) -auto={U}:restriction{type(*[instant;sorcery]|myGraveyard)~morethan~6} _ADAPT_(4) +auto={7}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~0} name(Adapt 4) this(counter{1/1}<1) transforms((,newability[counter(1/1.4)])) forever +auto={6}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~1} name(Adapt 4) this(counter{1/1}<1) transforms((,newability[counter(1/1.4)])) forever +auto={5}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~2} name(Adapt 4) this(counter{1/1}<1) transforms((,newability[counter(1/1.4)])) forever +auto={4}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~3} name(Adapt 4) this(counter{1/1}<1) transforms((,newability[counter(1/1.4)])) forever +auto={3}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~4} name(Adapt 4) this(counter{1/1}<1) transforms((,newability[counter(1/1.4)])) forever +auto={2}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~5} name(Adapt 4) this(counter{1/1}<1) transforms((,newability[counter(1/1.4)])) forever +auto={1}{U}:restriction{type(*[instant;sorcery]|myGraveyard)~equalto~6} name(Adapt 4) this(counter{1/1}<1) transforms((,newability[counter(1/1.4)])) forever +auto={U}:restriction{type(*[instant;sorcery]|myGraveyard)~morethan~6} name(Adapt 4) this(counter{1/1}<1) transforms((,newability[counter(1/1.4)])) forever text=Flying -- {7}{U}: Adapt 4. This ability costs {1} less to activate for each instant and sorcery card in your graveyard. (If this creature has no +1/+1 counters on it, put four +1/+1 counters on it.) mana={U} type=Creature @@ -94939,7 +94939,7 @@ subtype=Equipment [/card] [card] name=Soulstinger -auto=name(Put two -1/-1 counters) name(Put two -1/-1 counters) counter(-1/-1,2) target(creature) +auto=name(Put two -1/-1 counters) name(Put two -1/-1 counters) counter(-1/-1,2) target(creature|myBattlefield) auto=_DIES_this(counter{-1/-1}=1) ability$!name(Put -1/-1 counter) may name(Put -1/-1 counter) target(creature) counter(-1/-1)!$ controller auto=_DIES_this(counter{-1/-1}=2) ability$!name(Put -1/-1 counters) may name(Put -1/-1 counters) target(creature) counter(-1/-1,2)!$ controller auto=_DIES_this(counter{-1/-1}=3) ability$!name(Put -1/-1 counters) may name(Put -1/-1 counters) target(creature) counter(-1/-1,3)!$ controller @@ -97874,7 +97874,7 @@ subtype=Aura [card] name=Stonespeaker Crystal auto={T}:name(Add 2 mana) add{C}{C} -auto={2}{T}{S}:name(Draw and exile) transforms((,newability[draw:1 controller],newability[choice name(Exile opponent graveyard) all(*|opponentgraveyard) moveto(exile)],newability[choice name(Exile your graveyard) all(*|mygraveyard) moveto(exile)])) oneshot +auto={2}{T}{S}:name(Draw and exile) transforms((,newability[draw:1 controller],newability[choice name(Exile opponent graveyard) all(*|opponentgraveyard) moveto(exile)],newability[choice name(Exile your graveyard) all(*|mygraveyard) moveto(exile)],newability[choice name(Exile both graveyards) all(*|graveyard) moveto(exile)])) oneshot text={T}: Add {C}{C}. -- {2}, {T}, Sacrifice Stonespeaker Crystal: Exile any number of target players' graveyards. Draw a card. mana={4} type=Artifact diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index a5f19b2d6..224e3278b 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -2120,7 +2120,7 @@ toughness=3 [/card] [card] name=Akoum Flameseeker -auto={T(ally|myBattlefield)}{t}:may name(discard and draw) _DISCARD&DRAW_ +auto={T(ally|myBattlefield)}{t}:_DISCARD&DRAW_ text=Cohort -- {T}, Tap an untapped Ally you control: Discard a card. If you do, draw a card. mana={2}{R} type=Creature @@ -24677,7 +24677,7 @@ auto=bestow transforms((,newability[@targeted(this):all(trigger[to]) sacrifice]) auto=@targeted(this):all(trigger[to]) sacrifice auto=bestow bstw auto=bestow teach(creature) 4/4 -bestow={5}{w}{w} +bestow={3}{U}{U} text=Bestow {3}{U}{U} (If you cast this card for its bestow cost, it's an Aura spell with enchant creature. It becomes a creature again if it's not attached to a creature.) -- When Crystalline Nautilus becomes the target of a spell or ability, sacrifice it. -- Enchanted creature gets +4/+4 and has "When this creature becomes the target of a spell or ability, sacrifice it." mana={2}{U} type=Enchantment Creature @@ -107852,7 +107852,7 @@ toughness=1 [/card] [card] name=Slayer of the Wicked -auto=destroy target(vampire,werewolf,zombie) +auto=may destroy target(vampire,werewolf,zombie) text=When Slayer of the Wicked enters the battlefield, you may destroy target Vampire, Werewolf, or Zombie. mana={3}{W} type=Creature @@ -115074,7 +115074,7 @@ name=Stymied Hopes target=*|stack auto=transforms((,newability[pay[[{1}]] name(pay 1 mana) donothing?fizzle])) forever aicode=activate transforms((,newability[all(*[zpos<=1]|mylibrary) transforms((,newability[may name(Put on bottom of library) moveto(myreveal) and!( bottomoflibrary )!])) oneshot])) oneshot -auto=_SCRY1_ +auto=_SCRY1_ controller text=Counter target spell unless its controller pays {1}. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) mana={1}{U} type=Instant @@ -130243,18 +130243,6 @@ power=1 toughness=4 [/card] [card] -name=Volatile Rig -auto=_ENRAGE_flipacoin loseability sacrifice all(this) loseabilityend flipend -auto=_DIES_flipacoin loseability damage:4 all(creature) && damage:4 all(player) loseabilityend flipend -abilities=trample,mustattack -text=Trample -- Volatile Rig attacks each turn if able. -- Whenever Volatile Rig is dealt damage, flip a coin. If you lose the flip, sacrifice Volatile Rig. -- When Volatile Rig dies, flip a coin. If you lose the flip, it deals 4 damage to each creature and each player. -mana={4} -type=Artifact Creature -subtype=Construct -power=4 -toughness=4 -[/card] -[card] name=Volcanic Awakening abilities=storm auto=destroy target(land) diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index 50378cf6b..9990c964b 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -195,7 +195,8 @@ public: { return 0; } - //Creatures entering the battlefield don't cause abilities to trigger (e.g. "Hushbringer"). + //Creatures entering the battlefield don't cause abilities to trigger (e.g. "Hushbringer"). + //NOT WORKING if (e->card->isCreature() && (game->players[0]->game->battlefield->hasAbility(Constants::NOENTERTRG) || game->players[1]->game->battlefield->hasAbility(Constants::NOENTERTRG)) && (e->to == game->players[0]->game->battlefield || e->to == game->players[1]->game->battlefield)) {