59 TC_LOG_DEBUG(
"network",
"WORLD: Recvd CMSG_REPOP_REQUEST Message");
74 TC_LOG_DEBUG(
"network",
"HandleRepopRequestOpcode: got request after player {} {} was killed and before he was updated",
88 TC_LOG_DEBUG(
"network",
"WORLD: CMSG_GOSSIP_SELECT_OPTION");
93 std::string code =
"";
95 recvData >> guid >> menuId >> gossipListId;
117 TC_LOG_DEBUG(
"network",
"WORLD: HandleGossipSelectOptionOpcode - {} not found or you can't interact with him.", guid.
ToString());
126 TC_LOG_DEBUG(
"network",
"WORLD: HandleGossipSelectOptionOpcode - {} not found or you can't interact with it.", guid.
ToString());
132 TC_LOG_DEBUG(
"network",
"WORLD: HandleGossipSelectOptionOpcode - unsupported {}.", guid.
ToString());
142 TC_LOG_DEBUG(
"network",
"WORLD: HandleGossipSelectOptionOpcode - Script reloaded while in use, ignoring and set new scipt id");
180 TC_LOG_DEBUG(
"network",
"WORLD: Recvd CMSG_WHO Message");
184 uint32 levelMin, levelMax, racemask, classmask, zonesCount, strCount;
186 std::string packetPlayerName, packetGuildName;
188 recvData >> levelMin;
189 recvData >> levelMax;
190 recvData >> packetPlayerName;
192 recvData >> packetGuildName;
194 recvData >> racemask;
195 recvData >> classmask;
196 recvData >> zonesCount;
201 for (
uint32 i = 0; i < zonesCount; ++i)
209 recvData >> strCount;
214 TC_LOG_DEBUG(
"network",
"Minlvl {}, maxlvl {}, name {}, guild {}, racemask {}, classmask {}, zones {}, strings {}", levelMin, levelMax, packetPlayerName, packetGuildName, racemask, classmask, zonesCount, strCount);
217 for (
uint32 i = 0; i < strCount; ++i)
230 std::wstring wpacketPlayerName;
231 std::wstring wpacketGuildName;
232 if (!(
Utf8toWStr(packetPlayerName, wpacketPlayerName) &&
Utf8toWStr(packetGuildName, wpacketGuildName)))
249 data <<
uint32(matchCount);
250 data <<
uint32(displayCount);
264 if (
_player->
GetGUID() != target.GetGuid() && !target.IsVisible())
269 uint8 lvl = target.GetLevel();
270 if (lvl < levelMin || lvl > levelMax)
274 uint8 class_ = target.GetClass();
275 if (!(classmask & (1 << class_)))
279 uint32 race = target.GetRace();
280 if (!(racemask & (1 << race)))
283 uint32 playerZoneId = target.GetZoneId();
284 uint8 gender = target.GetGender();
286 bool showZones =
true;
287 for (
uint32 i = 0; i < zonesCount; ++i)
289 if (zoneids[i] == playerZoneId)
300 std::wstring
const& wideplayername = target.GetWidePlayerName();
301 if (!(wpacketPlayerName.empty() || wideplayername.find(wpacketPlayerName) != std::wstring::npos))
304 std::wstring
const& wideguildname = target.GetWideGuildName();
305 if (!(wpacketGuildName.empty() || wideguildname.find(wpacketGuildName) != std::wstring::npos))
313 for (
uint32 i = 0; i < strCount; ++i)
317 if (wideguildname.find(str[i]) != std::wstring::npos ||
318 wideplayername.find(str[i]) != std::wstring::npos ||
335 data << target.GetPlayerName();
336 data << target.GetGuildName();
340 data <<
uint8(gender);
341 data <<
uint32(playerZoneId);
346 data.
put(0, displayCount);
347 data.
put(4, matchCount);
350 TC_LOG_DEBUG(
"network",
"WORLD: Send SMSG_WHO Message");
366 if (
GetPlayer()->IsInCombat() && !canLogoutInCombat)
375 logoutResponse.
Instant = instantLogout;
462 TC_LOG_DEBUG(
"network",
"WORLD: Recvd ZONE_UPDATE: {}", newZone);
483 && autoReapeatSpell->m_targets.GetUnitTargetGUID() != guid)
494 autoReapeatSpell->m_targets.SetUnitTarget(unitTarget);
496 autoReapeatSpell->m_targets.RemoveObjectTarget();
505 recvData >> animstate;
523 uint32 suggestion, contentlen, typelen;
524 std::string content, type;
526 recvData >> suggestion >> contentlen >> content;
528 recvData >> typelen >> type;
531 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_BUG [Bug Report]");
533 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_BUG [Suggestion]");
548 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_RECLAIM_CORPSE");
581 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_RESURRECT_RESPONSE");
605 vsnprintf(szStr, 1024,
Text, ap);
608 uint32 length = strlen(szStr)+1;
618 recvData >> triggerId;
620 TC_LOG_DEBUG(
"network",
"CMSG_AREATRIGGER. Trigger ID: {}", triggerId);
625 TC_LOG_DEBUG(
"network",
"HandleAreaTriggerOpcode: Player '{}' {} in flight, ignore Area Trigger ID:{}",
633 TC_LOG_DEBUG(
"network",
"HandleAreaTriggerOpcode: Player '{}' {} send unknown (by DBC) Area Trigger ID:{}",
640 TC_LOG_DEBUG(
"network",
"HandleAreaTriggerOpcode: Player '{}' {} too far, ignore Area Trigger ID: {}",
651 if (
sScriptMgr->OnAreaTrigger(player, atEntry))
659 if (
sObjectMgr->IsTavernAreaTrigger(triggerId))
664 if (
sWorld->IsFFAPvPRealm())
672 bg->HandleAreaTrigger(player, triggerId);
675 if (pvp->HandleAreaTrigger(
_player, triggerId))
682 bool teleported =
false;
687 bool reviveAtTrigger =
false;
697 TC_LOG_DEBUG(
"maps",
"MAP: Player '{}' attempted to enter instance map {} but the requested difficulty was not found", player->
GetName(), at->
target_mapId);
708 reviveAtTrigger =
true;
722 TC_LOG_DEBUG(
"maps",
"MAP: Player '{}' cannot enter instance map '{}' because their permanent bind is incompatible with their group's", player->
GetName(), mapName);
727 reviveAtTrigger =
true;
731 TC_LOG_DEBUG(
"maps",
"MAP: Player '{}' cannot enter instance map {} because he has exceeded the maximum number of instances per hour.", player->
GetName(), at->
target_mapId);
732 reviveAtTrigger =
true;
736 reviveAtTrigger =
true;
740 reviveAtTrigger =
true;
768 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_UPDATE_ACCOUNT_DATA");
770 uint32 type, timestamp, decompressedSize;
771 recvData >> type >> timestamp >> decompressedSize;
773 TC_LOG_DEBUG(
"network",
"UAD: type {}, time {}, decompressedSize {}", type, timestamp, decompressedSize);
778 if (decompressedSize == 0)
790 if (decompressedSize > 0xFFFF)
793 TC_LOG_ERROR(
"network",
"UAD: Account data packet too big, size {}", decompressedSize);
798 dest.
resize(decompressedSize);
800 uLongf realSize = decompressedSize;
804 TC_LOG_ERROR(
"network",
"UAD: Failed to decompress account data");
823 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_REQUEST_ACCOUNT_DATA");
837 uLongf destSize = compressBound(size);
842 if (size && compress(dest.
contents(), &destSize, (
uint8 const*)adata->
Data.c_str(), size) != Z_OK)
844 TC_LOG_DEBUG(
"network",
"RAD: Failed to compress account data");
863 recvData >> button >> packetData;
864 TC_LOG_DEBUG(
"network",
"CMSG_SET_ACTION_BUTTON Button: {} Data: {}", button, packetData);
897 recvData >> actionBar;
902 TC_LOG_ERROR(
"network",
"WorldSession::HandleSetActionBarToggles in not logged state with value: {}, ignored",
uint32(actionBar));
932 if (
GetPlayer()->IsValidAttackTarget(player))
943 inspectResult.
Items.emplace_back(item);
969 if (
GetPlayer()->IsValidAttackTarget(player))
986 TC_LOG_DEBUG(
"network",
"Player '{}' ({}) in flight, ignore worldport command.",
993 TC_LOG_DEBUG(
"network",
"CMSG_WORLD_TELEPORT: Player = {}, time = {}, map = {}, pos = {}",
1005 std::string charname;
1006 recvData >> charname;
1042 Field* fields = result->Fetch();
1043 std::string acc = fields[0].
GetString();
1046 std::string email = fields[1].
GetString();
1049 std::string lastip = fields[2].
GetString();
1053 std::string msg = charname +
"'s " +
"account is " + acc +
", e-mail: " + email +
", last ip: " + lastip;
1059 TC_LOG_DEBUG(
"network",
"Received whois command from player {} for character {}",
1073 std::string description =
"";
1074 recvData >> spam_type;
1075 recvData >> spammer_guid;
1088 recvData >> description;
1100 TC_LOG_DEBUG(
"network",
"REPORT SPAM: type {}, {}, unk1 {}, unk2 {}, unk3 {}, unk4 {}, message {}",
1101 spam_type, spammer_guid.
ToString(), unk1, unk2, unk3, unk4, description);
1109 std::string split_date =
"01/01/01";
1114 data <<
uint32(0x00000000);
1169 TC_LOG_DEBUG(
"network",
"WORLD: CMSG_RESET_INSTANCES");
1200 TC_LOG_DEBUG(
"network",
"WorldSession::HandleSetDungeonDifficultyOpcode: player (Name: {}, {}) tried to reset the instance while player is inside!",
1212 Player* groupGuy = itr->GetSource();
1221 TC_LOG_DEBUG(
"network",
"WorldSession::HandleSetDungeonDifficultyOpcode: player {} tried to reset the instance while group member (Name: {}, {}) is inside!",
1270 Player* groupGuy = itr->GetSource();
1298 TC_LOG_DEBUG(
"network",
"WORLD: CMSG_SET_TAXI_BENCHMARK_MODE");
1305 TC_LOG_DEBUG(
"network",
"Client used \"/timetest {}\" command", mode);
1321 if (
GetPlayer()->IsValidAttackTarget(player))
1330 TC_LOG_DEBUG(
"network",
"WORLD: CMSG_WORLD_STATE_UI_TIMER_UPDATE");
1340 TC_LOG_DEBUG(
"network",
"WORLD: CMSG_READY_FOR_ACCOUNT_DATA_TIMES");
1348 data <<
uint32(PhaseShift);
1355 recvPacket >> accept;
1359 TC_LOG_INFO(
"network",
"InstanceLockResponse: Player {} {} tried to bind himself/teleport to graveyard without a pending bind!",
1374 TC_LOG_DEBUG(
"network",
"WORLD: CMSG_UPDATE_MISSILE_TRAJECTORY");
1378 float elevation, speed;
1383 recvPacket >> guid >> spellId >> elevation >> speed;
1384 recvPacket >> firePos;
1385 recvPacket >> impactPos;
1386 recvPacket >> moveStop;
1407 recvPacket >> movementInfo;
@ CONDITION_SOURCE_TYPE_AREATRIGGER_CLIENT_TRIGGERED
#define CORPSE_RECLAIM_RADIUS
@ CORPSE_RESURRECTABLE_PVP
#define MAX_RAID_DIFFICULTY
#define MAX_DUNGEON_DIFFICULTY
DBCStorage< AreaTriggerEntry > sAreaTriggerStore(AreaTriggerEntryfmt)
DBCStorage< MapEntry > sMapStore(MapEntryfmt)
DBCStorage< AreaTableEntry > sAreaTableStore(AreaTableEntryfmt)
std::shared_ptr< PreparedResultSet > PreparedQueryResult
DatabaseWorkerPool< LoginDatabaseConnection > LoginDatabase
Accessor to the realm/login database.
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
@ LANG_PLAYER_NOT_EXIST_OR_OFFLINE
@ LANG_ACCOUNT_FOR_PLAYER_NOT_FOUND
@ LANG_DEBUG_AREATRIGGER_REACHED
@ LANG_INSTANCE_BIND_MISMATCH
@ LANG_YOU_NOT_HAVE_PERMISSION
@ LANG_NEED_CHARACTER_NAME
#define TC_LOG_DEBUG(filterType__,...)
#define TC_LOG_ERROR(filterType__,...)
#define TC_LOG_INFO(filterType__,...)
@ LOGIN_SEL_ACCOUNT_WHOIS
@ INSTANCE_RESET_CHANGE_DIFFICULTY
bool normalizePlayerName(std::string &name)
@ TELE_TO_NOT_LEAVE_TRANSPORT
@ TRANSFER_ABORT_TOO_MANY_INSTANCES
@ TRANSFER_ABORT_DIFFICULTY
@ TRANSFER_ABORT_MAX_PLAYERS
@ TRANSFER_ABORT_ZONE_IN_COMBAT
@ PLAYER_FLAGS_TAXI_BENCHMARK
@ PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES
#define ACTION_BUTTON_TYPE(X)
#define ACTION_BUTTON_ACTION(X)
#define INVENTORY_SLOT_BAG_0
@ QUEST_STATUS_INCOMPLETE
@ SPELL_AURA_PREVENT_RESURRECTION
@ UNIT_BYTE2_FLAG_FFA_PVP
@ CURRENT_AUTOREPEAT_SPELL
@ PLAYER_FIELD_TODAY_CONTRIBUTION
@ PLAYER_FIELD_YESTERDAY_CONTRIBUTION
@ PLAYER_FIELD_LIFETIME_HONORABLE_KILLS
void wstrToLower(std::wstring &str)
bool Utf8FitTo(std::string_view str, std::wstring_view search)
bool Utf8toWStr(char const *utf8str, size_t csize, wchar_t *wstr, size_t &wsize)
#define sWhoListStorageMgr
std::vector< WhoListPlayerInfo > WhoListInfoVector
static bool IsPlayerAccount(uint32 gmlevel)
void resize(size_t newsize)
void put(std::size_t pos, T value)
void PSendSysMessage(char const *fmt, Args &&... args)
time_t const & GetGhostTime() const
CorpseType GetType() const
virtual bool OnGossipSelectCode(Player *, uint32, uint32, char const *)
virtual bool OnGossipSelect(Player *, uint32, uint32)
uint32 GetScriptId() const
Class used to access individual fields of database query result.
std::string GetString() const
virtual bool OnGossipSelect(Player *, uint32, uint32)
virtual bool OnGossipSelectCode(Player *, uint32, uint32, char const *)
GameObjectAI * AI() const
uint32 GetScriptId() const
void SetRaidDifficulty(Difficulty difficulty)
void SetDungeonDifficulty(Difficulty difficulty)
bool IsLeader(ObjectGuid guid) const
void ResetInstances(uint8 method, bool isRaid, Player *SendMsgTo)
GroupReference * GetFirstMember()
bool IsNonRaidDungeon() const
@ CANNOT_ENTER_CORPSE_IN_DIFFERENT_INSTANCE
@ CANNOT_ENTER_TOO_MANY_INSTANCES
@ CANNOT_ENTER_MAX_PLAYERS
@ CANNOT_ENTER_ZONE_IN_COMBAT
@ CANNOT_ENTER_DIFFICULTY_UNAVAILABLE
@ CANNOT_ENTER_INSTANCE_BIND_MISMATCH
@ CANNOT_ENTER_UNINSTANCED_DUNGEON
@ CANNOT_ENTER_NOT_IN_RAID
static ObjectGuid const Empty
std::string ToString() const
bool IsGameObject() const
bool IsCreatureOrVehicle() const
PackedGuidReader ReadAsPacked()
void SetByteValue(uint16 index, uint8 offset, uint8 value)
uint32 GetUInt32Value(uint16 index) const
void SetFlag(uint16 index, uint32 newFlag)
void RemoveFlag(uint16 index, uint32 oldFlag)
void ApplyModFlag(uint16 index, uint32 flag, bool apply)
bool HasFlag(uint16 index, uint32 flag) const
static ObjectGuid GetGUID(Object const *o)
void SetUInt32Value(uint16 index, uint32 value)
void ToggleFlag(uint16 index, uint32 flag)
ObjectGuid GetGuidValue(uint16 index) const
ActionButton * addActionButton(uint8 button, uint32 action, uint8 type)
Difficulty GetRaidDifficulty() const
WorldLocation const & GetCorpseLocation() const
void removeActionButton(uint8 button)
void SetRestFlag(RestFlag restFlag, uint32 triggerId=0)
void SetSeer(WorldObject *target)
uint32 GetTotalPlayedTime() const
void SendDirectMessage(WorldPacket const *data) const
void ResurrectUsingRequestData()
void SetDungeonDifficulty(Difficulty dungeon_difficulty)
GameObject * GetGameObjectIfCanInteractWith(ObjectGuid const &guid) const
void BuildPlayerTalentsInfoData(WorldPackets::Talent::TalentInfoUpdate &talentInfo)
bool InBattleground() const
void SpawnCorpseBones(bool triggerSave=true)
Difficulty GetDifficulty(bool isRaid) const
void ResetInstances(uint8 method, bool isRaid)
Reset all solo instances and optionally send a message on success for each.
void SendTransferAborted(uint32 mapid, TransferAbortReason reason, uint8 arg=0) const
void SetRaidDifficulty(Difficulty raid_difficulty)
bool HasPendingBind() const
WorldSession * GetSession() const
OutdoorPvP * GetOutdoorPvP() const
Item * GetItemByPos(uint16 pos) const
ObjectGuid GetLootGUID() const
void SetSelection(ObjectGuid guid)
Used for serverside target changes, does not apply to players.
CinematicMgr * GetCinematicMgr() const
uint32 GetHonorPoints() const
void SendRespondInspectAchievements(Player *player) const
void UpdateVisibilityForPlayer()
void ClearResurrectRequestData()
Creature * GetNPCIfCanInteractWith(ObjectGuid const &guid, NPCFlags npcFlags) const
WorldObject * GetViewpoint() const
void RemovePet(Pet *pet, PetSaveMode mode, bool returnreagent=false)
bool TeleportToBGEntryPoint()
Corpse * GetCorpse() const
Battleground * GetBattleground() const
bool IsInAreaTriggerRadius(AreaTriggerEntry const *trigger) const
void SetMovie(uint32 movie)
void SetNeedsZoneUpdate(bool needsUpdate)
void SetPendingBind(uint32 instanceId, uint32 bindTimer)
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options=0)
uint32 GetCorpseReclaimDelay(bool pvp) const
void OnGossipSelect(WorldObject *source, uint32 gossipListId, uint32 menuId)
void AreaExploredOrEventHappens(uint32 questId)
QuestStatus GetQuestStatus(uint32 quest_id) const
InstancePlayerBind * BindToInstance(InstanceSave *save, bool permanent, BindExtensionState extendState=EXTEND_STATE_NORMAL, bool load=false)
uint32 GetLevelPlayedTime() const
void UpdatePvP(bool state, bool override=false)
Difficulty GetDungeonDifficulty() const
PlayerMenu * PlayerTalkClass
void ResurrectPlayer(float restore_percent, bool applySickness=false)
void setUInt32(uint8 index, uint32 value)
void setString(uint8 index, std::string const &value)
void ModDst(Position const &pos)
void SetSpeed(float speed)
void SetElevation(float elevation)
void ModSrc(Position const &pos)
SpellCastTargets m_targets
SpellInfo const *const m_spellInfo
void RemoveAurasByType(AuraType auraType, std::function< bool(AuraApplication const *)> const &check, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void SetRooted(bool apply)
void RemovePvpFlag(UnitPVPStateFlags flags)
void SetStandState(UnitStandStateType state)
void SetUnitFlag(UnitFlags flags)
void RemoveUnitFlag(UnitFlags flags)
Spell * GetCurrentSpell(CurrentSpellTypes spellType) const
bool IsValidAttackTarget(WorldObject const *target, SpellInfo const *bySpell=nullptr) const
std::string const & GetName() const
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
WorldPacket const * Write() override
WorldPacket const * Write() override
std::bitset< 19 > ItemSlots
WorldPacket const * Write() override
std::vector< InspectItemData > Items
Talent::TalentInfoUpdate TalentInfo
WorldPacket const * Write() override
TaggedPosition< Position::XYZ > Pos
void HandleGossipSelectOptionOpcode(WorldPacket &recvPacket)
void LogoutPlayer(bool save)
Log the player out
void HandleMovementOpcode(OpcodeClient opcode, MovementInfo &movementInfo)
AccountData * GetAccountData(AccountDataType type)
void HandleSetDungeonDifficultyOpcode(WorldPacket &recvData)
void HandleSetSelectionOpcode(WorldPacket &recvPacket)
char const * GetTrinityString(uint32 entry) const
void HandleNextCinematicCamera(WorldPackets::Misc::NextCinematicCamera &packet)
void HandleResetInstancesOpcode(WorldPacket &recvData)
void SendPacket(WorldPacket const *packet)
Send a packet to the client.
void SendNotification(const char *format,...) ATTR_PRINTF(2
void HandleLogoutCancelOpcode(WorldPackets::Character::LogoutCancel &logoutCancel)
void HandleWorldStateUITimerUpdate(WorldPacket &recvData)
void HandleRequestAccountData(WorldPacket &recvPacket)
AccountTypes GetSecurity() const
void HandleSetActionButtonOpcode(WorldPacket &recvPacket)
void HandleComplainOpcode(WorldPacket &recvData)
void HandleWhoIsOpcode(WorldPacket &recvData)
void HandleWhoOpcode(WorldPacket &recvPacket)
void HandleTogglePvP(WorldPackets::Misc::TogglePvP &togglePvP)
void void SendSetPhaseShift(uint32 phaseShift)
LocaleConstant GetSessionDbcLocale() const
void HandleRepopRequest(WorldPackets::Misc::RepopRequest &packet)
Player * GetPlayer() const
void SetLogoutStartTime(time_t requestTime)
Engage the logout process for the user.
void SendAreaTriggerMessage(char const *Text,...) ATTR_PRINTF(2
void HandleBugOpcode(WorldPacket &recvPacket)
void HandleWorldTeleportOpcode(WorldPackets::Misc::WorldTeleport &worldTeleport)
void HandleSetRaidDifficultyOpcode(WorldPacket &recvData)
void HandleCompleteMovie(WorldPackets::Misc::CompleteMovie &packet)
void HandleStandStateChangeOpcode(WorldPacket &recvPacket)
void HandleReadyForAccountDataTimes(WorldPacket &recvData)
void HandleLogoutRequestOpcode(WorldPackets::Character::LogoutRequest &logoutRequest)
void HandleUpdateMissileTrajectory(WorldPacket &recvPacket)
bool HasPermission(uint32 permissionId)
void HandleAreaTriggerOpcode(WorldPacket &recvPacket)
void HandleInspectOpcode(WorldPackets::Inspect::Inspect &inspect)
uint32 GetAccountId() const
void HandleUpdateAccountData(WorldPacket &recvPacket)
void HandleInstanceLockResponse(WorldPacket &recvPacket)
void HandleFarSightOpcode(WorldPacket &recvData)
void DoLootRelease(ObjectGuid lguid)
void HandlePlayedTime(WorldPackets::Character::PlayedTimeClient &packet)
void HandleSetActionBarToggles(WorldPacket &recvData)
void HandleSetTitleOpcode(WorldPacket &recvData)
void HandleQueryInspectAchievements(WorldPacket &recvData)
void HandleSetTaxiBenchmarkOpcode(WorldPacket &recvData)
void SendAccountDataTimes(uint32 mask)
void HandleZoneUpdateOpcode(WorldPacket &recvPacket)
void HandleCompleteCinematic(WorldPackets::Misc::CompleteCinematic &packet)
void HandleReclaimCorpse(WorldPackets::Misc::ReclaimCorpse &packet)
void HandlePlayerLogoutOpcode(WorldPackets::Character::PlayerLogout &playerLogout)
void HandleRealmSplitOpcode(WorldPacket &recvData)
void HandleResurrectResponse(WorldPackets::Misc::ResurrectResponse &packet)
void SetAccountData(AccountDataType type, time_t tm, std::string const &data)
void HandleInspectHonorStatsOpcode(WorldPacket &recvPacket)
#define GLOBAL_CACHE_MASK
#define NUM_ACCOUNT_DATA_TYPES
@ SMSG_AREA_TRIGGER_MESSAGE
@ SMSG_UPDATE_ACCOUNT_DATA
@ SMSG_CORPSE_NOT_IN_INSTANCE
@ SMSG_UPDATE_ACCOUNT_DATA_COMPLETE
@ MSG_INSPECT_HONOR_STATS
@ CONFIG_GM_LEVEL_IN_WHO_LIST
@ CONFIG_TALENTS_INSPECTING
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
TC_GAME_API Player * FindConnectedPlayerByName(std::string_view name)
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
@ RBAC_PERM_WHO_SEE_ALL_SEC_LEVELS
@ RBAC_PERM_OPCODE_WORLD_TELEPORT
@ RBAC_PERM_TWO_SIDE_WHO_LIST
@ RBAC_PERM_INSTANT_LOGOUT
std::string ToString() const
void SetOrientation(float orientation)
time_t EndTimer
‍Marks if player is in an FFAPvP area (such as Gurubashi Arena)