Added/fixed primitives, implemented a new keyword to count the greatest number creatures that share same subtype (creatures with changeling counts as +1 for all creature types)

This commit is contained in:
Vittorio Alfieri
2021-01-21 15:53:27 +01:00
parent 17fdc5bc9f
commit 3a38e7f4ab
3 changed files with 45 additions and 18 deletions

View File

@@ -16795,6 +16795,13 @@ mana={1}{R}
type=Instant
[/card]
[card]
name=Fist of Suns
auto=lord(*|myrestrictedcastingzone) transforms((,newability[{W}{U}{B}{R}{G}:name(Pay with 5 colors mana) name(Pay with 5 colors mana) activate castcard(normal)]))
text=You may pay {W}{U}{B}{R}{G} rather than pay the mana cost for spells that you cast.
mana={3}
type=Artifact
[/card]
[card]
name=Five-Finger Discount
target=*[-land]|battlefield
auto=moveto(myhand) and!( transforms((,newability[anytypeofmana])) forever)!
@@ -19347,7 +19354,7 @@ toughness=2
[/card]
[card]
name=Gnarlroot Trapper
auto={this(variable{type:elf:myrestrictedcastingzone}>0) T}{L:1}:add{G}
auto=this(variable{type:elf:myrestrictedcastingzone}>0) {T}{L:1}:add{G}
auto={T}:target(elf[attacking]|mybattlefield) transforms((,newability[deathtouch])) ueot
text={T}, Pay 1 life: Add {G} to your mana pool. Spend this mana only to cast an Elf creature spell. -- {T}: Target attacking Elf you control gains deathtouch until end of turn. (Any amount of damage it deals to a creature is enough to destroy it.)
mana={B}
@@ -20360,6 +20367,16 @@ mana={3}{R}
type=Sorcery
[/card]
[card]
name=Graxiplon
auto=this(variable{oppsametypecreatures}<3) unblockable
text=Graxiplon is unblockable unless defending player controls three or more creatures that share a creature type.
mana={5}{U}
type=Creature
subtype=Beast
power=3
toughness=4
[/card]
[card]
name=Grazing Whiptail
abilities=reach
text=Reach
@@ -25296,7 +25313,7 @@ toughness=3
[card]
name=Jodah, Archmage Eternal
abilities=flying
auto={W}{U}{B}{R}{G}:target(*|myrestrictedcastingzone) activate castcard(normal)
auto=lord(*|myrestrictedcastingzone) transforms((,newability[{W}{U}{B}{R}{G}:name(Pay with 5 colors mana) name(Pay with 5 colors mana) activate castcard(normal)]))
text=Flying -- You may pay {W}{U}{B}{R}{G} rather than pay the mana cost for spells that you cast.
mana={1}{U}{R}{W}
type=Legendary Creature

View File

@@ -4115,12 +4115,6 @@ mana={3}{G}
type=Instant
[/card]
[card]
name=Fist of Suns
text=You may pay {W}{U}{B}{R}{G} rather than pay the mana cost for spells that you cast.
mana={3}
type=Artifact
[/card]
[card]
name=Fistful of Force
text=Target creature gets +2/+2 until end of turn. Clash with an opponent. If you win, that creature gets an additional +2/+2 and gains trample until end of turn. (Each clashing player reveals the top card of his or her library, then puts that card on the top or bottom. A player wins if his or her card had a higher converted mana cost.)
mana={1}{G}
@@ -5062,15 +5056,6 @@ power=*
toughness=*
[/card]
[card]
name=Graxiplon
text=Graxiplon is unblockable unless defending player controls three or more creatures that share a creature type.
mana={5}{U}
type=Creature
subtype=Beast
power=3
toughness=4
[/card]
[card]
name=Greater Gargadon
text=Suspend 10—{R} -- Sacrifice an artifact, creature, or land: Remove a time counter from Greater Gargadon. Activate this ability only if Greater Gargadon is suspended.
mana={9}{R}

View File

@@ -853,7 +853,7 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card)
}
}
}
else if (s.find("cardcounttype") != string::npos)//Count Total Creatures of specific type
else if (s.find("cardcounttype") != string::npos)//Count Total cards of specific type
{
intValue = 0;
bool different_names = (s.find("diffcardcounttype")!=string::npos)?true:false;
@@ -878,6 +878,31 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card)
}
}
}
else if (s.find("sametypecreatures") != string::npos)//Count the greatest number creatures that share same subtype (creatures with changeling counts as +1 for all creature types)
{
intValue = 0;
bool opponent = (s.find("oppsametypecreatures")!=string::npos)?true:false;
vector<int> list;
vector<string> values = MTGAllCards::getCreatureValuesById();
for (size_t i = 0; i < values.size(); ++i){
list.push_back(0);
if(opponent){
for (int j = card->controller()->opponent()->game->inPlay->nb_cards - 1; j >= 0; --j){
if (card->controller()->opponent()->game->inPlay->cards[j]->hasType(values[i]) || card->controller()->opponent()->game->inPlay->cards[j]->has(Constants::CHANGELING)){
list[i]++;
}
}
} else {
for (int j = card->controller()->game->inPlay->nb_cards - 1; j >= 0; --j){
if (card->controller()->game->inPlay->cards[j]->hasType(values[i]) || card->controller()->game->inPlay->cards[j]->has(Constants::CHANGELING)){
list[i]++;
}
}
}
if (list[i] > intValue)
intValue = list[i];
}
}
else if (s == "cursedscrollresult")//Return 1 if the cursed scroll has to give damage (calculated randomly basing on the number of unique cards in the player hand)...
{
intValue = 0;