change Infiltration Lens effect to use WhenBlocks trigger instead of

WhenBecomesBlocked so that it triggers the correct number of times

fixes issue 329
master
melvin 2013-01-30 22:39:54 +08:00
parent 3a707dc613
commit 3fce5d96b7
1 changed files with 13 additions and 34 deletions

View File

@ -9,50 +9,29 @@ import magic.model.choice.MagicSimpleMayChoice;
import magic.model.event.MagicEvent;
import magic.model.event.MagicEventAction;
import magic.model.stack.MagicTriggerOnStack;
import magic.model.trigger.MagicWhenBecomesBlockedTrigger;
import magic.model.trigger.MagicWhenBlocksTrigger;
public class Infiltration_Lens {
public static final MagicWhenBecomesBlockedTrigger T = new MagicWhenBecomesBlockedTrigger() {
public static final MagicWhenBlocksTrigger T = new MagicWhenBlocksTrigger() {
@Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent creature) {
final MagicPermanent equippedCreature = permanent.getEquippedCreature();
return (creature == equippedCreature) ?
genEvent(
permanent,
equippedCreature.getBlockingCreatures().size()
return (permanent.getEquippedCreature() == creature.getBlockedCreature()) ?
new MagicEvent(
permanent,
new MagicSimpleMayChoice(
MagicSimpleMayChoice.DRAW_CARDS,
2,
MagicSimpleMayChoice.DEFAULT_NONE
),
this,
"PN may$ draw two cards."
) :
MagicEvent.NONE;
}
};
private static final MagicEvent genEvent(final MagicPermanent permanent, final int amount) {
return new MagicEvent(
permanent,
new MagicSimpleMayChoice(
MagicSimpleMayChoice.DRAW_CARDS,
2,
MagicSimpleMayChoice.DEFAULT_NONE),
amount,
DRAW,
"PN may$ draw two cards.");
}
private static final MagicEventAction DRAW = new MagicEventAction() {
@Override
public void executeEvent(
final MagicGame game,
final MagicEvent event,
final Object[] choiceResults) {
final MagicPermanent permanent = event.getPermanent();
final int amount = event.getRefInt();
public void executeEvent(final MagicGame game, final MagicEvent event, final Object[] choiceResults) {
if (MagicChoice.isYesChoice(choiceResults[0])) {
game.doAction(new MagicDrawAction(event.getPlayer(),2));
}
if (amount > 0) {
game.doAction(new MagicPutItemOnStackAction(new MagicTriggerOnStack(genEvent(
permanent,
amount - 1
))));
}
}
};