|
|
|
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
|
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
|
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
|
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
|
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
|
|
// 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;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|