TrinityCore
Loading...
Searching...
No Matches
WorldSession.h
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#ifndef __WORLDSESSION_H
19#define __WORLDSESSION_H
20
21#include "Common.h"
23#include "AuthDefines.h"
24#include "ClientBuildInfo.h"
25#include "DatabaseEnvFwd.h"
26#include "Duration.h"
27#include "IteratorPair.h"
28#include "LockedQueue.h"
29#include "ObjectGuid.h"
30#include "Opcodes.h"
31#include "Optional.h"
32#include "RaceMask.h"
33#include "SharedDefines.h"
34#include <boost/circular_buffer_fwd.hpp>
35#include <array>
36#include <atomic>
37#include <map>
38#include <memory>
39#include <unordered_map>
40
42class CollectionMgr;
43class Creature;
44class InstanceLock;
45class Item;
47class MessageBuffer;
48class Player;
49class Unit;
50class WorldPacket;
51class WorldSession;
52class WorldSocket;
53struct AuctionPosting;
56struct DeclinedName;
57struct ItemTemplate;
58struct Loot;
59struct MovementInfo;
60struct Petition;
61struct Position;
62enum class AuctionCommand : int8;
63enum class AuctionResult : int8;
64enum class PlayerInteractionType : int32;
66enum class StableResult : uint8;
67enum class TabardVendorType : int32;
68
69namespace Battlenet
70{
71class Account;
72}
73
74namespace BattlePets
75{
76 class BattlePetMgr;
77}
78
79namespace lfg
80{
81 struct LfgJoinResultData;
82 struct LfgPlayerBoot;
83 struct LfgProposal;
84 struct LfgQueueStatusData;
85 struct LfgPlayerRewardData;
86 struct LfgRoleCheck;
87 struct LfgUpdateData;
89}
90
91namespace rbac
92{
93class RBACData;
94}
95
96namespace UF
97{
99}
100
101namespace WorldPackets
102{
103 namespace Achievement
104 {
105 class GuildSetFocusedAchievement;
106 class GuildGetAchievementMembers;
107 }
108
109 namespace AdventureJournal
110 {
111 class AdventureJournalOpenQuest;
112 class AdventureJournalUpdateSuggestions;
113 }
114
115 namespace AdventureMap
116 {
117 class CheckIsAdventureMapPoiValid;
118 class AdventureMapStartQuest;
119 }
120
121 namespace AreaTrigger
122 {
123 class AreaTrigger;
124 class UpdateAreaTriggerVisual;
125 }
126
127 namespace Artifact
128 {
129 class ArtifactAddPower;
130 class ArtifactSetAppearance;
131 class ConfirmArtifactRespec;
132 }
133
134 namespace AuctionHouse
135 {
136 class AuctionBrowseQuery;
137 class AuctionCancelCommoditiesPurchase;
138 class AuctionConfirmCommoditiesPurchase;
139 class AuctionGetCommodityQuote;
140 class AuctionHelloRequest;
141 class AuctionListBiddedItems;
142 class AuctionListBucketsByBucketKeys;
143 class AuctionListItemsByBucketKey;
144 class AuctionListItemsByItemID;
145 class AuctionListOwnedItems;
146 class AuctionPlaceBid;
147 class AuctionRemoveItem;
148 class AuctionReplicateItems;
149 class AuctionSellCommodity;
150 class AuctionSellItem;
151 class AuctionSetFavoriteItem;
152 }
153
154 namespace Auth
155 {
156 enum class ConnectToSerial : uint32;
157 class QueuedMessagesEnd;
158 }
159
160 namespace Azerite
161 {
162 class AzeriteEmpoweredItemSelectPower;
163 class AzeriteEmpoweredItemViewed;
164 class AzeriteEssenceUnlockMilestone;
165 class AzeriteEssenceActivateEssence;
166 }
167
168 namespace Bank
169 {
170 class AutoBankItem;
171 class AutoStoreBankItem;
172 class BuyBankTab;
173 class UpdateBankTabSettings;
174 class AutoDepositCharacterBank;
175 class BankerActivate;
176 }
177
178 namespace Battleground
179 {
180 class AreaSpiritHealerQuery;
181 class AreaSpiritHealerQueue;
182 class HearthAndResurrect;
183 class PVPLogDataRequest;
184 class BattlemasterJoin;
185 class BattlemasterJoinArena;
186 class BattlefieldLeave;
187 class BattlefieldPort;
188 class BattlefieldListRequest;
189 class GetPVPOptionsEnabled;
190 class RequestBattlefieldStatus;
191 class ReportPvPPlayerAFK;
192 class RequestPVPRewards;
193 class RequestRatedPvpInfo;
194 }
195
196 namespace Battlenet
197 {
198 class ChangeRealmTicket;
199 class Request;
200 }
201
202 namespace BattlePet
203 {
204 class BattlePetRequestJournal;
205 class BattlePetRequestJournalLock;
206 class BattlePetSetBattleSlot;
207 class BattlePetModifyName;
208 class QueryBattlePetName;
209 class BattlePetDeletePet;
210 class BattlePetSetFlags;
211 class BattlePetClearFanfare;
212 class BattlePetSummon;
213 class BattlePetUpdateNotify;
214 class CageBattlePet;
215 }
216
217 namespace BlackMarket
218 {
219 class BlackMarketOpen;
220 class BlackMarketRequestItems;
221 class BlackMarketBidOnItem;
222 class BlackMarketOutbid;
223 }
224
225 namespace Calendar
226 {
227 class CalendarAddEvent;
228 class CalendarCopyEvent;
229 class CalendarInvite;
230 class CalendarModeratorStatusQuery;
231 class CalendarRSVP;
232 class CalendarEventSignUp;
233 class CalendarStatus;
234 class CalendarGetCalendar;
235 class CalendarGetEvent;
236 class CalendarGetNumPending;
237 class CalendarCommunityInviteRequest;
238 class CalendarRemoveEvent;
239 class CalendarRemoveInvite;
240 class CalendarUpdateEvent;
241 class SetSavedInstanceExtend;
242 class CalendarComplain;
243 }
244
245 namespace Character
246 {
247 struct CharacterCreateInfo;
248 struct CharacterRenameInfo;
249 struct CharCustomizeInfo;
250 struct CharRaceOrFactionChangeInfo;
251 struct CharacterUndeleteInfo;
252
253 class AlterApperance;
254 class EnumCharacters;
255 class CreateCharacter;
256 class CharDelete;
257 class CharacterRenameRequest;
258 class CharCustomize;
259 class CharRaceOrFactionChange;
260 class CheckCharacterNameAvailability;
261 class GenerateRandomCharacterName;
262 class GetUndeleteCharacterCooldownStatus;
263 class ReorderCharacters;
264 class UndeleteCharacter;
265 class PlayerLogin;
266 class LogoutRequest;
267 class LogoutCancel;
268 class LoadingScreenNotify;
269 class SetActionBarToggles;
270 class RequestPlayedTime;
271 class SetTitle;
272 class SetFactionAtWar;
273 class SetFactionNotAtWar;
274 class SetFactionInactive;
275 class SetWatchedFaction;
276 class SetPlayerDeclinedNames;
277 class SavePersonalEmblem;
278
279 enum class LoginFailureReason : uint8;
280 }
281
282 namespace ClientConfig
283 {
284 class RequestAccountData;
285 class UserClientUpdateAccountData;
286 class SetAdvancedCombatLogging;
287 }
288
289 namespace Channel
290 {
291 class ChannelCommand;
292 class ChannelPlayerCommand;
293 class ChannelPassword;
294 class JoinChannel;
295 class LeaveChannel;
296 }
297
298 namespace Chat
299 {
300 class ChatMessage;
301 class ChatMessageWhisper;
302 class ChatMessageChannel;
303 class ChatAddonMessage;
304 class ChatAddonMessageTargeted;
305 class ChatMessageAFK;
306 class ChatMessageDND;
307 class ChatMessageEmote;
308 class CTextEmote;
309 class EmoteClient;
310 class ChatRegisterAddonPrefixes;
311 class ChatUnregisterAllAddonPrefixes;
312 class ChatReportIgnored;
313 class CanLocalWhisperTargetRequest;
314 class UpdateAADCStatus;
315 }
316
317 namespace Collections
318 {
319 class CollectionItemSetFavorite;
320 }
321
322 namespace Combat
323 {
324 class AttackSwing;
325 class AttackStop;
326 class SetSheathed;
327 }
328
329 namespace Duel
330 {
331 class CanDuel;
332 class DuelResponse;
333 }
334
335 namespace EquipmentSet
336 {
337 class SaveEquipmentSet;
338 class DeleteEquipmentSet;
339 class UseEquipmentSet;
340 }
341
342 namespace GameObject
343 {
344 class GameObjReportUse;
345 class GameObjUse;
346 }
347
348 namespace Garrison
349 {
350 class GetGarrisonInfo;
351 class GarrisonPurchaseBuilding;
352 class GarrisonCancelConstruction;
353 class GarrisonRequestBlueprintAndSpecializationData;
354 class GarrisonGetMapData;
355 }
356
357 namespace Guild
358 {
359 class QueryGuildInfo;
360 class GuildInviteByName;
361 class AcceptGuildInvite;
362 class DeclineGuildInvites;
363 class GuildDeclineInvitation;
364 class GuildGetRoster;
365 class GuildPromoteMember;
366 class GuildDemoteMember;
367 class GuildOfficerRemoveMember;
368 class GuildAssignMemberRank;
369 class GuildLeave;
370 class GuildDelete;
371 class GuildUpdateMotdText;
372 class GuildGetRanks;
373 class GuildAddRank;
374 class GuildDeleteRank;
375 class GuildShiftRank;
376 class GuildUpdateInfoText;
377 class GuildSetMemberNote;
378 class GuildEventLogQuery;
379 class GuildBankRemainingWithdrawMoneyQuery;
380 class GuildPermissionsQuery;
381 class GuildSetRankPermissions;
382 class GuildBankActivate;
383 class GuildBankQueryTab;
384 class GuildBankDepositMoney;
385 class GuildBankWithdrawMoney;
386 class AutoGuildBankItem;
387 class StoreGuildBankItem;
388 class SwapItemWithGuildBankItem;
389 class SwapGuildBankItemWithGuildBankItem;
390 class MoveGuildBankItem;
391 class MergeItemWithGuildBankItem;
392 class SplitItemToGuildBank;
393 class MergeGuildBankItemWithItem;
394 class SplitGuildBankItemToInventory;
395 class AutoStoreGuildBankItem;
396 class MergeGuildBankItemWithGuildBankItem;
397 class SplitGuildBankItem;
398 class GuildBankBuyTab;
399 class GuildBankUpdateTab;
400 class GuildBankLogQuery;
401 class GuildBankTextQuery;
402 class GuildBankSetTabText;
403 class RequestGuildPartyState;
404 class RequestGuildRewardsList;
405 class GuildQueryNews;
406 class GuildNewsUpdateSticky;
407 class GuildReplaceGuildMaster;
408 class GuildSetGuildMaster;
409 class GuildChallengeUpdateRequest;
410 class SaveGuildEmblem;
411 class GuildSetAchievementTracking;
412 }
413
414 namespace Hotfix
415 {
416 class DBQueryBulk;
417 class HotfixRequest;
418 }
419
420 namespace Housing
421 {
422 class DeclineNeighborhoodInvites;
423 }
424
425 namespace Inspect
426 {
427 class Inspect;
428 class QueryInspectAchievements;
429 }
430
431 namespace Instance
432 {
433 class InstanceInfo;
434 class InstanceLockResponse;
435 class ResetInstances;
436 }
437
438 namespace Item
439 {
440 class AutoEquipItem;
441 class AutoEquipItemSlot;
442 class AutoStoreBagItem;
443 class BuyItem;
444 class BuyBackItem;
445 class DestroyItem;
446 class GetItemPurchaseData;
447 class ItemPurchaseRefund;
448 class RepairItem;
449 class ReadItem;
450 class SellItem;
451 class SellAllJunkItems;
452 class SplitItem;
453 class SwapInvItem;
454 class SwapItem;
455 class WrapItem;
456 class CancelTempEnchantment;
457 class UseCritterItem;
458 class SocketGems;
459 class SortAccountBankBags;
460 class SortBags;
461 class SortBankBags;
462 struct ItemInstance;
463 class RemoveNewItem;
464 class ChangeBagSlotFlag;
465 class SetBackpackAutosortDisabled;
466 class SetBackpackSellJunkDisabled;
467 class SetBankAutosortDisabled;
468 }
469
470 namespace LFG
471 {
472 class DFJoin;
473 class DFLeave;
474 class DFProposalResponse;
475 class DFSetRoles;
476 class DFBootPlayerVote;
477 class DFTeleport;
478 class DFGetSystemInfo;
479 class DFGetJoinStatus;
480 }
481
482 namespace Loot
483 {
484 class LootUnit;
485 class LootItem;
486 class MasterLootItem;
487 class LootRelease;
488 class LootMoney;
489 class LootRoll;
490 class SetLootSpecialization;
491 }
492
493 namespace Mail
494 {
495 class MailCreateTextItem;
496 class MailDelete;
497 class MailGetList;
498 class MailMarkAsRead;
499 class MailQueryNextMailTime;
500 class MailReturnToSender;
501 class MailTakeItem;
502 class MailTakeMoney;
503 class SendMail;
504 }
505
506 namespace Misc
507 {
508 class SetSelection;
509 class ViolenceLevel;
510 class TimeSyncResponse;
511 class TutorialSetFlag;
512 class SetDungeonDifficulty;
513 class SetRaidDifficulty;
514 class PortGraveyard;
515 class ReclaimCorpse;
516 class RepopRequest;
517 class RequestCemeteryList;
518 class ResurrectResponse;
519 class StandStateChange;
520 class ServerTimeOffsetRequest;
521 class RandomRollClient;
522 class ObjectUpdateFailed;
523 class ObjectUpdateRescued;
524 class CompleteCinematic;
525 class CompleteMovie;
526 class NextCinematicCamera;
527 class FarSight;
528 class LoadCUFProfiles;
529 class SaveCUFProfiles;
530 class OpeningCinematic;
531 class TogglePvP;
532 class SetPvP;
533 class SetWarMode;
534 class MountSpecial;
535 class SetTaxiBenchmarkMode;
536 class MountSetFavorite;
537 class CloseInteraction;
538 class ConversationLineStarted;
539 class RequestLatestSplashScreen;
540 class QueryCountdownTimer;
541 class SetCurrencyFlags;
542 }
543
544 namespace Movement
545 {
546 class ClientPlayerMovement;
547 class WorldPortResponse;
548 class MoveTeleportAck;
549 class MovementAckMessage;
550 class MovementSpeedAck;
551 class MovementSpeedRangeAck;
552 class MoveKnockBackAck;
553 class SetActiveMover;
554 class MoveSetCollisionHeightAck;
555 class MoveTimeSkipped;
556 class SummonResponse;
557 class MoveSplineDone;
558 class SuspendTokenResponse;
559 class MoveApplyMovementForceAck;
560 class MoveRemoveMovementForceAck;
561 class MoveApplyInertiaAck;
562 class MoveRemoveInertiaAck;
563 class MoveForceGravityModifierChangeAck;
564 class MoveInitActiveMoverComplete;
565 }
566
567 namespace NPC
568 {
569 class Hello;
570 class GossipSelectOption;
571 class SpiritHealerActivate;
572 class TabardVendorActivate;
573 class TrainerBuySpell;
574 class RequestStabledPets;
575 class SetPetSlot;
576 }
577
578 namespace Party
579 {
580 class PartyCommandResult;
581 class PartyInviteClient;
582 class PartyInvite;
583 class PartyInviteResponse;
584 class PartyUninvite;
585 class GroupDecline;
586 class RequestPartyMemberStats;
587 class PartyMemberFullState;
588 class SetPartyLeader;
589 class SetPartyAssignment;
590 class SetRole;
591 class RoleChangedInform;
592 class SetLootMethod;
593 class LeaveGroup;
594 class MinimapPingClient;
595 class MinimapPing;
596 class UpdateRaidTarget;
597 class SendRaidTargetUpdateSingle;
598 class SendRaidTargetUpdateAll;
599 class ConvertRaid;
600 class RequestPartyJoinUpdates;
601 class SetAssistantLeader;
602 class DoReadyCheck;
603 class ReadyCheckStarted;
604 class ReadyCheckResponseClient;
605 class ReadyCheckResponse;
606 class ReadyCheckCompleted;
607 class RequestRaidInfo;
608 class OptOutOfLoot;
609 class InitiateRolePoll;
610 class RolePollInform;
611 class GroupNewLeader;
612 class PartyUpdate;
613 class SetEveryoneIsAssistant;
614 class ChangeSubGroup;
615 class SwapSubGroups;
616 class RaidMarkersChanged;
617 class ClearRaidMarker;
618 class SetRestrictPingsToAssistants;
619 class SendPingUnit;
620 class SendPingWorldPoint;
621 class SendPingCooldown;
622 }
623
624 namespace Pet
625 {
626 class DismissCritter;
627 class RequestPetInfo;
628 class PetAbandon;
629 class PetAbandonByNumber;
630 class PetStopAttack;
631 class PetSpellAutocast;
632 class PetRename;
633 class PetAction;
634 class PetCancelAura;
635 class PetSetAction;
636 }
637
638 namespace Petition
639 {
640 class DeclinePetition;
641 class OfferPetition;
642 class PetitionBuy;
643 class PetitionRenameGuild;
644 class PetitionShowList;
645 class PetitionShowSignatures;
646 class QueryPetition;
647 class SignPetition;
648 class TurnInPetition;
649 }
650
651 namespace Query
652 {
653 class QueryCreature;
654 struct NameCacheLookupResult;
655 class QueryPlayerNames;
656 class QueryPageText;
657 class QueryNPCText;
658 class QueryGameObject;
659 class QueryCorpseLocationFromClient;
660 class QueryCorpseTransport;
661 class QueryTime;
662 class QueryPetName;
663 class QuestPOIQuery;
664 class QueryQuestCompletionNPCs;
665 class QueryRealmName;
666 class ItemTextQuery;
667 class QueryTreasurePicker;
668 }
669
670 namespace Quest
671 {
672 class QuestConfirmAccept;
673 class QuestGiverStatusQuery;
674 class QuestGiverStatusMultipleQuery;
675 class QuestGiverHello;
676 class QueryQuestInfo;
677 class QuestGiverChooseReward;
678 class QuestGiverCloseQuest;
679 class QuestGiverCompleteQuest;
680 class QuestGiverRequestReward;
681 class QuestGiverQueryQuest;
682 class QuestGiverAcceptQuest;
683 class QuestLogRemoveQuest;
684 class QuestPushResult;
685 class PushQuestToParty;
686 class RequestWorldQuestUpdate;
687 class ChoiceResponse;
688 class UiMapQuestLinesRequest;
689 class SpawnTrackingUpdate;
690 }
691
692 namespace RaF
693 {
694 class AcceptLevelGrant;
695 class GrantLevel;
696 }
697
698 namespace Toy
699 {
700 class AccountToyUpdate;
701 class AddToy;
702 class UseToy;
703 class ToyClearFanfare;
704 }
705
706 namespace Scenario
707 {
708 class QueryScenarioPOI;
709 }
710
711 namespace Scenes
712 {
713 class SceneTriggerEvent;
714 class ScenePlaybackComplete;
715 class ScenePlaybackCanceled;
716 }
717
718 namespace Social
719 {
720 class AddFriend;
721 class AddIgnore;
722 class DelFriend;
723 class DelIgnore;
724 class SendContactList;
725 class SetContactNotes;
726 class SocialContractRequest;
727 }
728
729 namespace Spells
730 {
731 class CancelAura;
732 class CancelAutoRepeatSpell;
733 class CancelChannelling;
734 class CancelGrowthAura;
735 class CancelMountAura;
736 class CancelModSpeedNoControlAuras;
737 class CancelQueuedSpell;
738 class PetCancelAura;
739 class CancelCast;
740 class CastSpell;
741 class PetCastSpell;
742 class UseItem;
743 class OpenItem;
744 class SetActionButton;
745 class UnlearnSkill;
746 class SelfRes;
747 class GetMirrorImageData;
748 class SpellClick;
749 class MissileTrajectoryCollision;
750 class UpdateMissileTrajectory;
751 class UpdateAuraVisual;
752 class TradeSkillSetFavorite;
753 class KeyboundOverride;
754 class SetEmpowerMinHoldStagePercent;
755 class SpellEmpowerRelease;
756 class SpellEmpowerRestart;
757 }
758
759 namespace Talent
760 {
761 class LearnTalents;
762 class LearnPvpTalents;
763 class ConfirmRespecWipe;
764 }
765
766 namespace Taxi
767 {
768 class ShowTaxiNodes;
769 class TaxiNodeStatusQuery;
770 class EnableTaxiNode;
771 class TaxiQueryAvailableNodes;
772 class ActivateTaxi;
773 class TaxiRequestEarlyLanding;
774 }
775
776 namespace Ticket
777 {
778 class GMTicketGetSystemStatus;
779 class GMTicketGetCaseStatus;
780 class SubmitUserFeedback;
781 class SupportTicketSubmitComplaint;
782 class BugReport;
783 class Complaint;
784 }
785
786 namespace Token
787 {
788 class CommerceTokenGetLog;
789 class CommerceTokenGetMarketPrice;
790 }
791
792 namespace Totem
793 {
794 class TotemDestroyed;
795 }
796
797 namespace Trade
798 {
799 class AcceptTrade;
800 class BeginTrade;
801 class BusyTrade;
802 class CancelTrade;
803 class ClearTradeItem;
804 class IgnoreTrade;
805 class InitiateTrade;
806 class SetTradeCurrency;
807 class SetTradeGold;
808 class SetTradeItem;
809 class UnacceptTrade;
810 class TradeStatus;
811 }
812
813 namespace Traits
814 {
815 class TraitsCommitConfig;
816 class ClassTalentsRequestNewConfig;
817 class ClassTalentsRenameConfig;
818 class ClassTalentsDeleteConfig;
819 class ClassTalentsSetStarterBuildActive;
820 class ClassTalentsSetUsesSharedActionBars;
821 }
822
823 namespace Transmogrification
824 {
825 class TransmogrifyItems;
826 class TransmogOutfitNew;
827 class TransmogOutfitUpdateInfo;
828 class TransmogOutfitUpdateSituations;
829 class TransmogOutfitUpdateSlots;
830 }
831
832 namespace Vehicle
833 {
834 class MoveDismissVehicle;
835 class RequestVehiclePrevSeat;
836 class RequestVehicleNextSeat;
837 class MoveChangeVehicleSeats;
838 class RequestVehicleSwitchSeat;
839 class RideVehicleInteract;
840 class EjectPassenger;
841 class RequestVehicleExit;
842 class MoveSetVehicleRecIdAck;
843 }
844
845 namespace Who
846 {
847 class WhoIsRequest;
848 class WhoRequestPkt;
849 }
850
851 class Null;
852}
853
854namespace google
855{
856 namespace protobuf
857 {
858 class Message;
859 }
860}
861
862namespace pb = google::protobuf;
863
887
888#define NUM_ACCOUNT_DATA_TYPES 20
889
890#define ALL_ACCOUNT_DATA_CACHE_MASK 0x000FFFFFu
891#define GLOBAL_CACHE_MASK 0x000BA515u
892#define PER_CHARACTER_CACHE_MASK 0x00045AEAu
893
895{
896 time_t Time = 0;
897 std::string Data;
898};
899
907
916
922
929
930//class to deal with packet processing
931//allows to determine if next packet is safe to be processed
933{
934public:
935 explicit PacketFilter(WorldSession* pSession) : m_pSession(pSession) { }
936 virtual ~PacketFilter() { }
937
938 virtual bool Process(WorldPacket* /*packet*/) { return true; }
939 virtual bool ProcessUnsafe() const { return true; }
940
941protected:
943
944private:
945 PacketFilter(PacketFilter const& right) = delete;
946 PacketFilter& operator=(PacketFilter const& right) = delete;
947};
948
949//process only thread-safe packets in Map::Update()
951{
952public:
953 explicit MapSessionFilter(WorldSession* pSession) : PacketFilter(pSession) { }
955
956 virtual bool Process(WorldPacket* packet) override;
957 //in Map::Update() we do not process player logout!
958 virtual bool ProcessUnsafe() const override { return false; }
959};
960
961//class used to filer only thread-unsafe packets from queue
962//in order to update only be used in World::UpdateSessions()
964{
965public:
966 explicit WorldSessionFilter(WorldSession* pSession) : PacketFilter(pSession) { }
968
969 bool Process(WorldPacket* packet) override;
970 bool ProcessUnsafe() const override { return true; }
971};
972
978
981{
982 public:
983 WorldSession(uint32 id, std::string&& name, uint32 battlenetAccountId, std::string&& battlenetAccountEmail,
984 std::shared_ptr<WorldSocket>&& sock, AccountTypes sec, uint8 expansion, time_t mute_time, std::string&& os, Minutes timezoneOffset,
985 uint32 build, ClientBuild::VariantId clientBuildVariant, LocaleConstant locale, uint32 recruiter, bool isARecruiter);
987
988 bool PlayerLoading() const { return !m_playerLoading.IsEmpty(); }
989 bool PlayerLogout() const { return m_playerLogout; }
990 bool PlayerLogoutWithSave() const { return m_playerLogout && m_playerSave; }
991 bool PlayerRecentlyLoggedOut() const { return m_playerRecentlyLogout; }
992 bool PlayerDisconnected() const;
993
994 bool IsAddonRegistered(std::string_view prefix) const;
995
996 void SendPacket(WorldPacket const* packet, bool forced = false);
997
998 void SendNotification(char const* format, ...) ATTR_PRINTF(2, 3);
999 void SendNotification(uint32 stringId, ...);
1000 void SendPetNameInvalid(uint32 error, std::string const& name, Optional<DeclinedName> const& declinedName);
1001 void SendPartyResult(PartyOperation operation, std::string const& member, PartyResult res, uint32 val = 0);
1002 void SendQueryTimeResponse();
1003
1004 void SendAuthResponse(uint32 code, bool queued, uint32 queuePos = 0);
1005 void SendClientCacheVersion(uint32 version);
1006 void SendAvailableHotfixes();
1007
1008 void InitializeSession();
1009 void InitializeSessionCallback(LoginDatabaseQueryHolder const& holder, CharacterDatabaseQueryHolder const& realmHolder);
1010
1011 rbac::RBACData* GetRBACData() const;
1012 bool HasPermission(uint32 permissionId);
1013 void LoadPermissions();
1014 QueryCallback LoadPermissionsAsync();
1015 void InvalidateRBACData(); // Used to force LoadPermissions at next HasPermission check
1016
1017 AccountTypes GetSecurity() const { return _security; }
1018 uint32 GetAccountId() const { return _accountId; }
1019 ObjectGuid GetAccountGUID() const { return ObjectGuid::Create<HighGuid::WowAccount>(GetAccountId()); }
1020 std::string const& GetAccountName() const { return _accountName; }
1021 uint32 GetBattlenetAccountId() const;
1022 ObjectGuid GetBattlenetAccountGUID() const;
1023 Battlenet::Account& GetBattlenetAccount() const { return *_battlenetAccount; }
1024 Player* GetPlayer() const { return _player; }
1025 std::string const& GetPlayerName() const;
1026 std::string GetPlayerInfo() const;
1027
1028 void SetSecurity(AccountTypes security) { _security = security; }
1029 std::string const& GetRemoteAddress() const { return m_Address; }
1030 void SetPlayer(Player* player);
1031 uint8 GetAccountExpansion() const { return m_accountExpansion; }
1032 uint8 GetExpansion() const { return m_expansion; }
1033 std::string const& GetOS() const { return _os; }
1034 uint32 GetClientBuild() const { return _clientBuild; }
1035 ClientBuild::VariantId const& GetClientBuildVariant() const { return _clientBuildVariant; }
1036
1037 bool CanAccessAlliedRaces() const;
1038
1040 void SetInQueue(bool state) { m_inQueue = state; }
1041
1043 bool isLogingOut() const { return _logoutTime || m_playerLogout; }
1044
1046 void SetLogoutStartTime(time_t requestTime)
1047 {
1048 _logoutTime = requestTime;
1049 }
1050
1052 bool ShouldLogOut(time_t currTime) const
1053 {
1054 return (_logoutTime > 0 && currTime >= _logoutTime + 20);
1055 }
1056
1057 void LogoutPlayer(bool save);
1058 void KickPlayer(std::string_view reason);
1059 // Returns true if all contained hyperlinks are valid
1060 // May kick player on false depending on world config (handler should abort)
1061 bool ValidateHyperlinksAndMaybeKick(std::string const& str);
1062 // Returns true if the message contains no hyperlinks
1063 // May kick player on false depending on world config (handler should abort)
1064 bool DisallowHyperlinksAndMaybeKick(std::string const& str);
1065
1066 void QueuePacket(WorldPacket&& new_packet);
1067 bool Update(uint32 diff, PacketFilter& updater);
1068
1070 void SendAuthWaitQueue(uint32 position);
1071
1072 void SendSetTimeZoneInformation();
1073 void SendFeatureSystemStatus();
1074 void SendFeatureSystemStatusGlueScreen();
1075
1076 void BuildNameQueryData(ObjectGuid guid, WorldPackets::Query::NameCacheLookupResult& lookupData);
1077
1078 void SendTrainerList(Creature* npc, uint32 trainerId);
1079 void SendListInventory(ObjectGuid guid);
1080 void SendShowBank(ObjectGuid guid, PlayerInteractionType interactionType);
1081 bool CanOpenMailBox(ObjectGuid guid);
1082 void SendShowMailBox(ObjectGuid guid);
1083 void SendTabardVendorActivate(ObjectGuid guid, TabardVendorType type);
1084 void SendSpiritResurrect();
1085 void SendBindPoint(Creature* npc);
1086 void SendOpenTransmogrifier(ObjectGuid const& guid);
1087
1088 void SendTradeStatus(WorldPackets::Trade::TradeStatus& status);
1089 void SendUpdateTrade(bool trader_data = true);
1090 void SendCancelTrade(TradeStatus status);
1091
1092 void SendPetitionQueryOpcode(ObjectGuid petitionguid);
1093
1094 // Pet
1095 void SendQueryPetNameResponse(ObjectGuid guid);
1096 void SendPetStableResult(StableResult result);
1097 bool CheckStableMaster(ObjectGuid guid);
1098
1099 // Account Data
1100 AccountData const* GetAccountData(AccountDataType type) const { return &_accountData[type]; }
1101 void SetAccountData(AccountDataType type, time_t time, std::string const& data);
1102 void SendAccountDataTimes(ObjectGuid playerGuid, uint32 mask);
1103 void LoadAccountData(PreparedQueryResult result, uint32 mask);
1104
1105 void LoadTutorialsData(PreparedQueryResult result);
1106 void SendTutorialsData();
1107 void SaveTutorialsData(CharacterDatabaseTransaction trans);
1108 uint32 GetTutorialInt(uint8 index) const { return _tutorials[index]; }
1109 void SetTutorialInt(uint8 index, uint32 value)
1110 {
1111 if (_tutorials[index] != value)
1112 {
1113 _tutorials[index] = value;
1114 _tutorialsChanged |= TUTORIALS_FLAG_CHANGED;
1115 }
1116 }
1117 void LoadInstanceTimeRestrictions(PreparedQueryResult result);
1118 void SaveInstanceTimeRestrictions(CharacterDatabaseTransaction trans);
1119 bool UpdateAndCheckInstanceCount(uint32 instanceId);
1120 void AddInstanceEnterTime(uint32 instanceId, SystemTimePoint enterTime);
1121 void UpdateInstanceEnterTimes();
1122
1124 {
1125 struct Element
1126 {
1129 union
1130 {
1133 };
1134 };
1135
1136 struct Flag
1137 {
1140 };
1141
1142 std::vector<Element> Elements;
1143 std::vector<Flag> Flags;
1144 };
1145
1146 void LoadPlayerDataAccount(PreparedQueryResult const& elementsResult, PreparedQueryResult const& flagsResult);
1147 void SavePlayerDataAccount(LoginDatabaseTransaction const& transaction);
1148
1149 void SetPlayerDataElementAccount(uint32 dataElementId, float value);
1150 void SetPlayerDataElementAccount(uint32 dataElementId, int64 value);
1151 void SetPlayerDataFlagAccount(uint32 dataFlagId, bool on);
1152
1153 PlayerDataAccount const& GetPlayerDataAccount() const { return _playerDataAccount; }
1154
1155 // Auction
1156 void SendAuctionHello(ObjectGuid guid, Unit const* unit);
1157
1168 void SendAuctionCommandResult(uint32 auctionId, AuctionCommand command, AuctionResult errorCode, Milliseconds delayForNextAction, InventoryResult bagResult = InventoryResult(0));
1169 void SendAuctionClosedNotification(AuctionPosting const* auction, float mailDelay, bool sold);
1170 void SendAuctionOwnerBidNotification(AuctionPosting const* auction);
1171
1172 // Black Market
1173 void SendBlackMarketOpenResult(ObjectGuid guid, Creature* auctioneer);
1174 void SendBlackMarketBidOnItemResult(int32 result, int32 marketId, WorldPackets::Item::ItemInstance& item);
1175 void SendBlackMarketWonNotification(BlackMarketEntry const* entry, Item const* item);
1176 void SendBlackMarketOutbidNotification(BlackMarketTemplate const* templ);
1177
1178 //Item Enchantment
1179 void SendEnchantmentLog(ObjectGuid owner, ObjectGuid caster, ObjectGuid itemGuid, uint32 itemId, uint32 enchantId, uint32 enchantSlot);
1180 void SendItemEnchantTimeUpdate(ObjectGuid Playerguid, ObjectGuid Itemguid, uint32 slot, uint32 Duration);
1181
1182 //Taxi
1183 void SendTaxiStatus(ObjectGuid guid);
1184 void SendTaxiMenu(Creature* unit);
1185 bool SendLearnNewTaxiNode(Creature* unit);
1186 void SendDiscoverNewTaxiNode(uint32 nodeid);
1187
1188 // Guild/Arena Team
1189 void SendPetitionShowList(ObjectGuid guid);
1190
1191 void DoLootRelease(Loot* loot);
1192 void DoLootReleaseAll();
1193
1194 // Account mute time
1195 bool CanSpeak() const;
1197
1198 // Locales
1199 LocaleConstant GetSessionDbcLocale() const { return m_sessionDbcLocale; }
1200 LocaleConstant GetSessionDbLocaleIndex() const { return m_sessionDbLocaleIndex; }
1201
1202 Minutes GetTimezoneOffset() const { return _timezoneOffset; }
1203
1204 char const* GetTrinityString(uint32 entry) const;
1205
1206 uint32 GetLatency() const { return m_latency; }
1207 void SetLatency(uint32 latency) { m_latency = latency; }
1208
1209 std::atomic<time_t> m_timeOutTime;
1210
1211 void ResetTimeOutTime(bool onlyActive);
1212
1213 bool IsConnectionIdle() const;
1214
1215 // Recruit-A-Friend Handling
1216 uint32 GetRecruiterId() const { return recruiterId; }
1217 bool IsARecruiter() const { return isRecruiter; }
1218
1219 // Time Synchronisation
1220 void ResetTimeSync();
1221 void SendTimeSync();
1222 void RegisterTimeSync(uint32 counter);
1223 uint32 AdjustClientMovementTime(uint32 time) const;
1224
1225 static constexpr uint32 SPECIAL_INIT_ACTIVE_MOVER_TIME_SYNC_COUNTER = 0xFFFFFFFF;
1226 static constexpr uint32 SPECIAL_RESUME_COMMS_TIME_SYNC_COUNTER = 0xFFFFFFFE;
1227
1228 // Packets cooldown
1229 time_t GetCalendarEventCreationCooldown() const { return _calendarEventCreationCooldown; }
1230 void SetCalendarEventCreationCooldown(time_t cooldown) { _calendarEventCreationCooldown = cooldown; }
1231
1232 // Battle Pets
1233 BattlePets::BattlePetMgr* GetBattlePetMgr() const { return _battlePetMgr.get(); }
1234
1235 CollectionMgr* GetCollectionMgr() const { return _collectionMgr.get(); }
1236
1237 public: // opcodes handlers
1238
1239 void Handle_NULL(WorldPackets::Null& null); // not used
1240 void Handle_EarlyProccess(WorldPackets::Null& null); // just mark packets processed in WorldSocket::ReadDataHandler
1241 void LogUnprocessedTail(WorldPacket const* packet);
1242
1243 void HandleCharEnum(CharacterDatabaseQueryHolder const& holder);
1244 void HandleCharEnumOpcode(WorldPackets::Character::EnumCharacters& enumCharacters);
1245 void HandleCharUndeleteEnumOpcode(WorldPackets::Character::EnumCharacters& enumCharacters);
1246 void HandleCharDeleteOpcode(WorldPackets::Character::CharDelete& charDelete);
1247 void HandleCharCreateOpcode(WorldPackets::Character::CreateCharacter& charCreate);
1248 void HandlePlayerLoginOpcode(WorldPackets::Character::PlayerLogin& playerLogin);
1249
1250 void SendConnectToInstance(WorldPackets::Auth::ConnectToSerial serial);
1251 void HandleContinuePlayerLogin();
1252 void AbortLogin(WorldPackets::Character::LoginFailureReason reason);
1253 void HandleLoadScreenOpcode(WorldPackets::Character::LoadingScreenNotify& loadingScreenNotify);
1254 void HandlePlayerLogin(LoginQueryHolder const& holder);
1255 void HandleCheckCharacterNameAvailability(WorldPackets::Character::CheckCharacterNameAvailability& checkCharacterNameAvailability);
1256 void HandleCharRenameOpcode(WorldPackets::Character::CharacterRenameRequest& request);
1257 void HandleCharRenameCallBack(std::shared_ptr<WorldPackets::Character::CharacterRenameInfo> renameInfo, PreparedQueryResult result);
1258 void HandleSetPlayerDeclinedNames(WorldPackets::Character::SetPlayerDeclinedNames& packet);
1259 void HandleAlterAppearance(WorldPackets::Character::AlterApperance& packet);
1260 void HandleCharCustomizeOpcode(WorldPackets::Character::CharCustomize& packet);
1261 void HandleCharCustomizeCallback(std::shared_ptr<WorldPackets::Character::CharCustomizeInfo> customizeInfo, PreparedQueryResult result);
1262 void HandleCharRaceOrFactionChangeOpcode(WorldPackets::Character::CharRaceOrFactionChange& packet);
1263 void HandleCharRaceOrFactionChangeCallback(std::shared_ptr<WorldPackets::Character::CharRaceOrFactionChangeInfo> factionChangeInfo, PreparedQueryResult result);
1264 void HandleRandomizeCharNameOpcode(WorldPackets::Character::GenerateRandomCharacterName& packet);
1265 void HandleReorderCharacters(WorldPackets::Character::ReorderCharacters& reorderChars);
1266 void HandleOpeningCinematic(WorldPackets::Misc::OpeningCinematic& packet);
1267 void HandleGetUndeleteCooldownStatus(WorldPackets::Character::GetUndeleteCharacterCooldownStatus& /*getCooldown*/);
1268 void HandleUndeleteCooldownStatusCallback(PreparedQueryResult result);
1269 void HandleCharUndeleteOpcode(WorldPackets::Character::UndeleteCharacter& undeleteInfo);
1270 void HandleSavePersonalEmblem(WorldPackets::Character::SavePersonalEmblem const& savePersonalEmblem);
1271 bool MeetsChrCustomizationReq(ChrCustomizationReqEntry const* req, Races race, Classes playerClass,
1272 bool checkRequiredDependentChoices, Trinity::IteratorPair<UF::ChrCustomizationChoice const*> selectedChoices) const;
1273 bool ValidateAppearance(Races race, Classes playerClass, Gender gender,
1274 Trinity::IteratorPair<UF::ChrCustomizationChoice const*> customizations); // customizations must be sorted
1275
1276 void SendCharCreate(ResponseCodes result, ObjectGuid const& guid = ObjectGuid::Empty);
1277 void SendCharDelete(ResponseCodes result);
1278 void SendCharRename(ResponseCodes result, WorldPackets::Character::CharacterRenameInfo const* renameInfo);
1279 void SendCharCustomize(ResponseCodes result, WorldPackets::Character::CharCustomizeInfo const* customizeInfo);
1280 void SendCharFactionChange(ResponseCodes result, WorldPackets::Character::CharRaceOrFactionChangeInfo const* factionChangeInfo);
1281 void SendSetPlayerDeclinedNamesResult(DeclinedNameResult result, ObjectGuid guid);
1282 void SendUndeleteCooldownStatusResponse(uint32 currentCooldown, uint32 maxCooldown);
1283 void SendUndeleteCharacterResponse(CharacterUndeleteResult result, WorldPackets::Character::CharacterUndeleteInfo const* undeleteInfo);
1284
1285 // played time
1286 void HandlePlayedTime(WorldPackets::Character::RequestPlayedTime& packet);
1287
1288 // cemetery/graveyard related
1289 void HandlePortGraveyard(WorldPackets::Misc::PortGraveyard& packet);
1290 void HandleRequestCemeteryList(WorldPackets::Misc::RequestCemeteryList& packet);
1291
1292 // Inspect
1293 void HandleInspectOpcode(WorldPackets::Inspect::Inspect& inspect);
1294 void HandleQueryInspectAchievements(WorldPackets::Inspect::QueryInspectAchievements& inspect);
1295
1296 void HandleMountSpecialAnimOpcode(WorldPackets::Misc::MountSpecial& mountSpecial);
1297
1298 // repair
1299 void HandleRepairItemOpcode(WorldPackets::Item::RepairItem& packet);
1300
1301 // Knockback
1302 void HandleMoveKnockBackAck(WorldPackets::Movement::MoveKnockBackAck& movementAck);
1303
1304 void HandleMoveTeleportAck(WorldPackets::Movement::MoveTeleportAck& packet);
1305 void HandleForceSpeedChangeAck(WorldPackets::Movement::MovementSpeedAck& packet);
1306 void HandleSetAdvFlyingSpeedAck(WorldPackets::Movement::MovementSpeedAck& speedAck);
1307 void HandleSetAdvFlyingSpeedRangeAck(WorldPackets::Movement::MovementSpeedRangeAck& speedRangeAck);
1308 void HandleSetCollisionHeightAck(WorldPackets::Movement::MoveSetCollisionHeightAck& setCollisionHeightAck);
1309
1310 // Movement forces
1311 void HandleMoveApplyMovementForceAck(WorldPackets::Movement::MoveApplyMovementForceAck& moveApplyMovementForceAck);
1312 void HandleMoveRemoveMovementForceAck(WorldPackets::Movement::MoveRemoveMovementForceAck& moveRemoveMovementForceAck);
1313 void HandleMoveSetModMovementForceMagnitudeAck(WorldPackets::Movement::MovementSpeedAck& setModMovementForceMagnitudeAck);
1314
1315 // Inertia
1316 void HandleMoveApplyInertiaAck(WorldPackets::Movement::MoveApplyInertiaAck& moveApplyInertiaAck);
1317 void HandleMoveRemoveInertiaAck(WorldPackets::Movement::MoveRemoveInertiaAck& moveRemoveInertiaAck);
1318
1319 void HandleMoveForceGravityModifierChangeAck(WorldPackets::Movement::MoveForceGravityModifierChangeAck& moveForceGravityModifierChangeAck);
1320
1321 void HandleRepopRequest(WorldPackets::Misc::RepopRequest& packet);
1322 void HandleAutostoreLootItemOpcode(WorldPackets::Loot::LootItem& packet);
1323 void HandleLootMoneyOpcode(WorldPackets::Loot::LootMoney& packet);
1324 void HandleLootOpcode(WorldPackets::Loot::LootUnit& packet);
1325 void HandleLootReleaseOpcode(WorldPackets::Loot::LootRelease& packet);
1326 void HandleLootMasterGiveOpcode(WorldPackets::Loot::MasterLootItem& masterLootItem);
1327 void HandleSetLootSpecialization(WorldPackets::Loot::SetLootSpecialization& packet);
1328
1329 void HandleWhoOpcode(WorldPackets::Who::WhoRequestPkt& whoRequest);
1330 void HandleLogoutRequestOpcode(WorldPackets::Character::LogoutRequest& logoutRequest);
1331 void HandleLogoutCancelOpcode(WorldPackets::Character::LogoutCancel& logoutCancel);
1332
1333 // GM Ticket opcodes
1334 void HandleGMTicketGetCaseStatusOpcode(WorldPackets::Ticket::GMTicketGetCaseStatus& packet);
1335 void HandleGMTicketSystemStatusOpcode(WorldPackets::Ticket::GMTicketGetSystemStatus& packet);
1336 void HandleSubmitUserFeedback(WorldPackets::Ticket::SubmitUserFeedback& userFeedback);
1337 void HandleSupportTicketSubmitComplaint(WorldPackets::Ticket::SupportTicketSubmitComplaint& packet);
1338 void HandleBugReportOpcode(WorldPackets::Ticket::BugReport& bugReport);
1339 void HandleComplaint(WorldPackets::Ticket::Complaint& packet);
1340
1341 void HandleTogglePvP(WorldPackets::Misc::TogglePvP& packet);
1342 void HandleSetPvP(WorldPackets::Misc::SetPvP& packet);
1343 void HandleSetWarMode(WorldPackets::Misc::SetWarMode& packet);
1344
1345 void HandleSetSelectionOpcode(WorldPackets::Misc::SetSelection& packet);
1346 void HandleStandStateChangeOpcode(WorldPackets::Misc::StandStateChange& packet);
1347 void HandleEmoteOpcode(WorldPackets::Chat::EmoteClient& packet);
1348
1349 // Social
1350 void HandleContactListOpcode(WorldPackets::Social::SendContactList& packet);
1351 void HandleAddFriendOpcode(WorldPackets::Social::AddFriend& packet);
1352 void HandleDelFriendOpcode(WorldPackets::Social::DelFriend& packet);
1353 void HandleAddIgnoreOpcode(WorldPackets::Social::AddIgnore& packet);
1354 void HandleDelIgnoreOpcode(WorldPackets::Social::DelIgnore& packet);
1355 void HandleSetContactNotesOpcode(WorldPackets::Social::SetContactNotes& packet);
1356
1357 void HandleAreaTriggerOpcode(WorldPackets::AreaTrigger::AreaTrigger& packet);
1358 void HandleUpdateAreaTriggerVisual(WorldPackets::AreaTrigger::UpdateAreaTriggerVisual const& updateAreaTriggerVisual);
1359
1360 void HandleSetFactionAtWar(WorldPackets::Character::SetFactionAtWar& packet);
1361 void HandleSetFactionNotAtWar(WorldPackets::Character::SetFactionNotAtWar& packet);
1362 void HandleSetWatchedFactionOpcode(WorldPackets::Character::SetWatchedFaction& packet);
1363 void HandleSetFactionInactiveOpcode(WorldPackets::Character::SetFactionInactive& packet);
1364
1365 void HandleUpdateAccountData(WorldPackets::ClientConfig::UserClientUpdateAccountData& packet);
1366 void HandleRequestAccountData(WorldPackets::ClientConfig::RequestAccountData& request);
1367 void HandleSetAdvancedCombatLogging(WorldPackets::ClientConfig::SetAdvancedCombatLogging& setAdvancedCombatLogging);
1368 void HandleSetActionButtonOpcode(WorldPackets::Spells::SetActionButton& packet);
1369
1370 void HandleGameObjectUseOpcode(WorldPackets::GameObject::GameObjUse& packet);
1371 void HandleGameobjectReportUse(WorldPackets::GameObject::GameObjReportUse& packet);
1372
1373 void HandleQueryPlayerNames(WorldPackets::Query::QueryPlayerNames& queryPlayerNames);
1374 void HandleQueryTimeOpcode(WorldPackets::Query::QueryTime& queryTime);
1375 void HandleCreatureQuery(WorldPackets::Query::QueryCreature& packet);
1376 void HandleGameObjectQueryOpcode(WorldPackets::Query::QueryGameObject& packet);
1377
1378 void HandleDBQueryBulk(WorldPackets::Hotfix::DBQueryBulk& dbQuery);
1379 void HandleHotfixRequest(WorldPackets::Hotfix::HotfixRequest& hotfixQuery);
1380
1381 void HandleMoveWorldportAckOpcode(WorldPackets::Movement::WorldPortResponse& packet);
1382 void HandleMoveWorldportAck(); // for server-side calls
1383 void HandleSuspendTokenResponse(WorldPackets::Movement::SuspendTokenResponse& suspendTokenResponse);
1384
1385 // Validates that correct unit is moved, coords are in valid range and movement flags
1386 bool ValidateMovementInfo(Unit const* mover, MovementInfo* mi) const;
1387
1388 void HandleMovementOpcodes(WorldPackets::Movement::ClientPlayerMovement& packet);
1389 void HandleMovementOpcode(OpcodeClient opcode, MovementInfo& movementInfo);
1390 void HandleSetActiveMoverOpcode(WorldPackets::Movement::SetActiveMover& packet);
1391 void HandleMoveDismissVehicle(WorldPackets::Vehicle::MoveDismissVehicle& moveDismissVehicle);
1392 void HandleRequestVehiclePrevSeat(WorldPackets::Vehicle::RequestVehiclePrevSeat& requestVehiclePrevSeat);
1393 void HandleRequestVehicleNextSeat(WorldPackets::Vehicle::RequestVehicleNextSeat& requestVehicleNextSeat);
1394 void HandleMoveChangeVehicleSeats(WorldPackets::Vehicle::MoveChangeVehicleSeats& moveChangeVehicleSeats);
1395 void HandleRequestVehicleSwitchSeat(WorldPackets::Vehicle::RequestVehicleSwitchSeat& requestVehicleSwitchSeat);
1396 void HandleRideVehicleInteract(WorldPackets::Vehicle::RideVehicleInteract& rideVehicleInteract);
1397 void HandleEjectPassenger(WorldPackets::Vehicle::EjectPassenger& ejectPassenger);
1398 void HandleRequestVehicleExit(WorldPackets::Vehicle::RequestVehicleExit& requestVehicleExit);
1399 void HandleMoveSetVehicleRecAck(WorldPackets::Vehicle::MoveSetVehicleRecIdAck& setVehicleRecIdAck);
1400 void HandleMoveTimeSkippedOpcode(WorldPackets::Movement::MoveTimeSkipped& moveTimeSkipped);
1401 void HandleMovementAckMessage(WorldPackets::Movement::MovementAckMessage& movementAck);
1402 void HandleMoveInitActiveMoverComplete(WorldPackets::Movement::MoveInitActiveMoverComplete const& moveInitActiveMoverComplete);
1403
1404 void HandleRequestRaidInfoOpcode(WorldPackets::Party::RequestRaidInfo& packet);
1405
1406 void HandlePartyInviteOpcode(WorldPackets::Party::PartyInviteClient& packet);
1407 void HandlePartyInviteResponseOpcode(WorldPackets::Party::PartyInviteResponse& packet);
1408 void HandlePartyUninviteOpcode(WorldPackets::Party::PartyUninvite& packet);
1409 void HandleSetPartyLeaderOpcode(WorldPackets::Party::SetPartyLeader& packet);
1410 void HandleSetRoleOpcode(WorldPackets::Party::SetRole& packet);
1411 void HandleLeaveGroupOpcode(WorldPackets::Party::LeaveGroup& packet);
1412 void HandleOptOutOfLootOpcode(WorldPackets::Party::OptOutOfLoot& packet);
1413 void HandleSetLootMethodOpcode(WorldPackets::Party::SetLootMethod& packet);
1414 void HandleLootRoll(WorldPackets::Loot::LootRoll& packet);
1415 void HandleRequestPartyMemberStatsOpcode(WorldPackets::Party::RequestPartyMemberStats& packet);
1416 void HandleUpdateRaidTargetOpcode(WorldPackets::Party::UpdateRaidTarget& packet);
1417 void HandleDoReadyCheckOpcode(WorldPackets::Party::DoReadyCheck& packet);
1418 void HandleReadyCheckResponseOpcode(WorldPackets::Party::ReadyCheckResponseClient& packet);
1419 void HandleConvertRaidOpcode(WorldPackets::Party::ConvertRaid& packet);
1420 void HandleRequestPartyJoinUpdates(WorldPackets::Party::RequestPartyJoinUpdates& packet);
1421 void HandleChangeSubGroupOpcode(WorldPackets::Party::ChangeSubGroup& packet);
1422 void HandleSwapSubGroupsOpcode(WorldPackets::Party::SwapSubGroups& packet);
1423 void HandleSetAssistantLeaderOpcode(WorldPackets::Party::SetAssistantLeader& packet);
1424 void HandleSetPartyAssignment(WorldPackets::Party::SetPartyAssignment& packet);
1425 void HandleInitiateRolePoll(WorldPackets::Party::InitiateRolePoll& packet);
1426 void HandleSetEveryoneIsAssistant(WorldPackets::Party::SetEveryoneIsAssistant& packet);
1427 void HandleClearRaidMarker(WorldPackets::Party::ClearRaidMarker& packet);
1428 void HandleSetRestrictPingsToAssistants(WorldPackets::Party::SetRestrictPingsToAssistants const& setRestrictPingsToAssistants);
1429 void HandleSendPingUnit(WorldPackets::Party::SendPingUnit const& pingUnit);
1430 void HandleSendPingWorldPoint(WorldPackets::Party::SendPingWorldPoint const& pingWorldPoint);
1431 void HandleSendPingCooldown(WorldPackets::Party::SendPingCooldown const& pingCooldown);
1432
1433 void HandlePetitionBuy(WorldPackets::Petition::PetitionBuy& packet);
1434 void HandlePetitionShowSignatures(WorldPackets::Petition::PetitionShowSignatures& packet);
1435 void SendPetitionSigns(Petition const* petition, Player* sendTo);
1436 void HandleQueryPetition(WorldPackets::Petition::QueryPetition& packet);
1437 void HandlePetitionRenameGuild(WorldPackets::Petition::PetitionRenameGuild& packet);
1438 void HandleSignPetition(WorldPackets::Petition::SignPetition& packet);
1439 void HandleDeclinePetition(WorldPackets::Petition::DeclinePetition& packet);
1440 void HandleOfferPetition(WorldPackets::Petition::OfferPetition& packet);
1441 void HandleTurnInPetition(WorldPackets::Petition::TurnInPetition& packet);
1442
1443 void HandleGuildQueryOpcode(WorldPackets::Guild::QueryGuildInfo& query);
1444 void HandleGuildInviteByName(WorldPackets::Guild::GuildInviteByName& packet);
1445 void HandleGuildOfficerRemoveMember(WorldPackets::Guild::GuildOfficerRemoveMember& packet);
1446 void HandleGuildAcceptInvite(WorldPackets::Guild::AcceptGuildInvite& invite);
1447 void HandleGuildDeclineInvitation(WorldPackets::Guild::GuildDeclineInvitation& decline);
1448 void HandleGuildEventLogQuery(WorldPackets::Guild::GuildEventLogQuery& packet);
1449 void HandleGuildGetRoster(WorldPackets::Guild::GuildGetRoster& packet);
1450 void HandleRequestGuildRewardsList(WorldPackets::Guild::RequestGuildRewardsList& packet);
1451 void HandleGuildPromoteMember(WorldPackets::Guild::GuildPromoteMember& promote);
1452 void HandleGuildDemoteMember(WorldPackets::Guild::GuildDemoteMember& demote);
1453 void HandleGuildAssignRank(WorldPackets::Guild::GuildAssignMemberRank& packet);
1454 void HandleGuildLeave(WorldPackets::Guild::GuildLeave& leave);
1455 void HandleGuildDelete(WorldPackets::Guild::GuildDelete& packet);
1456 void HandleGuildReplaceGuildMaster(WorldPackets::Guild::GuildReplaceGuildMaster& replaceGuildMaster);
1457 void HandleGuildSetAchievementTracking(WorldPackets::Guild::GuildSetAchievementTracking& packet);
1458 void HandleGuildGetAchievementMembers(WorldPackets::Achievement::GuildGetAchievementMembers& getAchievementMembers);
1459 void HandleGuildSetGuildMaster(WorldPackets::Guild::GuildSetGuildMaster& packet);
1460 void HandleGuildUpdateMotdText(WorldPackets::Guild::GuildUpdateMotdText& packet);
1461 void HandleGuildNewsUpdateSticky(WorldPackets::Guild::GuildNewsUpdateSticky& packet);
1462 void HandleGuildSetMemberNote(WorldPackets::Guild::GuildSetMemberNote& packet);
1463 void HandleGuildGetRanks(WorldPackets::Guild::GuildGetRanks& packet);
1464 void HandleGuildQueryNews(WorldPackets::Guild::GuildQueryNews& newsQuery);
1465 void HandleGuildSetRankPermissions(WorldPackets::Guild::GuildSetRankPermissions& packet);
1466 void HandleGuildAddRank(WorldPackets::Guild::GuildAddRank& packet);
1467 void HandleGuildDeleteRank(WorldPackets::Guild::GuildDeleteRank& packet);
1468 void HandleGuildShiftRank(WorldPackets::Guild::GuildShiftRank& shiftRank);
1469 void HandleGuildUpdateInfoText(WorldPackets::Guild::GuildUpdateInfoText& packet);
1470 void HandleSaveGuildEmblem(WorldPackets::Guild::SaveGuildEmblem& packet);
1471 void HandleGuildRequestPartyState(WorldPackets::Guild::RequestGuildPartyState& packet);
1472 void HandleGuildChallengeUpdateRequest(WorldPackets::Guild::GuildChallengeUpdateRequest& packet);
1473 void HandleDeclineGuildInvites(WorldPackets::Guild::DeclineGuildInvites& packet);
1474
1475 void HandleDeclineNeighborhoodInvites(WorldPackets::Housing::DeclineNeighborhoodInvites const& declineNeighborhoodInvites);
1476
1477 void HandleEnableTaxiNodeOpcode(WorldPackets::Taxi::EnableTaxiNode& enableTaxiNode);
1478 void HandleTaxiNodeStatusQueryOpcode(WorldPackets::Taxi::TaxiNodeStatusQuery& taxiNodeStatusQuery);
1479 void HandleTaxiQueryAvailableNodesOpcode(WorldPackets::Taxi::TaxiQueryAvailableNodes& taxiQueryAvailableNodes);
1480 void HandleActivateTaxiOpcode(WorldPackets::Taxi::ActivateTaxi& activateTaxi);
1481 void HandleMoveSplineDoneOpcode(WorldPackets::Movement::MoveSplineDone& moveSplineDone);
1482 void SendActivateTaxiReply(ActivateTaxiReply reply);
1483 void HandleTaxiRequestEarlyLanding(WorldPackets::Taxi::TaxiRequestEarlyLanding& taxiRequestEarlyLanding);
1484
1485 void HandleTabardVendorActivateOpcode(WorldPackets::NPC::TabardVendorActivate const& tabardVendorActivate);
1486 void HandleBankerActivateOpcode(WorldPackets::Bank::BankerActivate const& bankerActivate);
1487 void HandleTrainerListOpcode(WorldPackets::NPC::Hello& packet);
1488 void HandleTrainerBuySpellOpcode(WorldPackets::NPC::TrainerBuySpell& packet);
1489 void HandlePetitionShowList(WorldPackets::Petition::PetitionShowList& packet);
1490 void HandleGossipHelloOpcode(WorldPackets::NPC::Hello& packet);
1491 void HandleGossipSelectOptionOpcode(WorldPackets::NPC::GossipSelectOption& packet);
1492 void HandleSpiritHealerActivate(WorldPackets::NPC::SpiritHealerActivate& packet);
1493 void HandleNpcTextQueryOpcode(WorldPackets::Query::QueryNPCText& packet);
1494 void HandleBinderActivateOpcode(WorldPackets::NPC::Hello& packet);
1495 void HandleRequestStabledPets(WorldPackets::NPC::RequestStabledPets& packet);
1496 void HandleSetPetSlot(WorldPackets::NPC::SetPetSlot& setPetSlot);
1497
1498 void HandleCanDuel(WorldPackets::Duel::CanDuel& packet);
1499 void HandleDuelResponseOpcode(WorldPackets::Duel::DuelResponse& duelResponse);
1500 void HandleDuelAccepted(ObjectGuid arbiterGuid);
1501 void HandleDuelCancelled();
1502
1503 void HandleAcceptTradeOpcode(WorldPackets::Trade::AcceptTrade& acceptTrade);
1504 void HandleBeginTradeOpcode(WorldPackets::Trade::BeginTrade& beginTrade);
1505 void HandleBusyTradeOpcode(WorldPackets::Trade::BusyTrade& busyTrade);
1506 void HandleCancelTradeOpcode(WorldPackets::Trade::CancelTrade& cancelTrade);
1507 void HandleClearTradeItemOpcode(WorldPackets::Trade::ClearTradeItem& clearTradeItem);
1508 void HandleIgnoreTradeOpcode(WorldPackets::Trade::IgnoreTrade& ignoreTrade);
1509 void HandleInitiateTradeOpcode(WorldPackets::Trade::InitiateTrade& initiateTrade);
1510 void HandleSetTradeCurrencyOpcode(WorldPackets::Trade::SetTradeCurrency& setTradeCurrency);
1511 void HandleSetTradeGoldOpcode(WorldPackets::Trade::SetTradeGold& setTradeGold);
1512 void HandleSetTradeItemOpcode(WorldPackets::Trade::SetTradeItem& setTradeItem);
1513 void HandleUnacceptTradeOpcode(WorldPackets::Trade::UnacceptTrade& unacceptTrade);
1514
1515 void HandleAuctionBrowseQuery(WorldPackets::AuctionHouse::AuctionBrowseQuery& browseQuery);
1516 void HandleAuctionCancelCommoditiesPurchase(WorldPackets::AuctionHouse::AuctionCancelCommoditiesPurchase& cancelCommoditiesPurchase);
1517 void HandleAuctionConfirmCommoditiesPurchase(WorldPackets::AuctionHouse::AuctionConfirmCommoditiesPurchase& confirmCommoditiesPurchase);
1518 void HandleAuctionGetCommodityQuote(WorldPackets::AuctionHouse::AuctionGetCommodityQuote& startCommoditiesPurchase);
1519 void HandleAuctionHelloOpcode(WorldPackets::AuctionHouse::AuctionHelloRequest& hello);
1520 void HandleAuctionListBiddedItems(WorldPackets::AuctionHouse::AuctionListBiddedItems& listBiddedItems);
1521 void HandleAuctionListBucketsByBucketKeys(WorldPackets::AuctionHouse::AuctionListBucketsByBucketKeys& listBucketsByBucketKeys);
1522 void HandleAuctionListItemsByBucketKey(WorldPackets::AuctionHouse::AuctionListItemsByBucketKey& listItemsByBucketKey);
1523 void HandleAuctionListItemsByItemID(WorldPackets::AuctionHouse::AuctionListItemsByItemID& listItemsByItemID);
1524 void HandleAuctionListOwnedItems(WorldPackets::AuctionHouse::AuctionListOwnedItems& listOwnedItems);
1525 void HandleAuctionPlaceBid(WorldPackets::AuctionHouse::AuctionPlaceBid& placeBid);
1526 void HandleAuctionRemoveItem(WorldPackets::AuctionHouse::AuctionRemoveItem& removeItem);
1527 void HandleAuctionReplicateItems(WorldPackets::AuctionHouse::AuctionReplicateItems& replicateItems);
1528 void SendAuctionFavoriteList();
1529 void HandleAuctionSellCommodity(WorldPackets::AuctionHouse::AuctionSellCommodity& sellCommodity);
1530 void HandleAuctionSellItem(WorldPackets::AuctionHouse::AuctionSellItem& sellItem);
1531 void HandleAuctionSetFavoriteItem(WorldPackets::AuctionHouse::AuctionSetFavoriteItem& setFavoriteItem);
1532
1533 // Bank
1534 void HandleAutoBankItemOpcode(WorldPackets::Bank::AutoBankItem& packet);
1535 void HandleAutoStoreBankItemOpcode(WorldPackets::Bank::AutoStoreBankItem& packet);
1536 void HandleBuyBankTab(WorldPackets::Bank::BuyBankTab const& buyBankTab);
1537 void HandleUpdateBankTabSettings(WorldPackets::Bank::UpdateBankTabSettings const& updateBankTabSettings);
1538 void HandleAutoDepositCharacterBank(WorldPackets::Bank::AutoDepositCharacterBank const& autoDepositCharacterBank);
1539
1540 // Black Market
1541 void HandleBlackMarketOpen(WorldPackets::BlackMarket::BlackMarketOpen& blackMarketOpen);
1542 void HandleBlackMarketRequestItems(WorldPackets::BlackMarket::BlackMarketRequestItems& blackMarketRequestItems);
1543 void HandleBlackMarketBidOnItem(WorldPackets::BlackMarket::BlackMarketBidOnItem& blackMarketBidOnItem);
1544
1545 void HandleGetMailList(WorldPackets::Mail::MailGetList& getList);
1546 void HandleSendMail(WorldPackets::Mail::SendMail& sendMail);
1547 void HandleMailTakeMoney(WorldPackets::Mail::MailTakeMoney& takeMoney);
1548 void HandleMailTakeItem(WorldPackets::Mail::MailTakeItem& takeItem);
1549 void HandleMailMarkAsRead(WorldPackets::Mail::MailMarkAsRead& markAsRead);
1550 void HandleMailReturnToSender(WorldPackets::Mail::MailReturnToSender& returnToSender);
1551 void HandleMailDelete(WorldPackets::Mail::MailDelete& mailDelete);
1552 void HandleItemTextQuery(WorldPackets::Query::ItemTextQuery& itemTextQuery);
1553 void HandleMailCreateTextItem(WorldPackets::Mail::MailCreateTextItem& createTextItem);
1554 void HandleQueryNextMailTime(WorldPackets::Mail::MailQueryNextMailTime& queryNextMailTime);
1555
1556 void HandleSplitItemOpcode(WorldPackets::Item::SplitItem& splitItem);
1557 void HandleSwapInvItemOpcode(WorldPackets::Item::SwapInvItem& swapInvItem);
1558 void HandleDestroyItemOpcode(WorldPackets::Item::DestroyItem& destroyItem);
1559 void HandleAutoEquipItemOpcode(WorldPackets::Item::AutoEquipItem& autoEquipItem);
1560 void HandleSellItemOpcode(WorldPackets::Item::SellItem const& sellItem);
1561 void HandleSellAllJunkItems(WorldPackets::Item::SellAllJunkItems const& sellAllJunkItems);
1562 void HandleBuyItemOpcode(WorldPackets::Item::BuyItem& packet);
1563 void HandleListInventoryOpcode(WorldPackets::NPC::Hello& packet);
1564 void HandleAutoStoreBagItemOpcode(WorldPackets::Item::AutoStoreBagItem& packet);
1565 void HandleReadItem(WorldPackets::Item::ReadItem& readItem);
1566 void HandleAutoEquipItemSlotOpcode(WorldPackets::Item::AutoEquipItemSlot& autoEquipItemSlot);
1567 void HandleSwapItem(WorldPackets::Item::SwapItem& swapItem);
1568 void HandleBuybackItem(WorldPackets::Item::BuyBackItem& packet);
1569 void HandleWrapItem(WorldPackets::Item::WrapItem& packet);
1570 void HandleUseCritterItem(WorldPackets::Item::UseCritterItem& packet);
1571 void HandleChangeBagSlotFlag(WorldPackets::Item::ChangeBagSlotFlag const& changeBagSlotFlag);
1572 void HandleSetBackpackAutosortDisabled(WorldPackets::Item::SetBackpackAutosortDisabled const& setBackpackAutosortDisabled);
1573 void HandleSetBackpackSellJunkDisabled(WorldPackets::Item::SetBackpackSellJunkDisabled const& setBackpackSellJunkDisabled);
1574 void HandleSetBankAutosortDisabled(WorldPackets::Item::SetBankAutosortDisabled const& setBankAutosortDisabled);
1575
1576 void HandleAttackSwingOpcode(WorldPackets::Combat::AttackSwing& packet);
1577 void HandleAttackStopOpcode(WorldPackets::Combat::AttackStop& packet);
1578 void HandleSetSheathedOpcode(WorldPackets::Combat::SetSheathed& packet);
1579
1580 void HandleUseItemOpcode(WorldPackets::Spells::UseItem& packet);
1581 void HandleOpenItemOpcode(WorldPackets::Spells::OpenItem& packet);
1582 void HandleOpenWrappedItemCallback(uint16 pos, ObjectGuid itemGuid, PreparedQueryResult result);
1583 void HandleCastSpellOpcode(WorldPackets::Spells::CastSpell& castRequest);
1584 void HandleCancelCastOpcode(WorldPackets::Spells::CancelCast& packet);
1585 void HandleCancelAuraOpcode(WorldPackets::Spells::CancelAura& cancelAura);
1586 void HandleCancelGrowthAuraOpcode(WorldPackets::Spells::CancelGrowthAura& cancelGrowthAura);
1587 void HandleCancelMountAuraOpcode(WorldPackets::Spells::CancelMountAura& cancelMountAura);
1588 void HandleCancelModSpeedNoControlAuras(WorldPackets::Spells::CancelModSpeedNoControlAuras& cancelModSpeedNoControlAuras);
1589 void HandleCancelAutoRepeatSpellOpcode(WorldPackets::Spells::CancelAutoRepeatSpell& cancelAutoRepeatSpell);
1590 void HandleCancelQueuedSpellOpcode(WorldPackets::Spells::CancelQueuedSpell& cancelQueuedSpell);
1591 void HandleCancelChanneling(WorldPackets::Spells::CancelChannelling& cancelChanneling);
1592 void HandleSetEmpowerMinHoldStagePercent(WorldPackets::Spells::SetEmpowerMinHoldStagePercent const& setEmpowerMinHoldStagePercent);
1593 void HandleSpellEmpowerRelease(WorldPackets::Spells::SpellEmpowerRelease const& spellEmpowerRelease);
1594 void HandleSpellEmpowerRestart(WorldPackets::Spells::SpellEmpowerRestart const& spellEmpowerRestart);
1595 void HandleMissileTrajectoryCollision(WorldPackets::Spells::MissileTrajectoryCollision& packet);
1596 void HandleUpdateMissileTrajectory(WorldPackets::Spells::UpdateMissileTrajectory& packet);
1597 void HandleUpdateAuraVisual(WorldPackets::Spells::UpdateAuraVisual const& updateAuraVisual);
1598
1599 void HandleLearnPvpTalentsOpcode(WorldPackets::Talent::LearnPvpTalents& packet);
1600 void HandleLearnTalentsOpcode(WorldPackets::Talent::LearnTalents& packet);
1601 void HandleConfirmRespecWipeOpcode(WorldPackets::Talent::ConfirmRespecWipe& confirmRespecWipe);
1602 void HandleUnlearnSkillOpcode(WorldPackets::Spells::UnlearnSkill& packet);
1603 void HandleTradeSkillSetFavorite(WorldPackets::Spells::TradeSkillSetFavorite const& tradeSkillSetFavorite);
1604
1605 void HandleTraitsCommitConfig(WorldPackets::Traits::TraitsCommitConfig const& traitsCommitConfig);
1606 void HandleClassTalentsRequestNewConfig(WorldPackets::Traits::ClassTalentsRequestNewConfig& classTalentsRequestNewConfig);
1607 void HandleClassTalentsRenameConfig(WorldPackets::Traits::ClassTalentsRenameConfig& classTalentsRenameConfig);
1608 void HandleClassTalentsDeleteConfig(WorldPackets::Traits::ClassTalentsDeleteConfig const& classTalentsDeleteConfig);
1609 void HandleClassTalentsSetStarterBuildActive(WorldPackets::Traits::ClassTalentsSetStarterBuildActive const& classTalentsSetStarterBuildActive);
1610 void HandleClassTalentsSetUsesSharedActionBars(WorldPackets::Traits::ClassTalentsSetUsesSharedActionBars const& classTalentsSetUsesSharedActionBars);
1611
1612 void HandleQuestgiverStatusQueryOpcode(WorldPackets::Quest::QuestGiverStatusQuery& packet);
1613 void HandleQuestgiverStatusMultipleQuery(WorldPackets::Quest::QuestGiverStatusMultipleQuery& packet);
1614 void HandleQuestgiverHelloOpcode(WorldPackets::Quest::QuestGiverHello& packet);
1615 void HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestGiverAcceptQuest& packet);
1616 void HandleQuestgiverQueryQuestOpcode(WorldPackets::Quest::QuestGiverQueryQuest& packet);
1617 void HandleQuestgiverChooseRewardOpcode(WorldPackets::Quest::QuestGiverChooseReward& packet);
1618 void HandleQuestgiverRequestRewardOpcode(WorldPackets::Quest::QuestGiverRequestReward& packet);
1619 void HandleQuestQueryOpcode(WorldPackets::Quest::QueryQuestInfo& packet);
1620 void HandleQuestLogRemoveQuest(WorldPackets::Quest::QuestLogRemoveQuest& packet);
1621 void HandleQuestConfirmAccept(WorldPackets::Quest::QuestConfirmAccept& packet);
1622 void HandleQuestgiverCompleteQuest(WorldPackets::Quest::QuestGiverCompleteQuest& packet);
1623 void HandleQuestgiverCloseQuest(WorldPackets::Quest::QuestGiverCloseQuest& questGiverCloseQuest);
1624 void HandlePushQuestToParty(WorldPackets::Quest::PushQuestToParty& packet);
1625 void HandleQuestPushResult(WorldPackets::Quest::QuestPushResult& packet);
1626 void HandleRequestWorldQuestUpdate(WorldPackets::Quest::RequestWorldQuestUpdate& packet);
1627 void HandlePlayerChoiceResponse(WorldPackets::Quest::ChoiceResponse const& choiceResponse);
1628 void HandleUiMapQuestLinesRequest(WorldPackets::Quest::UiMapQuestLinesRequest& uiMapQuestLinesRequest);
1629 void HandleQueryTreasurePicker(WorldPackets::Query::QueryTreasurePicker const& queryTreasurePicker);
1630 void HandleSpawnTrackingUpdate(WorldPackets::Quest::SpawnTrackingUpdate& spawnTrackingUpdate);
1631
1632 void HandleChatMessageOpcode(WorldPackets::Chat::ChatMessage& chatMessage);
1633 void HandleChatMessageWhisperOpcode(WorldPackets::Chat::ChatMessageWhisper& chatMessageWhisper);
1634 void HandleChatMessageChannelOpcode(WorldPackets::Chat::ChatMessageChannel& chatMessageChannel);
1635 ChatMessageResult HandleChatMessage(ChatMsg type, Language lang, std::string msg, std::string target = "", Optional<ObjectGuid> targetGuid = {});
1636 void HandleChatAddonMessageOpcode(WorldPackets::Chat::ChatAddonMessage& chatAddonMessage);
1637 void HandleChatAddonMessageTargetedOpcode(WorldPackets::Chat::ChatAddonMessageTargeted& chatAddonMessageTargeted);
1638 void HandleChatAddonMessage(ChatMsg type, std::string prefix, std::string text, bool isLogged, std::string target = "", Optional<ObjectGuid> targetGuid = {});
1639 void HandleChatMessageAFKOpcode(WorldPackets::Chat::ChatMessageAFK& chatMessageAFK);
1640 void HandleChatMessageDNDOpcode(WorldPackets::Chat::ChatMessageDND& chatMessageDND);
1641 void HandleChatMessageEmoteOpcode(WorldPackets::Chat::ChatMessageEmote& chatMessageEmote);
1642 void SendChatPlayerNotfoundNotice(std::string const& name);
1643 void SendPlayerAmbiguousNotice(std::string const& name);
1644 void SendChatRestricted(ChatRestrictionType restriction);
1645 void HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet);
1646 void HandleChatIgnoredOpcode(WorldPackets::Chat::ChatReportIgnored& chatReportIgnored);
1647 void HandleChatCanLocalWhisperTargetRequest(WorldPackets::Chat::CanLocalWhisperTargetRequest const& canLocalWhisperTargetRequest);
1648 void HandleChatUpdateAADCStatus(WorldPackets::Chat::UpdateAADCStatus const& updateAADCStatus);
1649
1650 void HandleUnregisterAllAddonPrefixesOpcode(WorldPackets::Chat::ChatUnregisterAllAddonPrefixes& packet);
1651 void HandleAddonRegisteredPrefixesOpcode(WorldPackets::Chat::ChatRegisterAddonPrefixes& packet);
1652
1653 void HandleReclaimCorpse(WorldPackets::Misc::ReclaimCorpse& packet);
1654 void HandleQueryCorpseLocation(WorldPackets::Query::QueryCorpseLocationFromClient& packet);
1655 void HandleQueryCorpseTransport(WorldPackets::Query::QueryCorpseTransport& packet);
1656 void HandleResurrectResponse(WorldPackets::Misc::ResurrectResponse& packet);
1657 void HandleSummonResponseOpcode(WorldPackets::Movement::SummonResponse& packet);
1658
1659 void HandleJoinChannel(WorldPackets::Channel::JoinChannel& packet);
1660 void HandleLeaveChannel(WorldPackets::Channel::LeaveChannel& packet);
1661 void HandleChannelCommand(WorldPackets::Channel::ChannelCommand& packet);
1662 void HandleChannelPlayerCommand(WorldPackets::Channel::ChannelPlayerCommand& packet);
1663 void HandleChannelPassword(WorldPackets::Channel::ChannelPassword& channelPassword);
1664
1665 void HandleCompleteCinematic(WorldPackets::Misc::CompleteCinematic& packet);
1666 void HandleNextCinematicCamera(WorldPackets::Misc::NextCinematicCamera& packet);
1667 void HandleCompleteMovie(WorldPackets::Misc::CompleteMovie& packet);
1668
1669 void HandleQueryPageText(WorldPackets::Query::QueryPageText& packet);
1670
1671 void HandleTutorialFlag(WorldPackets::Misc::TutorialSetFlag& packet);
1672
1673 //Pet
1674 void HandlePetAction(WorldPackets::Pet::PetAction& packet);
1675 void HandlePetStopAttack(WorldPackets::Pet::PetStopAttack& packet);
1676 void HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint32 spellid, uint16 flag, ObjectGuid guid2, Position const& pos);
1677 void HandleQueryPetName(WorldPackets::Query::QueryPetName& packet);
1678 void HandlePetSetAction(WorldPackets::Pet::PetSetAction& packet);
1679 void HandlePetAbandon(WorldPackets::Pet::PetAbandon& packet);
1680 void HandlePetAbandonByNumber(WorldPackets::Pet::PetAbandonByNumber const& petAbandonByNumber);
1681 void HandlePetRename(WorldPackets::Pet::PetRename& packet);
1682 void HandlePetCancelAuraOpcode(WorldPackets::Spells::PetCancelAura& packet);
1683 void HandlePetSpellAutocastOpcode(WorldPackets::Pet::PetSpellAutocast& packet);
1684 void HandlePetCastSpellOpcode(WorldPackets::Spells::PetCastSpell& petCastSpell);
1685
1686 void HandleSetActionBarToggles(WorldPackets::Character::SetActionBarToggles& packet);
1687
1688 void HandleTotemDestroyed(WorldPackets::Totem::TotemDestroyed& totemDestroyed);
1689 void HandleDismissCritter(WorldPackets::Pet::DismissCritter& dismissCritter);
1690
1691 //Battleground
1692 void HandleBattlemasterHelloOpcode(WorldPackets::NPC::Hello& hello);
1693 void HandleBattlemasterJoinOpcode(WorldPackets::Battleground::BattlemasterJoin& battlemasterJoin);
1694 void HandlePVPLogDataOpcode(WorldPackets::Battleground::PVPLogDataRequest& pvpLogDataRequest);
1695 void HandleBattleFieldPortOpcode(WorldPackets::Battleground::BattlefieldPort& battlefieldPort);
1696 void HandleBattlefieldListOpcode(WorldPackets::Battleground::BattlefieldListRequest& battlefieldList);
1697 void HandleBattlefieldLeaveOpcode(WorldPackets::Battleground::BattlefieldLeave& battlefieldLeave);
1698 void HandleBattlemasterJoinArena(WorldPackets::Battleground::BattlemasterJoinArena& packet);
1699 void HandleReportPvPAFK(WorldPackets::Battleground::ReportPvPPlayerAFK& reportPvPPlayerAFK);
1700 void HandleRequestRatedPvpInfo(WorldPackets::Battleground::RequestRatedPvpInfo& packet);
1701 void HandleGetPVPOptionsEnabled(WorldPackets::Battleground::GetPVPOptionsEnabled& getPvPOptionsEnabled);
1702 void HandleRequestPvpReward(WorldPackets::Battleground::RequestPVPRewards& packet);
1703 void HandleAreaSpiritHealerQueryOpcode(WorldPackets::Battleground::AreaSpiritHealerQuery& areaSpiritHealerQuery);
1704 void HandleAreaSpiritHealerQueueOpcode(WorldPackets::Battleground::AreaSpiritHealerQueue& areaSpiritHealerQueue);
1705 void HandleHearthAndResurrect(WorldPackets::Battleground::HearthAndResurrect& hearthAndResurrect);
1706 void HandleRequestBattlefieldStatusOpcode(WorldPackets::Battleground::RequestBattlefieldStatus& requestBattlefieldStatus);
1707
1708 void HandleMinimapPingOpcode(WorldPackets::Party::MinimapPingClient& packet);
1709 void HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient& packet);
1710 void HandleFarSightOpcode(WorldPackets::Misc::FarSight& packet);
1711 void HandleSetDungeonDifficultyOpcode(WorldPackets::Misc::SetDungeonDifficulty& setDungeonDifficulty);
1712 void HandleSetRaidDifficultyOpcode(WorldPackets::Misc::SetRaidDifficulty& setRaidDifficulty);
1713 void HandleSetTitleOpcode(WorldPackets::Character::SetTitle& packet);
1714 void HandleTimeSync(uint32 counter, int64 clientTime, TimePoint responseReceiveTime);
1715 void HandleTimeSyncResponse(WorldPackets::Misc::TimeSyncResponse const& timeSyncResponse);
1716 void HandleQueuedMessagesEnd(WorldPackets::Auth::QueuedMessagesEnd const& queuedMessagesEnd);
1717 void HandleWhoIsOpcode(WorldPackets::Who::WhoIsRequest& packet);
1718 void HandleResetInstancesOpcode(WorldPackets::Instance::ResetInstances& packet);
1719 void HandleInstanceLockResponse(WorldPackets::Instance::InstanceLockResponse& packet);
1720
1721 // Looking for Dungeon/Raid
1722 void SendLfgPlayerLockInfo();
1723 void SendLfgPartyLockInfo();
1724 void HandleLfgJoinOpcode(WorldPackets::LFG::DFJoin& dfJoin);
1725 void HandleLfgLeaveOpcode(WorldPackets::LFG::DFLeave& dfLeave);
1726 void HandleLfgProposalResultOpcode(WorldPackets::LFG::DFProposalResponse& dfProposalResponse);
1727 void HandleLfgSetRolesOpcode(WorldPackets::LFG::DFSetRoles& dfSetRoles);
1728 void HandleLfgSetBootVoteOpcode(WorldPackets::LFG::DFBootPlayerVote& dfBootPlayerVote);
1729 void HandleLfgTeleportOpcode(WorldPackets::LFG::DFTeleport& dfTeleport);
1730 void HandleDFGetSystemInfo(WorldPackets::LFG::DFGetSystemInfo& dfGetSystemInfo);
1731 void HandleDFGetJoinStatus(WorldPackets::LFG::DFGetJoinStatus& dfGetJoinStatus);
1732
1733 void SendLfgUpdateStatus(lfg::LfgUpdateData const& updateData, bool party);
1734 void SendLfgRoleChosen(ObjectGuid guid, uint8 roles);
1735 void SendLfgRoleCheckUpdate(lfg::LfgRoleCheck const& pRoleCheck);
1736 void SendLfgJoinResult(lfg::LfgJoinResultData const& joinData);
1737 void SendLfgQueueStatus(lfg::LfgQueueStatusData const& queueData);
1738 void SendLfgPlayerReward(lfg::LfgPlayerRewardData const& lfgPlayerRewardData);
1739 void SendLfgBootProposalUpdate(lfg::LfgPlayerBoot const& boot);
1740 void SendLfgUpdateProposal(lfg::LfgProposal const& proposal);
1741 void SendLfgDisabled();
1742 void SendLfgOfferContinue(uint32 dungeonEntry);
1743 void SendLfgTeleportError(lfg::LfgTeleportResult err);
1744
1745 void HandleSelfResOpcode(WorldPackets::Spells::SelfRes& selfRes);
1746 void HandleRequestPetInfo(WorldPackets::Pet::RequestPetInfo& requestPetInfo);
1747
1748 // Socket gem
1749 void HandleSocketGems(WorldPackets::Item::SocketGems& socketGems);
1750 void HandleSortAccountBankBags(WorldPackets::Item::SortAccountBankBags& sortBankBags);
1751 void HandleSortBags(WorldPackets::Item::SortBags& sortBags);
1752 void HandleSortBankBags(WorldPackets::Item::SortBankBags& sortBankBags);
1753 void HandleRemoveNewItem(WorldPackets::Item::RemoveNewItem& removeNewItem);
1754
1755 void HandleCancelTempEnchantmentOpcode(WorldPackets::Item::CancelTempEnchantment& cancelTempEnchantment);
1756
1757 void HandleGetItemPurchaseData(WorldPackets::Item::GetItemPurchaseData& packet);
1758 void HandleItemRefund(WorldPackets::Item::ItemPurchaseRefund& packet);
1759
1760 void HandleSetTaxiBenchmark(WorldPackets::Misc::SetTaxiBenchmarkMode& packet);
1761
1762 // Guild Bank
1763 void HandleGuildPermissionsQuery(WorldPackets::Guild::GuildPermissionsQuery& packet);
1764 void HandleGuildBankMoneyWithdrawn(WorldPackets::Guild::GuildBankRemainingWithdrawMoneyQuery& packet);
1765 void HandleGuildBankActivate(WorldPackets::Guild::GuildBankActivate& packet);
1766 void HandleGuildBankQueryTab(WorldPackets::Guild::GuildBankQueryTab& packet);
1767 void HandleGuildBankLogQuery(WorldPackets::Guild::GuildBankLogQuery& packet);
1768 void HandleGuildBankDepositMoney(WorldPackets::Guild::GuildBankDepositMoney& packet);
1769 void HandleGuildBankWithdrawMoney(WorldPackets::Guild::GuildBankWithdrawMoney& packet);
1770 void HandleAutoGuildBankItem(WorldPackets::Guild::AutoGuildBankItem& autoGuildBankItem);
1771 void HandleStoreGuildBankItem(WorldPackets::Guild::StoreGuildBankItem& storeGuildBankItem);
1772 void HandleSwapItemWithGuildBankItem(WorldPackets::Guild::SwapItemWithGuildBankItem& swapItemWithGuildBankItem);
1773 void HandleSwapGuildBankItemWithGuildBankItem(WorldPackets::Guild::SwapGuildBankItemWithGuildBankItem& swapGuildBankItemWithGuildBankItem);
1774 void HandleMoveGuildBankItem(WorldPackets::Guild::MoveGuildBankItem& moveGuildBankItem);
1775 void HandleMergeItemWithGuildBankItem(WorldPackets::Guild::MergeItemWithGuildBankItem& mergeItemWithGuildBankItem);
1776 void HandleSplitItemToGuildBank(WorldPackets::Guild::SplitItemToGuildBank& splitItemToGuildBank);
1777 void HandleMergeGuildBankItemWithItem(WorldPackets::Guild::MergeGuildBankItemWithItem& mergeGuildBankItemWithItem);
1778 void HandleSplitGuildBankItemToInventory(WorldPackets::Guild::SplitGuildBankItemToInventory& splitGuildBankItemToInventory);
1779 void HandleAutoStoreGuildBankItem(WorldPackets::Guild::AutoStoreGuildBankItem& autoStoreGuildBankItem);
1780 void HandleMergeGuildBankItemWithGuildBankItem(WorldPackets::Guild::MergeGuildBankItemWithGuildBankItem& mergeGuildBankItemWithGuildBankItem);
1781 void HandleSplitGuildBankItem(WorldPackets::Guild::SplitGuildBankItem& splitGuildBankItem);
1782
1783 void HandleGuildBankUpdateTab(WorldPackets::Guild::GuildBankUpdateTab& packet);
1784 void HandleGuildBankBuyTab(WorldPackets::Guild::GuildBankBuyTab& packet);
1785 void HandleGuildBankTextQuery(WorldPackets::Guild::GuildBankTextQuery& packet);
1786 void HandleGuildBankSetTabText(WorldPackets::Guild::GuildBankSetTabText& packet);
1787
1788 // Calendar
1789 void HandleCalendarGetCalendar(WorldPackets::Calendar::CalendarGetCalendar& calendarGetCalendar);
1790 void HandleCalendarGetEvent(WorldPackets::Calendar::CalendarGetEvent& calendarGetEvent);
1791 void HandleCalendarCommunityInvite(WorldPackets::Calendar::CalendarCommunityInviteRequest& calendarCommunityInvite);
1792 void HandleCalendarAddEvent(WorldPackets::Calendar::CalendarAddEvent& calendarAddEvent);
1793 void HandleCalendarUpdateEvent(WorldPackets::Calendar::CalendarUpdateEvent& calendarUpdateEvent);
1794 void HandleCalendarRemoveEvent(WorldPackets::Calendar::CalendarRemoveEvent& calendarRemoveEvent);
1795 void HandleCalendarCopyEvent(WorldPackets::Calendar::CalendarCopyEvent& calendarCopyEvent);
1796 void HandleCalendarInvite(WorldPackets::Calendar::CalendarInvite& calendarEventInvite);
1797 void HandleCalendarRsvp(WorldPackets::Calendar::CalendarRSVP& calendarRSVP);
1798 void HandleCalendarEventRemoveInvite(WorldPackets::Calendar::CalendarRemoveInvite& calendarRemoveInvite);
1799 void HandleCalendarStatus(WorldPackets::Calendar::CalendarStatus& calendarStatus);
1800 void HandleCalendarModeratorStatus(WorldPackets::Calendar::CalendarModeratorStatusQuery& calendarModeratorStatus);
1801 void HandleCalendarComplain(WorldPackets::Calendar::CalendarComplain& calendarComplain);
1802 void HandleCalendarGetNumPending(WorldPackets::Calendar::CalendarGetNumPending& calendarGetNumPending);
1803 void HandleCalendarEventSignup(WorldPackets::Calendar::CalendarEventSignUp& calendarEventSignUp);
1804
1805 void SendCalendarRaidLockoutAdded(InstanceLock const* lock);
1806 void SendCalendarRaidLockoutRemoved(InstanceLock const* lock);
1807 void HandleSetSavedInstanceExtend(WorldPackets::Calendar::SetSavedInstanceExtend& setSavedInstanceExtend);
1808
1809 // Collections
1810 void HandleCollectionItemSetFavorite(WorldPackets::Collections::CollectionItemSetFavorite& collectionItemSetFavorite);
1811
1812 // Transmogrification
1813 void HandleTransmogrifyItems(WorldPackets::Transmogrification::TransmogrifyItems& transmogrifyItems);
1814 void HandleTransmogOutfitNew(WorldPackets::Transmogrification::TransmogOutfitNew const& transmogOutfitNew);
1815 void HandleTransmogOutfitUpdateInfo(WorldPackets::Transmogrification::TransmogOutfitUpdateInfo const& transmogOutfitUpdateInfo);
1816 void HandleTransmogOutfitUpdateSituations(WorldPackets::Transmogrification::TransmogOutfitUpdateSituations const& transmogOutfitUpdateSituations);
1817 void HandleTransmogOutfitUpdateSlots(WorldPackets::Transmogrification::TransmogOutfitUpdateSlots const& transmogOutfitUpdateSlots);
1818
1819 // Miscellaneous
1820 void HandleSpellClick(WorldPackets::Spells::SpellClick& spellClick);
1821 void HandleMirrorImageDataRequest(WorldPackets::Spells::GetMirrorImageData& getMirrorImageData);
1822 void HandleGuildSetFocusedAchievement(WorldPackets::Achievement::GuildSetFocusedAchievement& setFocusedAchievement);
1823 void HandleEquipmentSetSave(WorldPackets::EquipmentSet::SaveEquipmentSet& saveEquipmentSet);
1824 void HandleDeleteEquipmentSet(WorldPackets::EquipmentSet::DeleteEquipmentSet& deleteEquipmentSet);
1825 void HandleUseEquipmentSet(WorldPackets::EquipmentSet::UseEquipmentSet& useEquipmentSet);
1826 void HandleServerTimeOffsetRequest(WorldPackets::Misc::ServerTimeOffsetRequest& /*request*/);
1827 void HandleQueryQuestCompletionNPCs(WorldPackets::Query::QueryQuestCompletionNPCs& queryQuestCompletionNPCs);
1828 void HandleQuestPOIQuery(WorldPackets::Query::QuestPOIQuery& questPoiQuery);
1829 void HandleViolenceLevel(WorldPackets::Misc::ViolenceLevel& violenceLevel);
1830 void HandleObjectUpdateFailedOpcode(WorldPackets::Misc::ObjectUpdateFailed& objectUpdateFailed);
1831 void HandleObjectUpdateRescuedOpcode(WorldPackets::Misc::ObjectUpdateRescued& objectUpdateRescued);
1832 void HandleCloseInteraction(WorldPackets::Misc::CloseInteraction& closeInteraction);
1833 void HandleConversationLineStarted(WorldPackets::Misc::ConversationLineStarted& conversationLineStarted);
1834 void HandleKeyboundOverride(WorldPackets::Spells::KeyboundOverride& keyboundOverride);
1835 void HandleQueryCountdownTimer(WorldPackets::Misc::QueryCountdownTimer& queryCountdownTimer);
1836 void HandleSetCurrencyFlags(WorldPackets::Misc::SetCurrencyFlags const& setCurrenctFlags);
1837
1838 // Adventure Journal
1839 void HandleAdventureJournalOpenQuest(WorldPackets::AdventureJournal::AdventureJournalOpenQuest& openQuest);
1840 void HandleAdventureJournalUpdateSuggestions(WorldPackets::AdventureJournal::AdventureJournalUpdateSuggestions& updateSuggestions);
1841
1842 // Adventure Map
1843 void HandleCheckIsAdventureMapPoiValid(WorldPackets::AdventureMap::CheckIsAdventureMapPoiValid& CheckIsAdventureMapPoiValid);
1844 void HandleAdventureMapStartQuest(WorldPackets::AdventureMap::AdventureMapStartQuest& startQuest);
1845
1846 // Toys
1847 void HandleAddToy(WorldPackets::Toy::AddToy& packet);
1848 void HandleUseToy(WorldPackets::Toy::UseToy& packet);
1849 void HandleToyClearFanfare(WorldPackets::Toy::ToyClearFanfare& toyClearFanfare);
1850
1851 void HandleMountSetFavorite(WorldPackets::Misc::MountSetFavorite& mountSetFavorite);
1852
1853 // Scenes
1854 void HandleSceneTriggerEvent(WorldPackets::Scenes::SceneTriggerEvent& sceneTriggerEvent);
1855 void HandleScenePlaybackComplete(WorldPackets::Scenes::ScenePlaybackComplete& scenePlaybackComplete);
1856 void HandleScenePlaybackCanceled(WorldPackets::Scenes::ScenePlaybackCanceled& scenePlaybackCanceled);
1857
1858 // Token
1859 void HandleCommerceTokenGetLog(WorldPackets::Token::CommerceTokenGetLog& updateListedAuctionableTokens);
1860 void HandleCommerceTokenGetMarketPrice(WorldPackets::Token::CommerceTokenGetMarketPrice& requestWowTokenMarketPrice);
1861
1862 // Compact Unit Frames (4.x)
1863 void HandleSaveCUFProfiles(WorldPackets::Misc::SaveCUFProfiles& packet);
1864 void SendLoadCUFProfiles();
1865
1866 // Garrison
1867 void HandleGetGarrisonInfo(WorldPackets::Garrison::GetGarrisonInfo& getGarrisonInfo);
1868 void HandleGarrisonPurchaseBuilding(WorldPackets::Garrison::GarrisonPurchaseBuilding& garrisonPurchaseBuilding);
1869 void HandleGarrisonCancelConstruction(WorldPackets::Garrison::GarrisonCancelConstruction& garrisonCancelConstruction);
1870 void HandleGarrisonRequestBlueprintAndSpecializationData(WorldPackets::Garrison::GarrisonRequestBlueprintAndSpecializationData& garrisonRequestBlueprintAndSpecializationData);
1871 void HandleGarrisonGetMapData(WorldPackets::Garrison::GarrisonGetMapData& garrisonGetMapData);
1872
1873 // Battle Pets
1874 void HandleBattlePetRequestJournal(WorldPackets::BattlePet::BattlePetRequestJournal& battlePetRequestJournal);
1875 void HandleBattlePetRequestJournalLock(WorldPackets::BattlePet::BattlePetRequestJournalLock& battlePetRequestJournalLock);
1876 void HandleBattlePetSetBattleSlot(WorldPackets::BattlePet::BattlePetSetBattleSlot& battlePetSetBattleSlot);
1877 void HandleBattlePetModifyName(WorldPackets::BattlePet::BattlePetModifyName& battlePetModifyName);
1878 void HandleQueryBattlePetName(WorldPackets::BattlePet::QueryBattlePetName& queryBattlePetName);
1879 void HandleBattlePetDeletePet(WorldPackets::BattlePet::BattlePetDeletePet& battlePetDeletePet);
1880 void HandleBattlePetSetFlags(WorldPackets::BattlePet::BattlePetSetFlags& battlePetSetFlags);
1881 void HandleBattlePetClearFanfare(WorldPackets::BattlePet::BattlePetClearFanfare& battlePetClearFanfare);
1882 void HandleBattlePetSummon(WorldPackets::BattlePet::BattlePetSummon& battlePetSummon);
1883 void HandleBattlePetUpdateNotify(WorldPackets::BattlePet::BattlePetUpdateNotify& battlePetUpdateNotify);
1884 void HandleCageBattlePet(WorldPackets::BattlePet::CageBattlePet& cageBattlePet);
1885
1886 // Battlenet
1887 void HandleBattlenetChangeRealmTicket(WorldPackets::Battlenet::ChangeRealmTicket& changeRealmTicket);
1888 void HandleBattlenetRequest(WorldPackets::Battlenet::Request& request);
1889
1890 void SendBattlenetResponse(uint32 serviceHash, uint32 methodId, uint32 token, pb::Message const* response);
1891 void SendBattlenetResponse(uint32 serviceHash, uint32 methodId, uint32 token, uint32 status);
1892 void SendBattlenetRequest(uint32 serviceHash, uint32 methodId, pb::Message const* request, std::function<void(MessageBuffer)> callback);
1893 void SendBattlenetRequest(uint32 serviceHash, uint32 methodId, pb::Message const* request);
1894
1895 std::array<uint8, 32> const& GetRealmListSecret() const { return _realmListSecret; }
1896 void SetRealmListSecret(std::array<uint8, 32> const& secret) { _realmListSecret = secret; }
1897
1898 std::unordered_map<uint32, uint8> const& GetRealmCharacterCounts() const { return _realmCharacterCounts; }
1899
1900 void HandleQueryRealmName(WorldPackets::Query::QueryRealmName& queryRealmName);
1901
1902 // Artifact
1903 void HandleArtifactAddPower(WorldPackets::Artifact::ArtifactAddPower& artifactAddPower);
1904 void HandleArtifactSetAppearance(WorldPackets::Artifact::ArtifactSetAppearance& artifactSetAppearance);
1905 void HandleConfirmArtifactRespec(WorldPackets::Artifact::ConfirmArtifactRespec& confirmArtifactRespec);
1906
1907 // Scenario
1908 void HandleQueryScenarioPOI(WorldPackets::Scenario::QueryScenarioPOI& queryScenarioPOI);
1909
1910 // Azerite
1911 void HandleAzeriteEssenceUnlockMilestone(WorldPackets::Azerite::AzeriteEssenceUnlockMilestone& azeriteEssenceUnlockMilestone);
1912 void HandleAzeriteEssenceActivateEssence(WorldPackets::Azerite::AzeriteEssenceActivateEssence& azeriteEssenceActivateEssence);
1913 void HandleAzeriteEmpoweredItemViewed(WorldPackets::Azerite::AzeriteEmpoweredItemViewed& azeriteEmpoweredItemViewed);
1914 void HandleAzeriteEmpoweredItemSelectPower(WorldPackets::Azerite::AzeriteEmpoweredItemSelectPower& azeriteEmpoweredItemSelectPower);
1915 void SendAzeriteRespecNPC(ObjectGuid npc);
1916
1917 void HandleRequestLatestSplashScreen(WorldPackets::Misc::RequestLatestSplashScreen& requestLatestSplashScreen);
1918
1919 void HandleSocialContractRequest(WorldPackets::Social::SocialContractRequest& socialContractRequest);
1920
1922 {
1923 struct
1924 {
1928 } Fields;
1929
1931 };
1932
1933 uint64 GetConnectToInstanceKey() const { return _instanceConnectKey.Raw; }
1934 static void AddInstanceConnection(WorldSession* session, std::weak_ptr<WorldSocket> sockRef, ConnectToKey key);
1935
1936 public:
1937 QueryCallbackProcessor& GetQueryProcessor() { return _queryProcessor; }
1938 TransactionCallback& AddTransactionCallback(TransactionCallback&& callback);
1939 SQLQueryHolderCallback& AddQueryHolderCallback(SQLQueryHolderCallback&& callback);
1940
1941 private:
1942 void ProcessQueryCallbacks();
1943
1947
1948 friend class World;
1949 protected:
1951 {
1952 friend class World;
1953 public:
1955 bool EvaluateOpcode(WorldPacket& p, time_t time) const;
1956 protected:
1963
1964 uint32 GetMaxPacketCounterAllowed(uint32 opcode) const;
1965
1967
1968 private:
1970 typedef std::unordered_map<uint32, PacketCounter> PacketThrottlingMap;
1971 // mark this member as "mutable" so it can be modified even in const functions
1973
1974 DosProtection(DosProtection const& right) = delete;
1975 DosProtection& operator=(DosProtection const& right) = delete;
1976 } AntiDOS;
1977
1978 private:
1979 // private trade methods
1980 void moveItems(Item* myItems[], Item* hisItems[]);
1981
1982 bool CanUseBank(ObjectGuid bankerGUID = ObjectGuid::Empty) const;
1983
1984 // logging helper
1985 void LogUnexpectedOpcode(WorldPacket* packet, char const* status, const char *reason);
1986
1987 // EnumData helpers
1989 {
1990 return _legitCharacters.find(lowGUID) != _legitCharacters.end();
1991 }
1992
1993 // Movement helpers
1994 Unit* ValidateAndGetUnitBeingMoved(ObjectGuid guid, OpcodeClient opcode, bool forStatusAck) const;
1995
1996 // this stores the GUIDs of the characters who can login
1997 // characters who failed on Player::BuildEnumData shouldn't login
1999
2000 ObjectGuid::LowType m_GUIDLow; // set logined or recently logout player (while m_playerRecentlyLogout set)
2002 std::array<std::shared_ptr<WorldSocket>, MAX_CONNECTION_TYPES> m_Socket;
2003 std::string m_Address; // Current Remote Address
2004 // std::string m_LAddress; // Last Attempted Remote Adress - we can not set attempted ip for a non-existing session!
2005
2008 std::string _accountName;
2009 std::unique_ptr<Battlenet::Account> _battlenetAccount;
2012 std::string _os;
2015
2016 std::array<uint8, 32> _realmListSecret;
2017 std::unordered_map<uint32 /*realmAddress*/, uint8> _realmCharacterCounts;
2018 std::unordered_map<uint32, std::function<void(MessageBuffer)>> _battlenetResponseCallbacks;
2020
2022 bool m_inQueue; // session wait in auth.queue
2023 ObjectGuid m_playerLoading; // code processed in LoginPlayer
2024 bool m_playerLogout; // code processed in LogoutPlayer
2030 std::atomic<uint32> m_latency;
2032 std::array<uint32, MAX_ACCOUNT_TUTORIAL_VALUES> _tutorials;
2034
2035 std::unordered_map<uint32 /*instanceId*/, SystemTimePoint/*releaseTime*/> _instanceResetTimes;
2036
2038 std::vector<std::string> _registeredAddonPrefixes;
2046
2047 std::unique_ptr<boost::circular_buffer<std::pair<int64, uint32>>> _timeSyncClockDeltaQueue; // first member: clockDelta. Second member: latency of the packet exchange that was used to compute that clockDelta.
2049 void ComputeNewClockDelta();
2050
2051 std::map<uint32, int64> _pendingTimeSyncRequests; // key: counter. value: server time when packet with that counter was sent.
2054
2055 // Packets cooldown
2057
2058 std::unique_ptr<BattlePets::BattlePetMgr> _battlePetMgr;
2059
2060 std::unique_ptr<CollectionMgr> _collectionMgr;
2061
2063
2064 WorldSession(WorldSession const& right) = delete;
2065 WorldSession& operator=(WorldSession const& right) = delete;
2066};
2067
2068#endif
AuctionResult
AuctionCommand
LocaleConstant
Definition Common.h:51
AccountTypes
Definition Common.h:42
InstanceInfo
PlayerInteractionType
Definition DBCEnums.h:2226
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
SQLTransaction< LoginDatabaseConnection > LoginDatabaseTransaction
std::shared_ptr< PreparedResultSet > PreparedQueryResult
#define TC_GAME_API
Definition Define.h:129
uint8_t uint8
Definition Define.h:156
int64_t int64
Definition Define.h:149
#define ATTR_PRINTF(F, V)
COREDEBUG.
Definition Define.h:78
int8_t int8
Definition Define.h:152
int32_t int32
Definition Define.h:150
uint64_t uint64
Definition Define.h:153
uint16_t uint16
Definition Define.h:155
uint32_t uint32
Definition Define.h:154
std::chrono::system_clock::time_point SystemTimePoint
Definition Duration.h:41
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Definition Duration.h:24
std::chrono::steady_clock::time_point TimePoint
time_point shorthand typedefs
Definition Duration.h:40
std::chrono::minutes Minutes
Minutes shorthand typedef.
Definition Duration.h:32
InventoryResult
Definition ItemDefines.h:25
TabardVendorType
std::set< ObjectGuid > GuidSet
Definition ObjectGuid.h:432
@ MAX_CONNECTION_TYPES
Definition Opcodes.h:30
OpcodeClient
Definition Opcodes.h:38
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition Optional.h:25
StableResult
Definition PetDefines.h:121
PetAction
Definition PetDefines.h:93
Spells
Definition PlayerAI.cpp:32
Races
Definition RaceMask.h:28
Classes
Language
ChatMessageResult
Gender
ResponseCodes
TradeStatus
CharacterUndeleteResult
ActivateTaxiReply
ChatMsg
PartyResult
ChatRestrictionType
@ ERR_CHAT_THROTTLED
@ ERR_YELL_RESTRICTED
@ ERR_CHAT_RESTRICTED
@ ERR_USER_SQUELCHED
@ ERR_CHAT_RAID_RESTRICTED
TutorialsFlag
@ TUTORIALS_FLAG_LOADED_FROM_DB
@ TUTORIALS_FLAG_CHANGED
@ TUTORIALS_FLAG_NONE
DeclinedNameResult
@ DECLINED_NAMES_RESULT_SUCCESS
@ DECLINED_NAMES_RESULT_ERROR
PartyOperation
@ PARTY_OP_INVITE
@ PARTY_OP_SWAP
@ PARTY_OP_UNINVITE
@ PARTY_OP_LEAVE
AccountDataType
@ PER_CHARACTER_MACROS_CACHE
@ PER_CHARACTER_FLAGGED_CACHE
@ GLOBAL_MACROS_CACHE
@ PER_CHARACTER_EDIT_MODE_CACHE
@ PER_CHARACTER_CONFIG_CACHE
@ PER_CHARACTER_TTS_CACHE
@ GLOBAL_SHOP2_PENDING_ORDERS
@ GLOBAL_FRONTEND_CHAT_SETTINGS
@ GLOBAL_BINDINGS_CACHE
@ PER_CHARACTER_CHAT_CACHE
@ PER_CHARACTER_CLICK_BINDINGS_CACHE
@ PER_CHARACTER_COOLDOWN_MANAGER2
@ GLOBAL_EDIT_MODE_CACHE
@ PER_CHARACTER_LAYOUT_CACHE
@ GLOBAL_FLAGGED_CACHE
@ PER_CHARACTER_BINDINGS_CACHE
@ GLOBAL_CONFIG_CACHE
@ GLOBAL_COOLDOWN_MANAGER
@ GLOBAL_CHARACTER_LIST_ORDER
@ GLOBAL_TTS_CACHE
#define NUM_ACCOUNT_DATA_TYPES
Achievement
Definition Guild.h:329
Definition Item.h:185
MapSessionFilter(WorldSession *pSession)
virtual bool ProcessUnsafe() const override
static ObjectGuid const Empty
Definition ObjectGuid.h:314
uint64 LowType
Definition ObjectGuid.h:321
virtual bool Process(WorldPacket *)
PacketFilter & operator=(PacketFilter const &right)=delete
virtual bool ProcessUnsafe() const
PacketFilter(PacketFilter const &right)=delete
PacketFilter(WorldSession *pSession)
WorldSession *const m_pSession
virtual ~PacketFilter()
Definition Pet.h:40
Definition Totem.h:31
Utility class to enable range for loop syntax for multimap.equal_range uses.
Definition Unit.h:647
WorldSessionFilter(WorldSession *pSession)
bool ProcessUnsafe() const override
std::unordered_map< uint32, PacketCounter > PacketThrottlingMap
DosProtection(DosProtection const &right)=delete
DosProtection & operator=(DosProtection const &right)=delete
PacketThrottlingMap _PacketThrottlingMap
Player session in the World.
PlayerDataAccount const & GetPlayerDataAccount() const
GuidSet _legitCharacters
bool m_playerRecentlyLogout
std::unique_ptr< Battlenet::Account > _battlenetAccount
uint8 _tutorialsChanged
std::string m_Address
time_t GetCalendarEventCreationCooldown() const
std::array< uint8, 32 > _realmListSecret
bool isLogingOut() const
Is the user engaged in a log out process?
LocaleConstant m_sessionDbLocaleIndex
std::array< std::shared_ptr< WorldSocket >, MAX_CONNECTION_TYPES > m_Socket
AsyncCallbackProcessor< SQLQueryHolderCallback > _queryHolderProcessor
QueryCallbackProcessor _queryProcessor
std::array< uint32, MAX_ACCOUNT_TUTORIAL_VALUES > _tutorials
LocaleConstant GetSessionDbLocaleIndex() const
int64 _timeSyncClockDelta
Battlenet::Account & GetBattlenetAccount() const
uint32 _clientBuild
time_t _calendarEventCreationCooldown
std::array< uint8, 32 > const & GetRealmListSecret() const
bool PlayerRecentlyLoggedOut() const
std::atomic< time_t > m_timeOutTime
bool PlayerLogout() const
uint64 GetConnectToInstanceKey() const
ObjectGuid GetAccountGUID() const
uint32 _timeSyncTimer
std::unordered_map< uint32, uint8 > _realmCharacterCounts
Minutes GetTimezoneOffset() const
LocaleConstant GetSessionDbcLocale() const
uint32 GetRecruiterId() const
std::string _os
Player * GetPlayer() const
rbac::RBACData * _RBACData
std::unique_ptr< CollectionMgr > _collectionMgr
bool PlayerLogoutWithSave() const
bool PlayerLoading() const
bool IsARecruiter() const
void SetLogoutStartTime(time_t requestTime)
Engage the logout process for the user.
std::string const & GetOS() const
void SetRealmListSecret(std::array< uint8, 32 > const &secret)
std::string _accountName
std::string const & GetAccountName() const
ClientBuild::VariantId const & GetClientBuildVariant() const
AccountData const * GetAccountData(AccountDataType type) const
QueryCallbackProcessor & GetQueryProcessor()
uint32 _timeSyncNextCounter
ObjectGuid m_playerLoading
bool IsLegitCharacterForAccount(ObjectGuid lowGUID)
std::string const & GetRemoteAddress() const
void SetCalendarEventCreationCooldown(time_t cooldown)
void SetInQueue(bool state)
Session in auth.queue currently.
ObjectGuid::LowType m_GUIDLow
WorldSession(WorldSession const &right)=delete
uint32 GetClientBuild() const
PlayerDataAccount _playerDataAccount
std::unordered_map< uint32, uint8 > const & GetRealmCharacterCounts() const
uint32 GetAccountId() const
uint8 GetAccountExpansion() const
ConnectToKey _instanceConnectKey
std::unordered_map< uint32, SystemTimePoint > _instanceResetTimes
Player * _player
uint32 GetTutorialInt(uint8 index) const
uint32 _battlenetRequestToken
CollectionMgr * GetCollectionMgr() const
AccountTypes _security
uint32 GetLatency() const
uint8 GetExpansion() const
uint8 m_accountExpansion
WorldSession & operator=(WorldSession const &right)=delete
std::vector< std::string > _registeredAddonPrefixes
ClientBuild::VariantId _clientBuildVariant
std::unordered_map< uint32, std::function< void(MessageBuffer)> > _battlenetResponseCallbacks
LocaleConstant m_sessionDbcLocale
std::unique_ptr< boost::circular_buffer< std::pair< int64, uint32 > > > _timeSyncClockDeltaQueue
LockedQueue< WorldPacket * > _recvQueue
std::atomic< uint32 > m_latency
void SetSecurity(AccountTypes security)
void SetLatency(uint32 latency)
void SetTutorialInt(uint8 index, uint32 value)
bool ShouldLogOut(time_t currTime) const
Is logout cooldown expired?
AsyncCallbackProcessor< TransactionCallback > _transactionCallbacks
BattlePets::BattlePetMgr * GetBattlePetMgr() const
Minutes _timezoneOffset
std::unique_ptr< BattlePets::BattlePetMgr > _battlePetMgr
bool _filterAddonMessages
std::map< uint32, int64 > _pendingTimeSyncRequests
The World.
Definition World.h:560
boost::beast::http::request< RequestBody > Request
Definition HttpCommon.h:30
UF::ChrCustomizationChoice ChrCustomizationChoice
Definition LFG.cpp:24
LfgTeleportResult
Teleport errors.
Definition LFGMgr.h:96
STL namespace.
std::string Data
Definition Loot.h:286
Definition Mail.h:181
uint32 amountCounter
time_t lastReceiveTime
std::vector< Element > Elements
Stores information of a current vote to kick someone from a group.
Definition LFGMgr.h:288
Stores group data related to proposal to join.
Definition LFGMgr.h:257
Stores all rolecheck info of a group that wants to join.
Definition LFGMgr.h:277