added unleash to card script

master
melvin 2013-02-18 17:19:24 +08:00
parent f0b7e74c18
commit 383885a306
3 changed files with 74 additions and 0 deletions

View File

@ -68,6 +68,7 @@ import magic.model.trigger.MagicAtEndOfTurnTrigger;
import magic.model.trigger.MagicAtUpkeepTrigger;
import magic.model.trigger.MagicWhenOtherComesIntoPlayTrigger;
import magic.model.trigger.MagicExtortTrigger;
import magic.model.trigger.MagicUnleashTrigger;
import java.util.EnumSet;
import java.util.Set;
@ -726,6 +727,13 @@ public enum MagicAbility {
card.add(new MagicReinforceActivation(n, manaCost));
}
},
Unleash("unleash", 20) {
public void addAbilityImpl(final MagicCardDefinition card, final String arg) {
assert arg.isEmpty() : this + " does not accept arg = " + arg;
card.add(MagicUnleashTrigger.create());
card.add(MagicStatic.Unleash);
}
},
None("",0);
public static final Set<MagicAbility> CORE = EnumSet.range(AttacksEachTurnIfAble, Flanking);

View File

@ -8,6 +8,7 @@ import magic.model.MagicPlayer;
import magic.model.MagicPowerToughness;
import magic.model.MagicSubType;
import magic.model.MagicAbility;
import magic.model.MagicCounterType;
import magic.model.target.MagicTargetFilter;
import java.util.Set;
@ -172,4 +173,18 @@ public abstract class MagicStatic extends MagicDummyModifier implements MagicCha
return source.getEnchantedCreature() == target;
}
};
public static MagicStatic Unleash = new MagicStatic(MagicLayer.Ability) {
@Override
public void modAbilityFlags(
final MagicPermanent source,
final MagicPermanent permanent,
final Set<MagicAbility> flags) {
flags.add(MagicAbility.CannotBlock);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source.getCounters(MagicCounterType.PlusOne) > 0;
}
};
}

View File

@ -0,0 +1,51 @@
package magic.model.trigger;
import magic.model.MagicCounterType;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPlayer;
import magic.model.action.MagicChangeCountersAction;
import magic.model.event.MagicEvent;
import magic.model.choice.MagicMayChoice;
public class MagicUnleashTrigger extends MagicWhenComesIntoPlayTrigger {
private static final MagicUnleashTrigger INSTANCE = new MagicUnleashTrigger();
private MagicUnleashTrigger() {}
public static MagicUnleashTrigger create() {
return INSTANCE;
}
@Override
public MagicEvent executeTrigger(
final MagicGame game,
final MagicPermanent permanent,
final MagicPlayer player) {
return new MagicEvent(
permanent,
new MagicMayChoice(),
this,
"SN enters the battlefield with a +1/+1 counter on it."
);
}
@Override
public void executeEvent(
final MagicGame game,
final MagicEvent event,
final Object[] choiceResults) {
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
game.doAction(new MagicChangeCountersAction(
event.getPermanent(),
MagicCounterType.PlusOne,
1,
false
));
}
}
@Override
public boolean usesStack() {
return false;
}
}