mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-13 11:43:18 -04:00
1878 lines
82 KiB
C++
1878 lines
82 KiB
C++
/*
|
|
* Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
|
|
* Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation; either version 2 of the License, or (at your
|
|
* option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/// \addtogroup u2w
|
|
/// @{
|
|
/// \file
|
|
|
|
#ifndef __WORLDSESSION_H
|
|
#define __WORLDSESSION_H
|
|
|
|
#include "Common.h"
|
|
#include "SharedDefines.h"
|
|
#include "DatabaseEnv.h"
|
|
#include "World.h"
|
|
#include "Packet.h"
|
|
#include "Cryptography/BigNumber.h"
|
|
#include "AccountMgr.h"
|
|
#include <unordered_set>
|
|
|
|
class BattlePetMgr;
|
|
class Channel;
|
|
class CollectionMgr;
|
|
class Creature;
|
|
class BlackMarketEntry;
|
|
class GameObject;
|
|
class InstanceSave;
|
|
class Item;
|
|
class LoginQueryHolder;
|
|
class Object;
|
|
class Player;
|
|
class Quest;
|
|
class SpellCastTargets;
|
|
class Unit;
|
|
class Warden;
|
|
class WorldPacket;
|
|
class WorldSession;
|
|
class WorldSocket;
|
|
struct AreaTableEntry;
|
|
struct AuctionEntry;
|
|
struct DeclinedName;
|
|
struct ItemTemplate;
|
|
struct MovementInfo;
|
|
struct BlackMarketTemplate;
|
|
|
|
namespace lfg
|
|
{
|
|
struct LfgJoinResultData;
|
|
struct LfgPlayerBoot;
|
|
struct LfgProposal;
|
|
struct LfgQueueStatusData;
|
|
struct LfgPlayerRewardData;
|
|
struct LfgRoleCheck;
|
|
struct LfgUpdateData;
|
|
}
|
|
|
|
namespace rbac
|
|
{
|
|
class RBACData;
|
|
}
|
|
|
|
namespace WorldPackets
|
|
{
|
|
namespace Achievement
|
|
{
|
|
class GuildSetFocusedAchievement;
|
|
}
|
|
|
|
namespace Artifact
|
|
{
|
|
class ArtifactAddPower;
|
|
class ArtifactSetAppearance;
|
|
class ConfirmArtifactRespec;
|
|
}
|
|
|
|
namespace AuctionHouse
|
|
{
|
|
class AuctionHelloRequest;
|
|
class AuctionListBidderItems;
|
|
class AuctionListItems;
|
|
class AuctionListOwnerItems;
|
|
class AuctionListPendingSales;
|
|
class AuctionPlaceBid;
|
|
class AuctionRemoveItem;
|
|
class AuctionReplicateItems;
|
|
class AuctionSellItem;
|
|
}
|
|
|
|
namespace Auth
|
|
{
|
|
enum class ConnectToSerial : uint32;
|
|
}
|
|
|
|
namespace Bank
|
|
{
|
|
class AutoBankItem;
|
|
class AutoStoreBankItem;
|
|
class BuyBankSlot;
|
|
}
|
|
|
|
namespace Battlefield
|
|
{
|
|
class BFMgrEntryInviteResponse;
|
|
class BFMgrQueueInviteResponse;
|
|
class BFMgrQueueExitRequest;
|
|
}
|
|
|
|
namespace Battleground
|
|
{
|
|
class AreaSpiritHealerQuery;
|
|
class AreaSpiritHealerQueue;
|
|
class HearthAndResurrect;
|
|
class PVPLogDataRequest;
|
|
class BattlemasterJoin;
|
|
class BattlemasterJoinArena;
|
|
class BattlefieldLeave;
|
|
class BattlefieldPort;
|
|
class BattlefieldListRequest;
|
|
class GetPVPOptionsEnabled;
|
|
class RequestBattlefieldStatus;
|
|
class ReportPvPPlayerAFK;
|
|
class RequestPVPRewards;
|
|
class RequestRatedBattlefieldInfo;
|
|
}
|
|
|
|
namespace Battlenet
|
|
{
|
|
class Request;
|
|
class RequestRealmListTicket;
|
|
}
|
|
|
|
namespace BattlePet
|
|
{
|
|
class BattlePetRequestJournal;
|
|
class BattlePetSetBattleSlot;
|
|
class BattlePetModifyName;
|
|
class BattlePetDeletePet;
|
|
class BattlePetSetFlags;
|
|
class BattlePetSummon;
|
|
class CageBattlePet;
|
|
}
|
|
|
|
namespace BlackMarket
|
|
{
|
|
class BlackMarketOpen;
|
|
class BlackMarketRequestItems;
|
|
class BlackMarketBidOnItem;
|
|
class BlackMarketOutbid;
|
|
}
|
|
|
|
namespace Calendar
|
|
{
|
|
class CalendarAddEvent;
|
|
class CalendarCopyEvent;
|
|
class CalendarEventInvite;
|
|
class CalendarEventModeratorStatus;
|
|
class CalendarEventRSVP;
|
|
class CalendarEventSignUp;
|
|
class CalendarEventStatus;
|
|
class CalendarGetCalendar;
|
|
class CalendarGetEvent;
|
|
class CalendarGetNumPending;
|
|
class CalendarGuildFilter;
|
|
class CalendarRemoveEvent;
|
|
class CalendarRemoveInvite;
|
|
class CalendarUpdateEvent;
|
|
class SetSavedInstanceExtend;
|
|
class CalendarComplain;
|
|
}
|
|
|
|
namespace Character
|
|
{
|
|
struct CharacterCreateInfo;
|
|
struct CharacterRenameInfo;
|
|
struct CharCustomizeInfo;
|
|
struct CharRaceOrFactionChangeInfo;
|
|
struct CharacterUndeleteInfo;
|
|
|
|
class AlterApperance;
|
|
class EnumCharacters;
|
|
class CreateCharacter;
|
|
class CharDelete;
|
|
class CharacterRenameRequest;
|
|
class CharCustomize;
|
|
class CharRaceOrFactionChange;
|
|
class GenerateRandomCharacterName;
|
|
class GetUndeleteCharacterCooldownStatus;
|
|
class ReorderCharacters;
|
|
class UndeleteCharacter;
|
|
class PlayerLogin;
|
|
class LogoutRequest;
|
|
class LogoutCancel;
|
|
class LoadingScreenNotify;
|
|
class SetActionBarToggles;
|
|
class RequestPlayedTime;
|
|
class SetTitle;
|
|
class SetFactionAtWar;
|
|
class SetFactionNotAtWar;
|
|
class SetFactionInactive;
|
|
class SetWatchedFaction;
|
|
class SetPlayerDeclinedNames;
|
|
|
|
enum class LoginFailureReason : uint8;
|
|
}
|
|
|
|
namespace ClientConfig
|
|
{
|
|
class RequestAccountData;
|
|
class UserClientUpdateAccountData;
|
|
class SetAdvancedCombatLogging;
|
|
}
|
|
|
|
namespace Channel
|
|
{
|
|
class ChannelPlayerCommand;
|
|
class JoinChannel;
|
|
class LeaveChannel;
|
|
}
|
|
|
|
namespace Chat
|
|
{
|
|
class ChatMessage;
|
|
class ChatMessageWhisper;
|
|
class ChatMessageChannel;
|
|
class ChatAddonMessage;
|
|
class ChatAddonMessageWhisper;
|
|
class ChatAddonMessageChannel;
|
|
class ChatMessageAFK;
|
|
class ChatMessageDND;
|
|
class ChatMessageEmote;
|
|
class CTextEmote;
|
|
class EmoteClient;
|
|
class ChatRegisterAddonPrefixes;
|
|
class ChatUnregisterAllAddonPrefixes;
|
|
class ChatReportIgnored;
|
|
}
|
|
|
|
namespace Combat
|
|
{
|
|
class AttackSwing;
|
|
class AttackStop;
|
|
class SetSheathed;
|
|
}
|
|
|
|
namespace Duel
|
|
{
|
|
class CanDuel;
|
|
class DuelResponse;
|
|
}
|
|
|
|
namespace EquipmentSet
|
|
{
|
|
class SaveEquipmentSet;
|
|
class DeleteEquipmentSet;
|
|
class UseEquipmentSet;
|
|
}
|
|
|
|
namespace GameObject
|
|
{
|
|
class GameObjReportUse;
|
|
class GameObjUse;
|
|
}
|
|
|
|
namespace Garrison
|
|
{
|
|
class GetGarrisonInfo;
|
|
class GarrisonPurchaseBuilding;
|
|
class GarrisonCancelConstruction;
|
|
class GarrisonRequestBlueprintAndSpecializationData;
|
|
class GarrisonGetBuildingLandmarks;
|
|
}
|
|
|
|
namespace Guild
|
|
{
|
|
class QueryGuildInfo;
|
|
class GuildInviteByName;
|
|
class AcceptGuildInvite;
|
|
class DeclineGuildInvites;
|
|
class GuildDeclineInvitation;
|
|
class GuildGetRoster;
|
|
class GuildPromoteMember;
|
|
class GuildDemoteMember;
|
|
class GuildOfficerRemoveMember;
|
|
class GuildAssignMemberRank;
|
|
class GuildLeave;
|
|
class GuildDelete;
|
|
class GuildUpdateMotdText;
|
|
class GuildGetRanks;
|
|
class GuildAddRank;
|
|
class GuildDeleteRank;
|
|
class GuildUpdateInfoText;
|
|
class GuildSetMemberNote;
|
|
class GuildEventLogQuery;
|
|
class GuildBankRemainingWithdrawMoneyQuery;
|
|
class GuildPermissionsQuery;
|
|
class GuildSetRankPermissions;
|
|
class GuildBankActivate;
|
|
class GuildBankQueryTab;
|
|
class GuildBankDepositMoney;
|
|
class GuildBankWithdrawMoney;
|
|
class GuildBankSwapItems;
|
|
class GuildBankBuyTab;
|
|
class GuildBankUpdateTab;
|
|
class GuildBankLogQuery;
|
|
class GuildBankTextQuery;
|
|
class GuildBankSetTabText;
|
|
class RequestGuildPartyState;
|
|
class RequestGuildRewardsList;
|
|
class GuildQueryNews;
|
|
class GuildNewsUpdateSticky;
|
|
class GuildSetGuildMaster;
|
|
class GuildChallengeUpdateRequest;
|
|
class SaveGuildEmblem;
|
|
class GuildSetAchievementTracking;
|
|
}
|
|
|
|
namespace GuildFinder
|
|
{
|
|
class LFGuildAddRecruit;
|
|
class LFGuildBrowse;
|
|
class LFGuildDeclineRecruit;
|
|
class LFGuildGetApplications;
|
|
class LFGuildGetGuildPost;
|
|
class LFGuildGetRecruits;
|
|
class LFGuildRemoveRecruit;
|
|
class LFGuildSetGuildPost;
|
|
}
|
|
|
|
namespace Inspect
|
|
{
|
|
class Inspect;
|
|
class InspectPVPRequest;
|
|
class QueryInspectAchievements;
|
|
class RequestHonorStats;
|
|
}
|
|
|
|
namespace Instance
|
|
{
|
|
class InstanceInfo;
|
|
class InstanceLockResponse;
|
|
class ResetInstances;
|
|
}
|
|
|
|
namespace Item
|
|
{
|
|
class AutoEquipItem;
|
|
class AutoEquipItemSlot;
|
|
class AutoStoreBagItem;
|
|
class BuyItem;
|
|
class BuyBackItem;
|
|
class DestroyItem;
|
|
class GetItemPurchaseData;
|
|
class ItemPurchaseRefund;
|
|
class RepairItem;
|
|
class ReadItem;
|
|
class SellItem;
|
|
class SplitItem;
|
|
class SwapInvItem;
|
|
class SwapItem;
|
|
class WrapItem;
|
|
class CancelTempEnchantment;
|
|
class UseCritterItem;
|
|
class UpgradeItem;
|
|
class SocketGems;
|
|
struct ItemInstance;
|
|
}
|
|
|
|
namespace Loot
|
|
{
|
|
class LootUnit;
|
|
class LootItem;
|
|
class LootRelease;
|
|
class LootMoney;
|
|
class LootRoll;
|
|
class SetLootSpecialization;
|
|
}
|
|
|
|
namespace Mail
|
|
{
|
|
class MailCreateTextItem;
|
|
class MailDelete;
|
|
class MailGetList;
|
|
class MailMarkAsRead;
|
|
class MailQueryNextMailTime;
|
|
class MailReturnToSender;
|
|
class MailTakeItem;
|
|
class MailTakeMoney;
|
|
class SendMail;
|
|
}
|
|
|
|
namespace Misc
|
|
{
|
|
class AreaTrigger;
|
|
class SetSelection;
|
|
class ViolenceLevel;
|
|
class TimeSyncResponse;
|
|
class TutorialSetFlag;
|
|
class SetDungeonDifficulty;
|
|
class SetRaidDifficulty;
|
|
class PortGraveyard;
|
|
class ReclaimCorpse;
|
|
class RepopRequest;
|
|
class RequestCemeteryList;
|
|
class ResurrectResponse;
|
|
class StandStateChange;
|
|
class UITimeRequest;
|
|
class RandomRollClient;
|
|
class ObjectUpdateFailed;
|
|
class ObjectUpdateRescued;
|
|
class CompleteCinematic;
|
|
class NextCinematicCamera;
|
|
class FarSight;
|
|
class LoadCUFProfiles;
|
|
class SaveCUFProfiles;
|
|
class OpeningCinematic;
|
|
class TogglePvP;
|
|
class SetPvP;
|
|
class WorldTeleport;
|
|
class MountSpecial;
|
|
class SetTaxiBenchmarkMode;
|
|
class MountSetFavorite;
|
|
}
|
|
|
|
namespace Movement
|
|
{
|
|
class ClientPlayerMovement;
|
|
class WorldPortResponse;
|
|
class MoveTeleportAck;
|
|
class MovementAckMessage;
|
|
class MovementSpeedAck;
|
|
class SetActiveMover;
|
|
class MoveSetCollisionHeightAck;
|
|
class MoveTimeSkipped;
|
|
class SummonResponse;
|
|
class MoveSplineDone;
|
|
class SuspendTokenResponse;
|
|
}
|
|
|
|
namespace NPC
|
|
{
|
|
class Hello;
|
|
class GossipSelectOption;
|
|
class SpiritHealerActivate;
|
|
class TrainerBuySpell;
|
|
class RequestStabledPets;
|
|
}
|
|
|
|
namespace Party
|
|
{
|
|
class PartyCommandResult;
|
|
class PartyInviteClient;
|
|
class PartyInvite;
|
|
class PartyInviteResponse;
|
|
class PartyUninvite;
|
|
class GroupDecline;
|
|
class RequestPartyMemberStats;
|
|
class PartyMemberState;
|
|
class SetPartyLeader;
|
|
class SetPartyAssignment;
|
|
class SetRole;
|
|
class RoleChangedInform;
|
|
class SetLootMethod;
|
|
class LeaveGroup;
|
|
class MinimapPingClient;
|
|
class MinimapPing;
|
|
class UpdateRaidTarget;
|
|
class SendRaidTargetUpdateSingle;
|
|
class SendRaidTargetUpdateAll;
|
|
class ConvertRaid;
|
|
class RequestPartyJoinUpdates;
|
|
class SetAssistantLeader;
|
|
class DoReadyCheck;
|
|
class ReadyCheckStarted;
|
|
class ReadyCheckResponseClient;
|
|
class ReadyCheckResponse;
|
|
class ReadyCheckCompleted;
|
|
class RequestRaidInfo;
|
|
class OptOutOfLoot;
|
|
class InitiateRolePoll;
|
|
class RolePollInform;
|
|
class GroupNewLeader;
|
|
class PartyUpdate;
|
|
class SetEveryoneIsAssistant;
|
|
class ChangeSubGroup;
|
|
class SwapSubGroups;
|
|
class RaidMarkersChanged;
|
|
class ClearRaidMarker;
|
|
}
|
|
|
|
namespace Pet
|
|
{
|
|
class DismissCritter;
|
|
class RequestPetInfo;
|
|
class PetAbandon;
|
|
class PetStopAttack;
|
|
class PetSpellAutocast;
|
|
class PetRename;
|
|
class PetAction;
|
|
class PetCancelAura;
|
|
class PetSetAction;
|
|
}
|
|
|
|
namespace Petition
|
|
{
|
|
class DeclinePetition;
|
|
class OfferPetition;
|
|
class PetitionBuy;
|
|
class PetitionRenameGuild;
|
|
class PetitionShowList;
|
|
class PetitionShowSignatures;
|
|
class QueryPetition;
|
|
class SignPetition;
|
|
class TurnInPetition;
|
|
}
|
|
|
|
namespace Query
|
|
{
|
|
class QueryCreature;
|
|
class QueryPlayerName;
|
|
class QueryPageText;
|
|
class QueryNPCText;
|
|
class DBQueryBulk;
|
|
class QueryGameObject;
|
|
class QueryCorpseLocationFromClient;
|
|
class QueryCorpseTransport;
|
|
class QueryTime;
|
|
class QueryPetName;
|
|
class QuestPOIQuery;
|
|
class QueryQuestCompletionNPCs;
|
|
class ItemTextQuery;
|
|
}
|
|
|
|
namespace Quest
|
|
{
|
|
class QuestConfirmAccept;
|
|
class QuestGiverStatusQuery;
|
|
class QuestGiverStatusMultipleQuery;
|
|
class QuestGiverHello;
|
|
class QueryQuestInfo;
|
|
class QuestGiverChooseReward;
|
|
class QuestGiverCompleteQuest;
|
|
class QuestGiverRequestReward;
|
|
class QuestGiverQueryQuest;
|
|
class QuestGiverAcceptQuest;
|
|
class QuestLogRemoveQuest;
|
|
class QuestPushResult;
|
|
class PushQuestToParty;
|
|
class RequestWorldQuestUpdate;
|
|
}
|
|
|
|
namespace RaF
|
|
{
|
|
class AcceptLevelGrant;
|
|
class GrantLevel;
|
|
}
|
|
|
|
namespace Reputation
|
|
{
|
|
class RequestForcedReactions;
|
|
}
|
|
|
|
namespace Toy
|
|
{
|
|
class AccountToysUpdate;
|
|
class AddToy;
|
|
class ToySetFavorite;
|
|
class UseToy;
|
|
}
|
|
|
|
namespace Scenes
|
|
{
|
|
class SceneTriggerEvent;
|
|
class ScenePlaybackComplete;
|
|
class ScenePlaybackCanceled;
|
|
}
|
|
|
|
namespace Social
|
|
{
|
|
class AddFriend;
|
|
class AddIgnore;
|
|
class DelFriend;
|
|
class DelIgnore;
|
|
class SendContactList;
|
|
class SetContactNotes;
|
|
}
|
|
|
|
namespace Spells
|
|
{
|
|
class CancelAura;
|
|
class CancelAutoRepeatSpell;
|
|
class CancelChannelling;
|
|
class CancelGrowthAura;
|
|
class CancelMountAura;
|
|
class PetCancelAura;
|
|
class RequestCategoryCooldowns;
|
|
class CancelCast;
|
|
class CastSpell;
|
|
class PetCastSpell;
|
|
class UseItem;
|
|
class OpenItem;
|
|
class SetActionButton;
|
|
class UnlearnSkill;
|
|
class SelfRes;
|
|
class GetMirrorImageData;
|
|
class SpellClick;
|
|
class MissileTrajectoryCollision;
|
|
class UpdateMissileTrajectory;
|
|
}
|
|
|
|
namespace Talent
|
|
{
|
|
class LearnTalents;
|
|
class ConfirmRespecWipe;
|
|
}
|
|
|
|
namespace Taxi
|
|
{
|
|
class ShowTaxiNodes;
|
|
class TaxiNodeStatusQuery;
|
|
class EnableTaxiNode;
|
|
class TaxiQueryAvailableNodes;
|
|
class ActivateTaxi;
|
|
class TaxiRequestEarlyLanding;
|
|
}
|
|
|
|
namespace Ticket
|
|
{
|
|
class GMTicketGetSystemStatus;
|
|
class GMTicketGetCaseStatus;
|
|
class SupportTicketSubmitBug;
|
|
class SupportTicketSubmitSuggestion;
|
|
class SupportTicketSubmitComplaint;
|
|
class BugReport;
|
|
class Complaint;
|
|
}
|
|
|
|
namespace Token
|
|
{
|
|
class UpdateListedAuctionableTokens;
|
|
class RequestWowTokenMarketPrice;
|
|
}
|
|
|
|
namespace Totem
|
|
{
|
|
class TotemDestroyed;
|
|
}
|
|
|
|
namespace Trade
|
|
{
|
|
class AcceptTrade;
|
|
class BeginTrade;
|
|
class BusyTrade;
|
|
class CancelTrade;
|
|
class ClearTradeItem;
|
|
class IgnoreTrade;
|
|
class InitiateTrade;
|
|
class SetTradeCurrency;
|
|
class SetTradeGold;
|
|
class SetTradeItem;
|
|
class UnacceptTrade;
|
|
class TradeStatus;
|
|
}
|
|
|
|
namespace Transmogrification
|
|
{
|
|
class TransmogrifyItems;
|
|
class TransmogAppearanceSetFavorite;
|
|
}
|
|
|
|
namespace Vehicle
|
|
{
|
|
class MoveDismissVehicle;
|
|
class RequestVehiclePrevSeat;
|
|
class RequestVehicleNextSeat;
|
|
class MoveChangeVehicleSeats;
|
|
class RequestVehicleSwitchSeat;
|
|
class RideVehicleInteract;
|
|
class EjectPassenger;
|
|
class RequestVehicleExit;
|
|
class MoveSetVehicleRecIdAck;
|
|
}
|
|
|
|
namespace Voice
|
|
{
|
|
class VoiceSessionEnable;
|
|
class SetActiveVoiceChannel;
|
|
}
|
|
|
|
namespace VoidStorage
|
|
{
|
|
class UnlockVoidStorage;
|
|
class QueryVoidStorage;
|
|
class VoidStorageTransfer;
|
|
class SwapVoidItem;
|
|
}
|
|
|
|
namespace Warden
|
|
{
|
|
class WardenData;
|
|
}
|
|
|
|
namespace Who
|
|
{
|
|
class WhoIsRequest;
|
|
class WhoRequestPkt;
|
|
}
|
|
|
|
class Null final : public ClientPacket
|
|
{
|
|
public:
|
|
Null(WorldPacket&& packet) : ClientPacket(std::move(packet)) { }
|
|
|
|
void Read() override { _worldPacket.rfinish(); }
|
|
};
|
|
}
|
|
|
|
namespace google
|
|
{
|
|
namespace protobuf
|
|
{
|
|
class Message;
|
|
}
|
|
}
|
|
|
|
namespace pb = google::protobuf;
|
|
|
|
enum AccountDataType
|
|
{
|
|
GLOBAL_CONFIG_CACHE = 0, // 0x01 g
|
|
PER_CHARACTER_CONFIG_CACHE = 1, // 0x02 p
|
|
GLOBAL_BINDINGS_CACHE = 2, // 0x04 g
|
|
PER_CHARACTER_BINDINGS_CACHE = 3, // 0x08 p
|
|
GLOBAL_MACROS_CACHE = 4, // 0x10 g
|
|
PER_CHARACTER_MACROS_CACHE = 5, // 0x20 p
|
|
PER_CHARACTER_LAYOUT_CACHE = 6, // 0x40 p
|
|
PER_CHARACTER_CHAT_CACHE = 7 // 0x80 p
|
|
};
|
|
|
|
#define NUM_ACCOUNT_DATA_TYPES 8
|
|
|
|
#define GLOBAL_CACHE_MASK 0x15
|
|
#define PER_CHARACTER_CACHE_MASK 0xEA
|
|
|
|
enum TutorialAction : uint8
|
|
{
|
|
TUTORIAL_ACTION_UPDATE = 0,
|
|
TUTORIAL_ACTION_CLEAR = 1,
|
|
TUTORIAL_ACTION_RESET = 2
|
|
};
|
|
|
|
/*
|
|
enum Tutorials
|
|
{
|
|
TUTORIAL_TALENT = 0,
|
|
TUTORIAL_SPEC = 1,
|
|
TUTORIAL_GLYPH = 2,
|
|
TUTORIAL_SPELLBOOK = 3,
|
|
TUTORIAL_PROFESSIONS = 4,
|
|
TUTORIAL_CORE_ABILITITES = 5,
|
|
TUTORIAL_PET_JOURNAL = 6,
|
|
TUTORIAL_WHAT_HAS_CHANGED = 7,
|
|
TUTORIAL_GARRISON_BUILDING = 8,
|
|
TUTORIAL_GARRISON_MISSION_LIST = 9,
|
|
TUTORIAL_GARRISON_MISSION_PAGE = 10,
|
|
TUTORIAL_GARRISON_LANDING = 11,
|
|
TUTORIAL_GARRISON_ZONE_ABILITY = 12,
|
|
TUTORIAL_WORLD_MAP_FRAME = 13,
|
|
TUTORIAL_CLEAN_UP_BAGS = 14,
|
|
TUTORIAL_BAG_SETTINGS = 15,
|
|
TUTORIAL_REAGENT_BANK_UNLOCK = 16,
|
|
TUTORIAL_TOYBOX_FAVORITE = 17,
|
|
TUTORIAL_TOYBOX_MOUSEWHEEL_PAGING = 18,
|
|
TUTORIAL_LFG_LIST = 19
|
|
};
|
|
*/
|
|
|
|
#define MAX_ACCOUNT_TUTORIAL_VALUES 8
|
|
|
|
struct AccountData
|
|
{
|
|
time_t Time = 0;
|
|
std::string Data;
|
|
};
|
|
|
|
enum PartyOperation
|
|
{
|
|
PARTY_OP_INVITE = 0,
|
|
PARTY_OP_UNINVITE = 1,
|
|
PARTY_OP_LEAVE = 2,
|
|
PARTY_OP_SWAP = 4
|
|
};
|
|
|
|
enum BarberShopResult
|
|
{
|
|
BARBER_SHOP_RESULT_SUCCESS = 0,
|
|
BARBER_SHOP_RESULT_NO_MONEY = 1,
|
|
BARBER_SHOP_RESULT_NOT_ON_CHAIR = 2,
|
|
BARBER_SHOP_RESULT_NO_MONEY_2 = 3
|
|
};
|
|
|
|
enum BFLeaveReason
|
|
{
|
|
BF_LEAVE_REASON_CLOSE = 1,
|
|
//BF_LEAVE_REASON_UNK1 = 2, (not used)
|
|
//BF_LEAVE_REASON_UNK2 = 4, (not used)
|
|
BF_LEAVE_REASON_EXITED = 8,
|
|
BF_LEAVE_REASON_LOW_LEVEL = 10,
|
|
BF_LEAVE_REASON_NOT_WHILE_IN_RAID = 15,
|
|
BF_LEAVE_REASON_DESERTER = 16
|
|
};
|
|
|
|
enum ChatRestrictionType
|
|
{
|
|
ERR_CHAT_RESTRICTED = 0,
|
|
ERR_CHAT_THROTTLED = 1,
|
|
ERR_USER_SQUELCHED = 2,
|
|
ERR_YELL_RESTRICTED = 3,
|
|
ERR_CHAT_RAID_RESTRICTED = 4
|
|
};
|
|
|
|
enum CharterTypes
|
|
{
|
|
GUILD_CHARTER_TYPE = 4,
|
|
ARENA_TEAM_CHARTER_2v2_TYPE = 2,
|
|
ARENA_TEAM_CHARTER_3v3_TYPE = 3,
|
|
ARENA_TEAM_CHARTER_5v5_TYPE = 5,
|
|
};
|
|
|
|
enum DeclinedNameResult
|
|
{
|
|
DECLINED_NAMES_RESULT_SUCCESS = 0,
|
|
DECLINED_NAMES_RESULT_ERROR = 1
|
|
};
|
|
|
|
#define DB2_REPLY_SPARSE 2442913102
|
|
#define DB2_REPLY_ITEM 1344507586
|
|
|
|
//class to deal with packet processing
|
|
//allows to determine if next packet is safe to be processed
|
|
class PacketFilter
|
|
{
|
|
public:
|
|
explicit PacketFilter(WorldSession* pSession) : m_pSession(pSession) { }
|
|
virtual ~PacketFilter() { }
|
|
|
|
virtual bool Process(WorldPacket* /*packet*/) = 0;
|
|
virtual bool ProcessUnsafe() const { return false; }
|
|
|
|
protected:
|
|
WorldSession* const m_pSession;
|
|
|
|
private:
|
|
PacketFilter(PacketFilter const& right) = delete;
|
|
PacketFilter& operator=(PacketFilter const& right) = delete;
|
|
};
|
|
|
|
//process only thread-safe packets in Map::Update()
|
|
class MapSessionFilter : public PacketFilter
|
|
{
|
|
public:
|
|
explicit MapSessionFilter(WorldSession* pSession) : PacketFilter(pSession) { }
|
|
~MapSessionFilter() { }
|
|
|
|
bool Process(WorldPacket* packet) override;
|
|
};
|
|
|
|
//class used to filer only thread-unsafe packets from queue
|
|
//in order to update only be used in World::UpdateSessions()
|
|
class WorldSessionFilter : public PacketFilter
|
|
{
|
|
public:
|
|
explicit WorldSessionFilter(WorldSession* pSession) : PacketFilter(pSession) { }
|
|
~WorldSessionFilter() { }
|
|
|
|
bool Process(WorldPacket* packet) override;
|
|
bool ProcessUnsafe() const override { return true; }
|
|
};
|
|
|
|
struct PacketCounter
|
|
{
|
|
time_t lastReceiveTime;
|
|
uint32 amountCounter;
|
|
};
|
|
|
|
/// Player session in the World
|
|
class TC_GAME_API WorldSession
|
|
{
|
|
public:
|
|
WorldSession(uint32 id, std::string&& name, uint32 battlenetAccountId, std::shared_ptr<WorldSocket> sock, AccountTypes sec, uint8 expansion, time_t mute_time,
|
|
std::string os, LocaleConstant locale, uint32 recruiter, bool isARecruiter);
|
|
~WorldSession();
|
|
|
|
bool PlayerLoading() const { return !m_playerLoading.IsEmpty(); }
|
|
bool PlayerLogout() const { return m_playerLogout; }
|
|
bool PlayerLogoutWithSave() const { return m_playerLogout && m_playerSave; }
|
|
bool PlayerRecentlyLoggedOut() const { return m_playerRecentlyLogout; }
|
|
bool PlayerDisconnected() const;
|
|
|
|
bool IsAddonRegistered(const std::string& prefix) const;
|
|
|
|
void SendPacket(WorldPacket const* packet, bool forced = false);
|
|
void AddInstanceConnection(std::shared_ptr<WorldSocket> sock) { m_Socket[CONNECTION_TYPE_INSTANCE] = sock; }
|
|
|
|
void SendNotification(char const* format, ...) ATTR_PRINTF(2, 3);
|
|
void SendNotification(uint32 stringId, ...);
|
|
void SendPetNameInvalid(uint32 error, std::string const& name, DeclinedName *declinedName);
|
|
void SendPartyResult(PartyOperation operation, std::string const& member, PartyResult res, uint32 val = 0);
|
|
void SendSetPhaseShift(std::set<uint32> const& phaseIds, std::set<uint32> const& terrainswaps, std::set<uint32> const& worldMapAreaSwaps);
|
|
void SendQueryTimeResponse();
|
|
|
|
void SendAuthResponse(uint32 code, bool queued, uint32 queuePos = 0);
|
|
void SendClientCacheVersion(uint32 version);
|
|
|
|
void InitializeSession();
|
|
void InitializeSessionCallback(SQLQueryHolder* realmHolder, SQLQueryHolder* holder);
|
|
|
|
rbac::RBACData* GetRBACData();
|
|
bool HasPermission(uint32 permissionId);
|
|
void LoadPermissions();
|
|
PreparedQueryResultFuture LoadPermissionsAsync();
|
|
void InvalidateRBACData(); // Used to force LoadPermissions at next HasPermission check
|
|
|
|
AccountTypes GetSecurity() const { return _security; }
|
|
uint32 GetAccountId() const { return _accountId; }
|
|
ObjectGuid GetAccountGUID() const { return ObjectGuid::Create<HighGuid::WowAccount>(GetAccountId()); }
|
|
std::string const& GetAccountName() const { return _accountName; }
|
|
uint32 GetBattlenetAccountId() const { return _battlenetAccountId; }
|
|
ObjectGuid GetBattlenetAccountGUID() const { return ObjectGuid::Create<HighGuid::BNetAccount>(GetBattlenetAccountId()); }
|
|
Player* GetPlayer() const { return _player; }
|
|
std::string const& GetPlayerName() const;
|
|
std::string GetPlayerInfo() const;
|
|
|
|
void SetSecurity(AccountTypes security) { _security = security; }
|
|
std::string const& GetRemoteAddress() const { return m_Address; }
|
|
void SetPlayer(Player* player);
|
|
uint8 GetExpansion() const { return m_expansion; }
|
|
std::string const& GetOS() const { return _os; }
|
|
|
|
void InitWarden(BigNumber* k);
|
|
|
|
/// Session in auth.queue currently
|
|
void SetInQueue(bool state) { m_inQueue = state; }
|
|
|
|
/// Is the user engaged in a log out process?
|
|
bool isLogingOut() const { return _logoutTime || m_playerLogout; }
|
|
|
|
/// Engage the logout process for the user
|
|
void SetLogoutStartTime(time_t requestTime)
|
|
{
|
|
_logoutTime = requestTime;
|
|
}
|
|
|
|
/// Is logout cooldown expired?
|
|
bool ShouldLogOut(time_t currTime) const
|
|
{
|
|
return (_logoutTime > 0 && currTime >= _logoutTime + 20);
|
|
}
|
|
|
|
void LogoutPlayer(bool save);
|
|
void KickPlayer();
|
|
|
|
void QueuePacket(WorldPacket* new_packet);
|
|
bool Update(uint32 diff, PacketFilter& updater);
|
|
|
|
/// Handle the authentication waiting queue (to be completed)
|
|
void SendAuthWaitQue(uint32 position);
|
|
|
|
void SendSetTimeZoneInformation();
|
|
void SendFeatureSystemStatus();
|
|
void SendFeatureSystemStatusGlueScreen();
|
|
|
|
void SendNameQueryOpcode(ObjectGuid guid);
|
|
|
|
void SendTrainerList(ObjectGuid guid);
|
|
void SendTrainerList(ObjectGuid guid, std::string const& strTitle);
|
|
void SendListInventory(ObjectGuid guid);
|
|
void SendShowBank(ObjectGuid guid);
|
|
bool CanOpenMailBox(ObjectGuid guid);
|
|
void SendShowMailBox(ObjectGuid guid);
|
|
void SendTabardVendorActivate(ObjectGuid guid);
|
|
void SendSpiritResurrect();
|
|
void SendBindPoint(Creature* npc);
|
|
|
|
void SendAttackStop(Unit const* enemy);
|
|
|
|
void SendTradeStatus(WorldPackets::Trade::TradeStatus& status);
|
|
void SendUpdateTrade(bool trader_data = true);
|
|
void SendCancelTrade();
|
|
|
|
void SendPetitionQueryOpcode(ObjectGuid petitionguid);
|
|
|
|
// Pet
|
|
void SendQueryPetNameResponse(ObjectGuid guid);
|
|
void SendStablePet(ObjectGuid guid);
|
|
void SendStablePetCallback(PreparedQueryResult result, ObjectGuid guid);
|
|
void SendPetStableResult(uint8 guid);
|
|
bool CheckStableMaster(ObjectGuid guid);
|
|
|
|
// Account Data
|
|
AccountData const* GetAccountData(AccountDataType type) const { return &_accountData[type]; }
|
|
void SetAccountData(AccountDataType type, uint32 time, std::string const& data);
|
|
void LoadAccountData(PreparedQueryResult result, uint32 mask);
|
|
|
|
void LoadTutorialsData(PreparedQueryResult result);
|
|
void SendTutorialsData();
|
|
void SaveTutorialsData(SQLTransaction& trans);
|
|
uint32 GetTutorialInt(uint8 index) const { return _tutorials[index]; }
|
|
void SetTutorialInt(uint8 index, uint32 value)
|
|
{
|
|
if (_tutorials[index] != value)
|
|
{
|
|
_tutorials[index] = value;
|
|
_tutorialsChanged = true;
|
|
}
|
|
}
|
|
//used with item_page table
|
|
bool SendItemInfo(uint32 itemid, WorldPacket data);
|
|
// Auction
|
|
void SendAuctionHello(ObjectGuid guid, Creature* unit);
|
|
|
|
/**
|
|
* @fn void WorldSession::SendAuctionCommandResult(AuctionEntry* auction, uint32 Action, uint32 ErrorCode, uint32 bidError = 0);
|
|
*
|
|
* @brief Notifies the client of the result of his last auction operation. It is called when the player bids, creates, or deletes an auction
|
|
*
|
|
* @param auction The relevant auction object
|
|
* @param Action The action that was performed.
|
|
* @param ErrorCode The resulting error code.
|
|
* @param bidError (Optional) the bid error.
|
|
*/
|
|
void SendAuctionCommandResult(AuctionEntry* auction, uint32 Action, uint32 ErrorCode, uint32 bidError = 0);
|
|
void SendAuctionOutBidNotification(AuctionEntry const* auction, Item const* item);
|
|
void SendAuctionClosedNotification(AuctionEntry const* auction, float mailDelay, bool sold, Item const* item);
|
|
void SendAuctionWonNotification(AuctionEntry const* auction, Item const* item);
|
|
void SendAuctionOwnerBidNotification(AuctionEntry const* auction, Item const* item);
|
|
|
|
// Black Market
|
|
void SendBlackMarketOpenResult(ObjectGuid guid, Creature* auctioneer);
|
|
void SendBlackMarketBidOnItemResult(int32 result, int32 marketId, WorldPackets::Item::ItemInstance& item);
|
|
void SendBlackMarketWonNotification(BlackMarketEntry const* entry, Item const* item);
|
|
void SendBlackMarketOutbidNotification(BlackMarketTemplate const* templ);
|
|
|
|
//Item Enchantment
|
|
void SendEnchantmentLog(ObjectGuid target, ObjectGuid caster, uint32 itemId, uint32 enchantId);
|
|
void SendItemEnchantTimeUpdate(ObjectGuid Playerguid, ObjectGuid Itemguid, uint32 slot, uint32 Duration);
|
|
|
|
//Taxi
|
|
void SendTaxiStatus(ObjectGuid guid);
|
|
void SendTaxiMenu(Creature* unit);
|
|
void SendDoFlight(uint32 mountDisplayId, uint32 path, uint32 pathNode = 0);
|
|
bool SendLearnNewTaxiNode(Creature* unit);
|
|
void SendDiscoverNewTaxiNode(uint32 nodeid);
|
|
|
|
// Guild/Arena Team
|
|
void SendNotInArenaTeamPacket(uint8 type);
|
|
void SendPetitionShowList(ObjectGuid guid);
|
|
|
|
void DoLootRelease(ObjectGuid lguid);
|
|
|
|
// Account mute time
|
|
time_t m_muteTime;
|
|
|
|
// Locales
|
|
LocaleConstant GetSessionDbcLocale() const { return m_sessionDbcLocale; }
|
|
LocaleConstant GetSessionDbLocaleIndex() const { return m_sessionDbLocaleIndex; }
|
|
char const* GetTrinityString(uint32 entry) const;
|
|
|
|
uint32 GetLatency() const { return m_latency; }
|
|
void SetLatency(uint32 latency) { m_latency = latency; }
|
|
void ResetClientTimeDelay() { m_clientTimeDelay = 0; }
|
|
|
|
std::atomic<int32> m_timeOutTime;
|
|
|
|
void UpdateTimeOutTime(uint32 diff)
|
|
{
|
|
m_timeOutTime -= int32(diff);
|
|
}
|
|
|
|
void ResetTimeOutTime()
|
|
{
|
|
m_timeOutTime = int32(sWorld->getIntConfig(CONFIG_SOCKET_TIMEOUTTIME));
|
|
}
|
|
|
|
bool IsConnectionIdle() const
|
|
{
|
|
return m_timeOutTime <= 0 && !m_inQueue;
|
|
}
|
|
|
|
// Recruit-A-Friend Handling
|
|
uint32 GetRecruiterId() const { return recruiterId; }
|
|
bool IsARecruiter() const { return isRecruiter; }
|
|
|
|
// Battle Pets
|
|
BattlePetMgr* GetBattlePetMgr() const { return _battlePetMgr.get(); }
|
|
|
|
CollectionMgr* GetCollectionMgr() const { return _collectionMgr.get(); }
|
|
|
|
public: // opcodes handlers
|
|
|
|
void Handle_NULL(WorldPackets::Null& null); // not used
|
|
void Handle_EarlyProccess(WorldPacket& recvPacket); // just mark packets processed in WorldSocket::OnRead
|
|
|
|
void HandleCharEnum(PreparedQueryResult result);
|
|
void HandleCharEnumOpcode(WorldPackets::Character::EnumCharacters& /*enumCharacters*/);
|
|
void HandleCharUndeleteEnum(PreparedQueryResult result);
|
|
void HandleCharUndeleteEnumOpcode(WorldPackets::Character::EnumCharacters& /*enumCharacters*/);
|
|
void HandleCharDeleteOpcode(WorldPackets::Character::CharDelete& charDelete);
|
|
void HandleCharCreateOpcode(WorldPackets::Character::CreateCharacter& charCreate);
|
|
void HandleCharCreateCallback(PreparedQueryResult result, WorldPackets::Character::CharacterCreateInfo* createInfo);
|
|
void HandlePlayerLoginOpcode(WorldPackets::Character::PlayerLogin& playerLogin);
|
|
|
|
void SendConnectToInstance(WorldPackets::Auth::ConnectToSerial serial);
|
|
void HandleContinuePlayerLogin();
|
|
void AbortLogin(WorldPackets::Character::LoginFailureReason reason);
|
|
void HandleLoadScreenOpcode(WorldPackets::Character::LoadingScreenNotify& loadingScreenNotify);
|
|
void HandlePlayerLogin(LoginQueryHolder * holder);
|
|
void HandleCharRenameOpcode(WorldPackets::Character::CharacterRenameRequest& request);
|
|
void HandleCharRenameCallBack(PreparedQueryResult result, WorldPackets::Character::CharacterRenameInfo* renameInfo);
|
|
void HandleSetPlayerDeclinedNames(WorldPackets::Character::SetPlayerDeclinedNames& packet);
|
|
void HandleAlterAppearance(WorldPackets::Character::AlterApperance& packet);
|
|
void HandleCharCustomizeOpcode(WorldPackets::Character::CharCustomize& packet);
|
|
void HandleCharCustomizeCallback(PreparedQueryResult result, WorldPackets::Character::CharCustomizeInfo* customizeInfo);
|
|
void HandleCharRaceOrFactionChangeOpcode(WorldPackets::Character::CharRaceOrFactionChange& packet);
|
|
void HandleCharRaceOrFactionChangeCallback(PreparedQueryResult result, WorldPackets::Character::CharRaceOrFactionChangeInfo* factionChangeInfo);
|
|
void HandleRandomizeCharNameOpcode(WorldPackets::Character::GenerateRandomCharacterName& packet);
|
|
void HandleReorderCharacters(WorldPackets::Character::ReorderCharacters& reorderChars);
|
|
void HandleOpeningCinematic(WorldPackets::Misc::OpeningCinematic& packet);
|
|
void HandleGetUndeleteCooldownStatus(WorldPackets::Character::GetUndeleteCharacterCooldownStatus& /*getCooldown*/);
|
|
void HandleUndeleteCooldownStatusCallback(PreparedQueryResult result);
|
|
void HandleCharUndeleteOpcode(WorldPackets::Character::UndeleteCharacter& undeleteInfo);
|
|
void HandleCharUndeleteCallback(PreparedQueryResult result, WorldPackets::Character::CharacterUndeleteInfo* undeleteInfo);
|
|
|
|
void SendCharCreate(ResponseCodes result);
|
|
void SendCharDelete(ResponseCodes result);
|
|
void SendCharRename(ResponseCodes result, WorldPackets::Character::CharacterRenameInfo const* renameInfo);
|
|
void SendCharCustomize(ResponseCodes result, WorldPackets::Character::CharCustomizeInfo const* customizeInfo);
|
|
void SendCharFactionChange(ResponseCodes result, WorldPackets::Character::CharRaceOrFactionChangeInfo const* factionChangeInfo);
|
|
void SendSetPlayerDeclinedNamesResult(DeclinedNameResult result, ObjectGuid guid);
|
|
void SendBarberShopResult(BarberShopResult result);
|
|
void SendUndeleteCooldownStatusResponse(uint32 currentCooldown, uint32 maxCooldown);
|
|
void SendUndeleteCharacterResponse(CharacterUndeleteResult result, WorldPackets::Character::CharacterUndeleteInfo const* undeleteInfo);
|
|
|
|
// played time
|
|
void HandlePlayedTime(WorldPackets::Character::RequestPlayedTime& packet);
|
|
|
|
// new
|
|
void HandleLookingForGroup(WorldPacket& recvPacket);
|
|
|
|
// cemetery/graveyard related
|
|
void HandlePortGraveyard(WorldPackets::Misc::PortGraveyard& packet);
|
|
void HandleRequestCemeteryList(WorldPackets::Misc::RequestCemeteryList& packet);
|
|
|
|
// Inspect
|
|
void HandleInspectOpcode(WorldPackets::Inspect::Inspect& inspect);
|
|
void HandleRequestHonorStatsOpcode(WorldPackets::Inspect::RequestHonorStats& request);
|
|
void HandleInspectPVP(WorldPackets::Inspect::InspectPVPRequest& request);
|
|
void HandleQueryInspectAchievements(WorldPackets::Inspect::QueryInspectAchievements& inspect);
|
|
|
|
void HandleMountSpecialAnimOpcode(WorldPackets::Misc::MountSpecial& mountSpecial);
|
|
|
|
// repair
|
|
void HandleRepairItemOpcode(WorldPackets::Item::RepairItem& packet);
|
|
|
|
// Knockback
|
|
void HandleMoveKnockBackAck(WorldPackets::Movement::MovementAckMessage& movementAck);
|
|
|
|
void HandleMoveTeleportAck(WorldPackets::Movement::MoveTeleportAck& packet);
|
|
void HandleForceSpeedChangeAck(WorldPackets::Movement::MovementSpeedAck& packet);
|
|
void HandleSetCollisionHeightAck(WorldPackets::Movement::MoveSetCollisionHeightAck& setCollisionHeightAck);
|
|
|
|
void HandlePingOpcode(WorldPacket& recvPacket);
|
|
void HandleRepopRequest(WorldPackets::Misc::RepopRequest& packet);
|
|
void HandleAutostoreLootItemOpcode(WorldPackets::Loot::LootItem& packet);
|
|
void HandleLootMoneyOpcode(WorldPackets::Loot::LootMoney& packet);
|
|
void HandleLootOpcode(WorldPackets::Loot::LootUnit& packet);
|
|
void HandleLootReleaseOpcode(WorldPackets::Loot::LootRelease& packet);
|
|
void HandleLootMasterGiveOpcode(WorldPacket& recvPacket);
|
|
void HandleSetLootSpecialization(WorldPackets::Loot::SetLootSpecialization& packet);
|
|
|
|
void HandleWhoOpcode(WorldPackets::Who::WhoRequestPkt& whoRequest);
|
|
void HandleLogoutRequestOpcode(WorldPackets::Character::LogoutRequest& logoutRequest);
|
|
void HandleLogoutCancelOpcode(WorldPackets::Character::LogoutCancel& logoutCancel);
|
|
|
|
// GM Ticket opcodes
|
|
void HandleGMTicketGetCaseStatusOpcode(WorldPackets::Ticket::GMTicketGetCaseStatus& packet);
|
|
void HandleGMTicketSystemStatusOpcode(WorldPackets::Ticket::GMTicketGetSystemStatus& packet);
|
|
void HandleSupportTicketSubmitBug(WorldPackets::Ticket::SupportTicketSubmitBug& packet);
|
|
void HandleSupportTicketSubmitSuggestion(WorldPackets::Ticket::SupportTicketSubmitSuggestion& packet);
|
|
void HandleSupportTicketSubmitComplaint(WorldPackets::Ticket::SupportTicketSubmitComplaint& packet);
|
|
void HandleBugReportOpcode(WorldPackets::Ticket::BugReport& bugReport);
|
|
void HandleComplaint(WorldPackets::Ticket::Complaint& packet);
|
|
|
|
void HandleTogglePvP(WorldPackets::Misc::TogglePvP& packet);
|
|
void HandleSetPvP(WorldPackets::Misc::SetPvP& packet);
|
|
|
|
void HandleSetSelectionOpcode(WorldPackets::Misc::SetSelection& packet);
|
|
void HandleStandStateChangeOpcode(WorldPackets::Misc::StandStateChange& packet);
|
|
void HandleEmoteOpcode(WorldPackets::Chat::EmoteClient& packet);
|
|
|
|
// Social
|
|
void HandleContactListOpcode(WorldPackets::Social::SendContactList& packet);
|
|
void HandleAddFriendOpcode(WorldPackets::Social::AddFriend& packet);
|
|
void HandleAddFriendOpcodeCallBack(PreparedQueryResult result, std::string const& friendNote);
|
|
void HandleDelFriendOpcode(WorldPackets::Social::DelFriend& packet);
|
|
void HandleAddIgnoreOpcode(WorldPackets::Social::AddIgnore& packet);
|
|
void HandleAddIgnoreOpcodeCallBack(PreparedQueryResult result);
|
|
void HandleDelIgnoreOpcode(WorldPackets::Social::DelIgnore& packet);
|
|
void HandleSetContactNotesOpcode(WorldPackets::Social::SetContactNotes& packet);
|
|
|
|
void HandleAreaTriggerOpcode(WorldPackets::Misc::AreaTrigger& packet);
|
|
|
|
void HandleSetFactionAtWar(WorldPackets::Character::SetFactionAtWar& packet);
|
|
void HandleSetFactionNotAtWar(WorldPackets::Character::SetFactionNotAtWar& packet);
|
|
void HandleSetFactionCheat(WorldPacket& recvData);
|
|
void HandleSetWatchedFactionOpcode(WorldPackets::Character::SetWatchedFaction& packet);
|
|
void HandleSetFactionInactiveOpcode(WorldPackets::Character::SetFactionInactive& packet);
|
|
void HandleRequestForcedReactionsOpcode(WorldPackets::Reputation::RequestForcedReactions& requestForcedReactions);
|
|
|
|
void HandleUpdateAccountData(WorldPackets::ClientConfig::UserClientUpdateAccountData& packet);
|
|
void HandleRequestAccountData(WorldPackets::ClientConfig::RequestAccountData& request);
|
|
void HandleSetAdvancedCombatLogging(WorldPackets::ClientConfig::SetAdvancedCombatLogging& setAdvancedCombatLogging);
|
|
void HandleSetActionButtonOpcode(WorldPackets::Spells::SetActionButton& packet);
|
|
|
|
void HandleGameObjectUseOpcode(WorldPackets::GameObject::GameObjUse& packet);
|
|
void HandleMeetingStoneInfo(WorldPacket& recPacket);
|
|
void HandleGameobjectReportUse(WorldPackets::GameObject::GameObjReportUse& packet);
|
|
|
|
void HandleNameQueryOpcode(WorldPackets::Query::QueryPlayerName& packet);
|
|
void HandleQueryTimeOpcode(WorldPackets::Query::QueryTime& queryTime);
|
|
void HandleCreatureQuery(WorldPackets::Query::QueryCreature& packet);
|
|
void HandleDBQueryBulk(WorldPackets::Query::DBQueryBulk& packet);
|
|
|
|
void HandleGameObjectQueryOpcode(WorldPackets::Query::QueryGameObject& packet);
|
|
|
|
void HandleMoveWorldportAckOpcode(WorldPackets::Movement::WorldPortResponse& packet);
|
|
void HandleMoveWorldportAck(); // for server-side calls
|
|
void HandleSuspendTokenResponse(WorldPackets::Movement::SuspendTokenResponse& suspendTokenResponse);
|
|
|
|
void HandleMovementOpcodes(WorldPackets::Movement::ClientPlayerMovement& packet);
|
|
void HandleSetActiveMoverOpcode(WorldPackets::Movement::SetActiveMover& packet);
|
|
void HandleMoveDismissVehicle(WorldPackets::Vehicle::MoveDismissVehicle& moveDismissVehicle);
|
|
void HandleRequestVehiclePrevSeat(WorldPackets::Vehicle::RequestVehiclePrevSeat& requestVehiclePrevSeat);
|
|
void HandleRequestVehicleNextSeat(WorldPackets::Vehicle::RequestVehicleNextSeat& requestVehicleNextSeat);
|
|
void HandleMoveChangeVehicleSeats(WorldPackets::Vehicle::MoveChangeVehicleSeats& moveChangeVehicleSeats);
|
|
void HandleRequestVehicleSwitchSeat(WorldPackets::Vehicle::RequestVehicleSwitchSeat& requestVehicleSwitchSeat);
|
|
void HandleRideVehicleInteract(WorldPackets::Vehicle::RideVehicleInteract& rideVehicleInteract);
|
|
void HandleEjectPassenger(WorldPackets::Vehicle::EjectPassenger& ejectPassenger);
|
|
void HandleRequestVehicleExit(WorldPackets::Vehicle::RequestVehicleExit& requestVehicleExit);
|
|
void HandleMoveSetVehicleRecAck(WorldPackets::Vehicle::MoveSetVehicleRecIdAck& setVehicleRecIdAck);
|
|
void HandleMoveTimeSkippedOpcode(WorldPackets::Movement::MoveTimeSkipped& moveTimeSkipped);
|
|
void HandleMovementAckMessage(WorldPackets::Movement::MovementAckMessage& movementAck);
|
|
|
|
void HandleRequestRaidInfoOpcode(WorldPackets::Party::RequestRaidInfo& packet);
|
|
|
|
void HandlePartyInviteOpcode(WorldPackets::Party::PartyInviteClient& packet);
|
|
//void HandleGroupCancelOpcode(WorldPacket& recvPacket);
|
|
void HandlePartyInviteResponseOpcode(WorldPackets::Party::PartyInviteResponse& packet);
|
|
void HandlePartyUninviteOpcode(WorldPackets::Party::PartyUninvite& packet);
|
|
void HandleSetPartyLeaderOpcode(WorldPackets::Party::SetPartyLeader& packet);
|
|
void HandleSetRoleOpcode(WorldPackets::Party::SetRole& packet);
|
|
void HandleLeaveGroupOpcode(WorldPackets::Party::LeaveGroup& packet);
|
|
void HandleOptOutOfLootOpcode(WorldPackets::Party::OptOutOfLoot& packet);
|
|
void HandleSetLootMethodOpcode(WorldPackets::Party::SetLootMethod& packet);
|
|
void HandleLootRoll(WorldPackets::Loot::LootRoll& packet);
|
|
void HandleRequestPartyMemberStatsOpcode(WorldPackets::Party::RequestPartyMemberStats& packet);
|
|
void HandleUpdateRaidTargetOpcode(WorldPackets::Party::UpdateRaidTarget& packet);
|
|
void HandleDoReadyCheckOpcode(WorldPackets::Party::DoReadyCheck& packet);
|
|
void HandleReadyCheckResponseOpcode(WorldPackets::Party::ReadyCheckResponseClient& packet);
|
|
void HandleConvertRaidOpcode(WorldPackets::Party::ConvertRaid& packet);
|
|
void HandleRequestPartyJoinUpdates(WorldPackets::Party::RequestPartyJoinUpdates& packet);
|
|
void HandleChangeSubGroupOpcode(WorldPackets::Party::ChangeSubGroup& packet);
|
|
void HandleSwapSubGroupsOpcode(WorldPackets::Party::SwapSubGroups& packet);
|
|
void HandleSetAssistantLeaderOpcode(WorldPackets::Party::SetAssistantLeader& packet);
|
|
void HandleSetPartyAssignment(WorldPackets::Party::SetPartyAssignment& packet);
|
|
void HandleInitiateRolePoll(WorldPackets::Party::InitiateRolePoll& packet);
|
|
void HandleSetEveryoneIsAssistant(WorldPackets::Party::SetEveryoneIsAssistant& packet);
|
|
void HandleClearRaidMarker(WorldPackets::Party::ClearRaidMarker& packet);
|
|
|
|
void HandleDeclinePetition(WorldPackets::Petition::DeclinePetition& packet);
|
|
void HandleOfferPetition(WorldPackets::Petition::OfferPetition& packet);
|
|
void HandlePetitionBuy(WorldPackets::Petition::PetitionBuy& packet);
|
|
void HandlePetitionShowSignatures(WorldPackets::Petition::PetitionShowSignatures& packet);
|
|
void HandleQueryPetition(WorldPackets::Petition::QueryPetition& packet);
|
|
void HandlePetitionRenameGuild(WorldPackets::Petition::PetitionRenameGuild& packet);
|
|
void HandleSignPetition(WorldPackets::Petition::SignPetition& packet);
|
|
void HandleTurnInPetition(WorldPackets::Petition::TurnInPetition& packet);
|
|
|
|
void HandleGuildQueryOpcode(WorldPackets::Guild::QueryGuildInfo& query);
|
|
void HandleGuildInviteByName(WorldPackets::Guild::GuildInviteByName& packet);
|
|
void HandleGuildOfficerRemoveMember(WorldPackets::Guild::GuildOfficerRemoveMember& packet);
|
|
void HandleGuildAcceptInvite(WorldPackets::Guild::AcceptGuildInvite& invite);
|
|
void HandleGuildDeclineInvitation(WorldPackets::Guild::GuildDeclineInvitation& decline);
|
|
void HandleGuildEventLogQuery(WorldPackets::Guild::GuildEventLogQuery& packet);
|
|
void HandleGuildGetRoster(WorldPackets::Guild::GuildGetRoster& packet);
|
|
void HandleRequestGuildRewardsList(WorldPackets::Guild::RequestGuildRewardsList& packet);
|
|
void HandleGuildPromoteMember(WorldPackets::Guild::GuildPromoteMember& promote);
|
|
void HandleGuildDemoteMember(WorldPackets::Guild::GuildDemoteMember& demote);
|
|
void HandleGuildAssignRank(WorldPackets::Guild::GuildAssignMemberRank& packet);
|
|
void HandleGuildLeave(WorldPackets::Guild::GuildLeave& leave);
|
|
void HandleGuildDelete(WorldPackets::Guild::GuildDelete& packet);
|
|
void HandleGuildSetAchievementTracking(WorldPackets::Guild::GuildSetAchievementTracking& packet);
|
|
void HandleGuildSetGuildMaster(WorldPackets::Guild::GuildSetGuildMaster& packet);
|
|
void HandleGuildUpdateMotdText(WorldPackets::Guild::GuildUpdateMotdText& packet);
|
|
void HandleGuildNewsUpdateSticky(WorldPackets::Guild::GuildNewsUpdateSticky& packet);
|
|
void HandleGuildSetMemberNote(WorldPackets::Guild::GuildSetMemberNote& packet);
|
|
void HandleGuildGetRanks(WorldPackets::Guild::GuildGetRanks& packet);
|
|
void HandleGuildQueryNews(WorldPackets::Guild::GuildQueryNews& newsQuery);
|
|
void HandleGuildSetRankPermissions(WorldPackets::Guild::GuildSetRankPermissions& packet);
|
|
void HandleGuildAddRank(WorldPackets::Guild::GuildAddRank& packet);
|
|
void HandleGuildDeleteRank(WorldPackets::Guild::GuildDeleteRank& packet);
|
|
void HandleGuildUpdateInfoText(WorldPackets::Guild::GuildUpdateInfoText& packet);
|
|
void HandleSaveGuildEmblem(WorldPackets::Guild::SaveGuildEmblem& packet);
|
|
void HandleGuildRequestPartyState(WorldPackets::Guild::RequestGuildPartyState& packet);
|
|
void HandleGuildChallengeUpdateRequest(WorldPackets::Guild::GuildChallengeUpdateRequest& packet);
|
|
void HandleDeclineGuildInvites(WorldPackets::Guild::DeclineGuildInvites& packet);
|
|
|
|
void HandleGuildFinderAddRecruit(WorldPackets::GuildFinder::LFGuildAddRecruit& lfGuildAddRecruit);
|
|
void HandleGuildFinderBrowse(WorldPackets::GuildFinder::LFGuildBrowse& lfGuildBrowse);
|
|
void HandleGuildFinderDeclineRecruit(WorldPackets::GuildFinder::LFGuildDeclineRecruit& lfGuildDeclineRecruit);
|
|
void HandleGuildFinderGetApplications(WorldPackets::GuildFinder::LFGuildGetApplications& lfGuildGetApplications);
|
|
void HandleGuildFinderGetGuildPost(WorldPackets::GuildFinder::LFGuildGetGuildPost& lfGuildGetGuildPost);
|
|
void HandleGuildFinderGetRecruits(WorldPackets::GuildFinder::LFGuildGetRecruits& lfGuildGetRecruits);
|
|
void HandleGuildFinderRemoveRecruit(WorldPackets::GuildFinder::LFGuildRemoveRecruit& lfGuildRemoveRecruit);
|
|
void HandleGuildFinderSetGuildPost(WorldPackets::GuildFinder::LFGuildSetGuildPost& lfGuildSetGuildPost);
|
|
|
|
void HandleEnableTaxiNodeOpcode(WorldPackets::Taxi::EnableTaxiNode& enableTaxiNode);
|
|
void HandleTaxiNodeStatusQueryOpcode(WorldPackets::Taxi::TaxiNodeStatusQuery& taxiNodeStatusQuery);
|
|
void HandleTaxiQueryAvailableNodesOpcode(WorldPackets::Taxi::TaxiQueryAvailableNodes& taxiQueryAvailableNodes);
|
|
void HandleActivateTaxiOpcode(WorldPackets::Taxi::ActivateTaxi& activateTaxi);
|
|
void HandleMoveSplineDoneOpcode(WorldPackets::Movement::MoveSplineDone& moveSplineDone);
|
|
void SendActivateTaxiReply(ActivateTaxiReply reply);
|
|
void HandleTaxiRequestEarlyLanding(WorldPackets::Taxi::TaxiRequestEarlyLanding& taxiRequestEarlyLanding);
|
|
|
|
void HandleTabardVendorActivateOpcode(WorldPackets::NPC::Hello& packet);
|
|
void HandleBankerActivateOpcode(WorldPackets::NPC::Hello& packet);
|
|
void HandleTrainerListOpcode(WorldPackets::NPC::Hello& packet);
|
|
void HandleTrainerBuySpellOpcode(WorldPackets::NPC::TrainerBuySpell& packet);
|
|
void HandlePetitionShowList(WorldPackets::Petition::PetitionShowList& packet);
|
|
void HandleGossipHelloOpcode(WorldPackets::NPC::Hello& packet);
|
|
void HandleGossipSelectOptionOpcode(WorldPackets::NPC::GossipSelectOption& packet);
|
|
void HandleSpiritHealerActivate(WorldPackets::NPC::SpiritHealerActivate& packet);
|
|
void HandleNpcTextQueryOpcode(WorldPackets::Query::QueryNPCText& packet);
|
|
void HandleBinderActivateOpcode(WorldPackets::NPC::Hello& packet);
|
|
void HandleRequestStabledPets(WorldPackets::NPC::RequestStabledPets& packet);
|
|
void HandleStablePet(WorldPacket& recvPacket);
|
|
void HandleStablePetCallback(PreparedQueryResult result);
|
|
void HandleUnstablePet(WorldPacket& recvPacket);
|
|
void HandleUnstablePetCallback(PreparedQueryResult result, uint32 petId);
|
|
void HandleBuyStableSlot(WorldPacket& recvPacket);
|
|
void HandleStableRevivePet(WorldPacket& recvPacket);
|
|
void HandleStableSwapPet(WorldPacket& recvPacket);
|
|
void HandleStableSwapPetCallback(PreparedQueryResult result, uint32 petId);
|
|
void SendTrainerBuyFailed(ObjectGuid trainerGUID, uint32 spellID, int32 trainerFailedReason);
|
|
|
|
void HandleCanDuel(WorldPackets::Duel::CanDuel& packet);
|
|
void HandleDuelResponseOpcode(WorldPackets::Duel::DuelResponse& duelResponse);
|
|
void HandleDuelAccepted();
|
|
void HandleDuelCancelled();
|
|
|
|
void HandleAcceptTradeOpcode(WorldPackets::Trade::AcceptTrade& acceptTrade);
|
|
void HandleBeginTradeOpcode(WorldPackets::Trade::BeginTrade& beginTrade);
|
|
void HandleBusyTradeOpcode(WorldPackets::Trade::BusyTrade& busyTrade);
|
|
void HandleCancelTradeOpcode(WorldPackets::Trade::CancelTrade& cancelTrade);
|
|
void HandleClearTradeItemOpcode(WorldPackets::Trade::ClearTradeItem& clearTradeItem);
|
|
void HandleIgnoreTradeOpcode(WorldPackets::Trade::IgnoreTrade& ignoreTrade);
|
|
void HandleInitiateTradeOpcode(WorldPackets::Trade::InitiateTrade& initiateTrade);
|
|
void HandleSetTradeCurrencyOpcode(WorldPackets::Trade::SetTradeCurrency& setTradeCurrency);
|
|
void HandleSetTradeGoldOpcode(WorldPackets::Trade::SetTradeGold& setTradeGold);
|
|
void HandleSetTradeItemOpcode(WorldPackets::Trade::SetTradeItem& setTradeItem);
|
|
void HandleUnacceptTradeOpcode(WorldPackets::Trade::UnacceptTrade& unacceptTrade);
|
|
|
|
void HandleAuctionHelloOpcode(WorldPackets::AuctionHouse::AuctionHelloRequest& packet);
|
|
void HandleAuctionListItems(WorldPackets::AuctionHouse::AuctionListItems& packet);
|
|
void HandleAuctionListBidderItems(WorldPackets::AuctionHouse::AuctionListBidderItems& packet);
|
|
void HandleAuctionSellItem(WorldPackets::AuctionHouse::AuctionSellItem& packet);
|
|
void HandleAuctionRemoveItem(WorldPackets::AuctionHouse::AuctionRemoveItem& packet);
|
|
void HandleAuctionListOwnerItems(WorldPackets::AuctionHouse::AuctionListOwnerItems& packet);
|
|
void HandleAuctionPlaceBid(WorldPackets::AuctionHouse::AuctionPlaceBid& packet);
|
|
void HandleAuctionListPendingSales(WorldPackets::AuctionHouse::AuctionListPendingSales& packet);
|
|
void HandleReplicateItems(WorldPackets::AuctionHouse::AuctionReplicateItems& packet);
|
|
|
|
// Bank
|
|
void HandleAutoBankItemOpcode(WorldPackets::Bank::AutoBankItem& packet);
|
|
void HandleAutoStoreBankItemOpcode(WorldPackets::Bank::AutoStoreBankItem& packet);
|
|
void HandleBuyBankSlotOpcode(WorldPackets::Bank::BuyBankSlot& packet);
|
|
|
|
// Black Market
|
|
void HandleBlackMarketOpen(WorldPackets::BlackMarket::BlackMarketOpen& blackMarketOpen);
|
|
void HandleBlackMarketRequestItems(WorldPackets::BlackMarket::BlackMarketRequestItems& blackMarketRequestItems);
|
|
void HandleBlackMarketBidOnItem(WorldPackets::BlackMarket::BlackMarketBidOnItem& blackMarketBidOnItem);
|
|
|
|
void HandleGetMailList(WorldPackets::Mail::MailGetList& packet);
|
|
void HandleSendMail(WorldPackets::Mail::SendMail& packet);
|
|
void HandleMailTakeMoney(WorldPackets::Mail::MailTakeMoney& packet);
|
|
void HandleMailTakeItem(WorldPackets::Mail::MailTakeItem& packet);
|
|
void HandleMailMarkAsRead(WorldPackets::Mail::MailMarkAsRead& packet);
|
|
void HandleMailReturnToSender(WorldPackets::Mail::MailReturnToSender& packet);
|
|
void HandleMailDelete(WorldPackets::Mail::MailDelete& packet);
|
|
void HandleItemTextQuery(WorldPackets::Query::ItemTextQuery& itemTextQuery);
|
|
void HandleMailCreateTextItem(WorldPackets::Mail::MailCreateTextItem& packet);
|
|
void HandleQueryNextMailTime(WorldPackets::Mail::MailQueryNextMailTime& packet);
|
|
void HandleCancelChanneling(WorldPackets::Spells::CancelChannelling& cancelChanneling);
|
|
|
|
void SendItemPageInfo(ItemTemplate* itemProto);
|
|
void HandleSplitItemOpcode(WorldPackets::Item::SplitItem& splitItem);
|
|
void HandleSwapInvItemOpcode(WorldPackets::Item::SwapInvItem& swapInvItem);
|
|
void HandleDestroyItemOpcode(WorldPackets::Item::DestroyItem& destroyItem);
|
|
void HandleAutoEquipItemOpcode(WorldPackets::Item::AutoEquipItem& autoEquipItem);
|
|
void HandleSellItemOpcode(WorldPackets::Item::SellItem& packet);
|
|
void HandleBuyItemOpcode(WorldPackets::Item::BuyItem& packet);
|
|
void HandleListInventoryOpcode(WorldPackets::NPC::Hello& packet);
|
|
void HandleAutoStoreBagItemOpcode(WorldPackets::Item::AutoStoreBagItem& packet);
|
|
void HandleReadItem(WorldPackets::Item::ReadItem& readItem);
|
|
void HandleAutoEquipItemSlotOpcode(WorldPackets::Item::AutoEquipItemSlot& autoEquipItemSlot);
|
|
void HandleSwapItem(WorldPackets::Item::SwapItem& swapItem);
|
|
void HandleBuybackItem(WorldPackets::Item::BuyBackItem& packet);
|
|
void HandleWrapItem(WorldPackets::Item::WrapItem& packet);
|
|
void HandleUseCritterItem(WorldPackets::Item::UseCritterItem& packet);
|
|
void HandleUpgradeItem(WorldPackets::Item::UpgradeItem& packet);
|
|
|
|
void HandleAttackSwingOpcode(WorldPackets::Combat::AttackSwing& packet);
|
|
void HandleAttackStopOpcode(WorldPackets::Combat::AttackStop& packet);
|
|
void HandleSetSheathedOpcode(WorldPackets::Combat::SetSheathed& packet);
|
|
|
|
void HandleUseItemOpcode(WorldPackets::Spells::UseItem& packet);
|
|
void HandleOpenItemOpcode(WorldPackets::Spells::OpenItem& packet);
|
|
void HandleCastSpellOpcode(WorldPackets::Spells::CastSpell& castRequest);
|
|
void HandleCancelCastOpcode(WorldPackets::Spells::CancelCast& packet);
|
|
void HandleCancelAuraOpcode(WorldPackets::Spells::CancelAura& cancelAura);
|
|
void HandleCancelGrowthAuraOpcode(WorldPackets::Spells::CancelGrowthAura& cancelGrowthAura);
|
|
void HandleCancelMountAuraOpcode(WorldPackets::Spells::CancelMountAura& cancelMountAura);
|
|
void HandleCancelAutoRepeatSpellOpcode(WorldPackets::Spells::CancelAutoRepeatSpell& cancelAutoRepeatSpell);
|
|
void HandleMissileTrajectoryCollision(WorldPackets::Spells::MissileTrajectoryCollision& packet);
|
|
void HandleUpdateMissileTrajectory(WorldPackets::Spells::UpdateMissileTrajectory& packet);
|
|
|
|
void HandleLearnTalentsOpcode(WorldPackets::Talent::LearnTalents& packet);
|
|
void HandleConfirmRespecWipeOpcode(WorldPackets::Talent::ConfirmRespecWipe& confirmRespecWipe);
|
|
void HandleUnlearnSkillOpcode(WorldPackets::Spells::UnlearnSkill& packet);
|
|
|
|
void HandleQuestgiverStatusQueryOpcode(WorldPackets::Quest::QuestGiverStatusQuery& packet);
|
|
void HandleQuestgiverStatusMultipleQuery(WorldPackets::Quest::QuestGiverStatusMultipleQuery& packet);
|
|
void HandleQuestgiverHelloOpcode(WorldPackets::Quest::QuestGiverHello& packet);
|
|
void HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestGiverAcceptQuest& packet);
|
|
void HandleQuestgiverQueryQuestOpcode(WorldPackets::Quest::QuestGiverQueryQuest& packet);
|
|
void HandleQuestgiverChooseRewardOpcode(WorldPackets::Quest::QuestGiverChooseReward& packet);
|
|
void HandleQuestgiverRequestRewardOpcode(WorldPackets::Quest::QuestGiverRequestReward& packet);
|
|
void HandleQuestQueryOpcode(WorldPackets::Quest::QueryQuestInfo& packet);
|
|
void HandleQuestgiverCancel(WorldPacket& recvData);
|
|
void HandleQuestLogRemoveQuest(WorldPackets::Quest::QuestLogRemoveQuest& packet);
|
|
void HandleQuestConfirmAccept(WorldPackets::Quest::QuestConfirmAccept& packet);
|
|
void HandleQuestgiverCompleteQuest(WorldPackets::Quest::QuestGiverCompleteQuest& packet);
|
|
void HandleQuestgiverQuestAutoLaunch(WorldPacket& recvPacket);
|
|
void HandlePushQuestToParty(WorldPackets::Quest::PushQuestToParty& packet);
|
|
void HandleQuestPushResult(WorldPackets::Quest::QuestPushResult& packet);
|
|
void HandleRequestWorldQuestUpdate(WorldPackets::Quest::RequestWorldQuestUpdate& packet);
|
|
|
|
void HandleChatMessageOpcode(WorldPackets::Chat::ChatMessage& chatMessage);
|
|
void HandleChatMessageWhisperOpcode(WorldPackets::Chat::ChatMessageWhisper& chatMessageWhisper);
|
|
void HandleChatMessageChannelOpcode(WorldPackets::Chat::ChatMessageChannel& chatMessageChannel);
|
|
void HandleChatMessage(ChatMsg type, uint32 lang, std::string msg, std::string target = "");
|
|
void HandleChatAddonMessageOpcode(WorldPackets::Chat::ChatAddonMessage& chatAddonMessage);
|
|
void HandleChatAddonMessageWhisperOpcode(WorldPackets::Chat::ChatAddonMessageWhisper& chatAddonMessageWhisper);
|
|
void HandleChatAddonMessageChannelOpcode(WorldPackets::Chat::ChatAddonMessageChannel& chatAddonMessageChannel);
|
|
void HandleChatAddonMessage(ChatMsg type, std::string prefix, std::string text, std::string target = "");
|
|
void HandleChatMessageAFKOpcode(WorldPackets::Chat::ChatMessageAFK& chatMessageAFK);
|
|
void HandleChatMessageDNDOpcode(WorldPackets::Chat::ChatMessageDND& chatMessageDND);
|
|
void HandleChatMessageEmoteOpcode(WorldPackets::Chat::ChatMessageEmote& chatMessageEmote);
|
|
void SendChatPlayerNotfoundNotice(std::string const& name);
|
|
void SendPlayerAmbiguousNotice(std::string const& name);
|
|
void SendChatRestricted(ChatRestrictionType restriction);
|
|
void HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet);
|
|
void HandleChatIgnoredOpcode(WorldPackets::Chat::ChatReportIgnored& chatReportIgnored);
|
|
|
|
void HandleUnregisterAllAddonPrefixesOpcode(WorldPackets::Chat::ChatUnregisterAllAddonPrefixes& packet);
|
|
void HandleAddonRegisteredPrefixesOpcode(WorldPackets::Chat::ChatRegisterAddonPrefixes& packet);
|
|
|
|
void HandleReclaimCorpse(WorldPackets::Misc::ReclaimCorpse& packet);
|
|
void HandleQueryCorpseLocation(WorldPackets::Query::QueryCorpseLocationFromClient& packet);
|
|
void HandleQueryCorpseTransport(WorldPackets::Query::QueryCorpseTransport& packet);
|
|
void HandleResurrectResponse(WorldPackets::Misc::ResurrectResponse& packet);
|
|
void HandleSummonResponseOpcode(WorldPackets::Movement::SummonResponse& packet);
|
|
|
|
void HandleJoinChannel(WorldPackets::Channel::JoinChannel& packet);
|
|
void HandleLeaveChannel(WorldPackets::Channel::LeaveChannel& packet);
|
|
|
|
template<void(Channel::*CommandFunction)(Player const*)>
|
|
void HandleChannelCommand(WorldPackets::Channel::ChannelPlayerCommand& packet);
|
|
|
|
template<void(Channel::*CommandFunction)(Player const*, std::string const&)>
|
|
void HandleChannelPlayerCommand(WorldPackets::Channel::ChannelPlayerCommand& packet);
|
|
|
|
void HandleVoiceSessionEnable(WorldPackets::Voice::VoiceSessionEnable& packet);
|
|
void HandleSetActiveVoiceChannel(WorldPackets::Voice::SetActiveVoiceChannel& packet);
|
|
|
|
void HandleCompleteCinematic(WorldPackets::Misc::CompleteCinematic& packet);
|
|
void HandleNextCinematicCamera(WorldPackets::Misc::NextCinematicCamera& packet);
|
|
|
|
void HandleQueryPageText(WorldPackets::Query::QueryPageText& packet);
|
|
|
|
void HandleTutorialFlag(WorldPackets::Misc::TutorialSetFlag& packet);
|
|
|
|
//Pet
|
|
void HandlePetAction(WorldPackets::Pet::PetAction& packet);
|
|
void HandlePetStopAttack(WorldPackets::Pet::PetStopAttack& packet);
|
|
void HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint32 spellid, uint16 flag, ObjectGuid guid2, float x, float y, float z);
|
|
void HandleQueryPetName(WorldPackets::Query::QueryPetName& packet);
|
|
void HandlePetSetAction(WorldPackets::Pet::PetSetAction& packet);
|
|
void HandlePetAbandon(WorldPackets::Pet::PetAbandon& packet);
|
|
void HandlePetRename(WorldPackets::Pet::PetRename& packet);
|
|
void HandlePetCancelAuraOpcode(WorldPackets::Spells::PetCancelAura& packet);
|
|
void HandlePetSpellAutocastOpcode(WorldPackets::Pet::PetSpellAutocast& packet);
|
|
void HandlePetCastSpellOpcode(WorldPackets::Spells::PetCastSpell& petCastSpell);
|
|
|
|
void HandleSetActionBarToggles(WorldPackets::Character::SetActionBarToggles& packet);
|
|
|
|
void HandleTotemDestroyed(WorldPackets::Totem::TotemDestroyed& totemDestroyed);
|
|
void HandleDismissCritter(WorldPackets::Pet::DismissCritter& dismissCritter);
|
|
|
|
//Battleground
|
|
void HandleBattlemasterHelloOpcode(WorldPackets::NPC::Hello& hello);
|
|
void HandleBattlemasterJoinOpcode(WorldPackets::Battleground::BattlemasterJoin& battlemasterJoin);
|
|
void HandlePVPLogDataOpcode(WorldPackets::Battleground::PVPLogDataRequest& pvpLogDataRequest);
|
|
void HandleBattleFieldPortOpcode(WorldPackets::Battleground::BattlefieldPort& battlefieldPort);
|
|
void HandleBattlefieldListOpcode(WorldPackets::Battleground::BattlefieldListRequest& battlefieldList);
|
|
void HandleBattlefieldLeaveOpcode(WorldPackets::Battleground::BattlefieldLeave& battlefieldLeave);
|
|
void HandleBattlemasterJoinArena(WorldPackets::Battleground::BattlemasterJoinArena& packet);
|
|
void HandleReportPvPAFK(WorldPackets::Battleground::ReportPvPPlayerAFK& reportPvPPlayerAFK);
|
|
void HandleRequestRatedBattlefieldInfo(WorldPackets::Battleground::RequestRatedBattlefieldInfo& packet);
|
|
void HandleGetPVPOptionsEnabled(WorldPackets::Battleground::GetPVPOptionsEnabled& getPvPOptionsEnabled);
|
|
void HandleRequestPvpReward(WorldPackets::Battleground::RequestPVPRewards& packet);
|
|
void HandleAreaSpiritHealerQueryOpcode(WorldPackets::Battleground::AreaSpiritHealerQuery& areaSpiritHealerQuery);
|
|
void HandleAreaSpiritHealerQueueOpcode(WorldPackets::Battleground::AreaSpiritHealerQueue& areaSpiritHealerQueue);
|
|
void HandleHearthAndResurrect(WorldPackets::Battleground::HearthAndResurrect& hearthAndResurrect);
|
|
void HandleRequestBattlefieldStatusOpcode(WorldPackets::Battleground::RequestBattlefieldStatus& requestBattlefieldStatus);
|
|
|
|
// Battlefield
|
|
void SendBfInvitePlayerToWar(uint64 queueId, uint32 zoneId, uint32 acceptTime);
|
|
void SendBfInvitePlayerToQueue(uint64 queueId, int8 battleState);
|
|
void SendBfQueueInviteResponse(uint64 queueId, uint32 zoneId, int8 battleStatus, bool canQueue = true, bool loggingIn = false);
|
|
void SendBfEntered(uint64 queueId, bool relocated, bool onOffense);
|
|
void SendBfLeaveMessage(uint64 queueId, int8 battleState, bool relocated, BFLeaveReason reason = BF_LEAVE_REASON_EXITED);
|
|
void HandleBfEntryInviteResponse(WorldPackets::Battlefield::BFMgrEntryInviteResponse& bfMgrEntryInviteResponse);
|
|
void HandleBfQueueInviteResponse(WorldPackets::Battlefield::BFMgrQueueInviteResponse& bfMgrQueueInviteResponse);
|
|
void HandleBfQueueExitRequest(WorldPackets::Battlefield::BFMgrQueueExitRequest& bfMgrQueueExitRequest);
|
|
|
|
|
|
void HandleWorldTeleportOpcode(WorldPackets::Misc::WorldTeleport& worldTeleport);
|
|
void HandleMinimapPingOpcode(WorldPackets::Party::MinimapPingClient& packet);
|
|
void HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient& packet);
|
|
void HandleFarSightOpcode(WorldPackets::Misc::FarSight& packet);
|
|
void HandleSetDungeonDifficultyOpcode(WorldPackets::Misc::SetDungeonDifficulty& setDungeonDifficulty);
|
|
void HandleSetRaidDifficultyOpcode(WorldPackets::Misc::SetRaidDifficulty& setRaidDifficulty);
|
|
void HandleSetTitleOpcode(WorldPackets::Character::SetTitle& packet);
|
|
void HandleTimeSyncResponse(WorldPackets::Misc::TimeSyncResponse& packet);
|
|
void HandleWhoIsOpcode(WorldPackets::Who::WhoIsRequest& packet);
|
|
void HandleResetInstancesOpcode(WorldPackets::Instance::ResetInstances& packet);
|
|
void HandleInstanceLockResponse(WorldPackets::Instance::InstanceLockResponse& packet);
|
|
|
|
// Looking for Dungeon/Raid
|
|
void HandleLfgSetCommentOpcode(WorldPacket& recvData);
|
|
void HandleDFGetSystemInfo(WorldPacket& recvData);
|
|
void SendLfgPlayerLockInfo();
|
|
void SendLfgPartyLockInfo();
|
|
void HandleLfgJoinOpcode(WorldPacket& recvData);
|
|
void HandleLfgLeaveOpcode(WorldPacket& recvData);
|
|
void HandleLfgSetRolesOpcode(WorldPacket& recvData);
|
|
void HandleLfgProposalResultOpcode(WorldPacket& recvData);
|
|
void HandleLfgSetBootVoteOpcode(WorldPacket& recvData);
|
|
void HandleLfgTeleportOpcode(WorldPacket& recvData);
|
|
void HandleLfrJoinOpcode(WorldPacket& recvData);
|
|
void HandleLfrLeaveOpcode(WorldPacket& recvData);
|
|
void HandleDFGetJoinStatus(WorldPacket& recvData);
|
|
|
|
void SendLfgUpdateStatus(lfg::LfgUpdateData const& updateData, bool party);
|
|
void SendLfgRoleChosen(ObjectGuid guid, uint8 roles);
|
|
void SendLfgRoleCheckUpdate(lfg::LfgRoleCheck const& pRoleCheck);
|
|
void SendLfgLfrList(bool update);
|
|
void SendLfgJoinResult(lfg::LfgJoinResultData const& joinData);
|
|
void SendLfgQueueStatus(lfg::LfgQueueStatusData const& queueData);
|
|
void SendLfgPlayerReward(lfg::LfgPlayerRewardData const& lfgPlayerRewardData);
|
|
void SendLfgBootProposalUpdate(lfg::LfgPlayerBoot const& boot);
|
|
void SendLfgUpdateProposal(lfg::LfgProposal const& proposal);
|
|
void SendLfgDisabled();
|
|
void SendLfgOfferContinue(uint32 dungeonEntry);
|
|
void SendLfgTeleportError(uint8 err);
|
|
|
|
void HandleSelfResOpcode(WorldPackets::Spells::SelfRes& packet);
|
|
void HandleRequestPetInfo(WorldPackets::Pet::RequestPetInfo& packet);
|
|
|
|
// Socket gem
|
|
void HandleSocketGems(WorldPackets::Item::SocketGems& socketGems);
|
|
|
|
void HandleCancelTempEnchantmentOpcode(WorldPackets::Item::CancelTempEnchantment& cancelTempEnchantment);
|
|
|
|
void HandleGetItemPurchaseData(WorldPackets::Item::GetItemPurchaseData& packet);
|
|
void HandleItemRefund(WorldPackets::Item::ItemPurchaseRefund& packet);
|
|
|
|
void HandleSetTaxiBenchmark(WorldPackets::Misc::SetTaxiBenchmarkMode& packet);
|
|
|
|
// Guild Bank
|
|
void HandleGuildPermissionsQuery(WorldPackets::Guild::GuildPermissionsQuery& packet);
|
|
void HandleGuildBankMoneyWithdrawn(WorldPackets::Guild::GuildBankRemainingWithdrawMoneyQuery& packet);
|
|
void HandleGuildBankActivate(WorldPackets::Guild::GuildBankActivate& packet);
|
|
void HandleGuildBankQueryTab(WorldPackets::Guild::GuildBankQueryTab& packet);
|
|
void HandleGuildBankLogQuery(WorldPackets::Guild::GuildBankLogQuery& packet);
|
|
void HandleGuildBankDepositMoney(WorldPackets::Guild::GuildBankDepositMoney& packet);
|
|
void HandleGuildBankWithdrawMoney(WorldPackets::Guild::GuildBankWithdrawMoney& packet);
|
|
void HandleGuildBankSwapItems(WorldPackets::Guild::GuildBankSwapItems& packet);
|
|
|
|
void HandleGuildBankUpdateTab(WorldPackets::Guild::GuildBankUpdateTab& packet);
|
|
void HandleGuildBankBuyTab(WorldPackets::Guild::GuildBankBuyTab& packet);
|
|
void HandleGuildBankTextQuery(WorldPackets::Guild::GuildBankTextQuery& packet);
|
|
void HandleGuildBankSetTabText(WorldPackets::Guild::GuildBankSetTabText& packet);
|
|
|
|
// Refer-a-Friend
|
|
void HandleGrantLevel(WorldPackets::RaF::GrantLevel& grantLevel);
|
|
void HandleAcceptGrantLevel(WorldPackets::RaF::AcceptLevelGrant& acceptLevelGrant);
|
|
|
|
// Calendar
|
|
void HandleCalendarGetCalendar(WorldPackets::Calendar::CalendarGetCalendar& calendarGetCalendar);
|
|
void HandleCalendarGetEvent(WorldPackets::Calendar::CalendarGetEvent& calendarGetEvent);
|
|
void HandleCalendarGuildFilter(WorldPackets::Calendar::CalendarGuildFilter& calendarGuildFilter);
|
|
void HandleCalendarAddEvent(WorldPackets::Calendar::CalendarAddEvent& calendarAddEvent);
|
|
void HandleCalendarUpdateEvent(WorldPackets::Calendar::CalendarUpdateEvent& calendarUpdateEvent);
|
|
void HandleCalendarRemoveEvent(WorldPackets::Calendar::CalendarRemoveEvent& calendarRemoveEvent);
|
|
void HandleCalendarCopyEvent(WorldPackets::Calendar::CalendarCopyEvent& calendarCopyEvent);
|
|
void HandleCalendarEventInvite(WorldPackets::Calendar::CalendarEventInvite& calendarEventInvite);
|
|
void HandleCalendarEventRsvp(WorldPackets::Calendar::CalendarEventRSVP& calendarEventRSVP);
|
|
void HandleCalendarEventRemoveInvite(WorldPackets::Calendar::CalendarRemoveInvite& calendarRemoveInvite);
|
|
void HandleCalendarEventStatus(WorldPackets::Calendar::CalendarEventStatus& calendarEventStatus);
|
|
void HandleCalendarEventModeratorStatus(WorldPackets::Calendar::CalendarEventModeratorStatus& calendarEventModeratorStatus);
|
|
void HandleCalendarComplain(WorldPackets::Calendar::CalendarComplain& calendarComplain);
|
|
void HandleCalendarGetNumPending(WorldPackets::Calendar::CalendarGetNumPending& calendarGetNumPending);
|
|
void HandleCalendarEventSignup(WorldPackets::Calendar::CalendarEventSignUp& calendarEventSignUp);
|
|
|
|
void SendCalendarRaidLockout(InstanceSave const* save, bool add);
|
|
void SendCalendarRaidLockoutUpdated(InstanceSave const* save);
|
|
void HandleSetSavedInstanceExtend(WorldPackets::Calendar::SetSavedInstanceExtend& setSavedInstanceExtend);
|
|
|
|
// Void Storage
|
|
void HandleVoidStorageUnlock(WorldPackets::VoidStorage::UnlockVoidStorage& unlockVoidStorage);
|
|
void HandleVoidStorageQuery(WorldPackets::VoidStorage::QueryVoidStorage& queryVoidStorage);
|
|
void HandleVoidStorageTransfer(WorldPackets::VoidStorage::VoidStorageTransfer& voidStorageTransfer);
|
|
void HandleVoidSwapItem(WorldPackets::VoidStorage::SwapVoidItem& swapVoidItem);
|
|
void SendVoidStorageTransferResult(VoidTransferError result);
|
|
|
|
// Transmogrification
|
|
void HandleTransmogrifyItems(WorldPackets::Transmogrification::TransmogrifyItems& transmogrifyItems);
|
|
void HandleTransmogAppearanceSetFavorite(WorldPackets::Transmogrification::TransmogAppearanceSetFavorite& transmogAppearanceSetFavorite);
|
|
|
|
// Miscellaneous
|
|
void HandleSpellClick(WorldPackets::Spells::SpellClick& spellClick);
|
|
void HandleMirrorImageDataRequest(WorldPackets::Spells::GetMirrorImageData& getMirrorImageData);
|
|
void HandleGuildSetFocusedAchievement(WorldPackets::Achievement::GuildSetFocusedAchievement& setFocusedAchievement);
|
|
void HandleEquipmentSetSave(WorldPackets::EquipmentSet::SaveEquipmentSet& saveEquipmentSet);
|
|
void HandleDeleteEquipmentSet(WorldPackets::EquipmentSet::DeleteEquipmentSet& deleteEquipmentSet);
|
|
void HandleUseEquipmentSet(WorldPackets::EquipmentSet::UseEquipmentSet& useEquipmentSet);
|
|
void HandleUITimeRequest(WorldPackets::Misc::UITimeRequest& /*request*/);
|
|
void HandleQueryQuestCompletionNPCs(WorldPackets::Query::QueryQuestCompletionNPCs& queryQuestCompletionNPCs);
|
|
void HandleQuestPOIQuery(WorldPackets::Query::QuestPOIQuery& questPoiQuery);
|
|
void HandleViolenceLevel(WorldPackets::Misc::ViolenceLevel& violenceLevel);
|
|
void HandleObjectUpdateFailedOpcode(WorldPackets::Misc::ObjectUpdateFailed& objectUpdateFailed);
|
|
void HandleObjectUpdateRescuedOpcode(WorldPackets::Misc::ObjectUpdateRescued& objectUpdateRescued);
|
|
void HandleRequestCategoryCooldowns(WorldPackets::Spells::RequestCategoryCooldowns& requestCategoryCooldowns);
|
|
|
|
// Toys
|
|
void HandleAddToy(WorldPackets::Toy::AddToy& packet);
|
|
void HandleToySetFavorite(WorldPackets::Toy::ToySetFavorite& packet);
|
|
void HandleUseToy(WorldPackets::Toy::UseToy& packet);
|
|
|
|
void HandleMountSetFavorite(WorldPackets::Misc::MountSetFavorite& mountSetFavorite);
|
|
|
|
// Scenes
|
|
void HandleSceneTriggerEvent(WorldPackets::Scenes::SceneTriggerEvent& sceneTriggerEvent);
|
|
void HandleScenePlaybackComplete(WorldPackets::Scenes::ScenePlaybackComplete& scenePlaybackComplete);
|
|
void HandleScenePlaybackCanceled(WorldPackets::Scenes::ScenePlaybackCanceled& scenePlaybackCanceled);
|
|
|
|
// Token
|
|
void HandleUpdateListedAuctionableTokens(WorldPackets::Token::UpdateListedAuctionableTokens& updateListedAuctionableTokens);
|
|
void HandleRequestWowTokenMarketPrice(WorldPackets::Token::RequestWowTokenMarketPrice& requestWowTokenMarketPrice);
|
|
|
|
// Compact Unit Frames (4.x)
|
|
void HandleSaveCUFProfiles(WorldPackets::Misc::SaveCUFProfiles& packet);
|
|
void SendLoadCUFProfiles();
|
|
|
|
// Garrison
|
|
void HandleGetGarrisonInfo(WorldPackets::Garrison::GetGarrisonInfo& getGarrisonInfo);
|
|
void HandleGarrisonPurchaseBuilding(WorldPackets::Garrison::GarrisonPurchaseBuilding& garrisonPurchaseBuilding);
|
|
void HandleGarrisonCancelConstruction(WorldPackets::Garrison::GarrisonCancelConstruction& garrisonCancelConstruction);
|
|
void HandleGarrisonRequestBlueprintAndSpecializationData(WorldPackets::Garrison::GarrisonRequestBlueprintAndSpecializationData& garrisonRequestBlueprintAndSpecializationData);
|
|
void HandleGarrisonGetBuildingLandmarks(WorldPackets::Garrison::GarrisonGetBuildingLandmarks& garrisonGetBuildingLandmarks);
|
|
|
|
// Battle Pets
|
|
void HandleBattlePetRequestJournal(WorldPackets::BattlePet::BattlePetRequestJournal& battlePetRequestJournal);
|
|
void HandleBattlePetSetBattleSlot(WorldPackets::BattlePet::BattlePetSetBattleSlot& battlePetSetBattleSlot);
|
|
void HandleBattlePetModifyName(WorldPackets::BattlePet::BattlePetModifyName& battlePetModifyName);
|
|
void HandleBattlePetDeletePet(WorldPackets::BattlePet::BattlePetDeletePet& battlePetDeletePet);
|
|
void HandleBattlePetSetFlags(WorldPackets::BattlePet::BattlePetSetFlags& battlePetSetFlags);
|
|
void HandleBattlePetSummon(WorldPackets::BattlePet::BattlePetSummon& battlePetSummon);
|
|
void HandleCageBattlePet(WorldPackets::BattlePet::CageBattlePet& cageBattlePet);
|
|
|
|
// Warden
|
|
void HandleWardenData(WorldPackets::Warden::WardenData& packet);
|
|
|
|
// Battlenet
|
|
void HandleBattlenetRequest(WorldPackets::Battlenet::Request& request);
|
|
void HandleBattlenetRequestRealmListTicket(WorldPackets::Battlenet::RequestRealmListTicket& requestRealmListTicket);
|
|
|
|
void SendBattlenetResponse(uint32 serviceHash, uint32 methodId, uint32 token, pb::Message const* response);
|
|
void SendBattlenetResponse(uint32 serviceHash, uint32 methodId, uint32 token, uint32 status);
|
|
void SendBattlenetRequest(uint32 serviceHash, uint32 methodId, pb::Message const* request, std::function<void(MessageBuffer)> callback);
|
|
void SendBattlenetRequest(uint32 serviceHash, uint32 methodId, pb::Message const* request);
|
|
|
|
std::array<uint8, 32> const& GetRealmListSecret() const { return _realmListSecret; }
|
|
void SetRealmListSecret(std::array<uint8, 32> const& secret) { memcpy(_realmListSecret.data(), secret.data(), secret.size()); }
|
|
|
|
std::unordered_map<uint32, uint8> const& GetRealmCharacterCounts() const { return _realmCharacterCounts; }
|
|
|
|
// Artifact
|
|
void HandleArtifactAddPower(WorldPackets::Artifact::ArtifactAddPower& artifactAddPower);
|
|
void HandleArtifactSetAppearance(WorldPackets::Artifact::ArtifactSetAppearance& artifactSetAppearance);
|
|
void HandleConfirmArtifactRespec(WorldPackets::Artifact::ConfirmArtifactRespec& confirmArtifactRespec);
|
|
|
|
union ConnectToKey
|
|
{
|
|
struct
|
|
{
|
|
uint64 AccountId : 32;
|
|
uint64 ConnectionType : 1;
|
|
uint64 Key : 31;
|
|
} Fields;
|
|
|
|
uint64 Raw;
|
|
};
|
|
|
|
uint64 GetConnectToInstanceKey() const { return _instanceConnectKey.Raw; }
|
|
private:
|
|
void InitializeQueryCallbackParameters();
|
|
void ProcessQueryCallbacks();
|
|
|
|
QueryResultHolderFuture _realmAccountLoginCallback;
|
|
QueryResultHolderFuture _accountLoginCallback;
|
|
PreparedQueryResultFuture _addIgnoreCallback;
|
|
PreparedQueryResultFuture _stablePetCallback;
|
|
QueryCallback<PreparedQueryResult, bool> _charEnumCallback;
|
|
QueryCallback<PreparedQueryResult, std::string> _addFriendCallback;
|
|
QueryCallback<PreparedQueryResult, uint32> _unstablePetCallback;
|
|
QueryCallback<PreparedQueryResult, uint32> _stableSwapCallback;
|
|
QueryCallback<PreparedQueryResult, ObjectGuid> _sendStabledPetCallback;
|
|
QueryCallback<PreparedQueryResult, std::shared_ptr<WorldPackets::Character::CharacterCreateInfo>, true> _charCreateCallback;
|
|
QueryCallback<PreparedQueryResult, std::shared_ptr<WorldPackets::Character::CharacterRenameInfo>> _charRenameCallback;
|
|
QueryCallback<PreparedQueryResult, std::shared_ptr<WorldPackets::Character::CharCustomizeInfo>> _charCustomizeCallback;
|
|
QueryCallback<PreparedQueryResult, std::shared_ptr<WorldPackets::Character::CharRaceOrFactionChangeInfo>> _charFactionChangeCallback;
|
|
QueryCallback<PreparedQueryResult, bool, true> _undeleteCooldownStatusCallback;
|
|
QueryCallback<PreparedQueryResult, std::shared_ptr<WorldPackets::Character::CharacterUndeleteInfo>, true> _charUndeleteCallback;
|
|
QueryResultHolderFuture _charLoginCallback;
|
|
|
|
friend class World;
|
|
protected:
|
|
class DosProtection
|
|
{
|
|
friend class World;
|
|
public:
|
|
DosProtection(WorldSession* s) : Session(s), _policy((Policy)sWorld->getIntConfig(CONFIG_PACKET_SPOOF_POLICY)) { }
|
|
bool EvaluateOpcode(WorldPacket& p, time_t time) const;
|
|
protected:
|
|
enum Policy
|
|
{
|
|
POLICY_LOG,
|
|
POLICY_KICK,
|
|
POLICY_BAN,
|
|
};
|
|
|
|
uint32 GetMaxPacketCounterAllowed(uint16 opcode) const;
|
|
|
|
WorldSession* Session;
|
|
|
|
private:
|
|
Policy _policy;
|
|
typedef std::unordered_map<uint16, PacketCounter> PacketThrottlingMap;
|
|
// mark this member as "mutable" so it can be modified even in const functions
|
|
mutable PacketThrottlingMap _PacketThrottlingMap;
|
|
|
|
DosProtection(DosProtection const& right) = delete;
|
|
DosProtection& operator=(DosProtection const& right) = delete;
|
|
} AntiDOS;
|
|
|
|
private:
|
|
// private trade methods
|
|
void moveItems(Item* myItems[], Item* hisItems[]);
|
|
|
|
bool CanUseBank(ObjectGuid bankerGUID = ObjectGuid::Empty) const;
|
|
|
|
// logging helper
|
|
void LogUnexpectedOpcode(WorldPacket* packet, const char* status, const char *reason);
|
|
void LogUnprocessedTail(WorldPacket* packet);
|
|
|
|
// EnumData helpers
|
|
bool IsLegitCharacterForAccount(ObjectGuid lowGUID)
|
|
{
|
|
return _legitCharacters.find(lowGUID) != _legitCharacters.end();
|
|
}
|
|
|
|
// this stores the GUIDs of the characters who can login
|
|
// characters who failed on Player::BuildEnumData shouldn't login
|
|
GuidSet _legitCharacters;
|
|
|
|
ObjectGuid::LowType m_GUIDLow; // set logined or recently logout player (while m_playerRecentlyLogout set)
|
|
Player* _player;
|
|
std::shared_ptr<WorldSocket> m_Socket[MAX_CONNECTION_TYPES];
|
|
std::string m_Address; // Current Remote Address
|
|
// std::string m_LAddress; // Last Attempted Remote Adress - we can not set attempted ip for a non-existing session!
|
|
|
|
AccountTypes _security;
|
|
uint32 _accountId;
|
|
std::string _accountName;
|
|
uint32 _battlenetAccountId;
|
|
uint8 m_expansion;
|
|
std::string _os;
|
|
|
|
std::array<uint8, 32> _realmListSecret;
|
|
std::unordered_map<uint32 /*realmAddress*/, uint8> _realmCharacterCounts;
|
|
std::unordered_map<uint32, std::function<void(MessageBuffer)>> _battlenetResponseCallbacks;
|
|
uint32 _battlenetRequestToken;
|
|
|
|
// Warden
|
|
Warden* _warden; // Remains NULL if Warden system is not enabled by config
|
|
|
|
time_t _logoutTime;
|
|
bool m_inQueue; // session wait in auth.queue
|
|
ObjectGuid m_playerLoading; // code processed in LoginPlayer
|
|
bool m_playerLogout; // code processed in LogoutPlayer
|
|
bool m_playerRecentlyLogout;
|
|
bool m_playerSave;
|
|
LocaleConstant m_sessionDbcLocale;
|
|
LocaleConstant m_sessionDbLocaleIndex;
|
|
std::atomic<uint32> m_latency;
|
|
std::atomic<uint32> m_clientTimeDelay;
|
|
AccountData _accountData[NUM_ACCOUNT_DATA_TYPES];
|
|
uint32 _tutorials[MAX_ACCOUNT_TUTORIAL_VALUES];
|
|
bool _tutorialsChanged;
|
|
std::vector<std::string> _registeredAddonPrefixes;
|
|
bool _filterAddonMessages;
|
|
uint32 recruiterId;
|
|
bool isRecruiter;
|
|
LockedQueue<WorldPacket*> _recvQueue;
|
|
rbac::RBACData* _RBACData;
|
|
uint32 expireTime;
|
|
bool forceExit;
|
|
ObjectGuid m_currentBankerGUID;
|
|
|
|
std::unique_ptr<BattlePetMgr> _battlePetMgr;
|
|
|
|
std::unique_ptr<CollectionMgr> _collectionMgr;
|
|
|
|
ConnectToKey _instanceConnectKey;
|
|
|
|
WorldSession(WorldSession const& right) = delete;
|
|
WorldSession& operator=(WorldSession const& right) = delete;
|
|
};
|
|
|
|
#endif
|
|
/// @}
|