From a4c536740e7fd96f715323d203ec8eaff8878efe Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Thu, 16 Jun 2016 09:14:37 +0800 Subject: [PATCH] Revised Imprint --- projects/mtg/src/AllAbilities.cpp | 21 +++++++++++++++++ projects/mtg/src/GameObserver.cpp | 38 +++++++------------------------ 2 files changed, 29 insertions(+), 30 deletions(-) diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index 80020ecd2..a4eda82db 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -565,6 +565,27 @@ int AAImprint::resolve() source->imprintedCards.push_back(_target); + if (source->imprintedCards.size()) + { + for(size_t i = 0; i < source->imprintedCards.size(); i++) + { + if (source->imprintedCards[i]->hasColor(Constants::MTG_COLOR_GREEN)) + source->imprintG += 1; + if (source->imprintedCards[i]->hasColor(Constants::MTG_COLOR_BLUE)) + source->imprintU += 1; + if (source->imprintedCards[i]->hasColor(Constants::MTG_COLOR_RED)) + source->imprintR += 1; + if (source->imprintedCards[i]->hasColor(Constants::MTG_COLOR_BLACK)) + source->imprintB += 1; + if (source->imprintedCards[i]->hasColor(Constants::MTG_COLOR_WHITE)) + source->imprintW += 1; + if (source->imprintedCards[i]->getName().size()) + { + source->currentimprintName = source->imprintedCards[i]->getName(); + source->imprintedNames.push_back(source->imprintedCards[i]->getName()); + } + } + } return 1; } return 0; diff --git a/projects/mtg/src/GameObserver.cpp b/projects/mtg/src/GameObserver.cpp index 1ceca665d..435b97688 100644 --- a/projects/mtg/src/GameObserver.cpp +++ b/projects/mtg/src/GameObserver.cpp @@ -693,37 +693,15 @@ void GameObserver::gameStateBasedEffects() for(size_t ic = 0; ic < card->imprintedCards.size(); ic++) { if(!isInExile(card->imprintedCards[ic])) - card->imprintedCards.erase(card->imprintedCards.begin() + ic); - } - } - //reset imprints - if(isInPlay(card)) - { - card->imprintG = 0; - card->imprintU = 0; - card->imprintR = 0; - card->imprintB = 0; - card->imprintW = 0; - card->currentimprintName = ""; - if (card->imprintedCards.size()) - { - for(size_t i = 0; i < card->imprintedCards.size(); i++) { - if (card->imprintedCards[i]->hasColor(Constants::MTG_COLOR_GREEN)) - card->imprintG += 1; - if (card->imprintedCards[i]->hasColor(Constants::MTG_COLOR_BLUE)) - card->imprintU += 1; - if (card->imprintedCards[i]->hasColor(Constants::MTG_COLOR_RED)) - card->imprintR += 1; - if (card->imprintedCards[i]->hasColor(Constants::MTG_COLOR_BLACK)) - card->imprintB += 1; - if (card->imprintedCards[i]->hasColor(Constants::MTG_COLOR_WHITE)) - card->imprintW += 1; - if (card->imprintedCards[i]->getName().size()) - { - card->currentimprintName = card->imprintedCards[i]->getName(); - card->imprintedNames.push_back(card->imprintedCards[i]->getName()); - } + card->imprintG = 0; + card->imprintU = 0; + card->imprintR = 0; + card->imprintB = 0; + card->imprintW = 0; + card->currentimprintName = ""; + card->imprintedNames.clear(); + card->imprintedCards.erase(card->imprintedCards.begin() + ic); } } }