add ability 'Fabricate <n>', closes #831

master
melvinzhang 2016-09-18 21:15:30 +08:00
parent dec1a963ba
commit 9449be257a
4 changed files with 83 additions and 1 deletions

View File

@ -0,0 +1,8 @@
name=1/1 colorless Servo artifact creature token
token=Servo
image=http://media.wizards.com/2016/bVvMNuiu2i_KLD/en_b786LD89UN.png
value=1
pt=1/1
color=
subtype=Servo
type=Artifact,Creature

View File

@ -1452,6 +1452,12 @@ public enum MagicAbility {
card.add(DamageIsDealtTrigger.Renown(n));
}
},
Fabricate("fabricate " + ARG.NUMBER,10) {
protected void addAbilityImpl(final MagicAbilityStore card, final Matcher arg) {
final int n = ARG.number(arg);
card.add(EntersBattlefieldTrigger.Fabricate(n));
}
},
/*
Suspend("suspend " + ARG.NUMBER + "( |—)" + ARG.MANACOST, 0) {
protected void addAbilityImpl(final MagicAbilityStore card, final Matcher arg) {

View File

@ -75,7 +75,7 @@ public enum MagicSubType {
Orb, Orc, Orgg, Ouphe, Ox, Oyster, Pegasus, Pentavite, Pest, Phelddagrif,
Phoenix, Pilot, Pincher, Pirate, Plant, Praetor, Prism, Processor, Rabbit, Rat, Rebel,
Reflection, Rhino, Rigger, Rogue, Sable, Salamander, Samurai, Sand, Saproling, Satyr,
Scarecrow, Scion, Scorpion, Scout, Serf, Serpent, Shade, Shaman, Shapeshifter, Sheep,
Scarecrow, Scion, Scorpion, Scout, Serf, Serpent, Servo, Shade, Shaman, Shapeshifter, Sheep,
Siren, Skeleton, Slith, Sliver, Slug, Snake, Soldier, Soltari, Spawn, Specter,
Spellshaper, Sphinx, Spider, Spike, Spirit, Splinter, Sponge, Squid, Squirrel,
Starfish, Surrakar, Survivor, Tetravite, Thalakos, Thopter, Thrull, Treefolk,

View File

@ -5,10 +5,17 @@ import magic.model.MagicGame;
import magic.model.MagicPayedCost;
import magic.model.MagicPermanent;
import magic.model.MagicPermanentState;
import magic.model.MagicCounterType;
import magic.model.MagicMessage;
import magic.data.CardDefinitions;
import magic.model.action.ChangeStateAction;
import magic.model.action.ChangeCountersAction;
import magic.model.action.PlayTokensAction;
import magic.model.action.SacrificeAction;
import magic.model.choice.MagicMayChoice;
import magic.model.choice.MagicTargetChoice;
import magic.model.choice.MagicOrChoice;
import magic.model.choice.MagicChoice;
import magic.model.event.MagicEvent;
import magic.model.event.MagicEventAction;
import magic.model.event.MagicSacrificePermanentEvent;
@ -109,4 +116,65 @@ public abstract class EntersBattlefieldTrigger extends MagicTrigger<MagicPayedCo
}
}
};
public static final EntersBattlefieldTrigger Fabricate(final int n) {
return new EntersBattlefieldTrigger() {
private final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> {
if (event.isYes()) {
game.doAction(new ChangeCountersAction(
event.getPermanent(),
MagicCounterType.PlusOne,
event.getRefInt()
));
game.logAppendMessage(
event.getPlayer(),
event.getPlayer() + " puts " + event.getRefInt() + " +1/+1 counters on " + event.getPermanent() + "."
);
} else {
game.doAction(new PlayTokensAction(
event.getPlayer(),
CardDefinitions.getToken("1/1 colorless Servo artifact creature token"),
event.getRefInt()
));
}
};
@Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPayedCost payedCost) {
return new MagicEvent(
permanent,
n,
this,
"Fabriate RN."
);
}
@Override
public void executeEvent(final MagicGame game, final MagicEvent event) {
if (event.getPermanent().isValid()) {
game.addEvent(new MagicEvent(
event.getSource(),
event.getPlayer(),
new MagicMayChoice(
MagicMessage.replaceName(
"Put RN +1/+1 counters on SN? If you dont, create RN Servo tokens.",
event.getSource(),
event.getPlayer(),
event.getRefInt()
)
),
event.getRefInt(),
EVENT_ACTION,
"You may$ put RN +1/+1 counters on SN. If you dont, create RN 1/1 colorless Servo artifact creature tokens."
));
} else {
game.doAction(new PlayTokensAction(
event.getPlayer(),
CardDefinitions.getToken("1/1 colorless Servo artifact creature token"),
event.getRefInt()
));
}
}
};
}
}