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() {