Added last primitives from MAT set, updated missing cards by set list, improved trigger and filtering for mana production abilities.

This commit is contained in:
Vittorio Alfieri
2023-05-25 18:48:00 +02:00
parent 319cfe7889
commit 8df057f78a
13 changed files with 649 additions and 376 deletions

View File

@@ -1318,7 +1318,11 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
//Card Tapped for mana
if (TargetChooser *tc = parseSimpleTC(s,"tappedformana", card))
return NEW TrCardTappedformana(observer, id, card, tc, true, once);
//Card Produced some mana
if (TargetChooser *tc = parseSimpleTC(s,"producedmana", card))
return NEW TrCardManaproduced(observer, id, card, tc, once, limitOnceATurn);
//Card Transforms
if (TargetChooser *tc = parseSimpleTC(s,"transformed", card))
return NEW TrCardTransformed(observer, id, card, tc, once);
@@ -8051,6 +8055,10 @@ int AManaProducer::resolve()
player->getManaPool()->add(output, source);
if(DoesntEmpty)
player->doesntEmpty->add(output);
source->getProducedMana()->copy(output);
WEventCardManaProduced * ev = NEW WEventCardManaProduced(source);
if(ev)
source->getObserver()->receiveEvent(ev);
if(andAbility)
{
MTGAbility * andAbilityClone = andAbility->clone();

View File

@@ -586,6 +586,10 @@ ManaCost* MTGCardInstance::getIncreasedManaCost()
{
return &increasedCost;
}
ManaCost* MTGCardInstance::getProducedMana()
{
return &producedMana;
}
//sets card as attacked and sends events
void MTGCardInstance::eventattacked()

View File

@@ -75,6 +75,11 @@ WEventCardTappedForMana::WEventCardTappedForMana(MTGCardInstance * card, bool be
{
}
WEventCardManaProduced::WEventCardManaProduced(MTGCardInstance * card) :
WEventCardUpdate(card)
{
}
WEventCardAttacked::WEventCardAttacked(MTGCardInstance * card) :
WEventCardUpdate(card)
{
@@ -539,6 +544,12 @@ Targetable * WEventCardTappedForMana::getTarget(int target)
return NULL;
}
Targetable * WEventCardManaProduced::getTarget(int target)
{
if (target) return card;
return NULL;
}
Targetable * WEventcardDraw::getTarget(Player * player)
{
if (player) return player;

View File

@@ -1581,6 +1581,26 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card)
intValue = card->getManaCost()->getManaSymbolsHybridMerged(Constants::MTG_COLOR_WHITE);
else intValue = 0;
}
else if(s.find("prodmana") != string::npos){
intValue = 0;
string manatocheck = s.substr(8);
if(card->getProducedMana()){
if(manatocheck == "c")
intValue = card->getProducedMana()->getManaSymbolsHybridMerged(Constants::MTG_COLOR_ARTIFACT);
else if(manatocheck == "g")
intValue = card->getProducedMana()->getManaSymbolsHybridMerged(Constants::MTG_COLOR_GREEN);
else if(manatocheck == "u")
intValue = card->getProducedMana()->getManaSymbolsHybridMerged(Constants::MTG_COLOR_BLUE);
else if(manatocheck == "r")
intValue = card->getProducedMana()->getManaSymbolsHybridMerged(Constants::MTG_COLOR_RED);
else if(manatocheck == "b")
intValue = card->getProducedMana()->getManaSymbolsHybridMerged(Constants::MTG_COLOR_BLACK);
else if(manatocheck == "w")
intValue = card->getProducedMana()->getManaSymbolsHybridMerged(Constants::MTG_COLOR_WHITE);
else if(manatocheck == "tot")
intValue = card->getProducedMana()->getConvertedCost();
}
}
else if(!intValue)//found nothing, try parsing a atoi
{
intValue = atoi(s.c_str());