diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index 2dbe1d14f..8a56ef895 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -1,7 +1,7 @@ grade=borderline #Bordeline Primitives Pack for Wagic the Homebrew. #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#I sorted this programmatically - Thanks to Vitty85 27-07-2023 +#I sorted this programmatically - Thanks to Vitty85 28-07-2023 [card] name=+2 Mace auto={3}:equip @@ -55404,7 +55404,7 @@ toughness=4 [/card] [card] name=Lazotep Chancellor -auto=@discarded(*|myHand):name(Amass 2) pay[[{1}]] if type(army|mybattlefield)~equalto~0 then token(Zombie Army,Creature Zombie Army,0/0,black) and!( counter(1/1,2) )! else counter(1/1,2) target(army|myBattlefield) +auto=@discarded(*|myHand):name(Pay 1 and amass 2) transforms((,newability[if type(army|mybattlefield)~equalto~0 then choice name(Pay 1 and amass 2) name(Pay 1 and amass 2) ability$!may name(Pay 1 and amass 2) pay({1}) name(Pay 1 and amass 2) token(Zombie Army^Creature Zombie Army^0/0^black) and!( counter(1/1.2) )!!$ controller],newability[if type(army|mybattlefield)~morethan~0 then choice name(Pay 1 and amass 2) name(Pay 1 and amass 2) ability$!may name(Pay 1 and amass 2) pay({1}) name(Pay 1 and amass 2) notatarget(army|myBattlefield) transforms((Zombie,newability[counter(1/1.2)])) forever!$ controller])) forever text=Whenever you discard a card, you may pay {1}. If you do, amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) mana={U}{B} type=Creature @@ -56137,10 +56137,30 @@ type=Artifact [card] name=Lich abilities=cantlifelose -auto=lifeset:0 controller -auto=@lifeof(player):draw:thatmuch controller && life:-thatmuch controller -auto=@damageof(player):if type(creature[-token]|mybattlefield)~lessthan~thatmuch then winGame opponent else sacrifice notAtarget(creature[-token]|mybattlefield) -auto=_DIES_winGame opponent +auto=transforms((,newability[lifeset:0 controller],newability[cantchangelife])) forever +auto=@lifeof(player):name(Draw cards) draw:thatmuch controller +auto=@damageof(player) restriction{compare(thatmuch)~equalto~1}:name(Sacrifice 1 permanent) name(Sacrifice 1 permanent) target(*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~2}:name(Sacrifice 2 permanents) name(Sacrifice 2 permanents) target(<2>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~3}:name(Sacrifice 3 permanents) name(Sacrifice 3 permanents) target(<3>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~4}:name(Sacrifice 4 permanents) name(Sacrifice 4 permanents) target(<4>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~5}:name(Sacrifice 5 permanents) name(Sacrifice 5 permanents) target(<5>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~6}:name(Sacrifice 6 permanents) name(Sacrifice 6 permanents) target(<6>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~7}:name(Sacrifice 7 permanents) name(Sacrifice 7 permanents) target(<7>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~8}:name(Sacrifice 8 permanents) name(Sacrifice 8 permanents) target(<8>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~9}:name(Sacrifice 9 permanents) name(Sacrifice 9 permanents) target(<9>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~10}:name(Sacrifice 10 permanents) name(Sacrifice 10 permanents) target(<10>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~11}:name(Sacrifice 11 permanents) name(Sacrifice 11 permanents) target(<11>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~12}:name(Sacrifice 12 permanents) name(Sacrifice 12 permanents) target(<12>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~13}:name(Sacrifice 13 permanents) name(Sacrifice 13 permanents) target(<13>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~14}:name(Sacrifice 14 permanents) name(Sacrifice 14 permanents) target(<14>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~15}:name(Sacrifice 15 permanents) name(Sacrifice 15 permanents) target(<15>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~16}:name(Sacrifice 16 permanents) name(Sacrifice 16 permanents) target(<16>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~17}:name(Sacrifice 17 permanents) name(Sacrifice 17 permanents) target(<17>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~18}:name(Sacrifice 18 permanents) name(Sacrifice 18 permanents) target(<18>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~equalto~19}:name(Sacrifice 19 permanents) name(Sacrifice 19 permanents) target(<19>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{compare(thatmuch)~morethan~19}:name(Sacrifice 20 permanents) name(Sacrifice 20 permanents) target(<20>*[-token]|mybattlefield) sacrifice +auto=@damageof(player) restriction{type(*[-token]|mybattlefield)~lessthan~thatmuch}:name(You lose the game) name(You lose the game) winGame opponent +auto=_DIES_name(You lose the game) winGame opponent text=As Lich enters the battlefield, you lose life equal to your life total. -- You don't lose the game for having 0 or less life. -- If you would gain life, draw that many cards instead. -- Whenever you're dealt damage, sacrifice that many nontoken permanents. If you can't, you lose the game. -- When Lich is put into a graveyard from the battlefield, you lose the game. mana={B}{B}{B}{B} type=Enchantment @@ -56890,7 +56910,7 @@ toughness=3 name=Livewire Lash auto={2}:equip auto=teach(creature) 2/0 -auto=teach(creature) transforms((,newability[@targeted(this):damage:2 target(anytarget)])) forever +auto=teach(creature) transforms((,newability[@targeted(this):name(Deal 2 damage) damage:2 target(anytarget)])) text=Equipped creature gets +2/+0 and has "Whenever this creature becomes the target of a spell, this creature deals 2 damage to target creature or player." -- Equip {2} mana={2} type=Artifact @@ -56937,28 +56957,9 @@ type=Instant [/card] [card] name=Living Inferno -auto={T}:thisforeach(power>=1) counter(0/0,1,LivingEffect) all(this) -auto={C(0/0,-1,LivingEffect)}:name(Deal 1 damage to opponent's creature) name(Deal 1 damage to opponent's creature) target(creature|opponentBattlefield) transforms((,newability[damage:1],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|opponentBattlefield)])) oneshot -auto={C(0/0,-2,LivingEffect)}:name(Deal 2 damages to opponent's creature) name(Deal 2 damages to opponent's creature) target(creature|opponentBattlefield) transforms((,newability[damage:2],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|opponentBattlefield)])) oneshot -auto={C(0/0,-3,LivingEffect)}:name(Deal 3 damages to opponent's creature) name(Deal 3 damages to opponent's creature) target(creature|opponentBattlefield) transforms((,newability[damage:3],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|opponentBattlefield)])) oneshot -auto={C(0/0,-4,LivingEffect)}:name(Deal 4 damages to opponent's creature) name(Deal 4 damages to opponent's creature) target(creature|opponentBattlefield) transforms((,newability[damage:4],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|opponentBattlefield)])) oneshot -auto={C(0/0,-5,LivingEffect)}:name(Deal 5 damages to opponent's creature) name(Deal 5 damages to opponent's creature) target(creature|opponentBattlefield) transforms((,newability[damage:5],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|opponentBattlefield)])) oneshot -auto={C(0/0,-6,LivingEffect)}:name(Deal 6 damages to opponent's creature) name(Deal 6 damages to opponent's creature) target(creature|opponentBattlefield) transforms((,newability[damage:6],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|opponentBattlefield)])) oneshot -auto={C(0/0,-7,LivingEffect)}:name(Deal 7 damages to opponent's creature) name(Deal 7 damages to opponent's creature) target(creature|opponentBattlefield) transforms((,newability[damage:7],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|opponentBattlefield)])) oneshot -auto={C(0/0,-8,LivingEffect)}:name(Deal 8 damages to opponent's creature) name(Deal 8 damages to opponent's creature) target(creature|opponentBattlefield) transforms((,newability[damage:8],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|opponentBattlefield)])) oneshot -auto={C(0/0,-9,LivingEffect)}:name(Deal 9 damages to opponent's creature) name(Deal 9 damages to opponent's creature) target(creature|opponentBattlefield) transforms((,newability[damage:9],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|opponentBattlefield)])) oneshot -auto={C(0/0,-10,LivingEffect)}:name(Deal 10 damages to opponent's creature) name(Deal 10 damages to opponent's creature) target(creature|opponentBattlefield) transforms((,newability[damage:10],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|opponentBattlefield)])) oneshot -auto={C(0/0,-1,LivingEffect)}:name(Deal 1 damage to your creature) name(Deal 1 damage to your creature) target(creature|myBattlefield) transforms((,newability[damage:1],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|myBattlefield)])) oneshot -auto={C(0/0,-2,LivingEffect)}:name(Deal 2 damages to your creature) name(Deal 2 damages to your creature) target(creature|myBattlefield) transforms((,newability[damage:2],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|myBattlefield)])) oneshot -auto={C(0/0,-3,LivingEffect)}:name(Deal 3 damages to your creature) name(Deal 3 damages to your creature) target(creature|myBattlefield) transforms((,newability[damage:3],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|myBattlefield)])) oneshot -auto={C(0/0,-4,LivingEffect)}:name(Deal 4 damages to your creature) name(Deal 4 damages to your creature) target(creature|myBattlefield) transforms((,newability[damage:4],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|myBattlefield)])) oneshot -auto={C(0/0,-5,LivingEffect)}:name(Deal 5 damages to your creature) name(Deal 5 damages to your creature) target(creature|myBattlefield) transforms((,newability[damage:5],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|myBattlefield)])) oneshot -auto={C(0/0,-6,LivingEffect)}:name(Deal 6 damages to your creature) name(Deal 6 damages to your creature) target(creature|myBattlefield) transforms((,newability[damage:6],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|myBattlefield)])) oneshot -auto={C(0/0,-7,LivingEffect)}:name(Deal 7 damages to your creature) name(Deal 7 damages to your creature) target(creature|myBattlefield) transforms((,newability[damage:7],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|myBattlefield)])) oneshot -auto={C(0/0,-8,LivingEffect)}:name(Deal 8 damages to your creature) name(Deal 8 damages to your creature) target(creature|myBattlefield) transforms((,newability[damage:8],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|myBattlefield)])) oneshot -auto={C(0/0,-9,LivingEffect)}:name(Deal 9 damages to your creature) name(Deal 9 damages to your creature) target(creature|myBattlefield) transforms((,newability[damage:9],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|myBattlefield)])) oneshot -auto={C(0/0,-10,LivingEffect)}:name(Deal 10 damages to your creature) name(Deal 10 damages to your creature) target(creature|myBattlefield) transforms((,newability[damage:10],newability[dynamicability target(Living Inferno[counter{0/0.1.LivingEffect}]|myBattlefield)])) oneshot -auto=@each endofturn:removeallcounters(0/0,1,LivingEffect) +auto={T}:name(Choose creatures to target and then click on living inferno) name(Choose creatures to target and then click on living inferno) transforms((LivingEffect,newability[thisforeach(variable{power}>=1) ability$!name(Deal 1 damage) name(Deal 1 damage) target(creature|battlefield) counter(0/0.1.InfernoTgt) notrg!$ controller],newability[{0}:name(Damage targeted creatures) all(creature[counter{0/0.1.InfernoTgt}]|battlefield) transforms((,newability[damage:hascntinfernotgt],newability[damage:power target(Living Inferno[LivingEffect]|battlefield)])) oneshot limit:1])) ueot +auto=@each endofturn:name(Effect ends) losesatype(LivingEffect) +auto=@each endofturn:name(Effect ends) all(creature[counter{0/0.1.InfernoTgt}]|battlefield) transforms((,newability[counter(0/0.-hascntinfernotgt.InfernoTgt) notrg])) oneshot text={T}: Living Inferno deals damage equal to its power divided as you choose among any number of target creatures. Each of those creatures deals damage equal to its power to Living Inferno. mana={6}{R}{R} type=Creature @@ -60082,14 +60083,15 @@ type=Instant [/card] [card] name=Masterful Replication -auto=token(Golem,Artifact Creature Golem,3/3)*2 +auto=choice name(Create 2 golem) token(Golem,Artifact Creature Golem,3/3)*2 +auto=if type(artifact|mybattlefield)~morethan~0 then choice name(All artifacts becomes copy) name(All artifacts becomes copy) target(artifact|myBattlefield) transforms((tobecop,newability[phaseaction[endofturn once] losesatype(tobecop)],newability[all(other artifact|myBattlefield) transforms((,newability[all(artifact[tobecop]|myBattlefield) copy and!( all(this) transforms((,newability[phaseaction[endofturn once] flip(myorigname) undocpy])) forever )!])) ueot])) oneshot text=Choose one -- Create two 3/3 colorless Golem artifact creature tokens. -- Choose target artifact you control. Each other artifact you control becomes a copy of that artifact until end of turn. mana={5}{U} type=Instant [/card] [card] name=Mastermind's Acquisition -auto=choice name(Search your library) target(*|mylibrary) moveto(myhand) && shuffle +auto=choice name(Search your library) target(*|mylibrary) moveto(myhand) and!( shuffle )! auto=choice name(Search from outside game) target(*|myexile,mysideboard) moveto(myhand) text=Choose one -- Search your library for a card, put it into your hand, then shuffle your library. -- Put a card you own from outside the game into your hand. mana={2}{B}{B} @@ -60097,7 +60099,7 @@ type=Sorcery [/card] [card] name=Masterwork of Ingenuity -auto=may copy target(*[equipment]|battlefield) +auto=may name(Copy equipment) copy target(*[equipment]|battlefield) text=You may have Masterwork of Ingenuity enter the battlefield as a copy of any Equipment on the battlefield. mana={1} type=Artifact @@ -60106,7 +60108,7 @@ subtype=Equipment [card] name=Mathas, Fiend Seeker abilities=menace -auto=@each my endofturn:target(creature|opponentBattlefield) (transforms((,newability[counter(0/0.1.Bounty)], newability[@movedto(this|mygraveyard):draw:1 opponent && life:2 opponent)])) +auto=@each my endofturn:name(Put bounty counter) target(creature|opponentBattlefield) transforms((,newability[counter(0/0.1.Bounty)],newability[@movedto(this|graveyard) from(mybattlefield) restriction{compare(hascntbounty)~morethan~0}:name(Opponent draw a card) draw:1 opponent],newability[@movedto(this|graveyard) from(mybattlefield) restriction{compare(hascntbounty)~morethan~0}:name(Opponent gain 2 life) life:2 opponent])) forever text=Menace -- At the beginning of your end step, put a bounty counter on target creature an opponent controls. For as long as that creature has a bounty counter on it, it has "When this creature dies, each opponent draws a card and gains 2 life." mana={R}{W}{B} type=Legendary Creature @@ -60160,9 +60162,8 @@ type=Instant [card] name=Mavinda, Students' Advocate abilities=flying -auto={0} restriction{compare(hascntadvocateeffect)~equalto~0}:name(Cast spell that doesn't target your creatures) target(*[instant;sorcery]|mygraveyard) transforms((,newability[canplayfromgraveyard],newability[gainedexiledeath],newability[changecost(colorless:8) forcedalive])) ueot && all(this) counter(0/0,1,AdvocateEffect) -auto={0} restriction{compare(hascntadvocateeffect)~equalto~0}:name(Cast spell that target your creatures) target(*[instant;sorcery]|mygraveyard) transforms((,newability[canplayfromgraveyard],newability[gainedexiledeath])) ueot && all(this) counter(0/0,1,AdvocateEffect) -auto=@each end:removeallcounters(0/0,1,AdvocateEffect) +auto=this(cantargetcard(*[-MavindaEffect]) {0}:name(Cast spell that doesn't target your creatures) name(Cast spell that doesn't target your creatures) all(this) becomes(MavindaEffect) ueot && transforms((,newability[name(Choose a spell) target(*[instant;sorcery]|mygraveyard) transforms((,newability[canplayfromgraveyard],newability[gainedexiledeath],newability[changecost(colorless:8) forcedalive])) ueot])) ueot limit:1 +auto=this(cantargetcard(*[-MavindaEffect]) {0}:name(Cast spell that target your creatures) name(Cast spell that target your creatures) all(this) becomes(MavindaEffect) ueot && transforms((,newability[name(Choose a spell) target(*[instant;sorcery]|mygraveyard) transforms((,newability[canplayfromgraveyard],newability[gainedexiledeath])) ueot])) ueot limit:1 text=Flying -- {0}: You may cast target instant or sorcery card from your graveyard this turn. If that spell doesn't target a creature you control, it costs 8 more to cast this way. If that spell would be put into your graveyard, exile it instead. Activate only once each turn. (You still pay the spell's costs. Timing rules for the spell still apply.) mana={2}{W} type=Legendary Creature @@ -60479,10 +60480,10 @@ type=Instant [card] name=Memory Leak abilities=cycling -target=opponent -aicode=activate moveTo(exile) notatarget(*[-land]|targetedpersonshand) -auto=reveal:type:*:targetedpersonshand revealzone(targetedpersonshand) optionone name(choose Exile) notatarget(<1>*[-land]|reveal) transforms((,newability[moveto(ownerhand) all(other *|reveal)],newability[moveto(ownerhand) and!(exile)!])) ueot optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerhand) and!( all(*|reveal) moveto(ownerhand) )! and!( moveTo(exile) target(*[-land]|opponentgraveyard) )! optiontwoend revealend autohand=__CYCLING__({1}) +auto=if type(*[-land]|opponenthand)~morethan~0 then name(Exile a card) target(*[-land]|opponenthand,opponentgraveyard) moveTo(ownerexile) +auto=if type(*[-land]|opponenthand)~equalto~0 then if type(*[-land]|opponentgraveyard)~morethan~0 then name(Exile a card) name(Exile a card) name(Exile a card) target(*[-land]|opponenthand,opponentgraveyard) moveTo(ownerexile) +auto=if type(*[-land]|opponenthand)~equalto~0 then if type(*[-land]|opponentgraveyard)~equalto~0 then name(Look hand) name(Look hand) name(Look hand) target(*|opponenthand) moveTo(myreveal) and!( moveto(opponenthand) )! text=Target opponent reveals their hand. You choose a nonland card from that player's graveyard or hand and exile it. -- Cycling {1} ({1}, Discard this card: Draw a card.) mana={2}{B} type=Sorcery @@ -61827,9 +61828,8 @@ subtype=Sphere [card] name=Mirri, Weatherlight Duelist abilities=first strike -auto=this(tapped) lord(creature[-attacking]|opponentbattlefield) cantattack -auto=this(tapped) lord(creature[-attacking]|opponentbattlefield) cantpwattack -auto=_ATTACKING_aslongas(creature[blocking]|opponentBattlefield) lord(creature[-blocking]|opponentbattlefield) cantblock +auto=@each opponent combatbegins:if cantargetcard(*[tapped]|*) then ability$!name(Choose nonattacking creatures) name(Choose nonattacking creatures) target(creature|mybattlefield) transforms((,newability[cantattack],newability[cantpwattack])) ueot!$ opponent +auto=@combat(attacking) source(this):ability$!name(Choose nonblocking creatures) name(Choose nonblocking creatures) target(creature|mybattlefield) transforms((,newability[cantblock])) ueot!$ opponent 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} type=Legendary Creature @@ -62021,9 +62021,9 @@ toughness=2 [/card] [card] name=Misdirection -other={E(*[blue]|myhand)} name(Exile blue card) -target=instant,sorcery|stack -auto=fizzle +other={E(other *[blue]|myhand)} name(Exile blue card) +target=*[instant;sorcery;aura]|stack +auto=spellmover(graveyard) auto=activate castcard(copied noevent) text=You may exile a blue card from your hand rather than pay Misdirection's mana cost. -- Change the target of target spell with a single target. mana={3}{U}{U} @@ -62617,11 +62617,11 @@ type=Instant [card] name=Mobilized District auto={T}:Add{C} -auto={4}:transforms((Citizen Creature,setpower=3,settoughness=3,vigilance)) ueot -auto={3} restriction{type(*[creature&legendary;planeswalker]|myBattlefield)~morethan~0}:transforms((Citizen Creature,setpower=3,settoughness=3,vigilance)) ueot -auto={2} restriction{type(*[creature&legendary;planeswalker]|myBattlefield)~morethan~1}:transforms((Citizen Creature,setpower=3,settoughness=3,vigilance)) ueot -auto={1} restriction{type(*[creature&legendary;planeswalker]|myBattlefield)~morethan~2}:transforms((Citizen Creature,setpower=3,settoughness=3,vigilance)) ueot -auto={0} restriction{type(*[creature&legendary;planeswalker]|myBattlefield)~morethan~3}:transforms((Citizen Creature,setpower=3,settoughness=3,vigilance)) ueot +auto=this(variable{type:creature[legendary]:mybattlefieldplustype:planeswalker:myBattlefieldplusend}=0) {4}:name(Becomes citizen) name(Becomes citizen) transforms((Citizen Creature,setpower=3,settoughness=3,newability[vigilance])) ueot +auto=this(variable{type:creature[legendary]:mybattlefieldplustype:planeswalker:myBattlefieldplusend}=1) {3}:name(Becomes citizen) name(Becomes citizen) transforms((Citizen Creature,setpower=3,settoughness=3,newability[vigilance])) ueot +auto=this(variable{type:creature[legendary]:mybattlefieldplustype:planeswalker:myBattlefieldplusend}=2) {2}:name(Becomes citizen) name(Becomes citizen) transforms((Citizen Creature,setpower=3,settoughness=3,newability[vigilance])) ueot +auto=this(variable{type:creature[legendary]:mybattlefieldplustype:planeswalker:myBattlefieldplusend}=3) {1}:name(Becomes citizen) name(Becomes citizen) transforms((Citizen Creature,setpower=3,settoughness=3,newability[vigilance])) ueot +auto=this(variable{type:creature[legendary]:mybattlefieldplustype:planeswalker:myBattlefieldplusend}>=4) {0}:name(Becomes citizen) name(Becomes citizen) transforms((Citizen Creature,setpower=3,settoughness=3,newability[vigilance])) ueot text={T}: Add {C}. -- {4}: Mobilized District becomes a 3/3 Citizen creature with vigilance until end of turn. It's still a land. This ability costs {1} less to activate for each legendary creature and planeswalker you control. type=Land [/card] @@ -62926,7 +62926,7 @@ auto=@each endofturn restriction{compare(hascntmonkeffect)~morethan~0}:removeall auto=this(variable{hascntlevel}=1) {W}{U}:name(Level 2) counter(0/0,1,Level) asSorcery auto=@counteradded(0/0.1.Level) from(this) restriction{compare(hascntlevel)~equalto~2}:may name(Return non-land permanent) target(*[-land]|battlefield) moveto(ownerhand) auto=this(variable{hascntlevel}=2) {1}{W}{U}:name(Level 3) counter(0/0,1,Level) asSorcery -auto=@each my upkeep restriction{compare(hascntlevel)~morethan~2}:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[@movedto(*|mystack):all(this|myexile) transforms((,newability[canplayfromexile ueot])) ueot])) forever )! +auto=@each my upkeep restriction{compare(hascntlevel)~morethan~2}:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[@movedto(*|mystack):name(Can play from exile) all(this|myexile) transforms((,newability[canplayfromexile ueot])) ueot])) forever )! text=(Gain the next level as a sorcery to add its ability.) -- The second spell you cast each turn costs {1} less to cast. -- {W}{U}: Level 2 -- When this Class becomes level 2, return up to one target nonland permanent to its owner's hand. -- {1}{W}{U}: Level 3 -- At the beginning of your upkeep, exile the top card of your library. For as long as it remains exiled, it has "You may cast this card from exile as long as you've cast another spell this turn." mana={W}{U} type=Enchantment @@ -64185,16 +64185,16 @@ toughness=1 [/card] [card] name=Mystic Confluence -auto=choice name(Choose 1, 2 and 3) target(*|stack) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) forever && ability$!name(Return creature) name(Return creature) target(creature) moveto(ownerhand)!$ controller && draw:1 controller -auto=choice name(Choose 1, 1 and 2) target(<2>*|stack) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) forever && ability$!name(Return creature) name(Return creature) target(creature) moveto(ownerhand)!$ controller -auto=choice name(Choose 1, 1 and 3) target(<2>*|stack) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) forever && draw:1 controller -auto=choice name(Choose 1, 1 and 1) target(<3>*|stack) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) forever -auto=choice name(Choose 1, 2 and 2) target(*|stack) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) forever && ability$!name(Return 2 creatures) name(Return 2 creatures) target(<2>creature) moveto(ownerhand)!$ controller -auto=choice name(Choose 1, 3 and 3) target(*|stack) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) forever && draw:2 controller -auto=choice name(Choose 2, 2 and 2) target(<3>creature) moveto(ownerhand) -auto=choice name(Choose 2, 2 and 3) target(<2>creature) moveto(ownerhand) && draw:1 controller -auto=choice name(Choose 2, 3 and 3) target(creature) moveto(ownerhand) && draw:2 controller -auto=choice name(Choose 3, 3 and 3) draw:3 controller +auto=choice name(Draw, draw, draw) draw:3 controller +auto=if type(creature|battlefield)~morethan~2 then choice name(Return, Return, Return) name(Return, Return, Return) target(<3>creature|battlefield) moveto(ownerhand) +auto=if type(creature|battlefield)~morethan~1 then choice name(Return, Return, draw) name(Return, Return, draw) draw:1 controller && target(<2>creature|battlefield) moveto(ownerhand) +auto=if type(creature|battlefield)~morethan~0 then choice name(Return, draw, draw) name(Return, draw, draw) target(creature|battlefield) moveto(ownerhand) and!( draw:2 controller )! +auto=if type(creature|battlefield)~morethan~0 then if type(other *|stack)~morethan~0 then choice name(Return, counter, draw) name(Return, counter, draw) name(Return, counter, draw) draw:1 controller && target(creature|battlefield) moveto(ownerhand) and!( target(*|stack) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) forever )! +auto=if type(other *|stack)~morethan~0 then choice name(Counter, draw, draw) name(Counter, draw, draw) draw:2 controller && target(*|stack) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) forever +auto=if type(creature|battlefield)~morethan~1 then if type(other *|stack)~morethan~0 then choice name(Return, return, counter) choice name(Return, return, counter) choice name(Return, return, counter) target(creature|battlefield) moveto(ownerhand) and!( target(creature|battlefield) moveto(ownerhand) and!( target(*|stack) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) forever )! )! +auto=if type(other *|stack)~morethan~1 then choice name(Counter, counter, draw) name(Counter, counter, draw) draw:1 controller && target(<2>*|stack) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) forever +auto=if type(creature|battlefield)~morethan~0 then if type(other *|stack)~morethan~1 then choice name(Return, counter, counter) name(Return, counter, counter) name(Return, counter, counter) target(creature|battlefield) moveto(ownerhand) and!( target(<2>*|stack) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) forever )! +auto=if type(other *|stack)~morethan~2 then choice name(Counter, counter, counter) name(Counter, counter, counter) name(Counter, counter, counter) target(<3>*|stack) transforms((,newability[pay[[{3}]] name(pay 3 mana) donothing?fizzle])) forever text=Choose three. You may choose the same mode more than once. -- Counter target spell unless its controller pays {3}. -- Return target creature to its owner's hand. -- Draw a card. mana={3}{U}{U} type=Instant @@ -64202,8 +64202,8 @@ type=Instant [card] name=Mystic Forge abilities=showfromtoplibrary,canplayartifactlibrarytop -auto=this(variable{type:*[-land;-black;-red;-blue;-green;-white;zpos=1]:mylibrary}>0) canplayfromlibrarytop -auto={T}{L:1}:name(Exile top card) moveto(exile) all(*[zpos=1]|mylibrary) +auto=aslongas(*[-land&colorless&zpos=1]|mylibrary) canplayfromlibrarytop +auto={T}{L:1}:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(exile) text=You may look at the top card of your library any time. -- You may cast the top card of your library if it's an artifact card or a colorless nonland card. -- {T}, Pay 1 life: Exile the top card of your library. 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 2f6beda3f..b2f6704db 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -1,6 +1,6 @@ #Primitives Pack for Wagic the Homebrew. #Please keep these card alphabetized, and try to have the "name=" line at the top of each card -#I sorted this programmatically so the other comments are removed except for AUTO_DEFINE - Vitty85 27-07-2023 +#I sorted this programmatically so the other comments are removed except for AUTO_DEFINE - Vitty85 28-07-2023 [card] name=Abandon Reason target=creature @@ -67705,7 +67705,10 @@ subtype=Aura [/card] [card] name=Living Death -auto=all(creature|battlefield) becomes(deadtemp) && all(creature|graveyard) moveto(exile) and!(transforms((,newability[sacrifice all(deadtemp)],newability[moveto(battlefield)])))! oneshot +auto=if type(creature|mygraveyard)~morethan~0 then all(creature|mybattlefield) becomes(deadtemp) ueot && all(creature|mygraveyard) moveto(myexile) and!( transforms((,newability[sacrifice all(deadtemp)],newability[moveto(ownerbattlefield)])) oneshot )! +auto=if type(creature|mygraveyard)~equalto~0 then all(creature|mybattlefield) sacrifice +auto=if type(creature|opponentgraveyard)~morethan~0 then all(creature|opponentbattlefield) becomes(deadtemp) ueot && all(creature|opponentgraveyard) moveto(opponentexile) and!( transforms((,newability[sacrifice all(deadtemp)],newability[moveto(ownerbattlefield)])) oneshot )! +auto=if type(creature|opponentgraveyard)~equalto~0 then all(creature|opponentbattlefield) sacrifice text=Each player exiles all creature cards from his or her graveyard, then sacrifices all creatures he or she controls, then puts all cards he or she exiled this way onto the battlefield. mana={3}{B}{B} type=Sorcery @@ -68430,7 +68433,27 @@ toughness=2 [/card] [card] name=Loreseeker's Stone -auto={3}{value:type:*:myhand cdaactive}{T}:draw:3 controller +auto=this(variable{type:*:myhand}=0) {3}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=1) {4}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=2) {5}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=3) {6}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=4) {7}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=5) {8}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=6) {9}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=7) {10}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=8) {11}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=9) {12}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=10) {13}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=11) {14}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=12) {15}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=13) {16}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=14) {17}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=15) {18}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=16) {19}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=17) {20}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=18) {21}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}=19) {22}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller +auto=this(variable{type:*:myhand}>=20) {23}{T}:name(Draw 3 cards) name(Draw 3 cards) draw:3 controller text={3}, {T}: Draw three cards. This ability costs {1} more to activate for each card in your hand. mana={6} type=Artifact @@ -72647,7 +72670,7 @@ type=Sorcery [card] name=Memory's Journey target=player -auto=ability$!choice name(shuffle back) target(*|mygraveyard) moveTo(ownerlibrary) && shuffle!$ targetedplayer +auto=ability$!may name(Shuffle 3 cards) name(Shuffle 3 cards) target(*|mygraveyard) moveto(ownerlibrary) and!( shuffle)!!$ targetedplayer flashback={G} text=Target player shuffles up to three target cards from his or her graveyard into his or her library. -- Flashback {G} (You may cast this card from your graveyard for its flashback cost. Then exile it.) mana={1}{U} @@ -75132,7 +75155,7 @@ toughness=6 [/card] [card] name=Mistform Sliver -auto=lord(sliver) {1}:activatechooseatype all(this) becomes(removecreaturesubtypes) && becomes(chosentype) ueot activatechooseend +auto=lord(sliver|battlefield) transforms((,newability[{1}:activatechooseatype all(this) becomes(chosentype) ueot activatechooseend])) text=All Slivers have "{1}: This permanent becomes the creature type of your choice in addition to its other types until end of turn." mana={1}{U} type=Creature @@ -75275,8 +75298,8 @@ type=Land [/card] [card] name=Mitotic Manipulation -aicode=activate choice bottomoflibrary all(*[zpos<=7]|mylibrary) -auto=reveal:7 optionone name(Get a card with same name) target(*|reveal) aslongas(*[share!name!]|battlefield) moveTo(mybattlefield) optiononeend optiontwo name(put on bottom) target(<7>*|reveal) bottomoflibrary optiontwoend revealend +aicode=activate transforms((,newability[target(*[zpos<=7]|mylibrary) transforms((,newability[if type(*[share!name!]|battlefield)~morethan~0 then moveto(mybattlefield) and!( all(*[zpos<=7]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )!],newability[if type(*[share!name!]|battlefield)~equalto~0 then all(*[zpos<=7]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) ueot])) ueot +auto=name(Look top 7 cards) reveal:7 optionone name(Get a card with same name) target(*|reveal) moveTo(mylibrary) and!( transforms((,newability[if type(*[share!name!]|battlefield)~morethan~0 then becomes(tobemit) ueot])) ueot )! optiononeend optiontwo name(Put on bottom) target(<7>*|reveal) bottomoflibrary optiontwoend afterrevealed all(tobemit|mylibrary) moveto(mybattlefield) afterrevealedend revealend text=Look at the top seven cards of your library. You may put one of those cards onto the battlefield if it has the same name as a permanent. Put the rest on the bottom of your library in any order. mana={1}{U}{U} type=Sorcery @@ -77469,8 +77492,10 @@ type=Sorcery [/card] [card] name=Mwonvuli Beast Tracker -aicode=activate target(creature[deathtouch;opponentshroud;reach;trample]|mylibrary) moveto(mylibrary) and!(moveto(mylibrary))! -auto=name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(<1>creature[deathtouch;opponentshroud;reach;trample]|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(mylibrary)])) optiononeend optiontwo bottomoflibrary target(<1>*|reveal) and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend +auto=if type(creature[trample]|mylibrary)~morethan~0 then choice name(Search creature with trample) name(Search creature with trample) target(creature[trample]|mylibrary) moveto(myreveal) and!( moveto(mylibrary) )! +auto=if type(creature[reach]|mylibrary)~morethan~0 then choice name(Search creature with reach) name(Search creature with reach) target(creature[reach]|mylibrary) moveto(myreveal) and!( moveto(mylibrary) )! +auto=if type(creature[opponentshroud]|mylibrary)~morethan~0 then choice name(Search creature with hexproof) name(Search creature with hexproof) target(creature[opponentshroud]|mylibrary) moveto(myreveal) and!( moveto(mylibrary) )! +auto=if type(creature[deathtouch]|mylibrary)~morethan~0 then choice name(Search creature with deathtouch) name(Search creature with deathtouch) target(creature[deathtouch]|mylibrary) moveto(myreveal) and!( moveto(mylibrary) )! text=When Mwonvuli Beast Tracker enters the battlefield, search your library for a creature card with deathtouch, hexproof, reach, or trample and reveal it. Shuffle your library and put that card on top of it. mana={1}{G}{G} type=Creature @@ -77714,9 +77739,9 @@ toughness=1 [/card] [card] name=Myr Prototype -auto=@each my upkeep:counter(1/1) -auto=attackcost:counter{1%1} -auto=blockcost:counter{1%1} +auto=@each my upkeep:name(Put 1/1 counter) counter(1/1) +auto=@counteradded(1/1) from(this):name(Change attack and block cost) transforms((,newability[attackcost:1],newability[blockcost:1])) forever +auto=@counterremoved(1/1) from(this):name(Change attack and block cost) transforms((,newability[attackcost:-1],newability[blockcost:-1])) forever text=At the beginning of your upkeep, put a +1/+1 counter on Myr Prototype. -- Myr Prototype can't attack or block unless you pay {1} for each +1/+1 counter on it. mana={5} type=Artifact Creature