Fixed AFR, STA, STX and J21 sets, fixed "_PROLIFERATE_" macro and fixed primitives with "proliferate" ability, fixed all primitives with "mutate" ability, improved "proliferate" and "duplicatecounters" keywords, added a new target "permanent" to target togheter a player and permanents on battlefield (e.g. cards with "proliferate").

This commit is contained in:
Vittorio Alfieri
2021-09-13 18:56:16 +02:00
parent 04a6a4bfe2
commit 2af470e42b
10 changed files with 80 additions and 36 deletions
+7 -7
View File
@@ -2866,7 +2866,7 @@ int AADuplicateCounters::resolve()
a->oneShot = true;
pcounters.push_back(a);
}
else if(pTarget && pTarget->energyCount)
if(pTarget && pTarget->energyCount)
{
MTGAbility * a = NULL;
if(single)
@@ -2876,7 +2876,7 @@ int AADuplicateCounters::resolve()
a->oneShot = true;
pcounters.push_back(a);
}
else if(pTarget && pTarget->experienceCount)
if(pTarget && pTarget->experienceCount)
{
MTGAbility * a = NULL;
if(single)
@@ -2886,7 +2886,7 @@ int AADuplicateCounters::resolve()
a->oneShot = true;
pcounters.push_back(a);
}
else if (cTarget && cTarget->counters)
if (cTarget && cTarget->counters)
{
Counters * counters = cTarget->counters;
for(size_t i = 0; i < counters->counters.size(); ++i)
@@ -2954,25 +2954,25 @@ int AAProliferate::resolve()
Player * pTarget = dynamic_cast<Player *>(target);
MTGCardInstance * cTarget = dynamic_cast<MTGCardInstance *>(target);
if(pTarget && pTarget->poisonCount && pTarget != source->controller())
if(pTarget && pTarget->poisonCount)
{
MTGAbility * a = NEW AAAlterPoison(game, game->mLayers->actionLayer()->getMaxId(), source, target, 1, NULL);
a->oneShot = true;
pcounters.push_back(a);
}
else if(pTarget && pTarget->energyCount && pTarget == source->controller())
if(pTarget && pTarget->energyCount)
{
MTGAbility * a = NEW AAAlterEnergy(game, game->mLayers->actionLayer()->getMaxId(), source, target, 1, NULL);
a->oneShot = true;
pcounters.push_back(a);
}
else if(pTarget && pTarget->experienceCount && pTarget == source->controller())
if(pTarget && pTarget->experienceCount)
{
MTGAbility * a = NEW AAAlterExperience(game, game->mLayers->actionLayer()->getMaxId(), source, target, 1, NULL);
a->oneShot = true;
pcounters.push_back(a);
}
else if (cTarget && cTarget->counters)
if (cTarget && cTarget->counters)
{
Counters * counters = cTarget->counters;
for(size_t i = 0; i < counters->counters.size(); ++i)
+15 -4
View File
@@ -148,6 +148,8 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //Any Damageable target (player, creature, planeswalker)
found = s.find("planeswalker^creature");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //Any Damageable target (player, creature, planeswalker)
found = s.find("permanent");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "permanent"); //Any player or permanet (player, creature, planeswalker, artifact, land, enchantment)
found = s.find("creature");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other); //2 Damageable target (player, creature)
found = s.find("planeswalker");
@@ -1466,16 +1468,25 @@ bool CardTargetChooser::equals(TargetChooser * tc)
TypeTargetChooser::TypeTargetChooser(GameObserver *observer, const char * _type, MTGCardInstance * card, int _maxtargets, bool other,bool targetMin) :
TargetZoneChooser(observer, card, _maxtargets, other,targetMin)
{
nbtypes = 0;
if(!strcmp(_type,"creature,planeswalker")){
int id = MTGAllCards::findType("creature");
nbtypes = 0;
addType(id);
id = MTGAllCards::findType("planeswalker");
addType(id);
}
else {
} else if(!strcmp(_type,"permanent")){
int id = MTGAllCards::findType("creature");
addType(id);
id = MTGAllCards::findType("planeswalker");
addType(id);
id = MTGAllCards::findType("land");
addType(id);
id = MTGAllCards::findType("artifact");
addType(id);
id = MTGAllCards::findType("enchantment");
addType(id);
} else {
int id = MTGAllCards::findType(_type);
nbtypes = 0;
addType(id);
}
int default_zones[] = { MTGGameZone::MY_BATTLEFIELD, MTGGameZone::OPPONENT_BATTLEFIELD };