Public Repository for the Magicbane Shadowbane Emulator
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

155 lines
6.1 KiB

// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.net.client.handlers;
import engine.Enum;
import engine.Enum.GameObjectType;
import engine.exception.MsgSendException;
import engine.gameManager.ChatManager;
import engine.gameManager.ConfigManager;
import engine.gameManager.GuildManager;
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.InviteToGuildMsg;
import engine.objects.GuildStatusController;
import engine.objects.PlayerCharacter;
public class InviteToGuildHandler extends AbstractClientMsgHandler {
public InviteToGuildHandler() {
super(InviteToGuildMsg.class);
}
@Override
protected boolean _handleNetMsg(ClientNetMsg baseMsg, ClientConnection origin) throws MsgSendException {
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;
}
Enum.GuildCharterType guildCharterType = Enum.GuildCharterType.values()[sourcePlayer.getGuild().getCharter()];
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() == "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);
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);
return true;
}
}