aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Guilds/Guild.cpp
diff options
context:
space:
mode:
authorSpp <spp@jorge.gr>2012-11-19 10:09:58 +0100
committerSpp <spp@jorge.gr>2012-11-19 10:09:58 +0100
commit7f061fc57fac4b48417d25579e833e9b66364237 (patch)
treecdbe2ff223967034dd9f236da4ca38cc73c30a7b /src/server/game/Guilds/Guild.cpp
parent09ab26ac946bc7b5458d92fbadfb66e442744098 (diff)
parentd42212b595ad01be0a839405d853f7db2b9f88de (diff)
Merge branch 'master' into 4.3.4
Conflicts: src/server/game/AI/EventAI/CreatureEventAI.cpp src/server/game/AI/EventAI/CreatureEventAIMgr.cpp src/server/game/AI/EventAI/CreatureEventAIMgr.h src/server/game/Battlegrounds/Battleground.h src/server/game/Chat/Chat.h src/server/game/Entities/Player/Player.cpp src/server/game/Globals/ObjectMgr.cpp src/server/game/Globals/ObjectMgr.h src/server/game/Guilds/Guild.cpp src/server/game/Handlers/CharacterHandler.cpp src/server/game/Handlers/MailHandler.cpp src/server/game/Miscellaneous/SharedDefines.h src/server/game/Server/Protocol/Opcodes.cpp src/server/game/Spells/SpellInfo.cpp src/server/game/World/World.cpp src/server/scripts/Commands/cs_modify.cpp src/server/scripts/Commands/cs_reload.cpp src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp src/server/shared/Database/Implementation/CharacterDatabase.cpp
Diffstat (limited to 'src/server/game/Guilds/Guild.cpp')
-rw-r--r--src/server/game/Guilds/Guild.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index 1a73974b906..3d06b266afb 100644
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -27,6 +27,7 @@
#include "Log.h"
#include "AccountMgr.h"
#include "AchievementMgr.h"
+#include "CalendarMgr.h"
#define MAX_GUILD_BANK_TAB_TEXT_LEN 500
#define EMBLEM_PRICE 10 * GOLD
@@ -1833,6 +1834,8 @@ void Guild::HandleLeaveMember(WorldSession* session)
SendCommandResult(session, GUILD_COMMAND_QUIT, ERR_GUILD_COMMAND_SUCCESS, m_name);
}
+
+ sCalendarMgr->RemovePlayerGuildEventsAndSignups(player->GetGUID(), GetId());
}
void Guild::HandleRemoveMember(WorldSession* session, uint64 guid)
@@ -2541,6 +2544,39 @@ void Guild::BroadcastPacket(WorldPacket* packet) const
player->GetSession()->SendPacket(packet);
}
+void Guild::MassInviteToEvent(WorldSession* session, uint32 minLevel, uint32 maxLevel, uint32 minRank)
+{
+ uint32 count = 0;
+
+ WorldPacket data(SMSG_CALENDAR_FILTER_GUILD);
+ data << uint32(count); // count placeholder
+
+ for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
+ {
+ // not sure if needed, maybe client checks it as well
+ if (count >= CALENDAR_MAX_INVITES)
+ {
+ if (Player* player = session->GetPlayer())
+ sCalendarMgr->SendCalendarCommandResult(player->GetGUID(), CALENDAR_ERROR_INVITES_EXCEEDED);
+ return;
+ }
+
+ Member* member = itr->second;
+ uint32 level = Player::GetLevelFromDB(member->GetGUID());
+
+ if (member->GetGUID() != session->GetPlayer()->GetGUID() && level >= minLevel && level <= maxLevel && member->IsRankNotLower(minRank))
+ {
+ data.appendPackGUID(member->GetGUID());
+ data << uint8(0); // unk
+ ++count;
+ }
+ }
+
+ data.put<uint32>(0, count);
+
+ session->SendPacket(&data);
+}
+
// Members handling
bool Guild::AddMember(uint64 guid, uint8 rankId)
{