TrinityCore
Loading...
Searching...
No Matches
GuildHandler.cpp
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include "WorldSession.h"
19#include "AchievementPackets.h"
20#include "Common.h"
21#include "GameTime.h"
22#include "GossipDef.h"
23#include "Guild.h"
24#include "GuildMgr.h"
25#include "GuildPackets.h"
26#include "Log.h"
27#include "ObjectMgr.h"
28#include "Player.h"
29
31{
32 TC_LOG_DEBUG("guild", "CMSG_GUILD_QUERY [{}]: Guild: {} Target: {}",
34
35 if (Guild* guild = sGuildMgr->GetGuildByGuid(query.GuildGuid))
36 {
37 guild->HandleQuery(this);
38 return;
39 }
40
42 response.GuildGuid = query.GuildGuid;
43 SendPacket(response.Write());
44
45 TC_LOG_DEBUG("guild", "SMSG_GUILD_QUERY_RESPONSE [{}]", GetPlayerInfo());
46}
47
49{
50 TC_LOG_DEBUG("guild", "CMSG_GUILD_INVITE [{}]: Invited: {}", GetPlayerInfo(), packet.Name);
51 if (normalizePlayerName(packet.Name))
52 if (Guild* guild = GetPlayer()->GetGuild())
53 guild->HandleInviteMember(this, packet.Name);
54}
55
57{
58 TC_LOG_DEBUG("guild", "CMSG_GUILD_REMOVE [{}]: Target: {}", GetPlayerInfo(), packet.Removee.ToString());
59
60 if (Guild* guild = GetPlayer()->GetGuild())
61 guild->HandleRemoveMember(this, packet.Removee);
62}
63
65{
66 if (!GetPlayer()->GetGuildId())
67 if (Guild* guild = sGuildMgr->GetGuildById(GetPlayer()->GetGuildIdInvited()))
68 guild->HandleAcceptMember(this);
69}
70
78
80{
81 if (Guild* guild = GetPlayer()->GetGuild())
82 guild->HandleRoster(this);
83 else
85}
86
88{
89 TC_LOG_DEBUG("guild", "CMSG_GUILD_PROMOTE [{}]: Target: {}", GetPlayerInfo(), promote.Promotee.ToString());
90
91 if (Guild* guild = GetPlayer()->GetGuild())
92 guild->HandleUpdateMemberRank(this, promote.Promotee, false);
93}
94
96{
97 TC_LOG_DEBUG("guild", "CMSG_GUILD_DEMOTE [{}]: Target: {}", GetPlayerInfo(), demote.Demotee.ToString());
98
99 if (Guild* guild = GetPlayer()->GetGuild())
100 guild->HandleUpdateMemberRank(this, demote.Demotee, true);
101}
102
104{
105 ObjectGuid setterGuid = GetPlayer()->GetGUID();
106
107 TC_LOG_DEBUG("guild", "CMSG_GUILD_ASSIGN_MEMBER_RANK [{}]: Target: {} Rank: {}, Issuer: {}",
108 GetPlayerInfo(), packet.Member.ToString(), packet.RankOrder, setterGuid.ToString());
109
110 if (Guild* guild = GetPlayer()->GetGuild())
111 guild->HandleSetMemberRank(this, packet.Member, setterGuid, GuildRankOrder(packet.RankOrder));
112}
113
115{
116 if (Guild* guild = GetPlayer()->GetGuild())
117 guild->HandleLeaveMember(this);
118}
119
121{
122 if (Guild* guild = GetPlayer()->GetGuild())
123 guild->HandleDelete(this);
124}
125
127{
128 TC_LOG_DEBUG("guild", "CMSG_GUILD_UPDATE_MOTD_TEXT [{}]: MOTD: {}", GetPlayerInfo(), std::string_view(packet.MotdText));
129
130 if (Guild* guild = GetPlayer()->GetGuild())
131 guild->HandleSetMOTD(this, packet.MotdText);
132}
133
135{
136 TC_LOG_DEBUG("guild", "CMSG_GUILD_SET_NOTE [{}]: Target: {}, Note: {}, Public: {}",
137 GetPlayerInfo(), packet.NoteeGUID.ToString(), std::string_view(packet.Note), packet.IsPublic);
138
139 if (Guild* guild = GetPlayer()->GetGuild())
140 guild->HandleSetMemberNote(this, packet.Note, packet.NoteeGUID, packet.IsPublic);
141}
142
144{
145 TC_LOG_DEBUG("guild", "CMSG_GUILD_GET_RANKS [{}]: Guild: {}",
146 GetPlayerInfo(), packet.GuildGUID.ToString());
147
148 if (Guild* guild = sGuildMgr->GetGuildByGuid(packet.GuildGUID))
149 if (guild->IsMember(_player->GetGUID()))
150 guild->SendGuildRankInfo(this);
151}
152
154{
155 TC_LOG_DEBUG("guild", "CMSG_GUILD_ADD_RANK [{}]: Rank: {}", GetPlayerInfo(), std::string_view(packet.Name));
156
157 if (Guild* guild = GetPlayer()->GetGuild())
158 guild->HandleAddNewRank(this, packet.Name);
159}
160
162{
163 TC_LOG_DEBUG("guild", "CMSG_GUILD_DELETE_RANK [{}]: Rank: {}", GetPlayerInfo(), packet.RankOrder);
164
165 if (Guild* guild = GetPlayer()->GetGuild())
166 guild->HandleRemoveRank(this, GuildRankOrder(packet.RankOrder));
167}
168
170{
171 TC_LOG_DEBUG("guild", "CMSG_GUILD_SHIFT_RANK [{}]: RankOrder: {}, ShiftUp: {}", GetPlayerInfo(), shiftRank.RankOrder, shiftRank.ShiftUp ? "true" : "false");
172
173 if (Guild* guild = GetPlayer()->GetGuild())
174 guild->HandleShiftRank(this, GuildRankOrder(shiftRank.RankOrder), shiftRank.ShiftUp);
175}
176
178{
179 TC_LOG_DEBUG("guild", "CMSG_GUILD_UPDATE_INFO_TEXT [{}]: {}", GetPlayerInfo(), std::string_view(packet.InfoText));
180
181 if (Guild* guild = GetPlayer()->GetGuild())
182 guild->HandleSetInfo(this, packet.InfoText);
183}
184
186{
187 EmblemInfo emblemInfo;
188 emblemInfo.ReadPacket(packet);
189
190 TC_LOG_DEBUG("guild", "CMSG_SAVE_GUILD_EMBLEM [{}]: Guid: [{}] Style: {}, Color: {}, BorderStyle: {}, BorderColor: {}, BackgroundColor: {}"
191 , GetPlayerInfo(), packet.Vendor.ToString(), emblemInfo.GetStyle()
192 , emblemInfo.GetColor(), emblemInfo.GetBorderStyle()
193 , emblemInfo.GetBorderColor(), emblemInfo.GetBackgroundColor());
194
195 if (GetPlayer()->GetNPCIfCanInteractWith(packet.Vendor, UNIT_NPC_FLAG_TABARDDESIGNER, UNIT_NPC_FLAG_2_NONE))
196 {
197 // Remove fake death
198 if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
200
201 if (!emblemInfo.ValidateEmblemColors())
202 {
204 return;
205 }
206
207 if (Guild* guild = GetPlayer()->GetGuild())
208 guild->HandleSetEmblem(this, emblemInfo);
209 else
210 Guild::SendSaveEmblemResult(this, ERR_GUILDEMBLEM_NOGUILD); // "You are not part of a guild!";
211 }
212 else
213 Guild::SendSaveEmblemResult(this, ERR_GUILDEMBLEM_INVALIDVENDOR); // "That's not an emblem vendor!"
214}
215
217{
218 TC_LOG_DEBUG("guild", "MSG_GUILD_EVENT_LOG_QUERY [{}]", GetPlayerInfo());
219
220 if (Guild* guild = GetPlayer()->GetGuild())
221 guild->SendEventLog(this);
222}
223
225{
226 if (Guild* guild = GetPlayer()->GetGuild())
227 guild->SendMoneyInfo(this);
228}
229
231{
232 if (Guild* guild = GetPlayer()->GetGuild())
233 guild->SendPermissions(this);
234}
235
236// Called when clicking on Guild bank gameobject
238{
239 TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_ACTIVATE [{}]: [{}] AllSlots: {}"
240 , GetPlayerInfo(), packet.Banker.ToString(), packet.FullUpdate);
241
243 if (!go)
244 return;
245
246 Guild* const guild = GetPlayer()->GetGuild();
247 if (!guild)
248 {
250 return;
251 }
252
253 GetPlayer()->PlayerTalkClass->GetInteractionData().StartInteraction(packet.Banker, PlayerInteractionType::GuildBanker);
254
255 guild->SendBankList(this, 0, packet.FullUpdate);
256}
257
258// Called when opening guild bank tab only (first one)
260{
261 TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_QUERY_TAB [{}]: {}, TabId: {}, ShowTabs: {}"
262 , GetPlayerInfo(), packet.Banker.ToString(), packet.Tab, packet.FullUpdate);
263
264 if (GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
265 if (Guild* guild = GetPlayer()->GetGuild())
266 guild->SendBankList(this, packet.Tab, packet.FullUpdate);
267}
268
270{
271 TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_DEPOSIT_MONEY [{}]: [{}], money: {}",
272 GetPlayerInfo(), packet.Banker.ToString(), packet.Money);
273
274 if (GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
275 if (packet.Money && GetPlayer()->HasEnoughMoney(packet.Money))
276 if (Guild* guild = GetPlayer()->GetGuild())
277 guild->HandleMemberDepositMoney(this, packet.Money);
278}
279
281{
282 TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_WITHDRAW_MONEY [{}]: [{}], money: {}",
283 GetPlayerInfo(), packet.Banker.ToString(), packet.Money);
284
285 if (packet.Money && GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
286 if (Guild* guild = GetPlayer()->GetGuild())
287 guild->HandleMemberWithdrawMoney(this, packet.Money);
288}
289
291{
292 if (!GetPlayer()->GetGameObjectIfCanInteractWith(depositGuildBankItem.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
293 return;
294
295 Guild* guild = GetPlayer()->GetGuild();
296 if (!guild)
297 return;
298
299 if (!Player::IsInventoryPos(depositGuildBankItem.ContainerSlot.value_or(INVENTORY_SLOT_BAG_0), depositGuildBankItem.ContainerItemSlot))
301 else
302 guild->SwapItemsWithInventory(GetPlayer(), false, depositGuildBankItem.BankTab, depositGuildBankItem.BankSlot,
303 depositGuildBankItem.ContainerSlot.value_or(INVENTORY_SLOT_BAG_0), depositGuildBankItem.ContainerItemSlot, 0);
304}
305
307{
308 if (!GetPlayer()->GetGameObjectIfCanInteractWith(storeGuildBankItem.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
309 return;
310
311 Guild* guild = GetPlayer()->GetGuild();
312 if (!guild)
313 return;
314
315 if (!Player::IsInventoryPos(storeGuildBankItem.ContainerSlot.value_or(INVENTORY_SLOT_BAG_0), storeGuildBankItem.ContainerItemSlot))
317 else
318 guild->SwapItemsWithInventory(GetPlayer(), true, storeGuildBankItem.BankTab, storeGuildBankItem.BankSlot,
319 storeGuildBankItem.ContainerSlot.value_or(INVENTORY_SLOT_BAG_0), storeGuildBankItem.ContainerItemSlot, 0);
320}
321
323{
324 if (!GetPlayer()->GetGameObjectIfCanInteractWith(swapItemWithGuildBankItem.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
325 return;
326
327 Guild* guild = GetPlayer()->GetGuild();
328 if (!guild)
329 return;
330
331 if (!Player::IsInventoryPos(swapItemWithGuildBankItem.ContainerSlot.value_or(INVENTORY_SLOT_BAG_0), swapItemWithGuildBankItem.ContainerItemSlot))
333 else
334 guild->SwapItemsWithInventory(GetPlayer(), false, swapItemWithGuildBankItem.BankTab, swapItemWithGuildBankItem.BankSlot,
335 swapItemWithGuildBankItem.ContainerSlot.value_or(INVENTORY_SLOT_BAG_0), swapItemWithGuildBankItem.ContainerItemSlot, 0);
336}
337
339{
340 if (!GetPlayer()->GetGameObjectIfCanInteractWith(swapGuildBankItemWithGuildBankItem.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
341 return;
342
343 Guild* guild = GetPlayer()->GetGuild();
344 if (!guild)
345 return;
346
347 guild->SwapItems(GetPlayer(), swapGuildBankItemWithGuildBankItem.BankTab[0], swapGuildBankItemWithGuildBankItem.BankSlot[0],
348 swapGuildBankItemWithGuildBankItem.BankTab[1], swapGuildBankItemWithGuildBankItem.BankSlot[1], 0);
349}
350
352{
353 if (!GetPlayer()->GetGameObjectIfCanInteractWith(moveGuildBankItem.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
354 return;
355
356 Guild* guild = GetPlayer()->GetGuild();
357 if (!guild)
358 return;
359
360 guild->SwapItems(GetPlayer(), moveGuildBankItem.BankTab, moveGuildBankItem.BankSlot, moveGuildBankItem.BankTab1, moveGuildBankItem.BankSlot1, 0);
361}
362
364{
365 if (!GetPlayer()->GetGameObjectIfCanInteractWith(mergeItemWithGuildBankItem.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
366 return;
367
368 Guild* guild = GetPlayer()->GetGuild();
369 if (!guild)
370 return;
371
372 if (!Player::IsInventoryPos(mergeItemWithGuildBankItem.ContainerSlot.value_or(INVENTORY_SLOT_BAG_0), mergeItemWithGuildBankItem.ContainerItemSlot))
374 else
375 guild->SwapItemsWithInventory(GetPlayer(), false, mergeItemWithGuildBankItem.BankTab, mergeItemWithGuildBankItem.BankSlot,
376 mergeItemWithGuildBankItem.ContainerSlot.value_or(INVENTORY_SLOT_BAG_0), mergeItemWithGuildBankItem.ContainerItemSlot, mergeItemWithGuildBankItem.StackCount);
377}
378
380{
381 if (!GetPlayer()->GetGameObjectIfCanInteractWith(splitItemToGuildBank.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
382 return;
383
384 Guild* guild = GetPlayer()->GetGuild();
385 if (!guild)
386 return;
387
388 if (!Player::IsInventoryPos(splitItemToGuildBank.ContainerSlot.value_or(INVENTORY_SLOT_BAG_0), splitItemToGuildBank.ContainerItemSlot))
390 else
391 guild->SwapItemsWithInventory(GetPlayer(), false, splitItemToGuildBank.BankTab, splitItemToGuildBank.BankSlot,
392 splitItemToGuildBank.ContainerSlot.value_or(INVENTORY_SLOT_BAG_0), splitItemToGuildBank.ContainerItemSlot, splitItemToGuildBank.StackCount);
393}
394
396{
397 if (!GetPlayer()->GetGameObjectIfCanInteractWith(mergeGuildBankItemWithItem.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
398 return;
399
400 Guild* guild = GetPlayer()->GetGuild();
401 if (!guild)
402 return;
403
404 if (!Player::IsInventoryPos(mergeGuildBankItemWithItem.ContainerSlot.value_or(INVENTORY_SLOT_BAG_0), mergeGuildBankItemWithItem.ContainerItemSlot))
406 else
407 guild->SwapItemsWithInventory(GetPlayer(), true, mergeGuildBankItemWithItem.BankTab, mergeGuildBankItemWithItem.BankSlot,
408 mergeGuildBankItemWithItem.ContainerSlot.value_or(INVENTORY_SLOT_BAG_0), mergeGuildBankItemWithItem.ContainerItemSlot, mergeGuildBankItemWithItem.StackCount);
409}
410
412{
413 if (!GetPlayer()->GetGameObjectIfCanInteractWith(splitGuildBankItemToInventory.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
414 return;
415
416 Guild* guild = GetPlayer()->GetGuild();
417 if (!guild)
418 return;
419
420 if (!Player::IsInventoryPos(splitGuildBankItemToInventory.ContainerSlot.value_or(INVENTORY_SLOT_BAG_0), splitGuildBankItemToInventory.ContainerItemSlot))
422 else
423 guild->SwapItemsWithInventory(GetPlayer(), true, splitGuildBankItemToInventory.BankTab, splitGuildBankItemToInventory.BankSlot,
424 splitGuildBankItemToInventory.ContainerSlot.value_or(INVENTORY_SLOT_BAG_0), splitGuildBankItemToInventory.ContainerItemSlot, splitGuildBankItemToInventory.StackCount);
425}
426
428{
429 if (!GetPlayer()->GetGameObjectIfCanInteractWith(autoStoreGuildBankItem.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
430 return;
431
432 Guild* guild = GetPlayer()->GetGuild();
433 if (!guild)
434 return;
435
436 guild->SwapItemsWithInventory(GetPlayer(), true, autoStoreGuildBankItem.BankTab, autoStoreGuildBankItem.BankSlot,
438}
439
441{
442 if (!GetPlayer()->GetGameObjectIfCanInteractWith(mergeGuildBankItemWithGuildBankItem.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
443 return;
444
445 Guild* guild = GetPlayer()->GetGuild();
446 if (!guild)
447 return;
448
449 guild->SwapItems(GetPlayer(), mergeGuildBankItemWithGuildBankItem.BankTab, mergeGuildBankItemWithGuildBankItem.BankSlot,
450 mergeGuildBankItemWithGuildBankItem.BankTab1, mergeGuildBankItemWithGuildBankItem.BankSlot1, mergeGuildBankItemWithGuildBankItem.StackCount);
451}
452
454{
455 if (!GetPlayer()->GetGameObjectIfCanInteractWith(splitGuildBankItem.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
456 return;
457
458 Guild* guild = GetPlayer()->GetGuild();
459 if (!guild)
460 return;
461
462 guild->SwapItems(GetPlayer(), splitGuildBankItem.BankTab, splitGuildBankItem.BankSlot,
463 splitGuildBankItem.BankTab1, splitGuildBankItem.BankSlot1, splitGuildBankItem.StackCount);
464}
465
467{
468 TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_BUY_TAB [{}]: [{}[, TabId: {}", GetPlayerInfo(), packet.Banker.ToString(), packet.BankTab);
469
470 if (!packet.Banker || GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
471 if (Guild* guild = GetPlayer()->GetGuild())
472 guild->HandleBuyBankTab(this, packet.BankTab);
473}
474
476{
477 TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_UPDATE_TAB [{}]: [{}], TabId: {}, Name: {}, Icon: {}"
478 , GetPlayerInfo(), packet.Banker.ToString(), packet.BankTab, std::string_view(packet.Name), std::string_view(packet.Icon));
479
480 if (!packet.Name.empty() && !packet.Icon.empty())
481 if (GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
482 if (Guild* guild = GetPlayer()->GetGuild())
483 guild->HandleSetBankTabInfo(this, packet.BankTab, packet.Name, packet.Icon);
484}
485
487{
488 TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_LOG_QUERY [{}]: TabId: {}", GetPlayerInfo(), packet.Tab);
489
490 if (Guild* guild = GetPlayer()->GetGuild())
491 guild->SendBankLog(this, packet.Tab);
492}
493
495{
496 TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_QUERY_TEXT [{}]: TabId: {}", GetPlayerInfo(), packet.Tab);
497
498 if (Guild* guild = GetPlayer()->GetGuild())
499 guild->SendBankTabText(this, packet.Tab);
500}
501
503{
504 TC_LOG_DEBUG("guild", "CMSG_SET_GUILD_BANK_TEXT [{}]: TabId: {}, Text: {}", GetPlayerInfo(), packet.Tab, std::string_view(packet.TabText));
505
506 if (Guild* guild = GetPlayer()->GetGuild())
507 guild->SetBankTabText(packet.Tab, packet.TabText);
508}
509
511{
512 Guild* guild = GetPlayer()->GetGuild();
513 if (!guild)
514 return;
515
516 std::array<GuildBankRightsAndSlots, GUILD_BANK_MAX_TABS> rightsAndSlots;
517 for (uint8 tabId = 0; tabId < GUILD_BANK_MAX_TABS; ++tabId)
518 rightsAndSlots[tabId] = GuildBankRightsAndSlots(tabId, uint8(packet.TabFlags[tabId]), uint32(packet.TabWithdrawItemLimit[tabId]));
519
520 TC_LOG_DEBUG("guild", "CMSG_GUILD_SET_RANK_PERMISSIONS [{}]: Rank: {} ({})", GetPlayerInfo(), std::string_view(packet.RankName), packet.RankOrder);
521
522 guild->HandleSetRankInfo(this, GuildRankId(packet.RankID), packet.RankName, packet.Flags, packet.WithdrawGoldLimit, rightsAndSlots);
523}
524
526{
527 if (Guild* guild = sGuildMgr->GetGuildByGuid(packet.GuildGUID))
528 guild->HandleGuildPartyRequest(this);
529}
530
532{
533 if (Guild* guild = _player->GetGuild())
534 guild->HandleGuildRequestChallengeUpdate(this);
535}
536
544
546{
547 if (sGuildMgr->GetGuildById(_player->GetGuildId()))
548 {
549 std::vector<GuildReward> const& rewards = sGuildMgr->GetGuildRewards();
550
552 rewardList.Version = GameTime::GetSystemTime();
553 rewardList.RewardItems.reserve(rewards.size());
554
555 for (uint32 i = 0; i < rewards.size(); i++)
556 {
558 rewardItem.ItemID = rewards[i].ItemID;
559 rewardItem.RaceMask = rewards[i].RaceMask;
560 rewardItem.MinGuildLevel = 0;
561 rewardItem.MinGuildRep = rewards[i].MinGuildRep;
562 rewardItem.AchievementsRequired = rewards[i].AchievementsRequired;
563 rewardItem.Cost = rewards[i].Cost;
564 rewardList.RewardItems.push_back(rewardItem);
565 }
566
567 SendPacket(rewardList.Write());
568 }
569}
570
572{
573 if (Guild* guild = GetPlayer()->GetGuild())
574 if (guild->GetGUID() == newsQuery.GuildGUID)
575 guild->SendNewsUpdate(this);
576}
577
579{
580 if (Guild* guild = GetPlayer()->GetGuild())
581 guild->HandleNewsSetSticky(this, packet.NewsID, packet.Sticky);
582}
583
585{
586 if (Guild* guild = GetPlayer()->GetGuild())
587 guild->HandleSetNewGuildMaster(this, "", true);
588}
589
591{
592 TC_LOG_DEBUG("guild", "CMSG_GUILD_SET_GUILD_MASTER [{}]: Target: {}", GetPlayerInfo(), packet.NewMasterName);
593
595 if (Guild* guild = GetPlayer()->GetGuild())
596 guild->HandleSetNewGuildMaster(this, packet.NewMasterName, false);
597}
598
600{
601 if (Guild* guild = GetPlayer()->GetGuild())
602 guild->HandleSetAchievementTracking(this, packet.AchievementIDs.data(), packet.AchievementIDs.data() + packet.AchievementIDs.size());
603}
604
606{
607 if (Guild* guild = GetPlayer()->GetGuild())
608 guild->HandleGetAchievementMembers(this, uint32(getAchievementMembers.AchievementID));
609}
uint8_t uint8
Definition Define.h:156
#define UI64LIT(N)
Definition Define.h:139
uint32_t uint32
Definition Define.h:154
#define sGuildMgr
Definition GuildMgr.h:76
@ GUILD_BANK_MAX_TABS
Definition Guild.h:54
@ GUILD_COMMAND_VIEW_TAB
Definition Guild.h:144
@ GUILD_COMMAND_GET_ROSTER
Definition Guild.h:134
@ ERR_GUILD_PLAYER_NOT_IN_GUILD
Definition Guild.h:161
GuildRankOrder
Definition Guild.h:100
GuildRankId
Definition Guild.h:96
@ ERR_GUILDEMBLEM_INVALIDVENDOR
Definition Guild.h:226
@ ERR_GUILDEMBLEM_INVALID_TABARD_COLORS
Definition Guild.h:222
@ ERR_GUILDEMBLEM_NOGUILD
Definition Guild.h:223
@ EQUIP_ERR_INTERNAL_BAG_ERROR
Definition ItemDefines.h:67
#define TC_LOG_DEBUG(filterType__, message__,...)
Definition Log.h:181
bool normalizePlayerName(std::string &name)
@ PLAYER_FLAGS_AUTO_DECLINE_GUILD
Definition Player.h:547
#define INVENTORY_SLOT_BAG_0
Definition Player.h:723
@ GAMEOBJECT_TYPE_GUILD_BANK
@ SPELL_AURA_FEIGN_DEATH
@ UNIT_NPC_FLAG_TABARDDESIGNER
@ UNIT_NPC_FLAG_2_NONE
@ UNIT_STATE_DIED
Definition Unit.h:261
@ NULL_SLOT
Definition Unit.h:64
ObjectGuid const & GetGUID() const
Definition BaseEntity.h:163
uint32 GetStyle() const
Definition Guild.h:284
uint32 GetColor() const
Definition Guild.h:285
bool ValidateEmblemColors() const
Definition Guild.h:278
uint32 GetBackgroundColor() const
Definition Guild.h:288
uint32 GetBorderStyle() const
Definition Guild.h:286
void ReadPacket(WorldPackets::Guild::SaveGuildEmblem &packet)
Definition Guild.cpp:740
uint32 GetBorderColor() const
Definition Guild.h:287
Definition Guild.h:329
void SwapItemsWithInventory(Player *player, bool toChar, uint8 tabId, uint8 slotId, uint8 playerBag, uint8 playerSlotId, uint32 splitedAmount)
Definition Guild.cpp:3064
void SwapItems(Player *player, uint8 tabId, uint8 slotId, uint8 destTabId, uint8 destSlotId, uint32 splitedAmount)
Definition Guild.cpp:3050
static void SendCommandResult(WorldSession *session, GuildCommandType type, GuildCommandError errCode, std::string_view param="")
Definition Guild.cpp:64
void HandleSetRankInfo(WorldSession *session, GuildRankId rankId, std::string_view name, uint32 rights, uint32 moneyPerDay, std::array< GuildBankRightsAndSlots, GUILD_BANK_MAX_TABS > const &rightsAndSlots)
Definition Guild.cpp:1617
static void SendSaveEmblemResult(WorldSession *session, GuildEmblemError errCode)
Definition Guild.cpp:76
void SendBankList(WorldSession *session, uint8 tabId, bool fullUpdate) const
Definition Guild.cpp:3631
std::string ToString() const
void SendEquipError(InventoryResult msg, Item const *item1=nullptr, Item const *item2=nullptr, uint32 itemId=0) const
Definition Player.cpp:13130
void SetPlayerFlag(PlayerFlags flags)
Definition Player.h:2911
void RemovePlayerFlag(PlayerFlags flags)
Definition Player.h:2912
GameObject * GetGameObjectIfCanInteractWith(ObjectGuid const &guid) const
Definition Player.cpp:1960
Guild * GetGuild()
Definition Player.cpp:30511
static bool IsInventoryPos(uint16 pos)
Definition Player.h:1486
ObjectGuid::LowType GetGuildId() const
Definition Player.h:2164
void SetGuildIdInvited(ObjectGuid::LowType GuildId)
Definition Player.h:2163
std::unique_ptr< PlayerMenu > PlayerTalkClass
Definition Player.h:2570
void RemoveAurasByType(AuraType auraType, std::function< bool(AuraApplication const *)> const &check, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:3955
size_type size() const
String< 15, Strings::NoHyperlinks > Name
String< 500, Strings::NoHyperlinks > TabText
String< 15, Strings::NoHyperlinks > Name
std::vector< GuildRewardItem > RewardItems
WorldPacket const * Write() override
String< 31, Strings::NoHyperlinks > Note
bool IsPublic
0 == Officer, 1 == Public
String< 15, Strings::NoHyperlinks > RankName
uint32 TabWithdrawItemLimit[GUILD_BANK_MAX_TABS]
String< 500, Strings::NoHyperlinks > InfoText
String< 255, Strings::NoHyperlinks > MotdText
WorldPacket const * Write() override
void HandleGuildBankLogQuery(WorldPackets::Guild::GuildBankLogQuery &packet)
void HandleGuildAddRank(WorldPackets::Guild::GuildAddRank &packet)
void HandleDeclineGuildInvites(WorldPackets::Guild::DeclineGuildInvites &packet)
void HandleGuildBankSetTabText(WorldPackets::Guild::GuildBankSetTabText &packet)
void HandleGuildGetAchievementMembers(WorldPackets::Achievement::GuildGetAchievementMembers &getAchievementMembers)
void HandleGuildBankTextQuery(WorldPackets::Guild::GuildBankTextQuery &packet)
void HandleMergeGuildBankItemWithGuildBankItem(WorldPackets::Guild::MergeGuildBankItemWithGuildBankItem &mergeGuildBankItemWithGuildBankItem)
void HandleGuildUpdateMotdText(WorldPackets::Guild::GuildUpdateMotdText &packet)
void HandleGuildSetAchievementTracking(WorldPackets::Guild::GuildSetAchievementTracking &packet)
void HandleGuildBankWithdrawMoney(WorldPackets::Guild::GuildBankWithdrawMoney &packet)
void HandleGuildSetGuildMaster(WorldPackets::Guild::GuildSetGuildMaster &packet)
void HandleGuildUpdateInfoText(WorldPackets::Guild::GuildUpdateInfoText &packet)
void HandleGuildDeleteRank(WorldPackets::Guild::GuildDeleteRank &packet)
void HandleGuildBankActivate(WorldPackets::Guild::GuildBankActivate &packet)
void HandleGuildInviteByName(WorldPackets::Guild::GuildInviteByName &packet)
void HandleSwapGuildBankItemWithGuildBankItem(WorldPackets::Guild::SwapGuildBankItemWithGuildBankItem &swapGuildBankItemWithGuildBankItem)
void HandleGuildPromoteMember(WorldPackets::Guild::GuildPromoteMember &promote)
void HandleSwapItemWithGuildBankItem(WorldPackets::Guild::SwapItemWithGuildBankItem &swapItemWithGuildBankItem)
void HandleGuildRequestPartyState(WorldPackets::Guild::RequestGuildPartyState &packet)
void HandleGuildAssignRank(WorldPackets::Guild::GuildAssignMemberRank &packet)
std::string GetPlayerInfo() const
void HandleStoreGuildBankItem(WorldPackets::Guild::StoreGuildBankItem &storeGuildBankItem)
void HandleGuildSetMemberNote(WorldPackets::Guild::GuildSetMemberNote &packet)
void HandleGuildQueryNews(WorldPackets::Guild::GuildQueryNews &newsQuery)
Player * GetPlayer() const
void HandleGuildDelete(WorldPackets::Guild::GuildDelete &packet)
void HandleSplitGuildBankItemToInventory(WorldPackets::Guild::SplitGuildBankItemToInventory &splitGuildBankItemToInventory)
void HandleGuildAcceptInvite(WorldPackets::Guild::AcceptGuildInvite &invite)
void HandleGuildBankUpdateTab(WorldPackets::Guild::GuildBankUpdateTab &packet)
void HandleGuildBankQueryTab(WorldPackets::Guild::GuildBankQueryTab &packet)
void HandleGuildGetRanks(WorldPackets::Guild::GuildGetRanks &packet)
void HandleGuildBankDepositMoney(WorldPackets::Guild::GuildBankDepositMoney &packet)
void HandleGuildChallengeUpdateRequest(WorldPackets::Guild::GuildChallengeUpdateRequest &packet)
void HandleGuildBankBuyTab(WorldPackets::Guild::GuildBankBuyTab &packet)
void HandleRequestGuildRewardsList(WorldPackets::Guild::RequestGuildRewardsList &packet)
void HandleGuildGetRoster(WorldPackets::Guild::GuildGetRoster &packet)
void HandleGuildDemoteMember(WorldPackets::Guild::GuildDemoteMember &demote)
void HandleSplitGuildBankItem(WorldPackets::Guild::SplitGuildBankItem &splitGuildBankItem)
void SendPacket(WorldPacket const *packet, bool forced=false)
Send a packet to the client.
void HandleGuildQueryOpcode(WorldPackets::Guild::QueryGuildInfo &query)
void HandleGuildBankMoneyWithdrawn(WorldPackets::Guild::GuildBankRemainingWithdrawMoneyQuery &packet)
void HandleGuildEventLogQuery(WorldPackets::Guild::GuildEventLogQuery &packet)
Player * _player
void HandleGuildNewsUpdateSticky(WorldPackets::Guild::GuildNewsUpdateSticky &packet)
void HandleGuildShiftRank(WorldPackets::Guild::GuildShiftRank &shiftRank)
void HandleGuildLeave(WorldPackets::Guild::GuildLeave &leave)
void HandleGuildReplaceGuildMaster(WorldPackets::Guild::GuildReplaceGuildMaster &replaceGuildMaster)
void HandleSplitItemToGuildBank(WorldPackets::Guild::SplitItemToGuildBank &splitItemToGuildBank)
void HandleAutoStoreGuildBankItem(WorldPackets::Guild::AutoStoreGuildBankItem &autoStoreGuildBankItem)
void HandleMoveGuildBankItem(WorldPackets::Guild::MoveGuildBankItem &moveGuildBankItem)
void HandleGuildSetRankPermissions(WorldPackets::Guild::GuildSetRankPermissions &packet)
void HandleSaveGuildEmblem(WorldPackets::Guild::SaveGuildEmblem &packet)
void HandleGuildPermissionsQuery(WorldPackets::Guild::GuildPermissionsQuery &packet)
void HandleGuildOfficerRemoveMember(WorldPackets::Guild::GuildOfficerRemoveMember &packet)
void HandleGuildDeclineInvitation(WorldPackets::Guild::GuildDeclineInvitation &decline)
void HandleMergeItemWithGuildBankItem(WorldPackets::Guild::MergeItemWithGuildBankItem &mergeItemWithGuildBankItem)
void HandleMergeGuildBankItemWithItem(WorldPackets::Guild::MergeGuildBankItemWithItem &mergeGuildBankItemWithItem)
void HandleAutoGuildBankItem(WorldPackets::Guild::AutoGuildBankItem &autoGuildBankItem)
SystemTimePoint GetSystemTime()
Current chrono system_clock time point.
Definition GameTime.cpp:62
std::vector< uint32 > AchievementsRequired
Trinity::RaceMask< std::array< int32, 2 > > RaceMask