- had some problems compiling for the PSP. I assume I was the only one, please let me know if the "include JLogger" lines are not needed (they were needed for me)
- Fix a memory leak when playing in "random deck" mode
- Prevent the AI from playing cards with a cost it cannot understand (ExtraCosts with a target).
This commit is contained in:
wagic.the.homebrew@gmail.com
2010-11-18 14:04:24 +00:00
parent 09afcea7da
commit f7bcbb42dc
7 changed files with 68 additions and 51 deletions

View File

@@ -159,22 +159,28 @@ int AIPlayer::getEfficiency(AIAction * action)
return action->getEfficiency();
}
//Can't yet handle extraCost objects (ex: sacrifice) if they require a target :(
int AIPlayer::CanHandleCost(ManaCost * cost)
{
if (!cost) return 1;
ExtraCosts * ec = cost->extraCosts;
if (!ec) return 1;
for (size_t i = 0; i < ec->costs.size(); ++i)
{
if (ec->costs[i]->tc)
return 0;
}
return 1;
}
int AIPlayer::canHandleCost(MTGAbility * ability)
{
//Can't handle sacrifice costs that require a target yet :(
if (ability->cost)
{
ExtraCosts * ec = ability->cost->extraCosts;
if (ec)
{
for (size_t i = 0; i < ec->costs.size(); i++)
{
if (ec->costs[i]->tc)
return 0;
}
}
}
return 1;
return CanHandleCost(ability->cost);
}
int AIAction::getEfficiency()
@@ -871,6 +877,8 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
card = NULL;
while ((card = cd.nextmatch(game->hand, card)))
{
if (!CanHandleCost(card->getManaCost()))
continue;
if (card->hasType(Subtypes::TYPE_CREATURE) && this->castrestrictedcreature < 0 && this->castrestrictedspell < 0)
continue;
if (card->hasType(Subtypes::TYPE_ENCHANTMENT) && this->castrestrictedspell < 0)