forked from MagicBane/Server
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.
140 lines
4.9 KiB
140 lines
4.9 KiB
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . |
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· |
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ |
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ |
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ |
|
// Magicbane Emulator Project © 2013 - 2022 |
|
// www.magicbane.com |
|
|
|
|
|
package engine.net.client.handlers; |
|
|
|
import engine.exception.MsgSendException; |
|
import engine.gameManager.ChatManager; |
|
import engine.gameManager.DbManager; |
|
import engine.mbEnums; |
|
import engine.mbEnums.GameObjectType; |
|
import engine.net.Dispatch; |
|
import engine.net.DispatchMessage; |
|
import engine.net.client.ClientConnection; |
|
import engine.net.client.msg.ChangeGuildLeaderMsg; |
|
import engine.net.client.msg.ClientNetMsg; |
|
import engine.net.client.msg.guild.GuildInfoMsg; |
|
import engine.net.client.msg.guild.GuildListMsg; |
|
import engine.objects.City; |
|
import engine.objects.Guild; |
|
import engine.objects.GuildStatusController; |
|
import engine.objects.PlayerCharacter; |
|
|
|
public class ChangeGuildLeaderHandler extends AbstractClientMsgHandler { |
|
|
|
public ChangeGuildLeaderHandler() { |
|
super(ChangeGuildLeaderMsg.class); |
|
} |
|
|
|
@Override |
|
protected boolean _handleNetMsg(ClientNetMsg baseMsg, ClientConnection origin) throws MsgSendException { |
|
|
|
ChangeGuildLeaderMsg msg; |
|
PlayerCharacter sourcePlayer; |
|
PlayerCharacter targetPlayer; |
|
City city; |
|
|
|
msg = (ChangeGuildLeaderMsg) baseMsg; |
|
sourcePlayer = origin.getPlayerCharacter(); |
|
if (sourcePlayer == null) |
|
return true; |
|
if (GuildStatusController.isGuildLeader(sourcePlayer.getGuildStatus()) == false) |
|
return true; |
|
|
|
|
|
Guild glGuild = sourcePlayer.getGuild(); |
|
|
|
if (glGuild == null) |
|
return true; |
|
|
|
if (!glGuild.isGuildLeader(sourcePlayer.getObjectUUID())) |
|
return true; |
|
targetPlayer = (PlayerCharacter) DbManager.getObject(GameObjectType.PlayerCharacter, msg.getTargetID()); |
|
|
|
|
|
if (targetPlayer == null) |
|
return true; |
|
|
|
if (GuildStatusController.isGuildLeader(targetPlayer.getGuildStatus())) |
|
return true; |
|
|
|
if (!Guild.sameGuild(sourcePlayer.getGuild(), targetPlayer.getGuild())) |
|
return false; |
|
|
|
|
|
//updateSource will generate a new promote/demote screen for sourcePlayer |
|
//updateTarget will sync guild info for the target and all players in range |
|
|
|
|
|
String targetName = null; |
|
boolean isMale = true; |
|
boolean updateTarget; |
|
|
|
mbEnums.GuildCharterType t = mbEnums.GuildCharterType.getGuildTypeFromInt(sourcePlayer.getGuild().getCharter()); |
|
|
|
|
|
if (!DbManager.GuildQueries.SET_GUILD_LEADER(targetPlayer.getObjectUUID(), glGuild.getObjectUUID())) { |
|
ChatManager.chatGuildError(sourcePlayer, "Failed to change guild leader!"); |
|
return false; |
|
} |
|
|
|
glGuild.setGuildLeader(targetPlayer); |
|
|
|
|
|
if (glGuild.getOwnedCity() != null) { |
|
city = glGuild.getOwnedCity(); |
|
if (!city.transferGuildLeader(targetPlayer)) { |
|
ChatManager.chatGuildError(sourcePlayer, "Failed to Transfer City Objects. Contact CCR!"); |
|
return false; |
|
} |
|
|
|
} |
|
|
|
|
|
targetPlayer.setGuildLeader(true); |
|
targetPlayer.setInnerCouncil(true); |
|
targetPlayer.setFullMember(true); |
|
targetPlayer.incVer(); |
|
targetName = targetPlayer.getFirstName(); |
|
updateTarget = true; |
|
|
|
|
|
ChatManager.chatGuildInfo(sourcePlayer.getGuild(), |
|
targetName + " has been promoted to " |
|
+ "guild leader!"); |
|
|
|
//These values record a change, not the new value... |
|
|
|
|
|
//updateOldGuildLeader |
|
sourcePlayer.setInnerCouncil(true); |
|
sourcePlayer.setFullMember(true); |
|
sourcePlayer.setGuildLeader(false); |
|
sourcePlayer.incVer(); |
|
|
|
GuildInfoMsg guildInfoMsg = new GuildInfoMsg(sourcePlayer, sourcePlayer.getGuild(), 2); |
|
Dispatch dispatch = Dispatch.borrow(sourcePlayer, guildInfoMsg); |
|
DispatchMessage.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY); |
|
|
|
GuildListMsg guildListMsg = new GuildListMsg(sourcePlayer.getGuild()); |
|
|
|
dispatch = Dispatch.borrow(sourcePlayer, guildListMsg); |
|
DispatchMessage.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY); |
|
|
|
|
|
if (targetPlayer != null) { |
|
if (updateTarget) |
|
DispatchMessage.sendToAllInRange(targetPlayer, new GuildInfoMsg(targetPlayer, targetPlayer.getGuild(), 2)); |
|
} |
|
|
|
return true; |
|
|
|
} |
|
|
|
}
|
|
|