// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2022 // www.magicbane.com package engine.net.client.handlers; import engine.exception.MsgSendException; import engine.gameManager.ChatManager; import engine.gameManager.DbManager; import engine.mbEnums; import engine.mbEnums.GameObjectType; import engine.net.Dispatch; import engine.net.DispatchMessage; import engine.net.client.ClientConnection; import engine.net.client.msg.ChangeGuildLeaderMsg; import engine.net.client.msg.ClientNetMsg; import engine.net.client.msg.guild.GuildInfoMsg; import engine.net.client.msg.guild.GuildListMsg; import engine.objects.City; import engine.objects.Guild; import engine.objects.GuildStatusController; import engine.objects.PlayerCharacter; public class ChangeGuildLeaderHandler extends AbstractClientMsgHandler { public ChangeGuildLeaderHandler() { super(ChangeGuildLeaderMsg.class); } @Override protected boolean _handleNetMsg(ClientNetMsg baseMsg, ClientConnection origin) throws MsgSendException { ChangeGuildLeaderMsg msg; PlayerCharacter sourcePlayer; PlayerCharacter targetPlayer; City city; msg = (ChangeGuildLeaderMsg) baseMsg; sourcePlayer = origin.getPlayerCharacter(); if (sourcePlayer == null) return true; if (GuildStatusController.isGuildLeader(sourcePlayer.getGuildStatus()) == false) return true; Guild glGuild = sourcePlayer.getGuild(); if (glGuild == null) return true; if (!glGuild.isGuildLeader(sourcePlayer.getObjectUUID())) return true; targetPlayer = (PlayerCharacter) DbManager.getObject(GameObjectType.PlayerCharacter, msg.getTargetID()); if (targetPlayer == null) return true; if (GuildStatusController.isGuildLeader(targetPlayer.getGuildStatus())) return true; if (!Guild.sameGuild(sourcePlayer.getGuild(), targetPlayer.getGuild())) return false; //updateSource will generate a new promote/demote screen for sourcePlayer //updateTarget will sync guild info for the target and all players in range String targetName = null; boolean isMale = true; boolean updateTarget; mbEnums.GuildCharterType t = mbEnums.GuildCharterType.getGuildTypeFromInt(sourcePlayer.getGuild().getCharter()); if (!DbManager.GuildQueries.SET_GUILD_LEADER(targetPlayer.getObjectUUID(), glGuild.getObjectUUID())) { ChatManager.chatGuildError(sourcePlayer, "Failed to change guild leader!"); return false; } glGuild.setGuildLeader(targetPlayer); if (glGuild.getOwnedCity() != null) { city = glGuild.getOwnedCity(); if (!city.transferGuildLeader(targetPlayer)) { ChatManager.chatGuildError(sourcePlayer, "Failed to Transfer City Objects. Contact CCR!"); return false; } } targetPlayer.setGuildLeader(true); targetPlayer.setInnerCouncil(true); targetPlayer.setFullMember(true); targetPlayer.incVer(); targetName = targetPlayer.getFirstName(); updateTarget = true; ChatManager.chatGuildInfo(sourcePlayer.getGuild(), targetName + " has been promoted to " + "guild leader!"); //These values record a change, not the new value... //updateOldGuildLeader sourcePlayer.setInnerCouncil(true); sourcePlayer.setFullMember(true); sourcePlayer.setGuildLeader(false); sourcePlayer.incVer(); GuildInfoMsg guildInfoMsg = new GuildInfoMsg(sourcePlayer, sourcePlayer.getGuild(), 2); Dispatch dispatch = Dispatch.borrow(sourcePlayer, guildInfoMsg); DispatchMessage.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY); GuildListMsg guildListMsg = new GuildListMsg(sourcePlayer.getGuild()); dispatch = Dispatch.borrow(sourcePlayer, guildListMsg); DispatchMessage.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY); if (targetPlayer != null) { if (updateTarget) DispatchMessage.sendToAllInRange(targetPlayer, new GuildInfoMsg(targetPlayer, targetPlayer.getGuild(), 2)); } return true; } }