74 TC_LOG_DEBUG(
"network",
"HandleRepopRequestOpcode: got request after player {} {} was killed and before he was updated",
89 TC_LOG_DEBUG(
"network",
"WorldSession::HandleWhoOpcode: MinLevel: {}, MaxLevel: {}, Name: {} (VirtualRealmName: {}), Guild: {} (GuildVirtualRealmName: {}), RaceFilter: {}, ClassFilter: {}, Areas: {}, Words: {}.",
100 if (request.
Words.size() > 4)
110 std::vector<std::wstring> wWords;
111 wWords.resize(request.
Words.size());
112 for (
size_t i = 0; i < request.
Words.size(); ++i)
114 TC_LOG_DEBUG(
"network",
"WorldSession::HandleWhoOpcode: Word: {}", request.
Words[i].Word);
123 std::wstring wPlayerName;
124 std::wstring wGuildName;
156 if (
_player->
GetGUID() != target.GetGuid() && !target.IsVisible())
161 uint8 lvl = target.GetLevel();
162 if (lvl < request.MinLevel || lvl > request.
MaxLevel)
179 std::wstring
const& wTargetName = target.GetWidePlayerName();
180 if (!(wPlayerName.empty() || wTargetName.find(wPlayerName) != std::wstring::npos))
183 std::wstring
const& wTargetGuildName = target.GetWideGuildName();
185 if (!wGuildName.empty() && wTargetGuildName.find(wGuildName) == std::wstring::npos)
195 for (
size_t i = 0; i < wWords.size(); ++i)
197 if (!wWords[i].empty())
199 if (wTargetName.find(wWords[i]) != std::wstring::npos ||
200 wTargetGuildName.find(wWords[i]) != std::wstring::npos ||
217 if (!target.GetGuildGuid().IsEmpty())
219 whoEntry.
GuildGUID = target.GetGuildGuid();
221 whoEntry.
GuildName = target.GetGuildName();
224 whoEntry.
AreaID = target.GetZoneId();
225 whoEntry.
IsGM = target.IsGameMaster();
240 if (!
GetPlayer()->GetLootGUID().IsEmpty())
252 if (
GetPlayer()->IsInCombat() && !canLogoutInCombat)
261 logoutResponse.
Instant = instantLogout;
322 else if (!
GetPlayer()->IsWarModeLocalActive())
340 else if (!
GetPlayer()->IsWarModeLocalActive())
366 std::vector<uint32> graveyardIds;
367 auto range =
sObjectMgr->GraveyardStore.equal_range(zoneId);
369 for (
auto it = range.first; it != range.second && graveyardIds.size() < 16; ++it)
372 if (!it->second.Conditions.Meets(conditionSource))
375 graveyardIds.push_back(it->first);
378 if (graveyardIds.empty())
380 TC_LOG_DEBUG(
"network",
"No graveyards found for zone {} for {} (team {}) in CMSG_REQUEST_CEMETERY_LIST",
387 packet.
CemeteryID.reserve(graveyardIds.size());
389 for (
uint32 id : graveyardIds)
465 if (instance->IsEncounterInProgress())
467 if (!instance->GetCombatResurrectionCharges())
470 instance->UseCombatResurrection();
483 TC_LOG_DEBUG(
"network",
"HandleAreaTriggerOpcode: Player '{}' {} in flight, ignore Area Trigger ID:{}",
491 TC_LOG_DEBUG(
"network",
"HandleAreaTriggerOpcode: Player '{}' {} send unknown (by DBC) Area Trigger ID:{}",
498 TC_LOG_DEBUG(
"network",
"HandleAreaTriggerOpcode: Player '{}' {} too far, ignore Area Trigger ID: {}",
517 bool anyObjectiveChangedCompletionState =
false;
518 for (
uint32 questId : *quests)
540 anyObjectiveChangedCompletionState =
true;
552 if (anyObjectiveChangedCompletionState)
565 if (
sWorld->IsFFAPvPRealm())
590 bool teleported =
false;
605 corpseMap = corpseInstance ? corpseInstance->
Parent : 0;
617 TC_LOG_DEBUG(
"maps",
"Map::CanPlayerEnter - player '{}' is dead but does not have a corpse!", player->
GetName());
622 switch (denyReason.Reason)
628 TC_LOG_DEBUG(
"maps",
"MAP: Player '{}' attempted to enter instance map {} but the requested difficulty was not found", player->
GetName(), at->
target_mapId);
635 TC_LOG_DEBUG(
"maps",
"MAP: Player '{}' cannot enter instance map {} because their permanent bind is incompatible with their group's", player->
GetName(), at->
target_mapId);
638 TC_LOG_DEBUG(
"maps",
"MAP: Player '{}' cannot enter instance map {} because their permanent bind is incompatible with their group's", player->
GetName(), at->
target_mapId);
641 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);
686 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_UPDATE_ACCOUNT_DATA: type {}, time {}, decompressedSize {}",
692 if (packet.
Size == 0)
698 if (packet.
Size > 0xFFFF)
700 TC_LOG_ERROR(
"network",
"UAD: Account data packet too big, size {}", packet.
Size);
706 uLongf realSize = packet.
Size;
709 TC_LOG_ERROR(
"network",
"UAD: Failed to decompress account data");
721 TC_LOG_DEBUG(
"network",
"WORLD: Received CMSG_REQUEST_ACCOUNT_DATA: type {}", request.
DataType);
734 uLongf destSize = compressBound(data.
Size);
740 TC_LOG_ERROR(
"network",
"RAD: Failed to compress account data");
754 TC_LOG_DEBUG(
"network",
"CMSG_SET_ACTION_BUTTON Button: {} Action: {} Type: {}", packet.
Index, action,
uint32(type));
788 if (packet.
Mask != 0)
789 TC_LOG_ERROR(
"network",
"WorldSession::HandleSetActionBarToggles in not logged state with value: {}, ignored",
uint32(packet.
Mask));
807 TC_LOG_DEBUG(
"network",
"Received whois command from player {} for character {}",
839 Field* fields = result->Fetch();
844 std::string email = fields[1].
GetString();
848 std::string lastip = fields[2].
GetString();
853 response.
AccountName = packet.
CharName +
"'s " +
"account is " + acc +
", e-mail: " + email +
", last ip: " + lastip;
901 if (group->isLFGGroup())
913 if (!difficultyEntry)
915 TC_LOG_DEBUG(
"network",
"WorldSession::HandleSetDungeonDifficultyOpcode: {} sent an invalid instance mode {}!",
922 TC_LOG_DEBUG(
"network",
"WorldSession::HandleSetDungeonDifficultyOpcode: {} sent an non-dungeon instance mode {}!",
929 TC_LOG_DEBUG(
"network",
"WorldSession::HandleSetDungeonDifficultyOpcode: player {} sent unselectable instance mode {}!",
942 TC_LOG_DEBUG(
"network",
"WorldSession::HandleSetDungeonDifficultyOpcode: player (Name: {}, {}) tried to reset the instance while player is inside!",
971 if (!difficultyEntry)
973 TC_LOG_DEBUG(
"network",
"WorldSession::HandleSetDungeonDifficultyOpcode: {} sent an invalid instance mode {}!",
980 TC_LOG_DEBUG(
"network",
"WorldSession::HandleSetDungeonDifficultyOpcode: {} sent an non-dungeon instance mode {}!",
987 TC_LOG_DEBUG(
"network",
"WorldSession::HandleSetDungeonDifficultyOpcode: player {} sent unselectable instance mode {}!",
994 TC_LOG_DEBUG(
"network",
"WorldSession::HandleSetDungeonDifficultyOpcode: {} sent not matching legacy difficulty {}!",
1007 TC_LOG_DEBUG(
"network",
"WorldSession::HandleSetRaidDifficultyOpcode: player (Name: {}, {}) tried to reset the instance while player is inside!",
1023 if (setRaidDifficulty.
Legacy)
1031 if (setRaidDifficulty.
Legacy)
1065 TC_LOG_INFO(
"network",
"InstanceLockResponse: Player {} {} tried to bind himself/teleport to graveyard without a pending bind!",
1130 loadCUFProfiles.
CUFProfiles.push_back(cufProfile);
1177 splashScreen = *itr;
#define MAX_CUF_PROFILES
Maximum number of CompactUnitFrames profiles.
@ CONDITION_SOURCE_TYPE_AREATRIGGER_CLIENT_TRIGGERED
#define CORPSE_RECLAIM_RADIUS
@ CORPSE_RESURRECTABLE_PVP
DB2Storage< UISplashScreenEntry > sUISplashScreenStore("UISplashScreen.db2", &UiSplashScreenLoadInfo::Instance)
DB2Storage< DifficultyEntry > sDifficultyStore("Difficulty.db2", &DifficultyLoadInfo::Instance)
DB2Storage< AreaTriggerEntry > sAreaTriggerStore("AreaTrigger.db2", &AreaTriggerLoadInfo::Instance)
DB2Storage< PlayerConditionEntry > sPlayerConditionStore("PlayerCondition.db2", &PlayerConditionLoadInfo::Instance)
DB2Storage< AreaTableEntry > sAreaTableStore("AreaTable.db2", &AreaTableLoadInfo::Instance)
@ DIFFICULTY_FLAG_CAN_SELECT
std::shared_ptr< PreparedResultSet > PreparedQueryResult
DatabaseWorkerPool< LoginDatabaseConnection > LoginDatabase
Accessor to the realm/login database.
@ LANG_PLAYER_NOT_EXIST_OR_OFFLINE
@ LANG_DEBUG_AREATRIGGER_LEFT
@ LANG_ACCOUNT_FOR_PLAYER_NOT_FOUND
@ LANG_YOU_NOT_HAVE_PERMISSION
@ LANG_NEED_CHARACTER_NAME
@ LANG_DEBUG_AREATRIGGER_ENTERED
#define TC_LOG_DEBUG(filterType__,...)
#define TC_LOG_ERROR(filterType__,...)
#define TC_LOG_INFO(filterType__,...)
@ LOGIN_SEL_ACCOUNT_WHOIS
@ TRANSFER_ABORT_TOO_MANY_INSTANCES
@ TRANSFER_ABORT_DIFFICULTY
@ TRANSFER_ABORT_MAP_NOT_ALLOWED
@ TRANSFER_ABORT_MAX_PLAYERS
@ TRANSFER_ABORT_ZONE_IN_COMBAT
@ TRANSFER_ABORT_ALREADY_COMPLETED_ENCOUNTER
@ TRANSFER_ABORT_NOT_FOUND
@ TRANSFER_ABORT_LOCKED_TO_DIFFERENT_INSTANCE
@ TRANSFER_ABORT_NEED_GROUP
bool normalizePlayerName(std::string &name)
@ TELE_TO_NOT_LEAVE_TRANSPORT
@ PLAYER_FLAGS_TAXI_BENCHMARK
#define ACTION_BUTTON_TYPE(X)
#define ACTION_BUTTON_ACTION(X)
@ QUEST_OBJECTIVE_AREATRIGGER
@ QUEST_STATUS_INCOMPLETE
@ QUEST_FLAGS_COMPLETION_AREA_TRIGGER
@ SPELL_AURA_PREVENT_RESURRECTION
@ UNIT_BYTE2_FLAG_FFA_PVP
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 PSendSysMessage(const char *fmt, Args &&... args)
void NextCinematicCamera()
static bool IsPlayerMeetingCondition(Player const *player, PlayerConditionEntry const *condition)
time_t const & GetGhostTime() const
CorpseType GetType() const
Class used to access individual fields of database query result.
std::string GetString() const
Seconds GetTotalTime() const
Seconds GetTimeLeft() const
void ResetInstances(InstanceResetMethod method, Player *notifyPlayer)
bool IsLeader(ObjectGuid guid) const
void SetDungeonDifficultyID(Difficulty difficulty)
void SetRaidDifficultyID(Difficulty difficulty)
void SetLegacyRaidDifficultyID(Difficulty difficulty)
CountdownInfo const * GetCountdownInfo(CountdownTimerType timerType) const
static TransferAbortParams PlayerCannotEnter(uint32 mapid, Player *player)
bool Instanceable() const
static ObjectGuid const Empty
std::string ToString() const
static ObjectGuid GetGUID(Object const *o)
void RemoveActionButton(uint8 button)
void SetPlayerFlag(PlayerFlags flags)
bool CanCompleteQuest(uint32 quest_id, uint32 ignoredQuestObjectiveId=0)
void RemovePlayerFlag(PlayerFlags flags)
void SendRaidGroupOnlyMessage(RaidGroupReason reason, int32 delay) const
void SetSeer(WorldObject *target)
uint32 GetTotalPlayedTime() const
void SendDirectMessage(WorldPacket const *data) const
ActionButton * AddActionButton(uint8 button, uint64 action, uint8 type)
void ResurrectUsingRequestData()
uint16 FindQuestSlot(uint32 quest_id) const
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, TeleportToOptions options=TELE_TO_NONE, Optional< uint32 > instanceId={})
bool InBattleground() const
void SendDungeonDifficulty(int32 forcedDifficulty=-1) const
void SpawnCorpseBones(bool triggerSave=true)
void SetSelection(ObjectGuid const &guid)
Used for serverside target changes, does not apply to players.
void SetRaidDifficultyID(Difficulty raid_difficulty)
GuidUnorderedSet m_clientGUIDs
void SetAdvancedCombatLogging(bool enabled)
ObjectGuid GetStableMaster() const
void SetStableMaster(ObjectGuid stableMaster)
bool HasPendingBind() const
void UpdateVisibleObjectInteractions(bool allUnits, bool onlySpellClicks, bool gameObjectQuestGiverStatus, bool questObjectiveGameObjects)
void CompleteQuest(uint32 quest_id)
WorldSafeLocsEntry const * GetInstanceEntrance(uint32 targetMapId)
WorldSession * GetSession() const
OutdoorPvP * GetOutdoorPvP() const
bool IsQuestObjectiveCompletable(uint16 slot, Quest const *quest, QuestObjective const &objective) const
RestMgr & GetRestMgr() const
Difficulty GetDungeonDifficultyID() const
CinematicMgr * GetCinematicMgr() const
void SetLegacyRaidDifficultyID(Difficulty raid_difficulty)
void UpdateVisibilityForPlayer()
void ClearResurrectRequestData()
WorldObject * GetViewpoint() const
void RemovePet(Pet *pet, PetSaveMode mode, bool returnreagent=false)
WorldLocation GetCorpseLocation() const
bool TeleportToBGEntryPoint()
Corpse * GetCorpse() const
void ConfirmPendingBind()
Battleground * GetBattleground() const
ObjectGuid::LowType GetGuildId() const
bool IsInAreaTriggerRadius(AreaTriggerEntry const *trigger) const
CUFProfile * GetCUFProfile(uint8 id) const
ā€¨Replaces a CUF profile at position 0-4
void SetMovie(uint32 movie)
void SetPendingBind(uint32 instanceId, uint32 bindTimer)
void SaveCUFProfile(uint8 id, std::nullptr_t)
uint32 GetCorpseReclaimDelay(bool pvp) const
void AreaExploredOrEventHappens(uint32 questId)
void SetDungeonDifficultyID(Difficulty dungeon_difficulty)
bool IsQuestObjectiveComplete(uint16 slot, Quest const *quest, QuestObjective const &objective) const
Difficulty GetRaidDifficultyID() const
UF::UpdateField< UF::ActivePlayerData, 0, TYPEID_ACTIVE_PLAYER > m_activePlayerData
void SendTransferAborted(uint32 mapid, TransferAbortReason reason, uint8 arg=0, int32 mapDifficultyXConditionID=0) const
void SetWarModeDesired(bool enabled)
void SetChosenTitle(int32 title)
void SendRaidDifficulty(bool legacy, int32 forcedDifficulty=-1) const
void SendLootReleaseAll() const
Group * GetGroup(Optional< uint8 > partyIndex)
bool HasPlayerFlag(PlayerFlags flags) const
void ResetInstances(InstanceResetMethod method)
Reset all solo instances and optionally send a message on success for each.
void SetQuestObjectiveData(QuestObjective const &objective, int32 data)
void SendMessageToSet(WorldPacket const *data, bool self) const override
uint32 GetLevelPlayedTime() const
void SetMultiActionBars(uint8 mask)
void UpdatePvP(bool state, bool override=false)
void SendQuestUpdateAddCreditSimple(QuestObjective const &obj) const
Difficulty GetLegacyRaidDifficultyID() const
std::unique_ptr< PlayerMenu > PlayerTalkClass
void ResurrectPlayer(float restore_percent, bool applySickness=false)
void setUInt32(const uint8 index, const uint32 value)
QuestObjectives Objectives
bool HasFlag(QuestFlags flag) const
void SetRestFlag(RestFlag restFlag, uint32 triggerId=0)
void RemoveRestFlag(RestFlag restFlag)
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
void SetPvpFlag(UnitPVPStateFlags flags)
void SetRooted(bool apply, bool packetOnly=false)
void RemovePvpFlag(UnitPVPStateFlags flags)
void SetUnitFlag(UnitFlags flags)
void RemoveUnitFlag(UnitFlags flags)
constexpr uint32 GetMapId() 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
ByteBuffer CompressedData
uint32 Size
decompressed size
WorldPacket const * Write() override
ByteBuffer CompressedData
uint32 Size
decompressed size
ObjectGuid ConversationGUID
WorldPacket const * Write() override
std::vector< CUFProfile const * > CUFProfiles
Array< int32, 2 > SpellVisualKitIDs
CountdownTimerType TimerType
std::vector< uint32 > CemeteryID
WorldPacket const * Write() override
Array< std::unique_ptr< CUFProfile >, MAX_CUF_PROFILES > CUFProfiles
WorldPacket const * Write() override
ObjectGuid Selection
Target.
WorldPacket const * Write() override
std::vector< int32 > SpellVisualKitIDs
WorldPacket const * Write() override
UnitStandStateType StandState
Duration< Seconds > TotalTime
WorldPacket const * Write() override
Duration< Seconds > TimeLeft
Underlying AsUnderlyingType() const
WorldPacket const * Write() override
WorldPacket const * Write() override
void HandleViolenceLevel(WorldPackets::Misc::ViolenceLevel &violenceLevel)
void HandlePlayedTime(WorldPackets::Character::RequestPlayedTime &packet)
void LogoutPlayer(bool save)
Log the player out
void HandleNextCinematicCamera(WorldPackets::Misc::NextCinematicCamera &packet)
void HandleCloseInteraction(WorldPackets::Misc::CloseInteraction &closeInteraction)
void HandleResetInstancesOpcode(WorldPackets::Instance::ResetInstances &packet)
void HandleQueryCountdownTimer(WorldPackets::Misc::QueryCountdownTimer &queryCountdownTimer)
void HandleSaveCUFProfiles(WorldPackets::Misc::SaveCUFProfiles &packet)
void HandleSetDungeonDifficultyOpcode(WorldPackets::Misc::SetDungeonDifficulty &setDungeonDifficulty)
void SendNotification(char const *format,...) ATTR_PRINTF(2
void HandleLogoutCancelOpcode(WorldPackets::Character::LogoutCancel &logoutCancel)
AccountTypes GetSecurity() const
void HandleRequestCemeteryList(WorldPackets::Misc::RequestCemeteryList &packet)
void HandleConversationLineStarted(WorldPackets::Misc::ConversationLineStarted &conversationLineStarted)
void HandleInstanceLockResponse(WorldPackets::Instance::InstanceLockResponse &packet)
void SendLoadCUFProfiles()
void HandleSetSelectionOpcode(WorldPackets::Misc::SetSelection &packet)
LocaleConstant GetSessionDbcLocale() const
void HandleSetActionButtonOpcode(WorldPackets::Spells::SetActionButton &packet)
void HandleRepopRequest(WorldPackets::Misc::RepopRequest &packet)
Player * GetPlayer() const
std::unique_ptr< CollectionMgr > _collectionMgr
void HandleUpdateAccountData(WorldPackets::ClientConfig::UserClientUpdateAccountData &packet)
void HandleSetAdvancedCombatLogging(WorldPackets::ClientConfig::SetAdvancedCombatLogging &setAdvancedCombatLogging)
void SetLogoutStartTime(time_t requestTime)
Engage the logout process for the user.
void HandleServerTimeOffsetRequest(WorldPackets::Misc::ServerTimeOffsetRequest &)
void HandleSetTaxiBenchmark(WorldPackets::Misc::SetTaxiBenchmarkMode &packet)
AccountData const * GetAccountData(AccountDataType type) const
void HandleWhoIsOpcode(WorldPackets::Who::WhoIsRequest &packet)
void HandleMountSpecialAnimOpcode(WorldPackets::Misc::MountSpecial &mountSpecial)
void HandleSetWarMode(WorldPackets::Misc::SetWarMode &packet)
void HandleRequestAccountData(WorldPackets::ClientConfig::RequestAccountData &request)
void HandleTogglePvP(WorldPackets::Misc::TogglePvP &packet)
void HandleCompleteMovie(WorldPackets::Misc::CompleteMovie &packet)
void HandleObjectUpdateFailedOpcode(WorldPackets::Misc::ObjectUpdateFailed &objectUpdateFailed)
void HandleLogoutRequestOpcode(WorldPackets::Character::LogoutRequest &logoutRequest)
void HandleSetTitleOpcode(WorldPackets::Character::SetTitle &packet)
bool HasPermission(uint32 permissionId)
void SendPacket(WorldPacket const *packet, bool forced=false)
Send a packet to the client.
uint32 GetAccountId() const
void HandleWhoOpcode(WorldPackets::Who::WhoRequestPkt &whoRequest)
void HandleSetRaidDifficultyOpcode(WorldPackets::Misc::SetRaidDifficulty &setRaidDifficulty)
void HandleFarSightOpcode(WorldPackets::Misc::FarSight &packet)
void HandleSetPvP(WorldPackets::Misc::SetPvP &packet)
void HandleMountSetFavorite(WorldPackets::Misc::MountSetFavorite &mountSetFavorite)
void HandleObjectUpdateRescuedOpcode(WorldPackets::Misc::ObjectUpdateRescued &objectUpdateRescued)
void HandlePortGraveyard(WorldPackets::Misc::PortGraveyard &packet)
void HandleSetActionBarToggles(WorldPackets::Character::SetActionBarToggles &packet)
void HandleRequestLatestSplashScreen(WorldPackets::Misc::RequestLatestSplashScreen &requestLatestSplashScreen)
void HandleStandStateChangeOpcode(WorldPackets::Misc::StandStateChange &packet)
std::string const & GetPlayerName() const
void HandleAreaTriggerOpcode(WorldPackets::AreaTrigger::AreaTrigger &packet)
void SetAccountData(AccountDataType type, time_t time, std::string const &data)
void HandleCompleteCinematic(WorldPackets::Misc::CompleteCinematic &packet)
void HandleReclaimCorpse(WorldPackets::Misc::ReclaimCorpse &packet)
void HandleResurrectResponse(WorldPackets::Misc::ResurrectResponse &packet)
void HandleGuildSetFocusedAchievement(WorldPackets::Achievement::GuildSetFocusedAchievement &setFocusedAchievement)
#define NUM_ACCOUNT_DATA_TYPES
uint32 GetVirtualRealmAddress()
@ CONFIG_GM_LEVEL_IN_WHO_LIST
TC_GAME_API bool GetName(uint32 accountId, std::string &name)
SystemTimePoint GetSystemTime()
Current chrono system_clock time point.
TC_GAME_API Player * FindConnectedPlayerByName(std::string_view name)
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
TC_GAME_API Conversation * GetConversation(WorldObject const &u, ObjectGuid const &guid)
std::string ToString(Type &&val, Params &&... params)
@ RBAC_PERM_WHO_SEE_ALL_SEC_LEVELS
@ RBAC_PERM_TWO_SIDE_WHO_LIST
@ RBAC_PERM_INSTANT_LOGOUT
Represents a CompactUnitFrame profile.
time_t EndTimer
ā€¨Marks if player is in an FFAPvP area (such as Gurubashi Arena)
constexpr bool HasRace(uint8 raceId) const
bool Initialize(ObjectGuid const &guid, Player const *player=nullptr)
uint32 GuildVirtualRealmAddress
Query::PlayerGuidLookupData PlayerData
std::vector< WhoWord > Words
Trinity::RaceMask< int64 > RaceFilter
std::string VirtualRealmName
std::string GuildVirtualRealmName
std::vector< WhoEntry > Entries