implement casting restriction as additional costs instead of custom card activation
parent
4c6c82e54f
commit
4e7a7296d1
|
@ -577,9 +577,9 @@ public enum MagicAbility {
|
|||
},
|
||||
CastRestriction("Cast SN " + ARG.ANY, 0) {
|
||||
protected void addAbilityImpl(final MagicAbilityStore card, final Matcher arg) {
|
||||
final MagicCondition[] conds = MagicConditionParser.buildCast(ARG.any(arg));
|
||||
final MagicCardDefinition cardDef = (MagicCardDefinition)card;
|
||||
card.add(MagicCardActivation.castOnly(cardDef, conds));
|
||||
for (final MagicMatchedCostEvent mce : MagicConditionParser.buildCost(ARG.any(arg))) {
|
||||
card.add(MagicAdditionalCost.create(mce));
|
||||
}
|
||||
}
|
||||
},
|
||||
AdditionalCost("As an additional cost to cast SN, " + ARG.COST, 10) {
|
||||
|
|
|
@ -4,9 +4,12 @@ import magic.model.ARG;
|
|||
import magic.model.MagicCounterType;
|
||||
import magic.model.MagicAbility;
|
||||
import magic.model.target.MagicTargetFilterFactory;
|
||||
import magic.model.event.MagicMatchedCostEvent;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.List;
|
||||
import java.util.LinkedList;
|
||||
|
||||
public enum MagicConditionParser {
|
||||
|
||||
|
@ -497,4 +500,13 @@ public enum MagicConditionParser {
|
|||
}
|
||||
return conds;
|
||||
}
|
||||
|
||||
public static List<MagicMatchedCostEvent> buildCost(final String costs) {
|
||||
final String[] splitCosts = costs.split(" and ");
|
||||
final List<MagicMatchedCostEvent> matched = new LinkedList<MagicMatchedCostEvent>();
|
||||
for (String cost : splitCosts) {
|
||||
matched.add(build(cost));
|
||||
}
|
||||
return matched;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -132,15 +132,6 @@ public class MagicCardActivation extends MagicActivation<MagicCard> implements M
|
|||
};
|
||||
}
|
||||
|
||||
public static final MagicCardActivation castOnly(final MagicCardDefinition cardDef, final MagicCondition[] conditions) {
|
||||
return new MagicCardActivation(conditions, cardDef.getActivationHints(), "Cast") {
|
||||
@Override
|
||||
public void change(final MagicCardDefinition cdef) {
|
||||
cdef.setCardAct(this);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static final MagicCardActivation affinity(final MagicCardDefinition cardDef, final MagicTargetFilter<MagicPermanent> filter) {
|
||||
return new MagicCardActivation(CARD_CONDITION, cardDef.getActivationHints(), "Cast") {
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue