diff --git a/projects/mtg/bin/Res/sets/primitives/_macros.txt b/projects/mtg/bin/Res/sets/primitives/_macros.txt index bedc7801f..763cea230 100644 --- a/projects/mtg/bin/Res/sets/primitives/_macros.txt +++ b/projects/mtg/bin/Res/sets/primitives/_macros.txt @@ -102,13 +102,13 @@ #AUTO_DEFINE _RECOVER_($cost) @movedTo(creature|myGraveyard) from(Battlefield):may pay{$cost} name(Return to owner Hand) moveTo(ownerHand) all(this) donothing?moveTo(exile) all(this) # Clash, not implemented -$AUTO_DEFINE _CLASH_ Put here a code if compare the casting cost based on Erratic Explosion. Meaby it would work with a few fix +#AUTO_DEFINE _CLASH_ Put here a code if compare the casting cost based on Erratic Explosion. Meaby it would work with a few fix # Proliferate #AUTO_DEFINE _PROLIFERATE_ name(Proliferate) notatarget(proliferation) proliferate # Scavenge -#AUTO_DEFINE _SCAVENGE_($cost) {$cost}:name(scavenge) counter(1/1,storedpower) target(creature) asSorcery +#AUTO_DEFINE _SCAVENGE_($power) name(scavenge) counter(1/1,$power) target(creature) asSorcery # Monstrosity, not implemented #AUTO_DEFINE _MONSTROSITY_($cost,$c) name(Monstrosity) this(cantargetcard(*[-monstrous]) {$cost}:becomes(monstrous) forever && counter(1/1.$c) @@ -186,6 +186,9 @@ $AUTO_DEFINE _CLASH_ Put here a code if compare the casting cost based on Errati # Connives. (Draw a card, then discard a card. If you discarded a nonland card, put a +1/+1 counter on this creature.) #AUTO_DEFINE _CONNIVES_ draw:1 && transforms((,newability[if type(*[-land]|myhand)~morethan~0 then choice name(Discard a nonland) name(Discard a nonland) target(*[-land]|myhand) reject && counter(1/1) all(this)],newability[if type(land|myhand)~morethan~0 then choice name(Discard a land) name(Discard a land) target(land|myhand) reject])) oneshot +# Eternalize +#AUTO_DEFINE _ETERNALIZE_ name(Eternalize) clone and!( transforms((Zombie,removemc,setpower=4,settoughness=4,black)) forever )! assorcery + # Angel Token #AUTO_DEFINE _ANGELTOKEN_ create(Angel:Creature Angel:4/4:white:flying) diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index f71a409a6..e857b1d9c 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -150,16 +150,6 @@ power=0 toughness=1 [/card] [card] -name=Abu Jafar -auto=_DIES_may name(Destroy blocked or blocking creatures) bury target(creature[blocking;blocked]|opponentBattlefield) -text=When Abu Ja'far dies, destroy all creatures blocking or blocked by it. They can't be regenerated. -mana={W} -type=Creature -subtype=Human -power=0 -toughness=1 -[/card] -[card] name=Abuna's Chant other={5}{R} name(Entwine) auto=ifnot paid(alternative) then transforms((,newability[choice life:5 controller],newability[choice prevent:5 target(creature|battlefield)])) @@ -483,7 +473,7 @@ toughness=1 [card] name=Adorned Pouncer abilities=double strike -autograveyard={3}{W}{W}{E}:name(Eternalize) clone and!( transforms((Zombie,removemc,setpower=4,settoughness=4,black)) forever )! assorcery +autograveyard={3}{W}{W}{E}:_ETERNALIZE_ text=Double strike -- Eternalize {3}{W}{W} ({3}{W}{W}, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Cat with no mana cost. Eternalize only as a sorcery.) mana={1}{W} type=Creature @@ -5755,7 +5745,7 @@ type=Sorcery name=Bannerhide Krushok abilities=trample autohand={1}{G}{discard}:name(Reinforce) counter(1/1,2) target(creature) -autograveyard={5}{G}{G}{E}:name(scavenge) counter(1/1,storedpower) target(creature) asSorcery +autograveyard={5}{G}{G}{E}:_SCAVENGE_(storedpower) text=Trample -- Reinforce 2-{1}{G} ({1}{G}, Discard this card: Put two +1/+1 counters on target creature.) -- Scavenge-{5}{G}{G} ({5}{G}{G}, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery.) mana={3}{G} type=Creature @@ -13104,7 +13094,7 @@ toughness=4 [card] name=Champion of Wits auto=may draw:power controller && && transforms((,newability[target(<2>*|myhand) reject])) ueot -autograveyard={5}{U}{U}{E}:name(Eternalize) clone and!( transforms((Zombie,removemc,setpower=4,settoughness=4,black)) forever )! assorcery +autograveyard={5}{U}{U}{E}:_ETERNALIZE_ text=When Champion of Wits enters the battlefield, you may draw cards equal to its power. If you do, discard two cards. -- Eternalize {5}{U}{U} ({5}{U}{U}, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Naga Wizard with no mana cost. Eternalize only as a sorcery.) mana={2}{U} type=Creature @@ -23174,7 +23164,7 @@ toughness=2 name=Dreamstealer abilities=menace auto=@combatdamaged(player) from(this):ability$!name(discard) target(*|myhand) reject!$ opponent -autograveyard={4}{B}{B}{E}:name(Eternalize) clone and!( transforms((Zombie,removemc,setpower=4,settoughness=4,black)) forever )! assorcery +autograveyard={4}{B}{B}{E}:_ETERNALIZE_ text=Menace -- Whenever Dreamstealer deals combat damage to a player, that player discards that many cards. -- Eternalize {4}{B}{B} ({4}{B}{B}, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Human Wizard with no mana cost. Eternalize only as a sorcery.) mana={2}{B} type=Creature @@ -24108,7 +24098,7 @@ toughness=6 name=Earthshaker Khenra abilities=haste auto=target(creature[power<=p]) cantblock ueot -autograveyard={4}{R}{R}{E}:name(Eternalize) clone and!( transforms((Zombie,removemc,setpower=4,settoughness=4,black)) forever )! asSorcery +autograveyard={4}{R}{R}{E}:_ETERNALIZE_ text=Haste -- When Earthshaker Khenra enters the battlefield, target creature with power less than or equal to Earthshaker Khenra's power can't block this turn. -- Eternalize {4}{R}{R} ({4}{R}{R}, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Jackal Warrior with no mana cost. Eternalize only as a sorcery.) mana={1}{R} type=Creature @@ -40468,7 +40458,7 @@ color=white [card] name=Icingdeath, Frost Tyrant abilities=vigilance,flying -auto=_DIES_name(Icingdeath, Frost Tongue) activate castcard(copied named!:icingdeath, frost tongue:!) +auto=_DIES_name(Icingdeath, Frost Tongue) create(-527307) text=Flying, vigilance -- When Icingdeath, Frost Tyrant dies, create Icingdeath, Frost Tongue, a legendary white Equipment artifact token with "Equipped creature gets +2/+0", "Whenever equipped creature attacks, tap target creature defending player controls" and equip {2}. mana={2}{W}{W} type=Legendary Creature @@ -40559,9 +40549,8 @@ toughness=2 [/card] [card] name=Igneous Elemental -target=creature -autohand=if type(land|mygraveyard)~morethan~0 then reduce({1}) -auto=may damage:2 +anyzone=aslongas(land|mygraveyard) changecost(colorless:-2) forcedalive +auto=may damage:2 target(creature) text=This spell costs {2} less to cast if there is a land card in your graveyard. -- When Igneous Elemental enters the battlefield, you may have it deal 2 damage to target creature. mana={4}{R}{R} type=Creature @@ -41562,6 +41551,7 @@ type=Instant [/card] [card] name=Infectious Curse +target=player auto=lord(*[instant;sorcery]|mycastingzone) altercost(colorless, -1) auto=@each opponent upkeep:life:-1 opponent && life:1 controller text=Enchant player -- Spells you cast that target enchanted player cost {1} less to cast. -- At the beginning of enchanted player's upkeep, that player loses 1 life and you gain 1 life. @@ -42300,6 +42290,7 @@ type=Legendary Artifact [/card] [card] name=Insubordination +target=creature auto=teach(creature) transforms((,newability[@each my endofturn:while(restriction{didntattack}) damage:2 controller])) forever text=Enchant creature -- At the beginning of the end step of enchanted creature's controller, Insubordination deals 2 damage to that player unless that creature attacked this turn. mana={B}{B} @@ -62642,7 +62633,7 @@ toughness=3 [/card] [card] name=Proven Combatant -autograveyard={4}{U}{U}{E}:name(Eternalize) clone and!( transforms((Zombie,removemc,setpower=4,settoughness=4,black)) forever )! assorcery +autograveyard={4}{U}{U}{E}:_ETERNALIZE_ text=Eternalize {4}{U}{U} ({4}{U}{U}, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Human Warrior with no mana cost. Eternalize only as a sorcery.) mana={U} type=Creature @@ -66245,7 +66236,7 @@ type=Sorcery [card] name=Resilient Khenra auto=may target(creature) dynamicability ueot -autograveyard={4}{G}{G}{E}:name(Eternalize) clone and!( transforms((Zombie,removemc,setpower=4,settoughness=4,black)) forever )! assorcery +autograveyard={4}{G}{G}{E}:_ETERNALIZE_ text=When Resilient Khenra enters the battlefield, you may have target creature get +X/+X until end of turn, where X is Resilient Khenra's power. -- Eternalize {4}{G}{G} ({4}{G}{G}, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Jackal Wizard with no mana cost. Eternalize only as a sorcery.) mana={1}{G} type=Creature @@ -74699,7 +74690,7 @@ type=Sorcery [card] name=Sinuous Striker auto={U}:1/-1 ueot -autograveyard={3}{U}{U}{D(*|myhand)}{E}:name(Eternalize) clone and!( transforms((Zombie,removemc,setpower=4,settoughness=4,black)) forever )! assorcery +autograveyard={3}{U}{U}{D(*|myhand)}{E}:_ETERNALIZE_ text={U}: Sinuous Striker gets +1/-1 until end of turn. -- Eternalize-{3}{U}{U}, Discard a card. ({3}{U}{U}, Discard a card, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Naga Warrior with no mana cost. Eternalize only as a sorcery.) mana={2}{U} type=Creature @@ -79142,7 +79133,7 @@ toughness=2 [card] name=Steadfast Sentinel abilities=vigilance -autograveyard={4}{W}{W}{E}:name(Eternalize) clone and!( transforms((Zombie,removemc,setpower=4,settoughness=4,black)) forever )! assorcery +autograveyard={4}{W}{W}{E}:_ETERNALIZE_ text=Vigilance -- Eternalize {4}{W}{W} ({4}{W}{W}, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Human Cleric with no mana cost. Eternalize only as a sorcery.) mana={3}{W} type=Creature @@ -80878,7 +80869,7 @@ subtype=Desert name=Sunscourge Champion auto=transforms((,newability[life:power controller])) ueot ## the transforms is necessary to trigger the lifegain after the eternalize sets power to 4 ## -autograveyard={2}{W}{W}{D}{E}:name(Eternalize) clone and!( transforms((Zombie,removemc,setpower=4,settoughness=4,black)) forever )! assorcery +autograveyard={2}{W}{W}{D}{E}:_ETERNALIZE_ text=When Sunscourge Champion enters the battlefield, you gain life equal to its power. -- Eternalize-{2}{W}{W}, Discard a card. ({2}{W}{W}, Discard a card, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Human Wizard with no mana cost. Eternalize only as a sorcery.) mana={2}{W} type=Creature @@ -84766,8 +84757,9 @@ toughness=3 [/card] [card] name=Thrasher Brute -auto=@movedTo(Warrior|mybattlefield) life:-1 opponent -auto=@movedTo(Warrior|mybattlefield) life:1 +auto=life:-1 opponent && life:1 +auto=@movedTo(Warrior|mybattlefield):life:-1 opponent +auto=@movedTo(Warrior|mybattlefield):life:1 text=Whenever Thrasher Brute or another Warrior enters the battlefield under your team's control, target opponent loses 1 life and you gain 1 life. mana={3}{B} type=Creature @@ -84931,7 +84923,7 @@ type=Land [/card] [card] name=Throatseeker -auto=all(creature[ninja;-blocked;attacking]|mybattlefield) lifelink ueot +auto=lord(ninja[attacking;-blocked]|mybattlefield) lifelink text=Unblocked attacking Ninjas you control have lifelink. mana={2}{B} type=Creature @@ -85476,7 +85468,7 @@ name=Timeless Dragon abilities=flying aicode=activate target(plains|mylibrary) moveto(myhand) autohand={2}{cycle}:name(search card) Reveal:type:*:mylibrary revealzone(mylibrary) optionone name(choose card) target(<1>plains|reveal) transforms((,newability[all(other *|reveal) moveto(mylibrary) and!(shuffle)!],newability[moveto(myhand)])) optiononeend optiontwo name(shuffle) bottomoflibrary target(<1>*|reveal) and!( all(*|reveal) bottomoflibrary and!(shuffle)! )! optiontwoend revealend -autograveyard={2}{W}{W}{E}:name(Eternalize) clone and!( transforms((Zombie,removemc,setpower=4,settoughness=4,black)) forever )! assorcery +autograveyard={2}{W}{W}{E}:_ETERNALIZE_ text=Flying -- Plainscycling {2} ({2}, Discard this card: Search your library for a Plains card, reveal it, put it into your hand, then shuffle.) -- Eternalize {2}{W}{W} ({2}{W}{W}, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Dragon with no mana cost. Eternalize only as a sorcery.) mana={3}{W}{W} type=Creature @@ -85495,7 +85487,7 @@ type=Legendary Artifact [card] name=Timeless Witness auto=name(Return card) target(*|myGraveyard) moveTo(myHand) -autograveyard={5}{G}{G}{E}:name(Eternalize) clone and!( transforms((Zombie,removemc,setpower=4,settoughness=4,black)) forever )! assorcery +autograveyard={5}{G}{G}{E}:_ETERNALIZE_ text=When Timeless Witness enters the battlefield, return target card from your graveyard to your hand. -- Eternalize {5}{G}{G} ({5}{G}{G}, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Human Shaman with no mana cost. Eternalize only as a sorcery.) mana={2}{G}{G} type=Creature @@ -93378,7 +93370,7 @@ toughness=2 [card] name=Wildwood Scourge auto=counter(1/1,X) -auto=@counteradded(1/1) from(creature[-hydra]|mybattlefield):counter(1/1) all(this) +auto=@counteradded(1/1) from(other *[creature;-hydra]|mybattlefield):counter(1/1) all(this) text=Wildwood Scourge enters the battlefield with X +1/+1 counters on it. -- Whenever one or more +1/+1 counters are put on another non-Hydra creature you control, put a +1/+1 counter on Wildwood Scourge. mana={X}{G} type=Creature @@ -95505,7 +95497,7 @@ toughness=3 [card] name=Zhalfirin Shapecraft target=creature -auto=auto=becomes(,4/3) ueot +auto=becomes(,4/3) ueot auto=draw:1 controller text=Target creature has base power and toughness 4/3 until end of turn. -- Draw a card. mana={1}{U} diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index 841b598a6..eb0600d36 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -18675,7 +18675,7 @@ toughness=2 [/card] [card] name=Champion of Lambholt -auto=lord(*[power<=powerminus1minusend]|opponentbattlefield) cantblock +auto=lord(*[power<=pminus1minusend]|opponentbattlefield) cantblock auto=@movedto(other creature|myBattlefield):counter(1/1) text=Creatures with power less than Champion of Lambholt's power can't block creatures you control. -- Whenever another creature enters the battlefield under your control, put a +1/+1 counter on Champion of Lambholt. mana={1}{G}{G} @@ -26740,7 +26740,7 @@ type=Enchantment [/card] [card] name=Deadbridge Goliath -autograveyard=_SCAVENGE_({4}{G}{G}{E}) +autograveyard={4}{G}{G}{E}:_SCAVENGE_(storedpower) text=Scavenge {4}{G}{G} ({4}{G}{G}, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery.) mana={2}{G}{G} type=Creature @@ -31995,7 +31995,7 @@ type=Instant [/card] [card] name=Dreg Mangler -autograveyard={3}{B}{G}{E}:name(scavenge) counter(1/1,storedpower) target(creature) asSorcery +autograveyard={3}{B}{G}{E}:_SCAVENGE_(storedpower) abilities=haste text=Haste -- Scavenge {3}{B}{G} ({3}{B}{G}, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery.) mana={1}{B}{G} @@ -32573,7 +32573,7 @@ type=Land [/card] [card] name=Drudge Beetle -autograveyard=_SCAVENGE_({5}{G}{E}) +autograveyard={5}{G}{E}:_SCAVENGE_(storedpower) text=Scavenge {5}{G} ({5}{G}, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery.) mana={1}{G} type=Creature @@ -48863,7 +48863,7 @@ type=Artifact [card] name=Golgari Decoy abilities=lure -autograveyard=_SCAVENGE_({3}{G}{G}{E}) +autograveyard={3}{G}{G}{E}:_SCAVENGE_(storedpower) text=All creatures able to block Golgari Decoy do so. -- Scavenge {3}{G}{G} ({3}{G}{G}, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery.) mana={3}{G} type=Creature @@ -64250,7 +64250,7 @@ toughness=2 [/card] [card] name=Korozda Monitor -autograveyard=_SCAVENGE_({5}{G}{G}{E}) +autograveyard={5}{G}{G}{E}:_SCAVENGE_(storedpower) abilities=trample text=Trample -- Scavenge {5}{G}{G} ({5}{G}{G}, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery.) mana={2}{G}{G} @@ -69256,8 +69256,8 @@ subtype=Aura [/card] [card] name=Lux Cannon -auto={T}:counter(0/0,1,Charge) auto={T}{C(0/0,-3,Charge)}:destroy target(*) +auto={T}:counter(0/0,1,Charge) text={T}: Put a charge counter on Lux Cannon. -- {T}, Remove three charge counters from Lux Cannon: Destroy target permanent. mana={4} type=Artifact @@ -103077,7 +103077,7 @@ toughness=1 [/card] [card] name=Sewer Shambler -autograveyard=_SCAVENGE_({2}{B}{E}) +autograveyard={2}{B}{E}:_SCAVENGE_(storedpower) abilities=swampwalk text=Swampwalk (This creature is unblockable as long as defending player controls a Swamp.) -- Scavenge {2}{B} ({2}{B}, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery.) mana={2}{B} @@ -108126,7 +108126,7 @@ toughness=1 [/card] [card] name=Slitherhead -autograveyard={E}:name(scavenge) counter(1/1,storedpower) target(creature) asSorcery +autograveyard={E}:_SCAVENGE_(storedpower) text=Scavenge {0} ({0}, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery.) mana={BG} type=Creature @@ -108272,7 +108272,7 @@ subtype=Aura [/card] [card] name=Sluiceway Scorpion -autograveyard=_SCAVENGE_({1}{B}{G}{E}) +autograveyard={1}{B}{G}{E}:_SCAVENGE_(storedpower) abilities=deathtouch text=Deathtouch (Any amount of damage this deals to a creature is enough to destroy it.) -- Scavenge {1}{B}{G} ({1}{B}{G}, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery.) mana={2}{B}{G} @@ -119343,7 +119343,7 @@ type=Instant [/card] [card] name=Terrus Wurm -autograveyard=_SCAVENGE_({6}{B}{E}) +autograveyard={6}{B}{E}:_SCAVENGE_(storedpower) text=Scavenge {6}{B} ({6}{B}, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery.) mana={6}{B} type=Creature @@ -120816,7 +120816,7 @@ type=Artifact [card] name=Thrashing Mossdog abilities=Reach -autograveyard=_SCAVENGE_({4}{G}{G}{E}) +autograveyard={4}{G}{G}{E}:_SCAVENGE_(storedpower) text=Reach. (This creature can block creatures with flying.) -- Scavenge {4}{G}{G} ({4}{G}{G}, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery.) mana={3}{G} type=Creature @@ -136894,7 +136894,7 @@ toughness=6 [/card] [card] name=Zanikev Locust -autograveyard=_SCAVENGE_({2}{B}{B}{E}) +autograveyard={2}{B}{B}{E}:_SCAVENGE_(storedpower) abilities=flying text=Flying -- Scavenge {2}{B}{B} ({2}{B}{B}, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery.) mana={5}{B} diff --git a/projects/mtg/src/GameStateShop.cpp b/projects/mtg/src/GameStateShop.cpp index d1981820a..fb643da24 100644 --- a/projects/mtg/src/GameStateShop.cpp +++ b/projects/mtg/src/GameStateShop.cpp @@ -1069,7 +1069,7 @@ bool ShopBooster::unitTest() TestSuite::Log(result); res = false; } - sprintf(result, "==Test Succesful !==
"); + sprintf(result, "==Test Successful !==
"); TestSuite::Log(result); SAFE_DELETE(ddw); SAFE_DELETE(d); diff --git a/projects/mtg/src/TestSuiteAI.cpp b/projects/mtg/src/TestSuiteAI.cpp index 1e1bcc2e9..1b75c94d6 100644 --- a/projects/mtg/src/TestSuiteAI.cpp +++ b/projects/mtg/src/TestSuiteAI.cpp @@ -436,7 +436,7 @@ void TestSuiteGame::assertGame() handleResults(wasAI, error); if(!error) - Log("==Test Succesful !=="); + Log("==Test Successful !=="); else Log("==Test Failed !=="); #ifdef CAPTURE_STDERR