minor skip phase
if there is no possible attacker then skip phase
This commit is contained in:
@@ -80,6 +80,8 @@ public:
|
|||||||
ManaPool * getManaPool();
|
ManaPool * getManaPool();
|
||||||
void takeMulligan();
|
void takeMulligan();
|
||||||
void serumMulligan();
|
void serumMulligan();
|
||||||
|
bool hasPossibleAttackers();
|
||||||
|
bool noPossibleAttackers();
|
||||||
bool DeadLifeState(bool check = false);
|
bool DeadLifeState(bool check = false);
|
||||||
ManaCost * doesntEmpty;
|
ManaCost * doesntEmpty;
|
||||||
ManaCost * poolDoesntEmpty;
|
ManaCost * poolDoesntEmpty;
|
||||||
|
|||||||
@@ -938,13 +938,12 @@ void GameObserver::gameStateBasedEffects()
|
|||||||
//Auto skip Phases
|
//Auto skip Phases
|
||||||
int skipLevel = (currentPlayer->playMode == Player::MODE_TEST_SUITE || mLoading) ? Constants::ASKIP_NONE
|
int skipLevel = (currentPlayer->playMode == Player::MODE_TEST_SUITE || mLoading) ? Constants::ASKIP_NONE
|
||||||
: options[Options::ASPHASES].number;
|
: options[Options::ASPHASES].number;
|
||||||
int nrCreatures = currentPlayer->game->inPlay->hasType("creature")?1:0;
|
|
||||||
|
|
||||||
if (skipLevel == Constants::ASKIP_SAFE || skipLevel == Constants::ASKIP_FULL)
|
if (skipLevel == Constants::ASKIP_SAFE || skipLevel == Constants::ASKIP_FULL)
|
||||||
{
|
{
|
||||||
if ((opponent()->isAI() && !(isInterrupting)) && ((mCurrentGamePhase == MTG_PHASE_UNTAP)
|
if ((opponent()->isAI() && !(isInterrupting)) && ((mCurrentGamePhase == MTG_PHASE_UNTAP)
|
||||||
|| (mCurrentGamePhase == MTG_PHASE_DRAW) || (mCurrentGamePhase == MTG_PHASE_COMBATBEGIN)
|
|| (mCurrentGamePhase == MTG_PHASE_DRAW) || (mCurrentGamePhase == MTG_PHASE_COMBATBEGIN)
|
||||||
|| ((mCurrentGamePhase == MTG_PHASE_COMBATATTACKERS) && (nrCreatures == 0))
|
|| ((mCurrentGamePhase == MTG_PHASE_COMBATATTACKERS) && (currentPlayer->noPossibleAttackers()))
|
||||||
|| mCurrentGamePhase == MTG_PHASE_COMBATEND || mCurrentGamePhase == MTG_PHASE_ENDOFTURN
|
|| mCurrentGamePhase == MTG_PHASE_COMBATEND || mCurrentGamePhase == MTG_PHASE_ENDOFTURN
|
||||||
|| ((mCurrentGamePhase == MTG_PHASE_CLEANUP) && (currentPlayer->game->hand->nb_cards < 8))))
|
|| ((mCurrentGamePhase == MTG_PHASE_CLEANUP) && (currentPlayer->game->hand->nb_cards < 8))))
|
||||||
userRequestNextGamePhase();
|
userRequestNextGamePhase();
|
||||||
|
|||||||
@@ -245,6 +245,24 @@ void Player::serumMulligan()
|
|||||||
//Draw hand no penalty
|
//Draw hand no penalty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Player::hasPossibleAttackers()
|
||||||
|
{
|
||||||
|
MTGGameZone * z = game->inPlay;
|
||||||
|
int nbcards = z->nb_cards;
|
||||||
|
for (int j = 0; j < nbcards; ++j)
|
||||||
|
{
|
||||||
|
MTGCardInstance * c = z->cards[j];
|
||||||
|
if (c->canAttack())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Player::noPossibleAttackers()
|
||||||
|
{
|
||||||
|
return !hasPossibleAttackers();
|
||||||
|
}
|
||||||
|
|
||||||
bool Player::DeadLifeState(bool check)
|
bool Player::DeadLifeState(bool check)
|
||||||
{
|
{
|
||||||
if ((life <= 0)||(poisonCount >= 10))
|
if ((life <= 0)||(poisonCount >= 10))
|
||||||
|
|||||||
Reference in New Issue
Block a user