diff --git a/projects/mtg/bin/Res/rules/mtg.txt b/projects/mtg/bin/Res/rules/mtg.txt deleted file mode 100644 index cdbb3a61b..000000000 --- a/projects/mtg/bin/Res/rules/mtg.txt +++ /dev/null @@ -1,72 +0,0 @@ -# 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 8e6517956..15a282a39 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) 2/2 ueot && trample ueot +auto=@movedto(creature|mystack):target(creature|mybattlefield) transforms((,newability[2/2 ueot],newability[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 14cba9f87..e8ddd8195 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) all(this) +auto=moveto(exile) 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 a187a42fe..d7b92c065 100644 --- a/projects/mtg/bin/Res/sets/primitives/RNA.txt +++ b/projects/mtg/bin/Res/sets/primitives/RNA.txt @@ -238,7 +238,8 @@ toughness=2 [card] name=Unbreakable Formation -auto=if compare(restriction{assorcery}~morethan~0) then all(creature|myBattlefield) counter(1/1) else +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=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 cdeed6070..3f056bd57 100644 --- a/projects/mtg/bin/Res/sets/primitives/WAR.txt +++ b/projects/mtg/bin/Res/sets/primitives/WAR.txt @@ -501,7 +501,9 @@ subtype=Davriel [card] name=Deathsprout target=creature -auto=destroy and!(moveTo(myBattlefield) and!(tap(noevent))! target(land[basic]|myLibrary))! +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 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 6c64b1b20..8500d254c 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 type(dinosaur|mybattlefield)~morethan~0 double strike +auto=aslongas(dinosaur|mybattlefield) 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 type(pirate|mybattlefield)~morethan~0 altercost(colorless,-1) +autohand=aslongas(pirate|mybattlefield) 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 type(other merfolk|mybattlefield)~morethan~0 then flying +auto=aslongas(other merfolk|mybattlefield) 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 type(artifact|mybattlefield) ~lessthan~ 0 then cantattack +auto=aslongas(artifact|mybattlefield)<1 cantattack text=Desperate Castaways can't attack unless you control an artifact. mana={1}{B} type=Creature @@ -1372,7 +1372,6 @@ 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} @@ -1454,7 +1453,7 @@ toughness=2 [card] name=Headstrong Brute abilities=cantblock -auto=aslongas type(other pirate|mybattlefield)~morethan~0 then menace +auto=aslongas(other pirate|mybattlefield) menace text=Headstrong Brute can't block. -- Headstrong Brute has menace as long as you control another Pirate. mana={2}{R} type=Creature @@ -1642,8 +1641,8 @@ subtype=Aura [card] name=Thrash of Raptors -auto=aslongas type(dinosaur|mybattlefield)~morethan~0 then 2/0 -auto=aslongas type(dinosaur|mybattlefield)~morethan~0 then trample +auto=aslongas(other dinosaur|mybattlefield) 2/0 +auto=aslongas(other dinosaur|mybattlefield) trample text=As long as you control another Dinosaur, Thrash of Raptors gets +2/+0 and has trample. mana={3}{R} type=Creature @@ -1951,7 +1950,7 @@ toughness=1 [card] name=Kumena's Speaker -auto=aslongas type(other merfolk,island|mybattlefield)~morethan~0 then 1/1 +auto=aslongas(other merfolk,island|mybattlefield) 1/1 text=Kumena's Speaker gets +1/+1 as long as you control another Merfolk or an Island. mana={G} type=Creature @@ -2629,8 +2628,8 @@ type=Sorcery [card] name=Jace's Sentinel -auto=aslongas type(jace|mybattlefield)~morethan~0 then 1/0 -auto=aslongas type(jace|mybattlefield)~morethan~0 then unblockable +auto=aslongas(jace|mybattlefield) 1/0 +auto=aslongas(jace|mybattlefield) 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 cf03a338f..85dff418e 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -15273,8 +15273,9 @@ 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 )!*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." +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. mana={1}{R} type=Sorcery [/card] @@ -19978,7 +19979,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 @@ -67813,7 +67814,7 @@ toughness=7 name=Liturgy of Blood target=creature auto=destroy -auto=add{B}{B}{B} +auto=add{B}{B}{B} controller text=Destroy target creature. Add {B}{B}{B} to your mana pool. mana={3}{B}{B} type=Sorcery @@ -68039,7 +68040,7 @@ toughness=1 [/card] [card] name=Llanowar Empath -auto=scry:2 scrycore choice name(Choose creature) target(creature|reveal) moveto(myhand) scrycoreend scryend +auto=scry:2 scrycore choice name(Choose creature) target(<1>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 @@ -69587,6 +69588,7 @@ 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. @@ -81177,7 +81179,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 @@ -106315,7 +106317,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 name(put back) target(<1>*|reveal) moveto(ownerhand) and!( 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 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 deae8f3dc..4816fba0a 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.3f; + (*it)->zoom = 0.35f; (*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 9803c3c18..59d9887f9 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", "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", "Plant", "Snake", "Spider", "Treefolk", "Werewolf", "Wizard" }; int multicolorTribesSize = sizeof(multicolorTribes)/sizeof(multicolorTribes[0]); int whiteTribesSize = sizeof(whiteTribes)/sizeof(whiteTribes[0]);