// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2022 // www.magicbane.com package engine.net.client.handlers; import engine.gameManager.*; import engine.mbEnums; import engine.mbEnums.GameObjectType; import engine.net.Dispatch; import engine.net.client.ClientConnection; import engine.net.client.msg.ClientNetMsg; import engine.net.client.msg.ErrorPopupMsg; import engine.net.client.msg.guild.InviteToGuildMsg; import engine.objects.Guild; import engine.objects.GuildStatusController; import engine.objects.PlayerCharacter; public class InviteToGuildHandler extends AbstractClientMsgHandler { public InviteToGuildHandler() { super(); } @Override protected boolean _handleNetMsg(ClientNetMsg baseMsg, ClientConnection origin) { InviteToGuildMsg msg; PlayerCharacter sourcePlayer; PlayerCharacter targetPlayer; Dispatch dispatch; msg = (InviteToGuildMsg) baseMsg; // First see if this is a refusal to another guild invite if (msg.getResponse() == 4) return true; // Player refused invite // get sourcePlayer player sourcePlayer = SessionManager.getPlayerCharacter(origin); if (sourcePlayer == null) return true; if (msg.getTargetUUID() == 0) { // get targetPlayer player by name targetPlayer = SessionManager.getPlayerCharacterByLowerCaseName(msg.getTargetName()); if (targetPlayer == null) { ChatManager.chatGuildError(sourcePlayer, "No such player exists!"); return true; } } else if (msg.getTargetType() == GameObjectType.PlayerCharacter.ordinal()) { targetPlayer = SessionManager.getPlayerCharacterByID(msg.getTargetUUID()); if (targetPlayer == null) { ChatManager.chatGuildError(sourcePlayer, "No such player exists!"); return true; } } else { ChatManager.chatGuildError(sourcePlayer, "You cannot invite that character!"); return true; } // get sourcePlayer guild. Verify sourcePlayer player is in guild if (sourcePlayer.getGuild().getObjectUUID() == 0 || sourcePlayer.getGuild().isEmptyGuild()) { ChatManager.chatGuildError(sourcePlayer, "You cannot invite someone for errant!"); return true; } Guild guild = sourcePlayer.getGuild(); mbEnums.GuildCharterType guildCharterType = guild.charter; if (guildCharterType == null) { ErrorPopupMsg.sendErrorPopup(sourcePlayer, GuildManager.NO_CHARTER_FOUND); return true; } // verify sourcePlayer player is full member so they can invite if (GuildStatusController.isFullMember(sourcePlayer.getGuildStatus()) == false) { ChatManager.chatGuildError(sourcePlayer, "You do not have authority to invite!"); return true; } //block invite is targetPlayer is ignoring sourcePlayer if (targetPlayer.isIgnoringPlayer(sourcePlayer)) return true; if ((targetPlayer.getGuild().isEmptyGuild() == false)) { ChatManager.chatGuildError(sourcePlayer, targetPlayer.getFirstName() + " already belongs to a guild!"); return true; } // verify targetPlayer player is not on banish list if (sourcePlayer.getGuild().getBanishList().contains(targetPlayer)) { ErrorPopupMsg.sendErrorPopup(sourcePlayer, 135);// Character is considered BANISHED by guild leadership return true; } //verify targetPlayer meets level requirements of guild if ((targetPlayer.getLevel() < sourcePlayer.getGuild().getRepledgeMin()) || targetPlayer.getLevel() > sourcePlayer.getGuild().getRepledgeMax()) { ErrorPopupMsg.sendErrorPopup(sourcePlayer, 135);// you do not meet the level required for this SWORN guild return true; } if (ConfigManager.MB_RULESET.getValue().equals("LORE")) { if (GuildManager.meetsLoreRequirements(sourcePlayer.guild, targetPlayer) == false) { ChatManager.chatGuildError(sourcePlayer, targetPlayer.getFirstName() + " does not meet charter requirements!"); return true; } } targetPlayer.setLastGuildToInvite(sourcePlayer.getGuild().getObjectUUID()); // setup guild invite message to send to targetPlayer msg.setSourceType(sourcePlayer.getObjectType().ordinal()); msg.setSourceUUID(sourcePlayer.getObjectUUID()); msg.setTargetType(targetPlayer.getObjectType().ordinal()); msg.setTargetUUID(targetPlayer.getObjectUUID()); msg.setGuildTag(sourcePlayer.getGuild().getGuildTag()); msg.setGuildName(sourcePlayer.getGuild().getName()); msg.setGuildType(sourcePlayer.getGuild().getObjectType().ordinal()); msg.setGuildUUID(sourcePlayer.getGuild().getObjectUUID()); msg.setTargetName(""); dispatch = Dispatch.borrow(targetPlayer, msg); DispatchManager.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY); return true; } }