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())); }