diff options
| author | Vincent-Michael <Vincent_Michael@gmx.de> | 2013-09-09 18:26:31 +0200 |
|---|---|---|
| committer | Vincent-Michael <Vincent_Michael@gmx.de> | 2013-09-09 18:26:31 +0200 |
| commit | ce742dc7a07505e5e5fb015b601343b32855e325 (patch) | |
| tree | 748714fab1f817102dfebfafaa8b082e611f8cca /src/server/game/Guilds/Guild.cpp | |
| parent | be75ddc2bd99045e53523a06707526b233fd0c32 (diff) | |
| parent | be5cf42ec392e8526d3180e51ffaacb84e883fae (diff) | |
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Conflicts:
src/server/game/Battlegrounds/Battleground.cpp
src/server/game/Battlegrounds/Battleground.h
src/server/game/Battlegrounds/BattlegroundMgr.cpp
src/server/game/Conditions/ConditionMgr.h
src/server/game/Guilds/Guild.cpp
Diffstat (limited to 'src/server/game/Guilds/Guild.cpp')
| -rw-r--r-- | src/server/game/Guilds/Guild.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index af8e7255603..2a689515568 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -1859,6 +1859,8 @@ void Guild::HandleAcceptMember(WorldSession* session) void Guild::HandleLeaveMember(WorldSession* session) { Player* player = session->GetPlayer(); + bool disband = false; + // If leader is leaving if (_IsLeader(player)) { @@ -1868,7 +1870,11 @@ void Guild::HandleLeaveMember(WorldSession* session) else if (GetLevel() >= sWorld->getIntConfig(CONFIG_GUILD_UNDELETABLE_LEVEL)) SendCommandResult(session, GUILD_COMMAND_QUIT, ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL); else - Disband(); // Guild is disbanded if leader leaves. + { + // Guild is disbanded if leader leaves. + Disband(); + disband = true; + } } else { @@ -1881,6 +1887,9 @@ void Guild::HandleLeaveMember(WorldSession* session) } sCalendarMgr->RemovePlayerGuildEventsAndSignups(player->GetGUID(), GetId()); + + if (disband) + delete this; } void Guild::HandleRemoveMember(WorldSession* session, uint64 guid) @@ -2123,6 +2132,7 @@ void Guild::HandleDisband(WorldSession* session) { Disband(); TC_LOG_DEBUG(LOG_FILTER_GUILD, "Guild Successfully Disbanded"); + delete this; } } @@ -2706,7 +2716,7 @@ bool Guild::AddMember(uint64 guid, uint8 rankId) return true; } -void Guild::DeleteMember(uint64 guid, bool isDisbanding, bool isKicked) +void Guild::DeleteMember(uint64 guid, bool isDisbanding, bool isKicked, bool canDeleteGuild) { uint32 lowguid = GUID_LOPART(guid); Player* player = ObjectAccessor::FindPlayer(guid); @@ -2728,6 +2738,8 @@ void Guild::DeleteMember(uint64 guid, bool isDisbanding, bool isKicked) if (!newLeader) { Disband(); + if (canDeleteGuild) + delete this; return; } |
