diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-03-13 18:51:29 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-03-14 00:14:16 +0100 |
commit | a79b42bf681e211997923dbc6c191aae187aded6 (patch) | |
tree | dc52e4651fe17d4e6ce3437490d07313113432aa /src/server/game/Guilds/Guild.cpp | |
parent | 7850107a42e7709f6e92f542860160b8c1432c94 (diff) |
Core/Misc: Use our new unique_trackable_ptr for various classes exposed to scripts (not actually used anywhere currently)
(cherry picked from commit 4779fa5048642b57a0f69de7ab56b9d563c1cbc4)
Diffstat (limited to 'src/server/game/Guilds/Guild.cpp')
-rw-r--r-- | src/server/game/Guilds/Guild.cpp | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 568194d1f04..18fed0e33c6 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -1532,7 +1532,8 @@ void Guild::HandleAcceptMember(WorldSession* session) void Guild::HandleLeaveMember(WorldSession* session) { Player* player = session->GetPlayer(); - bool disband = false; + + sCalendarMgr->RemovePlayerGuildEventsAndSignups(player->GetGUID(), GetId()); // If leader is leaving if (_IsLeader(player)) @@ -1544,7 +1545,6 @@ void Guild::HandleLeaveMember(WorldSession* session) { // Guild is disbanded if leader leaves. Disband(); - disband = true; } } else @@ -1557,11 +1557,6 @@ void Guild::HandleLeaveMember(WorldSession* session) SendCommandResult(session, GUILD_COMMAND_QUIT, ERR_GUILD_COMMAND_SUCCESS, m_name); } - - sCalendarMgr->RemovePlayerGuildEventsAndSignups(player->GetGUID(), GetId()); - - if (disband) - delete this; } void Guild::HandleRemoveMember(WorldSession* session, std::string_view name) @@ -1786,7 +1781,6 @@ void Guild::HandleDisband(WorldSession* session) { Disband(); TC_LOG_DEBUG("guild", "Guild Successfully Disbanded"); - delete this; } } @@ -2110,13 +2104,8 @@ bool Guild::Validate() if (!pLeader) { CharacterDatabaseTransaction dummy(nullptr); - DeleteMember(dummy, m_leaderGuid); - // If no more members left, disband guild - if (m_members.empty()) - { - Disband(); + if (DeleteMember(dummy, m_leaderGuid)) return false; - } } else if (!pLeader->IsRank(GR_GUILDMASTER)) _SetLeaderGUID(*pLeader); @@ -2276,7 +2265,7 @@ bool Guild::AddMember(CharacterDatabaseTransaction trans, ObjectGuid guid, uint8 return true; } -void Guild::DeleteMember(CharacterDatabaseTransaction trans, ObjectGuid guid, bool isDisbanding, bool isKicked, bool canDeleteGuild) +bool Guild::DeleteMember(CharacterDatabaseTransaction trans, ObjectGuid guid, bool isDisbanding, bool isKicked) { ObjectGuid::LowType lowguid = guid.GetCounter(); Player* player = ObjectAccessor::FindConnectedPlayer(guid); @@ -2298,9 +2287,7 @@ void Guild::DeleteMember(CharacterDatabaseTransaction trans, ObjectGuid guid, bo if (!newLeader) { Disband(); - if (canDeleteGuild) - delete this; - return; + return true; } _SetLeaderGUID(*newLeader); @@ -2333,6 +2320,14 @@ void Guild::DeleteMember(CharacterDatabaseTransaction trans, ObjectGuid guid, bo _DeleteMemberFromDB(trans, lowguid); if (!isDisbanding) _UpdateAccountsNumber(); + + if (m_members.empty()) + { + Disband(); + return true; + } + + return false; } bool Guild::ChangeMemberRank(CharacterDatabaseTransaction trans, ObjectGuid guid, uint8 newRank) |