pass MagicRemoveFromPlayAction into MagicLeavesPlayTrigger
parent
c3d5f24c82
commit
17e26de936
|
@ -1,8 +1,8 @@
|
|||
[
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent left) {
|
||||
return (permanent == left) ?
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicRemoveFromPlayAction act) {
|
||||
return act.isPermanent(permanent) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
|
|
|
@ -56,8 +56,8 @@ def ST = new MagicStatic(MagicLayer.Type) {
|
|||
},
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent left) {
|
||||
return (permanent == left) ?
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicRemoveFromPlayAction act) {
|
||||
return act.isPermanent(permanent) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
},
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPermanent left) {
|
||||
if (permanent == left &&
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicRemoveFromPlayAction act) {
|
||||
if (act.isPermanent(permanent) &&
|
||||
!permanent.getExiledCards().isEmpty()) {
|
||||
final MagicCardList clist = new MagicCardList(permanent.getExiledCards());
|
||||
return new MagicEvent(
|
||||
|
|
|
@ -28,8 +28,9 @@ def event = {
|
|||
},
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent left) {
|
||||
return (permanent == left) ? event(permanent) : MagicEvent.NONE;
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicRemoveFromPlayAction act) {
|
||||
return act.isPermanent(permanent) ?
|
||||
event(permanent) : MagicEvent.NONE;
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
[
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent left) {
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicRemoveFromPlayAction act) {
|
||||
final int amount = permanent.getCounters(MagicCounterType.Charge);
|
||||
return (permanent == left && amount > 0) ?
|
||||
return (act.isPermanent(permanent) && amount > 0) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
amount,
|
||||
|
|
|
@ -41,8 +41,8 @@
|
|||
},
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPermanent left) {
|
||||
if (permanent == left &&
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicRemoveFromPlayAction act) {
|
||||
if (act.isPermanent(permanent) &&
|
||||
!permanent.getExiledCards().isEmpty()) {
|
||||
final MagicCard exiledCard = permanent.getExiledCards().get(0);
|
||||
return new MagicEvent(
|
||||
|
|
|
@ -53,8 +53,8 @@ def action = {
|
|||
},
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPermanent left) {
|
||||
if (permanent == left && !permanent.getExiledCards().isEmpty()) {
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicRemoveFromPlayAction act) {
|
||||
if (act.isPermanent(permanent) && !permanent.getExiledCards().isEmpty()) {
|
||||
final MagicCardList clist = new MagicCardList(permanent.getExiledCards());
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
[
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent left) {
|
||||
return (permanent == left) ?
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicRemoveFromPlayAction act) {
|
||||
return act.isPermanent(permanent) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
MagicTargetChoice.TARGET_WHITE_CREATURE,
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
[
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent left) {
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicRemoveFromPlayAction act) {
|
||||
final MagicPermanent enchantedPermanent = permanent.getEnchantedCreature();
|
||||
return (permanent == left && enchantedPermanent != MagicPermanent.NONE) ?
|
||||
return (act.isPermanent(permanent) && enchantedPermanent.isValid()) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
enchantedPermanent,
|
||||
|
|
|
@ -22,8 +22,8 @@
|
|||
},
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPermanent left) {
|
||||
if (permanent == left &&
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicRemoveFromPlayAction act) {
|
||||
if (act.isPermanent(permanent) &&
|
||||
!permanent.getExiledCards().isEmpty()) {
|
||||
final MagicCardList clist = new MagicCardList(permanent.getExiledCards());
|
||||
return new MagicEvent(
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
[
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent left) {
|
||||
return (permanent == left) ?
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicRemoveFromPlayAction act) {
|
||||
return act.isPermanent(permanent) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
|
|
|
@ -35,7 +35,8 @@ def event = {
|
|||
},
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPermanent left) {
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicRemoveFromPlayAction act) {
|
||||
final MagicPermanent left = act.getPermanent();
|
||||
return (left != permanent &&
|
||||
left.isArtifact() &&
|
||||
left.isFriend(permanent)) ?
|
||||
|
|
|
@ -21,20 +21,14 @@ def genEvent = {
|
|||
[
|
||||
new MagicWhenComesIntoPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(
|
||||
final MagicGame game,
|
||||
final MagicPermanent permanent,
|
||||
final MagicPayedCost payedCost) {
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicPayedCost payedCost) {
|
||||
return genEvent(permanent);
|
||||
}
|
||||
},
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(
|
||||
final MagicGame game,
|
||||
final MagicPermanent permanent,
|
||||
final MagicPermanent left) {
|
||||
return (permanent == left) ?
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicRemoveFromPlayAction act) {
|
||||
return act.isPermanent(permanent) ?
|
||||
genEvent(permanent) : MagicEvent.NONE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
[
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPermanent left) {
|
||||
return (permanent == left) ?
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicRemoveFromPlayAction act) {
|
||||
return act.isPermanent(permanent) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
[
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPermanent left) {
|
||||
return (permanent == left) ?
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicRemoveFromPlayAction act) {
|
||||
return act.isPermanent(permanent) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
[
|
||||
new MagicWhenLeavesPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPermanent left) {
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicRemoveFromPlayAction act) {
|
||||
final MagicPermanent left = act.getPermanent();
|
||||
return (left.isCreature() && left.isToken()) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
|
|
|
@ -13,17 +13,33 @@ import java.util.Collection;
|
|||
public class MagicRemoveFromPlayAction extends MagicAction {
|
||||
|
||||
private final MagicPermanent permanent;
|
||||
private final MagicLocationType toLocation;
|
||||
private MagicLocationType toLocation;
|
||||
private boolean valid;
|
||||
|
||||
public MagicRemoveFromPlayAction(final MagicPermanent permanent,final MagicLocationType toLocation) {
|
||||
this.permanent=permanent;
|
||||
this.toLocation=toLocation;
|
||||
public MagicRemoveFromPlayAction(final MagicPermanent aPermanent,final MagicLocationType aToLocation) {
|
||||
permanent = aPermanent;
|
||||
toLocation = aToLocation;
|
||||
}
|
||||
|
||||
public boolean isValid() {
|
||||
return valid;
|
||||
}
|
||||
|
||||
public boolean isPermanent(final MagicPermanent aPermanent) {
|
||||
return permanent == aPermanent;
|
||||
}
|
||||
|
||||
public MagicPermanent getPermanent() {
|
||||
return permanent;
|
||||
}
|
||||
|
||||
public MagicLocationType getToLocation() {
|
||||
return toLocation;
|
||||
}
|
||||
|
||||
public void setToLocation(final MagicLocationType aToLocation) {
|
||||
toLocation = aToLocation;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doAction(final MagicGame game) {
|
||||
|
@ -38,6 +54,8 @@ public class MagicRemoveFromPlayAction extends MagicAction {
|
|||
final int score=permanent.getScore()+permanent.getStaticScore();
|
||||
|
||||
// Execute trigger here so that full permanent state is preserved.
|
||||
game.executeTrigger(MagicTriggerType.WhenLeavesPlay, this);
|
||||
|
||||
if (toLocation==MagicLocationType.Graveyard) {
|
||||
game.executeTrigger(MagicTriggerType.WhenOtherPutIntoGraveyardFromPlay,permanent);
|
||||
if (permanent.isCreature()) {
|
||||
|
@ -45,8 +63,6 @@ public class MagicRemoveFromPlayAction extends MagicAction {
|
|||
}
|
||||
}
|
||||
|
||||
game.executeTrigger(MagicTriggerType.WhenLeavesPlay,permanent);
|
||||
|
||||
// Equipment
|
||||
if (permanent.getEquippedCreature().isValid()) {
|
||||
permanent.getEquippedCreature().removeEquipment(permanent);
|
||||
|
|
|
@ -4,6 +4,7 @@ import magic.model.MagicDamage;
|
|||
import magic.model.MagicGame;
|
||||
import magic.model.MagicPermanent;
|
||||
import magic.model.action.MagicDealDamageAction;
|
||||
import magic.model.action.MagicRemoveFromPlayAction;
|
||||
import magic.model.action.MagicTargetAction;
|
||||
import magic.model.choice.MagicTargetChoice;
|
||||
import magic.model.event.MagicEvent;
|
||||
|
@ -32,8 +33,8 @@ public class MagicLeavesDamageTargetTrigger extends MagicWhenLeavesPlayTrigger {
|
|||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPermanent left) {
|
||||
return (permanent == left) ?
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicRemoveFromPlayAction act) {
|
||||
return act.isPermanent(permanent) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
targetChoice,
|
||||
|
|
|
@ -3,6 +3,7 @@ package magic.model.trigger;
|
|||
import magic.model.MagicGame;
|
||||
import magic.model.MagicPermanent;
|
||||
import magic.model.action.MagicChangeLifeAction;
|
||||
import magic.model.action.MagicRemoveFromPlayAction;
|
||||
import magic.model.event.MagicEvent;
|
||||
|
||||
public class MagicLeavesGainLifeTrigger extends MagicWhenLeavesPlayTrigger {
|
||||
|
@ -14,8 +15,8 @@ public class MagicLeavesGainLifeTrigger extends MagicWhenLeavesPlayTrigger {
|
|||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPermanent left) {
|
||||
return (permanent == left) ?
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicRemoveFromPlayAction act) {
|
||||
return act.isPermanent(permanent) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
|
|
|
@ -5,6 +5,7 @@ import magic.model.MagicLocationType;
|
|||
import magic.model.MagicPermanent;
|
||||
import magic.model.MagicCardList;
|
||||
import magic.model.action.MagicReturnExiledUntilThisLeavesPlayAction;
|
||||
import magic.model.action.MagicRemoveFromPlayAction;
|
||||
import magic.model.event.MagicEvent;
|
||||
|
||||
public class MagicLeavesReturnExileTrigger extends MagicWhenLeavesPlayTrigger {
|
||||
|
@ -18,8 +19,8 @@ public class MagicLeavesReturnExileTrigger extends MagicWhenLeavesPlayTrigger {
|
|||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPermanent left) {
|
||||
if (permanent == left &&
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicRemoveFromPlayAction act) {
|
||||
if (act.isPermanent(permanent) &&
|
||||
!permanent.getExiledCards().isEmpty()) {
|
||||
final MagicCardList clist = new MagicCardList(permanent.getExiledCards());
|
||||
return new MagicEvent(
|
||||
|
|
|
@ -8,7 +8,7 @@ public enum MagicTriggerType {
|
|||
WhenOtherSpellIsCast, // card on stack
|
||||
WhenSpellIsCast, // card on stack
|
||||
WhenComesIntoPlay, // controller
|
||||
WhenLeavesPlay, // permanent
|
||||
WhenLeavesPlay, // MagicRemoveFromPlayAction
|
||||
WhenBecomesTapped, // permanent
|
||||
WhenDrawn, // card
|
||||
WhenOtherDrawn, // card
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package magic.model.trigger;
|
||||
|
||||
import magic.model.MagicPermanent;
|
||||
import magic.model.action.MagicRemoveFromPlayAction;
|
||||
|
||||
public abstract class MagicWhenLeavesPlayTrigger extends MagicTrigger<MagicPermanent> {
|
||||
public abstract class MagicWhenLeavesPlayTrigger extends MagicTrigger<MagicRemoveFromPlayAction> {
|
||||
public MagicWhenLeavesPlayTrigger(final int priority) {
|
||||
super(priority);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue