140 namespace Transmogrification
319 if (left->
op != right->
op)
320 return left->
op < right->
op;
404#define ACTION_BUTTON_ACTION(X) (uint64(X) & 0x00FFFFFFFFFFFFFF)
405#define ACTION_BUTTON_TYPE(X) ((uint64(X) & 0xFF00000000000000) >> 56)
406#define MAX_ACTION_BUTTON_ACTION_VALUE UI64LIT(0xFFFFFFFFFFFFFF)
430#define MAX_ACTION_BUTTONS 180
475#define MAX_RECHARGING_RUNES 3
704static_assert(UF::size<decltype(UF::ActivePlayerData::InvSlots)>() ==
PLAYER_SLOT_END);
823 bool isContainedIn(std::vector<ItemPosCount>
const& vec)
const;
939#define MAX_PLAYED_TIME_INDEX 2
1026#define MAX_PLAYER_SUMMON_DELAY (2*MINUTE)
1229 void CleanupsBeforeDelete(
bool finalCleanup =
true)
override;
1231 void AddToWorld()
override;
1232 void RemoveFromWorld()
override;
1234 void SetObjectScale(
float scale)
override;
1239 bool TeleportToBGEntryPoint();
1241 bool HasSummonPending()
const;
1242 void SendSummonRequestFrom(
Unit* summoner);
1243 void SummonIfPossible(
bool agree);
1249 void Heartbeat()
override;
1251 bool IsImmunedToSpellEffect(
SpellInfo const* spellInfo,
SpellEffectInfo const& spellEffectInfo,
WorldObject const* caster,
bool requireImmunityPurgesEffectAttribute =
false)
const override;
1255 void SendInitialPacketsBeforeAddToMap();
1256 void SendInitialPacketsAfterAddToMap();
1257 void SendSupercededSpell(
uint32 oldSpell,
uint32 newSpell)
const;
1260 bool CanInteractWithQuestGiver(
Object* questGiver)
const;
1269 uint32 GetChatFlags()
const;
1275 void RemoveSocial();
1283 void FinishTaxiFlight();
1284 void CleanupAfterTaxiFlight();
1285 void ContinueTaxiFlight();
1295 bool CanBeGameMaster()
const;
1296 void SetGameMaster(
bool on);
1302 void SetGMVisible(
bool on);
1316 void GiveXP(
uint32 xp,
Unit* victim,
float group_rate=1.0f);
1317 void GiveLevel(
uint8 level);
1318 bool IsMaxLevel()
const;
1320 void InitStatsForLevel(
bool reapplyMods =
false);
1345 void SetStableMaster(
ObjectGuid stableMaster);
1347 Pet* GetPet()
const;
1349 void RemovePet(
Pet* pet,
PetSaveMode mode,
bool returnreagent =
false);
1350 void DeletePetFromDB(
uint32 petNumber);
1355 void AddPetAura(
PetAura const* petSpell);
1356 void RemovePetAura(
PetAura const* petSpell);
1358 Creature* GetSummonedBattlePet()
const;
1365 void Yell(std::string_view text,
Language language,
WorldObject const* =
nullptr)
override;
1368 void TextEmote(std::string_view text,
WorldObject const* =
nullptr,
bool =
false)
override;
1369 void TextEmote(
uint32 textId,
WorldObject const* target =
nullptr,
bool isBossEmote =
false)
override;
1371 void Whisper(std::string_view text,
Language language,
Player* receiver,
bool =
false)
override;
1372 void Whisper(
uint32 textId,
Player* target,
bool isBossWhisper =
false)
override;
1373 void WhisperAddon(std::string
const& text, std::string
const& prefix,
bool isLogged,
Player* receiver);
1375 bool CanUnderstandLanguage(
Language language)
const;
1387 template <
typename T>
1419 if (
Bag* pBag = GetBagByPos(i))
1429 if (
Bag* pBag = GetBagByPos(i))
1439 if (
Bag* bag = GetBagByPos(i))
1450 void UpdateAverageItemLevelTotal();
1451 void UpdateAverageItemLevelEquipped();
1453 uint8 FindEquipSlot(
Item const* item,
uint8 slot,
bool swap)
const;
1455 uint32 GetItemCount(
uint32 item,
bool inBankAlso =
false,
Item* skipItem =
nullptr)
const;
1456 uint32 GetItemCountWithLimitCategory(
uint32 limitCategory,
Item* skipItem =
nullptr)
const;
1459 std::vector<Item*> GetItemListByEntry(
uint32 entry,
bool inBankAlso =
false)
const;
1463 Bag* GetBagByPos(
uint8 slot)
const;
1464 std::vector<Item*> GetCraftingReagentItemsToDeposit();
1466 Item* GetShield(
bool useable =
false)
const;
1471 static bool IsInventoryPos(
uint8 bag,
uint8 slot);
1473 static bool IsEquipmentPos(
uint8 bag,
uint8 slot);
1474 static bool IsBagPos(
uint16 pos);
1476 static bool IsBankPos(
uint8 bag,
uint8 slot);
1478 static bool IsChildEquipmentPos(
uint8 bag,
uint8 slot);
1480 static bool IsAccountBankPos(
uint8 bag,
uint8 slot);
1482 bool IsValidPos(
uint8 bag,
uint8 slot,
bool explicit_pos)
const;
1484 void SetInventorySlotCount(
uint8 slots);
1485 void UpdateInventorySlotCount();
1495 SetBankTabSettings(setter, name, icon, description, depositFlags);
1500 SetBankTabSettings(setter, name, icon, description, depositFlags);
1519 bool HasItemCount(
uint32 item,
uint32 count = 1,
bool inBankAlso =
false)
const;
1520 bool HasItemFitToSpellRequirements(
SpellInfo const* spellInfo,
Item const* ignoreItem =
nullptr)
const;
1521 bool CanNoReagentCast(
SpellInfo const* spellInfo)
const;
1524 for (
uint8 i = 0; i < 4; ++i)
1555 void AutoUnequipOffhandIfNeed(
bool force =
false);
1556 void EquipChildItem(
uint8 parentBag,
uint8 parentSlot,
Item* parentItem);
1557 void AutoUnequipChildItem(
Item* parentItem);
1560 void AutoStoreLoot(
uint32 loot_id,
LootStore const& store,
ItemContext context =
ItemContext::NONE,
bool broadcast =
false,
bool pushed =
false,
bool createdByPlayer =
false) {
AutoStoreLoot(
NULL_BAG,
NULL_SLOT, loot_id, store, context, broadcast, pushed, createdByPlayer); }
1570 void SendCurrencies()
const;
1572 void SendPvpRewards()
const;
1582 void ResetCurrencyWeekCap();
1587 uint32 GetCurrencyIncreasedCapQuantity(
uint32 id)
const;
1588 uint32 GetCurrencyMaxQuantity(
CurrencyTypesEntry const* currency,
bool onLoad =
false,
bool onUpdateVersion =
false)
const;
1596 void ApplyEquipCooldown(
Item* pItem);
1597 void QuickEquipItem(
uint16 pos,
Item* pItem);
1598 void VisualizeItem(
uint8 slot,
Item* pItem);
1599 void SetVisibleItemSlot(
uint8 slot,
Item const* item);
1601 void RemoveItem(
uint8 bag,
uint8 slot,
bool update);
1602 void MoveItemFromInventory(
uint8 bag,
uint8 slot,
bool update);
1604 void MoveItemToInventory(
ItemPosCountVec const& dest,
Item* pItem,
bool update,
bool in_characterInventoryDB =
false);
1606 void RemoveItemDependentAurasAndCasts(
Item* pItem);
1607 void DestroyItem(
uint8 bag,
uint8 slot,
bool update);
1608 uint32 DestroyItemCount(
uint32 item,
uint32 count,
bool update,
bool unequip_check =
false);
1609 void DestroyItemCount(
Item* item,
uint32& count,
bool update);
1610 void DestroyConjuredItems(
bool update);
1611 void DestroyZoneLimitedItem(
bool update,
uint32 new_zone);
1614 void AddItemToBuyBackSlot(
Item* pItem);
1618 void RemoveItemFromBuyBackSlot(
uint32 slot,
bool del);
1626 bool IsUseEquipedWeapon(
bool mainhand)
const;
1627 bool IsTwoHandUsed()
const;
1628 bool IsUsingTwoHandedWeaponInOneHand()
const;
1629 void SendNewItem(
Item* item,
uint32 quantity,
bool pushed,
bool created,
bool broadcast =
false,
uint32 dungeonEncounterId = 0);
1636 float GetReputationPriceDiscount(
Creature const* creature)
const;
1639 Player* GetTrader()
const;
1645 void UpdateEnchantTime(
uint32 time);
1646 void UpdateSoulboundTradeItems();
1647 void AddTradeableItem(
Item* item);
1648 void RemoveTradeableItem(
Item* item);
1649 void UpdateItemDuration(
uint32 time,
bool realtimeonly =
false);
1650 void AddEnchantmentDurations(
Item* item);
1651 void RemoveEnchantmentDurations(
Item* item);
1652 void RemoveEnchantmentDurationsReferences(
Item* item);
1655 void ApplyEnchantment(
Item* item,
EnchantmentSlot slot,
bool apply,
bool apply_dur =
true,
bool ignore_condition =
false);
1656 void ApplyEnchantment(
Item* item,
bool apply);
1658 void SendEnchantmentDurations();
1659 void AddItemDurations(
Item* item);
1660 void RemoveItemDurations(
Item* item);
1661 void SendItemDurations();
1662 void SendItemPassives();
1671 void PrepareGossipMenu(
WorldObject* source,
uint32 menuId,
bool showQuests =
false);
1683 int32 GetQuestMinLevel(
Quest const* quest)
const;
1684 int32 GetQuestMinLevel(
uint32 contentTuningId)
const;
1685 int32 GetQuestLevel(
Quest const* quest)
const;
1686 int32 GetQuestLevel(
uint32 contentTuningId)
const;
1689 bool IsActiveQuest(
uint32 quest_id)
const;
1690 Quest const* GetNextQuest(
Object const* questGiver,
Quest const* quest)
const;
1691 bool CanSeeStartQuest(
Quest const* quest)
const;
1692 bool CanTakeQuest(
Quest const* quest,
bool msg)
const;
1693 bool CanAddQuest(
Quest const* quest,
bool msg)
const;
1694 bool CanCompleteQuest(
uint32 quest_id,
uint32 ignoredQuestObjectiveId = 0);
1695 bool CanCompleteRepeatableQuest(
Quest const* quest);
1696 bool CanRewardQuest(
Quest const* quest,
bool msg)
const;
1698 void AddQuestAndCheckCompletion(
Quest const* quest,
Object* questGiver);
1699 void AddQuest(
Quest const* quest,
Object* questGiver);
1700 void AbandonQuest(
uint32 quest_id);
1702 void IncompleteQuest(
uint32 quest_id);
1703 uint32 GetQuestMoneyReward(
Quest const* quest)
const;
1708 void SetRewardedQuest(
uint32 quest_id);
1709 void FailQuest(
uint32 quest_id);
1711 bool SatisfyQuestSkill(
Quest const* qInfo,
bool msg)
const;
1712 bool SatisfyQuestLevel(
Quest const* qInfo,
bool msg)
const;
1713 bool SatisfyQuestMinLevel(
Quest const* qInfo,
bool msg)
const;
1714 bool SatisfyQuestMaxLevel(
Quest const* qInfo,
bool msg)
const;
1715 bool SatisfyQuestLog(
bool msg)
const;
1716 bool SatisfyQuestDependentQuests(
Quest const* qInfo,
bool msg)
const;
1717 bool SatisfyQuestPreviousQuest(
Quest const* qInfo,
bool msg)
const;
1718 bool SatisfyQuestDependentPreviousQuests(
Quest const* qInfo,
bool msg)
const;
1719 bool SatisfyQuestBreadcrumbQuest(
Quest const* qInfo,
bool msg)
const;
1720 bool SatisfyQuestDependentBreadcrumbQuests(
Quest const* qInfo,
bool msg)
const;
1721 bool SatisfyQuestClass(
Quest const* qInfo,
bool msg)
const;
1722 bool SatisfyQuestRace(
Quest const* qInfo,
bool msg)
const;
1723 bool SatisfyQuestMinReputation(
Quest const* qInfo,
bool msg)
const;
1724 bool SatisfyQuestMaxReputation(
Quest const* qInfo,
bool msg)
const;
1725 bool SatisfyQuestReputation(
Quest const* qInfo,
bool msg)
const;
1726 bool SatisfyQuestStatus(
Quest const* qInfo,
bool msg)
const;
1727 bool SatisfyQuestConditions(
Quest const* qInfo,
bool msg)
const;
1728 bool SatisfyQuestTimed(
Quest const* qInfo,
bool msg)
const;
1729 bool SatisfyQuestExclusiveGroup(
Quest const* qInfo,
bool msg)
const;
1730 bool SatisfyQuestDay(
Quest const* qInfo,
bool msg)
const;
1731 bool SatisfyQuestWeek(
Quest const* qInfo,
bool msg)
const;
1732 bool SatisfyQuestMonth(
Quest const* qInfo,
bool msg)
const;
1733 bool SatisfyQuestSeasonal(
Quest const* qInfo,
bool msg)
const;
1734 bool SatisfyQuestExpansion(
Quest const* qInfo,
bool msg)
const;
1735 bool GiveQuestSourceItem(
Quest const* quest);
1736 bool TakeQuestSourceItem(
uint32 questId,
bool msg);
1737 bool GetQuestRewardStatus(
uint32 quest_id)
const;
1740 void RemoveActiveQuest(
uint32 questId,
bool update =
true);
1741 void RemoveRewardedQuest(
uint32 questId,
bool update =
true);
1742 void SendQuestUpdate(
uint32 questId,
bool updateInteractions =
true,
bool updateGameObjectQuestGiverStatus =
false);
1744 void SkipQuests(std::span<uint32 const> questIds);
1745 void DespawnPersonalSummonsForQuest(
uint32 questId);
1747 void SetDailyQuestStatus(
uint32 quest_id);
1748 bool IsDailyQuestDone(
uint32 quest_id)
const;
1749 void SetWeeklyQuestStatus(
uint32 quest_id);
1750 void SetMonthlyQuestStatus(
uint32 quest_id);
1751 void SetSeasonalQuestStatus(
uint32 quest_id);
1753 void ResetWeeklyQuestStatus();
1754 void ResetMonthlyQuestStatus();
1755 void ResetSeasonalQuestStatus(
uint16 event_id, time_t eventStartTime);
1762 bool GetQuestSlotObjectiveFlag(
uint16 slot,
int8 objectiveIndex)
const;
1769 void SetQuestSlotEndTime(
uint16 slot, time_t endTime);
1770 void SetQuestSlotObjectiveFlag(
uint16 slot,
int8 objectiveIndex);
1771 void RemoveQuestSlotObjectiveFlag(
uint16 slot,
int8 objectiveIndex);
1772 bool IsQuestCompletedBitSet(
uint32 questId)
const;
1773 void SetQuestCompletedBit(
uint32 questId,
bool completed);
1776 void AreaExploredOrEventHappens(
uint32 questId);
1778 void ItemAddedQuestCheck(
uint32 entry,
uint32 count,
Optional<bool> boundItemFlagRequirement = {},
bool* hadBoundItemObjective =
nullptr);
1779 void ItemRemovedQuestCheck(
uint32 entry,
uint32 count);
1780 void KilledMonster(
Creature const* creature);
1782 void KilledPlayerCredit(
ObjectGuid victimGuid);
1785 void KillCreditCriteriaTreeObjective(
QuestObjective const& questObjective);
1786 void MoneyChanged(
uint64 value);
1788 void CurrencyChanged(
uint32 currencyId,
int32 change);
1790 std::vector<QuestObjective const*>* updatedObjectives =
nullptr, std::function<
bool(
QuestObjective const*)>
const* objectiveFilter =
nullptr);
1791 bool HasQuestForItem(
uint32 itemId)
const;
1793 bool HasQuestForGO(
int32 goId)
const;
1794 bool HasQuestForCurrency(
uint32 currencyId)
const;
1795 void UpdateVisibleObjectInteractions(
bool allUnits,
bool onlySpellClicks,
bool gameObjectQuestGiverStatus,
bool questObjectiveGameObjects);
1796 bool CanShareQuest(
uint32 questId)
const;
1801 bool IsQuestObjectiveCompletable(
uint32 questId,
uint32 objectiveId)
const;
1803 bool IsQuestObjectiveComplete(
uint32 questId,
uint32 objectiveId)
const;
1804 bool IsQuestObjectiveProgressBarComplete(
uint16 slot,
Quest const* quest)
const;
1805 void SendQuestComplete(
uint32 questId)
const;
1806 void SendQuestReward(
Quest const* quest,
Creature const* questGiver,
uint32 xp,
bool hideChatMessage)
const;
1808 void SendQuestTimerFailed(
uint32 questId)
const;
1809 void SendCanTakeQuestResponse(
QuestFailedReason reason,
bool sendErrorMessage =
true, std::string reasonText =
"")
const;
1810 void SendQuestConfirmAccept(
Quest const* quest,
Player* receiver)
const;
1813 void SendQuestUpdateAddCreditSimple(
QuestObjective const& obj)
const;
1815 void SendQuestUpdateAddPlayer(
Quest const* quest,
uint16 newCount)
const;
1816 void SendQuestGiverStatusMultiple();
1827 void AddTimedQuest(
uint32 questId);
1828 void RemoveTimedQuest(
uint32 questId);
1837 if (_CUFProfiles[i])
1842 bool HasPvPForcingQuest()
const;
1844 void SendForceSpawnTrackingUpdate(
uint32 questId)
const;
1846 SpawnTrackingState GetSpawnTrackingStateByObjectives(
uint32 spawnTrackingId, std::vector<uint32>
const& questObjectives)
const;
1854 bool IsLoading()
const override;
1857 static bool LoadPositionFromDB(
uint32& mapid,
float& x,
float& y,
float& z,
float& o,
bool& in_flight,
ObjectGuid guid);
1867 void SaveToDB(
bool create =
false);
1875 static void DeleteFromDB(
ObjectGuid playerguid,
uint32 accountId,
bool updateRealmChars =
true,
bool deleteFinally =
false);
1876 static void DeleteOldCharacters();
1877 static void DeleteOldCharacters(
uint32 keepDays);
1883 void RegenerateAll();
1884 void Regenerate(
Powers power);
1885 void InterruptPowerRegen(
Powers power);
1886 void RegenerateHealth();
1891 bool ModifyMoney(
int64 amount,
bool sendError =
true);
1894 void SetMoney(
uint64 value);
1900 bool IsQuestRewarded(
uint32 quest_id)
const;
1902 Unit* GetSelectedUnit()
const;
1903 Player* GetSelectedPlayer()
const;
1909 void SendNewMail()
const;
1910 void UpdateNextMailTimeAndUnreads();
1911 void AddNewMailDeliverTime(time_t deliver_time);
1913 void RemoveMail(
uint64 id);
1915 void AddMail(
Mail* mail);
1930 typedef std::unordered_map<ObjectGuid::LowType, Item*>
ItemMap;
1935 void AddMItem(
Item* it);
1938 void SendOnCancelExpectedVehicleRideAura()
const;
1939 void PetSpellInitialize();
1940 void CharmSpellInitialize();
1941 void PossessSpellInitialize();
1942 void VehicleSpellInitialize();
1943 void SendRemoveControlBar()
const;
1944 bool HasSpell(
uint32 spell)
const override;
1945 bool HasActiveSpell(
uint32 spell)
const;
1947 bool IsSpellFitByClassAndRace(
uint32 spell_id)
const;
1948 bool HandlePassiveSpellLearn(
SpellInfo const* spellInfo);
1950 void SendProficiency(
ItemClass itemClass,
uint32 itemSubclassMask)
const;
1951 void SendKnownSpells();
1952 void SendUnlearnSpells();
1953 bool AddSpell(
uint32 spellId,
bool active,
bool learning,
bool dependent,
bool disabled,
bool loading =
false,
int32 fromSkill = 0,
bool favorite =
false,
Optional<PlayerSpellTrait> trait = {});
1955 void RemoveSpell(
uint32 spell_id,
bool disabled =
false,
bool learn_low_rank =
true,
bool suppressMessaging =
false);
1956 void ResetSpells(
bool myClassOnly =
false);
1957 void LearnCustomSpells();
1958 void LearnDefaultSkills();
1960 void LearnQuestRewardedSpells();
1961 void LearnQuestRewardedSpells(
Quest const* quest);
1962 void AddTemporarySpell(
uint32 spellId);
1963 void RemoveTemporarySpell(
uint32 spellId);
1965 void AddOverrideSpell(
uint32 overridenSpellId,
uint32 newSpellId);
1966 void RemoveOverrideSpell(
uint32 overridenSpellId,
uint32 newSpellId);
1967 void LearnSpecializationSpells();
1968 void RemoveSpecializationSpells();
1969 void AddSpellCategoryCooldownMod(
int32 spellCategoryId,
int32 mod);
1970 void RemoveSpellCategoryCooldownMod(
int32 spellCategoryId,
int32 mod);
1971 void SetSpellFavorite(
uint32 spellId,
bool favorite);
1973 void AddStoredAuraTeleportLocation(
uint32 spellId);
1974 void RemoveStoredAuraTeleportLocation(
uint32 spellId);
1977 void SetReputation(
uint32 factionentry,
int32 value);
1979 std::string GetGuildName()
const;
1997 uint32 GetDefaultSpecId()
const;
2000 bool ResetTalents(
bool noCost =
false);
2001 void ResetPvpTalents();
2002 uint32 GetNextResetTalentsCost()
const;
2003 void IncreaseResetTalentsCostAndCounters(
uint32 lastResetTalentsCost);
2004 void InitTalentForLevel();
2005 void SendTalentsInfoData();
2008 bool HasTalent(
uint32 spell_id,
uint8 spec)
const;
2010 void ResetTalentSpecialization();
2015 void TogglePvpTalents(
bool enable);
2016 bool HasPvpTalent(
uint32 talentID,
uint8 activeTalentGroup)
const;
2017 void EnablePvpRules(
bool dueToCombat =
false);
2018 void DisablePvpRules();
2019 bool HasPvpRulesEnabled()
const;
2020 bool IsInAreaThatActivatesPvpTalents()
const;
2021 bool IsAreaThatActivatesPvpTalents(
uint32 areaID)
const;
2030 std::vector<uint32>
const&
GetGlyphs(
uint8 spec)
const {
return _specializationInfo.Glyphs[spec]; }
2031 std::vector<uint32>&
GetGlyphs(
uint8 spec) {
return _specializationInfo.Glyphs[spec]; }
2033 void StartLoadingActionButtons(std::function<
void()>&& callback =
nullptr);
2042 void RenameTraitConfig(
int32 editedConfigId, std::string&& newName);
2043 void DeleteTraitConfig(
int32 deletedConfigId);
2044 void ApplyTraitConfig(
int32 configId,
bool apply);
2045 void ApplyTraitEntry(
int32 traitNodeEntryId,
int32 rank,
int32 grantedRanks,
bool apply);
2048 void SetTraitConfigUseStarterBuild(
int32 traitConfigId,
bool useStarterBuild);
2049 void SetTraitConfigUseSharedActionBars(
int32 traitConfigId,
bool usesSharedActionBars,
bool isLastSelectedSavedConfig);
2054 void InitPrimaryProfessions();
2065 void SetSpellModTakingSpell(
Spell* spell,
bool apply);
2066 void SendSpellModifiers()
const;
2068 void RemoveArenaSpellCooldowns(
bool removeActivePetCooldowns =
false);
2076 _resurrectionData.reset();
2081 if (!IsResurrectRequested())
2084 return !_resurrectionData->GUID.IsEmpty() && _resurrectionData->GUID == guid;
2088 void ResurrectUsingRequestData();
2089 void ResurrectUsingRequestDataImpl();
2100 void RemoveActionButton(
uint8 button);
2103 void SendActionButtons(
uint32 state)
const;
2104 bool IsActionButtonDataValid(
uint8 button,
uint64 action,
uint8 type)
const;
2109 void UpdatePvPState(
bool onlyFFA =
false);
2110 void SetPvP(
bool state)
override;
2111 void UpdatePvP(
bool state,
bool override =
false);
2113 void UpdateArea(
uint32 newArea);
2115 void UpdateZoneDependentAuras(
uint32 zone_id);
2116 void UpdateAreaDependentAuras(
uint32 area_id);
2118 void UpdateAfkReport(time_t currTime);
2119 void UpdatePvPFlag(time_t currTime);
2120 void SetContestedPvP(
Player* attackedPlayer =
nullptr);
2121 void UpdateContestedPvP(
uint32 currTime);
2123 void ResetContestedPvP();
2127 void UpdateDuelFlag(time_t currTime);
2128 void CheckDuelDistance(time_t currTime);
2133 bool IsGroupVisibleFor(
Player const* p)
const;
2134 bool IsInSameGroupWith(
Player const* p)
const;
2135 bool IsInSameRaidWith(
Player const* p)
const;
2136 void UninviteFromGroup();
2139 void SendUpdateToOutOfRangeGroupMembers();
2149 Guild const* GetGuild()
const;
2151 static void RemovePetitionsAndSigns(
ObjectGuid guid);
2157 static void LeaveAllArenaTeams(
ObjectGuid guid);
2178 bool UpdateCraftSkill(
SpellInfo const* spellInfo);
2180 bool UpdateFishingSkill(
int32 expansion);
2182 float GetHealthBonusFromStamina()
const;
2183 Stats GetPrimaryStat()
const;
2185 bool UpdateStats(
Stats stat)
override;
2186 bool UpdateAllStats()
override;
2187 void ApplySpellPenetrationBonus(
int32 amount,
bool apply);
2190 void UpdateResistances(
uint32 school)
override;
2191 void UpdateArmor()
override;
2192 void UpdateMaxHealth()
override;
2193 void UpdateMaxPower(
Powers power)
override;
2196 void UpdateAttackPowerAndDamage(
bool ranged =
false)
override;
2197 void ApplySpellPowerBonus(
int32 amount,
bool apply);
2198 void UpdateSpellDamageAndHealingBonus();
2205 void UpdateAllRatings();
2206 void UpdateMastery();
2207 void UpdateVersatilityDamageDone();
2208 void UpdateHealingDonePercentMod();
2209 bool CanUseMastery()
const;
2211 void CalculateMinMaxDamage(
WeaponAttackType attType,
bool normalized,
bool addTotalPct,
float& minDamage,
float& maxDamage)
const override;
2214 void GetDodgeFromAgility(
float &diminishing,
float &nondiminishing)
const;
2217 float ApplyRatingDiminishing(
CombatRating cr,
float bonusValue)
const;
2226 void UpdateBlockPercentage();
2228 void UpdateAllCritPercentages();
2229 void UpdateParryPercentage();
2230 void UpdateDodgePercentage();
2231 void UpdateMeleeHitChances();
2232 void UpdateRangedHitChances();
2233 void UpdateSpellHitChances();
2235 void UpdateSpellCritChance();
2236 void UpdateCorruption();
2237 void UpdateArmorPenetration(
int32 amount);
2239 void ApplyManaRegenBonus(
int32 amount,
bool apply);
2240 void ApplyHealthRegenBonus(
int32 amount,
bool apply);
2241 void UpdatePowerRegen(
Powers power);
2242 float GetPowerRegen(
Powers power)
const;
2248 Loot* GetLootByWorldObjectGUID(
ObjectGuid const& lootWorldObjectGuid)
const;
2249 std::unordered_map<ObjectGuid, Loot*>
const&
GetAELootView()
const {
return m_AELootView; }
2252 void RemoveLootRoll(
LootRoll* roll);
2254 void RemovedInsignia(
Player* looterPlr);
2262 void ClearValuesChangesMask()
override;
2265 void BuildCreateUpdateBlockForPlayer(
UpdateData* data,
Player* target)
const override;
2269 Player const* target,
bool ignoreNestedChangesMask)
const;
2282 void operator()(
Player const* player)
const;
2285 void DestroyForPlayer(
Player const* target)
const override;
2288 void SendAttackSwingCancelAttack()
const;
2290 void SendAutoRepeatCancel(
Unit* target);
2291 void SendExplorationExperience(
uint32 Area,
uint32 Experience)
const;
2293 void SendDungeonDifficulty()
const;
2294 void SendRaidDifficulty(
bool legacy)
const;
2296 void SendResetInstanceSuccess(
uint32 MapId)
const;
2298 void SendResetFailedNotify(
uint32 mapid)
const;
2299 bool IsLockedToDungeonEncounter(
uint32 dungeonEncounterId)
const;
2300 bool IsLockedToDungeonEncounter(
uint32 dungeonEncounterId,
Difficulty difficulty)
const;
2302 bool UpdatePosition(
float x,
float y,
float z,
float orientation,
bool teleport =
false)
override;
2306 void UpdateLiquidMirrorTimerValuesOnAura();
2307 void AtEnterCombat()
override;
2308 void AtExitCombat()
override;
2311 void SendMessageToSetInRange(
WorldPacket const* data,
float dist,
bool self)
const override;
2312 void SendMessageToSetInRange(
WorldPacket const* data,
float dist,
bool self,
bool own_team_only,
bool required3dDist =
false)
const;
2313 void SendMessageToSet(
WorldPacket const* data,
Player const* skipped_rcvr)
const override;
2315 void SendChatMessageToSetInRange(
ChatMsg chatMsg,
Language lanugageId, std::string&& text,
float range);
2317 Corpse* GetCorpse()
const;
2318 void SpawnCorpseBones(
bool triggerSave =
true);
2324 void InitializeSelfResurrectionSpells();
2325 void ResurrectPlayer(
float restore_percent,
bool applySickness =
false);
2326 void BuildPlayerRepop();
2327 void RepopAtGraveyard();
2329 void DurabilityLossAll(
double percent,
bool inventory);
2330 void DurabilityLoss(
Item* item,
double percent);
2331 void DurabilityPointsLossAll(
int32 points,
bool inventory);
2332 void DurabilityPointsLoss(
Item* item,
int32 points);
2334 void DurabilityRepairAll(
bool takeCost,
float discountMod,
bool guildBank);
2335 void DurabilityRepair(
uint16 pos,
bool takeCost,
float discountMod);
2341 void JoinedChannel(
Channel* c);
2343 void CleanupChannels();
2344 void UpdateLocalChannels(
uint32 newZone);
2345 void LeaveLFGChannel();
2350 void InitializeSkillFields();
2361 bool HasSkill(
uint32 skill)
const;
2364 int32 FindEmptyProfessionSlotFor(
uint32 skillId)
const;
2391 void ProcessDelayedOperations();
2393 void CheckAreaExplore();
2396 bool HasExploredZone(
uint32 areaId)
const;
2399 void UpdateZoneAndAreaId();
2400 void UpdateIndoorsOutdoorsAuras();
2401 void UpdateTavernRestingState();
2405 static uint8 GetFactionGroupForRace(
uint8 race);
2408 void SetFactionForRace(
uint8 race);
2413 void InitDisplayIds();
2415 bool IsAtGroupRewardDistance(
WorldObject const* pRewardSource)
const;
2416 bool IsAtRecruitAFriendDistance(
WorldObject const* pOther)
const;
2417 void RewardPlayerAndGroupAtEvent(
uint32 creature_id,
WorldObject* pRewardSource);
2418 bool isHonorOrXPTarget(
Unit const* victim)
const;
2420 bool GetsRecruitAFriendBonus(
bool forXP);
2425 void RewardReputation(
Unit* victim,
float rate);
2426 void RewardReputation(
Quest const* quest);
2431 void RemoveVisibleForcedReaction(
uint32 factionId);
2433 void UpdateSkillsForLevel();
2434 void ModifySkillBonus(
uint32 skillid,
int32 val,
bool talent);
2439 void UpdateHonorFields();
2441 void ResetHonorStats();
2442 uint32 GetMaxPersonalArenaRatingRequirement(
uint32 minarenaslot)
const;
2451 void AddHonorXP(
uint32 xp);
2452 void SetHonorLevel(
uint8 honorLevel);
2455 void UpdateHonorNextLevel();
2458 void RewardPlayerWithRewardPack(
uint32 rewardPackID);
2459 void RewardPlayerWithRewardPack(
RewardPackEntry const* rewardPackEntry);
2461 void SetDrunkValue(
uint8 newDrunkValue,
uint32 itemId = 0);
2465 void UpdateInvisibilityDrunkDetect();
2469 uint32 GetCorpseReclaimDelay(
bool pvp)
const;
2470 void UpdateCorpseReclaimDelay();
2471 int32 CalculateCorpseReclaimDelay(
bool load =
false)
const;
2472 void SendCorpseReclaimDelay(
uint32 delay)
const;
2474 float GetBlockPercent(
uint8 attackerLevel)
const override;
2476 void SetCanParry(
bool value);
2478 void SetCanBlock(
bool value);
2479 bool CanTitanGrip(
Item const* item)
const;
2480 void SetCanTitanGrip(
bool value,
uint32 penaltySpellId = 0,
int32 allowedItemClass = 0,
int32 allowedItemSubClassMask = 0);
2481 void CheckTitanGripPenalty();
2484 void SetRegularAttackTime();
2486 void HandleBaseModFlatValue(
BaseModGroup modGroup,
float amount,
bool apply);
2487 void ApplyBaseModPctValue(
BaseModGroup modGroup,
float pct);
2489 void SetBaseModFlatValue(
BaseModGroup modGroup,
float val);
2490 void SetBaseModPctValue(
BaseModGroup modGroup,
float val);
2496 float GetTotalBaseModValue(
BaseModGroup modGroup)
const;
2498 void _ApplyAllStatBonuses();
2499 void _RemoveAllStatBonuses();
2501 void ResetAllPowers();
2505 void CastAllObtainSpells();
2506 void ApplyItemObtainSpells(
Item* item,
bool apply);
2509 void UpdateAllWeaponDependentCritAuras();
2512 void ApplyItemDependentAuras(
Item* item,
bool apply);
2516 void _ApplyItemMods(
Item* item,
uint8 slot,
bool apply,
bool updateItemAuras =
true);
2517 void _RemoveAllItemMods();
2518 void _ApplyAllItemMods();
2519 void _ApplyAllLevelScaleItemMods(
bool apply);
2520 void ApplyAllAzeriteItemMods(
bool apply);
2521 void ApplyAllAzeriteEmpoweredItemMods(
bool apply);
2522 void _ApplyItemBonuses(
Item* item,
uint8 slot,
bool apply);
2523 void _ApplyWeaponDamage(
uint8 slot,
Item* item,
bool apply);
2524 bool EnchantmentFitsRequirements(
uint32 enchantmentcondition,
int8 slot)
const;
2525 void ToggleMetaGemsActive(
uint8 exceptslot,
bool apply);
2526 void CorrectMetaGemEnchants(
uint8 slot,
bool apply);
2527 void InitDataForForm(
bool reapplyMods =
false);
2529 void ApplyItemEquipSpell(
Item* item,
bool apply,
bool formChange =
false);
2530 void ApplyEquipSpell(
SpellInfo const* spellInfo,
Item* item,
bool apply,
bool formChange =
false);
2531 void UpdateEquipSpellsAtFormChange();
2532 void ApplyArtifactPowers(
Item* item,
bool apply);
2534 void ApplyAzeritePowers(
Item* item,
bool apply);
2540 void CastItemCombatSpell(
DamageInfo const& damageInfo);
2543 void ApplyItemLootedSpell(
Item* item,
bool apply);
2544 void ApplyItemLootedSpell(
ItemTemplate const* itemTemplate);
2546 void SendEquipmentSetList();
2548 void DeleteEquipmentSet(
uint64 id);
2550 void SendInitWorldStates(
uint32 zoneId,
uint32 areaId)
const;
2551 void SendUpdateWorldState(
uint32 variable,
uint32 value,
bool hidden =
false)
const;
2552 void SendDirectMessage(
WorldPacket const* data)
const;
2554 void SendAurasForTarget(
Unit* target)
const;
2559 void SendLoot(
Loot& loot,
bool aeLooting =
false);
2562 void SendLootReleaseAll()
const;
2564 void SendNotifyLootMoneyRemoved(
ObjectGuid lootObj)
const;
2571 bool InArena()
const;
2577 bool InBattlegroundQueue(
bool ignoreArena =
false)
const;
2587 bool HasFreeBattlegroundQueueId()
const;
2590 bool IsInvitedForBattlegroundInstance(
uint32 instanceId)
const;
2594 void SetBattlegroundEntryPoint();
2596 void SetBGTeam(
Team team);
2597 Team GetBGTeam()
const;
2599 void LeaveBattleground(
bool teleportToEntryPoint =
true,
bool withoutDeserterDebuff =
false);
2601 bool CanReportAfkDueToLimit();
2602 void ReportedAfkBy(
Player* reporter);
2606 bool CanUseBattlegroundObject(
GameObject* gameobject)
const;
2607 bool isTotalImmune()
const;
2608 bool CanCaptureTowerPoint()
const;
2611 void SetRandomWinner(
bool isWinner);
2619 bool IsOutdoorPvPActive()
const;
2625 bool IsImmuneToEnvironmentalDamage()
const;
2653 void SetFallInformation(
uint32 time,
float z);
2656 void SetClientControl(
Unit* target,
bool allowMove);
2659 void SetViewpoint(
WorldObject* target,
bool apply);
2661 void StopCastingCharm();
2662 void StopCastingBindSight()
const;
2669 m_recall_location.Location.WorldRelocate(*
this);
2670 m_recall_location.InstanceId = GetInstanceId();
2675 void SendBindPointUpdate()
const;
2689 bool HaveAtClient(
BaseEntity const* u)
const;
2691 bool IsNeverVisibleFor(
WorldObject const* seer,
bool allowServersideObjects)
const override;
2693 bool IsVisibleGloballyFor(
Player const* player)
const;
2695 void SendInitialVisiblePackets(
WorldObject* target)
const;
2696 void OnPhaseChange()
override;
2697 void UpdateObjectVisibility(
bool forced =
true)
override;
2698 void UpdateVisibilityForPlayer();
2701 void UpdateTriggerVisibility();
2704 void UpdateVisibilityOf(T* target,
UpdateData& data, std::set<WorldObject*>& visibleNow);
2713 bool isUsingLfg()
const;
2714 bool inRandomLfgDungeon()
const;
2724 void EnablePetControlsOnDismount();
2725 void UnsummonPetTemporaryIfAny();
2726 void ResummonPetTemporaryUnSummonedIfAny();
2727 void UnsummonBattlePetTemporaryIfAny(
bool onFlyingMount =
false);
2728 void ResummonBattlePetTemporaryUnSummonedIfAny();
2729 bool IsPetNeedBeTemporaryUnsummoned()
const;
2731 void SendCinematicStart(
uint32 CinematicSequenceId)
const;
2732 void SendMovieStart(
uint32 movieId);
2737 void UpdateItemLevelAreaBasedScaling();
2745 void UpdateHomebindTime(
uint32 time);
2752 auto itr = m_recentInstances.find(mapId);
2753 return itr != m_recentInstances.end() ? itr->second : 0;
2758 m_recentInstances[mapId] = instanceId;
2762 void ConfirmPendingBind();
2763 void SetPendingBind(
uint32 instanceId,
uint32 bindTimer);
2765 void SendRaidInfo();
2767 bool CheckInstanceValidity(
bool );
2786 void SetGroup(
Group* group,
int8 subgroup = -1);
2792 void ResetGroupUpdateSequenceIfNeeded(
Group const* group);
2794 Player* GetNextRandomRaidMember(
float radius);
2798 void SetBattlegroundOrBattlefieldRaid(
Group* group,
int8 subgroup = -1);
2799 void RemoveFromBattlegroundOrBattlefieldRaid();
2803 void SetOriginalGroup(
Group* group,
int8 subgroup = -1);
2811 void SetMap(
Map* map)
override;
2812 void ResetMap()
override;
2814 bool isAllowedToLoot(
Creature const* creature)
const;
2817 uint8 GetRunesState()
const;
2819 uint32 GetRuneBaseCooldown()
const;
2820 void SetRuneCooldown(
uint8 index,
uint32 cooldown);
2821 void ResyncRunes()
const;
2824 void SendRespondInspectAchievements(
Player* player)
const;
2825 uint32 GetAchievementPoints()
const;
2826 std::vector<uint32> GetCompletedAchievementIds()
const;
2827 bool HasAchieved(
uint32 achievementId)
const;
2828 void ResetAchievements();
2833 bool ModifierTreeSatisfied(
uint32 modifierTreeId)
const;
2842 bool CanSeeGossipOn(
Creature const* creature)
const;
2843 bool CanSeeSpellClickOn(
Creature const* creature)
const;
2849 float GetAverageItemLevel()
const;
2866 void CreateGarrison(
uint32 garrSiteId);
2867 void DeleteGarrison();
2878 SetUpdateFieldValue(m_values
2885 SetUpdateFieldValue(m_values
2893 bool MeetPlayerCondition(
uint32 conditionId)
const;
2914 if (choiceIndex >= 0)
2915 return m_playerData->Customizations[choiceIndex].ChrCustomizationChoiceID;
2920 template<
typename Iter>
2924 m_customizationsChanged =
true;
2927 for (
auto&& customization : customizations)
2959 int32 index = m_activePlayerData->ConditionalTransmog.FindIndex(itemModifiedAppearanceId);
2973 int32 index = m_activePlayerData->SelfResSpells.FindIndex(spellId);
3009 std::variant<int64, float> GetDataElementAccount(
uint32 dataElementId)
const;
3010 void SetDataElementAccount(
uint32 dataElementId, std::variant<int64, float> value);
3012 std::variant<int64, float> GetDataElementCharacter(
uint32 dataElementId)
const;
3013 void SetDataElementCharacter(
uint32 dataElementId, std::variant<int64, float> value);
3015 bool HasDataFlagAccount(
uint32 dataFlagId)
const;
3016 void SetDataFlagAccount(
uint32 dataFlagId,
bool on);
3018 bool HasDataFlagCharacter(
uint32 dataFlagId)
const;
3019 void SetDataFlagCharacter(
uint32 dataFlagId,
bool on);
3021 bool IsInFriendlyArea()
const;
3024 void SetWarModeDesired(
bool enabled);
3028 void SetWarModeLocal(
bool enabled);
3029 bool CanEnableWarModeInArea()
const;
3030 void UpdateWarModeAuras();
3032 void SetAccountSecured(
bool secured);
3034 void AddUnlockedTransmogOutfits(std::span<int32 const> transmogOutfitIds);
3041 void UpdateTransmogOutfitSituations(
uint32 id,
bool situationsEnabled, std::span<WorldPackets::Transmogrification::TransmogOutfitSituationInfo const> situations);
3042 void UpdateTransmogOutfitSlots(
uint32 id, std::span<WorldPackets::Transmogrification::TransmogOutfitSlotData const> slots);
3050 void SetAreaSpiritHealer(
Creature* creature);
3053 void SendAreaSpiritHealerTime(
Unit* spiritHealer)
const;
3054 void SendAreaSpiritHealerTime(
ObjectGuid const& spiritHealerGUID,
int32 timeLeft)
const;
3110 void _LoadGlyphAuras();
3136 int32 equippedTransmogOutfitId,
bool locked);
3181 void HandleSobering();
3185 void UpdateMirrorTimers(
uint32 diff);
3193 void outDebugValues()
const;
3319 bool CanNeverSee(
WorldObject const* obj,
bool ignorePhaseShift =
false)
const override;
3320 bool CanAlwaysSee(
WorldObject const* obj)
const override;
3322 bool IsAlwaysDetectableFor(
WorldObject const* seer)
const override;
3339 void SendRefundInfo(
Item* item);
3340 void RefundItem(
Item* item);
3343 void AdjustQuestObjectiveProgress(
Quest const* quest);
3349 bool IsInstanceLoginGameMasterException()
const;
3404 void _InitHonorLevelOnLoadFromDB(
uint32 honor,
uint32 honorLevel);
3413 void RequestSpellCast(std::unique_ptr<SpellCastRequest> castRequest);
3414 void CancelPendingCastRequest();
3415 bool CanRequestSpellCast(
SpellInfo const* spell,
Unit const* castingUnit)
const;
3419 void ExecutePendingSpellCastRequest();
3421 bool CanExecutePendingSpellCastRequest();
3434template<
typename Container>
3437 static_assert(std::is_same<typename Container::value_type, UF::ChrCustomizationChoice>::value,
3438 "MakeChrCustomizationChoiceRange must be used with containers of UF::ChrCustomizationChoice");
3440 return { container.data(), container.data() + container.size() };
uint32 GetBagSize(Bag const *bag)
Item * GetItemInBag(Bag const *bag, uint8 slot)
#define MAX_CUF_PROFILES
Maximum number of CompactUnitFrames profiles.
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
SQLTransaction< LoginDatabaseConnection > LoginDatabaseTransaction
std::shared_ptr< PreparedResultSet > PreparedQueryResult
std::unordered_set< uint32 > params[2]
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
std::chrono::steady_clock::time_point TimePoint
time_point shorthand typedefs
#define DEFINE_ENUM_FLAG(enumType)
std::map< uint64, EquipmentSetInfo > EquipmentSetContainer
std::string GetDebugInfo()
uint32 ItemRandomBonusListId
void RemoveItemFromUpdateQueueOf(Item *item, Player *player)
void AddItemToUpdateQueueOf(Item *item, Player *player)
std::list< ObjectGuid > GuidList
std::unordered_set< ObjectGuid > GuidUnorderedSet
std::set< ObjectGuid > GuidSet
std::optional< T > Optional
Optional helper class to wrap optional values within.
@ EQUIPMENT_SLOT_SHOULDERS
@ EQUIPMENT_SLOT_MAINHAND
@ EQUIPMENT_SLOT_TRINKET1
@ EQUIPMENT_SLOT_TRINKET2
std::deque< Mail * > PlayerMails
std::vector< ItemPosCount > ItemPosCountVec
TC_GAME_API void DeleteItemSetEffects(ItemSetEffect *itemSetEffect)
@ ARENA_TEAM_PERSONAL_RATING
@ ARENA_TEAM_GAMES_SEASON
EnviromentalDamage
Type of environmental damages.
constexpr uint32 SPELL_ALPACA_SADDLEBAGS
uint32 constexpr PLAYER_MAX_HONOR_LEVEL
@ ERR_REFER_A_FRIEND_TARGET_TOO_HIGH
@ ERR_REFER_A_FRIEND_SUMMON_OFFLINE_S
@ ERR_REFER_A_FRIEND_DIFFERENT_FACTION
@ ERR_REFER_A_FRIEND_NONE
@ ERR_REFER_A_FRIEND_NO_TARGET
@ ERR_REFER_A_FRIEND_NOT_NOW
@ ERR_REFER_A_FRIEND_INSUF_EXPAN_LVL
@ ERR_REFER_A_FRIEND_INSUFFICIENT_GRANTABLE_LEVELS
@ ERR_REFER_A_FRIEND_NOT_REFERRED_BY
@ ERR_REFER_A_FRIEND_TOO_FAR
@ ERR_REFER_A_FRIEND_SUMMON_LEVEL_MAX_I
@ ERR_REFER_A_FRIEND_NOT_IN_GROUP
@ ERR_REFER_A_FRIEND_MAP_INCOMING_TRANSFER_NOT_ALLOWED
@ ERR_REFER_A_FRIEND_GRANT_LEVEL_MAX_I
@ ERR_REFER_A_FRIEND_SUMMON_COOLDOWN
@ ERR_REFER_A_FRIEND_NO_XREALM
@ INVENTORY_SLOT_BAG_START
@ TELE_TO_TRANSPORT_TELEPORT
@ TELE_TO_NOT_LEAVE_COMBAT
@ TELE_TO_NOT_UNSUMMON_PET
@ TELE_REVIVE_AT_TELEPORT
@ TELE_TO_NOT_LEAVE_TRANSPORT
std::array< uint32, MAX_PVP_TALENT_SLOTS > PlayerPvpTalentMap
@ PLAYERCURRENCY_UNCHANGED
@ PLAYER_FIELD_BYTE2_STEALTH
@ PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW
@ PLAYER_FIELD_BYTE2_NONE
@ PLAYER_EXTRA_LEVEL_BOOSTED
@ PLAYER_EXTRA_ACCEPT_WHISPERS
@ PLAYER_EXTRA_GM_INVISIBLE
@ PLAYER_EXTRA_GRANTED_LEVELS_FROM_RAF
@ PLAYER_EXTRA_HAS_RACE_CHANGED
@ PLAYER_EXTRA_FLAG_FREE_TRANSMOG_CLAIMED
@ ArenaSkirmishCompletion
std::unordered_map< uint32, PlayerSpell > PlayerSpellMap
constexpr uint8 INVENTORY_SLOT_BAG_0
float constexpr MAX_AREA_SPIRIT_HEALER_RANGE
@ PLAYER_FLAGS_WAR_MODE_ACTIVE
@ PLAYER_FLAGS_AUTO_DECLINE_GUILD
@ PLAYER_FLAGS_HIDE_ACCOUNT_ACHIEVEMENTS
@ PLAYER_FLAGS_VOID_UNLOCKED
@ PLAYER_FLAGS_PLAYED_LONG_TIME
@ PLAYER_FLAGS_CONTESTED_PVP
@ PLAYER_FLAGS_NO_XP_GAIN
@ PLAYER_FLAGS_GUILD_LEVEL_ENABLED
@ PLAYER_FLAGS_GROUP_LEADER
@ PLAYER_FLAGS_IS_OUT_OF_BOUNDS
@ PLAYER_FLAGS_VOICE_CHAT
@ PLAYER_FLAGS_WAR_MODE_DESIRED
@ PLAYER_FLAGS_TAXI_BENCHMARK
@ PLAYER_FLAGS_LOW_LEVEL_RAID_ENABLED
@ PLAYER_FLAGS_COMMENTATOR2
@ PLAYER_FLAGS_TIMEWALKING
@ PLAYER_FLAGS_COMMENTATOR_CAMERA
@ PLAYER_FLAGS_PET_BATTLES_UNLOCKED
@ PLAYER_FLAGS_PLAYED_TOO_LONG
uint8 constexpr PLAYER_LEVEL_MIN_HONOR
std::map< uint32, QuestSaveType > QuestStatusSaveMap
@ EquippedEffectiveWeighted
@ INVENTORY_SLOT_ITEM_START
@ INVENTORY_SLOT_ITEM_END
@ DELAYED_BG_MOUNT_RESTORE
Flag to restore mount state after teleport from BG.
@ DELAYED_BG_TAXI_RESTORE
Flag to restore taxi state after teleport from BG.
@ DELAYED_SPELL_CAST_DESERTER
@ DELAYED_RESURRECT_PLAYER
@ ACTION_BUTTON_COMPANION
std::unordered_map< uint32, PlayerSpellState > PlayerTalentMap
std::map< uint8, ActionButton > ActionButtonList
@ EQUIPABLE_SPELL_OFFENSIVE_SLOT3
@ EQUIPABLE_SPELL_DEFENSIVE_SLOT1
@ EQUIPABLE_SPELL_UTILITY_SLOT3
@ EQUIPABLE_SPELL_OFFENSIVE_SLOT1
@ EQUIPABLE_SPELL_WEAPON_SLOT3
@ EQUIPABLE_SPELL_WEAPON_SLOT4
@ EQUIPABLE_SPELL_WEAPON_SLOT1
@ EQUIPABLE_SPELL_DEFENSIVE_SLOT4
@ EQUIPABLE_SPELL_WEAPON_SLOT2
@ EQUIPABLE_SPELL_UTILITY_SLOT2
@ EQUIPABLE_SPELL_DEFENSIVE_SLOT3
@ EQUIPABLE_SPELL_UTILITY_SLOT1
@ EQUIPABLE_SPELL_OFFENSIVE_SLOT2
@ EQUIPABLE_SPELL_DEFENSIVE_SLOT2
@ EQUIPABLE_SPELL_OFFENSIVE_SLOT4
@ EQUIPABLE_SPELL_UTILITY_SLOT4
@ SPEC_RESET_SPECIALIZATION
std::unordered_map< uint32, SkillStatusData > SkillStatusMap
#define ACTION_BUTTON_TYPE(X)
@ PLAYER_LOCAL_FLAG_CAN_USE_OBJECTS_MOUNTED
@ PLAYER_LOCAL_FLAG_USING_PARTY_GARRISON
@ PLAYER_LOCAL_FLAG_TRACK_STEALTHED
@ PLAYER_LOCAL_FLAG_CHARACTER_BANK_CONVERSION_FAILED
@ PLAYER_LOCAL_FLAG_NO_PET_BAR
@ PLAYER_LOCAL_FLAG_WAR_MODE
@ PLAYER_LOCAL_FLAG_ACCOUNT_BANK_DISABLED
@ PLAYER_LOCAL_FLAG_ACCOUNT_SECURED
@ PLAYER_LOCAL_FLAG_RELEASE_TIMER
@ PLAYER_LOCAL_FLAG_HAS_ACCOUNT_BANK_LOCK
@ PLAYER_LOCAL_FLAG_NO_RELEASE_WINDOW
@ PLAYER_LOCAL_FLAG_CONTROLLING_PET
@ PLAYER_LOCAL_FLAG_MENTOR_RESTRICTED
@ PLAYER_LOCAL_FLAG_NEWLY_BOOSTED_CHARACTER
@ PLAYER_LOCAL_FLAG_CHARACTER_BANK_DISABLED
@ PLAYER_LOCAL_FLAG_OVERRIDE_TRANSPORT_SERVER_TIME
@ PLAYER_LOCAL_FLAG_CAN_VISIT_PARTY_GARRISON
@ PLAYER_LOCAL_FLAG_FREE_TRANSMOG_CLAIMED
@ PLAYER_LOCAL_FLAG_OVERRIDE_CAMERA_MIN_HEIGHT
@ ACCOUNT_BANK_SLOT_BAG_END
@ ACCOUNT_BANK_SLOT_BAG_START
@ ERR_BANKSLOT_FAILED_TOO_MANY
@ ERR_BANKSLOT_INSUFFICIENT_FUNDS
TC_GAME_API void UpdateItemSetAuras(Player *player, bool formChange)
TC_GAME_API void RemoveItemsSetItem(Player *player, Item const *item)
@ RAID_INSTANCE_WARNING_TIME
@ RAID_INSTANCE_WELCOME_DAILY
TC_GAME_API uint32 GetBagSize(Bag const *bag)
@ PLAYER_DATA_FLAG_VALUE_BITS
@ PLAYER_DATA_FLAG_CHARACTER_TAXI_NODES_INDEX
@ PLAYER_DATA_FLAG_ACCOUNT_DATA_INDEX
@ PLAYER_DATA_FLAG_CHARACTER_QUEST_COMPLETED_INDEX
@ PLAYER_DATA_FLAG_CHARACTER_CONTENTPUSH_INDEX
@ PLAYER_DATA_FLAG_ACCOUNT_COMBINED_QUESTS_INDEX
@ PLAYER_EXPLORED_ZONES_BITS
@ PLAYER_DATA_FLAG_CHARACTER_DATA_INDEX
@ PLAYER_DATA_FLAG_ACCOUNT_COMBINED_QUEST_REWARDS_INDEX
@ PLAYER_DATA_FLAG_EXPLORED_ZONES_INDEX
@ PLAYER_DATA_FLAG_ACCOUNT_TAXI_NODES_INDEX
@ AT_LOGIN_RESET_PET_TALENTS
@ AT_LOGIN_CHANGE_FACTION
float constexpr TELEPORT_MIN_LOAD_SCREEN_DISTANCE
#define ACTION_BUTTON_ACTION(X)
std::list< EnchantDuration > EnchantDurationList
std::unordered_multimap< std::pair< QuestObjectiveType, int32 >, QuestObjectiveStatusData > QuestObjectiveStatusMap
@ PROFESSION_SLOT_MAX_COUNT
@ PROFESSION_SLOT_FISHING_TOOL
@ PROFESSION_SLOT_PROFESSION2_GEAR1
@ PROFESSION_SLOT_FISHING_GEAR2
@ PROFESSION_SLOT_PROFESSION1_GEAR1
@ PROFESSION_SLOT_PROFESSION2_TOOL
@ PROFESSION_SLOT_PROFESSION1_TOOL
@ PROFESSION_SLOT_PROFESSION2_GEAR2
@ PROFESSION_SLOT_FISHING_GEAR1
@ PROFESSION_SLOT_COOKING_GEAR1
@ PROFESSION_SLOT_COOKING_TOOL
@ PROFESSION_SLOT_PROFESSION1_GEAR2
@ CHILD_EQUIPMENT_SLOT_END
@ CHILD_EQUIPMENT_SLOT_START
@ PLAYER_FLAGS_EX_IN_PVP_COMBAT
@ PLAYER_FLAGS_EX_AUTO_DECLINE_NEIGHBORHOOD
@ PLAYER_FLAGS_EX_ARTIFACT_FORGE_CHEAT
@ PLAYER_FLAGS_EX_REAGENT_BANK_UNLOCKED
@ PLAYER_FLAGS_EX_UNLOCKED_AOE_LOOT
@ PLAYER_FLAGS_EX_ITEM_LEVEL_SQUISH
@ PLAYER_FLAGS_EX_NEWCOMER
@ PLAYER_FLAGS_EX_MERCENARY_MODE
@ WaitingForSuspendTokenResponse
TC_GAME_API Item * GetItemInBag(Bag const *bag, uint8 slot)
uint32 constexpr SPELL_PVP_RULES_ENABLED
constexpr uint8 INVENTORY_ACCOUNT_SECURED_BONUS_SIZE
TC_GAME_API void AddItemsSetItem(Player *player, Item const *item)
constexpr uint8 INVENTORY_DEFAULT_SIZE
@ QUEST_FORCE_DELETE_SAVE_TYPE
@ QUEST_DEFAULT_SAVE_TYPE
@ REPUTATION_SOURCE_SPELL
@ REPUTATION_SOURCE_QUEST
@ REPUTATION_SOURCE_MONTHLY_QUEST
@ REPUTATION_SOURCE_REPEATABLE_QUEST
@ REPUTATION_SOURCE_WEEKLY_QUEST
@ REPUTATION_SOURCE_DAILY_QUEST
Trinity::IteratorPair< UF::ChrCustomizationChoice const * > MakeChrCustomizationChoiceRange(Container const &container)
PlayerQuestCompletedConstants
@ QUESTS_COMPLETED_BITS_PER_BLOCK
std::map< uint32, QuestStatusData > QuestStatusMap
std::set< uint32 > RewardedQuestSet
constexpr uint64 MAX_MONEY_AMOUNT
std::unordered_map< uint32, PlayerCurrency > PlayerCurrenciesMap
@ PLAYER_LOGIN_QUERY_LOAD_SPELL_COOLDOWNS
@ PLAYER_LOGIN_QUERY_LOAD_CUSTOMIZATIONS
@ PLAYER_LOGIN_QUERY_LOAD_CURRENCY
@ PLAYER_LOGIN_QUERY_LOAD_GLYPHS
@ PLAYER_LOGIN_QUERY_LOAD_DECLINED_NAMES
@ PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS_REW
@ PLAYER_LOGIN_QUERY_LOAD_DAILY_QUEST_STATUS
@ PLAYER_LOGIN_QUERY_LOAD_AURA_EFFECTS
@ PLAYER_LOGIN_QUERY_LOAD_SEASONAL_QUEST_STATUS
@ PLAYER_LOGIN_QUERY_LOAD_SOCIAL_LIST
@ PLAYER_LOGIN_QUERY_LOAD_GARRISON_FOLLOWERS
@ PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS_OBJECTIVES_CRITERIA
@ PLAYER_LOGIN_QUERY_LOAD_TRAIT_CONFIGS
@ PLAYER_LOGIN_QUERY_LOAD_SKILLS
@ PLAYER_LOGIN_QUERY_LOAD_BG_DATA
@ PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS_OBJECTIVES_CRITERIA_PROGRESS
@ PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFITS
@ PLAYER_LOGIN_QUERY_LOAD_GARRISON_FOLLOWER_ABILITIES
@ PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT_SLOT
@ PLAYER_LOGIN_QUERY_LOAD_ACCOUNT_DATA
@ PLAYER_LOGIN_QUERY_LOAD_MAIL_ITEMS
@ PLAYER_LOGIN_QUERY_LOAD_PET_SLOTS
@ PLAYER_LOGIN_QUERY_LOAD_ARTIFACTS
@ PLAYER_LOGIN_QUERY_LOAD_INVENTORY
@ PLAYER_LOGIN_QUERY_LOAD_REPUTATION
@ PLAYER_LOGIN_QUERY_LOAD_AZERITE_MILESTONE_POWERS
@ PLAYER_LOGIN_QUERY_LOAD_GARRISON_BLUEPRINTS
@ PLAYER_LOGIN_QUERY_LOAD_MAIL_ITEMS_AZERITE
@ PLAYER_LOGIN_QUERY_LOAD_BANK_TAB_SETTINGS
@ PLAYER_LOGIN_QUERY_LOAD_FROM
@ PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS
@ PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS_OBJECTIVES
@ PLAYER_LOGIN_QUERY_LOAD_MAIL_ITEMS_AZERITE_UNLOCKED_ESSENCE
@ PLAYER_LOGIN_QUERY_LOAD_GARRISON_BUILDINGS
@ PLAYER_LOGIN_QUERY_LOAD_DATA_FLAGS
@ PLAYER_LOGIN_QUERY_LOAD_WEEKLY_QUEST_STATUS
@ PLAYER_LOGIN_QUERY_LOAD_SPELL_CHARGES
@ PLAYER_LOGIN_QUERY_LOAD_MAIL_ITEMS_AZERITE_MILESTONE_POWER
@ PLAYER_LOGIN_QUERY_LOAD_AZERITE
@ PLAYER_LOGIN_QUERY_LOAD_MONTHLY_QUEST_STATUS
@ PLAYER_LOGIN_QUERY_LOAD_GUILD
@ PLAYER_LOGIN_QUERY_LOAD_EQUIPMENT_SETS
@ PLAYER_LOGIN_QUERY_LOAD_MAILS
@ PLAYER_LOGIN_QUERY_LOAD_AURAS
@ PLAYER_LOGIN_QUERY_LOAD_MAIL_ITEMS_AZERITE_EMPOWERED
@ PLAYER_LOGIN_QUERY_LOAD_TALENTS
@ PLAYER_LOGIN_QUERY_LOAD_AZERITE_UNLOCKED_ESSENCES
@ PLAYER_LOGIN_QUERY_LOAD_GARRISON
@ PLAYER_LOGIN_QUERY_LOAD_BANNED
@ PLAYER_LOGIN_QUERY_LOAD_MAIL_ITEMS_ARTIFACT
@ PLAYER_LOGIN_QUERY_LOAD_ARENA_INFO
@ PLAYER_LOGIN_QUERY_LOAD_GROUP
@ PLAYER_LOGIN_QUERY_LOAD_CRITERIA_PROGRESS
@ PLAYER_LOGIN_QUERY_LOAD_HOME_BIND
@ PLAYER_LOGIN_QUERY_LOAD_CORPSE_LOCATION
@ PLAYER_LOGIN_QUERY_LOAD_SPELLS
@ PLAYER_LOGIN_QUERY_LOAD_SPELL_FAVORITES
@ PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT
@ PLAYER_LOGIN_QUERY_LOAD_DATA_ELEMENTS
@ PLAYER_LOGIN_QUERY_LOAD_TRAIT_ENTRIES
@ PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS_OBJECTIVES_SPAWN_TRACKING
@ PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT_SITUATION
@ PLAYER_LOGIN_QUERY_LOAD_AZERITE_EMPOWERED
@ PLAYER_LOGIN_QUERY_LOAD_PVP_TALENTS
@ PLAYER_LOGIN_QUERY_LOAD_CUF_PROFILES
@ PLAYER_LOGIN_QUERY_LOAD_RANDOM_BG
@ PLAYER_LOGIN_QUERY_LOAD_AURA_STORED_LOCATIONS
@ PLAYER_LOGIN_QUERY_LOAD_ACHIEVEMENTS
@ TALENT_FAILED_AFFECTING_COMBAT
@ TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE
@ TALENT_FAILED_NO_PRIMARY_TREE_SELECTED
@ TALENT_FAILED_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE
@ TALENT_FAILED_REST_AREA
@ TALENT_FAILED_UNSPENT_TALENT_POINTS
@ TALENT_FAILED_CANT_REMOVE_TALENT
@ TALENT_FAILED_IN_PVP_MATCH
@ TALENT_FAILED_CANT_DO_THAT_RIGHT_NOW
std::list< Item * > ItemDurationList
Trinity::Containers::FlatSet< SpellModifier *, SpellModifierCompare > SpellModContainer
static void SaveToDB(QuestPool const &pool, CharacterDatabaseTransaction trans)
constexpr Trinity::RaceMask< uint64 > RACEMASK_ALL_PLAYABLE
constexpr TeamId GetTeamIdForTeam(Team team)
constexpr BattlegroundQueueTypeId BATTLEGROUND_QUEUE_NONE
#define MAX_SPECIALIZATIONS
constexpr TeamId GetOtherTeam(TeamId team)
static constexpr uint8 PLAYER_MAX_BATTLEGROUND_QUEUES
#define CLASSMASK_ALL_PLAYABLE
@ GROUP_REMOVEMETHOD_DEFAULT
@ SPELL_AURA_ALLOW_TAME_PET_TYPE
NPCFlags
Non Player Character flags.
ObjectGuid const & GetGUID() const
constexpr bool HasFlag(T flag) const
Class used to access individual fields of database query result.
static ObjectGuid const Empty
void InitTaxiNodesForLevel(uint32 race, uint32 chrClass, uint8 level)
std::unique_ptr< QuestObjectiveCriteriaMgr > m_questObjectiveCriteriaMgr
void ApplyModOverrideSpellPowerByAPPercent(float mod, bool apply)
bool IsValidPos(uint16 pos, bool explicit_pos) const
ChrSpecialization GetPrimarySpecialization() const
void SetWatchedFactionIndex(int32 index)
UF::UpdateField< UF::PlayerData, int32(WowCS::EntityFragment::CGObject), TYPEID_PLAYER > m_playerData
uint32 GetHonorLevel() const
void ApplyModFakeDrunkValue(int32 mod, bool apply)
void ReplaceAllBagSlotFlags(uint32 bagIndex, EnumFlag< BagSlotFlags > flags)
uint32 GetCustomizationChoice(uint32 chrCustomizationOptionId) const
void ActivatePvpItemLevels(bool activate)
uint32 GetArmorProficiency() const
GroupReference m_originalGroup
static bool IsEquipmentPos(uint16 pos)
uint8 GetNumRespecs() const
void SetTalentResetTime(time_t time_)
uint32 m_temporaryUnsummonedPetNumber
uint16 GetSkillLineIdByPos(uint32 pos) const
QuestStatusMap m_QuestStatus
uint32 m_ChampioningFaction
std::vector< uint32 > & GetGlyphs(uint8 spec)
void SetCharacterBankTabSettings(uint32 tabId, std::string const &name, std::string const &icon, std::string const &description, BagSlotFlags depositFlags)
WorldLocation const & GetCorpseLocation() const
void ScheduleDelayedOperation(uint32 operation)
bool HasClaimedFreeTransmog() const
void SaveHealthBeforeDuel()
std::unique_ptr< RestMgr > _restMgr
int32 GetFakeDrunkValue() const
uint16 GetSkillRankByPos(uint32 pos) const
bool IsGameMasterAcceptingWhispers() const
void SetSkillMaxRank(uint32 pos, uint16 max)
std::vector< Item * > m_itemUpdateQueue
uint16 GetSkillPermBonusByPos(uint32 pos) const
uint8 GetCUFProfilesCount() const
Retrieves a CUF profile at position 0-4
TeamId GetEffectiveTeamId() const
uint32 GetSaveTimer() const
void SetPlayerFlag(PlayerFlags flags)
bool IsBackpackAutoSortDisabled() const
void SetArenaFaction(uint8 arenaFaction)
void SetPlayerFlagEx(PlayerFlagsEx flags)
BattlegroundTypeId GetBattlegroundTypeId() const
bool HasPlayerFlagEx(PlayerFlagsEx flags) const
void ApplyModTargetResistance(int32 mod, bool apply)
bool IsBeingTeleportedFar() const
std::unordered_map< ObjectGuid, Loot * > m_AELootView
PlayerSocial * GetSocial() const
std::array< int16, MAX_COMBAT_RATING > m_baseRatingValue
void SetPlayerLocalFlag(PlayerLocalFlags flags)
void RemovePlayerFlag(PlayerFlags flags)
ItemDurationList m_itemDuration
std::unique_ptr< Garrison > _garrison
ObjectGuid GetSummonedBattlePetGUID() const
QuestStatusMap & getQuestStatusMap()
uint8 GetGuildRank() const
void SetSkillLineId(uint32 pos, uint16 skillLineId)
void SetGroupUpdateFlag(uint32 flag)
uint32 m_titanGripPenaltySpellId
uint32 GetTemporaryUnsummonedPetNumber() const
void SetSeer(WorldObject *target)
bool ForEachItem(ItemSearchLocation location, T callback) const
Iterate over each item in the player storage.
uint32 GetTotalPlayedTime() const
PetStable const * GetPetStable() const
bool m_MonthlyQuestChanged
bool _advancedCombatLoggingEnabled
void SetModDamageDonePercent(uint8 school, float pct)
RewardedQuestSet const & getRewardedQuests() const
uint8 GetDrunkValue() const
void RemoveBagSlotFlag(uint32 bagIndex, EnumFlag< BagSlotFlags > flags)
void SetNativeGender(Gender gender) override
Gender GetNativeGender() const override
SkillStatusMap mSkillStatus
void SetCharacterBankTabCount(uint8 count)
std::unordered_map< uint32, SeasonalQuestMapByQuest > SeasonalQuestMapByEvent
WorldLocation _corpseLocation
void SetRestThreshold(RestTypes type, uint32 threshold)
void SetAcceptWhispers(bool on)
std::array< ChatFloodThrottle, ChatFloodThrottle::MAX > m_chatFloodData
UF::UpdateField< UF::ActivePlayerData, int32(WowCS::EntityFragment::CGObject), TYPEID_ACTIVE_PLAYER > m_activePlayerData
bool HasRaceChanged() const
ObjectGuid::LowType m_GuildIdInvited
time_t m_lastHonorUpdateTime
bool IsWarModeDesired() const
std::unordered_map< ObjectGuid::LowType, Item * > ItemMap
void SetSkillPermBonus(uint32 pos, uint16 bonus)
static bool IsValidClass(uint8 Class)
void SetInvSlot(uint32 slot, ObjectGuid guid)
GroupReference & GetGroupRef()
GroupReference & GetOriginalGroupRef()
bool CanTameExoticPets() const
bool CanFly() const override
Difficulty m_legacyRaidDifficulty
Group const * GetGroup() const
uint32 GetArenaTeamIdInvited() const
void SetTemporaryUnsummonedPetNumber(uint32 petnumber)
bool IsBackpackSellJunkDisabled() const
Trinity::Containers::FlatSet< uint32 > _playerDataElementsNeedSave
void SetNoRegentCostMask(flag128 mask)
GuidSet m_refundableItems
DFQuestsDoneList m_DFQuests
bool UpdatePosition(Position const &pos, bool teleport=false) override
void ApplyModDamageDonePos(SpellSchools school, int32 mod, bool apply)
uint8 m_movementForceModMagnitudeChanges
void SetBackpackSellJunkDisabled(bool disabled)
uint32 GetDeathTimer() const
bool m_WeeklyQuestChanged
void RemoveGroupUpdateFlag(uint32 flag)
uint8 GetCharacterBankTabCount() const
std::unordered_map< uint32, uint32 > m_recentInstances
uint8 GetBankBagSlotCount() const
bool InBattleground() const
void SetDeveloper(bool on)
void RemovePlayerFlagEx(PlayerFlagsEx flags)
std::set< uint32 > DFQuestsDoneList
void SetGroupInvite(Group *group)
uint32 m_DelayedOperations
void SetPvpTitle(uint8 pvpTitle)
void AddTransmogFlag(uint32 slot, uint32 flag)
void setWeaponChangeTimer(uint32 time)
std::vector< uint32 > const & GetGlyphs(uint8 spec) const
void SetSelection(ObjectGuid const &guid)
Used for serverside target changes, does not apply to players.
PetStable * GetPetStable()
void SetRaidDifficultyID(Difficulty raid_difficulty)
Group * GetOriginalGroup() const
ObjectGuid const & GetLootGUID() const
void SetLootGUID(ObjectGuid const &guid)
void SetBackpackAutoSortDisabled(bool disabled)
uint32 GetBaseSpellPowerBonus() const
Returns base spellpower bonus from spellpower stat on items, without spellpower from intellect stat.
GuidUnorderedSet m_clientGUIDs
void SetKnownTitles(uint32 index, uint64 mask)
SeasonalQuestMapByEvent m_seasonalquests
void RemovePlayerLocalFlag(PlayerLocalFlags flags)
void setRegenTimerCount(uint32 time)
bool HasEnoughMoney(int64 amount) const
void SetAdvancedCombatLogging(bool enabled)
QuestObjectiveStatusMap m_questObjectiveStatus
std::unordered_map< uint32, std::unordered_set< uint32 > > m_overrideSpells
bool HasPendingBind() const
uint8 GetInventorySlotCount() const
std::forward_list< int32 > m_itemPassives
void SetTalentResetCost(uint32 cost)
void RecalculateRating(CombatRating cr)
void SetPrimarySpecialization(uint32 spec)
void SetPetSpellPower(uint32 spellPower)
Trinity::Containers::FlatSet< uint32 > _playerDataFlagsNeedSave
void SetCurrentCombatTraitConfigSubTreeID(int32 traitSubTreeId)
void SetRecentInstance(uint32 mapId, uint32 instanceId)
EnumFlag< BagSlotFlags > GetBagSlotFlags(uint32 bagIndex) const
std::array< uint32, MAX_PLAYED_TIME_INDEX > m_Played_time
time_t GetTalentResetTime() const
ObjectGuid m_playerSharingQuest
bool IsWarModeActive() const
ActionButtonList const & GetActionButtons() const
std::set< uint32 > m_changedTransmogOutfits
PlayerPvpTalentMap & GetPvpTalentMap(uint8 spec)
std::unordered_map< uint32, StoredAuraTeleportLocation > m_storedAuraTeleportLocations
PlayerCurrenciesMap _currencyStorage
void SetNumRespecs(uint8 numRespecs)
Optional< AttackSwingErr > m_swingErrorMsg
int32 GetNewWorldCounter() const
bool m_SeasonalQuestChanged
void SetCurrentBattlePetBreedQuality(uint8 battlePetBreedQuality)
std::array< float, BASEMOD_END > m_auraBaseFlatMod
void ReplaceAllRequiredMountCapabilityFlags(uint8 flags)
void SetAtLoginFlag(AtLoginFlags f)
bool GetCommandStatus(uint32 command) const
WorldSession * GetSession() const
void SetBankTabSettings(UF::MutableFieldReferenceWithChangesMask< UF::BankTabSettings, false > setter, std::string const &name, std::string const &icon, std::string const &description, BagSlotFlags depositFlags)
ZonePVPTypeOverride GetOverrideZonePVPType() const
std::unique_ptr< ReputationMgr > m_reputationMgr
PlayerMails const & GetMails() const
std::unique_ptr< SpellCastRequest > _pendingSpellCastRequest
void SetCommandStatusOn(uint32 command)
UF::DeclinedNames const * GetDeclinedNames() const
int32 GetSpellPenetrationItemMod() const
uint32 GetSharedQuestID() const
JoinedChannelsList m_channels
InventoryResult CanTakeMoreSimilarItems(uint32 entry, uint32 count, uint32 *offendingItemId=nullptr) const
int32 m_environmentalDamageTimer
RestMgr & GetRestMgr() const
TeleportState GetTeleportState() const
uint32 m_currentBuybackSlot
std::unordered_map< int32, PlayerSpellState > m_traitConfigStates
void RemoveFromGroup(RemoveMethod method=GROUP_REMOVEMETHOD_DEFAULT)
void SaveRecallPosition()
bool GetRandomWinner() const
uint8 GetAccountBankTabCount() const
uint32 GetInGameTime() const
void SaveCUFProfile(uint8 id, std::unique_ptr< CUFProfile > profile)
Empties a CUF profile at position 0-4
void SetPassOnGroupLoot(bool bPassOnGroupLoot)
TeleportLocation m_teleport_dest
void ClearWhisperWhiteList()
uint32 GetRecentInstanceId(uint32 mapId) const
std::array< float, MAX_POWERS_PER_CLASS > m_powerFraction
ReputationMgr const & GetReputationMgr() const
bool IsResurrectRequested() const
Difficulty GetDungeonDifficultyID() const
time_t m_nextMailDelivereTime
PlayerSpellMap const & GetSpellMap() const
CinematicMgr * GetCinematicMgr() const
int16 GetSkillTempBonusByPos(uint32 pos) const
static bool IsInventoryPos(uint16 pos)
ObjectGuid m_temporaryUnsummonedBattlePet
void SetLegacyRaidDifficultyID(Difficulty raid_difficulty)
PlayerTalentMap * GetTalentMap(uint8 spec)
std::set< uint32 > QuestSet
void ClearResurrectRequestData()
Difficulty m_dungeonDifficulty
uint32 m_weaponChangeTimer
void AddConditionalTransmog(uint32 itemModifiedAppearanceId)
std::unordered_map< ObjectGuid, Loot * > const & GetAELootView() const
void RemoveTrackCreatureFlag(uint32 flags)
void ReplaceAllPlayerLocalFlags(PlayerLocalFlags flags)
uint32 m_WeaponProficiency
uint32 GetRuneCooldown(uint8 index) const
float GetEmpowerMinHoldStagePercent() const
void ApplyModOverrideAPBySpellPowerPercent(float mod, bool apply)
void ApplyModTargetPhysicalResistance(int32 mod, bool apply)
void SetActiveCombatTraitConfigID(int32 traitConfigId)
void RestoreManaAfterDuel()
void RemoveFromWhisperWhiteList(ObjectGuid guid)
uint32 m_hostileReferenceCheckTimer
void ReplaceAllPlayerFlagsEx(PlayerFlagsEx flags)
void InitTaxiNodesForLevel()
std::array< float, BASEMOD_END > m_auraBasePctMod
static bool IsChildEquipmentPos(uint16 pos)
void RestoreHealthAfterDuel()
void AddAuraVision(PlayerFieldByte2Flags flags)
void SetEmpowerMinHoldStagePercent(float empowerMinHoldStagePercent)
uint32 GetWeaponProficiency() const
void SetHasLevelBoosted()
ObjectGuid _areaSpiritHealerGUID
bool CanAcceptAreaSpiritHealFrom(Unit *spiritHealer) const
bool HasPlayerLocalFlag(PlayerLocalFlags flags) const
std::unique_ptr< ResurrectionData > _resurrectionData
RewardedQuestSet m_RewardedQuests
void SetBankAutoSortDisabled(bool disabled)
SceneMgr const & GetSceneMgr() const
uint32 GetGuildLevel() const
TeleportToOptions m_teleport_options
uint32 m_contestedPvPTimer
void SetActiveTalentGroup(uint8 group)
uint32 GetTalentResetCost() const
void AddUnlockedTransmogOutfit(int32 transmogOutfitIds)
bool IsUsingPvpItemLevels() const
void ApplyModDamageDoneNeg(SpellSchools school, int32 mod, bool apply)
EnchantDurationList m_enchantDuration
void AddIllusionBlock(uint32 blockValue)
void SetCommandStatusOff(uint32 command)
TradeData * GetTradeData() const
ObjectGuid::LowType GetGuildId() const
bool IsReagentBankUnlocked() const
float m_empowerMinHoldStagePercent
CUFProfile * GetCUFProfile(uint8 id) const
Replaces a CUF profile at position 0-4
void SetChampioningFaction(uint32 faction)
void SetMovie(uint32 movie)
bool IsBankAutoSortDisabled() const
TeleportLocation m_recall_location
bool IsGameMaster() const
void SetGuildRank(uint8 rankId)
void AddSelfResSpell(int32 spellId)
bool CanApplyResilience() const override
void SetDuelArbiter(ObjectGuid guid)
void SetPvPDeath(bool on)
void SetOverrideZonePVPType(ZonePVPTypeOverride type)
void SaveCUFProfile(uint8 id, std::nullptr_t)
ObjectGuid::LowType GetGuildIdInvited() const
Optional< ReactStates > GetTemporaryPetReactState() const
TimePoint m_regenInterruptTimestamp
void SetAccountBankTabCount(uint8 count)
uint32 GetLastPetNumber() const
uint8 getCinematic() const
void SetCanDelayTeleport(bool setting)
void SetTarget(ObjectGuid const &) override
uint32 GetXPForNextLevel() const
std::unique_ptr< Runes > m_runes
void RemoveConditionalTransmog(uint32 itemModifiedAppearanceId)
uint32 GetRBGPersonalRating() const
SpecializationInfo _specializationInfo
std::array< MirrorTimer, MIRROR_TIMER_MAX > m_mirrorTimers
std::array< uint8, MAX_MOVE_TYPE > m_forced_speed_changes
std::vector< ItemSetEffect * > ItemSetEff
uint32 GetLootSpecId() const
bool IsMaxHonorLevel() const
bool IsBeingTeleportedNear() const
void SetTransportServerTime(int32 transportServerTime)
time_t m_lastDailyQuestTime
uint32 GetMailSize() const
void SaveManaBeforeDuel()
void SetQuestSharingInfo(ObjectGuid guid, uint32 id)
void AddIllusionFlag(uint32 slot, uint32 flag)
void ClearQuestSharingInfo()
void AddWarbandScenesFlag(uint32 slot, uint32 flag)
std::unordered_set< PetAura const * > m_petAuras
void AddWarbandScenesBlock(uint32 blockValue)
Difficulty m_raidDifficulty
uint8 GetActiveTalentGroup() const
void SetHeirloom(uint32 slot, int32 itemId)
PlayerPvpTalentMap const & GetPvpTalentMap(uint8 spec) const
void SetTrackCreatureFlag(uint32 flags)
void SetDungeonDifficultyID(Difficulty dungeon_difficulty)
EquipmentSetContainer _equipmentSets
void ApplyModDamageDonePercent(SpellSchools school, float pct, bool apply)
std::vector< Item * > & GetItemUpdateQueue()
void AutoStoreLoot(uint32 loot_id, LootStore const &store, ItemContext context=ItemContext::NONE, bool broadcast=false, bool pushed=false, bool createdByPlayer=false)
GuidUnorderedSet m_visibleTransports
Difficulty GetRaidDifficultyID() const
TeleportState m_teleport_state
std::unique_ptr< PlayerAchievementMgr > m_achievementMgr
bool m_customizationsChanged
void SetOverrideSpellsId(int32 overrideSpellsId)
MapReference & GetMapRef()
Garrison * GetGarrison() const
void SetBuybackTimestamp(uint32 slot, time_t timestamp)
PlayerTalentMap const * GetTalentMap(uint8 spec) const
uint32 m_ArenaTeamIdInvited
bool HasLevelBoosted() const
std::unique_ptr< PetStable > m_petStable
uint32 GetBattlegroundId() const
static bool IsValidGender(uint8 Gender)
void AddArmorProficiency(uint32 newflag)
std::list< Channel * > JoinedChannelsList
uint32 GetGroupUpdateFlag() const
PlayerSpellMap & GetSpellMap()
bool IsAdvancedCombatLoggingEnabled() const
std::unordered_map< uint32, time_t > SeasonalQuestMapByQuest
void SetSaveTimer(uint32 timer)
void AddWhisperWhiteList(ObjectGuid guid)
bool GetPassOnGroupLoot() const
void ReplaceAllPlayerFlags(PlayerFlags flags)
uint16 GetSkillMaxRankByPos(uint32 pos) const
void SetChosenTitle(int32 title)
bool HasAtLoginFlag(AtLoginFlags f) const
void RemoveSelfResSpell(int32 spellId)
static bool IsBankPos(uint16 pos)
static bool IsValidRace(uint8 Race)
uint32 m_titanGripArmorSubclasses
Group * GetGroup(Optional< uint8 > partyIndex)
TeleportLocation m_summon_location
ActionButtonList m_actionButtons
bool HasPlayerFlag(PlayerFlags flags) const
std::unique_ptr< DuelInfo > duel
uint8 GetSubGroup() const
bool IsResurrectRequestedBy(ObjectGuid const &guid) const
void SetGuildLevel(uint32 level)
TeleportLocation & GetTeleportDest()
void SetRestState(RestTypes type, PlayerRestState state)
int32 m_spellPenetrationItemMod
void AddToy(int32 itemId, uint32 flags)
void SetFreePrimaryProfessions(uint16 profs)
void SendInitialActionButtons() const
bool isAcceptWhispers() const
size_t GetRewardedQuestCount() const
ObjectGuid GetPlayerSharingQuest() const
std::array< std::unique_ptr< CUFProfile >, MAX_CUF_PROFILES > _CUFProfiles
void SetTaxiCheater(bool on)
uint32 GetChampioningFaction() const
Team GetEffectiveTeam() const
uint16 GetSkillStartingRankByPos(uint32 pos) const
void SetArenaTeamIdInvited(uint32 ArenaTeamId)
void SendMessageToSet(WorldPacket const *data, bool self) const override
void SetVirtualPlayerRealm(uint32 virtualRealmAddress)
uint32 GetLevelPlayedTime() const
void SetSkillRank(uint32 pos, uint16 rank)
void SetLootSpecId(uint32 id)
uint32 m_ArmorProficiency
std::array< GroupUpdateCounter, 2 > m_groupUpdateSequences
bool IsCanDelayTeleport() const
std::unique_ptr< CinematicMgr > _cinematicMgr
bool HasBeenGrantedLevelsFromRaF() const
ObjectGuid const & GetSpiritHealerGUID() const
void SetTeleportState(TeleportState state)
bool CanEnterWater() const override
void AddWeaponProficiency(uint32 newflag)
void SetBuybackPrice(uint32 slot, uint32 price)
void SetMultiActionBars(uint8 mask)
uint32 GetFreePrimaryProfessionPoints() const
void RemoveAuraVision(PlayerFieldByte2Flags flags)
PlayerCreateMode GetCreateMode() const
GuidUnorderedSet m_itemSoulboundTradeable
void SetSkillStep(uint32 pos, uint16 step)
Group * GetGroupInvite() const
void SetRequiredMountCapabilityFlag(uint8 flag)
void SetContestedPvPTimer(uint32 newTime)
void SetAverageItemLevel(float newItemLevel, AvgItemLevelCategory category)
void SetSkillStartingRank(uint32 pos, uint16 starting)
void SetSkillTempBonus(uint32 pos, uint16 bonus)
void SetInGameTime(uint32 time)
void SetGuildIdInvited(ObjectGuid::LowType GuildId)
uint32 GetArenaTeamId(uint8) const
Difficulty GetLegacyRaidDifficultyID() const
void SetDuelTeam(uint32 duelTeam)
Spell * m_spellModTakingSpell
SpellModContainer m_spellMods
void SetBankBagSlotCount(uint8 count)
uint16 GetSkillStepByPos(uint32 pos) const
QuestStatusSaveMap m_QuestStatusSave
void setCinematic(uint8 cine)
void AddHeirloom(int32 itemId, uint32 flags)
void SetLastPetNumber(uint32 petnumber)
QuestStatusSaveMap m_RewardedQuestsSave
uint32 m_titanGripWeaponSubclasses
std::unique_ptr< PlayerMenu > PlayerTalkClass
bool isTaxiCheater() const
bool IsWarModeLocalActive() const
void SetBeenGrantedLevelsFromRaF()
JoinedChannelsList const & GetJoinedChannels() const
WorldLocation const & GetBattlegroundEntryPoint() const
ReputationMgr & GetReputationMgr()
bool IsBeingTeleported() const
uint8 GetOriginalSubGroup() const
std::vector< LootRoll * > m_lootRolls
void SetCustomizations(Trinity::IteratorPair< Iter > customizations, bool markChanged=true)
static bool IsAccountBankPos(uint16 pos)
void SetBagSlotFlag(uint32 bagIndex, EnumFlag< BagSlotFlags > flags)
Optional< ReactStates > m_temporaryPetReactState
bool HasEnoughMoney(uint64 amount) const
void SetVersatilityBonus(float value)
EnumFlag< TeleportToOptions > GetTeleportOptions() const
void AddTransmogBlock(uint32 blockValue)
bool m_itemUpdateQueueBlocked
void SetAccountBankTabSettings(uint32 tabId, std::string const &name, std::string const &icon, std::string const &description, BagSlotFlags depositFlags)
void SetHasClaimedFreeTransmog()
PlayerCreateMode m_createMode
void SetHeirloomFlags(uint32 slot, uint32 flags)
void SetSummonedBattlePetGUID(ObjectGuid guid)
Utility class to enable range for loop syntax for multimap.equal_range uses.
UF::UpdateField< UF::UnitData, int32(WowCS::EntityFragment::CGObject), TYPEID_UNIT > m_unitData
Player session in the World.
std::conditional_t< std::is_base_of_v< HasChangesMaskTag, T >, MutableFieldReferenceWithChangesMask< T, PublicSet >, MutableFieldReferenceNoChangesMask< T, PublicSet > > MutableFieldReference
std::unique_ptr< VignetteData > Create(VignetteEntry const *vignetteData, WorldObject const *owner)
void Update(VignetteData &vignette, WorldObject const *owner)
UpdateCollisionHeightReason
Holder for Battleground data.
Team bgTeam
What side the player will be added to.
BattlegroundTypeId bgTypeID
time_t bgAfkReportedTimer
BattlegroundQueueTypeId queueId
WorldLocation joinPos
From where player entered BG.
Represents a CompactUnitFrame profile.
DuelInfo(Player *opponent, Player *initiator, bool isMounted)
EnchantDuration(Item *_item, EnchantmentSlot _slot, uint32 _leftduration)
Data sent in EquipmentSet related packets.
int32 UpdateSequenceNumber
ItemPosCount(uint16 _pos, uint32 _count)
bool isContainedIn(std::vector< ItemPosCount > const &vec) const
uint32 IncreasedCapQuantity
PlayerCurrencyState state
friend bool operator==(PlayerSpellTrait const &, PlayerSpellTrait const &) noexcept=default
Optional< PlayerSpellTrait > Trait
BattlegroundQueueTypeId bgQueueTypeId
UF::UnitData::Base UnitMask
UF::PlayerData::Base PlayerMask
ValuesUpdateForPlayerWithMaskSender(Player const *owner)
UF::ObjectData::Base ObjectMask
UF::ActivePlayerData::Base ActivePlayerMask
bool IgnoreNestedChangesMask
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetOrientation() const
constexpr float GetPositionZ() const
bool IsInNoPvPArea
Marks if player is in an area which forces PvP flag
bool IsInFFAPvPArea
Marks if player is in a sanctuary or friendly capital city
time_t EndTimer
Marks if player is in an FFAPvP area (such as Gurubashi Arena)
QuestStatusMap::iterator QuestStatusItr
std::deque< uint8 > CooldownOrder
void SetRuneState(uint8 index, bool set=true)
uint32 Cooldown[MAX_RUNES]
SkillStatusData(uint32 _pos, SkillUpdateState _uState)
SpecializationInfo(SpecializationInfo const &)=delete
SpecializationInfo & operator=(SpecializationInfo const &)=delete
SpellFlatModifierByClassMask(SpellModOp _op, uint32 _spellId, Aura *_ownerAura, flag128 _mask)
SpellFlatModifierByLabel(SpellModOp _op, uint32 _spellId, Aura *_ownerAura, uint32 _label)
UF::SpellFlatModByLabel value
SpellModifierByClassMask(SpellModOp _op, SpellModType _type, uint32 _spellId, Aura *_ownerAura, flag128 const &_mask)
bool operator()(SpellModifier const *left, SpellModifier const *right) const
virtual ~SpellModifier()=default
SpellModifier(SpellModOp _op, SpellModType _type, uint32 _spellId, Aura *_ownerAura)
SpellPctModifierByClassMask(SpellModOp _op, uint32 _spellId, Aura *_ownerAura, flag128 _mask)
SpellPctModifierByLabel(SpellModOp _op, uint32 _spellId, Aura *_ownerAura, int32 _label)
UF::SpellPctModByLabel value
enum StoredAuraTeleportLocation::@269 State
Optional< uint32 > InstanceId
Optional< uint32 > LfgDungeonsId
Optional< ObjectGuid > TransportGuid
constexpr bool HasRace(uint32 raceId) const
UpdateField< uint32, 32, 66 > TrackCreatureMask
UpdateField< int32, 102, 111 > WatchedFactionIndex
UpdateField< uint8, 102, 132 > NumBankSlots
DynamicUpdateField< uint64, 0, 7 > KnownTitles
UpdateFieldArray< uint32, 4, 366, 367 > NoReagentCostMask
DynamicUpdateField< uint32, 0, 15 > HeirloomFlags
UpdateField< bool, 0, 3 > BankAutoSortDisabled
UpdateField< uint32, 134, 148 > ActiveCombatTraitConfigID
DynamicUpdateField< uint32, 0, 17 > ToyFlags
UpdateFieldArray< int64, 12, 308, 321 > BuybackTimestamp
UpdateField< int32, 70, 99 > ModTargetResistance
UpdateField< bool, 0, 2 > BackpackSellJunkDisabled
UpdateField< ObjectGuid, 32, 57 > SummonedBattlePetGUID
UpdateField< uint32, 70, 101 > LocalFlags
DynamicUpdateField< UF::BankTabSettings, 32, 48 > CharacterBankTabSettings
DynamicUpdateField< int32, 0, 19 > ConditionalTransmog
DynamicUpdateField< uint32, 0, 23 > WarbandScenes
UpdateFieldArray< uint32, 12, 308, 309 > BuybackPrice
UpdateFieldArray< float, 7, 272, 287 > ModDamageDonePercent
DynamicUpdateField< int32, 0, 16 > Toys
UpdateField< uint8, 102, 133 > NumCharacterBankTabs
DynamicUpdateField< uint32, 0, 18 > Transmog
UpdateFieldArray< uint32, 5, 374, 375 > BagSlotFlags
UpdateFieldArray< int32, 7, 272, 280 > ModDamageDoneNeg
UpdateField< UF::SkillInfo, 32, 63 > Skill
UpdateField< int32, 70, 100 > ModTargetPhysicalResistance
UpdateField< float, 70, 88 > VersatilityBonus
UpdateField< uint8, 134, 156 > RequiredMountCapabilityFlags
UpdateField< uint16, 102, 127 > LootSpecID
UpdateField< int32, 134, 143 > TransportServerTime
UpdateField< uint32, 102, 128 > OverrideZonePVPType
UpdateField< int32, 32, 64 > CharacterPoints
UpdateField< uint8, 134, 135 > NumAccountBankTabs
UpdateField< float, 70, 97 > OverrideSpellPowerByAPPercent
UpdateField< bool, 0, 1 > BackpackAutoSortDisabled
UpdateFieldArray< int32, 7, 272, 273 > ModDamageDonePos
UpdateField< uint8, 102, 104 > MultiActionBars
DynamicUpdateField< uint32, 0, 22 > TransmogIllusions
DynamicUpdateField< UF::BankTabSettings, 32, 49 > AccountBankTabSettings
DynamicUpdateField< int32, 0, 14 > Heirlooms
UpdateField< float, 70, 98 > OverrideAPBySpellPowerPercent
UpdateField< uint8, 102, 124 > AuraVision
UpdateField< uint8, 102, 106 > NumRespecs
UpdateFieldArray< UF::RestInfo, 2, 269, 270 > RestInfo
UpdateFieldArray< ObjectGuid, 105, 163, 164 > InvSlots
DynamicUpdateField< int32, 0, 20 > SelfResSpells
UpdateField< int32, 102, 116 > PetSpellPower
UpdateField< int32, 102, 126 > OverrideSpellsID
UpdateField< int32, -1, 3 > DepositFlags
UpdateField< std::string, -1, 1 > Icon
UpdateField< std::string, -1, 2 > Description
UpdateField< std::string, -1, 0 > Name
uint32 ChrCustomizationChoiceID
uint32 ChrCustomizationOptionID
std::conditional_t< std::is_base_of_v< IsUpdateFieldStructureTag, V >, MutableFieldReference< V, PublicSet >, std::conditional_t< std::is_base_of_v< IsUpdateFieldHolderTag, V >, MutableNestedFieldReference< V, PublicSet >, UpdateFieldSetter< V, PublicSet > > > ModifyValue(UpdateField< V, BlockBit, Bit >(T::*field))
UpdateField< uint8, 32, 33 > CurrentBattlePetBreedQuality
UpdateField< ObjectGuid, 0, 13 > LootTargetGUID
UpdateField< int32, 0, 18 > GuildLevel
UpdateField< uint32, 0, 29 > CurrentSpecID
UpdateField< int32, 0, 26 > PlayerTitle
DynamicUpdateField< UF::ChrCustomizationChoice, 0, 3 > Customizations
UpdateField< int32, 0, 27 > FakeInebriation
UpdateField< uint8, 0, 21 > PvpTitle
UpdateField< ObjectGuid, 0, 9 > DuelArbiter
UpdateFieldArray< float, 6, 249, 250 > AvgItemLevel
UpdateField< uint32, 0, 14 > PlayerFlags
UpdateField< uint8, 0, 22 > ArenaFaction
UpdateField< uint32, 0, 16 > GuildRankID
UpdateField< uint32, 0, 23 > DuelTeam
UpdateField< int32, 0, 30 > CurrentCombatTraitConfigSubTreeID
UpdateField< uint32, 0, 15 > PlayerFlagsEx
UpdateField< uint8, 0, 19 > NativeSex
UpdateField< uint32, 0, 28 > VirtualPlayerRealm
UpdateField< uint32, 0, 1 > Threshold
UpdateField< uint8, 0, 2 > StateID
UpdateFieldArray< uint16, 300, 0, 1201 > SkillMaxRank
UpdateFieldArray< uint16, 300, 0, 1801 > SkillPermBonus
UpdateFieldArray< uint16, 300, 0, 1 > SkillLineID
UpdateFieldArray< int16, 300, 0, 1501 > SkillTempBonus
UpdateFieldArray< uint16, 300, 0, 301 > SkillStep
UpdateFieldArray< uint16, 300, 0, 901 > SkillStartingRank
UpdateFieldArray< uint16, 300, 0, 601 > SkillRank
UpdateField< ObjectGuid, 0, 22 > Target