protected void logList(String message, List<MageObject> list) { StringBuilder sb = new StringBuilder(); sb.append(message).append(": "); for (MageObject object : list) { sb.append(object.getName()).append(','); } log.info(sb.toString()); }
@Override public void fireGetChoiceEvent(UUID playerId, String message, MageObject object, List<? extends ActivatedAbility> choices) { if (simulation) { return; } String objectName = null; if (object != null) { objectName = object.getName(); } playerQueryEventSource.chooseAbility(playerId, message, objectName, choices); }
public static void logMissingWatcher(Game game, Ability source, Class watcherClass, Class usingClass) { MageObject sourceObject = source.getSourceObject(game); Logger.getLogger(usingClass).error("Needed watcher is not started " + watcherClass.getSimpleName() + " - " + (sourceObject == null ? " no source object" : sourceObject.getName())); } }
@Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { MageObject spell = game.getObject(event.getTargetId()); UUID playerId = event.getPlayerId(); if (playerId != null && spell != null) { playersCastSpell.putIfAbsent(spell.getName(), new HashSet<>()); playersCastSpell.get(spell.getName()).add(playerId); } } }
@Override public String getInfoMessage(Ability source, GameEvent event, Game game) { MageObject sourceObject = game.getObject(source.getSourceId()); if (sourceObject != null) { return "This creature spell can't be countered (" + sourceObject.getName() + ")."; } return null; }
@Override public String getInfoMessage(Ability source, GameEvent event, Game game) { MageObject sourceObject = game.getObject(source.getSourceId()); if (sourceObject != null) { return "This spell can't be countered (" + sourceObject.getName() + ")."; } return null; }
@Override public String getInfoMessage(Ability source, GameEvent event, Game game) { MageObject sourceObject = game.getObject(source.getSourceId()); if (sourceObject != null) { return "This spell can't be countered (" + sourceObject.getName() + ")."; } return null; }
@Override public String getInfoMessage(Ability source, GameEvent event, Game game) { MageObject mageObject = game.getObject(source.getSourceId()); if (mageObject != null) { return "You can't play the land or cast the spell (" + mageObject.getName() + " in play)."; } return null; }
@Override public String getInfoMessage(Ability source, GameEvent event, Game game) { MageObject sourceObject = game.getObject(source.getSourceId()); if (sourceObject != null) { return "This spell can't be countered (" + sourceObject.getName() + ")."; } return null; }
@Override public String getInfoMessage(Ability source, GameEvent event, Game game) { MageObject sourceObject = game.getObject(source.getSourceId()); if (sourceObject != null) { return "This spell can't be countered because mana from " + sourceObject.getName() + " was spent to cast it."; } return null; }
@Override public String getInfoMessage(Ability source, GameEvent event, Game game) { MageObject mageObject = game.getObject(source.getSourceId()); if (mageObject != null) { return "For the rest of the game, you can't cast spells (Epic - " + mageObject.getName() + ')'; } return null; }
@Override public boolean applies(GameEvent event, Ability source, Game game) { if (game.getOpponents(source.getControllerId()).contains(event.getPlayerId())) { MageObject object = game.getObject(event.getSourceId()); if (object != null && object.getName().equals(cardName)) { return true; } } return false; } }
@Override public boolean applies(GameEvent event, Ability source, Game game) { if (event.getType() == EventType.ACTIVATE_ABILITY) { MageObject object = game.getObject(event.getSourceId()); if (object != null && object.getName().equals(game.getState().getValue(source.getSourceId().toString() + ChooseACardNameEffect.INFO_KEY))) { return true; } } return false; }
@Override public boolean applies(GameEvent event, Ability source, Game game) { MageObject object = game.getObject(event.getSourceId()); // fixes issue #1072 return object != null && !object.isCopy() && object.getName().equals(game.getState().getValue(source.getSourceId().toString() + ChooseACardNameEffect.INFO_KEY)); }
@Override public boolean applies(GameEvent event, Ability source, Game game) { if (event.getType() == EventType.CAST_SPELL) { MageObject object = game.getObject(event.getSourceId()); if (object != null && object.getName().equals(game.getState().getValue(source.getSourceId().toString() + ChooseACardNameEffect.INFO_KEY))) { return true; } } return false; }
@Override public boolean applies(GameEvent event, Ability source, Game game) { String cardName = (String) game.getState().getValue(source.getSourceId().toString() + ChooseACardNameEffect.INFO_KEY); if (game.getOpponents(source.getControllerId()).contains(event.getPlayerId())) { MageObject object = game.getObject(event.getSourceId()); if (object != null && object.getName().equals(cardName)) { return true; } } return false; } }
@Override public boolean applies(GameEvent event, Ability source, Game game) { String cardName = (String) game.getState().getValue(source.getSourceId().toString() + ChooseACardNameEffect.INFO_KEY); if (game.getOpponents(source.getControllerId()).contains(event.getPlayerId())) { MageObject object = game.getObject(event.getSourceId()); if (object != null && object.getName().equals(cardName)) { return true; } } return false; } }
@Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Player controller = game.getPlayer(controllerId); MageObject sourceObject = game.getObject(sourceId); if (controller != null && sourceObject != null) { controller.revealCards(sourceObject.getName(), controller.getHand(), game); paid = true; } return paid; }
@Override public boolean applies(GameEvent event, Ability source, Game game) { if (game.getOpponents(source.getControllerId()).contains(event.getPlayerId())) { MageObject object = game.getObject(event.getSourceId()); String needName = (String) game.getState().getValue(source.getSourceId().toString() + ChooseACardNameEffect.INFO_KEY); return object != null && CardUtil.haveSameNames(object.getName(), needName); } return false; } }
@Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { Permanent knightOfTheHolyNimbus = game.getPermanent(event.getTargetId()); if (knightOfTheHolyNimbus != null && event.getAmount() == 0) { // 1=noRegen if (knightOfTheHolyNimbus.regenerate(source.getSourceId(), game)) { game.informPlayers(source.getSourceObject(game).getName() + " has been regenerated."); return true; } } return false; }