Revert "Fixes to primitives"

This reverts commit eb7d8850f4.
This commit is contained in:
Eduardo
2019-05-05 21:14:27 -05:00
parent eb7d8850f4
commit 66741957c3
9 changed files with 98 additions and 30 deletions

View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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();

View File

@@ -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]);