From bf7ff31ed215b8a803aa41eebf60c6117330ab5e Mon Sep 17 00:00:00 2001 From: melvin Date: Tue, 3 Dec 2013 15:09:52 +0800 Subject: [PATCH] support discarding at random pattern --- src/magic/model/event/MagicRuleEventAction.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/magic/model/event/MagicRuleEventAction.java b/src/magic/model/event/MagicRuleEventAction.java index d395a44651..e47633a560 100644 --- a/src/magic/model/event/MagicRuleEventAction.java +++ b/src/magic/model/event/MagicRuleEventAction.java @@ -269,7 +269,7 @@ public enum MagicRuleEventAction { } }, DiscardChosen( - "(?[^\\.]*) discards (?[a-z]+) card(s)?.", + "(?[^\\.]*) discards (?[a-z]+) card(s)?(? at random)?.", MagicTargetHint.Negative, MagicTiming.Draw, "Discard" @@ -277,12 +277,17 @@ public enum MagicRuleEventAction { public MagicEventAction getAction(final String rule) { final Matcher matcher = matched(rule); final int amount = MagicRuleEventAction.englishToInt(matcher.group("amount")); + final boolean isRandom = matcher.group("random").isEmpty() == false; return new MagicEventAction() { @Override public void executeEvent(final MagicGame game, final MagicEvent event) { event.processTargetPlayer(game,new MagicPlayerAction() { public void doAction(final MagicPlayer player) { - game.addEvent(new MagicDiscardEvent(event.getSource(), player, amount)); + if (isRandom) { + game.addEvent(MagicDiscardEvent.Random(event.getSource(), player, amount)); + } else { + game.addEvent(new MagicDiscardEvent(event.getSource(), player, amount)); + } } }); }