diff --git a/Mage.Server/src/main/java/mage/server/game/GameController.java b/Mage.Server/src/main/java/mage/server/game/GameController.java
index a1963f587c1..883df510da6 100644
--- a/Mage.Server/src/main/java/mage/server/game/GameController.java
+++ b/Mage.Server/src/main/java/mage/server/game/GameController.java
@@ -1259,10 +1259,10 @@ public class GameController implements GameCallback {
.collect(Collectors.joining(", ")));
StringBuilder sb = new StringBuilder();
- sb.append("FIX command called by " + user.getName() + "");
+ sb.append("FIX command called by ").append(user.getName()).append("");
sb.append(""); // font resize start for all next logs
- sb.append("
Game ID: " + game.getId());
-
+ sb.append("
Game ID: ").append(game.getId());
+ sb.append("
Phase: ").append(game.getTurn().getPhaseType().toString()).append(" Step: ").append(game.getTurn().getStepType().toString());
// pings info
sb.append("
");
sb.append(getPingsInfo());
@@ -1272,7 +1272,7 @@ public class GameController implements GameCallback {
// fix active
Player playerActive = game.getPlayer(state.getActivePlayerId());
- sb.append("
Fixing active player: " + getName(playerActive));
+ sb.append("
Fixing active player: ").append(getName(playerActive));
if (playerActive != null && !playerActive.canRespond()) {
fixActions.add("active player fix");
@@ -1280,16 +1280,16 @@ public class GameController implements GameCallback {
sb.append("
Try to concede...");
playerActive.concede(game);
playerActive.leave(); // abort any wait response actions
- sb.append(" (" + asWarning("OK") + ", concede done)");
+ sb.append(" (").append(asWarning("OK")).append(", concede done)");
sb.append("
Try to skip step...");
Phase currentPhase = game.getPhase();
if (currentPhase != null) {
currentPhase.getStep().skipStep(game, state.getActivePlayerId());
fixedAlready = true;
- sb.append(" (" + asWarning("OK") + ", skip step done)");
+ sb.append(" (").append(asWarning("OK")).append(", skip step done)");
} else {
- sb.append(" (" + asBad("FAIL") + ", step is null)");
+ sb.append(" (").append(asBad("FAIL")).append(", step is null)");
}
} else {
sb.append(playerActive != null ? " (" + asGood("OK") + ", can respond)" : " (" + asGood("OK") + ", no player)");
@@ -1297,7 +1297,7 @@ public class GameController implements GameCallback {
// fix lost choosing dialog
Player choosingPlayer = game.getPlayer(state.getChoosingPlayerId());
- sb.append("
Fixing choosing player: " + getName(choosingPlayer));
+ sb.append("
Fixing choosing player: ").append(getName(choosingPlayer));
if (choosingPlayer != null && !choosingPlayer.canRespond()) {
fixActions.add("choosing player fix");
@@ -1305,7 +1305,7 @@ public class GameController implements GameCallback {
sb.append("
Try to concede...");
choosingPlayer.concede(game);
choosingPlayer.leave(); // abort any wait response actions
- sb.append(" (" + asWarning("OK") + ", concede done)");
+ sb.append(" (").append(asWarning("OK")).append(", concede done)");
sb.append("
Try to skip step...");
if (fixedAlready) {
@@ -1315,9 +1315,9 @@ public class GameController implements GameCallback {
if (currentPhase != null) {
currentPhase.getStep().skipStep(game, state.getActivePlayerId());
fixedAlready = true;
- sb.append(" (" + asWarning("OK") + ", skip step done)");
+ sb.append(" (").append(asWarning("OK")).append(", skip step done)");
} else {
- sb.append(" (" + asBad("FAIL") + ", step is null)");
+ sb.append(" (").append(asBad("FAIL")).append(", step is null)");
}
}
} else {
@@ -1326,7 +1326,7 @@ public class GameController implements GameCallback {
// fix lost priority
Player priorityPlayer = game.getPlayer(state.getPriorityPlayerId());
- sb.append("
Fixing priority player: " + getName(priorityPlayer));
+ sb.append("
Fixing priority player: ").append(getName(priorityPlayer));
if (priorityPlayer != null && !priorityPlayer.canRespond()) {
fixActions.add("priority player fix");
@@ -1334,19 +1334,19 @@ public class GameController implements GameCallback {
sb.append("
Try to concede...");
priorityPlayer.concede(game);
priorityPlayer.leave(); // abort any wait response actions
- sb.append(" (" + asWarning("OK") + ", concede done)");
+ sb.append(" (").append(asWarning("OK")).append(", concede done)");
sb.append("
Try to skip step...");
if (fixedAlready) {
- sb.append(" (" + asWarning("OK") + ", already skipped before)");
+ sb.append(" (").append(asWarning("OK")).append(", already skipped before)");
} else {
Phase currentPhase = game.getPhase();
if (currentPhase != null) {
currentPhase.getStep().skipStep(game, state.getActivePlayerId());
fixedAlready = true;
- sb.append(" (" + asWarning("OK") + ", skip step done)");
+ sb.append(" (").append(asWarning("OK")).append(", skip step done)");
} else {
- sb.append(" (" + asBad("FAIL") + ", step is null)");
+ sb.append(" (").append(asBad("FAIL")).append(", step is null)");
}
}
} else {
@@ -1356,10 +1356,10 @@ public class GameController implements GameCallback {
// fix timeout
sb.append("
Fixing future timeout: ");
if (futureTimeout != null) {
- sb.append("cancelled?=" + futureTimeout.isCancelled());
- sb.append("...done?=" + futureTimeout.isDone());
+ sb.append("cancelled?=").append(futureTimeout.isCancelled());
+ sb.append("...done?=").append(futureTimeout.isDone());
int delay = (int) futureTimeout.getDelay(TimeUnit.SECONDS);
- sb.append("...getDelay?=" + delay);
+ sb.append("...getDelay?=").append(delay);
if (delay < 25) {
fixActions.add("future timeout fix");
@@ -1367,12 +1367,12 @@ public class GameController implements GameCallback {
sb.append("
Try to pass...");
PassAbility pass = new PassAbility();
game.endTurn(pass);
- sb.append(" (" + asWarning("OK") + ", pass done)");
+ sb.append(" (").append(asWarning("OK")).append(", pass done)");
} else {
- sb.append(" (" + asGood("OK") + ", delay > 25)");
+ sb.append(" (").append(asGood("OK")).append(", delay > 25)");
}
} else {
- sb.append(" (" + asGood("OK") + ", timeout is not using)");
+ sb.append(" (").append(asGood("OK")).append(", timeout is not using)");
}
// TODO: fix non started game (send game started event to user?)
@@ -1382,7 +1382,7 @@ public class GameController implements GameCallback {
fixActions.add("none");
}
String appliedFixes = fixActions.stream().collect(Collectors.joining(", "));
- sb.append("
Applied fixes: " + appliedFixes);
+ sb.append("
Applied fixes: ").append(appliedFixes);
sb.append(""); // font resize end
sb.append("
");
diff --git a/Mage.Sets/src/mage/cards/t/ThassasOracle.java b/Mage.Sets/src/mage/cards/t/ThassasOracle.java
index a7ee33cc0e2..49fca6d9b8f 100644
--- a/Mage.Sets/src/mage/cards/t/ThassasOracle.java
+++ b/Mage.Sets/src/mage/cards/t/ThassasOracle.java
@@ -29,7 +29,10 @@ public final class ThassasOracle extends CardImpl {
this.power = new MageInt(1);
this.toughness = new MageInt(3);
- // When Thassa's Oracle enters the battlefield, look at the top X cards of your library, where X is your devotion to blue. Put one of them on top of your library and the rest on the bottom of your library in a random order. If X is greater than or equal to the number of cards in your library, you win the game.
+ // When Thassa's Oracle enters the battlefield, look at the top X cards of your library, where X is your devotion to blue.
+ // Put up to one of them on top of your library and the rest on the bottom of your library in a random order.
+ // If X is greater than or equal to the number of cards in your library, you win the game.
+ // (Each Blue in the mana costs of permanents you control counts toward your devotion to blue.)
this.addAbility(new EntersBattlefieldTriggeredAbility(new ThassasOracleEffect())
.addHint(DevotionCount.U.getHint()));
}