package magic.model.trigger; import magic.data.CardDefinitions; import magic.model.MagicGame; import magic.model.MagicPayedCost; import magic.model.MagicPermanent; import magic.model.action.AttachAction; import magic.model.action.PlayTokenAction; import magic.model.event.MagicEvent; /** * Trigger that occurs when a card with the living weapon mechanic comes into play */ public class LivingWeaponTrigger extends EntersBattlefieldTrigger { private static final EntersBattlefieldTrigger INSTANCE = new LivingWeaponTrigger(); private LivingWeaponTrigger() {} public static EntersBattlefieldTrigger create() { return INSTANCE; } @Override public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPayedCost payedCost) { return new MagicEvent( permanent, this, "PN puts a 0/0 black Germ creature token onto the battlefield, then attaches SN to it." ); } @Override public void executeEvent(final MagicGame game, final MagicEvent event) { final MagicPermanent sn = event.getPermanent(); game.doAction(new PlayTokenAction( event.getPlayer(), CardDefinitions.getToken("0/0 black Germ creature token"), (final MagicPermanent perm) -> { final MagicGame G = perm.getGame(); G.doAction(new AttachAction( sn.map(G), perm )); } )); } }