combine common processing in lord effect

master
melvin 2013-08-27 10:26:44 +08:00
parent f9aa1468f4
commit cd03338448
1 changed files with 11 additions and 10 deletions

View File

@ -804,23 +804,24 @@ public enum MagicAbility {
public void addAbilityImpl(final MagicCardDefinition card, final String arg) {
final String prefix = "other ";
final boolean other = arg.startsWith(prefix);
final String rest = other ? arg.substring(prefix.length()) : arg;
if (rest.contains(" get ")) {
final String[] tokens = rest.split(" get ");
final MagicTargetFilter<MagicPermanent> filter = MagicTargetFilterFactory.build(tokens[0]);
final String rest = arg.replaceFirst(prefix, "");
final String[] tokens = rest.split(" get | have ");
final MagicTargetFilter<MagicPermanent> filter = MagicTargetFilterFactory.build(tokens[0]);
if (tokens[1].contains("/")) {
final String[] pt = tokens[1].replace('+','0').split("/");
final int power = Integer.parseInt(pt[0]);
final int toughness = Integer.parseInt(pt[1]);
if (other) {
card.add(MagicStatic.genPTStaticOther(filter, Integer.parseInt(pt[0]), Integer.parseInt(pt[1])));
card.add(MagicStatic.genPTStaticOther(filter, power, toughness));
} else {
card.add(MagicStatic.genPTStatic(filter, Integer.parseInt(pt[0]), Integer.parseInt(pt[1])));
card.add(MagicStatic.genPTStatic(filter, power, toughness));
}
} else {
final String[] tokens = rest.split(" have ");
final MagicTargetFilter<MagicPermanent> filter = MagicTargetFilterFactory.build(tokens[0]);
final Set<MagicAbility> abilities = MagicAbility.getAbilities(tokens[1].split(", "));
if (other) {
card.add(MagicStatic.genABStaticOther(filter, MagicAbility.getAbilities(tokens[1].split(", "))));
card.add(MagicStatic.genABStaticOther(filter, abilities));
} else {
card.add(MagicStatic.genABStatic(filter, MagicAbility.getAbilities(tokens[1].split(", "))));
card.add(MagicStatic.genABStatic(filter, abilities));
}
}
}