diff options
| author | silinoron <none@none> | 2010-08-14 12:17:05 -0700 |
|---|---|---|
| committer | silinoron <none@none> | 2010-08-14 12:17:05 -0700 |
| commit | 8d0a0584118ec7b6f763a8ebc059a8dfc1d5536e (patch) | |
| tree | e250ed865bd30a7d393af1551c9f2039df406b41 /src/server/game/Guilds/Guild.cpp | |
| parent | d1d7c64c4363061a1f9504ac6d22351c78718c11 (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.cpp | 14 |
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()) |
