opponenshroud changed to hexproof, new ability canplayenchantmentlibrarytop

New ability "canplayenchantmentlibrarytop" allow to play enchantments from top
sets now include tokens
you no longer draw conspiracy cards in the random
rules file revisions
commander bugs
Eutropia the Twice-Favored
Calculating Lich
Seismic Wave
Rank and File
Professional Face-Breaker
Realmwalker
This commit is contained in:
Eduardo MG
2024-07-21 18:44:21 -06:00
parent ea6e2b00f6
commit 067ae2790d
19 changed files with 3346 additions and 1419 deletions
+3
View File
@@ -1070,6 +1070,9 @@ bool MTGCardInstance::canPlayFromLibrary()
if(hasSubtype(Subtypes::TYPE_ARTIFACT) && (has(Constants::CANPLAYARTIFACTTOPLIBRARY)
|| (controller()->game->inPlay->nb_cards && controller()->game->inPlay->hasAbility(Constants::CANPLAYARTIFACTTOPLIBRARY))))
found++;
if(hasSubtype(Subtypes::TYPE_ENCHANTMENT) && (has(Constants::CANPLAYENCHANTMENTTOPLIBRARY)
|| (controller()->game->inPlay->nb_cards && controller()->game->inPlay->hasAbility(Constants::CANPLAYENCHANTMENTTOPLIBRARY))))
found++;
if(isCreature() && (has(Constants::CANPLAYCREATURETOPLIBRARY)
|| (controller()->game->inPlay->nb_cards && controller()->game->inPlay->hasAbility(Constants::CANPLAYCREATURETOPLIBRARY))))
found++;
+3 -2
View File
@@ -72,7 +72,7 @@ const char* Constants::MTGBasicAbilities[] = {
"mustattack",
"cantblock",
"doesnotuntap",
"opponentshroud",
"hexproof",
"indestructible",
"intimidate",
"deathtouch",
@@ -267,7 +267,8 @@ const char* Constants::MTGBasicAbilities[] = {
"poisonninetoxic", // Card has toxic 9
"poisontentoxic", // Card has toxic 10
"eqpasinst", // Can equip as instant
"canloyaltyasinst" // Can activate loyalty abilities as instant (e.g. "The Wandering Emperor").
"canloyaltyasinst", // Can activate loyalty abilities as instant (e.g. "The Wandering Emperor").
"canplayenchantmentlibrarytop" // May play enchantments from top
};
map<string,int> Constants::MTGBasicAbilitiesMap;
+3 -3
View File
@@ -1521,7 +1521,7 @@ bool TargetChooser::canTarget(Targetable * target, bool withoutProtections)
if (card->has(Constants::SHROUD)) return targetter->bypassTC;
if (card->protectedAgainst(targetter)) return targetter->bypassTC;
if (card->CantBeTargetby(targetter)) return targetter->bypassTC;
if ((targetter->controller() != card->controller()) && card->has(Constants::OPPONENTSHROUD)) return targetter->bypassTC;
if ((targetter->controller() != card->controller()) && card->has(Constants::HEXPROOF)) return targetter->bypassTC;
if (card->has(Constants::PROTECTIONFROMCOLOREDSPELLS))
{//a spell that has no target=criteria means it's not targetted unless its a workaround card...
if((targetter->spellTargetType.size()) && (targetter->hasColor(1)||targetter->hasColor(2)||targetter->hasColor(3)||targetter->hasColor(4)||targetter->hasColor(5)))
@@ -2090,7 +2090,7 @@ bool DamageableTargetChooser::canTarget(Targetable * target, bool withoutProtect
if (card->has(Constants::SHROUD)) return source->bypassTC;
if (card->protectedAgainst(targetter)) return source->bypassTC;
if (card->CantBeTargetby(targetter)) return source->bypassTC;
if ((source->controller() != card->controller()) && card->has(Constants::OPPONENTSHROUD)) return source->bypassTC;
if ((source->controller() != card->controller()) && card->has(Constants::HEXPROOF)) return source->bypassTC;
if (card->has(Constants::PROTECTIONFROMCOLOREDSPELLS)){
if((source->spellTargetType.size()) && (source->hasColor(1)||source->hasColor(2)||source->hasColor(3)||source->hasColor(4)||source->hasColor(5)))
return source->bypassTC;
@@ -2461,7 +2461,7 @@ bool ProliferateChooser::canTarget(Targetable * target, bool withoutProtections)
if (card->has(Constants::SHROUD)) return source->bypassTC;
if (card->protectedAgainst(source)) return source->bypassTC;
if (card->CantBeTargetby(source)) return source->bypassTC;
if ((source->controller() != card->controller()) && card->has(Constants::OPPONENTSHROUD)) return source->bypassTC;
if ((source->controller() != card->controller()) && card->has(Constants::HEXPROOF)) return source->bypassTC;
if (card->has(Constants::PROTECTIONFROMCOLOREDSPELLS)){
if((source->spellTargetType.size()) && (source->hasColor(1)||source->hasColor(2)||source->hasColor(3)||source->hasColor(4)||source->hasColor(5)))
return source->bypassTC;