Fixed Commander Format selection of identity color, added/fixed primitives related to commanders abilities.

This commit is contained in:
valfieri
2020-12-08 00:32:33 +01:00
parent d6a1a8eda8
commit d18232df10
3 changed files with 69 additions and 44 deletions

View File

@@ -1783,7 +1783,7 @@ auto=if type(*[white]|myzones)~morethan~0 then transforms((,newability[{T}:add{W
auto=if type(*[green]|myzones)~morethan~0 then transforms((,newability[{T}:add{G}])) forever auto=if type(*[green]|myzones)~morethan~0 then transforms((,newability[{T}:add{G}])) forever
auto=if type(*[blue]|myzones)~morethan~0 then transforms((,newability[{T}:add{U}])) forever auto=if type(*[blue]|myzones)~morethan~0 then transforms((,newability[{T}:add{U}])) forever
auto=if type(*[black]|myzones)~morethan~0 then transforms((,newability[{T}:add{B}])) forever auto=if type(*[black]|myzones)~morethan~0 then transforms((,newability[{T}:add{B}])) forever
auto=if type(artifact|myzones)~morethan~0 then transforms((,newability[{T}:add{C}])) forever auto=if type(*[-black;-red;-white;-blue;-green]|myzones)~morethan~0 then transforms((,newability[{T}:add{C}])) forever
text={T}: Add one mana of any color in your commander's color identity. text={T}: Add one mana of any color in your commander's color identity.
mana={2} mana={2}
type=Artifact type=Artifact
@@ -8235,7 +8235,7 @@ auto=if type(*[white]|myzones)~morethan~0 then transforms((,newability[{T}:add{W
auto=if type(*[green]|myzones)~morethan~0 then transforms((,newability[{T}:add{G}])) forever auto=if type(*[green]|myzones)~morethan~0 then transforms((,newability[{T}:add{G}])) forever
auto=if type(*[blue]|myzones)~morethan~0 then transforms((,newability[{T}:add{U}])) forever auto=if type(*[blue]|myzones)~morethan~0 then transforms((,newability[{T}:add{U}])) forever
auto=if type(*[black]|myzones)~morethan~0 then transforms((,newability[{T}:add{B}])) forever auto=if type(*[black]|myzones)~morethan~0 then transforms((,newability[{T}:add{B}])) forever
auto=if type(artifact|myzones)~morethan~0 then transforms((,newability[{T}:add{C}])) forever auto=if type(*[-black;-red;-white;-blue;-green]|myzones)~morethan~0 then transforms((,newability[{T}:add{C}])) forever
text={T}: Add to your mana pool one mana of any color in your commander's color identity. text={T}: Add to your mana pool one mana of any color in your commander's color identity.
type=Land type=Land
[/card] [/card]
@@ -8273,7 +8273,7 @@ auto=if type(*[white]|myzones)~lessthan~1 then teach(creature) protection from w
auto=if type(*[green]|myzones)~lessthan~1 then teach(creature) protection from green auto=if type(*[green]|myzones)~lessthan~1 then teach(creature) protection from green
auto=if type(*[blue]|myzones)~lessthan~1 then teach(creature) protection from blue auto=if type(*[blue]|myzones)~lessthan~1 then teach(creature) protection from blue
auto=if type(*[black]|myzones)~lessthan~1 then teach(creature) protection from black auto=if type(*[black]|myzones)~lessthan~1 then teach(creature) protection from black
auto=if type(artifact|myzones)~lessthan~1 then teach(creature) protection from(artifact) auto=if type(*[-black;-red;-white;-blue;-green]|myzones)~lessthan~1 then teach(creature) protection from(artifact)
text=Equipped creature gets +3/+3 and has protection from each color that's not in your commander's color identity. -- Equip commander {3} -- Equip {5} text=Equipped creature gets +3/+3 and has protection from each color that's not in your commander's color identity. -- Equip commander {3} -- Equip {5}
mana={1} mana={1}
type=Artifact type=Artifact
@@ -8286,7 +8286,7 @@ auto=if type(*[white]|myzones)~morethan~0 then transforms((,newability[{T}:add{W
auto=if type(*[green]|myzones)~morethan~0 then transforms((,newability[{T}:add{G}])) forever auto=if type(*[green]|myzones)~morethan~0 then transforms((,newability[{T}:add{G}])) forever
auto=if type(*[blue]|myzones)~morethan~0 then transforms((,newability[{T}:add{U}])) forever auto=if type(*[blue]|myzones)~morethan~0 then transforms((,newability[{T}:add{U}])) forever
auto=if type(*[black]|myzones)~morethan~0 then transforms((,newability[{T}:add{B}])) forever auto=if type(*[black]|myzones)~morethan~0 then transforms((,newability[{T}:add{B}])) forever
auto=if type(artifact|myzones)~morethan~0 then transforms((,newability[{T}:add{C}])) forever auto=if type(*[-black;-red;-white;-blue;-green]|myzones)~morethan~0 then transforms((,newability[{T}:add{C}])) forever
auto={S}:draw:1 controller auto={S}:draw:1 controller
text={T}: Add to your mana pool one mana of any color in your commander's color identity. -- Sacrifice Commander's Sphere: Draw a card. text={T}: Add to your mana pool one mana of any color in your commander's color identity. -- Sacrifice Commander's Sphere: Draw a card.
mana={3} mana={3}
@@ -29242,6 +29242,14 @@ mana={2}{U}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Myth Unbound
auto=thisforeach(variable{pnumofcommandcast}) lord(*[iscommander]|mycastingzone) altercost(colorless, -1)
auto=@movedto(*[iscommander]|mycommandzone):draw:1 controller
text=Your commander costs {1} less to cast for each time it's been cast from the command zone this game. -- Whenever your commander is put into the command zone from anywhere, draw a card.
mana={2}{G}
type=Enchantment
[/card]
[card]
name=Mythos of Brokkos name=Mythos of Brokkos
abilities=hiddenface abilities=hiddenface
aicode=activate moveto(myGraveyard) target(*|mylibrary) aicode=activate moveto(myGraveyard) target(*|mylibrary)
@@ -31416,6 +31424,19 @@ mana={2}{W}
type=Enchantment type=Enchantment
[/card] [/card]
[card] [card]
name=Opal Palace
auto={T}:add{C}
auto=if type(*[red]|myzones)~morethan~0 then transforms((,newability[{T}:add{R}])) forever
auto=if type(*[white]|myzones)~morethan~0 then transforms((,newability[{T}:add{W}])) forever
auto=if type(*[green]|myzones)~morethan~0 then transforms((,newability[{T}:add{G}])) forever
auto=if type(*[blue]|myzones)~morethan~0 then transforms((,newability[{T}:add{U}])) forever
auto=if type(*[black]|myzones)~morethan~0 then transforms((,newability[{T}:add{B}])) forever
auto=if type(*[-black;-red;-white;-blue;-green]|myzones)~morethan~0 then transforms((,newability[{T}:add{C}])) forever
auto=@movedto(*[iscommander]|mybattlefield) from(mycommandzone):all(trigger[to]) counter(1/1,pnumofcommandcast) limit:1
text={T}: Add {C} to your mana pool. -- {1}, {T}: Add to your mana pool one mana of any color in your commander's color identity. If you spend this mana to cast your commander, it enters the battlefield with a number of additional +1/+1 counters on it equal to the number of times it's been cast from the command zone this game.
type=Land
[/card]
[card]
name=Opal Titan name=Opal Titan
auto=@movedTo(creature[blue]|opponentstack):transforms((removetypes)) forever && transforms((Giant Creature,setpower=4,settoughness=4,newability[protection from blue)) forever auto=@movedTo(creature[blue]|opponentstack):transforms((removetypes)) forever && transforms((Giant Creature,setpower=4,settoughness=4,newability[protection from blue)) forever
auto=@movedTo(creature[white]|opponentstack):transforms((removetypes)) forever && transforms((Giant Creature,setpower=4,settoughness=4,newability[protection from white)) forever auto=@movedTo(creature[white]|opponentstack):transforms((removetypes)) forever && transforms((Giant Creature,setpower=4,settoughness=4,newability[protection from white)) forever
@@ -41044,6 +41065,14 @@ power=3
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Skull Storm
auto=if type(creature|opponentbattlefield)~lessthan~compare(pnumofcommandcastplus1plusend) then life:-halfupopponentlifetotal opponent
auto=thisforeach(variable{pnumofcommandcastplus1plusend}) ability$!name(sacrifice creature) notatarget(creature|mybattlefield) sacrifice!$ opponent
text=When you cast this spell, copy it for each time you've cast your commander from the command zone this game. -- Each opponent sacrifices a creature. Each opponent who can't loses half their life, rounded up.
mana={7}{B}{B}
type=Sorcery
[/card]
[card]
name=Skullcrack name=Skullcrack
#MISSING:Damage can't be prevented #MISSING:Damage can't be prevented
auto=transforms((,newability[nolifegain],newability[nolifegainopponent])) ueot auto=transforms((,newability[nolifegain],newability[nolifegainopponent])) ueot
@@ -52596,6 +52625,18 @@ power=0
toughness=0 toughness=0
[/card] [/card]
[card] [card]
name=Yuriko, the Tiger's Shadow
autohand={U}{B}{N}:ninjutsu
auto=@combatdamagefoeof(player) from(ninja|myBattlefield):moveto(myhand) and!( transforms((,newability[damage:manacost opponent])) ueot )! all(*[zpos=1]|mylibrary)
auto=@combatdamageof(player) from(ninja|myBattlefield):moveto(myhand) and!( transforms((,newability[damage:manacost controller])) ueot )! all(*[zpos=1]|mylibrary)
text=Commander ninjutsu {U}{B} ({U}{B}, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand or the command zone tapped and attacking.) -- Whenever a Ninja you control deals combat damage to a player, reveal the top card of your library and put that card into your hand. Each opponent loses life equal to that card's converted mana cost.
mana={1}{U}{B}
type=Legendary Creature
subtype=Human Ninja
power=1
toughness=3
[/card]
[card]
name=Yurlok of Scorch Thrash name=Yurlok of Scorch Thrash
abilities=vigilance abilities=vigilance
auto={1}{T}:add{B}{R}{G} && add{B}{R}{G} opponent auto={1}{T}:add{B}{R}{G} && add{B}{R}{G} opponent

View File

@@ -9086,12 +9086,6 @@ type=Enchantment
subtype=Aura subtype=Aura
[/card] [/card]
[card] [card]
name=Myth Unbound
text=Your commander costs {1} less to cast for each time it's been cast from the command zone this game. -- Whenever your commander is put into the command zone from anywhere, draw a card.
mana={2}{G}
type=Enchantment
[/card]
[card]
name=Mythos of Snapdax name=Mythos of Snapdax
text=Each player chooses an artifact, a creature, an enchantment, and a planeswalker from among the nonland permanents they control, then sacrifices the rest. If {B}{R} was spent to cast this spell, you choose the permanents for each player instead. text=Each player chooses an artifact, a creature, an enchantment, and a planeswalker from among the nonland permanents they control, then sacrifices the rest. If {B}{R} was spent to cast this spell, you choose the permanents for each player instead.
mana={2}{W}{W} mana={2}{W}{W}
@@ -9649,11 +9643,6 @@ power=3
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Opal Palace
text={T}: Add {C} to your mana pool. -- {1}, {T}: Add to your mana pool one mana of any color in your commander's color identity. If you spend this mana to cast your commander, it enters the battlefield with a number of additional +1/+1 counters on it equal to the number of times it's been cast from the command zone this game.
type=Land
[/card]
[card]
name=Opal-Eye, Konda's Yojimbo name=Opal-Eye, Konda's Yojimbo
abilities=defender abilities=defender
text=Defender (This creature can't attack.) -- Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) -- {T}: The next time a source of your choice would deal damage this turn, that damage is dealt to Opal-Eye, Konda's Yojimbo instead. -- {1}{W}: Prevent the next 1 damage that would be dealt to Opal-Eye this turn. text=Defender (This creature can't attack.) -- Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) -- {T}: The next time a source of your choice would deal damage this turn, that damage is dealt to Opal-Eye, Konda's Yojimbo instead. -- {1}{W}: Prevent the next 1 damage that would be dealt to Opal-Eye this turn.
@@ -9963,11 +9952,6 @@ power=3
toughness=3 toughness=3
[/card] [/card]
[card] [card]
name=Path of Ancestry
text=Path of Ancestry enters the battlefield tapped. -- {T}: Add one mana of any color in your commander's color identity. When that mana is spent to cast a creature spell that shares a creature type with your commander, scry 1.
type=Land
[/card]
[card]
name=Patriarch's Bidding name=Patriarch's Bidding
text=Each player chooses a creature type. Each player returns all creature cards of a type chosen this way from his or her graveyard to the battlefield. text=Each player chooses a creature type. Each player returns all creature cards of a type chosen this way from his or her graveyard to the battlefield.
mana={3}{B}{B} mana={3}{B}{B}
@@ -12272,12 +12256,6 @@ power=4
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Skull Storm
text=When you cast this spell, copy it for each time you've cast your commander from the command zone this game. -- Each opponent sacrifices a creature. Each opponent who can't loses half their life, rounded up.
mana={7}{B}{B}
type=Sorcery
[/card]
[card]
name=Skullbriar, the Walking Grave name=Skullbriar, the Walking Grave
text=Haste -- Whenever Skullbriar, the Walking Grave deals combat damage to a player, put a +1/+1 counter on it. -- Counters remain on Skullbriar as it moves to any zone other than a player's hand or library. text=Haste -- Whenever Skullbriar, the Walking Grave deals combat damage to a player, put a +1/+1 counter on it. -- Counters remain on Skullbriar as it moves to any zone other than a player's hand or library.
mana={B}{G} mana={B}{G}
@@ -15487,15 +15465,6 @@ power=1
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Yuriko, the Tiger's Shadow
text=Commander ninjutsu {U}{B} ({U}{B}, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand or the command zone tapped and attacking.) -- Whenever a Ninja you control deals combat damage to a player, reveal the top card of your library and put that card into your hand. Each opponent loses life equal to that card's converted mana cost.
mana={1}{U}{B}
type=Legendary Creature
subtype=Human Ninja
power=1
toughness=3
[/card]
[card]
name=Zada, Hedron Grinder name=Zada, Hedron Grinder
text=Whenever you cast an instant or sorcery spell that targets only Zada, Hedron Grinder, copy that spell for each other creature you control that the spell could target. Each copy targets a different one of those creatures. text=Whenever you cast an instant or sorcery spell that targets only Zada, Hedron Grinder, copy that spell for each other creature you control that the spell could target. Each copy targets a different one of those creatures.
mana={3}{R} mana={3}{R}

View File

@@ -81,23 +81,38 @@ void MTGPlayerCards::initDeck(MTGDeck * deck)
if(newCard->hasType("Land") && newCard->hasType("Basic")){ //There are no limitations for basic lands cards. if(newCard->hasType("Land") && newCard->hasType("Basic")){ //There are no limitations for basic lands cards.
library->addCard(newCard); library->addCard(newCard);
} else{ } else{
bool colorFound = false; // All the cards have to share at least one color with commander identity color. bool colorFound = false; // All the cards have to share at least one color with commander identity color (any symbol in manacost or magic text).
bool colorless = false; // Colorless card can be always added to deck.
for(unsigned int i = 0; i < commandzone->cards.size() && !colorFound; i++){ for(unsigned int i = 0; i < commandzone->cards.size() && !colorFound; i++){
if((newCard->hasColor(Constants::MTG_COLOR_WHITE) && commandzone->cards[i]->hasColor(Constants::MTG_COLOR_WHITE)) || if((newCard->hasColor(Constants::MTG_COLOR_WHITE) && commandzone->cards[i]->hasColor(Constants::MTG_COLOR_WHITE)) ||
(newCard->hasColor(Constants::MTG_COLOR_BLACK) && commandzone->cards[i]->hasColor(Constants::MTG_COLOR_BLACK)) || (newCard->hasColor(Constants::MTG_COLOR_BLACK) && commandzone->cards[i]->hasColor(Constants::MTG_COLOR_BLACK)) ||
(newCard->hasColor(Constants::MTG_COLOR_RED) && commandzone->cards[i]->hasColor(Constants::MTG_COLOR_RED)) || (newCard->hasColor(Constants::MTG_COLOR_RED) && commandzone->cards[i]->hasColor(Constants::MTG_COLOR_RED)) ||
(newCard->hasColor(Constants::MTG_COLOR_BLUE) && commandzone->cards[i]->hasColor(Constants::MTG_COLOR_BLUE)) || (newCard->hasColor(Constants::MTG_COLOR_BLUE) && commandzone->cards[i]->hasColor(Constants::MTG_COLOR_BLUE)) ||
(newCard->hasColor(Constants::MTG_COLOR_GREEN) && commandzone->cards[i]->hasColor(Constants::MTG_COLOR_GREEN))){ (newCard->hasColor(Constants::MTG_COLOR_GREEN) && commandzone->cards[i]->hasColor(Constants::MTG_COLOR_GREEN)) ||
colorFound = true; (newCard->hasColor(Constants::MTG_COLOR_WHITE) && commandzone->cards[i]->magicText.find("{w}") != std::string::npos) ||
} else if((newCard->hasColor(Constants::MTG_COLOR_WHITE) && commandzone->cards[i]->magicText.find("{W}") != std::string::npos) || (newCard->hasColor(Constants::MTG_COLOR_BLACK) && commandzone->cards[i]->magicText.find("{b}") != std::string::npos)||
(newCard->hasColor(Constants::MTG_COLOR_BLACK) && commandzone->cards[i]->magicText.find("{B}") != std::string::npos)|| (newCard->hasColor(Constants::MTG_COLOR_RED) && commandzone->cards[i]->magicText.find("{r}") != std::string::npos) ||
(newCard->hasColor(Constants::MTG_COLOR_RED) && commandzone->cards[i]->magicText.find("{R}") != std::string::npos) || (newCard->hasColor(Constants::MTG_COLOR_BLUE) && commandzone->cards[i]->magicText.find("{u}") != std::string::npos) ||
(newCard->hasColor(Constants::MTG_COLOR_BLUE) && commandzone->cards[i]->magicText.find("{U}") != std::string::npos) || (newCard->hasColor(Constants::MTG_COLOR_GREEN) && commandzone->cards[i]->magicText.find("{g}") != std::string::npos) ||
(newCard->hasColor(Constants::MTG_COLOR_GREEN) && commandzone->cards[i]->magicText.find("{G}") != std::string::npos)){ (newCard->magicText.find("{w}") != std::string::npos && commandzone->cards[i]->hasColor(Constants::MTG_COLOR_WHITE)) ||
(newCard->magicText.find("{b}") != std::string::npos && commandzone->cards[i]->hasColor(Constants::MTG_COLOR_BLACK)) ||
(newCard->magicText.find("{r}") != std::string::npos && commandzone->cards[i]->hasColor(Constants::MTG_COLOR_RED)) ||
(newCard->magicText.find("{u}") != std::string::npos && commandzone->cards[i]->hasColor(Constants::MTG_COLOR_BLUE)) ||
(newCard->magicText.find("{g}") != std::string::npos && commandzone->cards[i]->hasColor(Constants::MTG_COLOR_GREEN)) ||
(newCard->magicText.find("{w}") != std::string::npos && commandzone->cards[i]->magicText.find("{w}") != std::string::npos) ||
(newCard->magicText.find("{b}") != std::string::npos && commandzone->cards[i]->magicText.find("{b}") != std::string::npos)||
(newCard->magicText.find("{r}") != std::string::npos && commandzone->cards[i]->magicText.find("{r}") != std::string::npos) ||
(newCard->magicText.find("{u}") != std::string::npos && commandzone->cards[i]->magicText.find("{u}") != std::string::npos) ||
(newCard->magicText.find("{g}") != std::string::npos && commandzone->cards[i]->magicText.find("{g}") != std::string::npos)){
colorFound = true; colorFound = true;
} }
} }
if(colorFound || newCard->hasColor(Constants::MTG_COLOR_ARTIFACT) || newCard->colors == Constants::MTG_UNCOLORED || newCard->hasColor(Constants::MTG_COLOR_LAND)){ if(!colorFound)
colorless = (newCard->magicText.find("{g}") == std::string::npos && newCard->magicText.find("{w}") == std::string::npos && newCard->magicText.find("{b}") == std::string::npos &&
newCard->magicText.find("{r}") == std::string::npos && newCard->magicText.find("{u}") == std::string::npos && !newCard->hasColor(Constants::MTG_COLOR_BLUE) &&
!newCard->hasColor(Constants::MTG_COLOR_RED) && !newCard->hasColor(Constants::MTG_COLOR_WHITE) && !newCard->hasColor(Constants::MTG_COLOR_GREEN) &&
!newCard->hasColor(Constants::MTG_COLOR_BLACK));
if(colorFound || colorless){
bool onlyInstance = true; // In commander format only single cards are allowed if they are not basic lands. bool onlyInstance = true; // In commander format only single cards are allowed if they are not basic lands.
for(unsigned int k = 0; k < library->cards.size() && onlyInstance; k++){ for(unsigned int k = 0; k < library->cards.size() && onlyInstance; k++){
if(library->cards[k]->name == newCard->name) if(library->cards[k]->name == newCard->name)