Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
WorldSession.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
9
10#ifndef __WORLDSESSION_H
11#define __WORLDSESSION_H
12
13#include "AccountMgr.h"
15#include "AddonMgr.h"
16#include <atomic>
17#include "Common.h"
18#include "DatabaseEnv.h"
19#include "Object.h"
20#include "Opcodes.h"
21#include "SharedDefines.h"
22#include "World.h"
23#include "WorldPacket.h"
24
25class Creature;
27class GameObject;
28class InstanceSave;
29class Item;
31class Object;
32class Player;
33class Quest;
35class Unit;
36class Warden;
37class WorldPacket;
38class WorldSocket;
39struct AreaTableEntry;
40struct AuctionEntry;
41struct DeclinedName;
42struct ItemTemplate;
43struct MovementInfo;
44
45namespace lfg
46{
47 struct LfgJoinResultData;
48 struct LfgPlayerBoot;
49 struct LfgProposal;
50 struct LfgQueueStatusData;
52 struct LfgRoleCheck;
53 struct LfgUpdateData;
54}
55
56namespace rbac
57{
58 class RBACData;
59}
60
73
74
75#define GLOBAL_CACHE_MASK 0x15
76#define PER_CHARACTER_CACHE_MASK 0xEA
77
78#define REGISTERED_ADDON_PREFIX_SOFTCAP 64
79
81{
82 AccountData() : Time(0), Data("") { }
83
84 time_t Time;
85 std::string Data;
86};
87
95
97{
99 //BF_LEAVE_REASON_UNK1 = 0x00000002, (not used)
100 //BF_LEAVE_REASON_UNK2 = 0x00000004, (not used)
103};
104
112
114{
118 /*BARBER_SHOP_NOT_ENOUGH_MONEY = 3*/
119};
120
121#define DB2_REPLY_BATTLE_PET_ABILITY 3416538071
122#define DB2_REPLY_BATTLE_PET_ABILITY_EFFECT 3716901134
123#define DB2_REPLY_BATTLE_PET_ABILITY_STATE 1012231747
124#define DB2_REPLY_BATTLE_PET_ABILITY_TURN 3973639388
125#define DB2_REPLY_BATTLE_PET_BREED_QUALITY 458903206
126#define DB2_REPLY_BATTLE_PET_BREED_STATE 1794847238
127#define DB2_REPLY_BATTLE_PET_EFFECT_PROPERTIES 1672791226
128#define DB2_REPLY_BATTLE_PET_NPC_TEAM_MEMBER 4060454394
129#define DB2_REPLY_BATTLE_PET_SPECIES 1821637041
130#define DB2_REPLY_BATTLE_PET_SPECIES_STATE 366509520
131#define DB2_REPLY_BATTLE_PET_SPECIESX_ABILITY 1143173908
132#define DB2_REPLY_BATTLE_PET_STATE 2403627824
133#define DB2_REPLY_BATTLE_PET_VISUAL 3282955075
134#define DB2_REPLY_BROADCAST_TEXT 35137211
135#define DB2_REPLY_CREATURE 3386291891
136#define DB2_REPLY_CREATURE_DIFFICULTY 3386943305
137#define DB2_REPLY_CURVE 1272569722
138#define DB2_REPLY_CURVE_POINT 1880017466
139#define DB2_REPLY_DEVICE_BLACKLIST 983446676
140#define DB2_REPLY_DRIVER_BLACKLIST 1326512502
141#define DB2_REPLY_GAMEOBJECTS 331613093
142#define DB2_REPLY_ITEM 1344507586
143#define DB2_REPLY_ITEM_SPARSE 2442913102
144#define DB2_REPLY_ITEM_CURRENCY_COST 1876974313
145#define DB2_REPLY_ITEM_EXTENDED_COST 3146089301
146#define DB2_REPLY_ITEM_TO_BATTLE_PET 1563357608
147#define DB2_REPLY_ITEM_TO_MOUNT_SPELL 1440631488
148#define DB2_REPLY_ITEM_UPGRADE 1879459387
149#define DB2_REPLY_KEYCHAIN 1837770388
150#define DB2_REPLY_LOCALE 1065724855
151#define DB2_REPLY_LOCATION 961296167
152#define DB2_REPLY_MAP_CHALLENGE_MODE 943410215
153#define DB2_REPLY_MARKETING_PROMOTIONS_X_LOCALE 2715021741
154#define DB2_REPLY_PATH 2499044245
155#define DB2_REPLY_PATH_NODE 1000230050
156#define DB2_REPLY_PATH_NODE_PROPERTY 4263624740
157#define DB2_REPLY_PATH_PROPERTY 149245792
158#define DB2_REPLY_QUEST_PACKAGE_ITEM 3425666288
159#define DB2_REPLY_RULE_SET_ITEM_UPGRADE 1840711788
160#define DB2_REPLY_RULE_SET_RAID_LOOT_UPGRADE 3978279757
161#define DB2_REPLY_SCENE_SCRIPT 3568395212
162#define DB2_REPLY_SCENE_SCRIPT_PACKAGE 3905641993
163#define DB2_REPLY_SCENE_SCRIPT_PACKAGE_MEMBER 3830298396
164#define DB2_REPLY_SPELL_EFFECT_CAMERA_SHAKES 1939361897
165#define DB2_REPLY_SPELL_MISSILE 1754233351
166#define DB2_REPLY_SPELL_MISSILE_MOTION 930182777
167#define DB2_REPLY_SPELL_REAGENTS 2875640223
168#define DB2_REPLY_SPELL_VISUAL 4146370265
169#define DB2_REPLY_SPELL_VISUAL_EFFECT_NAME 48336690
170#define DB2_REPLY_SPELL_VISUAL_KIT 4102286043
171#define DB2_REPLY_SPELLVISUALKITAREAMODEL 22642299461
172#define DB2_REPLY_SPELL_VISUAL_KIT_MODEL_ATTACH 4033975491
173#define DB2_REPLY_SPELL_VISUAL_MISSILE 1369604944
174#define DB2_REPLY_VIGNETTE 4021368146
175#define DB2_REPLY_WB_ACCESS_CONTROL_LIST 1477136115
176#define DB2_REPLY_WB_CERT_BLACKLIST 3450573023
177#define DB2_REPLY_WB_CERT_WHITELIST 2287306173
178#define DB2_REPLY_WB_PERMISSIONS 4163366139
179
180//class to deal with packet processing
181//allows to determine if next packet is safe to be processed
183{
184public:
185 explicit PacketFilter(WorldSession* pSession) : m_pSession(pSession) { }
186 virtual ~PacketFilter() { }
187
188 virtual bool Process(WorldPacket* /*packet*/) { return true; }
189 virtual bool ProcessLogout() const { return true; }
190 static uint16 DropHighBytes(uint16 opcode) { return opcode & NUM_OPCODE_HANDLERS; }
191
192protected:
194
195private:
196 PacketFilter(PacketFilter const& right) = delete;
197 PacketFilter& operator=(PacketFilter const& right) = delete;
198};
199//process only thread-safe packets in Map::Update()
201{
202public:
203 explicit MapSessionFilter(WorldSession* pSession) : PacketFilter(pSession) { }
205
206 virtual bool Process(WorldPacket* packet);
207 //in Map::Update() we do not process player logout!
208 virtual bool ProcessLogout() const { return false; }
209};
210
211//class used to filer only thread-unsafe packets from queue
212//in order to update only be used in World::UpdateSessions()
214{
215public:
216 explicit WorldSessionFilter(WorldSession* pSession) : PacketFilter(pSession) { }
218
219 virtual bool Process(WorldPacket* packet);
220};
221
222// Proxy structure to contain data passed to callback function,
223// only to prevent bloating the parameter list
225{
226 friend class WorldSession;
227 friend class Player;
228
229protected:
230 CharacterCreateInfo(std::string const& name, uint8 race, uint8 cclass, uint8 gender, uint8 skin, uint8 face, uint8 hairStyle, uint8 hairColor, uint8 facialHair, uint8 outfitId,
231 WorldPacket& data) : Name(name), Race(race), Class(cclass), Gender(gender), Skin(skin), Face(face), HairStyle(hairStyle), HairColor(hairColor), FacialHair(facialHair),
232 OutfitId(outfitId), Data(data), CharCount(0)
233 { }
234
236 std::string Name;
247
250};
251
254{
255public:
256 WorldSession(uint32 id, WorldSocket* sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter, bool isARecruiter, bool hasBoost);
258
259 bool PlayerLoading() const { return m_playerLoading; }
260 bool PlayerLogout() const { return m_playerLogout; }
263 bool PlayerDisconnected() const { return !m_Socket; }
264
265 void ReadAddonsInfo(WorldPacket& data);
266 void SendAddonsInfo();
268 bool IsAddonRegistered(const std::string& prefix) const;
269
270 void SendPacket(WorldPacket const* packet, bool forced = false);
271 void LogPacketMarker(std::string const& marker);
272 void SendNotification(const char* format, ...) ATTR_PRINTF(2, 3);
273 void SendNotification(uint32 string_id, ...);
274 void SendPetNameInvalid(uint32 error, std::string const& name, DeclinedName* declinedName, uint32 petNumber);
275 void SendPartyResult(PartyOperation operation, std::string const& member, PartyResult res, uint32 val = 0);
276 void SendSetPhaseShift(std::set<uint32> const& phaseIds, std::set<uint32> const& terrainswaps, std::set<uint32> const& worldAreas);
278 void SendGroupInviteNotification(const std::string& inviterName, const std::string& realmName, bool inGroup);
279 void SendRolePollInform(ObjectGuid guid, uint8 Index);
280
281 void SendAuthResponse(ResponseCodes code, bool queued, uint32 queuePos = 0);
282 void SendClientCacheVersion(uint32 version);
284
285 rbac::RBACData* GetRBACData();
286 bool HasPermission(uint32 permissionId);
287 void LoadPermissions();
288 void InvalidateRBACData(); // Used to force LoadPermissions at next HasPermission check
289
290 void SetVirtualRealmID(uint32 VRealmID) { m_virtualRealmID = VRealmID; }
292
294 uint32 GetAccountId() const { return _accountId; }
295 Player* GetPlayer() const { return _player; }
296 std::string const& GetPlayerName() const;
297 std::string GetPlayerInfo() const;
298
299 uint32 GetGuidLow() const;
300 void SetSecurity(AccountTypes security) { _security = security; }
301 std::string const& GetRemoteAddress() { return m_Address; }
302 void SetPlayer(Player* player);
303 uint8 Expansion() const { return m_expansion; }
304
305 void InitWarden(SessionKey const&, std::string const& os);
306
308 void SetInQueue(bool state) { m_inQueue = state; }
309
311 bool isLogingOut() const { return _logoutTime || m_playerLogout; }
312
314 void LogoutRequest(time_t requestTime)
315 {
316 _logoutTime = requestTime;
317 }
318
320 bool ShouldLogOut(time_t currTime) const
321 {
322 return (_logoutTime > 0 && currTime >= _logoutTime + 20);
323 }
324
325 void LogoutPlayer(bool save);
326 void KickPlayer();
327
328 void QueuePacket(WorldPacket* new_packet);
329 bool Update(uint32 diff, PacketFilter& updater);
330
332 void SendAuthWaitQue(uint32 position);
333
334 // petition query
336 void SendPetitionQueryOpcode(uint64 petitionguid);
337
338 // name query
339 void HandleNameQueryOpcode(WorldPacket& recvPacket);
341
342 // pet name query
343 void HandlePetNameQuery(WorldPacket& recvData);
344 void SendPetNameQuery(ObjectGuid guid, uint64 petNumber);
345
346 // realmname query
347 void HandleRealmNameQueryOpcode(WorldPacket& recvPacket);
348 void SendRealmNameQueryOpcode(uint32 realmId);
349
350 // TODO: trainer hello
351 void HandleTrainerListOpcode(WorldPacket& recvPacket);
352 void SendTrainerList(uint64 guid);
353 void SendTrainerList(uint64 guid, std::string const& strTitle);
354
355 // vendor hello
356 void HandleListInventoryOpcode(WorldPacket& recvPacket);
357 void SendListInventory(uint64 guid);
358
359 // bank hello
360 void HandleBankerActivateOpcode(WorldPacket& recvPacket);
361 void SendShowBank(ObjectGuid guid);
362
363 // TODO: tabard hello. client message run away?
365
366 // spirithealer hello
368 void SendSpiritResurrect();
369
370 // binder hello
371 void HandleBinderActivateOpcode(WorldPacket& recvPacket);
373
374 // auctioneer hello
375 void HandleAuctionHelloOpcode(WorldPacket& recvPacket);
376 void SendAuctionHello(ObjectGuid guid, Creature* unit);
377
378 // Battlemaster hello
381
382 // petitioneer hello
384 void SendPetitionShowList(uint64 guid);
385
386 // TODO: attack meele? - sphinx ?
387 void HandleAttackSwingOpcode(WorldPacket& recvPacket);
388 void SendAttackStop(Unit const* enemy);
389 void HandleAttackStopOpcode(WorldPacket& recvPacket);
390 void HandlePetStopAttack(WorldPacket& recvData);
391
392 // TODO: trade
393 void HandleAcceptTradeOpcode(WorldPacket& recvPacket);
394 void HandleBeginTradeOpcode(WorldPacket& recvPacket);
395 void HandleBusyTradeOpcode(WorldPacket& recvPacket);
396 void HandleCancelTradeOpcode(WorldPacket& recvPacket);
397 void HandleClearTradeItemOpcode(WorldPacket& recvPacket);
398 void HandleIgnoreTradeOpcode(WorldPacket& recvPacket);
399 void HandleInitiateTradeOpcode(WorldPacket& recvPacket);
400 void HandleSetTradeGoldOpcode(WorldPacket& recvPacket);
401 void HandleSetTradeItemOpcode(WorldPacket& recvPacket);
402 void HandleUnacceptTradeOpcode(WorldPacket& recvPacket);
403 void SendTradeStatus(TradeStatus status);
404 void SendUpdateTrade(bool trader_data = true);
405 void SendCancelTrade(TradeStatus status);
406
407 // Totem
408 void SendTotemCreated(ObjectGuid TotemGUID, uint32 Duration, uint32 SpellID, uint8 Slot);
409
410 // TODO: Spell mod cd, used in the core only by Shaman T10 Elemental 2P Bonus and Player::ModifySpellCooldown however ModifySpellCooldown is deadcode...
411 void SendModifyCooldown(ObjectGuid UnitGUID, int32 DeltaTime, int32 SpellID);
412
413 // TODO: currently implemented as some kind of block for HandlePetCastSpellOpcode? #burnit!
414 void HandleClientCastFlags(WorldPacket& recvPacket, uint8 castFlags, SpellCastTargets& targets);
415
416 // TODO: Pet stable
418 void HandleStablePet(WorldPacket& recvPacket);
420 void HandleUnstablePet(WorldPacket& recvPacket);
422 void HandleBuyStableSlot(WorldPacket& recvPacket);
423 void HandleStableRevivePet(WorldPacket& recvPacket);
424 void HandleStableSwapPet(WorldPacket& recvPacket);
426 void SendStablePet(uint64 guid);
428 void SendStableResult(uint8 guid);
429 bool CheckStableMaster(uint64 guid);
430
431 // Account Data
433 void SetAccountData(AccountDataType type, time_t tm, std::string const& data);
434 void SendAccountDataTimes(uint32 mask);
436 void LoadAccountData(PreparedQueryResult result, uint32 mask);
437
438 void LoadTutorialsData();
439 void SendTutorialsData();
441 uint32 GetTutorialInt(uint8 index) const { return m_Tutorials[index]; }
442 void SetTutorialInt(uint8 index, uint32 value)
443 {
444 if (m_Tutorials[index] != value)
445 {
446 m_Tutorials[index] = value;
447 m_TutorialsChanged = true;
448 }
449 }
450 // TODO: auction
451 void HandleAuctionListItems(WorldPacket& recvData);
453 void HandleAuctionSellItem(WorldPacket& recvData);
454 void HandleAuctionRemoveItem(WorldPacket& recvData);
456 void HandleAuctionPlaceBid(WorldPacket& recvData);
458 void SendAuctionCommandResult(AuctionEntry* auction, uint32 Action, uint32 ErrorCode, uint32 bidError = 0);
459 void SendAuctionBidderNotification(uint32 location, uint32 auctionId, uint64 bidder, uint32 bidSum, uint32 diff, uint32 item_template);
461 void SendAuctionRemovedNotification(uint32 auctionId, uint32 itemEntry, int32 randomPropertyId);
462
463 //Item Enchantment
464 void SendEnchantmentLog(uint64 target, uint64 caster, uint64 itemGuid, uint32 itemId, uint32 enchantId, uint32 enchantmentSlot);
465 void SendItemEnchantTimeUpdate(ObjectGuid Playerguid, ObjectGuid Itemguid, uint32 slot, uint32 Duration);
466
467 //Taxi status
469 void SendTaxiStatus(uint64 guid);
470
471 //TODO: Taxi
473 void SendTaxiMenu(Creature* unit);
474 void HandleMoveSplineDoneOpcode(WorldPacket& recvPacket);
475 void SendDoFlight(uint32 mountDisplayId, uint32 path, uint32 pathNode = 0);
476 bool SendLearnNewTaxiNode(Creature* unit);
477 void SendDiscoverNewTaxiNode(uint32 nodeid);
479 void HandleActivateTaxiOpcode(WorldPacket& recvPacket);
481
482
484
485 void DoLootRelease(uint64 lguid);
486
487 // Account mute time
489
490 // Locales
493 const char* GetSkyFireString(int32 entry) const;
494
495 uint32 GetLatency() const { return m_latency; }
496 void SetLatency(uint32 latency) { m_latency = latency; }
498 uint32 getDialogStatus(Player* player, Object* questgiver, uint32 defstatus);
499
500 std::atomic<time_t> m_timeOutTime;
502 {
503 if (time_t(diff) > m_timeOutTime)
504 m_timeOutTime = 0;
505 else
506 m_timeOutTime -= diff;
507 }
509 bool IsConnectionIdle() const { return (m_timeOutTime <= 0 && !m_inQueue); }
510
511 // Recruit-A-Friend Handling
513 bool IsARecruiter() const { return isRecruiter; }
514
515 // Boost
516 bool HasBoost() const { return m_hasBoost; }
517 void SetBoosting(bool boost, bool saveToDB = true);
518
519 z_stream_s* GetCompressionStream() { return _compressionStream; }
520
521public: // opcodes handlers
522 void Handle_NULL(WorldPacket& recvPacket); // not used
523 void Handle_EarlyProccess(WorldPacket& recvPacket); // just mark packets processed in WorldSocket::OnRead
524 void Handle_EarlyProccessContinued(WorldPacket& recvPacket); //Found in sniffs
525 void Handle_Deprecated(WorldPacket& recvPacket) const; // never used anymore by client
527
528 void HandleCharEnumOpcode(WorldPacket& recvPacket);
529 void HandleCharDeleteOpcode(WorldPacket& recvPacket);
530 void HandleCharCreateOpcode(WorldPacket& recvPacket);
532 void HandlePlayerLoginOpcode(WorldPacket& recvPacket);
533 void HandleLoadScreenOpcode(WorldPacket& recvPacket);
538 void HandleReorderCharacters(WorldPacket& recvData);
539 void HandleOpeningCinematic(WorldPacket& recvData);
540
541 // played time
542 void HandlePlayedTime(WorldPacket& recvPacket);
543
544 // Boost
545 void SendBattlePayDistributionUpdate(uint64 playerGuid, int8 bonusId, int32 bonusFlag, int32 textId, std::string const& bonusText, std::string const& bonusText2);
546 void HandleBattleCharBoost(WorldPacket& recvPacket);
547
548 // new
549 void HandleMoveUnRootAck(WorldPacket& recvPacket);
550 void HandleMoveRootAck(WorldPacket& recvPacket);
551 void HandleMoveGravityAck(WorldPacket& recvData);
552 void HandleReturnToGraveyard(WorldPacket& recvPacket);
553
554 // new inspect
555 void HandleInspectOpcode(WorldPacket& recvPacket);
556
557 // new party stats
559
560 void HandleMoveWaterWalkAck(WorldPacket& recvPacket);
561 void HandleFeatherFallAck(WorldPacket& recvData);
562
563 void HandleMoveHoverAck(WorldPacket& recvData);
564
566
567 // character view
568 void HandleShowingHelmOpcode(WorldPacket& recvData);
570
571 // repair
572 void HandleRepairItemOpcode(WorldPacket& recvPacket);
573
574 // Knockback
575 void HandleMoveKnockBackAck(WorldPacket& recvPacket);
576
577 void HandleMoveTeleportAck(WorldPacket& recvPacket);
580 void HandleMovementForceAck(WorldPacket& recvPacket);
582
583 void HandleRepopRequestOpcode(WorldPacket& recvPacket);
585 void HandleLootMoneyOpcode(WorldPacket& recvPacket);
586 void HandleLootOpcode(WorldPacket& recvPacket);
587 void HandleLootReleaseOpcode(WorldPacket& recvPacket);
588 void HandleLootMasterGiveOpcode(WorldPacket& recvPacket);
589 void HandleWhoOpcode(WorldPacket& recvPacket);
590 void HandleLogoutRequestOpcode(WorldPacket& recvPacket);
591 void HandlePlayerLogoutOpcode(WorldPacket& recvPacket);
592 void HandleLogoutCancelOpcode(WorldPacket& recvPacket);
593 void HandleChangeCurrencyFlags(WorldPacket& recvPacket);
594
595 // GM Ticket opcodes
596 void HandleGMTicketCreateOpcode(WorldPacket& recvPacket);
597 void HandleGMTicketUpdateOpcode(WorldPacket& recvPacket);
598 void HandleGMTicketDeleteOpcode(WorldPacket& recvPacket);
602 void HandleGMSurveySubmit(WorldPacket& recvPacket);
603 void HandleReportLag(WorldPacket& recvPacket);
604 void HandleGMResponseResolve(WorldPacket& recvPacket);
605
606 // FeedBackSystem
607 void HandleSubmitBugOpcode(WorldPacket& recvPacket);
608 void HandleSubmitSuggestOpcode(WorldPacket& recvPacket);
609
610 void HandleTogglePvP(WorldPacket& recvPacket);
611 void HandleSetPvP(WorldPacket& recvPacket);
612
613 void HandleZoneUpdateOpcode(WorldPacket& recvPacket);
614 void HandleSetSelectionOpcode(WorldPacket& recvPacket);
616 void HandleEmoteOpcode(WorldPacket& recvPacket);
617 void HandleContactListOpcode(WorldPacket& recvPacket);
618 void HandleAddFriendOpcode(WorldPacket& recvPacket);
619 void HandleAddFriendOpcodeCallBack(PreparedQueryResult result, std::string const& friendNote);
620 void HandleDelFriendOpcode(WorldPacket& recvPacket);
621 void HandleAddIgnoreOpcode(WorldPacket& recvPacket);
623 void HandleDelIgnoreOpcode(WorldPacket& recvPacket);
625 void HandleBugOpcode(WorldPacket& recvPacket);
626
627 void HandleAreaTriggerOpcode(WorldPacket& recvPacket);
628
629 void HandleSetFactionAtWar(WorldPacket& recvData);
631 void HandleSetFactionCheat(WorldPacket& recvData);
636
637 void HandleUpdateAccountData(WorldPacket& recvPacket);
638 void HandleRequestAccountData(WorldPacket& recvPacket);
640
641 void HandleGameObjectUseOpcode(WorldPacket& recPacket);
642 void HandleGameobjectReportUse(WorldPacket& recvPacket);
643
644
645 void HandleQueryTimeOpcode(WorldPacket& recvPacket);
646
647 void HandleCreatureQueryOpcode(WorldPacket& recvPacket);
648
650
652 void HandleMoveWorldportAckOpcode(); // for server-side calls
653
654 void HandleMovementOpcodes(WorldPacket& recvPacket);
662
664
666
667 void HandleGroupInviteOpcode(WorldPacket& recvPacket);
670 void HandleGroupSetLeaderOpcode(WorldPacket& recvPacket);
672 void HandleGroupDisbandOpcode(WorldPacket& recvPacket);
674 void HandleLootMethodOpcode(WorldPacket& recvPacket);
675 void HandleLootRoll(WorldPacket& recvData);
688
689 void HandlePetitionBuyOpcode(WorldPacket& recvData);
696 void SendPetitionSignResults(ObjectGuid petitionGuid, ObjectGuid playerGuid, uint8 result);
697
698 void HandleGuildQueryOpcode(WorldPacket& recvPacket);
699 void HandleGuildInviteOpcode(WorldPacket& recvPacket);
700 void HandleGuildRemoveOpcode(WorldPacket& recvPacket);
701 void HandleGuildAcceptOpcode(WorldPacket& recvPacket);
702 void HandleGuildDeclineOpcode(WorldPacket& recvPacket);
704 void HandleGuildRosterOpcode(WorldPacket& recvPacket);
706 void HandleGuildPromoteOpcode(WorldPacket& recvPacket);
707 void HandleGuildDemoteOpcode(WorldPacket& recvPacket);
709 void HandleGuildLeaveOpcode(WorldPacket& recvPacket);
710 void HandleGuildDisbandOpcode(WorldPacket& recvPacket);
711 void HandleGuildSetGuildMaster(WorldPacket& recvPacket);
713 void HandleGuildMOTDOpcode(WorldPacket& recvPacket);
715 void HandleGuildSetNoteOpcode(WorldPacket& recvPacket);
718 void HandleGuildQueryNewsOpcode(WorldPacket& recvPacket);
720 void HandleGuildAddRankOpcode(WorldPacket& recvPacket);
721 void HandleGuildDelRankOpcode(WorldPacket& recvPacket);
728
730 void HandleGuildFinderBrowse(WorldPacket& recvPacket);
737
738
739 void HandleBuyBankSlotOpcode(WorldPacket& recvPacket);
741 void HandleGossipHelloOpcode(WorldPacket& recvPacket);
743 void HandleNpcTextQueryOpcode(WorldPacket& recvPacket);
744
745 void SendTrainerBuyFailed(ObjectGuid guid, uint32 spellId, uint32 reason);
746
747 void HandleDuelProposedOpcode(WorldPacket& recvPacket);
748 void HandleDuelResponseOpcode(WorldPacket& recvPacket);
749 bool HandlePendingPetBattlePvpDuelResponse(bool accepted);
750
751
752
753 void HandleGetMailList(WorldPacket& recvData);
754 void HandleSendMail(WorldPacket& recvData);
755 void HandleMailTakeMoney(WorldPacket& recvData);
756 void HandleMailTakeItem(WorldPacket& recvData);
757 void HandleMailMarkAsRead(WorldPacket& recvData);
759 void HandleMailDelete(WorldPacket& recvData);
760 void HandleItemTextQuery(WorldPacket& recvData);
762 void HandleQueryNextMailTime(WorldPacket& recvData);
763 void HandleCancelChanneling(WorldPacket& recvData);
764
765 void HandleSplitItemOpcode(WorldPacket& recvPacket);
766 void HandleSwapInvItemOpcode(WorldPacket& recvPacket);
767 void HandleDestroyItemOpcode(WorldPacket& recvPacket);
768 void HandleAutoEquipItemOpcode(WorldPacket& recvPacket);
769 void HandleSellItemOpcode(WorldPacket& recvPacket);
770 void HandleBuyItemInSlotOpcode(WorldPacket& recvPacket);
771 void HandleBuyItemOpcode(WorldPacket& recvPacket);
773 void HandleReadItem(WorldPacket& recvPacket);
775 void HandleSwapItem(WorldPacket& recvPacket);
776 void HandleBuybackItem(WorldPacket& recvPacket);
777 void HandleAutoBankItemOpcode(WorldPacket& recvPacket);
779 void HandleWrapItemOpcode(WorldPacket& recvPacket);
780
781 void HandleSetSheathedOpcode(WorldPacket& recvPacket);
782
783 void HandleUseItemOpcode(WorldPacket& recvPacket);
784 void HandleOpenItemOpcode(WorldPacket& recvPacket);
785 void HandleCastSpellOpcode(WorldPacket& recvPacket);
786 void HandleCancelCastOpcode(WorldPacket& recvPacket);
787 void HandleCancelAuraOpcode(WorldPacket& recvPacket);
790
791 void HandleLearnTalentOpcode(WorldPacket& recvPacket);
792 void HandleLearnPreviewTalents(WorldPacket& recvPacket);
794 void HandleUnlearnSkillOpcode(WorldPacket& recvPacket);
796
805 void HandleQuestQueryOpcode(WorldPacket& recvPacket);
806 void HandleQuestgiverCancel(WorldPacket& recvData);
807 void HandleQuestLogSwapQuest(WorldPacket& recvData);
812 void HandlePushQuestToParty(WorldPacket& recvPacket);
813 void HandleQuestPushResult(WorldPacket& recvPacket);
814
815 void HandleMessagechatOpcode(WorldPacket& recvPacket);
817 void SendPlayerNotFoundNotice(std::string const& name);
818 void SendPlayerAmbiguousNotice(std::string const& name);
821 void HandleTextEmoteOpcode(WorldPacket& recvPacket);
822 void HandleChatIgnoredOpcode(WorldPacket& recvPacket);
823
826
827 void HandleReclaimCorpseOpcode(WorldPacket& recvPacket);
828 void HandleCorpseQueryOpcode(WorldPacket& recvPacket);
832
833 void HandleJoinChannel(WorldPacket& recvPacket);
834 void HandleLeaveChannel(WorldPacket& recvPacket);
835 void HandleChannelList(WorldPacket& recvPacket);
836 void HandleChannelPassword(WorldPacket& recvPacket);
837 void HandleChannelSetOwner(WorldPacket& recvPacket);
838 void HandleChannelOwner(WorldPacket& recvPacket);
839 void HandleChannelModerator(WorldPacket& recvPacket);
840 void HandleChannelUnmoderator(WorldPacket& recvPacket);
841 void HandleChannelMute(WorldPacket& recvPacket);
842 void HandleChannelUnmute(WorldPacket& recvPacket);
843 void HandleChannelInvite(WorldPacket& recvPacket);
844 void HandleChannelKick(WorldPacket& recvPacket);
845 void HandleChannelBan(WorldPacket& recvPacket);
846 void HandleChannelUnban(WorldPacket& recvPacket);
847 void HandleChannelAnnouncements(WorldPacket& recvPacket);
848 void HandleChannelDeclineInvite(WorldPacket& recvPacket);
851
852 void HandleCompleteCinematic(WorldPacket& recvPacket);
853 void HandleNextCinematicCamera(WorldPacket& recvPacket);
854
855 void HandlePageTextQueryOpcode(WorldPacket& recvPacket);
856 void SendPageText(ObjectGuid GameObjectGUID);
857
858 void HandleSceneCompleted(WorldPacket& recvPacket);
859
860 void HandleTutorialFlag(WorldPacket& recvData);
861 void HandleTutorialClear(WorldPacket& recvData);
862 void HandleTutorialReset(WorldPacket& recvData);
863
864 //Pet
865 void HandlePetAction(WorldPacket& recvData);
866 void HandlePetActionHelper(Unit* pet, uint64 guid1, uint32 spellid, uint16 flag, uint64 guid2, float x, float y, float z);
867 void HandlePetSetAction(WorldPacket& recvData);
868 void HandlePetAbandon(WorldPacket& recvData);
869 void HandlePetRename(WorldPacket& recvData);
870 void HandlePetCancelAuraOpcode(WorldPacket& recvPacket);
872 void HandlePetCastSpellOpcode(WorldPacket& recvPacket);
873 void HandlePetLearnTalent(WorldPacket& recvPacket);
875
877
878 void HandleCharRenameOpcode(WorldPacket& recvData);
879 void HandleChangePlayerNameOpcodeCallBack(PreparedQueryResult result, std::string const& newName);
883
884 void HandleTotemDestroyed(WorldPacket& recvData);
885 void HandleDismissCritter(WorldPacket& recvData);
886
887 //Battleground
890 void HandlePVPLogDataOpcode(WorldPacket& recvData);
895 void HandleReportPvPAFK(WorldPacket& recvData);
896 void HandleRequestPvpOptions(WorldPacket& recvData);
897 void HandleRequestPvpReward(WorldPacket& recvData);
899
900 void HandleWardenDataOpcode(WorldPacket& recvData);
902 void HandleMinimapPingOpcode(WorldPacket& recvData);
903 void HandleRandomRollOpcode(WorldPacket& recvData);
904 void HandleFarSightOpcode(WorldPacket& recvData);
908 void HandleRealmSplitOpcode(WorldPacket& recvData);
909 void HandleTimeSyncResp(WorldPacket& recvData);
910 void HandleWhoisOpcode(WorldPacket& recvData);
913 void HandleInstanceLockResponse(WorldPacket& recvPacket);
914
915 // Battlefield
917 void SendBfInvitePlayerToWar(uint64 guid, uint32 zoneId, uint32 time);
919 void SendBfQueueInviteResponse(uint64 guid, uint32 zoneId, bool canQueue = true, bool full = false);
920 void SendBfEntered(uint64 guid);
924 void HandleBfExitRequest(WorldPacket& recvData);
925
926 // Looking for Dungeon/Raid
931 void HandleLfgJoinOpcode(WorldPacket& recvData);
932 void HandleLfgLeaveOpcode(WorldPacket& recvData);
933 void HandleLfgSetRolesOpcode(WorldPacket& recvData);
936 void HandleLFDTeleportOpcode(WorldPacket& recvData);
937 void HandleLfrJoinOpcode(WorldPacket& recvData);
938 void HandleLfrLeaveOpcode(WorldPacket& recvData);
939 void HandleLfgGetStatus(WorldPacket& recvData);
940
941 // Challenge Mode
945
946 void SendLfgUpdateStatus(lfg::LfgUpdateData const& updateData, bool party, uint64 queueGuidOverride = 0, uint8 queueIdOverride = 0);
947 void SendLfgRoleChosen(uint64 guid, uint8 roles);
948 void SendLfgRoleCheckUpdate(lfg::LfgRoleCheck const& pRoleCheck);
949 void SendLfgClearStatus(uint64 lfgGroupGuid = 0, uint8 queueIdOverride = 0, bool groupLeave = false);
950 void SendLfgLfrList(bool update);
951 void SendLfgJoinResult(lfg::LfgJoinResultData const& joinData);
952 void SendLfgQueueStatus(lfg::LfgQueueStatusData const& queueData);
953 void SendLfgPlayerReward(lfg::LfgPlayerRewardData const& lfgPlayerRewardData);
955 void SendLfgUpdateProposal(lfg::LfgProposal const& proposal);
956 void SendLfgDisabled();
957 void SendLfgOfferContinue(uint32 dungeonEntry);
958 void SendLfgTeleportError(uint8 err);
959
963 void HandleSelfResOpcode(WorldPacket& recvData);
964 void HandleComplainOpcode(WorldPacket& recvData);
966
967 // Socket gem
968 void HandleSocketOpcode(WorldPacket& recvData);
969 void SendUpdateSockets(ObjectGuid ItemGUID, Item* item);
970
972
974 void HandleItemRefund(WorldPacket& recvData);
977
982
983 // Guild Bank
984 void HandleGuildPermissions(WorldPacket& recvData);
987 void HandleGuildBankQueryTab(WorldPacket& recvData);
988 void HandleGuildBankLogQuery(WorldPacket& recvData);
992 void HandleGuildBankTabNote(WorldPacket& recvData);
993
995 void HandleGuildBankBuyTab(WorldPacket& recvData);
999
1000 // Refer-a-Friend
1001 void HandleGrantLevel(WorldPacket& recvData);
1002 void HandleAcceptGrantLevel(WorldPacket& recvData);
1003
1004 // Calendar
1005 void HandleCalendarGetCalendar(WorldPacket& recvData);
1006 void HandleCalendarGetEvent(WorldPacket& recvData);
1007 void HandleCalendarGuildFilter(WorldPacket& recvData);
1008 void HandleCalendarAddEvent(WorldPacket& recvData);
1009 void HandleCalendarUpdateEvent(WorldPacket& recvData);
1010 void HandleCalendarRemoveEvent(WorldPacket& recvData);
1011 void HandleCalendarCopyEvent(WorldPacket& recvData);
1012 void HandleCalendarEventInvite(WorldPacket& recvData);
1013 void HandleCalendarEventRsvp(WorldPacket& recvData);
1015 void HandleCalendarEventStatus(WorldPacket& recvData);
1017 void HandleCalendarComplain(WorldPacket& recvData);
1019 void HandleCalendarEventSignup(WorldPacket& recvData);
1020
1021 void SendCalendarRaidLockout(InstanceSave const* save, bool add);
1024
1025 // Void Storage
1026 void HandleVoidStorageUnlock(WorldPacket& recvData);
1027 void HandleVoidStorageQuery(WorldPacket& recvData);
1028 void HandleVoidStorageTransfer(WorldPacket& recvData);
1029 void HandleVoidSwapItem(WorldPacket& recvData);
1031
1032 // Transmogrification
1033 void HandleTransmogrifyItems(WorldPacket& recvData);
1034
1035 // Reforge
1036 void HandleReforgeItemOpcode(WorldPacket& recvData);
1037 void SendReforgeResult(bool success);
1038
1039 // BlackMarket
1041 void SendBlackMarketHello(ObjectGuid NpcGUID, bool Open);
1044
1047
1048 // Miscellaneous
1049 void HandleSpellClick(WorldPacket& recvData);
1051 void HandleAlterAppearance(WorldPacket& recvData);
1053
1054 void HandleCharCustomize(WorldPacket& recvData);
1057 void HandleEquipmentSetSave(WorldPacket& recvData);
1058 void HandleEquipmentSetDelete(WorldPacket& recvData);
1059 void HandleEquipmentSetUse(WorldPacket& recvData);
1062 void HandleQuestNPCQuery(WorldPacket& recvData);
1064 void HandleQuestPOIQuery(WorldPacket& recvData);
1066 void HandleRideVehicleInteract(WorldPacket& recvData);
1068 void HandleRequestHotfix(WorldPacket& recvPacket);
1070 void HandleViolenceLevel(WorldPacket& recvPacket);
1072 void HandleSelectFactionOpcode(WorldPacket& recvPacket);
1075 void HandleRequestCemeteryList(WorldPacket& recvPacket);
1076
1077 void SendBroadcastText(uint32 entry);
1078
1080
1081 // Compact Unit Frames (4.x)
1082 void HandleSaveCUFProfiles(WorldPacket& recvPacket);
1083 void SendLoadCUFProfiles();
1084
1085 // Battle Pets
1089 void HandlePetBattleRequestPvp(WorldPacket& recvData);
1090 void HandleBattlePetDelete(WorldPacket& recvData);
1091 void HandleBattlePetLearn(WorldPacket& recvData);
1092 void HandleBattlePetModifyName(WorldPacket& recvData);
1093 void HandleBattlePetQueryName(WorldPacket& recvData);
1096 void HandleBattlePetSetFlags(WorldPacket& recvData);
1098 void HandleBattlePetCage(WorldPacket& recvData);
1099 void HandleBattlePetInput(WorldPacket& recvData);
1102 void HandleBattlePetQuitNotify(WorldPacket& recvData);
1107
1108 // Titles
1109 void HandleSetTitleOpcode(WorldPacket& recvData);
1110 void SendTitleEarned(uint32 TitleIndex);
1111 void SendTitleLost(uint32 TitleIndex);
1112
1113 void SendPlayMusic(uint32 SoundKitID);
1114
1115 void SendCrossedInebriationThreshold(ObjectGuid guid, uint32 ItemID, DrunkenState drunkenState);
1116
1117private:
1119 void ProcessQueryCallbacks();
1120
1131
1132 friend class World;
1133protected:
1135 {
1136 friend class World;
1137 public:
1139 bool EvaluateOpcode(WorldPacket& p) const;
1140 void AllowOpcode(uint16 opcode, bool allow) { _isOpcodeAllowed[opcode] = allow; }
1141 protected:
1148
1149 bool IsOpcodeAllowed(uint16 opcode) const
1150 {
1151 OpcodeStatusMap::const_iterator itr = _isOpcodeAllowed.find(opcode);
1152 if (itr == _isOpcodeAllowed.end())
1153 return true; // No presence in the map indicates this is the first time the opcode was sent this session, so allow
1154
1155 return itr->second;
1156 }
1157
1159
1160 private:
1162 OpcodeStatusMap _isOpcodeAllowed; // could be bool array, but wouldn't be practical for game versions with non-linear opcodes
1164
1165 DosProtection(DosProtection const& right) = delete;
1166 DosProtection& operator=(DosProtection const& right) = delete;
1168
1169private:
1170 // private trade methods
1171 void moveItems(Item* myItems[], Item* hisItems[]);
1172
1173 // logging helper
1174 void LogUnexpectedOpcode(WorldPacket* packet, const char* status, const char* reason) const;
1175 void LogUnprocessedTail(WorldPacket* packet) const;
1176
1177 // EnumData helpers
1179 {
1180 return _legitCharacters.find(lowGUID) != _legitCharacters.end();
1181 }
1182
1183 // this stores the GUIDs of the characters who can login
1184 // characters who failed on Player::BuildEnumData shouldn't login
1185 std::set<uint32> _legitCharacters;
1186
1187 uint32 m_GUIDLow; // set loggined or recently logout player (while m_playerRecentlyLogout set)
1190 std::string m_Address;
1191
1197
1198 typedef std::list<AddonInfo> AddonsList;
1199
1200 // Warden
1201 Warden* _warden; // Remains NULL if Warden system is not enabled by config
1202
1204 bool m_inQueue; // session wait in auth.queue
1205 bool m_playerLoading; // code processed in LoginPlayer
1206 bool m_playerLogout; // code processed in LogoutPlayer
1217 std::vector<std::string> _registeredAddonPrefixes;
1226 WorldSession(WorldSession const& right) = delete;
1227 WorldSession& operator=(WorldSession const& right) = delete;
1228};
1229#endif
std::array< uint8, SESSION_KEY_LENGTH > SessionKey
Definition AuthDefines.h:8
LocaleConstant
Definition Common.h:138
AccountTypes
Definition Common.h:129
#define MAX_ACCOUNT_TUTORIAL_VALUES
Definition Common.h:157
std::int32_t int32
Definition Define.h:73
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
std::int8_t int8
Definition Define.h:75
#define ATTR_PRINTF(F, V)
Definition Define.h:55
std::uint64_t uint64
Definition Define.h:76
std::uint16_t uint16
Definition Define.h:78
Skyfire::Future< PreparedQueryResult > PreparedQueryResultFuture
Skyfire::Future< SQLQueryHolder * > QueryResultHolderFuture
Definition QueryHolder.h:30
Skyfire::AutoPtr< PreparedResultSet, Skyfire::Mutex > PreparedQueryResult
Definition QueryResult.h:94
ResponseCodes
TradeStatus
VoidTransferError
BattlegroundTypeId
ActivateTaxiReply
5.4.8 18414
DrunkenState
PartyResult
Skyfire::AutoPtr< Transaction, Skyfire::Mutex > SQLTransaction
Definition Transaction.h:42
#define UNORDERED_MAP
std::string Name
User specified variables.
CharacterCreateInfo(std::string const &name, uint8 race, uint8 cclass, uint8 gender, uint8 skin, uint8 face, uint8 hairStyle, uint8 hairColor, uint8 facialHair, uint8 outfitId, WorldPacket &data)
friend class WorldSession
friend class Player
uint8 CharCount
Server side data.
Definition Item.h:202
virtual bool ProcessLogout() const
virtual bool Process(WorldPacket *packet)
MapSessionFilter(WorldSession *pSession)
virtual bool Process(WorldPacket *)
PacketFilter & operator=(PacketFilter const &right)=delete
virtual bool ProcessLogout() const
PacketFilter(PacketFilter const &right)=delete
static uint16 DropHighBytes(uint16 opcode)
PacketFilter(WorldSession *pSession)
WorldSession *const m_pSession
virtual ~PacketFilter()
Definition Unit.h:1367
bool EvaluateOpcode(WorldPacket &p) const
bool IsOpcodeAllowed(uint16 opcode) const
void AllowOpcode(uint16 opcode, bool allow)
UNORDERED_MAP< uint16, bool > OpcodeStatusMap
DosProtection(DosProtection const &right)=delete
DosProtection(WorldSession *s)
DosProtection & operator=(DosProtection const &right)=delete
OpcodeStatusMap _isOpcodeAllowed
WorldSessionFilter(WorldSession *pSession)
virtual bool Process(WorldPacket *packet)
Player session in the World.
void SendLfgPartyLockInfo()
void HandleBattlePetInputFirstPet(WorldPacket &recvData)
void SendAuctionHello(ObjectGuid guid, Creature *unit)
QueryCallback< PreparedQueryResult, CharacterCreateInfo *, true > _charCreateCallback
void HandleGuildRequestMaxDailyXP(WorldPacket &recvPacket)
void SendBroadcastText(uint32 entry)
void SetPlayer(Player *player)
void HandleGMTicketCreateOpcode(WorldPacket &recvPacket)
void HandleGuildBankTabNote(WorldPacket &recvData)
void HandleGossipSelectOptionOpcode(WorldPacket &recvPacket)
bool m_playerRecentlyLogout
void HandleAuctionListPendingSales(WorldPacket &recvData)
bool Update(uint32 diff, PacketFilter &updater)
Update the WorldSession (triggered by World update).
void HandleMountSpecialAnimOpcode(WorldPacket &recvdata)
void SendBlackMarketBidOnItemResult(uint32 ItemID)
void HandleGetChannelMemberCount(WorldPacket &recvPacket)
void HandleBattlegroundPlayerPositionsOpcode(WorldPacket &recvData)
void SaveTutorialsData(SQLTransaction &trans)
void HandleBattlePetInput(WorldPacket &recvData)
void HandleDestroyItemOpcode(WorldPacket &recvPacket)
void HandleLootMoneyOpcode(WorldPacket &recvPacket)
void LogoutPlayer(bool save)
Log the player out
void HandleLfgJoinOpcode(WorldPacket &recvData)
void HandleCharCustomize(WorldPacket &recvData)
void KickPlayer()
Kick a player out of the World.
void HandleEquipmentSetUse(WorldPacket &recvData)
uint32 m_virtualRealmID
void HandleAuctionListItems(WorldPacket &recvData)
void HandleGuildFinderBrowse(WorldPacket &recvPacket)
void HandleCalendarGetEvent(WorldPacket &recvData)
AccountData * GetAccountData(AccountDataType type)
void HandleMailCreateTextItem(WorldPacket &recvData)
void HandleUnstablePetCallback(PreparedQueryResult result, uint32 petId)
void SendLfgJoinResult(lfg::LfgJoinResultData const &joinData)
void HandleBfExitRequest(WorldPacket &recvData)
void HandleGuildSetNoteOpcode(WorldPacket &recvPacket)
void HandleSetDungeonDifficultyOpcode(WorldPacket &recvData)
void SendBfLeaveMessage(uint64 guid, BFLeaveReason reason=BF_LEAVE_REASON_EXITED)
void HandleLfgLeaveOpcode(WorldPacket &recvData)
void HandleMoveSplineDoneOpcode(WorldPacket &recvPacket)
void HandleCalendarEventRsvp(WorldPacket &recvData)
void HandleCorpseMapPositionQuery(WorldPacket &recvPacket)
void HandleSetSelectionOpcode(WorldPacket &recvPacket)
void HandleSaveGuildEmblemOpcode(WorldPacket &recvPacket)
void HandleInspectOpcode(WorldPacket &recvPacket)
void SetBoosting(bool boost, bool saveToDB=true)
void HandlePlayerLoginOpcode(WorldPacket &recvPacket)
void HandleDismissControlledVehicle(WorldPacket &recvData)
void HandleAuctionListOwnerItems(WorldPacket &recvData)
void HandleTimeSyncResp(WorldPacket &recvData)
void HandleChannelInvite(WorldPacket &recvPacket)
uint8 Expansion() const
void HandleBattlemasterJoinOpcode(WorldPacket &recvData)
void HandleLfgSetCommentOpcode(WorldPacket &recvData)
void HandleGroupUninviteGuidOpcode(WorldPacket &recvPacket)
bool HasBoost() const
void HandleDiscardedTimeSyncAcks(WorldPacket &recvData)
void HandleBuyBankSlotOpcode(WorldPacket &recvPacket)
void HandleMoveTeleportAck(WorldPacket &recvPacket)
std::string m_Address
void HandleActivateTaxiOpcode(WorldPacket &recvPacket)
void HandleMailReturnToSender(WorldPacket &recvData)
const char * GetSkyFireString(int32 entry) const
void HandleQuestNPCQuery(WorldPacket &recvData)
void HandleAlterAppearance(WorldPacket &recvData)
void HandleCancelGrowthAuraOpcode(WorldPacket &recvPacket)
void HandleGMTicketGetTicketOpcode(WorldPacket &recvPacket)
void HandleCompleteCinematic(WorldPacket &recvPacket)
void HandleChatIgnoredOpcode(WorldPacket &recvPacket)
void SendPlayerNotFoundNotice(std::string const &name)
void HandleSceneCompleted(WorldPacket &recvPacket)
Skyfire::LockedQueue< WorldPacket *, Skyfire::Mutex > _recvQueue
void SendLfgQueueStatus(lfg::LfgQueueStatusData const &queueData)
PreparedQueryResultFuture _stablePetCallback
void HandleNextCinematicCamera(WorldPacket &recvPacket)
void HandleViolenceLevel(WorldPacket &recvPacket)
void moveItems(Item *myItems[], Item *hisItems[])
void HandleGuildRequestChallengeUpdate(WorldPacket &recvPacket)
void HandleShowingHelmOpcode(WorldPacket &recvData)
void HandleLootMasterGiveOpcode(WorldPacket &recvPacket)
void LogoutRequest(time_t requestTime)
Engage the logout process for the user.
void HandleMinimapPingOpcode(WorldPacket &recvData)
AddonsList m_addonsList
void HandleGuildQueryRanksOpcode(WorldPacket &recvPacket)
void SendClientCacheVersion(uint32 version)
void HandleSetFactionAtWar(WorldPacket &recvData)
void HandleUnstablePet(WorldPacket &recvPacket)
void SendTrainerList(uint64 guid)
void HandleBattlePetDelete(WorldPacket &recvData)
void HandleQueryQuestsCompleted(WorldPacket &recvData)
void HandleAddFriendOpcodeCallBack(PreparedQueryResult result, std::string const &friendNote)
void HandleGroupAssistantLeaderOpcode(WorldPacket &recvData)
void HandlePlayedTime(WorldPacket &recvPacket)
void HandleRandomRollOpcode(WorldPacket &recvData)
void HandleIgnoreTradeOpcode(WorldPacket &recvPacket)
void HandleSendMail(WorldPacket &recvData)
void HandleGuildRewardsQueryOpcode(WorldPacket &recvPacket)
void SendLfgRoleChosen(uint64 guid, uint8 roles)
void HandleChangeSeatsOnControlledVehicle(WorldPacket &recvData)
void HandleLogoutRequestOpcode(WorldPacket &recvPacket)
void HandleDismissCritter(WorldPacket &recvData)
void HandleSocketOpcode(WorldPacket &recvData)
void HandleMovementForceAck(WorldPacket &recvPacket)
void HandleGroupEveryoneIsAssistantOpcode(WorldPacket &recvData)
void HandleTrainerBuySpellOpcode(WorldPacket &recvPacket)
void InitializeQueryCallbackParameters()
void ReadAddonsInfo(WorldPacket &data)
void HandleCalendarGetCalendar(WorldPacket &recvData)
void HandleGMSurveySubmit(WorldPacket &recvPacket)
void HandleCharEnumOpcode(WorldPacket &recvPacket)
void HandlePetCancelAuraOpcode(WorldPacket &recvPacket)
void HandleMoveHoverAck(WorldPacket &recvData)
bool isLogingOut() const
Is the user engaged in a log out process?
void HandleBattlePetModifyName(WorldPacket &recvData)
void HandleSetPartyAssignmentOpcode(WorldPacket &recvData)
LocaleConstant m_sessionDbLocaleIndex
void HandleEjectPassenger(WorldPacket &data)
void HandleGuildFinderDeclineRecruit(WorldPacket &recvPacket)
void HandleResetInstancesOpcode(WorldPacket &recvData)
void HandleSetLfgBonusFactionID(WorldPacket &recvData)
void HandleAddonRegisteredPrefixesOpcode(WorldPacket &recvPacket)
void HandleGroupSetRolesOpcode(WorldPacket &recvData)
void HandleWardenDataOpcode(WorldPacket &recvData)
Definition Warden.cpp:205
void SendNotification(const char *format,...) ATTR_PRINTF(2
bool m_TutorialsChanged
void HandleAutoDeclineGuildInvites(WorldPacket &recvPacket)
void HandlePetRename(WorldPacket &recvData)
void HandleGuildRosterOpcode(WorldPacket &recvPacket)
void HandlePetCastSpellOpcode(WorldPacket &recvPacket)
void HandleCalendarEventInvite(WorldPacket &recvData)
void HandleVoiceSessionEnableOpcode(WorldPacket &recvData)
void HandleOpenItemOpcode(WorldPacket &recvPacket)
void HandleWorldStateUITimerUpdate(WorldPacket &recvData)
void HandleSellItemOpcode(WorldPacket &recvPacket)
void HandleGameObjectUseOpcode(WorldPacket &recPacket)
uint32 GetGuidLow() const
Get player guid if available. Use for logging purposes only.
void HandleMoveRootAck(WorldPacket &recvPacket)
void HandleRequestAccountData(WorldPacket &recvPacket)
void HandleGroupRaidConvertOpcode(WorldPacket &recvData)
uint32 m_clientTimeDelay
void SendLfgClearStatus(uint64 lfgGroupGuid=0, uint8 queueIdOverride=0, bool groupLeave=false)
void HandleGuildSetRankPermissionsOpcode(WorldPacket &recvPacket)
bool CheckStableMaster(uint64 guid)
void SendPetNameInvalid(uint32 error, std::string const &name, DeclinedName *declinedName, uint32 petNumber)
void HandleGMTicketUpdateOpcode(WorldPacket &recvPacket)
void HandleCalendarEventSignup(WorldPacket &recvData)
void HandleCalendarEventModeratorStatus(WorldPacket &recvData)
void SendStablePet(uint64 guid)
void HandleWhoisOpcode(WorldPacket &recvData)
AccountTypes GetSecurity() const
LocaleConstant GetSessionDbLocaleIndex() const
bool SendLearnNewTaxiNode(Creature *unit)
void HandleRespecWipeConfirmOpcode(WorldPacket &recvPacket)
void HandleCharFactionOrRaceChange(WorldPacket &recvData)
void HandleAddIgnoreOpcodeCallBack(PreparedQueryResult result)
void HandleQuestConfirmAccept(WorldPacket &recvData)
void HandleBfQueueInviteResponse(WorldPacket &recvData)
void HandleCalendarUpdateEvent(WorldPacket &recvData)
bool PlayerDisconnected() const
void SendNameQueryOpcode(ObjectGuid guid)
void HandleQuestLogRemoveQuest(WorldPacket &recvData)
void HandleBattlePetRequestJournal(WorldPacket &recvData)
void SendQuestgiverStatusMultiple()
void HandleSetWatchedFactionOpcode(WorldPacket &recvData)
void HandleBattlefieldLeaveOpcode(WorldPacket &recvData)
void SendTaxiMenu(Creature *unit)
void HandleSwapItem(WorldPacket &recvPacket)
void HandleSetActionButtonOpcode(WorldPacket &recvPacket)
void HandleBlackMarketRequestItemOpcode(WorldPacket &recvData)
void SendAuctionBidderNotification(uint32 location, uint32 auctionId, uint64 bidder, uint32 bidSum, uint32 diff, uint32 item_template)
void HandleNameQueryOpcode(WorldPacket &recvPacket)
void HandleSetFactionNotAtWar(WorldPacket &recvData)
void HandleDuelProposedOpcode(WorldPacket &recvPacket)
void HandleStableRevivePet(WorldPacket &recvPacket)
void SendAuctionRemovedNotification(uint32 auctionId, uint32 itemEntry, int32 randomPropertyId)
void HandleGMTicketCaseStatusOpcode(WorldPacket &recvPacket)
void SendLfgTeleportError(uint8 err)
void HandleGuildPromoteOpcode(WorldPacket &recvPacket)
void HandleRaidTargetUpdateOpcode(WorldPacket &recvData)
void HandleSetFactionInactiveOpcode(WorldPacket &recvData)
void HandleTextEmoteOpcode(WorldPacket &recvPacket)
void HandleSetCollisionHeightAck(WorldPacket &recvPacket)
void HandleQuestgiverQuestAutoLaunch(WorldPacket &recvPacket)
void HandleComplainOpcode(WorldPacket &recvData)
void HandleBattlePetFinalNotify(WorldPacket &recvData)
void HandleLFDSetBootVoteOpcode(WorldPacket &recvData)
void HandleBattlePetCage(WorldPacket &recvData)
void HandleGuildMOTDOpcode(WorldPacket &recvPacket)
void HandleChannelList(WorldPacket &recvPacket)
void HandleBinderActivateOpcode(WorldPacket &recvPacket)
void HandleDelIgnoreOpcode(WorldPacket &recvPacket)
void HandleClearTradeItemOpcode(WorldPacket &recvPacket)
std::list< AddonInfo > AddonsList
void HandleWhoOpcode(WorldPacket &recvPacket)
void HandleAutoStoreBagItemOpcode(WorldPacket &recvPacket)
void HandleAuctionSellItem(WorldPacket &recvData)
void HandleGuildReplaceGuildMaster(WorldPacket &recvPacket)
void HandlePlayerLogin(LoginQueryHolder *holder)
void HandleSummonResponseOpcode(WorldPacket &recvData)
void QueuePacket(WorldPacket *new_packet)
Add an incoming packet to the queue.
void HandleChannelPassword(WorldPacket &recvPacket)
void HandleSetPetSpecialization(WorldPacket &recvData)
void HandleSetTradeItemOpcode(WorldPacket &recvPacket)
class WorldSession::DosProtection AntiDOS
void SendCalendarRaidLockoutUpdated(InstanceSave const *save)
void HandleUnacceptTradeOpcode(WorldPacket &recvPacket)
void LoadAccountData(PreparedQueryResult result, uint32 mask)
bool PlayerRecentlyLoggedOut() const
void HandleChannelVoiceOnOpcode(WorldPacket &recvData)
void HandleWrapItemOpcode(WorldPacket &recvPacket)
void HandleAutoStoreBankItemOpcode(WorldPacket &recvPacket)
void SendLoadCUFProfiles()
void HandleMoveTimeSkippedOpcode(WorldPacket &recvData)
std::atomic< time_t > m_timeOutTime
z_stream_s * GetCompressionStream()
bool PlayerLogout() const
void HandleRepopRequestOpcode(WorldPacket &recvPacket)
void SendLfgLfrList(bool update)
void HandleCharCreateCallback(PreparedQueryResult result, CharacterCreateInfo *createInfo)
void HandleLoadScreenOpcode(WorldPacket &recvPacket)
QueryCallback< PreparedQueryResult, std::string > _addFriendCallback
void HandleCancelMountAuraOpcode(WorldPacket &recvData)
void HandleStablePet(WorldPacket &recvPacket)
void HandleSetTradeGoldOpcode(WorldPacket &recvPacket)
void HandleMovementOpcodes(WorldPacket &recvPacket)
void HandleBattlefieldStatusOpcode(WorldPacket &recvData)
void HandleResurrectResponseOpcode(WorldPacket &recvPacket)
void HandleRandomizeCharNameOpcode(WorldPacket &recvData)
void HandleUpdateProjectilePosition(WorldPacket &recvPacket)
void HandlePetBattleRequestPvp(WorldPacket &recvData)
void UpdateTimeOutTime(uint32 diff)
LocaleConstant GetSessionDbcLocale() const
void HandleRaidReadyCheckConfirmOpcode(WorldPacket &recvData)
void HandlePetitionShowListOpcode(WorldPacket &recvPacket)
void HandleTutorialFlag(WorldPacket &recvData)
std::string GetPlayerInfo() const
void HandleVoidSwapItem(WorldPacket &recvData)
void HandleQuestQueryOpcode(WorldPacket &recvPacket)
void HandleLootMethodOpcode(WorldPacket &recvPacket)
void HandleSelectFactionOpcode(WorldPacket &recvPacket)
void HandleGuildBankDepositMoney(WorldPacket &recvData)
void HandleItemRefund(WorldPacket &recvData)
void HandleSaveCUFProfiles(WorldPacket &recvPacket)
void HandleSetFactionCheat(WorldPacket &recvData)
uint32 GetRecruiterId() const
void HandleTurnInPetitionOpcode(WorldPacket &recvData)
void SendPetitionSignResults(ObjectGuid petitionGuid, ObjectGuid playerGuid, uint8 result)
AccountData m_accountData[uint8(AccountDataType::NUM_ACCOUNT_DATA_TYPES)]
void SendLfgPlayerReward(lfg::LfgPlayerRewardData const &lfgPlayerRewardData)
void HandleCalendarComplain(WorldPacket &recvData)
void SendAuctionOwnerNotification(AuctionEntry *auction)
void SendCrossedInebriationThreshold(ObjectGuid guid, uint32 ItemID, DrunkenState drunkenState)
void HandleGuildAchievementProgressQuery(WorldPacket &recvData)
void HandleQuestgiverAcceptQuestOpcode(WorldPacket &recvPacket)
void HandleGuildBankBuyTab(WorldPacket &recvData)
void HandlePetitionShowSignOpcode(WorldPacket &recvData)
void SendAuthWaitQue(uint32 position)
Handle the authentication waiting queue (to be completed).
Player * GetPlayer() const
rbac::RBACData * _RBACData
void HandleAutoEquipItemSlotOpcode(WorldPacket &recvPacket)
void HandleItemRefundInfoRequest(WorldPacket &recvData)
void HandleBusyTradeOpcode(WorldPacket &recvPacket)
bool PlayerLogoutWithSave() const
bool PlayerLoading() const
void HandleSwapInvItemOpcode(WorldPacket &recvPacket)
void HandleLootOpcode(WorldPacket &recvPacket)
void Handle_NULL(WorldPacket &recvPacket)
PreparedQueryResultFuture _charEnumCallback
void HandleCancelCastOpcode(WorldPacket &recvPacket)
void HandleQuestgiverStatusQueryOpcode(WorldPacket &recvPacket)
void SendTrainerBuyFailed(ObjectGuid guid, uint32 spellId, uint32 reason)
void HandlePVPLogDataOpcode(WorldPacket &recvData)
void HandleBattlePetQuitNotify(WorldPacket &recvData)
void LogUnexpectedOpcode(WorldPacket *packet, const char *status, const char *reason) const
Logging helper for unexpected opcodes.
void SetVirtualRealmID(uint32 VRealmID)
void SendBindPoint(Creature *npc)
void HandleCalendarAddEvent(WorldPacket &recvData)
bool IsARecruiter() const
void HandleDelFriendOpcode(WorldPacket &recvPacket)
void HandleQuestgiverCompleteQuest(WorldPacket &recvData)
void HandlePetSetAction(WorldPacket &recvData)
void HandleMailTakeItem(WorldPacket &recvData)
~WorldSession()
WorldSession destructor.
void HandleGMResponseResolve(WorldPacket &recvPacket)
void HandleMailTakeMoney(WorldPacket &recvData)
void SendAuctionCommandResult(AuctionEntry *auction, uint32 Action, uint32 ErrorCode, uint32 bidError=0)
void HandleGroupInviteOpcode(WorldPacket &recvPacket)
void HandleChangePlayerNameOpcodeCallBack(PreparedQueryResult result, std::string const &newName)
void HandleGetMailList(WorldPacket &recvData)
void HandleRequestPvpReward(WorldPacket &recvData)
void HandleGuildEventLogQueryOpcode(WorldPacket &recvPacket)
void HandleSelfResOpcode(WorldPacket &recvData)
void HandleEquipmentSetDelete(WorldPacket &recvData)
void HandleBugOpcode(WorldPacket &recvPacket)
void HandleTrainerListOpcode(WorldPacket &recvPacket)
void HandleGuildSetAchievementTracking(WorldPacket &recvPacket)
void HandleContactListOpcode(WorldPacket &recvPacket)
void SendSpiritResurrect()
void HandleBfEntryInviteResponse(WorldPacket &recvData)
void HandleCastSpellOpcode(WorldPacket &recvPacket)
void HandleLfgGetStatus(WorldPacket &recvData)
void Handle_EarlyProccess(WorldPacket &recvPacket)
void HandleAutoEquipItemOpcode(WorldPacket &recvPacket)
void HandleLootRoll(WorldPacket &recvData)
void HandleLearnPreviewTalentsPet(WorldPacket &recvPacket)
void HandleCreatureQueryOpcode(WorldPacket &recvPacket)
Only static data is sent in this packet !!!
void HandleOpeningCinematic(WorldPacket &recvData)
QueryCallback< PreparedQueryResult, std::string > _charRenameCallback
void HandleMirrorImageDataRequest(WorldPacket &recvData)
void ClearPetBattlePvpQueueState()
void Handle_EarlyProccessContinued(WorldPacket &recvPacket)
void HandleShowingCloakOpcode(WorldPacket &recvData)
void SendItemEnchantTimeUpdate(ObjectGuid Playerguid, ObjectGuid Itemguid, uint32 slot, uint32 Duration)
void HandleTotemDestroyed(WorldPacket &recvData)
void HandleReforgeItemOpcode(WorldPacket &recvData)
void HandlePlayerLogoutOpcode(WorldPacket &recvPacket)
void SendLfgUpdateStatus(lfg::LfgUpdateData const &updateData, bool party, uint64 queueGuidOverride=0, uint8 queueIdOverride=0)
void HandleReadItem(WorldPacket &recvPacket)
void LoadTutorialsData()
void SendBarberShopResult(BarberShopResult result)
PreparedQueryResultFuture _addIgnoreCallback
void SendCancelTrade(TradeStatus status)
void HandleGroupDisbandOpcode(WorldPacket &recvPacket)
void SendPageText(ObjectGuid GameObjectGUID)
void HandleJoinChannel(WorldPacket &recvPacket)
friend class World
void HandleBuyStableSlot(WorldPacket &recvPacket)
void HandleGameobjectReportUse(WorldPacket &recvPacket)
void HandlePetSpellAutocastOpcode(WorldPacket &recvPacket)
void HandleTransmogrifyItems(WorldPacket &recvData)
void SendTabardVendorActivate(uint64 guid)
void HandleStableSwapPetCallback(PreparedQueryResult result, uint32 petId)
void HandleReturnToGraveyard(WorldPacket &recvPacket)
void HandleSetRaidDifficultyOpcode(WorldPacket &recvData)
void HandleCalendarEventRemoveInvite(WorldPacket &recvData)
void SendBfEntered(uint64 guid)
void HandleGuildFinderRemoveApplication(WorldPacket &recvPacket)
void HandleBeginTradeOpcode(WorldPacket &recvPacket)
void HandleRequestVehicleExit(WorldPacket &recvData)
void HandleAutostoreLootItemOpcode(WorldPacket &recvPacket)
void HandleTaxiNodeStatusQueryOpcode(WorldPacket &recvPacket)
void HandleAuctionHelloOpcode(WorldPacket &recvPacket)
void HandleQueryGuildBankTabText(WorldPacket &recvData)
uint32 GetVirtualRealmID() const
void HandleCancelTradeOpcode(WorldPacket &recvPacket)
void SendAddonsInfo()
void HandleSubmitBugOpcode(WorldPacket &recvPacket)
void HandleBankerActivateOpcode(WorldPacket &recvPacket)
void HandleRequestCategoryCooldowns(WorldPacket &recvPacket)
void HandleForceSpeedChangeAck(WorldPacket &recvData)
QueryCallback< PreparedQueryResult, uint32 > _unstablePetCallback
void HandleOptOutOfLootOpcode(WorldPacket &recvData)
void SendPlayerAmbiguousNotice(std::string const &name)
QueryResultHolderFuture _charLoginCallback
void HandleGuildSetGuildMaster(WorldPacket &recvPacket)
void HandleGossipHelloOpcode(WorldPacket &recvPacket)
void HandleGroupChangeSubGroupOpcode(WorldPacket &recvData)
void SendBlackMarketRequestItemsResult()
void HandleStandStateChangeOpcode(WorldPacket &recvPacket)
void HandleGroupInitiatePollRole(WorldPacket &recvData)
void HandlePetAction(WorldPacket &recvData)
void HandleRideVehicleInteract(WorldPacket &recvData)
void HandleGameObjectQueryOpcode(WorldPacket &recvPacket)
Only static data is sent in this packet !!!
void HandleGuildBankLogQuery(WorldPacket &recvData)
void HandleReadyForAccountDataTimes(WorldPacket &recvData)
void HandleChallengeModeRequestLeaders(WorldPacket &recvData)
void UpdatePetBattlePvpQueueState()
void BuildPartyMemberStatsChangedPacket(Player *player, WorldPacket *data)
void HandleQuestgiverHelloOpcode(WorldPacket &recvPacket)
void SendActivateTaxiReply(ActivateTaxiReply reply)
void HandleBuyItemOpcode(WorldPacket &recvPacket)
void HandleCharDeleteOpcode(WorldPacket &recvPacket)
void HandleVoidStorageQuery(WorldPacket &recvData)
void HandleReorderCharacters(WorldPacket &recvData)
void HandleDuelResponseOpcode(WorldPacket &recvPacket)
void HandleMoveWorldportAckOpcode()
void HandleGuildAcceptOpcode(WorldPacket &recvPacket)
void HandleCorpseQueryOpcode(WorldPacket &recvPacket)
void HandleCharEnum(PreparedQueryResult result)
void HandleMoveSetCanTurnWhileFallingAck(WorldPacket &recvData)
void SendTitleEarned(uint32 TitleIndex)
void HandlePetitionBuyOpcode(WorldPacket &recvData)
void HandleNpcTextQueryOpcode(WorldPacket &recvPacket)
void SetInQueue(bool state)
Session in auth.queue currently.
void HandleQuestgiverRequestRewardOpcode(WorldPacket &recvPacket)
void HandleChannelUnban(WorldPacket &recvPacket)
void HandleBattlemasterHelloOpcode(WorldPacket &recvData)
void HandleUpdateMissileTrajectory(WorldPacket &recvPacket)
void HandleLearnPreviewTalents(WorldPacket &recvPacket)
void HandleMoveWaterWalkAck(WorldPacket &recvPacket)
uint32 getDialogStatus(Player *player, Object *questgiver, uint32 defstatus)
void HandleBattleCharBoost(WorldPacket &recvPacket)
void HandleLogoutCancelOpcode(WorldPacket &recvPacket)
void HandleGuildAssignRankOpcode(WorldPacket &recvPacket)
void HandleAcceptGrantLevel(WorldPacket &recvData)
void HandleMailMarkAsRead(WorldPacket &recvData)
WorldSession(WorldSession const &right)=delete
void SendLfgOfferContinue(uint32 dungeonEntry)
void HandleReportLag(WorldPacket &recvPacket)
void HandleChannelMute(WorldPacket &recvPacket)
void HandleGuildInviteOpcode(WorldPacket &recvPacket)
void HandlePetBattleStopPvpMatchmaking(WorldPacket &recvData)
void HandleEmoteOpcode(WorldPacket &recvPacket)
std::set< uint32 > _legitCharacters
void HandleMoveUnRootAck(WorldPacket &recvPacket)
void HandleGuildDisbandOpcode(WorldPacket &recvPacket)
bool HasPermission(uint32 permissionId)
void HandleAreaTriggerOpcode(WorldPacket &recvPacket)
void HandleChannelUnmute(WorldPacket &recvPacket)
void HandleQueryNextMailTime(WorldPacket &recvData)
void SendTimezoneInformation()
void HandleAuctionListBidderItems(WorldPacket &recvData)
void SendPacket(WorldPacket const *packet, bool forced=false)
Send a packet to the client.
void HandleMoveSetVehicleRecAck(WorldPacket &recvData)
void SendBfQueueInviteResponse(uint64 guid, uint32 zoneId, bool canQueue=true, bool full=false)
void HandleAcceptTradeOpcode(WorldPacket &recvPacket)
void HandleAreaSpiritHealerQueryOpcode(WorldPacket &recvData)
void SendWrongFactionNotice()
void HandleChannelBan(WorldPacket &recvPacket)
time_t timeLastWhoCommand
void HandleGroupSwapSubGroupOpcode(WorldPacket &recvData)
void HandleGroupSetLeaderOpcode(WorldPacket &recvPacket)
void HandleChannelUnmoderator(WorldPacket &recvPacket)
void HandleLfrLeaveOpcode(WorldPacket &recvData)
uint32 GetAccountId() const
void HandlePetitionQueryOpcode(WorldPacket &recvData)
void HandleCancelChanneling(WorldPacket &recvData)
void HandleObjectUpdateFailedOpcode(WorldPacket &recvPacket)
void HandleUpdateAccountData(WorldPacket &recvPacket)
void HandleTogglePvP(WorldPacket &recvPacket)
void HandleGuildBankWithdrawMoney(WorldPacket &recvData)
z_stream_s * _compressionStream
void HandleQuestLogSwapQuest(WorldPacket &recvData)
void HandleRequestHotfix(WorldPacket &recvPacket)
void HandleRequestPartyMemberStatsOpcode(WorldPacket &recvData)
void HandleInstanceLockResponse(WorldPacket &recvPacket)
void HandlePetAbandon(WorldPacket &recvData)
void SendLfgRoleCheckUpdate(lfg::LfgRoleCheck const &pRoleCheck)
void SendAuthResponse(ResponseCodes code, bool queued, uint32 queuePos=0)
void HandleRealmNameQueryOpcode(WorldPacket &recvPacket)
void HandlePetLearnTalent(WorldPacket &recvPacket)
void SendCalendarRaidLockout(InstanceSave const *save, bool add)
void HandleGuildAddRankOpcode(WorldPacket &recvPacket)
void HandleSetContactNotesOpcode(WorldPacket &recvPacket)
void SendChatRestrictedNotice(ChatRestrictionType restriction)
void SendGroupInviteNotification(const std::string &inviterName, const std::string &realmName, bool inGroup)
void SendVoidStorageTransferResult(VoidTransferError result)
void HandleSplitItemOpcode(WorldPacket &recvPacket)
void HandleFarSightOpcode(WorldPacket &recvData)
void HandleGroupInviteResponseOpcode(WorldPacket &recvPacket)
void HandleTaxiQueryAvailableNodes(WorldPacket &recvPacket)
void HandleQuestPushResult(WorldPacket &recvPacket)
void HandleBattlefieldRatedInfoRequest(WorldPacket &recvData)
void HandleRepairItemOpcode(WorldPacket &recvPacket)
void HandleBattlePetRequestUpdate(WorldPacket &recvData)
void HandleBattlePetQueryName(WorldPacket &recvData)
void SendTutorialsData()
void SendLfgDisabled()
void HandleAddonMessagechatOpcode(WorldPacket &recvPacket)
void HandleRequestStabledPetsOpcode(WorldPacket &recvPacket)
void HandleGuildQueryXPOpcode(WorldPacket &recvData)
void HandleChannelModerator(WorldPacket &recvPacket)
Player * _player
void LogUnprocessedTail(WorldPacket *packet) const
Logging helper for unexpected opcodes.
void SendBfInvitePlayerToWar(uint64 guid, uint32 zoneId, uint32 time)
void HandleReportPvPAFK(WorldPacket &recvData)
void HandleLFDTeleportOpcode(WorldPacket &recvData)
void SendShowBank(ObjectGuid guid)
void HandleRequestForcedReactionsOpcode(WorldPacket &recvData)
void HandleLfgSetRolesOpcode(WorldPacket &recvData)
void SendUpdateSockets(ObjectGuid ItemGUID, Item *item)
uint32 GetTutorialInt(uint8 index) const
void HandleQuestgiverQueryQuestOpcode(WorldPacket &recvPacket)
void HandleGuildBankSwapItems(WorldPacket &recvData)
void HandleGuildBankMoneyWithdrawn(WorldPacket &recvData)
int32 HandleEnableNagleAlgorithm()
void HandleAttackSwingOpcode(WorldPacket &recvPacket)
void HandleChangeCurrencyFlags(WorldPacket &recvPacket)
void HandleBattlePetSummonCompanion(WorldPacket &recvData)
void HandlePetBattleQueueProposeMatchResult(WorldPacket &recvData)
WorldSocket * m_Socket
void HandleLeaveChannel(WorldPacket &recvPacket)
void SendPetitionShowList(uint64 guid)
void SendItemExpirePurchaseRefund(ObjectGuid itemGuid)
void SendBfInvitePlayerToQueue(uint64 guid)
void HandleGuildQueryOpcode(WorldPacket &recvPacket)
void HandleSetPvP(WorldPacket &recvPacket)
void ResetTimeOutTime()
AccountTypes _security
void LogPacketMarker(std::string const &marker)
CharacterBooster * m_charBooster
void HandleLfgProposalResultOpcode(WorldPacket &recvData)
void HandleGuildDeclineOpcode(WorldPacket &recvPacket)
uint32 GetLatency() const
void ProcessQueryCallbacks()
void HandleRequestConquestFormulaConstants(WorldPacket &recvData)
void HandleCharCreateOpcode(WorldPacket &recvPacket)
void HandlePageTextQueryOpcode(WorldPacket &recvPacket)
Only static data is sent in this packet !!!
void HandleGuildBankerActivate(WorldPacket &recvData)
std::string const & GetRemoteAddress()
void HandleSetActionBarToggles(WorldPacket &recvData)
void HandleCancelAutoRepeatSpellOpcode(WorldPacket &recvPacket)
void HandleSetTitleOpcode(WorldPacket &recvData)
void HandleLFDGetLockInfoOpcode(WorldPacket &recvData)
void HandleAuctionRemoveItem(WorldPacket &recvData)
void HandleChannelSetOwner(WorldPacket &recvPacket)
void SendPartyResult(PartyOperation operation, std::string const &member, PartyResult res, uint32 val=0)
void HandlePetNameQuery(WorldPacket &recvData)
void HandleCalendarCopyEvent(WorldPacket &recvData)
void HandleRequestPvpOptions(WorldPacket &recvData)
void HandleGuildRequestPartyState(WorldPacket &recvPacket)
WorldSession & operator=(WorldSession const &right)=delete
void HandleReclaimCorpseOpcode(WorldPacket &recvPacket)
void HandleWorldTeleportOpcode(WorldPacket &recvData)
void HandleBlackMarketBidOnItem(WorldPacket &recvData)
void HandleAddIgnoreOpcode(WorldPacket &recvPacket)
void SendTradeStatus(TradeStatus status)
void HandleEquipmentSetSave(WorldPacket &recvData)
std::vector< std::string > _registeredAddonPrefixes
void HandleAutoBankItemOpcode(WorldPacket &recvPacket)
void HandleInitiateTradeOpcode(WorldPacket &recvPacket)
void HandleQueryTimeOpcode(WorldPacket &recvPacket)
void SendAttackStop(Unit const *enemy)
void HandlePetitionRenameOpcode(WorldPacket &recvData)
void HandleRaidReadyCheckOpcode(WorldPacket &recvData)
void HandleBattlefieldListOpcode(WorldPacket &recvData)
void HandlePetActionHelper(Unit *pet, uint64 guid1, uint32 spellid, uint16 flag, uint64 guid2, float x, float y, float z)
void HandleBattlePetLearn(WorldPacket &recvData)
void HandleBlackMarketHelloOpcode(WorldPacket &recvData)
void SendPetitionQueryOpcode(uint64 petitionguid)
void HandleGuildLeaveOpcode(WorldPacket &recvPacket)
void HandleAddFriendOpcode(WorldPacket &recvPacket)
void SendSetPhaseShift(std::set< uint32 > const &phaseIds, std::set< uint32 > const &terrainswaps, std::set< uint32 > const &worldAreas)
void HandleGuildChangeInfoTextOpcode(WorldPacket &recvPacket)
void HandleSetSavedInstanceExtend(WorldPacket &recvData)
void HandleUnregisterAddonPrefixesOpcode(WorldPacket &recvPacket)
void SendPlayMusic(uint32 SoundKitID)
void HandleSpiritHealerActivateOpcode(WorldPacket &recvPacket)
void HandleSetSheathedOpcode(WorldPacket &recvPacket)
void Handle_Deprecated(WorldPacket &recvPacket) const
void HandleSetPlayerDeclinedNames(WorldPacket &recvData)
void DoLootRelease(uint64 lguid)
void HandleQueryInspectAchievements(WorldPacket &recvData)
void SendLfgBootProposalUpdate(lfg::LfgPlayerBoot const &boot)
void HandleSetGuildBankTabText(WorldPacket &recvData)
void HandleMoveSetCanFlyAckOpcode(WorldPacket &recvData)
void HandleSetTaxiBenchmarkOpcode(WorldPacket &recvData)
void HandleHearthAndResurrect(WorldPacket &recvData)
void HandleBuyItemInSlotOpcode(WorldPacket &recvPacket)
void SendQueryTimeResponse()
void HandleSetActiveVoiceChannel(WorldPacket &recvData)
void HandleAuctionPlaceBid(WorldPacket &recvData)
void HandleQuestPOIQuery(WorldPacket &recvData)
void SendAccountDataTimes(uint32 mask)
LocaleConstant m_sessionDbcLocale
void HandleCancelTempEnchantmentOpcode(WorldPacket &recvData)
void HandleMoveGravityAck(WorldPacket &recvData)
void HandleRequestCemeteryList(WorldPacket &recvPacket)
void SendPetNameQuery(ObjectGuid guid, uint64 petNumber)
void HandleBattlePetWildRequest(WorldPacket &recvData)
void HandlePetStopAttack(WorldPacket &recvData)
void SendBlackMarketHello(ObjectGuid NpcGUID, bool Open)
void HandleItemTextQuery(WorldPacket &recvData)
void HandleMoveNotActiveMover(WorldPacket &recvData)
void HandleGuildFinderSetGuildPost(WorldPacket &recvPacket)
void HandleTutorialReset(WorldPacket &recvData)
bool IsLegitCharacterForAccount(uint32 lowGUID)
WorldSession(uint32 id, WorldSocket *sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter, bool isARecruiter, bool hasBoost)
WorldSession constructor.
void HandleAreaSpiritHealerQueueOpcode(WorldPacket &recvData)
void HandleBattlePetSetBattleSlot(WorldPacket &recvData)
void SendStableResult(uint8 guid)
void HandleChannelOwner(WorldPacket &recvPacket)
void HandleQuestgiverChooseRewardOpcode(WorldPacket &recvPacket)
QueryCallback< PreparedQueryResult, uint32 > _stableSwapCallback
void SendTitleLost(uint32 TitleIndex)
void SendUpdateTrade(bool trader_data=true)
void InitWarden(SessionKey const &, std::string const &os)
void HandlePushQuestToParty(WorldPacket &recvPacket)
void SendListInventory(uint64 guid)
void SendReforgeResult(bool success)
void SendModifyCooldown(ObjectGuid UnitGUID, int32 DeltaTime, int32 SpellID)
void HandleGuildQueryNewsOpcode(WorldPacket &recvPacket)
std::string const & GetPlayerName() const
void HandleBattleFieldPortOpcode(WorldPacket &recvData)
void SendDiscoverNewTaxiNode(uint32 nodeid)
time_t m_muteTime
void HandleOfferPetitionOpcode(WorldPacket &recvData)
void HandleLfrJoinOpcode(WorldPacket &recvData)
void SendRealmNameQueryOpcode(uint32 realmId)
void SendLfgPlayerLockInfo()
void SendBattleGroundList(uint64 guid, BattlegroundTypeId bgTypeId=BattlegroundTypeId::BATTLEGROUND_RB)
void SendRolePollInform(ObjectGuid guid, uint8 Index)
void HandleZoneUpdateOpcode(WorldPacket &recvPacket)
void SendStablePetCallback(PreparedQueryResult result, uint64 guid)
void HandlePetitionDeclineOpcode(WorldPacket &recvData)
void HandleBattlePetSetFlags(WorldPacket &recvData)
void HandleBuybackItem(WorldPacket &recvPacket)
void HandleMailDelete(WorldPacket &recvData)
void HandleGuildNewsUpdateStickyOpcode(WorldPacket &recvPacket)
void HandleQuestgiverCancel(WorldPacket &recvData)
void HandleListInventoryOpcode(WorldPacket &recvPacket)
void SendBattlePayDistributionUpdate(uint64 playerGuid, int8 bonusId, int32 bonusFlag, int32 textId, std::string const &bonusText, std::string const &bonusText2)
void InvalidateRBACData()
void HandleUseItemOpcode(WorldPacket &recvPacket)
void HandleBattlemasterJoinArena(WorldPacket &recvData)
void HandleChallengeModeRequestMapStats(WorldPacket &recvData)
void HandleStablePetCallback(PreparedQueryResult result)
void HandleActivateTaxiExpressOpcode(WorldPacket &recvPacket)
void HandleRequestPetInfoOpcode(WorldPacket &recvData)
void SendEnchantmentLog(uint64 target, uint64 caster, uint64 itemGuid, uint32 itemId, uint32 enchantId, uint32 enchantmentSlot)
void HandleClientCastFlags(WorldPacket &recvPacket, uint8 castFlags, SpellCastTargets &targets)
void HandleGuildRemoveOpcode(WorldPacket &recvPacket)
void HandleSpellClick(WorldPacket &recvData)
void HandleGuildFinderPostRequest(WorldPacket &recvPacket)
void HandleCalendarGuildFilter(WorldPacket &recvData)
void HandleLootReleaseOpcode(WorldPacket &recvPacket)
void HandleQuestgiverStatusMultipleQuery(WorldPacket &recvPacket)
void SetSecurity(AccountTypes security)
void HandleCharRenameOpcode(WorldPacket &recvData)
void HandleGrantLevel(WorldPacket &recvData)
void HandleGuildFinderAddApplication(WorldPacket &recvPacket)
void SetLatency(uint32 latency)
void HandleMessagechatOpcode(WorldPacket &recvPacket)
bool IsAddonRegistered(const std::string &prefix) const
void HandleGuildFinderGetApplications(WorldPacket &recvPacket)
void HandleGMTicketDeleteOpcode(WorldPacket &recvPacket)
void HandleChannelDeclineInvite(WorldPacket &recvPacket)
void HandleStableSwapPet(WorldPacket &recvPacket)
void HandleGuildBankUpdateTab(WorldPacket &recvData)
void SendFeatureSystemStatusGlueScreen()
void HandleGuildPermissions(WorldPacket &recvData)
void HandleChannelAnnouncements(WorldPacket &recvPacket)
void SendTaxiStatus(uint64 guid)
uint32 m_Tutorials[MAX_ACCOUNT_TUTORIAL_VALUES]
void SetTutorialInt(uint8 index, uint32 value)
void HandleGuildFinderGetRecruits(WorldPacket &recvPacket)
void HandleGuildDemoteOpcode(WorldPacket &recvPacket)
void SendTotemCreated(ObjectGuid TotemGUID, uint32 Duration, uint32 SpellID, uint8 Slot)
void HandleGMTicketSystemStatusOpcode(WorldPacket &recvPacket)
bool ShouldLogOut(time_t currTime) const
Is logout cooldown expired?
void HandleUnlearnSkillOpcode(WorldPacket &recvPacket)
void HandleChannelKick(WorldPacket &recvPacket)
QueryCallback< PreparedQueryResult, uint64 > _sendStabledPetCallback
void HandleVoidStorageTransfer(WorldPacket &recvData)
void HandleAttackStopOpcode(WorldPacket &recvPacket)
rbac::RBACData * GetRBACData()
void HandleRealmSplitOpcode(WorldPacket &recvData)
void HandlePetitionSignOpcode(WorldPacket &recvData)
void SetAccountData(AccountDataType type, time_t tm, std::string const &data)
void HandleChannelDisplayListQuery(WorldPacket &recvPacket)
void LoadGlobalAccountData()
void HandlePetBattleStartPvpMatchmaking(WorldPacket &recvData)
void HandleSetActiveMoverOpcode(WorldPacket &recvData)
Warden * _warden
void HandleCalendarRemoveEvent(WorldPacket &recvData)
void HandleGuildDelRankOpcode(WorldPacket &recvPacket)
void HandleMoveKnockBackAck(WorldPacket &recvPacket)
bool IsConnectionIdle() const
void HandleVoidStorageUnlock(WorldPacket &recvData)
void HandleCancelAuraOpcode(WorldPacket &recvPacket)
void HandleGuildBankQueryTab(WorldPacket &recvData)
void HandleRaidReadyCheckFinishedOpcode(WorldPacket &recvData)
void SendCharacterLoginFailed(ResponseCodes reason)
void HandleInspectHonorStatsOpcode(WorldPacket &recvPacket)
bool _filterAddonMessages
void HandleCalendarGetNumPending(WorldPacket &recvData)
void HandleLearnTalentOpcode(WorldPacket &recvPacket)
bool HandlePendingPetBattlePvpDuelResponse(bool accepted)
void SendDoFlight(uint32 mountDisplayId, uint32 path, uint32 pathNode=0)
void HandleSubmitSuggestOpcode(WorldPacket &recvPacket)
void SendLfgUpdateProposal(lfg::LfgProposal const &proposal)
void HandleRequestRaidInfoOpcode(WorldPacket &recvData)
void HandleFeatherFallAck(WorldPacket &recvData)
void HandleSetLootSpecialization(WorldPacket &recvData)
void HandleRequestResearchHistory(WorldPacket &recvPacket)
void HandeSetTalentSpecialization(WorldPacket &recvData)
void HandleCalendarEventStatus(WorldPacket &recvData)
void ResetClientTimeDelay()
void HandleGetChallengeModeRewards(WorldPacket &recvData)
void HandleTutorialClear(WorldPacket &recvData)
Handler that can communicate over stream sockets.
Definition WorldSocket.h:51
ChatRestrictionType
BarberShopResult
PartyOperation
AccountDataType
#define NUM_OPCODE_HANDLERS
Definition Opcodes.h:16
BFLeaveReason
@ ERR_CHAT_THROTTLED
@ ERR_YELL_RESTRICTED
@ ERR_CHAT_RESTRICTED
@ ERR_USER_SQUELCHED
@ BF_LEAVE_REASON_LOW_LEVEL
@ BF_LEAVE_REASON_CLOSE
@ BF_LEAVE_REASON_EXITED
#define sWorld
Definition World.h:910
WorldIntConfigs
Definition World.h:198
@ CONFIG_PACKET_SPOOF_POLICY
Definition World.h:350
@ CONFIG_SOCKET_TIMEOUTTIME
Definition World.h:206
Definition LFG.cpp:11
std::string Data
Stores information of a current vote to kick someone from a group.
Definition LFGMgr.h:258
Stores group data related to proposal to join.
Definition LFGMgr.h:227
Stores all rolecheck info of a group that wants to join.
Definition LFGMgr.h:247