allow ability keyword to be separated by comma

master
melvinzhang 2015-03-21 13:41:26 +08:00
parent e93ee8a30b
commit 27ab69c30f
3 changed files with 28 additions and 2 deletions

View File

@ -11,6 +11,7 @@ import magic.model.event.MagicPlayAuraEvent;
import magic.model.event.MagicSpellCardEvent;
import magic.model.event.MagicTiming;
import magic.model.mstatic.MagicStatic;
import magic.exception.ScriptParseException;
import java.text.SimpleDateFormat;
import java.text.ParseException;
@ -78,11 +79,27 @@ public enum CardProperty {
card.setAbilityProperty(value);
}
},
LOAD_ABILITY_COMMA() {
public void setProperty(final MagicCardDefinition card, final String value) {
final String[] names=value.split(COMMA);
for (final String name : names) {
MagicAbility.getAbility(name).addAbility(card, name);
}
}
},
LOAD_ABILITY() {
public void setProperty(final MagicCardDefinition card, final String value) {
final String[] names=value.split(SEMI);
for (final String name : names) {
MagicAbility.getAbility(name).addAbility(card, name);
try {
MagicAbility.getAbility(name).addAbility(card, name);
} catch (final ScriptParseException origPE) {
try {
LOAD_ABILITY_COMMA.setProperty(card, name);
} catch (final ScriptParseException newPE) {
throw origPE;
}
}
}
}
},

View File

@ -0,0 +1,8 @@
package magic.exception;
@SuppressWarnings("serial")
public class ScriptParseException extends RuntimeException {
public ScriptParseException(final String msg) {
super(msg);
}
}

View File

@ -12,6 +12,7 @@ import magic.model.condition.MagicConditionFactory;
import magic.model.condition.MagicConditionParser;
import magic.model.trigger.MagicThiefTrigger.Player;
import magic.model.trigger.MagicThiefTrigger.Type;
import magic.exception.ScriptParseException;
import java.util.EnumSet;
import java.util.List;
@ -1299,7 +1300,7 @@ public enum MagicAbility {
return ability;
}
}
throw new RuntimeException("unknown ability \"" + name + "\"");
throw new ScriptParseException("unknown ability \"" + name + "\"");
}
public static MagicAbilityList getAbilityList(final String[] names) {