Fixed issue 752.
This commit is contained in:
@@ -112,8 +112,7 @@ class AIPlayerBaka: public AIPlayer{
|
|||||||
INFO_CREATURESATTACKINGPOWER
|
INFO_CREATURESATTACKINGPOWER
|
||||||
};
|
};
|
||||||
|
|
||||||
vector<MTGAbility*>gotPayments;
|
vector<MTGAbility*>gotPayments;
|
||||||
int deckId;
|
|
||||||
AIPlayerBaka(GameObserver *observer, string deckFile, string deckfileSmall, string avatarFile, MTGDeck * deck = NULL);
|
AIPlayerBaka(GameObserver *observer, string deckFile, string deckfileSmall, string avatarFile, MTGDeck * deck = NULL);
|
||||||
virtual int Act(float dt);
|
virtual int Act(float dt);
|
||||||
void initTimer();
|
void initTimer();
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ public:
|
|||||||
MODE_AI
|
MODE_AI
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int deckId;
|
||||||
string mAvatarName;
|
string mAvatarName;
|
||||||
Mode playMode;
|
Mode playMode;
|
||||||
bool nomaxhandsize;
|
bool nomaxhandsize;
|
||||||
|
|||||||
@@ -249,7 +249,7 @@ AIPlayer * AIPlayerFactory::createAIPlayer(GameObserver *observer, MTGAllCards *
|
|||||||
}
|
}
|
||||||
if (!nbdecks)
|
if (!nbdecks)
|
||||||
return NULL;
|
return NULL;
|
||||||
deckid = 1 + observer->getRandomGenerator()->random() % (nbdecks);
|
deckid = 1 + WRand() % (nbdecks);
|
||||||
}
|
}
|
||||||
sprintf(deckFile, "ai/baka/deck%i.txt", deckid);
|
sprintf(deckFile, "ai/baka/deck%i.txt", deckid);
|
||||||
DeckMetaData *aiMeta = DeckManager::GetInstance()->getDeckMetaDataByFilename( deckFile, true);
|
DeckMetaData *aiMeta = DeckManager::GetInstance()->getDeckMetaDataByFilename( deckFile, true);
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
#include "GameObserver.h"
|
#include "GameObserver.h"
|
||||||
#include "DeckStats.h"
|
#include "DeckStats.h"
|
||||||
#include "ManaCost.h"
|
#include "ManaCost.h"
|
||||||
|
#include "DeckMetaData.h"
|
||||||
|
#include "DeckManager.h"
|
||||||
|
|
||||||
#ifdef TESTSUITE
|
#ifdef TESTSUITE
|
||||||
#include "TestSuiteAI.h"
|
#include "TestSuiteAI.h"
|
||||||
@@ -240,8 +242,9 @@ bool Player::parseLine(const string& s)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (areaS.compare("avatar") == 0)
|
else if (areaS.compare("avatar") == 0)
|
||||||
{ // We don't load directly for now
|
{
|
||||||
mAvatarName = s.substr(limiter + 1);
|
mAvatarName = s.substr(limiter + 1);
|
||||||
|
loadAvatar(mAvatarName, "bakaAvatar");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (areaS.compare("customphasering") == 0)
|
else if (areaS.compare("customphasering") == 0)
|
||||||
@@ -257,6 +260,27 @@ bool Player::parseLine(const string& s)
|
|||||||
else if (areaS.compare("deckfile") == 0)
|
else if (areaS.compare("deckfile") == 0)
|
||||||
{
|
{
|
||||||
deckFile = s.substr(limiter + 1);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
else if (areaS.compare("deckfilesmall") == 0)
|
else if (areaS.compare("deckfilesmall") == 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user