[ new MagicWhenComesIntoPlayTrigger() { @Override public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPayedCost payedCost) { return new MagicEvent( permanent, this, "Exile all cards from all graveyards." ); } @Override public void executeEvent(final MagicGame game, final MagicEvent event) { for (final MagicPlayer player : game.getPlayers()) { for (final MagicCard card : new MagicCardList(player.getGraveyard())) { game.doAction(new MagicRemoveCardAction(card, MagicLocationType.Graveyard)); game.doAction(new MagicMoveCardAction(card, MagicLocationType.Graveyard, MagicLocationType.Exile)); } } } }, //handles permanents new MagicWhenLeavesPlayTrigger(MagicTrigger.REPLACEMENT) { @Override public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicRemoveFromPlayAction act) { if (act.getToLocation() == MagicLocationType.Graveyard) { act.setToLocation(MagicLocationType.Exile); } return MagicEvent.NONE; } }, //handles cards new MagicWouldBeMovedTrigger(MagicTrigger.REPLACEMENT) { @Override public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicMoveCardAction act) { if (act.getToLocation() == MagicLocationType.Graveyard) { act.setToLocation(MagicLocationType.Exile); } return MagicEvent.NONE; } } ]