Fixed some primitives from issue #1085, fixed some primitived from Discord channel, updated some AI decks, added new ability "canloyaltyasinst" to allow a planeswalker to activate loyalty abilities as instant (e.g. "The Wandering Emperor"), fixed a possible crash when a card change zone with different card types than its original version (e.g. morphed cards).

This commit is contained in:
Vittorio Alfieri
2023-07-24 19:08:20 +02:00
parent 6625907180
commit 751fda6521
9 changed files with 446 additions and 209 deletions

View File

@@ -7285,11 +7285,11 @@ int ActivatedAbility::isReactingToClick(MTGCardInstance * card, ManaCost * mana)
howMany += check->counters;
}
}
if(howMany > 1 && card->has(Constants::CANLOYALTYTWICE))
if(howMany > 1)
return 0;
if (player != game->currentPlayer)
if (player != game->currentPlayer && !card->has(Constants::CANLOYALTYASINST))
return 0;
if (!turnSide && (cPhase != MTG_PHASE_FIRSTMAIN && cPhase != MTG_PHASE_SECONDMAIN))
if (!turnSide && !card->has(Constants::CANLOYALTYASINST) && (cPhase != MTG_PHASE_FIRSTMAIN && cPhase != MTG_PHASE_SECONDMAIN))
return 0;
}
if (source->has(Constants::NOACTIVATED) || (source->mutation && source->parentCards.size() > 0)) // Mutated Over/Under card doesn't have to react to click anymore

View File

@@ -266,7 +266,8 @@ const char* Constants::MTGBasicAbilities[] = {
"poisoneighttoxic", // Card has toxic 8
"poisonninetoxic", // Card has toxic 9
"poisontentoxic", // Card has toxic 10
"eqpasinst" // Can equip as instant
"eqpasinst", // Can equip as instant
"canloyaltyasinst" // Can activate loyalty abilities as instant (e.g. "The Wandering Emperor").
};
map<string,int> Constants::MTGBasicAbilitiesMap;

View File

@@ -580,7 +580,7 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone
// This fix issue types problem when card change zone with different card types than its original version (e.g. double face cards or cards that gained new types before to change zone).
std::vector<int> realTypes;
string realName = copy->name;
if(doCopy && !asCopy && !inplaytoinplay && !equal(copy->types.begin(), copy->types.end(), card->types.begin()) ){
if(doCopy && !asCopy && !inplaytoinplay && !card->isMorphed && ((copy->types.size() != card->types.size()) || ((copy->types.size() == card->types.size()) && (!equal(copy->types.begin(), copy->types.end(), card->types.begin())))) ){
realTypes = copy->types;
copy->types = card->types;
copy->mPropertiesChangedSinceLastUpdate = false;