From 92751a088f1e789cd422e33173514b2782bfe349 Mon Sep 17 00:00:00 2001 From: Eduardo MG Date: Mon, 9 Jan 2023 20:09:39 -0600 Subject: [PATCH] Bug fixes in primitives Coils of the Medusa crash Well of Knowledge Heraldic Banner Retributive Wand Valiant Rescuer Tormod, the Desecrator Angel of the Dawn Nylea's Huntmaster Heliod's Intervention --- .../bin/Res/sets/primitives/borderline.txt | 80 ++++++++++--------- projects/mtg/bin/Res/sets/primitives/mtg.txt | 2 +- 2 files changed, 45 insertions(+), 37 deletions(-) diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index e3772ecb1..566c68280 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -1978,8 +1978,8 @@ toughness=2 [card] name=Angel of the Dawn abilities=flying -auto=all(creature|myBattlefield)) 1/1 -auto=all(creature|myBattlefield)) vigilance +auto=all(creature|myBattlefield) 1/1 +auto=all(creature|myBattlefield) vigilance text=Flying -- When Angel of the Dawn enters the battlefield, creatures you control get +1/+1 and gain vigilance until end of turn. (Attacking doesn't cause them to tap.) mana={4}{W} type=Creature @@ -2802,11 +2802,11 @@ type=Land [/card] [card] name=Arcane Signet -auto=aslongas(*[iscommander&red]|myzones) {T}:add{R} auto=aslongas(*[iscommander&white]|myzones) {T}:add{W} -auto=aslongas(*[iscommander&green]|myzones) {T}:add{G} auto=aslongas(*[iscommander&blue]|myzones) {T}:add{U} auto=aslongas(*[iscommander&black]|myzones) {T}:add{B} +auto=aslongas(*[iscommander&red]|myzones) {T}:add{R} +auto=aslongas(*[iscommander&green]|myzones) {T}:add{G} text={T}: Add one mana of any color in your commander's color identity. mana={2} type=Artifact @@ -14075,7 +14075,7 @@ toughness=5 name=Coils of the Medusa target=creature auto=1/-1 -auto={S}:destroy target(creature[-wall,blocking]) +auto={S}:destroy target(creature[-wall;blocking]) text=Enchant creature -- Enchanted creature gets +1/-1. -- Sacrifice Coils of the Medusa: Destroy all non-Wall creatures blocking enchanted creature. mana={1}{B} type=Enchantment @@ -35524,7 +35524,7 @@ toughness=2 [/card] [card] name=Heliod's Intervention -auto=choice name(Destroy X artifacts and/or enchantments) destroy:X target artifact,enchantment +auto=choice name(Destroy X artifacts and/or enchantments) destroy:X target(artifact,enchantment) auto=choice name(Target player gains twice X life) target(player) life:X && life:X text=Choose one -- Destroy X target artifacts and/or enchantments. -- Target player gains twice X life. mana={X}{W}{W} @@ -35799,7 +35799,7 @@ type=Artifact [card] name=Heraldic Banner auto=chooseacolor transforms((,newability[{T}:add{chosencolor}],newability[@movedto(*[chosencolor]|stack):life:1 controller])) forever chooseend -auto=lord(creature[chosencolor]|myBattlefield) 1/0 +auto=lord(*[chosencolor]|myBattlefield) 1/0 text=As Heraldic Banner enters the battlefield, choose a color. -- Creatures you control of the chosen color get +1/+0. -- {T}: Add one mana of the chosen color. mana={3} type=Artifact @@ -47260,7 +47260,7 @@ toughness=4 [card] name=Mangara, the Diplomat abilities=lifelink -auto=@combat(attacking) source(creature|opponentBattlefield) if type(creature[attacking]|opponentBattlefield)~morethan~1}:draw:1 controller limit:1 +auto=@combat(attacking) source(creature|opponentBattlefield) if type(creature[attacking]|opponentBattlefield)~morethan~1} turnlimited:draw:1 controller auto=@movedto(*|opponentStack) restriction{thisturn(*|opponentStack)~equalto~1}:draw:1 controller text=Lifelink -- Whenever an opponent attacks with creatures, if two or more of those creatures are attacking you and/or planeswalkers you control, draw a card. -- Whenever an opponent casts their second spell each turn, draw a card. mana={3}{W} @@ -52834,7 +52834,7 @@ toughness=3 [/card] [card] name=Nylea's Huntmaster -auto=target(creature|myBattlefield) type:manaG:myBattlefield/type:manaG:myBattlefield ueot +auto=target(creature|myBattlefield) type:manaG:myBattlefield/0 ueot text=When Nylea's Huntmaster enters the battlefield, target creature you control gets +X/+0 until end of turn, where X is your devotion to green. (Each {G} in the mana costs of permanents you control counts towards your devotion to green.) mana={3}{G} type=Creature @@ -55427,7 +55427,7 @@ auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzon auto={9999}:equip other={G}{U} name(Mutate) auto=ifnot paid(alternative) then transforms((,newability[becomes(,,blue,green)])) forever all(this) -auto=transforms((,newability[name(Look top card) {1}{T}:ability$!name(Reveal) reveal:1 optionone if type(*[-land]|reveal)~morethan~0 then name(Put card back to library) name(Put card back to library) target(<1>*|reveal) moveto(mylibrary) else name(May move to battlefield) target(*[land]|reveal) moveto(mybattlefield) optiononeend optiontwo name(Put land in hand) target(<1>*[land]|reveal) moveto(myhand) optiontwoend revealend!$ controller])) +auto=transforms((,newability[name(Look top card) {1}{T}:ability$!name(Reveal) reveal:1 optionone if type(*[-land]|reveal)~morethan~0 then name(put card into your hand) name(put card into your hand) target(*|reveal) moveto(myhand) else name(May move to battlefield) target(*[land]|reveal) moveto(mybattlefield) optiononeend optiontwo name(Put land in hand) target(<1>*[land]|reveal) moveto(myhand) optiontwoend revealend!$ controller])) auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) && becomes(,,blue,green) forever auto=if paid(alternative) then name(Mutate Under) this(mutations<1) name(Mutate Under) choice name(Mutate Under) mutateunder target(other creature[-human]|mybattlefield) text=Mutate {G}{U} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.) -- {1}, {T}: Look at the top card of your library. If it's a land card, you may put it onto the battlefield. If you don't put the card onto the battlefield, put it into your hand. @@ -58680,8 +58680,8 @@ type=Sorcery [/card] [card] name=Psychogenic Probe -auto=@shuffledfoeof(player):name(Deal 2 damage) damage:2 opponent -auto=@shuffledof(player):name(Deal 2 damage) damage:2 controller +auto=@shuffledfoeof(player):name(Deal 2 damage) damage:2 opponent oneshot +auto=@shuffledof(player):name(Deal 2 damage) damage:2 controller oneshot text=Whenever a spell or ability causes a player to shuffle his or her library, Psychogenic Probe deals 2 damage to him or her. mana={2} type=Artifact @@ -58904,16 +58904,16 @@ toughness=2 [/card] [card] name=Pyramid of the Pantheon -auto={2}{T}{counter(0/0,1,brick)}:add{G} -auto={2}{T}{counter(0/0,1,brick)}:add{B} auto={2}{T}{counter(0/0,1,brick)}:add{W} -auto={2}{T}{counter(0/0,1,brick)}:add{R} auto={2}{T}{counter(0/0,1,brick)}:add{U} -auto=this(counter{0/0.1.brick}>=3) {T}:add{G}{G}{G} -auto=this(counter{0/0.1.brick}>=3) {T}:add{B}{B}{B} +auto={2}{T}{counter(0/0,1,brick)}:add{B} +auto={2}{T}{counter(0/0,1,brick)}:add{R} +auto={2}{T}{counter(0/0,1,brick)}:add{G} auto=this(counter{0/0.1.brick}>=3) {T}:add{W}{W}{W} -auto=this(counter{0/0.1.brick}>=3) {T}:add{R}{R}{R} auto=this(counter{0/0.1.brick}>=3) {T}:add{U}{U}{U} +auto=this(counter{0/0.1.brick}>=3) {T}:add{B}{B}{B} +auto=this(counter{0/0.1.brick}>=3) {T}:add{R}{R}{R} +auto=this(counter{0/0.1.brick}>=3) {T}:add{G}{G}{G} text={2}, {T}: Add one mana of any color to your mana pool. Put a brick counter on Pyramid of the Pantheon. -- {T}: Add three mana of any one color to your mana pool. Activate this ability only if there are three or more brick counters on Pyramid of the Pantheon. mana={1} type=Artifact @@ -62050,8 +62050,8 @@ type=Sorcery [/card] [card] name=Retributive Wand -auto={3}{T}:damage 1 target(player,creature,planeswalker) -auto=_DIES_damage 5 target(player,creature,planeswalker) +auto={3}{T}:damage:1 target(player,creature,planeswalker) +auto=_DIES_damage:5 target(player,creature,planeswalker) text={3}, {T}: Retributive Wand deals 1 damage to any target. -- When Retributive Wand is put into a graveyard from the battlefield, it deals 5 damage to any target. mana={3} type=Artifact @@ -64379,6 +64379,7 @@ subtype=Aura Rune [/card] [card] name=Rune of Protection: Artifacts +abilities=cycling auto={W}:name(prevent damage) notatarget(artifact|battlefield,stack,hand,graveyard) preventalldamage to(controller) from(mytgt) ueot autohand=__CYCLING__({2}) text={W}: The next time an artifact source of your choice would deal damage to you this turn, prevent that damage. -- Cycling {2} ({2}, Discard this card: Draw a card.) @@ -64387,6 +64388,7 @@ type=Enchantment [/card] [card] name=Rune of Protection: Black +abilities=cycling auto={W}:name(prevent damage) notatarget(*[black]|battlefield,stack,hand,graveyard) preventalldamage to(controller) from(mytgt) ueot autohand=__CYCLING__({2}) text={W}: The next time a black source of your choice would deal damage to you this turn, prevent that damage. -- Cycling {2} ({2}, Discard this card: Draw a card.) @@ -64395,6 +64397,7 @@ type=Enchantment [/card] [card] name=Rune of Protection: Blue +abilities=cycling auto={W}:name(prevent damage) notatarget(*[blue]|battlefield,stack,hand,graveyard) preventalldamage to(controller) from(mytgt) ueot autohand=__CYCLING__({2}) text={W}: The next time a blue source of your choice would deal damage to you this turn, prevent that damage. -- Cycling {2} ({2}, Discard this card: Draw a card.) @@ -64403,6 +64406,7 @@ type=Enchantment [/card] [card] name=Rune of Protection: Green +abilities=cycling auto={W}:name(prevent damage) notatarget(*[green]|battlefield,stack,hand,graveyard) preventalldamage to(controller) from(mytgt) ueot autohand=__CYCLING__({2}) text={W}: The next time a green source of your choice would deal damage to you this turn, prevent that damage. -- Cycling {2} ({2}, Discard this card: Draw a card.) @@ -64411,6 +64415,7 @@ type=Enchantment [/card] [card] name=Rune of Protection: Lands +abilities=cycling auto={W}:name(prevent damage) notatarget(land|battlefield,stack,hand,graveyard) preventalldamage to(controller) from(mytgt) ueot autohand=__CYCLING__({2}) text={W}: The next time a land source of your choice would deal damage to you this turn, prevent that damage. -- Cycling {2} ({2}, Discard this card: Draw a card.) @@ -64419,6 +64424,7 @@ type=Enchantment [/card] [card] name=Rune of Protection: Red +abilities=cycling auto={W}:name(prevent damage) notatarget(*[red]|battlefield,stack,hand,graveyard) preventalldamage to(controller) from(mytgt) ueot autohand=__CYCLING__({2}) text={W}: The next time a red source of your choice would deal damage to you this turn, prevent that damage. -- Cycling {2} ({2}, Discard this card: Draw a card.) @@ -64427,6 +64433,7 @@ type=Enchantment [/card] [card] name=Rune of Protection: White +abilities=cycling auto={W}:name(prevent damage) notatarget(*[white]|battlefield,stack,hand,graveyard) preventalldamage to(controller) from(mytgt) ueot autohand=__CYCLING__({2}) text={W}: The next time a white source of your choice would deal damage to you this turn, prevent that damage. -- Cycling {2} ({2}, Discard this card: Draw a card.) @@ -64503,7 +64510,7 @@ abilities=flying backside=Krothuss, Lord of the Deep restriction=compare(isflipped)~equalto~0 anyzone={0}:doubleside(backside) -auto=name(Return creature) target(creature|mygraveyard) moveto(mylibrary) +auto=may name(Return creature) target(creature|mygraveyard) moveto(mylibrary) auto=@each my upkeep:name(Reveal top card) all(*[zpos=1]|mylibrary) moveto(myhand) and!( transforms((,newability[choice name(Put back) moveto(mylibrary) and!( if cantargetcard(creature[manacost>=6]|*) then name(Transform Runo Stromkirk) name(Transform Runo Stromkirk) target(Runo Stromkirk|mybattlefield) flip(backside) )!])) oneshot )! text=Flying -- When Runo Stromkirk enters the battlefield, put up to one target creature card from your graveyard on top of your library. -- At the beginning of your upkeep, look at the top card of your library. You may reveal that card. If a creature card with mana value 6 or greater is revealed this way, transform Runo Stromkirk. // Krothuss, Lord of the Deep mana={1}{U}{B} @@ -69666,7 +69673,7 @@ toughness=1 [card] name=Simic Ascendancy auto={1}{G}{U}:counter(1/1) target(creature|myBattlefield) -auto=@counter(1/1) target(creature|myBattlefield):counter(0/0,1,growth) all(this) +auto=@counteradded(1/1) target(creature|myBattlefield):counter(0/0,1,growth) all(this) auto=@each my upkeep:this(counter{0/0.1.growth}>=20)while wingame text={1}{G}{U}: Put a +1/+1 counter on target creature you control. -- Whenever one or more +1/+1 counters are put on a creature you control, put that many growth counters on Simic Ascendancy. -- At the beginning of your upkeep, if Simic Ascendancy has twenty or more growth counters on it, you win the game. mana={G}{U} @@ -75078,7 +75085,7 @@ name=Stream of Thought abilities=hasnokicker,hasreplicate target=player kicker=multi{2}{U}{U} name(Replicate) -auto=name(Mill 2 cars) deplete:2 +auto=name(Mill 4 cards) deplete:4 auto=may name(Return cards form graveyard) target(*|mygraveyard) moveto(mylibrary) and!( shuffle )! auto=thisforeach(variable{kicked}>0) ability$!name(Copy Stream of Thought) name(Copy Stream of Thought) activate castcard(copied noevent named!:Stream of Thought:!)!$ controller text=Target player puts the top four cards of their library into their graveyard. You shuffle up to four cards from your graveyard into your library. -- Replicate {2}{U}{U} (When you cast this spell, copy it for each time you paid its replicate cost. You may choose new targets for the copies.) @@ -77433,7 +77440,8 @@ toughness=5 [/card] [card] name=Tawnos, the Toymaker -auto=@movedTo(creature[Beast;Bird]|mystack):may name(Copy creature) all(trigger[to]) name(Copy creature) clone and!( transforms((artifact)) forever )! +auto=@movedTo(Beast[creature]|mystack):may name(Copy creature) all(trigger[to]) name(Copy creature) clone and!( transforms((artifact)) forever )! +auto=@movedTo(Bird[creature]|mystack):may name(Copy creature) all(trigger[to]) name(Copy creature) clone and!( transforms((artifact)) forever )! text=Whenever you cast a Beast or Bird creature spell, you may copy it, except the copy is an artifact in addition to its other types. (The copy becomes a token.) mana={3}{G}{U} type=Legendary Creature @@ -80248,7 +80256,7 @@ type=Enchantment [/card] [card] name=Tithe Taker -auto=while(restriction{myturnonly}) lord(*|opponentcastingzone) altercost( colorless,+1) +auto=while(restriction{myturnonly}) lord(*|opponentcastingzone) altercost(colorless,+1) auto=_DIES_token(Spirit,Creature Spirit,1/1,white,black,flying) text=During your turn, spells your opponents cast cost {1} more to cast and abilities your opponents activate cost {1} more to activate unless they're mana abilities. -- Afterlife 1 (When this creature dies, create a 1/1 white and black Spirit creature token with flying.) mana={1}{W} @@ -80717,12 +80725,12 @@ toughness=2 [card] name=Tormod, the Desecrator abilities=partner -auto=@movedto(*|mybattlefield) from(mygraveyard):_ZOMBIETOKEN_ and!( tap(noevent) )! -auto=@movedto(*|myhand) from(mygraveyard):_ZOMBIETOKEN_ and!( tap(noevent) )! -auto=@movedto(*|mylibrary) from(mygraveyard):_ZOMBIETOKEN_ and!( tap(noevent) )! -auto=@movedto(*|myexile) from(mygraveyard):_ZOMBIETOKEN_ and!( tap(noevent) )! -auto=@movedto(*|mysideboard) from(mygraveyard):_ZOMBIETOKEN_ and!( tap(noevent) )! -auto=@movedto(*|mycommandzone) from(mygraveyard):_ZOMBIETOKEN_ and!( tap(noevent) )! +auto=@movedto(*|battlefield) from(mygraveyard):_ZOMBIETOKEN_ and!( tap(noevent) )! +auto=@movedto(*|hand) from(mygraveyard):_ZOMBIETOKEN_ and!( tap(noevent) )! +auto=@movedto(*|library) from(mygraveyard):_ZOMBIETOKEN_ and!( tap(noevent) )! +auto=@movedto(*|exile) from(mygraveyard):_ZOMBIETOKEN_ and!( tap(noevent) )! +auto=@movedto(*|sideboard) from(mygraveyard):_ZOMBIETOKEN_ and!( tap(noevent) )! +auto=@movedto(*|commandzone) from(mygraveyard):_ZOMBIETOKEN_ and!( tap(noevent) )! text=Whenever one or more cards leave your graveyard, create a tapped 2/2 black Zombie creature token. -- Partner (You can have two commanders if both have partner.) mana={3}{B} type=Legendary Creature @@ -81403,7 +81411,7 @@ toughness=5 [card] name=Trespasser's Curse target=player -auto=@movedto(creature|opponentbattlefield):life:-1 opponent && life:1 controller +auto=@movedto(creature|opponentBattlefield):life:-1 opponent && life:1 controller text=Enchant player -- Whenever a creature enters the battlefield under enchanted player's control, that player loses 1 life and you gain 1 life. mana={1}{B} type=Enchantment @@ -83483,7 +83491,7 @@ toughness=4 [card] name=Valiant Rescuer abilities=cycling -auto=@cycled(*|myHand) restriction{thisturn(*[cycling]|myHand)~equalto~0}:token(Human Soldier Val) +auto=@cycled(*|myHand) turnlimited:token(Human Soldier Val) autohand=__CYCLING__({2}) text=Whenever you cycle another card for the first time each turn, create a 1/1 white Human Soldier creature token. -- Cycling {2} ({2}, Discard this card: Draw a card.) mana={1}{W} @@ -86915,9 +86923,9 @@ toughness=3 [/card] [card] name=Well of Knowledge -auto=@each my draw:may pay[[{2}]] draw:2 controller +auto=@each my draw:may pay[[{2}]] draw:1 controller auto=@each opponent draw:ability$!name(pay 2) pay[[{2}]] name(pay 2 mana) draw:1?donothing!$ opponent -text={2}: Draw a card. Any player may activate this ability but only during his or her draw step. +text={2}: Draw a card. Any player may activate this ability but only during their draw step. mana={3} type=Artifact [/card] @@ -87640,7 +87648,7 @@ toughness=3 name=Wings of Hubris auto={1}:equip auto=teach(creature) flying -auto=teach(creature) transforms((,newability[{S}:teach(creature) unblockable,newability[@each my endofturn:sacrifice(mytgt)]])) +auto={S} transforms((,newability[unblockable(mytgt),newability[@each my endofturn:sacrifice(mytgt)]])) text=Equipped creature has flying. -- Sacrifice Wings of Hubris: Equipped creature can't be blocked this turn. Sacrifice it at the beginning of the next end step. -- Equip 1 ( 1 : Attach to target creature you control. Equip only as a sorcery.) mana={2} type=Artifact diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index 541e0c7f1..637905f95 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -61654,7 +61654,7 @@ abilities=indestructible aicode=activate moveTo(myBattlefield) and!(tap(noevent))! target(*[forest;plains]|myLibrary) auto=this(variable{selesnya}<7) transforms((removetypes,newability[becomes(Legendary Enchantment God)])) auto=this(variable{selesnya}>6) transforms((Legendary Enchantment Creature)) -auto=@movedto(creature|stack) from(*|myhand):name(search card) reveal:plibrarycount optionone name(choose card) target(*[forest;plains]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield) and!(tap(noevent))!)! afterrevealedend revealend +auto=@movedto(creature|mystack):name(search card) reveal:plibrarycount optionone name(choose card) target(*[forest;plains]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield) and!(tap(noevent))!)! afterrevealedend revealend text=Indestructible -- As long as your devotion to green and white is less than seven, Karametra isn't a creature. -- Whenever you cast a creature spell, you may search your library for a Forest or Plains card, put it onto the battlefield tapped, then shuffle your library. mana={3}{G}{W} type=Legendary Enchantment Creature