Added / fixed primitives from ONE set, updated missing card by sets list, improved triggers and added new trigger for proliferation effect.

This commit is contained in:
Vittorio Alfieri
2023-06-15 19:15:44 +02:00
parent b7e8907877
commit 8a440d5d09
11 changed files with 468 additions and 38 deletions

View File

@@ -3052,7 +3052,7 @@ int AADuplicateCounters::resolve()
}
else
{
MTGAbility * a = NEW MenuAbility(game, this->GetId(), target, source,false,pcounters);
MTGAbility * a = NEW MenuAbility(game, this->GetId(), target, source, true, pcounters);
a->resolve();
}
}
@@ -3082,6 +3082,7 @@ ActivatedAbility(observer, id, source, cost, 0)
{
this->GetId();
allcounters = false;
notrigger = false;
}
int AAProliferate::resolve()
@@ -3138,6 +3139,11 @@ int AAProliferate::resolve()
a->resolve();
}
}
if(!notrigger){
WEventplayerProliferated * e = NEW WEventplayerProliferated(source->controller());
e->source = source;
game->receiveEvent(e);
}
return 1;
}

View File

@@ -1509,6 +1509,24 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
return NEW TrplayerExperienced(observer, id, card, tc, once, false, true, plus, duplicate, half);
}
//proliferated - controller of card
if (TargetChooser * tc = parseSimpleTC(s, "proliferateof", card)){
TargetChooser *exception = parseSimpleTC(s, "except", card); // Added a new keyword except to specify an exception in order to avoid proliferation loop (eg. Tekuthal, Inquiry Dominus)
if(exception)
return NEW TrplayerProliferated(observer, id, card, tc, once, true, false, exception->source);
else
return NEW TrplayerProliferated(observer, id, card, tc, once, true, false);
}
//proliferated - opponent of card controller
if (TargetChooser * tc = parseSimpleTC(s, "proliferatefoeof", card)){
TargetChooser *exception = parseSimpleTC(s, "except", card); // Added a new keyword except to specify an exception in order to avoid proliferation loop (eg. Tekuthal, Inquiry Dominus)
if(exception)
return NEW TrplayerProliferated(observer, id, card, tc, once, false, true, exception->source);
else
return NEW TrplayerProliferated(observer, id, card, tc, once, false, true);
}
//becomes monarch - controller of card
if (TargetChooser * tc = parseSimpleTC(s, "becomesmonarchof", card))
return NEW TrplayerMonarch(observer, id, card, tc, once, true, false);
@@ -5353,9 +5371,12 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
MTGAbility * a = NEW AAProliferate(observer, id, card, target);
a->oneShot = 1;
a->canBeInterrupted = false;
bool noevent = (s.find("noproftrg") != string::npos)?true:false; // Added a way to don't trigger @proliferate effect.
((AAProliferate*)a)->allcounters = true;
((AAProliferate*)a)->notrigger = noevent;
return a;
}
//proliferate all counters
found = s.find("propagate");
if (found != string::npos)
@@ -5363,7 +5384,9 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
MTGAbility * a = NEW AAProliferate(observer, id, card, target);
a->oneShot = 1;
a->canBeInterrupted = false;
bool noevent = (s.find("noproftrg") != string::npos)?true:false; // Added a way to don't trigger @proliferated effect.
((AAProliferate*)a)->allcounters = true;
((AAProliferate*)a)->notrigger = noevent;
return a;
}

View File

@@ -317,6 +317,11 @@ WEventplayerMonarch::WEventplayerMonarch(Player * player) :
{
}
WEventplayerProliferated::WEventplayerProliferated(Player * player) :
player(player)
{
}
WEventplayerInitiative::WEventplayerInitiative(Player * player) :
player(player)
{
@@ -700,6 +705,12 @@ Targetable * WEventplayerMonarch::getTarget(Player * player)
return NULL;
}
Targetable * WEventplayerProliferated::getTarget(Player * player)
{
if (player) return player;
return NULL;
}
Targetable * WEventplayerInitiative::getTarget(Player * player)
{
if (player) return player;