aboutsummaryrefslogtreecommitdiff
path: root/src/game/GuildHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/GuildHandler.cpp')
-rw-r--r--src/game/GuildHandler.cpp93
1 files changed, 32 insertions, 61 deletions
diff --git a/src/game/GuildHandler.cpp b/src/game/GuildHandler.cpp
index e503db9f299..9462f7a1bb1 100644
--- a/src/game/GuildHandler.cpp
+++ b/src/game/GuildHandler.cpp
@@ -173,26 +173,20 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
return;
}
- uint64 plGuid = objmgr.GetPlayerGUIDByName(plName);
-
- if(!plGuid)
+ uint64 plGuid;
+ MemberSlot* slot = guild->GetMemberSlot(plName, plGuid);
+ if(!slot)
{
- SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_FOUND);
+ SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S);
return;
}
- if(plGuid == guild->GetLeader())
+ if(slot->RankId == GR_GUILDMASTER)
{
SendGuildCommandResult(GUILD_QUIT_S, "", GUILD_LEADER_LEAVE);
return;
}
- if(!guild->IsMember(GUID_LOPART(plGuid)))
- {
- SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S);
- return;
- }
-
guild->DelMember(plGuid);
// Put record into guildlog
guild->LogGuildEvent(GUILD_EVENT_LOG_UNINVITE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), 0);
@@ -301,29 +295,25 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)
return;
}
- uint64 plGuid = objmgr.GetPlayerGUIDByName(plName);
-
- if(!plGuid)
+ uint64 plGuid;
+ MemberSlot* slot = guild->GetMemberSlot(plName, plGuid);
+
+ if(!slot)
{
- SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_FOUND);
+ SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S);
return;
}
- else if(plGuid == GetPlayer()->GetGUID())
+
+ if(plGuid == GetPlayer()->GetGUID())
{
SendGuildCommandResult(GUILD_INVITE_S, "", GUILD_NAME_INVALID);
return;
}
- int32 plRankId = guild->GetRank(GUID_LOPART(plGuid));
- if(plRankId == -1)
- {
- SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S);
- return;
- }
- if(plRankId < 2 || (plRankId-1) < GetPlayer()->GetRank())
+ if(slot->RankId < 2 || (slot->RankId-1) < GetPlayer()->GetRank())
return;
- uint32 newRankId = plRankId < guild->GetNrRanks() ? plRankId-1 : guild->GetNrRanks()-1;
+ uint32 newRankId = slot->RankId < guild->GetNrRanks() ? slot->RankId-1 : guild->GetNrRanks()-1;
guild->ChangeRank(plGuid, newRankId);
// Put record into guildlog
@@ -365,11 +355,12 @@ void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
return;
}
- uint64 plGuid = objmgr.GetPlayerGUIDByName(plName);
+ uint64 plGuid;
+ MemberSlot* slot = guild->GetMemberSlot(plName, plGuid);
- if( !plGuid )
+ if (!slot)
{
- SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_FOUND);
+ SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S);
return;
}
@@ -379,26 +370,19 @@ void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket)
return;
}
- int32 plRankId = guild->GetRank(GUID_LOPART(plGuid));
- if(plRankId == -1)
- {
- SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S);
- return;
- }
-
- if((plRankId+1) >= guild->GetNrRanks() || plRankId <= this->GetPlayer()->GetRank())
+ if((slot->RankId+1) >= guild->GetNrRanks() || slot->RankId <= GetPlayer()->GetRank())
return;
- guild->ChangeRank(plGuid, (plRankId+1));
+ guild->ChangeRank(plGuid, (slot->RankId+1));
// Put record into guildlog
- guild->LogGuildEvent(GUILD_EVENT_LOG_DEMOTE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), (plRankId+1));
+ guild->LogGuildEvent(GUILD_EVENT_LOG_DEMOTE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), (slot->RankId+1));
WorldPacket data(SMSG_GUILD_EVENT, (2+30)); // guess size
data << (uint8)GE_DEMOTION;
data << (uint8)3;
data << GetPlayer()->GetName();
data << plName;
- data << guild->GetRankName(plRankId+1);
+ data << guild->GetRankName(slot->RankId+1);
guild->BroadcastPacket(&data);
}
@@ -497,13 +481,10 @@ void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket)
return;
}
- uint64 newLeaderGUID = objmgr.GetPlayerGUIDByName(name);
- if (!newLeaderGUID)
- {
- SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_FOUND);
- return;
- }
- if(!guild->IsMember(GUID_LOPART(newLeaderGUID)))
+ uint64 newLeaderGUID;
+ MemberSlot* slot = guild->GetMemberSlot(name, newLeaderGUID);
+
+ if (!slot)
{
SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_IN_GUILD_S);
return;
@@ -583,15 +564,10 @@ void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket)
return;
}
- uint64 plGuid = objmgr.GetPlayerGUIDByName(name);
+ uint64 plGuid;
+ MemberSlot* slot = guild->GetMemberSlot(name, plGuid);
- if (!plGuid)
- {
- SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_FOUND);
- return;
- }
-
- if (!guild->IsMember(GUID_LOPART(plGuid)))
+ if (!slot)
{
SendGuildCommandResult(GUILD_INVITE_S, name, GUILD_PLAYER_NOT_IN_GUILD_S);
return;
@@ -628,15 +604,10 @@ void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket)
return;
}
- uint64 plGuid = objmgr.GetPlayerGUIDByName(plName);
-
- if (!plGuid)
- {
- SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_FOUND);
- return;
- }
+ uint64 plGuid;
+ MemberSlot* slot = guild->GetMemberSlot(plName, plGuid);
- if (!guild->IsMember(GUID_LOPART(plGuid)))
+ if (!slot)
{
SendGuildCommandResult(GUILD_INVITE_S, plName, GUILD_PLAYER_NOT_IN_GUILD_S);
return;