Fixed issue 752.

This commit is contained in:
Xawotihs
2011-11-15 22:20:58 +00:00
parent ae3d97dbeb
commit ee700623d5
4 changed files with 28 additions and 4 deletions

View File

@@ -112,8 +112,7 @@ class AIPlayerBaka: public AIPlayer{
INFO_CREATURESATTACKINGPOWER
};
vector<MTGAbility*>gotPayments;
int deckId;
vector<MTGAbility*>gotPayments;
AIPlayerBaka(GameObserver *observer, string deckFile, string deckfileSmall, string avatarFile, MTGDeck * deck = NULL);
virtual int Act(float dt);
void initTimer();

View File

@@ -28,6 +28,7 @@ public:
MODE_AI
};
int deckId;
string mAvatarName;
Mode playMode;
bool nomaxhandsize;

View File

@@ -249,7 +249,7 @@ AIPlayer * AIPlayerFactory::createAIPlayer(GameObserver *observer, MTGAllCards *
}
if (!nbdecks)
return NULL;
deckid = 1 + observer->getRandomGenerator()->random() % (nbdecks);
deckid = 1 + WRand() % (nbdecks);
}
sprintf(deckFile, "ai/baka/deck%i.txt", deckid);
DeckMetaData *aiMeta = DeckManager::GetInstance()->getDeckMetaDataByFilename( deckFile, true);

View File

@@ -4,6 +4,8 @@
#include "GameObserver.h"
#include "DeckStats.h"
#include "ManaCost.h"
#include "DeckMetaData.h"
#include "DeckManager.h"
#ifdef TESTSUITE
#include "TestSuiteAI.h"
@@ -240,8 +242,9 @@ bool Player::parseLine(const string& s)
return true;
}
else if (areaS.compare("avatar") == 0)
{ // We don't load directly for now
{
mAvatarName = s.substr(limiter + 1);
loadAvatar(mAvatarName, "bakaAvatar");
return true;
}
else if (areaS.compare("customphasering") == 0)
@@ -257,6 +260,27 @@ bool Player::parseLine(const string& s)
else if (areaS.compare("deckfile") == 0)
{
deckFile = s.substr(limiter + 1);
if(playMode == Player::MODE_AI)
{
sscanf(deckFile.c_str(), "ai/baka/deck%i.txt", &deckId);
int deckSetting = EASY;
if ( opponent() )
{
bool isOpponentAI = opponent()->isAI() == 1;
DeckMetaData *meta = DeckManager::GetInstance()->getDeckMetaDataByFilename( opponent()->deckFile, isOpponentAI);
if ( meta && meta->getVictoryPercentage() >= 65)
deckSetting = HARD;
}
SAFE_DELETE(mDeck);
SAFE_DELETE(game);
mDeck = NEW MTGDeck(deckFile.c_str(), MTGCollection(),0, deckSetting);
game = NEW MTGPlayerCards(mDeck);
// This automatically sets the observer pointer on all the deck cards
game->setOwner(this);
deckName = mDeck->meta_name;
}
return true;
}
else if (areaS.compare("deckfilesmall") == 0)