package magic.model.trigger; import magic.model.MagicDamage; import magic.model.MagicMessage; import magic.model.MagicPermanent; import magic.model.MagicCard; import magic.model.MagicGame; import magic.model.MagicLocationType; import magic.model.event.MagicEvent; import magic.model.action.ShiftCardAction; public abstract class ThisCombatDamagePlayerTrigger extends DamageIsDealtTrigger { public ThisCombatDamagePlayerTrigger() {} public boolean accept(final MagicPermanent permanent, final MagicDamage damage) { return super.accept(permanent, damage) && damage.isSource(permanent) && damage.isCombat() && damage.isTargetPlayer(); } public static final ThisCombatDamagePlayerTrigger Ingest = new ThisCombatDamagePlayerTrigger() { @Override public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicDamage damage) { return new MagicEvent( permanent, damage.getTarget(), this, "RN exiles the top card of his or her library." ); } @Override public void executeEvent(final MagicGame game, final MagicEvent event) { for (final MagicCard card : event.getRefPlayer().getLibrary().getCardsFromTop(1)) { game.doAction(new ShiftCardAction( card, MagicLocationType.OwnersLibrary, MagicLocationType.Exile )); game.logAppendMessage(event.getPlayer(), MagicMessage.format("%s is exiled.", card)); } } }; }