def PT = new MagicStatic(MagicLayer.SetPT, MagicStatic.UntilEOT) { @Override public void modPowerToughness(final MagicPermanent source,final MagicPermanent permanent,final MagicPowerToughness pt) { pt.set(4,4); } }; def AB = new MagicStatic(MagicLayer.Ability, MagicStatic.UntilEOT) { @Override public void modAbilityFlags(final MagicPermanent source,final MagicPermanent permanent,final Set flags) { flags.add(MagicAbility.Flying); flags.add(MagicAbility.Changeling); } }; [ new MagicSpellCardEvent() { @Override public MagicEvent getEvent(final MagicCardOnStack cardOnStack, final MagicPayedCost payedCost) { return new MagicEvent( cardOnStack, MagicTargetChoice.POS_TARGET_CREATURE, MagicSacrificeTargetPicker.create(), this, "Target creature\$ becomes 4/4, gains all creature types, and gains flying until end of turn." ); } @Override public void executeEvent(final MagicGame game, final MagicEvent event) { event.processTargetPermanent(game, { MagicPermanent creature -> game.doAction(new MagicBecomesCreatureAction(creature,PT,AB)); } as MagicPermanentAction); } } ]