add target gains pattern

master
melvin 2013-10-20 17:52:59 +08:00
parent a7e170237c
commit d2a369065a
1 changed files with 34 additions and 0 deletions

View File

@ -41,6 +41,7 @@ import magic.model.target.MagicWeakenTargetPicker;
import magic.model.target.MagicBounceTargetPicker; import magic.model.target.MagicBounceTargetPicker;
import magic.model.target.MagicTapTargetPicker; import magic.model.target.MagicTapTargetPicker;
import magic.model.target.MagicPreventTargetPicker; import magic.model.target.MagicPreventTargetPicker;
import magic.model.target.MagicDeathtouchTargetPicker;
import magic.model.choice.MagicTargetChoice; import magic.model.choice.MagicTargetChoice;
import magic.model.choice.MagicChoice; import magic.model.choice.MagicChoice;
import magic.model.choice.MagicMayChoice; import magic.model.choice.MagicMayChoice;
@ -305,6 +306,35 @@ public enum MagicRuleEventAction {
return Character.toUpperCase(ability.charAt(0)) + ability.substring(1); return Character.toUpperCase(ability.charAt(0)) + ability.substring(1);
} }
}, },
GainChosen(
"(?<choice>[^\\.]*) gains (?<ability>[^\\.]*) until end of turn.",
MagicTargetHint.Positive
) {
public MagicEventAction getAction(final String rule) {
final Matcher matcher = matched(rule);
final MagicAbility ability = MagicAbility.getAbility(matcher.group("ability"));
return new MagicEventAction() {
@Override
public void executeEvent(final MagicGame game, final MagicEvent event) {
event.processTargetPermanent(game,new MagicPermanentAction() {
public void doAction(final MagicPermanent creature) {
game.doAction(new MagicGainAbilityAction(creature,ability));
}
});
}
};
}
public MagicTargetPicker<?> getPicker(final String rule) {
final Matcher matcher = matched(rule);
final MagicAbility ability = MagicAbility.getAbility(matcher.group("ability"));
switch (ability) {
case Deathtouch:
return MagicDeathtouchTargetPicker.getInstance();
default:
return MagicPumpTargetPicker.create();
}
}
},
GainGroup( GainGroup(
"(?<group>[^\\.]*) gain (?<ability>[^\\.]*) until end of turn." "(?<group>[^\\.]*) gain (?<ability>[^\\.]*) until end of turn."
) { ) {
@ -541,6 +571,10 @@ public enum MagicRuleEventAction {
this(aPattern, MagicTargetHint.None, MagicDefaultTargetPicker.create(), MagicTiming.None, "", MagicEvent.NO_ACTION); this(aPattern, MagicTargetHint.None, MagicDefaultTargetPicker.create(), MagicTiming.None, "", MagicEvent.NO_ACTION);
} }
private MagicRuleEventAction(final String aPattern, final MagicTargetHint aHint) {
this(aPattern, aHint, MagicDefaultTargetPicker.create(), MagicTiming.None, "", MagicEvent.NO_ACTION);
}
private MagicRuleEventAction( private MagicRuleEventAction(
final String aPattern, final String aPattern,
final MagicTiming aTiming, final MagicTiming aTiming,