public static List<UUID> split(Game game, UUID playerId) { List<UUID> players = new ArrayList<>(); //players.add(playerId); // add original player Player player = game.getPlayer(playerId); if (player != null && player.getTurnControlledBy() != null) { players.add(player.getTurnControlledBy()); } return players; } }
@Override public void resetControlAfterSpellResolve(UUID topId) { // for Word of Command Spell spell = getSpellOrLKIStack(topId); if (spell != null) { if (spell.getCommandedBy() != null) { UUID commandedBy = spell.getCommandedBy(); UUID spellControllerId = null; if (commandedBy.equals(spell.getControllerId())) { spellControllerId = spell.getSpellAbility().getFirstTarget(); // i.e. resolved spell is Word of Command } else { spellControllerId = spell.getControllerId(); // i.e. resolved spell is the target opponent's spell } if (spellControllerId != null) { Player turnController = getPlayer(commandedBy); if (turnController != null) { Player targetPlayer = getPlayer(spellControllerId); if (targetPlayer != null) { targetPlayer.setGameUnderYourControl(true, false); informPlayers(turnController.getLogName() + " lost control over " + targetPlayer.getLogName()); if (targetPlayer.getTurnControlledBy().equals(turnController.getId())) { turnController.getPlayersUnderYourControl().remove(targetPlayer.getId()); } } } } spell.setCommandedBy(null); } } }
this.isGameUnderControl = player.isGameUnderControl(); this.turnController = player.getTurnControlledBy(); this.turnControllers.clear(); this.turnControllers.addAll(player.getTurnControllers());
controller = game.getPlayer(wordOfCommand.getCommandedBy()); } else { controller = game.getPlayer(sourceController.getTurnControlledBy()); if (!targetPlayer.getTurnControlledBy().equals(controller.getId())) { controller.getPlayersUnderYourControl().remove(targetPlayer.getId());