replace 'return at end' with more general 'end step effect <effect>' ability

master
melvin 2013-10-30 11:49:18 +08:00
parent 46bd3fb86c
commit d013c679e9
8 changed files with 23 additions and 30 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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<MagicPlayer> {
public MagicAtEndOfTurnTrigger(final int priority) {
@ -18,24 +19,15 @@ public abstract class MagicAtEndOfTurnTrigger extends MagicTrigger<MagicPlayer>
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