both MagicPlayCardAction and MagicPlayTokenAction takes into account replacement of MagicSpellCardEvent by making use of event from MagicCardOnstack
parent
fac19e5692
commit
95627f0cfe
|
@ -13,30 +13,33 @@
|
|||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final MagicPlayTokenAction act = new MagicPlayTokenAction(
|
||||
final MagicPermanent rn = event.getRefPermanent();
|
||||
game.doAction(new MagicPlayTokenAction(
|
||||
event.getPlayer(),
|
||||
TokenCardDefinitions.get("2/2 white Cat creature token")
|
||||
);
|
||||
game.doAction(act);
|
||||
final MagicPermanent token = act.getPermanent();
|
||||
final MagicPermanent enchantment = event.getRefPermanent();
|
||||
if (enchantment.isAura()) {
|
||||
game.addEvent(new MagicEvent(
|
||||
enchantment,
|
||||
new MagicMayChoice("Attach ${enchantment} to ${token}?"),
|
||||
token,
|
||||
{
|
||||
final MagicGame G, final MagicEvent E ->
|
||||
if (E.isYes()) {
|
||||
G.doAction(new MagicAttachAction(
|
||||
E.getPermanent(),
|
||||
E.getRefPermanent()
|
||||
));
|
||||
}
|
||||
},
|
||||
"You may\$ attach SN to RN."
|
||||
));
|
||||
}
|
||||
TokenCardDefinitions.get("2/2 white Cat creature token"),
|
||||
{
|
||||
final MagicPermanent token ->
|
||||
final MagicGame G1 = token.getGame();
|
||||
final MagicPermanent enchantment = rn.map(G1);
|
||||
if (enchantment.isAura()) {
|
||||
G1.addEvent(new MagicEvent(
|
||||
enchantment,
|
||||
new MagicMayChoice("Attach ${enchantment} to ${token}?"),
|
||||
token,
|
||||
{
|
||||
final MagicGame G2, final MagicEvent E ->
|
||||
if (E.isYes()) {
|
||||
G2.doAction(new MagicAttachAction(
|
||||
E.getPermanent(),
|
||||
E.getRefPermanent()
|
||||
));
|
||||
}
|
||||
},
|
||||
"You may\$ attach SN to RN."
|
||||
));
|
||||
}
|
||||
}
|
||||
));
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -38,13 +38,16 @@
|
|||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final MagicPlayer player=event.getPlayer();
|
||||
final MagicPlayTokenAction act = new MagicPlayTokenAction(
|
||||
player,
|
||||
TokenCardDefinitions.get("1/1 white Cat Soldier creature token with vigilance")
|
||||
);
|
||||
game.doAction(act);
|
||||
game.doAction(new MagicSetBlockerAction(event.getRefPermanent(), act.getPermanent()));
|
||||
final rn = event.getRefPermanent();
|
||||
game.doAction(new MagicPlayTokenAction(
|
||||
event.getPlayer(),
|
||||
TokenCardDefinitions.get("1/1 white Cat Soldier creature token with vigilance"),
|
||||
{
|
||||
final MagicPermanent perm ->
|
||||
final MagicGame G = perm.getGame();
|
||||
G.doAction(new MagicSetBlockerAction(rn.map(G), perm));
|
||||
}
|
||||
));
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -19,10 +19,13 @@
|
|||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
if (event.isYes()) {
|
||||
event.processTargetCard(game, {
|
||||
final MagicPermanent sn = event.getPermanent();
|
||||
game.doAction(new MagicRemoveCardAction(it,MagicLocationType.OwnersHand));
|
||||
final MagicPlayCardAction action = new MagicPlayCardAction(it,event.getPlayer());
|
||||
game.doAction(action);
|
||||
game.doAction(new MagicAttachAction(event.getPermanent(),action.getPermanent()));
|
||||
game.doAction(new MagicPlayCardAction(it,event.getPlayer(), {
|
||||
final MagicPermanent perm ->
|
||||
final MagicGame G = perm.getGame();
|
||||
G.doAction(new MagicAttachAction(sn.map(G), perm));
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,12 +16,13 @@
|
|||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetCard(game, {
|
||||
game.doAction(new MagicRemoveCardAction(it,MagicLocationType.Graveyard));
|
||||
final MagicPlayCardAction action = new MagicPlayCardAction(it,event.getPlayer());
|
||||
game.doAction(action);
|
||||
final MagicPermanent permanent = action.getPermanent();
|
||||
if (permanent.hasSubType(MagicSubType.Angel)) {
|
||||
game.doAction(new MagicChangeCountersAction(permanent,MagicCounterType.PlusOne,2));
|
||||
}
|
||||
game.doAction(new MagicPlayCardAction(it,event.getPlayer(), {
|
||||
final MagicPermanent perm ->
|
||||
final MagicGame G = perm.getGame();
|
||||
if (perm.hasSubType(MagicSubType.Angel)) {
|
||||
G.doAction(new MagicChangeCountersAction(perm,MagicCounterType.PlusOne,2));
|
||||
}
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,15 +30,18 @@ def HAS_ALL_KALDRA_EQUIPMENT = new MagicCondition() {
|
|||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final MagicPutIntoPlayAction action = new MagicPlayTokenAction(
|
||||
final int pIdx = event.getPlayer().getIndex();
|
||||
game.doAction(new MagicPlayTokenAction(
|
||||
event.getPlayer(),
|
||||
TokenCardDefinitions.get("legendary 4/4 colorless Avatar creature token named Kaldra")
|
||||
);
|
||||
game.doAction(action);
|
||||
final MagicPermanent kaldra = action.getPermanent();
|
||||
for (final equip : game.filterPermanents(event.getPlayer(), MagicTargetFilterFactory.KALDRA_EQUIPMENT)) {
|
||||
game.doAction(new MagicAttachAction(equip, kaldra));
|
||||
}
|
||||
TokenCardDefinitions.get("legendary 4/4 colorless Avatar creature token named Kaldra"),
|
||||
{
|
||||
final MagicPermanent perm ->
|
||||
final MagicGame G = perm.getGame();
|
||||
for (final MagicPermanent equip : G.filterPermanents(G.getPlayer(pIdx), MagicTargetFilterFactory.KALDRA_EQUIPMENT)) {
|
||||
G.doAction(new MagicAttachAction(equip, perm));
|
||||
}
|
||||
}
|
||||
));
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -15,10 +15,11 @@
|
|||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetCard(game, {
|
||||
game.doAction(new MagicRemoveCardAction(it,MagicLocationType.Graveyard));
|
||||
final MagicPlayCardAction action = new MagicPlayCardAction(it,event.getPlayer());
|
||||
game.doAction(action);
|
||||
final MagicPermanent permanent = action.getPermanent();
|
||||
game.doAction(new MagicChangeCountersAction(permanent,MagicCounterType.PlusOne,1));
|
||||
game.doAction(new MagicPlayCardAction(it,event.getPlayer(),{
|
||||
final MagicPermanent perm ->
|
||||
final MagicGame G = perm.getGame();
|
||||
G.doAction(new MagicChangeCountersAction(perm,MagicCounterType.PlusOne,1));
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,15 +11,16 @@ import java.util.Arrays;
|
|||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class MagicPlayCardAction extends MagicPutIntoPlayAction {
|
||||
public class MagicPlayCardAction extends MagicAction {
|
||||
|
||||
private final MagicCard card;
|
||||
private final MagicPlayer controller;
|
||||
private final List<? extends MagicPermanentAction> modifications;
|
||||
|
||||
public MagicPlayCardAction(final MagicCard aCard, final MagicPlayer aController,final List<? extends MagicPermanentAction> aModifications) {
|
||||
card = aCard;
|
||||
controller = aController;
|
||||
setModifications(aModifications);
|
||||
modifications = aModifications;
|
||||
}
|
||||
|
||||
public MagicPlayCardAction(final MagicCard aCard, final MagicPlayer aController,final MagicPermanentAction... aModifications) {
|
||||
|
@ -39,17 +40,11 @@ public class MagicPlayCardAction extends MagicPutIntoPlayAction {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected MagicPermanent createPermanent(final MagicGame game) {
|
||||
return game.createPermanent(card,controller);
|
||||
public void doAction(final MagicGame game) {
|
||||
final MagicCardOnStack cardOnStack = new MagicCardOnStack(card, controller, MagicPayedCost.NOT_SPELL, modifications);
|
||||
game.addEvent(cardOnStack.getEvent());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doAction(final MagicGame game) {
|
||||
if (card.getCardDefinition().isAura()) {
|
||||
final MagicCardOnStack cardOnStack = new MagicCardOnStack(card, controller, MagicPayedCost.NOT_SPELL);
|
||||
game.addEvent(cardOnStack.getEvent());
|
||||
} else {
|
||||
super.doAction(game);
|
||||
}
|
||||
}
|
||||
public void undoAction(final MagicGame game) {}
|
||||
}
|
||||
|
|
|
@ -1,25 +1,36 @@
|
|||
package magic.model.action;
|
||||
|
||||
import magic.ai.ArtificialScoringSystem;
|
||||
import magic.model.MagicPayedCost;
|
||||
import magic.model.MagicCardDefinition;
|
||||
import magic.model.MagicGame;
|
||||
import magic.model.MagicLocationType;
|
||||
import magic.model.MagicObject;
|
||||
import magic.model.MagicPermanent;
|
||||
import magic.model.stack.MagicCardOnStack;
|
||||
import magic.model.trigger.MagicTrigger;
|
||||
import magic.model.trigger.MagicTriggerType;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class MagicPlayCardFromStackAction extends MagicPutIntoPlayAction {
|
||||
public class MagicPlayCardFromStackAction extends MagicAction {
|
||||
|
||||
private final MagicCardOnStack cardOnStack;
|
||||
private final MagicCardDefinition cardDef;
|
||||
|
||||
private MagicPermanent permanent = MagicPermanent.NONE;
|
||||
private MagicPermanent enchantedPermanent = MagicPermanent.NONE;
|
||||
private MagicPayedCost payedCost = MagicPayedCost.NO_COST;
|
||||
private boolean validEnchanted = false;
|
||||
private List<? extends MagicPermanentAction> modifications = Collections.<MagicPermanentAction>emptyList();
|
||||
|
||||
public MagicPlayCardFromStackAction(final MagicCardOnStack aCardOnStack, final MagicCardDefinition aCardDef, final List<? extends MagicPermanentAction> aModifications) {
|
||||
cardOnStack = aCardOnStack;
|
||||
cardDef = aCardDef;
|
||||
setPayedCost(aCardOnStack.getPayedCost());
|
||||
setModifications(aModifications);
|
||||
cardDef = aCardDef;
|
||||
payedCost = aCardOnStack.getPayedCost();
|
||||
modifications = aModifications;
|
||||
}
|
||||
|
||||
public MagicPlayCardFromStackAction(final MagicCardOnStack aCardOnStack, final MagicCardDefinition aCardDef, final MagicPermanentAction... aModifications) {
|
||||
|
@ -30,9 +41,9 @@ public class MagicPlayCardFromStackAction extends MagicPutIntoPlayAction {
|
|||
this(aCardOnStack, aCardOnStack.getCardDefinition(), aModifications);
|
||||
}
|
||||
|
||||
public MagicPlayCardFromStackAction(final MagicCardOnStack cardOnStack, final MagicPermanent enchantedPermanent, final MagicPermanentAction... aModifications) {
|
||||
public MagicPlayCardFromStackAction(final MagicCardOnStack cardOnStack, final MagicPermanent aEnchantedPermanent, final MagicPermanentAction... aModifications) {
|
||||
this(cardOnStack, aModifications);
|
||||
setEnchantedPermanent(enchantedPermanent);
|
||||
enchantedPermanent = aEnchantedPermanent;
|
||||
}
|
||||
|
||||
static final public MagicPlayCardFromStackAction EnterAsCopy(final MagicCardOnStack cardOnStack, final MagicObject obj) {
|
||||
|
@ -43,9 +54,79 @@ public class MagicPlayCardFromStackAction extends MagicPutIntoPlayAction {
|
|||
return new MagicPlayCardFromStackAction(cardOnStack, obj.getCardDefinition(), aModifications);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected MagicPermanent createPermanent(final MagicGame game) {
|
||||
cardOnStack.setMoveLocation(MagicLocationType.Play);
|
||||
return game.createPermanent(cardOnStack.getCard(),cardDef,cardOnStack.getController());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doAction(final MagicGame game) {
|
||||
permanent=createPermanent(game);
|
||||
permanent.getFirstController().addPermanent(permanent);
|
||||
game.update();
|
||||
|
||||
final int score=ArtificialScoringSystem.getTurnScore(game)-permanent.getStaticScore();
|
||||
|
||||
validEnchanted = enchantedPermanent.isValid();
|
||||
if (validEnchanted) {
|
||||
enchantedPermanent.addAura(permanent);
|
||||
permanent.setEnchantedPermanent(enchantedPermanent);
|
||||
}
|
||||
|
||||
//execute comes into play with
|
||||
for (final MagicTrigger<MagicPayedCost> trigger : permanent.getComeIntoPlayTriggers()) {
|
||||
if (trigger.getPriority() == MagicTrigger.REPLACEMENT) {
|
||||
game.executeTrigger(trigger,permanent,permanent,payedCost);
|
||||
}
|
||||
}
|
||||
|
||||
//comes into play with
|
||||
for (final MagicPermanentAction action : modifications) {
|
||||
action.doAction(permanent);
|
||||
}
|
||||
for (final MagicPermanentAction action : cardOnStack.getModifications()) {
|
||||
action.doAction(permanent);
|
||||
}
|
||||
|
||||
game.addStatics(permanent);
|
||||
game.update();
|
||||
|
||||
//execute come into play triggers
|
||||
for (final MagicTrigger<MagicPayedCost> trigger : permanent.getComeIntoPlayTriggers()) {
|
||||
if (trigger.getPriority() > MagicTrigger.REPLACEMENT) {
|
||||
game.executeTrigger(trigger,permanent,permanent,payedCost);
|
||||
}
|
||||
}
|
||||
|
||||
//execute other come into player triggers
|
||||
game.executeTrigger(MagicTriggerType.WhenOtherComesIntoPlay,permanent);
|
||||
|
||||
setScore(permanent.getController(),permanent.getScore()+permanent.getStaticScore()+score);
|
||||
|
||||
game.checkUniquenessRule(permanent);
|
||||
game.setStateCheckRequired();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void undoAction(final MagicGame game) {
|
||||
// for change of control Auras, enchantedPermanent.isValid is false as
|
||||
// change of control action is undone. Thus we store the validity in
|
||||
// variable validEnchanted during doAction.
|
||||
if (validEnchanted) {
|
||||
enchantedPermanent.removeAura(permanent);
|
||||
permanent.setEnchantedPermanent(MagicPermanent.NONE);
|
||||
}
|
||||
permanent.getFirstController().removePermanent(permanent);
|
||||
game.removeTriggers(permanent);
|
||||
game.removeAllStatics(permanent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
if (enchantedPermanent.isValid()) {
|
||||
return getClass().getSimpleName()+" ("+permanent+','+enchantedPermanent+')';
|
||||
} else {
|
||||
return getClass().getSimpleName()+" ("+permanent+')';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,17 +6,26 @@ import magic.model.MagicGame;
|
|||
import magic.model.MagicObject;
|
||||
import magic.model.MagicPermanent;
|
||||
import magic.model.MagicPlayer;
|
||||
import magic.model.MagicPayedCost;
|
||||
import magic.model.stack.MagicCardOnStack;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class MagicPlayTokenAction extends MagicPutIntoPlayAction {
|
||||
public class MagicPlayTokenAction extends MagicAction {
|
||||
|
||||
private final MagicCard card;
|
||||
private final List<? extends MagicPermanentAction> modifications;
|
||||
|
||||
public MagicPlayTokenAction(final MagicPlayer player,final MagicCardDefinition cardDefinition, final List<? extends MagicPermanentAction> aModifications) {
|
||||
card=MagicCard.createTokenCard(cardDefinition,player);
|
||||
setModifications(aModifications);
|
||||
card = MagicCard.createTokenCard(cardDefinition,player);
|
||||
modifications = aModifications;
|
||||
}
|
||||
|
||||
public MagicPlayTokenAction(final MagicCard aCard) {
|
||||
card = aCard;
|
||||
modifications = Collections.<MagicPermanentAction>emptyList();
|
||||
}
|
||||
|
||||
public MagicPlayTokenAction(final MagicPlayer player,final MagicCardDefinition cardDefinition) {
|
||||
|
@ -39,12 +48,12 @@ public class MagicPlayTokenAction extends MagicPutIntoPlayAction {
|
|||
this(player, obj.getCardDefinition(), Arrays.asList(aModifications));
|
||||
}
|
||||
|
||||
public MagicPlayTokenAction(final MagicCard aCard) {
|
||||
card=aCard;
|
||||
@Override
|
||||
public void doAction(final MagicGame game) {
|
||||
final MagicCardOnStack cardOnStack = new MagicCardOnStack(card, card.getController(), MagicPayedCost.NOT_SPELL, modifications);
|
||||
game.addEvent(cardOnStack.getEvent());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected MagicPermanent createPermanent(final MagicGame game) {
|
||||
return game.createPermanent(card,card.getController());
|
||||
}
|
||||
public void undoAction(final MagicGame game) {}
|
||||
}
|
||||
|
|
|
@ -1,106 +0,0 @@
|
|||
package magic.model.action;
|
||||
|
||||
import magic.ai.ArtificialScoringSystem;
|
||||
import magic.model.MagicGame;
|
||||
import magic.model.MagicPayedCost;
|
||||
import magic.model.MagicPermanent;
|
||||
import magic.model.trigger.MagicTrigger;
|
||||
import magic.model.trigger.MagicTriggerType;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class MagicPutIntoPlayAction extends MagicAction {
|
||||
|
||||
private MagicPermanent permanent = MagicPermanent.NONE;
|
||||
private MagicPermanent enchantedPermanent = MagicPermanent.NONE;
|
||||
private MagicPayedCost payedCost = MagicPayedCost.NO_COST;
|
||||
private boolean validEnchanted = false;
|
||||
private List<? extends MagicPermanentAction> modifications = Collections.<MagicPermanentAction>emptyList();
|
||||
|
||||
@Override
|
||||
public void doAction(final MagicGame game) {
|
||||
permanent=createPermanent(game);
|
||||
permanent.getFirstController().addPermanent(permanent);
|
||||
game.update();
|
||||
|
||||
final int score=ArtificialScoringSystem.getTurnScore(game)-permanent.getStaticScore();
|
||||
|
||||
validEnchanted = enchantedPermanent.isValid();
|
||||
if (validEnchanted) {
|
||||
enchantedPermanent.addAura(permanent);
|
||||
permanent.setEnchantedPermanent(enchantedPermanent);
|
||||
}
|
||||
|
||||
//execute comes into play with
|
||||
for (final MagicTrigger<MagicPayedCost> trigger : permanent.getComeIntoPlayTriggers()) {
|
||||
if (trigger.getPriority() == MagicTrigger.REPLACEMENT) {
|
||||
game.executeTrigger(trigger,permanent,permanent,payedCost);
|
||||
}
|
||||
}
|
||||
|
||||
//comes into play with
|
||||
for (final MagicPermanentAction action : modifications) {
|
||||
action.doAction(permanent);
|
||||
}
|
||||
|
||||
game.addStatics(permanent);
|
||||
game.update();
|
||||
|
||||
//execute come into play triggers
|
||||
for (final MagicTrigger<MagicPayedCost> trigger : permanent.getComeIntoPlayTriggers()) {
|
||||
if (trigger.getPriority() > MagicTrigger.REPLACEMENT) {
|
||||
game.executeTrigger(trigger,permanent,permanent,payedCost);
|
||||
}
|
||||
}
|
||||
|
||||
//execute other come into player triggers
|
||||
game.executeTrigger(MagicTriggerType.WhenOtherComesIntoPlay,permanent);
|
||||
|
||||
setScore(permanent.getController(),permanent.getScore()+permanent.getStaticScore()+score);
|
||||
|
||||
game.checkUniquenessRule(permanent);
|
||||
game.setStateCheckRequired();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void undoAction(final MagicGame game) {
|
||||
// for change of control Auras, enchantedPermanent.isValid is false as
|
||||
// change of control action is undone. Thus we store the validity in
|
||||
// variable validEnchanted during doAction.
|
||||
if (validEnchanted) {
|
||||
enchantedPermanent.removeAura(permanent);
|
||||
permanent.setEnchantedPermanent(MagicPermanent.NONE);
|
||||
}
|
||||
permanent.getFirstController().removePermanent(permanent);
|
||||
game.removeTriggers(permanent);
|
||||
game.removeAllStatics(permanent);
|
||||
}
|
||||
|
||||
void setEnchantedPermanent(final MagicPermanent aEnchantedPermanent) {
|
||||
enchantedPermanent = aEnchantedPermanent;
|
||||
}
|
||||
|
||||
void setPayedCost(final MagicPayedCost aPayedCost) {
|
||||
payedCost = aPayedCost;
|
||||
}
|
||||
|
||||
void setModifications(final List<? extends MagicPermanentAction> aModifications) {
|
||||
modifications = aModifications;
|
||||
}
|
||||
|
||||
protected abstract MagicPermanent createPermanent(final MagicGame game);
|
||||
|
||||
public MagicPermanent getPermanent() {
|
||||
return permanent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
if (enchantedPermanent.isValid()) {
|
||||
return getClass().getSimpleName()+" ("+permanent+','+enchantedPermanent+')';
|
||||
} else {
|
||||
return getClass().getSimpleName()+" ("+permanent+')';
|
||||
}
|
||||
}
|
||||
}
|
|
@ -6,6 +6,7 @@ import magic.model.MagicPayedCost;
|
|||
import magic.model.MagicPermanent;
|
||||
import magic.model.action.MagicAttachAction;
|
||||
import magic.model.action.MagicPlayTokenAction;
|
||||
import magic.model.action.MagicPermanentAction;
|
||||
import magic.model.event.MagicEvent;
|
||||
|
||||
/**
|
||||
|
@ -32,19 +33,20 @@ public class MagicLivingWeaponTrigger extends MagicWhenComesIntoPlayTrigger {
|
|||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
|
||||
//create the token
|
||||
final MagicPlayTokenAction play_token=new MagicPlayTokenAction(
|
||||
final MagicPermanent sn = event.getPermanent();
|
||||
game.doAction(new MagicPlayTokenAction(
|
||||
event.getPlayer(),
|
||||
TokenCardDefinitions.get("0/0 black Germ creature token")
|
||||
);
|
||||
game.doAction(play_token);
|
||||
|
||||
//attach the equipment to the token
|
||||
final MagicAttachAction attach_equip = new MagicAttachAction(
|
||||
event.getPermanent(),
|
||||
play_token.getPermanent()
|
||||
);
|
||||
game.doAction(attach_equip);
|
||||
TokenCardDefinitions.get("0/0 black Germ creature token"),
|
||||
new MagicPermanentAction() {
|
||||
@Override
|
||||
public void doAction(final MagicPermanent perm) {
|
||||
final MagicGame G = perm.getGame();
|
||||
G.doAction(new MagicAttachAction(
|
||||
sn.map(G),
|
||||
perm
|
||||
));
|
||||
}
|
||||
}
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,8 +8,10 @@ import magic.model.MagicGame;
|
|||
import magic.model.MagicPermanent;
|
||||
import magic.model.MagicPermanentState;
|
||||
import magic.model.MagicPlayer;
|
||||
import magic.model.MagicPayedCost;
|
||||
import magic.model.stack.MagicCardOnStack;
|
||||
import magic.model.action.MagicPlayTokenAction;
|
||||
import magic.model.action.MagicPutIntoPlayAction;
|
||||
import magic.model.action.MagicPlayCardFromStackAction;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
|
@ -58,10 +60,11 @@ public abstract class TestGameBuilder {
|
|||
for (int c=count;c>0;c--) {
|
||||
|
||||
final MagicCard card=new MagicCard(cardDefinition,player,currentId.getAndIncrement());
|
||||
final MagicCardOnStack cardOnStack = new MagicCardOnStack(card, player, MagicPayedCost.NOT_SPELL);
|
||||
final MagicPermanent permanent=new MagicPermanent(currentId.getAndIncrement(),card,player);
|
||||
lastPermanent=permanent;
|
||||
|
||||
game.doAction(new MagicPutIntoPlayAction() {
|
||||
game.doAction(new MagicPlayCardFromStackAction(cardOnStack) {
|
||||
@Override
|
||||
protected MagicPermanent createPermanent(final MagicGame game) {
|
||||
return permanent;
|
||||
|
|
Loading…
Reference in New Issue