aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Guilds/Guild.cpp
diff options
context:
space:
mode:
authorVincent-Michael <Vincent_Michael@gmx.de>2013-09-09 18:26:31 +0200
committerVincent-Michael <Vincent_Michael@gmx.de>2013-09-09 18:26:31 +0200
commitce742dc7a07505e5e5fb015b601343b32855e325 (patch)
tree748714fab1f817102dfebfafaa8b082e611f8cca /src/server/game/Guilds/Guild.cpp
parentbe75ddc2bd99045e53523a06707526b233fd0c32 (diff)
parentbe5cf42ec392e8526d3180e51ffaacb84e883fae (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.cpp16
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;
}