add gravecast restriction

if gravecast then do something
-> translates when this card was cast from a graveyard
This commit is contained in:
Anthony Calosa
2017-02-13 07:49:37 +08:00
parent 7a35c253cb
commit d604ae2d77
2 changed files with 18 additions and 3 deletions

View File

@@ -4389,7 +4389,7 @@ AAMover::AAMover(GameObserver* observer, int _id, MTGCardInstance * _source, MTG
if (_target)
target = _target;
andAbility = NULL;
if(destination.size() && !named.size() && source->controller()->isAI())
if(destination.size() && !named.size())
{
if(destination.find("library") != string::npos)
named = "Put in Library";

View File

@@ -314,6 +314,21 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
return 0;
}
}
check = restriction[i].find("gravecast");
if(check != string::npos)
{
int count = 0;
for(unsigned int k = 0; k < player->game->stack->cardsSeenThisTurn.size(); k++)
{
MTGCardInstance * stackCard = player->game->stack->cardsSeenThisTurn[k];
if(stackCard->next && stackCard->next == card && (card->previousZone == card->controller()->game->graveyard||card->previousZone == card->controller()->opponent()->game->graveyard))
count++;
if(stackCard == card && (card->previousZone == card->controller()->game->graveyard||card->previousZone == card->controller()->opponent()->game->graveyard))
count++;
}
if(!count)
return 0;
}
check = restriction[i].find("rebound");
if(check != string::npos)
{
@@ -321,9 +336,9 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
for(unsigned int k = 0; k < player->game->stack->cardsSeenThisTurn.size(); k++)
{
MTGCardInstance * stackCard = player->game->stack->cardsSeenThisTurn[k];
if(stackCard->next && stackCard->next == card && card->previousZone == card->controller()->game->hand)
if(stackCard->next && stackCard->next == card && (card->previousZone == card->controller()->game->hand||card->previousZone == card->controller()->opponent()->game->hand))
count++;
if(stackCard == card && card->previousZone == card->controller()->game->hand)
if(stackCard == card && (card->previousZone == card->controller()->game->hand||card->previousZone == card->controller()->opponent()->game->hand))
count++;
}
if(!count)