From 66741957c36bb8eb79f2c2f3e6735274011db497 Mon Sep 17 00:00:00 2001 From: Eduardo Date: Sun, 5 May 2019 21:14:27 -0500 Subject: [PATCH] Revert "Fixes to primitives" This reverts commit eb7d8850f4f99e4064b4cd7dda82920d7f07d603. --- projects/mtg/bin/Res/rules/mtg.txt | 72 ++++++++++++++++++++ projects/mtg/bin/Res/sets/primitives/AKH.txt | 2 +- projects/mtg/bin/Res/sets/primitives/BBD.txt | 2 +- projects/mtg/bin/Res/sets/primitives/RNA.txt | 3 +- projects/mtg/bin/Res/sets/primitives/WAR.txt | 4 +- projects/mtg/bin/Res/sets/primitives/XLN.txt | 21 +++--- projects/mtg/bin/Res/sets/primitives/mtg.txt | 16 ++--- projects/mtg/src/GuiHand.cpp | 2 +- projects/mtg/src/Rules.cpp | 6 +- 9 files changed, 98 insertions(+), 30 deletions(-) create mode 100644 projects/mtg/bin/Res/rules/mtg.txt diff --git a/projects/mtg/bin/Res/rules/mtg.txt b/projects/mtg/bin/Res/rules/mtg.txt new file mode 100644 index 000000000..cdbb3a61b --- /dev/null +++ b/projects/mtg/bin/Res/rules/mtg.txt @@ -0,0 +1,72 @@ +# This is the basic rules for MTG. +# Do not add any "Draw X cards at startup" or "shuffle" here, as the story mode and the test suite rely on this +# file, and they usually don't expect the draw rule or shuffle to happen +# If you want shuffle or draw events, put them directly in your own rules file that includes this file, see clasic.txt for example +hidden +[INIT] +mode=mtg + +#MTG Game specific rules +auto=bonusrule +auto=putinplayrule +auto=kickerrule +auto=alternativecostrule +auto=buybackrule +auto=flashbackrule +auto=retracerule +auto=suspendrule +auto=morphrule +auto=payzerorule +auto=overloadrule +auto=attackrule +auto=attackcostrule +auto=blockrule +auto=blockcostrule +auto=combattriggerrule +auto=legendrule +auto=planeswalkerrule +auto=planeswalkerdamage +auto=planeswalkerattack +auto=tokencleanuprule +auto=persistrule +auto=vampirerule +auto=unearthrule +auto=lifelinkrule +auto=deathtouchrule +auto=soulbondrule +auto=dredgerule +auto=bestowrule + +[PLAYERS] +life:20 +offerinterruptonphase=draw + +auto=sethand:7 +auto=@each my draw:draw:1 +auto=maxPlay(land)1 + + +#Lands Mana Rules +auto=lord(Plains[-noactivatedability;-nomanaability;-notapability;land]|MyBattlefield) {T}:Add{W} +auto=lord(Island[-noactivatedability;-nomanaability;-notapability;land]|MyBattlefield) {T}:Add{U} +auto=lord(Swamp[-noactivatedability;-nomanaability;-notapability;land]|MyBattlefield) {T}:Add{B} +auto=lord(Mountain[-noactivatedability;-nomanaability;-notapability;land]|MyBattlefield) {T}:Add{R} +auto=lord(Forest[-noactivatedability;-nomanaability;-notapability;land]|MyBattlefield) {T}:Add{G} + + +#Mana Empties from manapool at the end of each phase +auto=@each untap:removeMana(*) +auto=@each upkeep:removeMana(*) +auto=@each draw:removeMana(*) +auto=@each firstmain:removeMana(*) +auto=@each combatbegins:removeMana(*) +auto=@each attackers:removeMana(*) +auto=@each blockers:removeMana(*) +auto=@each combatdamage:removeMana(*) +auto=@each combatEnds:removeMana(*) +auto=@each secondmain:removeMana(*) +auto=@each end:removeMana(*) +auto=@each cleanup:removeMana(*) + +#reset Creature damage at the cleanup phase +auto=@each cleanup:all(*|myBattlefield) resetDamage \ No newline at end of file diff --git a/projects/mtg/bin/Res/sets/primitives/AKH.txt b/projects/mtg/bin/Res/sets/primitives/AKH.txt index 15a282a39..8e6517956 100644 --- a/projects/mtg/bin/Res/sets/primitives/AKH.txt +++ b/projects/mtg/bin/Res/sets/primitives/AKH.txt @@ -2278,7 +2278,7 @@ type=Artifact [card] name=Rhonas's Monument auto=lord(creature[green]|mycastingzone) altercost(colorless,-1) -auto=@movedto(creature|mystack):target(creature|mybattlefield) transforms((,newability[2/2 ueot],newability[trample ueot])) +auto=@movedto(creature|mystack):target(creature|mybattlefield) 2/2 ueot && trample ueot text=Green creature spells you cast cost {1} less to cast. -- Whenever you cast a creature spell, target creature you control gets +2/+2 and gains trample until end of turn. mana={3} type=Legendary Artifact diff --git a/projects/mtg/bin/Res/sets/primitives/BBD.txt b/projects/mtg/bin/Res/sets/primitives/BBD.txt index e8ddd8195..14cba9f87 100644 --- a/projects/mtg/bin/Res/sets/primitives/BBD.txt +++ b/projects/mtg/bin/Res/sets/primitives/BBD.txt @@ -288,7 +288,7 @@ auto=draw:7 opponent auto=moveto(mylibrary) all(*|myhand) auto=moveto(mylibrary) all(*|mygraveyard) && shuffle auto=draw:7 controller -auto=moveto(exile) +auto=moveto(exile) all(this) text=Assist (Another player can pay up to {5} of this spell's cost.) -- Each player shuffles their hand and graveyard into their library, then draws seven cards. Exile Game Plan. mana={5}{U} type=Sorcery diff --git a/projects/mtg/bin/Res/sets/primitives/RNA.txt b/projects/mtg/bin/Res/sets/primitives/RNA.txt index d7b92c065..a187a42fe 100644 --- a/projects/mtg/bin/Res/sets/primitives/RNA.txt +++ b/projects/mtg/bin/Res/sets/primitives/RNA.txt @@ -238,8 +238,7 @@ toughness=2 [card] name=Unbreakable Formation -auto=if compare(restriction{assorcery}~morethan~0) then all(creature|myBattlefield) counter(1/1) -auto=if compare(restriction{assorcery}~morethan~0) then all(creature|myBattlefield) vigilance +auto=if compare(restriction{assorcery}~morethan~0) then all(creature|myBattlefield) counter(1/1) else auto=all(creature|myBattlefield) indestructible ueot text=Creatures you control gain indestructible until end of turn. -- Addendum — If you cast this spell during your main phase, put a +1/+1 counter on each of those creatures and they gain vigilance until end of turn. mana={2}{W} diff --git a/projects/mtg/bin/Res/sets/primitives/WAR.txt b/projects/mtg/bin/Res/sets/primitives/WAR.txt index 3f056bd57..cdeed6070 100644 --- a/projects/mtg/bin/Res/sets/primitives/WAR.txt +++ b/projects/mtg/bin/Res/sets/primitives/WAR.txt @@ -501,9 +501,7 @@ subtype=Davriel [card] name=Deathsprout target=creature -auto=destroy -aicode=activate moveTo(myBattlefield) and!(tap(noevent))! target(*[basic]|myLibrary) -auto=name(search card) reveal:plibrarycount optionone name(choose card) target(*[basic]|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=destroy and!(moveTo(myBattlefield) and!(tap(noevent))! target(land[basic]|myLibrary))! text=Destroy target creature. Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library. mana={1}{B}{B}{G} type=Instant diff --git a/projects/mtg/bin/Res/sets/primitives/XLN.txt b/projects/mtg/bin/Res/sets/primitives/XLN.txt index 8500d254c..6c64b1b20 100644 --- a/projects/mtg/bin/Res/sets/primitives/XLN.txt +++ b/projects/mtg/bin/Res/sets/primitives/XLN.txt @@ -150,7 +150,7 @@ toughness=3 [card] name=Imperial Lancer -auto=aslongas(dinosaur|mybattlefield) double strike +auto=aslongas type(dinosaur|mybattlefield)~morethan~0 double strike text=Imperial Lancer has double strike as long as you control a Dinosaur. mana={W} type=Creature @@ -601,7 +601,7 @@ toughness=2 name=Lookout's Dispersal target=*|stack auto=name(counter spell) target(*|stack) transforms((,newability[pay[[{2}]] name(pay 2 mana) donothing?fizzle])) forever -autohand=aslongas(pirate|mybattlefield) altercost(colorless,-1) +autohand=aslongas type(pirate|mybattlefield)~morethan~0 altercost(colorless,-1) text=Lookout's Dispersal costs {1} less to cast if you control a Pirate. -- Counter target spell unless its controller pays {4}. mana={2}{U} type=Instant @@ -725,7 +725,7 @@ type=Legendary Land [card] name=Shaper Apprentice -auto=aslongas(other merfolk|mybattlefield) flying +auto=aslongas type(other merfolk|mybattlefield)~morethan~0 then flying text=Shaper Apprentice has flying as long as you control another Merfolk. mana={1}{U} type=Creature @@ -1004,7 +1004,7 @@ toughness=4 [card] name=Desperate Castaways -auto=aslongas(artifact|mybattlefield)<1 cantattack +auto=aslongas type(artifact|mybattlefield) ~lessthan~ 0 then cantattack text=Desperate Castaways can't attack unless you control an artifact. mana={1}{B} type=Creature @@ -1372,6 +1372,7 @@ toughness=2 [card] name=Captivating Crew +abilities=haste auto={3}{R}:target(creature) untap && haste && alias=129767 text={3}{R}: Gain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn. Activate this ability only any time you could cast a sorcery. mana={3}{R} @@ -1453,7 +1454,7 @@ toughness=2 [card] name=Headstrong Brute abilities=cantblock -auto=aslongas(other pirate|mybattlefield) menace +auto=aslongas type(other pirate|mybattlefield)~morethan~0 then menace text=Headstrong Brute can't block. -- Headstrong Brute has menace as long as you control another Pirate. mana={2}{R} type=Creature @@ -1641,8 +1642,8 @@ subtype=Aura [card] name=Thrash of Raptors -auto=aslongas(other dinosaur|mybattlefield) 2/0 -auto=aslongas(other dinosaur|mybattlefield) trample +auto=aslongas type(dinosaur|mybattlefield)~morethan~0 then 2/0 +auto=aslongas type(dinosaur|mybattlefield)~morethan~0 then trample text=As long as you control another Dinosaur, Thrash of Raptors gets +2/+0 and has trample. mana={3}{R} type=Creature @@ -1950,7 +1951,7 @@ toughness=1 [card] name=Kumena's Speaker -auto=aslongas(other merfolk,island|mybattlefield) 1/1 +auto=aslongas type(other merfolk,island|mybattlefield)~morethan~0 then 1/1 text=Kumena's Speaker gets +1/+1 as long as you control another Merfolk or an Island. mana={G} type=Creature @@ -2628,8 +2629,8 @@ type=Sorcery [card] name=Jace's Sentinel -auto=aslongas(jace|mybattlefield) 1/0 -auto=aslongas(jace|mybattlefield) unblockable +auto=aslongas type(jace|mybattlefield)~morethan~0 then 1/0 +auto=aslongas type(jace|mybattlefield)~morethan~0 then unblockable text=As long as you control a Jace planeswalker, Jace's Sentinel gets +1/+0 and can't be blocked. mana={1}{U} type=Creature diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index 85dff418e..cf03a338f 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -15273,9 +15273,8 @@ toughness=2 [/card] [card] name=Brood Birthing -auto=aslongas(eldrazi spawn|myBattlefield) token(Eldrazi Spawn,Creature Eldrazi Spawn,0/1) and!( transforms((,newability[{S}:Add{1}])) forever )!*2 -auto=token(Eldrazi Spawn,Creature Eldrazi Spawn,0/1) and!( transforms((,newability[{S}:Add{1}])) forever )! -text=If you control an Eldrazi Spawn, create three 0/1 colorless Eldrazi Spawn creature tokens. They have "Sacrifice this creature: Add {C}." Otherwise, create one of those tokens. +auto=aslongas(eldrazi spawn|myBattlefield) token(Eldrazi Spawn,Creature Eldrazi Spawn,0/1) and!( transforms((,newability[{S}:Add{1}])) forever )!*3 +text=If you control at least one 0/1 Eldrazi Spawn creature token, put three 0/1 colorless Eldrazi Spawn creature tokens onto the battlefield. They have "Sacrifice this creature: Add {1} to your mana pool." mana={1}{R} type=Sorcery [/card] @@ -19979,7 +19978,7 @@ toughness=1 [card] name=Cinder Shade auto={B}:1/1 -auto={R}{S}:target(other creature) dynamicability +auto={R}{S}:target(other creature) dynamicability! text={B}: Cinder Shade gets +1/+1 until end of turn. -- {R}, Sacrifice Cinder Shade: Cinder Shade deals damage equal to its power to target creature. mana={1}{B}{R} type=Creature @@ -67814,7 +67813,7 @@ toughness=7 name=Liturgy of Blood target=creature auto=destroy -auto=add{B}{B}{B} controller +auto=add{B}{B}{B} text=Destroy target creature. Add {B}{B}{B} to your mana pool. mana={3}{B}{B} type=Sorcery @@ -68040,7 +68039,7 @@ toughness=1 [/card] [card] name=Llanowar Empath -auto=scry:2 scrycore choice name(Choose creature) target(<1>creature|reveal) moveto(myhand) scrycoreend scryend +auto=scry:2 scrycore choice name(Choose creature) target(creature|reveal) moveto(myhand) scrycoreend scryend text=When Llanowar Empath enters the battlefield, scry 2, then reveal the top card of your library. If it's a creature card, put it into your hand. (To scry 2, look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) mana={3}{G} type=Creature @@ -69588,7 +69587,6 @@ type=Sorcery [/card] [card] name=Madcap Skills -target=creature auto=teach(creature) +3/0 auto=teach(creature) menace text=Enchant creature -- Enchanted creature gets +3/+0 and can't be blocked except by two or more creatures. @@ -81179,7 +81177,7 @@ toughness=1 [/card] [card] name=Noyan Dar, Roil Shaper -auto=@movedto(*[instant;sorcery]|mystack):may target(land|mybattlefield) transforms((Elemental Creature,newability[counter(1/1.3)],newability[haste])) forever +auto=@movedto(*[instant;sorcery]|mystack):may target(land|mybattlefield) transforms((Elemental Creature,newability[counter(1/1,3)],newability[haste])) forever text=Whenever you cast an instant or sorcery spell, you may put three +1/+1 counters on target land you control. If you do, that land becomes a 0/0 Elemental creature with haste that's still a land. mana={3}{W}{U} type=Legendary Creature @@ -106317,7 +106315,7 @@ type=Instant [/card] [card] name=Sin Collector -auto=target(opponent) reveal:type:*:targetedpersonshand revealzone(targetedpersonshand) optionone name(choose card) notatarget(<1>*[instant;sorcery]|reveal) moveto(exile) optiononeend optiontwo all(*|reveal) moveto(ownerhand) optiontwoend revealend +auto=target(opponent) reveal:type:*:targetedpersonshand revealzone(targetedpersonshand) optionone name(choose card) notatarget(<1>*[instant;sorcery]|reveal) moveto(exile) optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerhand) and!( all(*|reveal) moveto(ownerhand) )! optiontwoend revealend text=When Sin Collector enters the battlefield target opponent reveals his or her hand. You choose an instant or a sorcery card from it and exile that card. mana={1}{W}{B} type=Creature diff --git a/projects/mtg/src/GuiHand.cpp b/projects/mtg/src/GuiHand.cpp index 4816fba0a..deae8f3dc 100644 --- a/projects/mtg/src/GuiHand.cpp +++ b/projects/mtg/src/GuiHand.cpp @@ -84,7 +84,7 @@ void GuiHandOpponent::Render() { (*it)->x = x; (*it)->y = 2; - (*it)->zoom = 0.35f; + (*it)->zoom = 0.3f; (*it)->Render(quad.get()); if(cards.size() > 12) x += 240/cards.size(); diff --git a/projects/mtg/src/Rules.cpp b/projects/mtg/src/Rules.cpp index 59d9887f9..9803c3c18 100644 --- a/projects/mtg/src/Rules.cpp +++ b/projects/mtg/src/Rules.cpp @@ -428,11 +428,11 @@ Player * Rules::loadPlayerHorde(GameObserver* observer, int isAI) const char* const multicolorTribes[] = { "Ally", "Eldrazi", "Elemental", "Golem", "Hound", "Human", "Knight", "Myr", "Samurai", "Shaman", "Shapeshifter", "Sliver", "Soldier", "Spellshaper", "Spirit", "Warrior", "Wizard" }; - const char* const whiteTribes[] = { "Angel", "Bird", "Cat", "Cleric", "Griffin", "Kithkin", "Knight", "Soldier", "Spirit", "Wizard" }; + const char* const whiteTribes[] = { "Angel", "Bird", "Cat", "cleric", "Griffin", "Kithkin", "Knight", "Soldier", "Spirit", "Wizard" }; const char* const blueTribes[] = { "Artificer", "Bird", "Drake", "Faerie", "Illusion", "Merfolk", "Spirit", "Vedalken", "Wizard", "Zombie" }; const char* const blackTribes[] = { "Cleric", "Demon", "Faerie", "Horror", "Pirate", "Rat", "Rogue", "Shade", "Skeleton", "Vampire", "Wizard", "Zombie" }; - const char* const redTribes[] = { "Barbarian", "Berserker", "Cat", "Devil", "Dragon", "Goblin", "Minotaur", "Ogre", "Werewolf", "Wizard" }; - const char* const greenTribes[] = { "Beast", "Cat", "Centaur", "Dinosaur", "Druid", "Elf", "Fungus", "Plant", "Snake", "Spider", "Treefolk", "Werewolf", "Wizard" }; + const char* const redTribes[] = { "Barbarian", "Berserker"," Cat", "Devil", "Dragon", "Goblin", "Minotaur", "Ogre", "Werewolf", "Wizard" }; + const char* const greenTribes[] = { "Beast", "Cat", "Centaur", "Dinosaur", "Druid", "Elf", "Fungus", "Snake", "Spider", "Treefolk", "Werewolf", "Wizard" }; int multicolorTribesSize = sizeof(multicolorTribes)/sizeof(multicolorTribes[0]); int whiteTribesSize = sizeof(whiteTribes)/sizeof(whiteTribes[0]);