This commit is contained in:
Anthony Calosa
2017-03-02 07:56:41 +08:00
parent 8ae3e1ea98
commit ba73da321b
6 changed files with 79 additions and 31 deletions

View File

@@ -661,7 +661,6 @@ void GameObserver::gameStateBasedEffects()
for (int w = 0; w < zone->nb_cards; w++)
{
MTGCardInstance * card = zone->cards[w];
Player * zPlayer = zone->owner;
for (int i = Constants::MTG_COLOR_GREEN; i <= Constants::MTG_COLOR_WHITE; ++i)
{
if (card->has(Constants::DEVOID))
@@ -685,10 +684,6 @@ void GameObserver::gameStateBasedEffects()
int onum = w+1;
card->zpos = abs(onum - zone->nb_cards)+1;
}
else if(card && (isInPlay(card)))
{//lastcontroller override
card->lastController = zPlayer;
}
}
@@ -717,6 +712,8 @@ void GameObserver::gameStateBasedEffects()
for (int j = zone->nb_cards - 1; j >= 0; j--)
{
MTGCardInstance * card = zone->cards[j];
//lastcontroller zone update
card->lastController = players[i];
card->entersBattlefield = 0;
card->LKIpower = card->power;
card->LKItoughness = card->toughness;
@@ -810,7 +807,7 @@ void GameObserver::gameStateBasedEffects()
if ((card->target||card->playerTarget) && !card->hasType(Subtypes::TYPE_EQUIPMENT))
{
if(card->target && !isInPlay(card->target))
players[i]->game->putInGraveyard(card);
players[i]->game->putInGraveyard(card);
/*if(card->target && isInPlay(card->target))
{//what exactly does this section do?
if(card->spellTargetType.find("creature") != string::npos && !card->target->hasType("creature"))
@@ -825,7 +822,7 @@ void GameObserver::gameStateBasedEffects()
players[i]->game->putInGraveyard(card);
}*/
if(card->target && isInPlay(card->target) && (card->target)->protectedAgainst(card) && !card->has(Constants::AURAWARD))//protection from quality except aura cards like flickering ward
players[i]->game->putInGraveyard(card);
players[i]->game->putInGraveyard(card);
}
card->enchanted = false;
if (card->target && isInPlay(card->target) && !card->hasType(Subtypes::TYPE_EQUIPMENT) && card->hasSubtype(Subtypes::TYPE_AURA))
@@ -943,7 +940,6 @@ void GameObserver::gameStateBasedEffects()
//checks if a player has a card which has the stated ability in play.
Player * p = players[i];
MTGGameZone * z = players[i]->game->inPlay;
int nbcards = z->nb_cards;
//------------------------------
if(z->hasAbility(Constants::NOMAXHAND)||p->opponent()->inPlay()->hasAbility(Constants::OPPNOMAXHAND))
p->nomaxhandsize = true;
@@ -954,7 +950,7 @@ void GameObserver::gameStateBasedEffects()
/////////////////////////////////////////////////
if (mCurrentGamePhase == MTG_PHASE_ENDOFTURN+1)
{
for (int j = 0; j < nbcards; ++j)
for (int j = z->nb_cards - 1; j >= 0; j--)
{
MTGCardInstance * c = z->cards[j];
@@ -977,31 +973,25 @@ void GameObserver::gameStateBasedEffects()
c->damageToCreature = false;
c->isAttacking = NULL;
}
for (int t = 0; t < nbcards; t++)
for (int jj = z->nb_cards - 1; jj >= 0; jj--)
{
MTGCardInstance * c = z->cards[t];
MTGCardInstance * c = z->cards[jj];
if(!c->isPhased)
if(c && !c->isPhased)
{
if (c->has(Constants::TREASON))
{
MTGCardInstance * beforeCard = c;
p->game->putInGraveyard(c);
p->game->putInZone(c, c->currentZone, c->owner->game->graveyard);
WEvent * e = NEW WEventCardSacrifice(beforeCard,c);
receiveEvent(e);
}
if (c->has(Constants::UNEARTH))
{
p->game->putInExile(c);
p->game->putInZone(c, c->currentZone, c->owner->game->exile);
}
}
if(nbcards > z->nb_cards)
{
t = 0;
nbcards = z->nb_cards;
}
}
MTGGameZone * f = p->game->graveyard;