@Override public String getLogName() { return GameLog.getColoredObjectIdName(this); }
@Override public String getLogName() { return GameLog.getColoredPlayerName(name); }
@Override public String getLogName() { if (name.isEmpty()) { if (faceDown) { return GameLog.getNeutralColoredText("face down creature"); } else { return GameLog.getNeutralColoredText("a creature without name"); } } return GameLog.getColoredObjectIdName(this); }
continue; names.add(GameLog.getColoredObjectIdNameForTooltip(mageObject));
@Override public void revealCards(Ability source, String titleSuffix, Cards cards, Game game, boolean postToLog) { if (cards == null || cards.isEmpty()) { return; } if (postToLog) { game.getState().getRevealed().add(CardUtil.createObjectRealtedWindowTitle(source, game, titleSuffix), cards); } else { game.getState().getRevealed().update(CardUtil.createObjectRealtedWindowTitle(source, game, titleSuffix), cards); } if (postToLog && !game.isSimulation()) { StringBuilder sb = new StringBuilder(getLogName()).append(" reveals "); int current = 0, last = cards.size(); for (Card card : cards.getCards(game)) { current++; sb.append(GameLog.getColoredObjectName(card)); if (current < last) { sb.append(", "); } } game.informPlayers(sb.toString()); } }
protected boolean passWithManaPoolCheck(Game game) { if (userData.confirmEmptyManaPool() && game.getStack().isEmpty() && getManaPool().count() > 0) { String activePlayerText; if (game.isActivePlayer(playerId)) { activePlayerText = "Your turn"; } else { activePlayerText = game.getPlayer(game.getActivePlayerId()).getName() + "'s turn"; } String priorityPlayerText = ""; if (!isGameUnderControl()) { priorityPlayerText = " / priority " + game.getPlayer(game.getPriorityPlayerId()).getName(); } if (!chooseUse(Outcome.Detriment, GameLog.getPlayerConfirmColoredText("You still have mana in your mana pool. Pass regardless?") + GameLog.getSmallSecondLineText(activePlayerText + " / " + game.getStep().getType().toString() + priorityPlayerText), null, game)) { sendPlayerAction(PlayerAction.PASS_PRIORITY_CANCEL_ALL_ACTIONS, game, null); return false; } } pass(game); return true; }
public static String getColoredObjectName(MageObject mageObject) { return "<font color=\'" + getColorName(mageObject.getColor(null)) + "\'>" + mageObject.getName() + "</font>"; }
@Override public String getTargetedName(Game game) { StringBuilder sb = new StringBuilder(); for (UUID targetId : getTargets()) { Permanent permanent = game.getPermanent(targetId); if (permanent != null) { sb.append(permanent.getLogName()).append(' '); } else { Spell spell = game.getStack().getSpell(targetId); if (spell != null) { if (spell.isFaceDown(game)) { sb.append(GameLog.getNeutralColoredText("face down spell")); } else { sb.append(spell.getLogName()).append(' '); } } } } return sb.toString(); }
@Override public synchronized void rollbackTurns(int turnsToRollback) { if (gameOptions.rollbackTurnsAllowed) { int turnToGoTo = getTurnNum() - turnsToRollback; if (turnToGoTo < 1 || !gameStatesRollBack.containsKey(turnToGoTo)) { informPlayers(GameLog.getPlayerRequestColoredText("Player request: It's not possible to rollback " + turnsToRollback + " turn(s)")); } else { GameState restore = gameStatesRollBack.get(turnToGoTo); if (restore != null) { informPlayers(GameLog.getPlayerRequestColoredText("Player request: Rolling back to start of turn " + restore.getTurnNum())); state.restoreForRollBack(restore); playerList.setCurrent(state.getPlayerByOrderId()); // Reset temporary created bookmarks because no longer valid after rollback savedStates.clear(); gameStates.clear(); // because restore uses the objects without copy each copy the state again gameStatesRollBack.put(getTurnNum(), state.copy()); executingRollback = true; for (Player playerObject : getPlayers().values()) { if (playerObject.isHuman() && playerObject.isInGame()) { playerObject.resetStoredBookmark(this); playerObject.abort(); playerObject.resetPlayerPassedActions(); } } fireUpdatePlayersEvent(); } } } }
@Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null && permanent.isCreature()) { Player controller = game.getPlayer(permanent.getControllerId()); if (controller != null) { TargetControlledPermanent target = new TargetControlledPermanent(filter); target.setNotTarget(true); if (target.canChoose(permanent.getId(), controller.getId(), game)) { if (controller.choose(Outcome.Benefit, target, permanent.getId(), game)) { Permanent chosen = game.getPermanent(target.getFirstTarget()); if (chosen != null) { chosen.setPairedCard(new MageObjectReference(permanent, game)); chosen.addInfo("soulbond", "Soulbond to " + GameLog.getColoredObjectIdNameForTooltip(permanent), game); permanent.setPairedCard(new MageObjectReference(chosen, game)); permanent.addInfo("soulbond", "Soulbond to " + GameLog.getColoredObjectIdNameForTooltip(chosen), game); if (!game.isSimulation()) { game.informPlayers(controller.getLogName() + " soulbonds " + permanent.getLogName() + " with " + chosen.getLogName()); } } } } } return true; } return false; } }
Card card = game.getCard(cardUuid); if (card != null) { sb.append(GameLog.getColoredObjectName(card)); if (i < pile1CardsIds.size()) { sb.append(", "); if (card != null) { i++; sb.append(' ').append(GameLog.getColoredObjectName(card)); if (i < pile2CardsIds.size()) { sb.append(", ");
public static String getColoredObjectIdName(MageObject mageObject) { return "<font color=\'" + getColorName(mageObject.getColor(null)) + "\'>" + mageObject.getName() + " [" + mageObject.getId().toString().substring(0, 3) + "]</font>"; }
continue; names.add(GameLog.getColoredObjectIdNameForTooltip(mageObject));
Card card = game.getCard(cardUuid); if (card != null) { sb.append(GameLog.getColoredObjectName(card)); if (i < pile1CardsIds.size()) { sb.append(", "); if (card != null) { i++; sb.append(' ').append(GameLog.getColoredObjectName(card)); if (i < pile2CardsIds.size()) { sb.append(", ");
@Override public String getLogName() { return GameLog.getColoredObjectIdName(this); }
@Override public String getLogName() { if (name.isEmpty()) { return GameLog.getNeutralColoredText(EmptyNames.FACE_DOWN_CREATURE.toString()); } else { return GameLog.getColoredObjectIdName(this); } }
@Override public boolean apply(Game game, Ability source) { Permanent sourcePermanent = game.getPermanent(source.getSourceId()); Player controller = game.getPlayer(source.getControllerId()); Permanent target = game.getPermanent(getTargetPointer().getFirst(game, source)); if (controller != null && sourcePermanent != null) { if (target != null && controller.getId().equals(sourcePermanent.getControllerId())) { SourceHasRemainedInSameZoneCondition condition = new SourceHasRemainedInSameZoneCondition(sourcePermanent.getId()); game.addEffect(new ConditionalContinuousEffect( new GainControlTargetEffect(Duration.Custom), new CompoundCondition(new SourceOnBattlefieldControlUnchangedCondition(), condition), null), source); if (!game.isSimulation()) { game.informPlayers(sourcePermanent.getLogName() + ": " + controller.getLogName() + " gained control of " + target.getLogName()); } sourcePermanent.addInfo("gained control of", CardUtil.addToolTipMarkTags("Gained control of: " + GameLog.getColoredObjectIdNameForTooltip(target)), game); } return true; } return false; } }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(targetPointer.getFirst(game, source)); MageObject sourceObject = source.getSourceObject(game); if (player != null && sourceObject != null) { Card card = player.getHand().getRandom(game); if (card != null) { Cards cards = new CardsImpl(); cards.add(card); player.revealCards(sourceObject.getIdName() + " Turn: " + game.getTurnNum(), cards, game); if (card.isLand()) { player.moveCards(card, Zone.BATTLEFIELD, source, game); } else if (card.getSpellAbility() != null && card.getSpellAbility().getTargets().canChoose(player.getId(), game)) { player.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game)); } else { game.informPlayers(GameLog.getColoredObjectName(card) + " can't be cast now by " + player.getLogName()); } } return true; } return false; }
@Override public String getLogName() { return GameLog.getColoredObjectIdName(this); }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); MageObject sourceObject = source.getSourceObject(game); if (controller != null && sourceObject != null) { TargetCard target = new TargetCard(Zone.HAND, filter); target.setNotTarget(true); Card cardToImprint = null; Permanent sourcePermanent = game.getPermanent(source.getSourceId()); if (!controller.getHand().isEmpty() && controller.choose(Outcome.Benefit, target, source.getSourceId(), game)) { cardToImprint = controller.getHand().get(target.getFirstTarget(), game); } if (sourcePermanent != null) { if (cardToImprint != null) { controller.moveCardsToExile(cardToImprint, source, game, true, source.getSourceId(), sourceObject.getIdName() + " (Imprint)"); sourcePermanent.imprint(cardToImprint.getId(), game); sourcePermanent.addInfo("imprint", CardUtil.addToolTipMarkTags("[Imprinted card - " + GameLog.getColoredObjectIdNameForTooltip(cardToImprint) + ']'), game); } else { sourcePermanent.addInfo("imprint", CardUtil.addToolTipMarkTags("[Imprinted card - None]"), game); } } return true; } return false; }