diff --git a/release/Magarena/scripts/Archwing_Dragon.txt b/release/Magarena/scripts/Archwing_Dragon.txt index 50525a0f58..0144709479 100644 --- a/release/Magarena/scripts/Archwing_Dragon.txt +++ b/release/Magarena/scripts/Archwing_Dragon.txt @@ -7,5 +7,5 @@ type=Creature subtype=Dragon cost={2}{R}{R} pt=4/4 -ability=flying;haste;return at end +ability=flying;haste;end step effect Return SN to its owner's hand. timing=fmain diff --git a/release/Magarena/scripts/Glitterfang.txt b/release/Magarena/scripts/Glitterfang.txt index 647c8d87c1..3e38a8b130 100644 --- a/release/Magarena/scripts/Glitterfang.txt +++ b/release/Magarena/scripts/Glitterfang.txt @@ -7,5 +7,5 @@ type=Creature subtype=Spirit cost={R} pt=1/1 -ability=haste;return at end +ability=haste;end step effect Return SN to its owner's hand. timing=fmain diff --git a/release/Magarena/scripts/Mark_of_Fury.txt b/release/Magarena/scripts/Mark_of_Fury.txt index cb40d2f85f..ca1759b85c 100644 --- a/release/Magarena/scripts/Mark_of_Fury.txt +++ b/release/Magarena/scripts/Mark_of_Fury.txt @@ -7,6 +7,6 @@ type=Enchantment subtype=Aura cost={R} given_ability=haste -ability=return at end +ability=end step effect Return SN to its owner's hand. timing=fmain enchant=haste,pos creature diff --git a/release/Magarena/scripts/Viashino_Cutthroat.txt b/release/Magarena/scripts/Viashino_Cutthroat.txt index 686d24eb29..e8eaa60eb4 100644 --- a/release/Magarena/scripts/Viashino_Cutthroat.txt +++ b/release/Magarena/scripts/Viashino_Cutthroat.txt @@ -7,5 +7,5 @@ type=Creature subtype=Viashino cost={2}{R}{R} pt=5/3 -ability=haste;return at end +ability=haste;end step effect Return SN to its owner's hand. timing=fmain diff --git a/release/Magarena/scripts/Viashino_Sandscout.txt b/release/Magarena/scripts/Viashino_Sandscout.txt index e9b6ff0ba1..e3af98cbdd 100644 --- a/release/Magarena/scripts/Viashino_Sandscout.txt +++ b/release/Magarena/scripts/Viashino_Sandscout.txt @@ -7,5 +7,5 @@ type=Creature subtype=Viashino,Scout cost={1}{R} pt=2/1 -ability=haste;return at end +ability=haste;end step effect Return SN to its owner's hand. timing=fmain diff --git a/release/Magarena/scripts/Viashino_Sandstalker.txt b/release/Magarena/scripts/Viashino_Sandstalker.txt index ccf5defd13..75022feaa4 100644 --- a/release/Magarena/scripts/Viashino_Sandstalker.txt +++ b/release/Magarena/scripts/Viashino_Sandstalker.txt @@ -7,5 +7,5 @@ type=Creature subtype=Viashino,Warrior cost={1}{R}{R} pt=4/2 -ability=haste;return at end +ability=haste;end step effect Return SN to its owner's hand. timing=fmain diff --git a/src/magic/model/MagicAbility.java b/src/magic/model/MagicAbility.java index a784ecd135..cbc9a2b3e7 100644 --- a/src/magic/model/MagicAbility.java +++ b/src/magic/model/MagicAbility.java @@ -637,6 +637,13 @@ public enum MagicAbility { )); } }, + EndStepEffect("end step effect", 0) { + protected void addAbilityImpl(final MagicAbilityStore card, final String arg) { + card.add(MagicAtEndOfTurnTrigger.create( + MagicRuleEventAction.create(arg) + )); + } + }, EntersKickedEffect("enters kicked effect", 10) { protected void addAbilityImpl(final MagicAbilityStore card, final String arg) { card.add(MagicWhenComesIntoPlayTrigger.createKicked( @@ -664,12 +671,6 @@ public enum MagicAbility { card.add(MagicStatic.ControlEnchanted); } }, - ReturnAtEnd("return at end", -50) { - protected void addAbilityImpl(final MagicAbilityStore card, final String arg) { - assert arg.isEmpty() : this + " does not accept arg = " + arg; - card.add(MagicAtEndOfTurnTrigger.ReturnAtEnd); - } - }, SwitchPT("switch pt", 10) { protected void addAbilityImpl(final MagicAbilityStore card, final String arg) { final MagicManaCost manaCost = MagicManaCost.create(arg); diff --git a/src/magic/model/trigger/MagicAtEndOfTurnTrigger.java b/src/magic/model/trigger/MagicAtEndOfTurnTrigger.java index 4bb45099e5..da63d42668 100644 --- a/src/magic/model/trigger/MagicAtEndOfTurnTrigger.java +++ b/src/magic/model/trigger/MagicAtEndOfTurnTrigger.java @@ -7,6 +7,7 @@ import magic.model.MagicPlayer; import magic.model.action.MagicRemoveFromPlayAction; import magic.model.action.MagicSacrificeAction; import magic.model.event.MagicEvent; +import magic.model.event.MagicSourceEvent; public abstract class MagicAtEndOfTurnTrigger extends MagicTrigger { public MagicAtEndOfTurnTrigger(final int priority) { @@ -18,24 +19,15 @@ public abstract class MagicAtEndOfTurnTrigger extends MagicTrigger public MagicTriggerType getType() { return MagicTriggerType.AtEndOfTurn; } - - public static final MagicAtEndOfTurnTrigger ReturnAtEnd = new MagicAtEndOfTurnTrigger() { - @Override - public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicPlayer eotPlayer) { - return new MagicEvent( - permanent, - this, - "Return SN to its owner's hand." - ); - } - @Override - public void executeEvent(final MagicGame game, final MagicEvent event) { - game.doAction(new MagicRemoveFromPlayAction( - event.getPermanent(), - MagicLocationType.OwnersHand - )); - } - }; + + public static final MagicAtEndOfTurnTrigger create(final MagicSourceEvent sourceEvent) { + return new MagicAtEndOfTurnTrigger() { + @Override + public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPlayer player) { + return sourceEvent.getEvent(permanent); + } + }; + } public static final MagicAtEndOfTurnTrigger Sacrifice = new MagicAtEndOfTurnTrigger() { @Override