diff --git a/Mage.Server/src/main/java/mage/server/util/SystemUtil.java b/Mage.Server/src/main/java/mage/server/util/SystemUtil.java index ef6b8bdf90a..e8bef838cf1 100644 --- a/Mage.Server/src/main/java/mage/server/util/SystemUtil.java +++ b/Mage.Server/src/main/java/mage/server/util/SystemUtil.java @@ -37,6 +37,7 @@ public class SystemUtil { * 3b. Parse next line (go to 2.), If EOF go to 4.
* 4. Log message to all players that cards were added (to prevent unfair play).
* 5. Exit
+ * @param game */ public static void addCardsForTesting(Game game) { try { diff --git a/Mage/src/mage/abilities/AbilitiesImpl.java b/Mage/src/mage/abilities/AbilitiesImpl.java index 717689c9520..7826656f7b1 100644 --- a/Mage/src/mage/abilities/AbilitiesImpl.java +++ b/Mage/src/mage/abilities/AbilitiesImpl.java @@ -74,11 +74,16 @@ public class AbilitiesImpl extends ArrayList implements Ab continue; } if (!(ability instanceof SpellAbility || ability instanceof PlayLandAbility)) { - if (ability.getRuleAtTheTop()) { - rules.add(0, ability.getRule()); - } else { - rules.add(ability.getRule()); + String rule = ability.getRule(); + if (rule.length() > 3) { + rule = Character.toUpperCase(rule.charAt(0)) + rule.substring(1); + if (ability.getRuleAtTheTop()) { + rules.add(0, rule); + } else { + rules.add(rule); + } } + continue; } if (ability instanceof SpellAbility) { if (ability.getAlternativeCosts().size() > 0) { @@ -86,11 +91,11 @@ public class AbilitiesImpl extends ArrayList implements Ab for (AlternativeCost cost: ability.getAlternativeCosts()) { if (cost.getClass().getName().equals("mage.abilities.costs.AlternativeCostImpl")) { // if the template class is used, the rule is in the getName() instead in the getText() - sbRule.append(cost.getName()).append(".\n"); + sbRule.append(cost.getName()).append(".
"); } else { - sbRule.append(cost.getText()).append(".\n"); + sbRule.append(cost.getText()).append(".
"); } } rules.add(sbRule.toString()); @@ -102,17 +107,16 @@ public class AbilitiesImpl extends ArrayList implements Ab if (!cost.getText().startsWith("As an additional cost")) { sbRule.append("As an additional cost to cast {this}, "); } - sbRule.append(cost.getText()).append(".\n"); + sbRule.append(cost.getText()).append(".
"); } } rules.add(sbRule.toString()); } String rule = ability.getRule(); - if (rule.length() > 1) { - rule = rule.substring(0, 1).toUpperCase() + rule.substring(1); - } - rules.add(rule); - } + if (rule.length() > 0) { + rules.add(Character.toUpperCase(rule.charAt(0)) + rule.substring(1)); + } + } } return rules; diff --git a/Mage/src/mage/abilities/AbilityImpl.java b/Mage/src/mage/abilities/AbilityImpl.java index dfc8b57dff1..42a80aff69a 100644 --- a/Mage/src/mage/abilities/AbilityImpl.java +++ b/Mage/src/mage/abilities/AbilityImpl.java @@ -612,7 +612,6 @@ public abstract class AbilityImpl implements Ability { sbRule.append(text); } } - return sbRule.toString(); } diff --git a/Mage/src/mage/abilities/Modes.java b/Mage/src/mage/abilities/Modes.java index ce752177616..d91b05ae620 100644 --- a/Mage/src/mage/abilities/Modes.java +++ b/Mage/src/mage/abilities/Modes.java @@ -177,36 +177,25 @@ public class Modes extends LinkedHashMap { } public String getText() { - String andOr = ""; + if (this.size() <= 1) { + return this.getMode().getEffects().getText(this.getMode()); + } StringBuilder sb = new StringBuilder(); - if (this.size() > 1) { - if (this.getMinModes() == 1 && this.getMaxModes() == 3) { - sb.append("Choose one or more - "); - andOr = "; and/or "; - }else if (this.getMinModes() == 1 && this.getMaxModes() == 2) { - sb.append("Choose one or both - "); - andOr = "; and/or "; - } else if (this.getMinModes() == 2 && this.getMaxModes() == 2) { - sb.append("Choose two - "); - andOr = "; or "; - } else { - sb.append("Choose one - "); - andOr = "; or "; - } + if (this.getMinModes() == 1 && this.getMaxModes() == 3) { + sb.append("choose one or more - "); + }else if (this.getMinModes() == 1 && this.getMaxModes() == 2) { + sb.append("choose one or both - "); + } else if (this.getMinModes() == 2 && this.getMaxModes() == 2) { + sb.append("choose two - "); + } else { + sb.append("choose one - "); } + sb.append("
"); for (Mode mode: this.values()) { - sb.append(mode.getEffects().getText(mode)); - if (this.size() > 1) { - if (sb.length() > 2 && sb.substring(sb.length()-1, sb.length()).equals(".")) { - sb.delete(sb.length()-1, sb.length()); - } - sb.append(andOr); - } - } - if (this.size() > 1) { - sb.delete(sb.length() - andOr.length(), sb.length()); - sb.append("."); - } + sb.append("&bull "); + sb.append(mode.getEffects().getTextStartingUpperCase(mode)); + sb.append("
"); + } return sb.toString(); } diff --git a/Mage/src/mage/abilities/effects/Effects.java b/Mage/src/mage/abilities/effects/Effects.java index 2dc12bce577..6c4ef89997d 100644 --- a/Mage/src/mage/abilities/effects/Effects.java +++ b/Mage/src/mage/abilities/effects/Effects.java @@ -53,25 +53,36 @@ public class Effects extends ArrayList { return new Effects(this); } + public String getTextStartingUpperCase(Mode mode) { + String text = getText(mode); + if (text.length() > 3) { + return Character.toUpperCase(text.charAt(0)) + text.substring(1); + } + return text; + } + public String getText(Mode mode) { StringBuilder sbText = new StringBuilder(); - String rule = null; + String lastRule = null; for (Effect effect: this) { - String endString = ""; - if (rule != null && rule.length()> 3 && !rule.endsWith(".")) { - endString = ". "; - } - rule = effect.getText(mode); - if (rule != null) { - if (rule.startsWith("and ") || rule.startsWith("with ")) { + String endString = ""; + String nextRule = effect.getText(mode); + if (nextRule != null) { + if (nextRule.startsWith("and ") || nextRule.startsWith("with ")) { endString = " "; - } else if (rule.startsWith(",")) { + } else if (nextRule.startsWith(",")) { endString = ""; + } else if (lastRule != null && lastRule.length()> 3 && !lastRule.endsWith(".")) { + endString = ". "; + if (nextRule.length() > 3) { + nextRule = Character.toUpperCase(nextRule.charAt(0)) + nextRule.substring(1); + } } - sbText.append(endString).append(rule); + sbText.append(endString).append(nextRule); } + lastRule = nextRule; } - if (rule != null && rule.length()> 3 && !rule.endsWith(".") && !rule.endsWith("\"") && !rule.startsWith("Level ")) { + if (lastRule != null && lastRule.length()> 3 && !lastRule.endsWith(".") && !lastRule.endsWith("\"") && !lastRule.startsWith("Level ")) { sbText.append("."); } return sbText.toString(); @@ -91,7 +102,7 @@ public class Effects extends ArrayList { for (Effect effect: this) { outcomes.add(effect.getOutcome()); } - return new ArrayList(outcomes); + return new ArrayList<>(outcomes); } public int getOutcomeTotal() {