// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2022 // www.magicbane.com package engine.net.client.handlers; import engine.Enum; import engine.Enum.GuildHistoryType; import engine.exception.MsgSendException; import engine.gameManager.ChatManager; import engine.gameManager.DbManager; 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.ErrorPopupMsg; import engine.net.client.msg.guild.BanishUnbanishMsg; import engine.net.client.msg.guild.GuildListMsg; import engine.objects.Guild; import engine.objects.GuildHistory; import engine.objects.GuildStatusController; import engine.objects.PlayerCharacter; import org.joda.time.DateTime; public class BanishUnbanishHandler extends AbstractClientMsgHandler { public BanishUnbanishHandler() { super(BanishUnbanishMsg.class); } @Override protected boolean _handleNetMsg(ClientNetMsg baseMsg, ClientConnection origin) throws MsgSendException { BanishUnbanishMsg msg = (BanishUnbanishMsg) baseMsg; Dispatch dispatch; int target = msg.getTarget(); PlayerCharacter source = origin.getPlayerCharacter(); if (source == null || source.getGuild().isEmptyGuild() || source.getGuild().getObjectUUID() == 0) return true; if (GuildStatusController.isGuildLeader(source.getGuildStatus()) == false && GuildStatusController.isInnerCouncil(source.getGuildStatus()) == false) return true; if (source.getObjectUUID() == target) { ErrorPopupMsg.sendErrorPopup(source, 103); // You may not banish this char return true; } boolean success = false; Guild guild = source.getGuild(); PlayerCharacter realizedTarget = PlayerCharacter.getFromCache(target); if (realizedTarget != null) { // Guild leader can't leave guild. must pass GL or disband if (GuildStatusController.isGuildLeader(realizedTarget.getGuildStatus()) == false) { //ICs cannot banish other ICs if (!(GuildStatusController.isInnerCouncil(realizedTarget.getGuildStatus()) && GuildStatusController.isGuildLeader(source.getGuildStatus()) == false)) { success = true; if (msg.getMsgType() == 1) { if (!DbManager.GuildQueries.ADD_TO_BANISHED_FROM_GUILDLIST(guild.getObjectUUID(), realizedTarget.getObjectUUID())) { ChatManager.chatGuildError(source, "Failed To unbanish " + realizedTarget.getName()); return true; } guild.getBanishList().remove(realizedTarget); } else { if (!DbManager.GuildQueries.ADD_TO_BANISHED_FROM_GUILDLIST(guild.getObjectUUID(), realizedTarget.getObjectUUID())) { ChatManager.chatGuildError(source, "Failed To Banish " + realizedTarget.getName()); return true; } guild.removePlayer(realizedTarget, GuildHistoryType.BANISHED); guild.getBanishList().add(realizedTarget); //TODO we might encapsulate this a bit better; also not sure that a list of PC objects is really ideal } } } } else { if (guild.getGuildLeaderUUID() != target) { PlayerCharacter toBanish = PlayerCharacter.getPlayerCharacter(target); if (toBanish == null) return true; //already added previously. if (SessionManager.getPlayerCharacterByID(toBanish.getObjectUUID()) != null) return true; if (DbManager.GuildQueries.BANISH_FROM_GUILD_OFFLINE(target, GuildStatusController.isGuildLeader(source.getGuildStatus())) != 0) { success = true; //Set guild history if (DbManager.GuildQueries.ADD_TO_GUILDHISTORY(guild.getObjectUUID(), toBanish, DateTime.now(), GuildHistoryType.BANISHED)) { GuildHistory guildHistory = new GuildHistory(toBanish.getGuildUUID(), toBanish.getGuild().getName(), DateTime.now(), GuildHistoryType.BANISHED); toBanish.getGuildHistory().add(guildHistory); } } } } if (success) { //TODO re enable this once we get unbanish working!!!! //DbManager.GuildQueries.ADD_TO_BANISHED_FROM_GUILDLIST(guild.getobjectUUID(), target); // Send left guild message to rest of guild String targetName = PlayerCharacter.getFirstName(target); ChatManager.chatGuildInfo(guild, targetName + " has been banished from " + guild.getName() + '.'); GuildListMsg guildListMsg = new GuildListMsg(guild); dispatch = Dispatch.borrow(source, guildListMsg); DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY); } else { ErrorPopupMsg.sendErrorPopup(source, 103); // You may not banish this char } return true; } }