* Reyhan, Last of the Abzan - Fixed that dies triggered ability was not reset correctly if it triggered multiple times.

This commit is contained in:
LevelX2 2017-01-30 21:49:57 +01:00
parent 034ef22468
commit ada17b1690
3 changed files with 65 additions and 0 deletions

View file

@ -112,6 +112,7 @@ class ReyhanLastOfTheAbzanTriggeredAbility extends TriggeredAbilityImpl {
if (permanent.getControllerId().equals(this.getControllerId()) && permanent.getCardType().contains(CardType.CREATURE)) {
int countersOn = permanent.getCounters(game).getCount(CounterType.P1P1);
if (countersOn > 0) {
this.getEffects().clear();
this.addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance(countersOn)));
}
return true;

View file

@ -59,4 +59,35 @@ public class SepulchralPrimordialTest extends CardTestPlayerBase {
assertLife(playerB, 20);
}
/**
* Sepulchral Primordial's "enter the battlefield" effect works correctly on
* cast, but does not trigger if he is returned to the battlefield by other
* means (e.g. summoned from the graveyard). I've encountered this in
* 4-player commander games with other humans.
*/
@Test
public void testETBFromGraveyardEffect() {
// Return target creature card from your graveyard to the battlefield. Put a +1/+1 counter on it.
addCard(Zone.HAND, playerA, "Miraculous Recovery", 1); // Instant {4}{W}
// When Sepulchral Primordial enters the battlefield, for each opponent, you may put up to one
// target creature card from that player's graveyard onto the battlefield under your control.
addCard(Zone.GRAVEYARD, playerA, "Sepulchral Primordial", 1); // Creature 5/4
addCard(Zone.BATTLEFIELD, playerA, "Plains", 5);
addCard(Zone.GRAVEYARD, playerB, "Silvercoat Lion", 1);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Miraculous Recovery", "Sepulchral Primordial");
addTarget(playerA, "Silvercoat Lion"); // target for ETB Sepulchral Primordial
setStopAt(1, PhaseStep.BEGIN_COMBAT);
execute();
assertGraveyardCount(playerA, "Miraculous Recovery", 1);
assertPowerToughness(playerA, "Sepulchral Primordial", 6, 5);
assertPermanentCount(playerA, "Silvercoat Lion", 1);
assertLife(playerA, 20);
assertLife(playerB, 20);
}
}

View file

@ -67,6 +67,39 @@ public class PrimordialTest extends CardTestMultiPlayerBase {
assertGraveyardCount(playerD, "Pillarfield Ox", 0);
}
/**
* Sepulchral Primordial's "enter the battlefield" effect works correctly on
* cast, but does not trigger if he is returned to the battlefield by other
* means (e.g. summoned from the graveyard). I've encountered this in
* 4-player commander games with other humans.
*/
@Test
public void SepulchralPrimordialFromGraveyardTest() {
// Return target creature card from your graveyard to the battlefield. Put a +1/+1 counter on it.
addCard(Zone.HAND, playerA, "Miraculous Recovery", 1); // Instant {4}{W}
// When Sepulchral Primordial enters the battlefield, for each opponent, you may put up to one
// target creature card from that player's graveyard onto the battlefield under your control.
addCard(Zone.GRAVEYARD, playerA, "Sepulchral Primordial");
addCard(Zone.BATTLEFIELD, playerA, "Plains", 5);
// Player order: A -> D -> C -> B
addCard(Zone.GRAVEYARD, playerB, "Silvercoat Lion");
addCard(Zone.GRAVEYARD, playerC, "Walking Corpse");
addCard(Zone.GRAVEYARD, playerD, "Pillarfield Ox");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Miraculous Recovery", "Sepulchral Primordial");
setStopAt(1, PhaseStep.BEGIN_COMBAT);
execute();
assertPermanentCount(playerA, "Sepulchral Primordial", 1);
assertPermanentCount(playerA, "Silvercoat Lion", 1);
assertPermanentCount(playerA, "Walking Corpse", 0);
assertPermanentCount(playerA, "Pillarfield Ox", 1);
assertGraveyardCount(playerC, "Walking Corpse", 1);
assertGraveyardCount(playerD, "Pillarfield Ox", 0);
}
/**
* Diluvian Primordial ETB trigger never happened in a 3 player FFA
* commander game. He just resolved, no ETB trigger occurred.