Fixed Angel of Vitality in M20 set and added new keyword "except" for @lifeof trigger in order to avoid a life gain loop when a card needs to increment life gaining in that phase (eg. Angel of Vitality).

This commit is contained in:
valfieri
2019-09-10 17:02:50 +02:00
parent 6ecd762d18
commit 06ec97676e
11 changed files with 67 additions and 39 deletions
+9 -9
View File
@@ -4033,9 +4033,9 @@ int AALifer::resolve()
_target = ((MTGCardInstance *) _target)->controller();
}
Player *player = (Player*)_target;
int slife = abs(player->gainOrLoseLife(life.getValue()));
int slife = abs(player->gainOrLoseLife(life.getValue(), source));
if(siphon && (slife > 0) && (life.getValue() < 0))
source->controller()->gainOrLoseLife(slife);
source->controller()->gainOrLoseLife(slife, source);
return 1;
}
@@ -4222,7 +4222,7 @@ int AALifeSet::resolve()
return 0;
int lifeDiff = life->getValue() - p->life ;
p->gainOrLoseLife(lifeDiff);
p->gainOrLoseLife(lifeDiff, source);
return 1;
}
@@ -6509,14 +6509,14 @@ int AAExchangeLife::resolve()
if(oldlife > targetOldLife)
{
increaser = oldlife - targetOldLife;
player->gainOrLoseLife(modifier * -1);
player->gainOrLoseLife(modifier * -1, source);
card->addToToughness(increaser+toughMod);
}
else
{
_target->life = oldlife;
card->toughness = oldlife;
player->gainOrLoseLife(modifier);
player->gainOrLoseLife(modifier, source);
}
return 1;
@@ -6524,13 +6524,13 @@ int AAExchangeLife::resolve()
Player * opponent = (Player*)_target;
if(oldlife > targetOldLife)
{
player->gainOrLoseLife(modifier * -1);
opponent->gainOrLoseLife(modifier);
player->gainOrLoseLife(modifier * -1, source);
opponent->gainOrLoseLife(modifier, source);
}
else
{
player->gainOrLoseLife(modifier);
opponent->gainOrLoseLife(modifier * -1);
player->gainOrLoseLife(modifier, source);
opponent->gainOrLoseLife(modifier * -1, source);
}
return 1;
}