[ new MagicWhenOtherSpellIsCastTrigger() { @Override public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicCardOnStack cardOnStack) { return (permanent.isFriend(cardOnStack) && cardOnStack.hasColor(MagicColor.Red)) ? new MagicEvent( permanent, MagicTargetChoice.NEG_TARGET_PLAYER, this, "SN deals 3 damage to target player\$." ): MagicEvent.NONE; } @Override public void executeEvent(final MagicGame game, final MagicEvent event) { event.processTargetPlayer(game,new MagicPlayerAction() { public void doAction(final MagicPlayer player) { final MagicDamage damage=new MagicDamage(event.getSource(),player,3); game.doAction(new MagicDealDamageAction(damage)); } }); } }, new MagicWhenOtherSpellIsCastTrigger() { @Override public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicCardOnStack cardOnStack) { return (permanent.isFriend(cardOnStack) && cardOnStack.hasColor(MagicColor.White)) ? new MagicEvent( permanent, this, "PN gains 3 life." ): MagicEvent.NONE; } @Override public void executeEvent(final MagicGame game, final MagicEvent event) { game.doAction(new MagicChangeLifeAction(event.getPlayer(),3)); } } ]