// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2022 // www.magicbane.com package engine.net.client.handlers; import engine.Enum.GuildHistoryType; import engine.exception.MsgSendException; import engine.gameManager.ChatManager; import engine.gameManager.GroupManager; import engine.gameManager.SessionManager; import engine.net.Dispatch; import engine.net.DispatchMessage; import engine.net.client.ClientConnection; import engine.net.client.msg.ClientNetMsg; import engine.net.client.msg.group.GroupUpdateMsg; import engine.net.client.msg.guild.LeaveGuildMsg; import engine.objects.*; public class LeaveGuildHandler extends AbstractClientMsgHandler { public LeaveGuildHandler() { super(LeaveGuildMsg.class); } @Override protected boolean _handleNetMsg(ClientNetMsg baseMsg, ClientConnection origin) throws MsgSendException { LeaveGuildMsg msg = (LeaveGuildMsg) baseMsg; Dispatch dispatch; // get PlayerCharacter of person leaving invite PlayerCharacter playerCharacter = SessionManager.getPlayerCharacter(origin); if (playerCharacter == null) return true; // Guild leader can't leave guild. must pass GL or disband if (GuildStatusController.isGuildLeader(playerCharacter.getGuildStatus())) { msg.setMessage("You must switch leadership of your guild before leaving!"); dispatch = Dispatch.borrow(playerCharacter, msg); DispatchMessage.dispatchMsgDispatch(dispatch, engine.Enum.DispatchChannel.SECONDARY); return true; } // Release all mine claims Mine.releaseMineClaims(playerCharacter); // get old Guild Guild oldGuild = playerCharacter.getGuild(); if (oldGuild == null || oldGuild.isEmptyGuild()) { return true; } if(GroupManager.getGroup(playerCharacter) != null) { Group group = GroupManager.getGroup(playerCharacter); group.removeGroupMember(playerCharacter); GroupManager.removeFromGroups(playerCharacter); GroupUpdateMsg gim; gim = new GroupUpdateMsg(); gim.setGroup(group); gim.setMessageType(3); gim.setPlayer(playerCharacter); group.sendUpdate(gim); String text = playerCharacter.getFirstName() + " has left your group."; ChatManager.chatGroupInfo(playerCharacter, text); } // Send left guild message to rest of guild ChatManager.chatGuildInfo(oldGuild, playerCharacter.getFirstName() + " has left the guild."); oldGuild.removePlayer(playerCharacter, GuildHistoryType.LEAVE); // Send message back to client msg.setMessage("You have left the guild."); dispatch = Dispatch.borrow(playerCharacter, msg); DispatchMessage.dispatchMsgDispatch(dispatch, engine.Enum.DispatchChannel.SECONDARY); return true; } }