corrected initial counters, simplify groovy code

master
melvin 2013-03-02 09:57:26 +08:00
parent 363f4c7afb
commit 124b5801d6
3 changed files with 62 additions and 57 deletions

View File

@ -1,22 +1,5 @@
[
new MagicPermanentActivation(
[
MagicCondition.SORCERY_CONDITION,
MagicCondition.ABILITY_ONCE_CONDITION
],
new MagicActivationHints(MagicTiming.Main),
"+1") {
@Override
public MagicEvent[] getCostEvent(final MagicPermanent source) {
return [
MagicPutCounterEvent.Self(
source,
MagicCounterType.Charge,
1
),
new MagicPlayAbilityEvent(source)
];
}
new MagicPlaneswalkerActivation(1) {
@Override
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
return new MagicEvent(
@ -43,25 +26,7 @@
}
}
},
new MagicPermanentActivation(
[
MagicCondition.SORCERY_CONDITION,
MagicCondition.ABILITY_ONCE_CONDITION,
MagicConditionFactory.ChargeCountersAtLeast(3)
],
new MagicActivationHints(MagicTiming.Main),
"-3") {
@Override
public MagicEvent[] getCostEvent(final MagicPermanent source) {
return [
new MagicRemoveCounterEvent(
source,
MagicCounterType.Charge,
3
),
new MagicPlayAbilityEvent(source)
];
}
new MagicPlaneswalkerActivation(-3) {
@Override
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
return new MagicEvent(
@ -84,25 +49,7 @@
});
}
},
new MagicPermanentActivation(
[
MagicCondition.SORCERY_CONDITION,
MagicCondition.ABILITY_ONCE_CONDITION,
MagicConditionFactory.ChargeCountersAtLeast(8)
],
new MagicActivationHints(MagicTiming.Main),
"-8") {
@Override
public MagicEvent[] getCostEvent(final MagicPermanent source) {
return [
new MagicRemoveCounterEvent(
source,
MagicCounterType.Charge,
8
),
new MagicPlayAbilityEvent(source)
];
}
new MagicPlaneswalkerActivation(-8) {
@Override
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
return new MagicEvent(

View File

@ -6,6 +6,6 @@ rarity=M
type=Planeswalker
subtype=Ajani
cost={1}{W}{W}
ability=enters with charge 8
ability=enters with charge 4
timing=main
requires_groovy_code

View File

@ -0,0 +1,58 @@
package magic.model.event;
import magic.model.MagicCardDefinition;
import magic.model.MagicManaCost;
import magic.model.MagicChangeCardDefinition;
import magic.model.MagicGame;
import magic.model.MagicPayedCost;
import magic.model.MagicPermanent;
import magic.model.MagicSource;
import magic.model.MagicCopyable;
import magic.model.MagicCopyMap;
import magic.model.MagicCounterType;
import magic.model.MagicLocationType;
import magic.model.MagicPowerToughness;
import magic.model.choice.MagicTargetChoice;
import magic.model.condition.MagicCondition;
import magic.model.condition.MagicConditionFactory;
import magic.model.condition.MagicSingleActivationCondition;
public abstract class MagicPlaneswalkerActivation extends MagicPermanentActivation {
final int cost;
public MagicPlaneswalkerActivation(final int cost) {
this(cost, (cost > 0 ? "+" : "") + cost);
}
public MagicPlaneswalkerActivation(final int aCost, final String description) {
super(
new MagicCondition[] {
MagicCondition.SORCERY_CONDITION,
MagicCondition.ABILITY_ONCE_CONDITION,
MagicConditionFactory.ChargeCountersAtLeast(-aCost)
},
new MagicActivationHints(MagicTiming.Main),
description
);
cost = aCost;
}
@Override
public MagicEvent[] getCostEvent(final MagicPermanent source) {
return new MagicEvent[] {
cost >= 0 ?
MagicPutCounterEvent.Self(
source,
MagicCounterType.Charge,
cost
):
new MagicRemoveCounterEvent(
source,
MagicCounterType.Charge,
-cost
),
new MagicPlayAbilityEvent(source)
};
}
}