72
projects/mtg/bin/Res/rules/mtg.txt
Normal file
72
projects/mtg/bin/Res/rules/mtg.txt
Normal file
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<!powerstrike!>
|
||||
auto={R}{S}:target(other creature) dynamicability<!powerstrike>!
|
||||
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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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 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]);
|
||||
|
||||
Reference in New Issue
Block a user