forked from External/mage
Fix Ketramose not seeing itself get exiled
This commit is contained in:
parent
e34ebe740e
commit
eafbd5a95c
2 changed files with 46 additions and 11 deletions
|
|
@ -13,6 +13,7 @@ import mage.abilities.effects.common.combat.CantAttackBlockUnlessConditionSource
|
|||
import mage.abilities.keyword.IndestructibleAbility;
|
||||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.abilities.keyword.MenaceAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
|
@ -24,7 +25,9 @@ import mage.game.Game;
|
|||
import mage.game.events.GameEvent;
|
||||
import mage.game.events.ZoneChangeBatchEvent;
|
||||
import mage.game.events.ZoneChangeEvent;
|
||||
import mage.game.events.ZoneChangeGroupEvent;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
|
|
@ -69,7 +72,7 @@ public final class KetramoseTheNewDawn extends CardImpl {
|
|||
}
|
||||
|
||||
}
|
||||
class KetramoseTriggeredAbility extends TriggeredAbilityImpl implements BatchTriggeredAbility<ZoneChangeEvent> {
|
||||
class KetramoseTriggeredAbility extends TriggeredAbilityImpl {
|
||||
KetramoseTriggeredAbility() {
|
||||
super(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), false);
|
||||
this.addEffect(new LoseLifeSourceControllerEffect(1));
|
||||
|
|
@ -81,21 +84,14 @@ class KetramoseTriggeredAbility extends TriggeredAbilityImpl implements BatchTri
|
|||
|
||||
@Override
|
||||
public boolean checkEventType(GameEvent event, Game game) {
|
||||
return event.getType() == GameEvent.EventType.ZONE_CHANGE_BATCH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkEvent(ZoneChangeEvent event, Game game) {
|
||||
if (event.getToZone() != Zone.EXILED) {
|
||||
return false;
|
||||
}
|
||||
return event.getFromZone() == Zone.GRAVEYARD || event.getFromZone() == Zone.BATTLEFIELD;
|
||||
return event.getType() == GameEvent.EventType.ZONE_CHANGE_GROUP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
|
||||
return game.getActivePlayerId().equals(getControllerId())
|
||||
&& !getFilteredEvents((ZoneChangeBatchEvent) event, game).isEmpty();
|
||||
&& zEvent.getFromZone() == Zone.GRAVEYARD || zEvent.getFromZone() == Zone.BATTLEFIELD;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -0,0 +1,39 @@
|
|||
package org.mage.test.cards.single.dft;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class KetramoseTheNewDawnTest extends CardTestPlayerBase {
|
||||
|
||||
private final String ketramose = "Ketramose, the New Dawn";
|
||||
private final String relic = "Relic of Progenitus";
|
||||
private final String ephemerate = "Ephemerate";
|
||||
|
||||
@Test
|
||||
public void testExile() {
|
||||
setStrictChooseMode(true);
|
||||
addCard(Zone.BATTLEFIELD, playerA, ketramose);
|
||||
addCard(Zone.BATTLEFIELD, playerA, relic);
|
||||
addCard(Zone.HAND, playerA, ephemerate);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Plains", 2);
|
||||
addCard(Zone.GRAVEYARD, playerA, "Forest", 10);
|
||||
addCard(Zone.GRAVEYARD, playerB, "Forest", 10);
|
||||
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}:");
|
||||
addTarget(playerA, playerB);
|
||||
addTarget(playerB, "Forest");
|
||||
activateAbility(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "{1}, Exile {this}");
|
||||
waitStackResolved(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, ephemerate, ketramose, true);
|
||||
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
|
||||
assertHandCount(playerA, 4);
|
||||
assertLife(playerA, 20 - 3);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue