@Override public void endStep(Game game, UUID activePlayerId) { Player activePlayer = game.getPlayer(activePlayerId); activePlayer.setGameUnderYourControl(true); super.endStep(game, activePlayerId); }
@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); } } }
@Override public void controlPlayersTurn(Game game, UUID playerId) { Player player = game.getPlayer(playerId); player.setTurnControlledBy(this.getId()); game.informPlayers(getLogName() + " controls the turn of " + player.getLogName()); if (!playerId.equals(this.getId())) { this.playersUnderYourControl.add(playerId); if (!player.hasLeft() && !player.hasLost()) { player.setGameUnderYourControl(false); } DelayedTriggeredAbility ability = new AtTheEndOfTurnStepPostDelayedTriggeredAbility(new LoseControlOnOtherPlayersControllerEffect(this.getLogName(), player.getLogName())); ability.setSourceId(getId()); ability.setControllerId(getId()); game.addDelayedTriggeredAbility(ability); } }
targetPlayer.setGameUnderYourControl(true, false); if (!targetPlayer.getTurnControlledBy().equals(controller.getId())) { controller.getPlayersUnderYourControl().remove(targetPlayer.getId());