aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Guilds/Guild.cpp
diff options
context:
space:
mode:
authorsilinoron <none@none>2010-08-14 12:17:05 -0700
committersilinoron <none@none>2010-08-14 12:17:05 -0700
commit8d0a0584118ec7b6f763a8ebc059a8dfc1d5536e (patch)
treee250ed865bd30a7d393af1551c9f2039df406b41 /src/server/game/Guilds/Guild.cpp
parentd1d7c64c4363061a1f9504ac6d22351c78718c11 (diff)
Add a GuildScript class with a handful of hooks.
--HG-- branch : trunk
Diffstat (limited to 'src/server/game/Guilds/Guild.cpp')
-rw-r--r--src/server/game/Guilds/Guild.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index 2fb727f7230..6e59773b57a 100644
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -31,6 +31,7 @@
#include "Language.h"
#include "World.h"
#include "Config.h"
+#include "ScriptMgr.h"
Guild::Guild()
{
@@ -126,6 +127,8 @@ bool Guild::AddMember(uint64 plGuid, uint32 plRank)
return false;
}
+ sScriptMgr.OnGuildAddMember(this, pl, plRank);
+
// remove all player signs from another petitions
// this will be prevent attempt joining player to many guilds and corrupt guild data integrity
Player::RemovePetitionsAndSigns(plGuid, 9);
@@ -196,6 +199,8 @@ void Guild::SetMOTD(std::string motd)
{
MOTD = motd;
+ sScriptMgr.OnGuildMOTDChanged(this, motd);
+
// motd now can be used for encoding to DB
CharacterDatabase.escape_string(motd);
CharacterDatabase.PExecute("UPDATE guild SET motd='%s' WHERE guildid='%u'", motd.c_str(), m_Id);
@@ -205,6 +210,8 @@ void Guild::SetGINFO(std::string ginfo)
{
GINFO = ginfo;
+ sScriptMgr.OnGuildInfoChanged(this, ginfo);
+
// ginfo now can be used for encoding to DB
CharacterDatabase.escape_string(ginfo);
CharacterDatabase.PExecute("UPDATE guild SET info='%s' WHERE guildid='%u'", ginfo.c_str(), m_Id);
@@ -448,8 +455,11 @@ void Guild::SetLeader(uint64 guid)
CharacterDatabase.PExecute("UPDATE guild SET leaderguid='%u' WHERE guildid='%u'", GUID_LOPART(guid), m_Id);
}
-void Guild::DelMember(uint64 guid, bool isDisbanding)
+void Guild::DelMember(uint64 guid, bool isDisbanding, bool isKicked)
{
+ Player *player = sObjectMgr.GetPlayer(guid);
+ sScriptMgr.OnGuildRemoveMember(this, player, isDisbanding, isKicked);
+
//guild master can be deleted when loading guild and guid doesn't exist in characters table
//or when he is removed from guild by gm command
if (m_LeaderGuid == guid && !isDisbanding)
@@ -494,7 +504,6 @@ void Guild::DelMember(uint64 guid, bool isDisbanding)
members.erase(GUID_LOPART(guid));
- Player *player = sObjectMgr.GetPlayer(guid);
// If player not online data in data field will be loaded from guild tabs no need to update it !!
if (player)
{
@@ -692,6 +701,7 @@ int32 Guild::GetRank(uint32 LowGuid)
void Guild::Disband()
{
+ sScriptMgr.OnGuildDisband(this);
BroadcastEvent(GE_DISBANDED, 0, 0, "", "", "");
while (!members.empty())