diff --git a/projects/mtg/include/AIPlayerBaka.h b/projects/mtg/include/AIPlayerBaka.h index 99e9a7961..9b441e508 100644 --- a/projects/mtg/include/AIPlayerBaka.h +++ b/projects/mtg/include/AIPlayerBaka.h @@ -82,7 +82,7 @@ class AIPlayerBaka: public AIPlayer{ virtual int selectHintAbility(); virtual vector canPayMana(MTGCardInstance * card = NULL, ManaCost * mCost = NULL); - virtual vector canPayMana(MTGCardInstance * card, ManaCost * mCost, map &usedCards); + virtual vector canPayMana(MTGCardInstance * card, ManaCost * mCost, map &usedCards, bool searchingAgain = false); virtual vector canPaySunBurst(ManaCost * mCost = NULL); virtual MTGCardInstance * chooseCard(TargetChooser * tc, MTGCardInstance * source, int random = 0); diff --git a/projects/mtg/src/AIPlayerBaka.cpp b/projects/mtg/src/AIPlayerBaka.cpp index 38967d1fe..539556519 100644 --- a/projects/mtg/src/AIPlayerBaka.cpp +++ b/projects/mtg/src/AIPlayerBaka.cpp @@ -843,7 +843,7 @@ vector AIPlayerBaka::canPayMana(MTGCardInstance * target,ManaCost * return canPayMana(target, cost, usedCards); } -vector AIPlayerBaka::canPayMana(MTGCardInstance * target,ManaCost * cost, map &used ) +vector AIPlayerBaka::canPayMana(MTGCardInstance * target,ManaCost * cost, map &used ,bool searchingAgain) { if(!cost->getConvertedCost()) return vector(); @@ -1016,7 +1016,7 @@ vector AIPlayerBaka::canPayMana(MTGCardInstance * target,ManaCost * return payments;//we didn't meet one of the color cost requirements. } } - if(cost->kicker && !used.size()) + if(cost->kicker && !searchingAgain) { ManaCost * withKickerCost= NEW ManaCost(cost->kicker); @@ -1025,15 +1025,14 @@ vector AIPlayerBaka::canPayMana(MTGCardInstance * target,ManaCost * bool keepLooking = true; while(keepLooking) { - kickerPayment = canPayMana(target, withKickerCost, used); + kickerPayment = canPayMana(target, withKickerCost, used,true); if(kickerPayment.size()) { for(unsigned int w = 0;w < kickerPayment.size();++w) { - if(!used[kickerPayment[w]->source]) + if(used[kickerPayment[w]->source]) { payments.push_back(kickerPayment[w]); - used[kickerPayment[w]->source] = true; } } canKick += 1;