345#define ACTION_BUTTON_ACTION(X) (uint64(X) & 0x00FFFFFFFFFFFFFF)
346#define ACTION_BUTTON_TYPE(X) ((uint64(X) & 0xFF00000000000000) >> 56)
347#define MAX_ACTION_BUTTON_ACTION_VALUE UI64LIT(0xFFFFFFFFFFFFFF)
371#define MAX_ACTION_BUTTONS 180
416#define MAX_RECHARGING_RUNES 3
544#define DISABLED_MIRROR_TIMER -1
654static_assert(UF::size<decltype(UF::ActivePlayerData::InvSlots)>() ==
PLAYER_SLOT_END);
656#define INVENTORY_SLOT_BAG_0 255
657#define INVENTORY_DEFAULT_SIZE 16
767 bool isContainedIn(std::vector<ItemPosCount>
const& vec)
const;
850#define MAX_PLAYED_TIME_INDEX 2
933#define MAX_PLAYER_SUMMON_DELAY (2*MINUTE)
1042 uint32 fixedScalingLevel,
uint32 artifactKnowledgeLevel,
ItemContext context, std::vector<int32>
const& bonuses)
1137 void CleanupsBeforeDelete(
bool finalCleanup =
true)
override;
1139 void AddToWorld()
override;
1140 void RemoveFromWorld()
override;
1142 void SetObjectScale(
float scale)
override;
1146 bool TeleportToBGEntryPoint();
1148 bool HasSummonPending()
const;
1149 void SendSummonRequestFrom(
Unit* summoner);
1150 void SummonIfPossible(
bool agree);
1156 bool IsImmunedToSpellEffect(
SpellInfo const* spellInfo,
SpellEffectInfo const& spellEffectInfo,
WorldObject const* caster,
bool requireImmunityPurgesEffectAttribute =
false)
const override;
1160 void SendInitialPacketsBeforeAddToMap();
1161 void SendInitialPacketsAfterAddToMap();
1162 void SendSupercededSpell(
uint32 oldSpell,
uint32 newSpell)
const;
1165 bool CanInteractWithQuestGiver(
Object* questGiver)
const;
1174 uint8 GetChatFlags()
const;
1180 void RemoveSocial();
1184 bool ActivateTaxiPathTo(std::vector<uint32>
const& nodes,
Creature* npc =
nullptr,
uint32 spellid = 0,
uint32 preferredMountDisplay = 0);
1185 bool ActivateTaxiPathTo(
uint32 taxi_path_id,
uint32 spellid = 0);
1186 void FinishTaxiFlight();
1187 void CleanupAfterTaxiFlight();
1188 void ContinueTaxiFlight()
const;
1196 bool CanBeGameMaster()
const;
1197 void SetGameMaster(
bool on);
1203 void SetGMVisible(
bool on);
1215 void GiveXP(
uint32 xp,
Unit* victim,
float group_rate=1.0f);
1216 void GiveLevel(
uint8 level);
1217 bool IsMaxLevel()
const;
1219 void InitStatsForLevel(
bool reapplyMods =
false);
1242 Pet* GetPet()
const;
1244 void RemovePet(
Pet* pet,
PetSaveMode mode,
bool returnreagent =
false);
1249 void AddPetAura(
PetAura const* petSpell);
1250 void RemovePetAura(
PetAura const* petSpell);
1262 void TextEmote(std::string_view text,
WorldObject const* =
nullptr,
bool =
false)
override;
1263 void TextEmote(
uint32 textId,
WorldObject const* target =
nullptr,
bool isBossEmote =
false)
override;
1265 void Whisper(std::string_view text,
Language language,
Player* receiver,
bool =
false)
override;
1266 void Whisper(
uint32 textId,
Player* target,
bool isBossWhisper =
false)
override;
1267 void WhisperAddon(std::string
const& text, std::string
const& prefix,
bool isLogged,
Player* receiver);
1269 bool CanUnderstandLanguage(
Language language)
const;
1281 template <
typename T>
1286 if (flag.
HasFlag(ItemSearchLocation::Equipment))
1290 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1295 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1299 if (flag.
HasFlag(ItemSearchLocation::Inventory))
1304 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1309 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1313 if (
Bag* pBag = GetBagByPos(i))
1316 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1320 if (flag.
HasFlag(ItemSearchLocation::Bank))
1324 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1328 if (
Bag* pBag = GetBagByPos(i))
1331 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1335 if (flag.
HasFlag(ItemSearchLocation::ReagentBank))
1338 if (
Bag* bag = GetBagByPos(i))
1341 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1346 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1354 void UpdateAverageItemLevelTotal();
1355 void UpdateAverageItemLevelEquipped();
1359 uint32 GetItemCount(
uint32 item,
bool inBankAlso =
false,
Item* skipItem =
nullptr)
const;
1360 uint32 GetItemCountWithLimitCategory(
uint32 limitCategory,
Item* skipItem =
nullptr)
const;
1363 std::vector<Item*> GetItemListByEntry(
uint32 entry,
bool inBankAlso =
false)
const;
1367 Bag* GetBagByPos(
uint8 slot)
const;
1368 std::vector<Item*> GetCraftingReagentItemsToDeposit();
1369 uint32 GetFreeInventorySpace()
const;
1371 Item* GetShield(
bool useable =
false)
const;
1376 static bool IsInventoryPos(
uint8 bag,
uint8 slot);
1378 static bool IsEquipmentPos(
uint8 bag,
uint8 slot);
1379 static bool IsBagPos(
uint16 pos);
1381 static bool IsBankPos(
uint8 bag,
uint8 slot);
1383 static bool IsReagentBankPos(
uint8 bag,
uint8 slot);
1385 static bool IsChildEquipmentPos(
uint8 bag,
uint8 slot);
1387 bool IsValidPos(
uint8 bag,
uint8 slot,
bool explicit_pos)
const;
1389 void SetInventorySlotCount(
uint8 slots);
1392 bool HasItemCount(
uint32 item,
uint32 count = 1,
bool inBankAlso =
false)
const;
1393 bool HasItemFitToSpellRequirements(
SpellInfo const* spellInfo,
Item const* ignoreItem =
nullptr)
const;
1394 bool CanNoReagentCast(
SpellInfo const* spellInfo)
const;
1397 for (
uint8 i = 0; i < 4; ++i)
1427 void AutoUnequipOffhandIfNeed(
bool force =
false);
1428 void EquipChildItem(
uint8 parentBag,
uint8 parentSlot,
Item* parentItem);
1429 void AutoUnequipChildItem(
Item* parentItem);
1431 void AutoStoreLoot(
uint8 bag,
uint8 slot,
uint32 loot_id,
LootStore const& store,
ItemContext context = ItemContext::NONE,
bool broadcast =
false,
bool createdByPlayer =
false);
1432 void AutoStoreLoot(
uint32 loot_id,
LootStore const& store,
ItemContext context = ItemContext::NONE,
bool broadcast =
false,
bool createdByPlayer =
false) {
AutoStoreLoot(
NULL_BAG,
NULL_SLOT, loot_id, store, context, broadcast, createdByPlayer); }
1442 void SendCurrencies()
const;
1444 void SendPvpRewards()
const;
1454 void ResetCurrencyWeekCap();
1459 uint32 GetCurrencyIncreasedCapQuantity(
uint32 id)
const;
1460 uint32 GetCurrencyMaxQuantity(
CurrencyTypesEntry const* currency,
bool onLoad =
false,
bool onUpdateVersion =
false)
const;
1467 void ApplyEquipCooldown(
Item* pItem);
1468 void QuickEquipItem(
uint16 pos,
Item* pItem);
1469 void VisualizeItem(
uint8 slot,
Item* pItem);
1470 void SetVisibleItemSlot(
uint8 slot,
Item* pItem);
1472 void RemoveItem(
uint8 bag,
uint8 slot,
bool update);
1473 void MoveItemFromInventory(
uint8 bag,
uint8 slot,
bool update);
1475 void MoveItemToInventory(
ItemPosCountVec const& dest,
Item* pItem,
bool update,
bool in_characterInventoryDB =
false);
1477 void RemoveItemDependentAurasAndCasts(
Item* pItem);
1478 void DestroyItem(
uint8 bag,
uint8 slot,
bool update);
1479 uint32 DestroyItemCount(
uint32 item,
uint32 count,
bool update,
bool unequip_check =
false);
1480 void DestroyItemCount(
Item* item,
uint32& count,
bool update);
1481 void DestroyConjuredItems(
bool update);
1482 void DestroyZoneLimitedItem(
bool update,
uint32 new_zone);
1485 void AddItemToBuyBackSlot(
Item* pItem);
1489 void RemoveItemFromBuyBackSlot(
uint32 slot,
bool del);
1497 bool IsUseEquipedWeapon(
bool mainhand)
const;
1498 bool IsTwoHandUsed()
const;
1499 bool IsUsingTwoHandedWeaponInOneHand()
const;
1500 void SendNewItem(
Item* item,
uint32 quantity,
bool received,
bool created,
bool broadcast =
false,
uint32 dungeonEncounterId = 0);
1505 float GetReputationPriceDiscount(
Creature const* creature)
const;
1508 Player* GetTrader()
const;
1510 void TradeCancel(
bool sendback);
1514 void UpdateEnchantTime(
uint32 time);
1515 void UpdateSoulboundTradeItems();
1516 void AddTradeableItem(
Item* item);
1517 void RemoveTradeableItem(
Item* item);
1518 void UpdateItemDuration(
uint32 time,
bool realtimeonly =
false);
1519 void AddEnchantmentDurations(
Item* item);
1520 void RemoveEnchantmentDurations(
Item* item);
1521 void RemoveEnchantmentDurationsReferences(
Item* item);
1524 void ApplyEnchantment(
Item* item,
EnchantmentSlot slot,
bool apply,
bool apply_dur =
true,
bool ignore_condition =
false);
1525 void ApplyEnchantment(
Item* item,
bool apply);
1527 void SendEnchantmentDurations();
1528 void AddItemDurations(
Item* item);
1529 void RemoveItemDurations(
Item* item);
1530 void SendItemDurations();
1539 void PrepareGossipMenu(
WorldObject* source,
uint32 menuId,
bool showQuests =
false);
1551 int32 GetQuestMinLevel(
Quest const* quest)
const;
1552 int32 GetQuestMinLevel(
uint32 contentTuningId)
const;
1553 int32 GetQuestLevel(
Quest const* quest)
const;
1554 int32 GetQuestLevel(
uint32 contentTuningId)
const;
1557 bool IsActiveQuest(
uint32 quest_id)
const;
1559 bool CanSeeStartQuest(
Quest const* quest)
const;
1560 bool CanTakeQuest(
Quest const* quest,
bool msg)
const;
1561 bool CanAddQuest(
Quest const* quest,
bool msg)
const;
1562 bool CanCompleteQuest(
uint32 quest_id,
uint32 ignoredQuestObjectiveId = 0);
1563 bool CanCompleteRepeatableQuest(
Quest const* quest);
1564 bool CanRewardQuest(
Quest const* quest,
bool msg)
const;
1566 void AddQuestAndCheckCompletion(
Quest const* quest,
Object* questGiver);
1567 void AddQuest(
Quest const* quest,
Object* questGiver);
1568 void AbandonQuest(
uint32 quest_id);
1570 void IncompleteQuest(
uint32 quest_id);
1571 uint32 GetQuestMoneyReward(
Quest const* quest)
const;
1574 void RewardQuestPackage(
uint32 questPackageId,
uint32 onlyItemId = 0);
1576 void SetRewardedQuest(
uint32 quest_id);
1577 void FailQuest(
uint32 quest_id);
1578 bool SatisfyQuestSkill(
Quest const* qInfo,
bool msg)
const;
1579 bool SatisfyQuestLevel(
Quest const* qInfo,
bool msg)
const;
1580 bool SatisfyQuestMinLevel(
Quest const* qInfo,
bool msg)
const;
1581 bool SatisfyQuestMaxLevel(
Quest const* qInfo,
bool msg)
const;
1582 bool SatisfyQuestLog(
bool msg)
const;
1583 bool SatisfyQuestDependentQuests(
Quest const* qInfo,
bool msg)
const;
1584 bool SatisfyQuestPreviousQuest(
Quest const* qInfo,
bool msg)
const;
1585 bool SatisfyQuestDependentPreviousQuests(
Quest const* qInfo,
bool msg)
const;
1586 bool SatisfyQuestBreadcrumbQuest(
Quest const* qInfo,
bool msg)
const;
1587 bool SatisfyQuestDependentBreadcrumbQuests(
Quest const* qInfo,
bool msg)
const;
1588 bool SatisfyQuestClass(
Quest const* qInfo,
bool msg)
const;
1589 bool SatisfyQuestRace(
Quest const* qInfo,
bool msg)
const;
1590 bool SatisfyQuestReputation(
Quest const* qInfo,
bool msg)
const;
1591 bool SatisfyQuestStatus(
Quest const* qInfo,
bool msg)
const;
1592 bool SatisfyQuestConditions(
Quest const* qInfo,
bool msg)
const;
1593 bool SatisfyQuestTimed(
Quest const* qInfo,
bool msg)
const;
1594 bool SatisfyQuestExclusiveGroup(
Quest const* qInfo,
bool msg)
const;
1595 bool SatisfyQuestDay(
Quest const* qInfo,
bool msg)
const;
1596 bool SatisfyQuestWeek(
Quest const* qInfo,
bool msg)
const;
1597 bool SatisfyQuestMonth(
Quest const* qInfo,
bool msg)
const;
1598 bool SatisfyQuestSeasonal(
Quest const* qInfo,
bool msg)
const;
1599 bool SatisfyQuestExpansion(
Quest const* qInfo,
bool msg)
const;
1600 bool GiveQuestSourceItem(
Quest const* quest);
1601 bool TakeQuestSourceItem(
uint32 questId,
bool msg);
1602 bool GetQuestRewardStatus(
uint32 quest_id)
const;
1605 void RemoveActiveQuest(
uint32 questId,
bool update =
true);
1606 void RemoveRewardedQuest(
uint32 questId,
bool update =
true);
1607 bool SendQuestUpdate(
uint32 questId,
bool updateVisiblity =
true);
1610 void SetDailyQuestStatus(
uint32 quest_id);
1611 bool IsDailyQuestDone(
uint32 quest_id)
const;
1612 void SetWeeklyQuestStatus(
uint32 quest_id);
1613 void SetMonthlyQuestStatus(
uint32 quest_id);
1614 void SetSeasonalQuestStatus(
uint32 quest_id);
1616 void ResetWeeklyQuestStatus();
1617 void ResetMonthlyQuestStatus();
1618 void ResetSeasonalQuestStatus(
uint16 event_id, time_t eventStartTime);
1626 bool GetQuestSlotObjectiveFlag(
uint16 slot,
int8 objectiveIndex)
const;
1632 void SetQuestSlotEndTime(
uint16 slot, time_t endTime);
1633 void SetQuestSlotAcceptTime(
uint16 slot, time_t acceptTime);
1634 void SetQuestSlotObjectiveFlag(
uint16 slot,
int8 objectiveIndex);
1635 void RemoveQuestSlotObjectiveFlag(
uint16 slot,
int8 objectiveIndex);
1636 void SetQuestCompletedBit(
uint32 questBit,
bool completed);
1639 void AreaExploredOrEventHappens(
uint32 questId);
1642 void ItemRemovedQuestCheck(
uint32 entry,
uint32 count);
1645 void KilledPlayerCredit(
ObjectGuid victimGuid);
1648 void KillCreditCriteriaTreeObjective(
QuestObjective const& questObjective);
1649 void MoneyChanged(
uint64 value);
1651 void CurrencyChanged(
uint32 currencyId,
int32 change);
1653 bool HasQuestForItem(
uint32 itemId)
const;
1654 bool HasQuestForGO(
int32 goId)
const;
1655 void UpdateVisibleGameobjectsOrSpellClicks();
1656 bool CanShareQuest(
uint32 questId)
const;
1662 bool IsQuestObjectiveProgressBarComplete(
uint16 slot,
Quest const* quest)
const;
1663 void SendQuestComplete(
uint32 questId)
const;
1664 void SendQuestReward(
Quest const* quest,
Creature const* questGiver,
uint32 xp,
bool hideChatMessage)
const;
1666 void SendQuestTimerFailed(
uint32 questId)
const;
1667 void SendCanTakeQuestResponse(
QuestFailedReason reason,
bool sendErrorMessage =
true, std::string reasonText =
"")
const;
1668 void SendQuestConfirmAccept(
Quest const* quest,
Player* receiver)
const;
1671 void SendQuestUpdateAddCreditSimple(
QuestObjective const& obj)
const;
1672 void SendQuestUpdateAddPlayer(
Quest const* quest,
uint16 newCount)
const;
1673 void SendQuestGiverStatusMultiple();
1695 if (_CUFProfiles[i])
1700 bool HasPvPForcingQuest()
const;
1707 bool IsLoading()
const override;
1710 static bool LoadPositionFromDB(
uint32& mapid,
float& x,
float& y,
float& z,
float& o,
bool& in_flight,
ObjectGuid guid);
1720 void SaveToDB(
bool create =
false);
1729 static void DeleteFromDB(
ObjectGuid playerguid,
uint32 accountId,
bool updateRealmChars =
true,
bool deleteFinally =
false);
1730 static void DeleteOldCharacters();
1731 static void DeleteOldCharacters(
uint32 keepDays);
1737 void RegenerateAll();
1738 void Regenerate(
Powers power);
1739 void RegenerateHealth();
1744 bool ModifyMoney(
int64 amount,
bool sendError =
true);
1747 void SetMoney(
uint64 value);
1753 bool IsQuestRewarded(
uint32 quest_id)
const;
1755 Unit* GetSelectedUnit()
const;
1756 Player* GetSelectedPlayer()
const;
1762 void SendNewMail()
const;
1763 void UpdateNextMailTimeAndUnreads();
1764 void AddNewMailDeliverTime(time_t deliver_time);
1766 void RemoveMail(
uint64 id);
1783 typedef std::unordered_map<ObjectGuid::LowType, Item*>
ItemMap;
1788 void AddMItem(
Item* it);
1791 void SendOnCancelExpectedVehicleRideAura()
const;
1792 void PetSpellInitialize();
1793 void CharmSpellInitialize();
1794 void PossessSpellInitialize();
1795 void VehicleSpellInitialize();
1796 void SendRemoveControlBar()
const;
1797 bool HasSpell(
uint32 spell)
const override;
1798 bool HasActiveSpell(
uint32 spell)
const;
1800 bool IsSpellFitByClassAndRace(
uint32 spell_id)
const;
1801 bool HandlePassiveSpellLearn(
SpellInfo const* spellInfo);
1803 void SendProficiency(
ItemClass itemClass,
uint32 itemSubclassMask)
const;
1804 void SendKnownSpells();
1805 void SendUnlearnSpells();
1806 bool AddSpell(
uint32 spellId,
bool active,
bool learning,
bool dependent,
bool disabled,
bool loading =
false,
int32 fromSkill = 0,
bool favorite =
false,
Optional<int32> traitDefinitionId = {});
1807 void LearnSpell(
uint32 spell_id,
bool dependent,
int32 fromSkill = 0,
bool suppressMessaging =
false,
Optional<int32> traitDefinitionId = {});
1808 void RemoveSpell(
uint32 spell_id,
bool disabled =
false,
bool learn_low_rank =
true,
bool suppressMessaging =
false);
1809 void ResetSpells(
bool myClassOnly =
false);
1810 void LearnCustomSpells();
1811 void LearnDefaultSkills();
1813 void LearnQuestRewardedSpells();
1814 void LearnQuestRewardedSpells(
Quest const* quest);
1815 void AddTemporarySpell(
uint32 spellId);
1816 void RemoveTemporarySpell(
uint32 spellId);
1818 void AddOverrideSpell(
uint32 overridenSpellId,
uint32 newSpellId);
1819 void RemoveOverrideSpell(
uint32 overridenSpellId,
uint32 newSpellId);
1820 void LearnSpecializationSpells();
1821 void RemoveSpecializationSpells();
1822 void SendSpellCategoryCooldowns()
const;
1823 void SetSpellFavorite(
uint32 spellId,
bool favorite);
1825 void AddStoredAuraTeleportLocation(
uint32 spellId);
1826 void RemoveStoredAuraTeleportLocation(
uint32 spellId);
1829 void SetReputation(
uint32 factionentry,
int32 value);
1831 std::string GetGuildName()
const;
1849 uint32 GetDefaultSpecId()
const;
1851 bool ResetTalents(
bool noCost =
false);
1852 void ResetPvpTalents();
1853 uint32 GetNextResetTalentsCost()
const;
1854 void InitTalentForLevel();
1855 void SendTalentsInfoData();
1858 bool HasTalent(
uint32 spell_id,
uint8 spec)
const;
1860 void ResetTalentSpecialization();
1865 void TogglePvpTalents(
bool enable);
1866 bool HasPvpTalent(
uint32 talentID,
uint8 activeTalentGroup)
const;
1867 void EnablePvpRules(
bool dueToCombat =
false);
1868 void DisablePvpRules();
1869 bool HasPvpRulesEnabled()
const;
1870 bool IsInAreaThatActivatesPvpTalents()
const;
1871 bool IsAreaThatActivatesPvpTalents(
uint32 areaID)
const;
1880 std::vector<uint32>
const&
GetGlyphs(
uint8 spec)
const {
return _specializationInfo.Glyphs[spec]; }
1881 std::vector<uint32>&
GetGlyphs(
uint8 spec) {
return _specializationInfo.Glyphs[spec]; }
1883 void StartLoadingActionButtons(std::function<
void()>&& callback =
nullptr);
1892 void RenameTraitConfig(
int32 editedConfigId, std::string&& newName);
1893 void DeleteTraitConfig(
int32 deletedConfigId);
1894 void ApplyTraitConfig(
int32 configId,
bool apply);
1895 void ApplyTraitEntry(
int32 traitNodeEntryId,
int32 rank,
int32 grantedRanks,
bool apply);
1897 void SetTraitConfigUseStarterBuild(
int32 traitConfigId,
bool useStarterBuild);
1898 void SetTraitConfigUseSharedActionBars(
int32 traitConfigId,
bool usesSharedActionBars,
bool isLastSelectedSavedConfig);
1902 void InitPrimaryProfessions();
1914 void SetSpellModTakingSpell(
Spell* spell,
bool apply);
1915 void SendSpellModifiers()
const;
1917 void RemoveArenaSpellCooldowns(
bool removeActivePetCooldowns =
false);
1920 void UpdatePotionCooldown(
Spell* spell =
nullptr);
1925 _resurrectionData.reset();
1930 if (!IsResurrectRequested())
1933 return !_resurrectionData->GUID.IsEmpty() && _resurrectionData->GUID == guid;
1937 void ResurrectUsingRequestData();
1938 void ResurrectUsingRequestDataImpl();
1949 void RemoveActionButton(
uint8 button);
1952 void SendActionButtons(
uint32 state)
const;
1953 bool IsActionButtonDataValid(
uint8 button,
uint64 action,
uint8 type)
const;
1958 void UpdatePvPState(
bool onlyFFA =
false);
1959 void SetPvP(
bool state)
override;
1960 void UpdatePvP(
bool state,
bool override =
false);
1962 void UpdateArea(
uint32 newArea);
1964 void UpdateZoneDependentAuras(
uint32 zone_id);
1965 void UpdateAreaDependentAuras(
uint32 area_id);
1967 void UpdateAfkReport(time_t currTime);
1968 void UpdatePvPFlag(time_t currTime);
1969 void SetContestedPvP(
Player* attackedPlayer =
nullptr);
1970 void UpdateContestedPvP(
uint32 currTime);
1972 void ResetContestedPvP();
1976 void UpdateDuelFlag(time_t currTime);
1977 void CheckDuelDistance(time_t currTime);
1982 bool IsGroupVisibleFor(
Player const* p)
const;
1983 bool IsInSameGroupWith(
Player const* p)
const;
1984 bool IsInSameRaidWith(
Player const* p)
const;
1985 void UninviteFromGroup();
1988 void SendUpdateToOutOfRangeGroupMembers();
1998 Guild const* GetGuild()
const;
2000 static void RemovePetitionsAndSigns(
ObjectGuid guid);
2005 static void LeaveAllArenaTeams(
ObjectGuid guid);
2026 bool UpdateCraftSkill(
SpellInfo const* spellInfo);
2028 bool UpdateFishingSkill(
int32 expansion);
2030 float GetHealthBonusFromStamina()
const;
2031 Stats GetPrimaryStat()
const;
2033 bool UpdateStats(
Stats stat)
override;
2034 bool UpdateAllStats()
override;
2035 void ApplySpellPenetrationBonus(
int32 amount,
bool apply);
2038 void UpdateResistances(
uint32 school)
override;
2039 void UpdateArmor()
override;
2040 void UpdateMaxHealth()
override;
2041 void UpdateMaxPower(
Powers power)
override;
2043 void UpdateAttackPowerAndDamage(
bool ranged =
false)
override;
2044 void ApplySpellPowerBonus(
int32 amount,
bool apply);
2045 void UpdateSpellDamageAndHealingBonus();
2052 void UpdateAllRatings();
2053 void UpdateMastery();
2054 void UpdateVersatilityDamageDone();
2055 void UpdateHealingDonePercentMod();
2056 bool CanUseMastery()
const;
2058 void CalculateMinMaxDamage(
WeaponAttackType attType,
bool normalized,
bool addTotalPct,
float& minDamage,
float& maxDamage)
const override;
2061 void GetDodgeFromAgility(
float &diminishing,
float &nondiminishing)
const;
2064 float ApplyRatingDiminishing(
CombatRating cr,
float bonusValue)
const;
2073 void UpdateBlockPercentage();
2075 void UpdateAllCritPercentages();
2076 void UpdateParryPercentage();
2077 void UpdateDodgePercentage();
2078 void UpdateMeleeHitChances();
2079 void UpdateRangedHitChances();
2080 void UpdateSpellHitChances();
2082 void UpdateSpellCritChance();
2083 void UpdateCorruption();
2084 void UpdateArmorPenetration(
int32 amount);
2086 void ApplyManaRegenBonus(
int32 amount,
bool apply);
2087 void ApplyHealthRegenBonus(
int32 amount,
bool apply);
2088 void UpdateManaRegen();
2089 void UpdateAllRunesRegen();
2095 Loot* GetLootByWorldObjectGUID(
ObjectGuid const& lootWorldObjectGuid)
const;
2096 std::unordered_map<ObjectGuid, Loot*>
const&
GetAELootView()
const {
return m_AELootView; }
2099 void RemoveLootRoll(
LootRoll* roll);
2101 void RemovedInsignia(
Player* looterPlr);
2107 void BuildValuesCreate(
ByteBuffer* data,
Player const* target)
const override;
2108 void BuildValuesUpdate(
ByteBuffer* data,
Player const* target)
const override;
2109 void ClearUpdateMask(
bool remove)
override;
2112 void BuildCreateUpdateBlockForPlayer(
UpdateData* data,
Player* target)
const override;
2127 void operator()(
Player const* player)
const;
2130 void DestroyForPlayer(
Player* target)
const override;
2133 void SendAttackSwingCantAttack()
const;
2134 void SendAttackSwingCancelAttack()
const;
2135 void SendAttackSwingDeadTarget()
const;
2136 void SendAttackSwingNotInRange()
const;
2137 void SendAttackSwingBadFacingAttack()
const;
2138 void SendAutoRepeatCancel(
Unit* target);
2139 void SendExplorationExperience(
uint32 Area,
uint32 Experience)
const;
2141 void SendDungeonDifficulty(
int32 forcedDifficulty = -1)
const;
2142 void SendRaidDifficulty(
bool legacy,
int32 forcedDifficulty = -1)
const;
2144 void SendResetInstanceSuccess(
uint32 MapId)
const;
2146 void SendResetFailedNotify(
uint32 mapid)
const;
2147 bool IsLockedToDungeonEncounter(
uint32 dungeonEncounterId)
const;
2149 bool UpdatePosition(
float x,
float y,
float z,
float orientation,
bool teleport =
false)
override;
2152 void AtEnterCombat()
override;
2153 void AtExitCombat()
override;
2156 void SendMessageToSetInRange(
WorldPacket const* data,
float dist,
bool self)
const override;
2157 void SendMessageToSetInRange(
WorldPacket const* data,
float dist,
bool self,
bool own_team_only,
bool required3dDist =
false)
const;
2158 void SendMessageToSet(
WorldPacket const* data,
Player const* skipped_rcvr)
const override;
2160 void SendChatMessageToSetInRange(
ChatMsg chatMsg,
Language lanugageId, std::string&& text,
float range);
2162 Corpse* GetCorpse()
const;
2163 void SpawnCorpseBones(
bool triggerSave =
true);
2169 void InitializeSelfResurrectionSpells();
2170 void ResurrectPlayer(
float restore_percent,
bool applySickness =
false);
2171 void BuildPlayerRepop();
2172 void RepopAtGraveyard();
2174 void DurabilityLossAll(
double percent,
bool inventory);
2175 void DurabilityLoss(
Item* item,
double percent);
2176 void DurabilityPointsLossAll(
int32 points,
bool inventory);
2177 void DurabilityPointsLoss(
Item* item,
int32 points);
2179 void DurabilityRepairAll(
bool takeCost,
float discountMod,
bool guildBank);
2180 void DurabilityRepair(
uint16 pos,
bool takeCost,
float discountMod);
2182 void UpdateMirrorTimers();
2183 void StopMirrorTimers();
2188 void JoinedChannel(
Channel* c);
2190 void CleanupChannels();
2191 void UpdateLocalChannels(
uint32 newZone);
2192 void LeaveLFGChannel();
2197 void InitializeSkillFields();
2208 bool HasSkill(
uint32 skill)
const;
2211 int32 FindEmptyProfessionSlotFor(
uint32 skillId)
const;
2229 void ProcessDelayedOperations();
2231 void CheckAreaExploreAndOutdoor(
void);
2237 static uint8 GetFactionGroupForRace(
uint8 race);
2240 void SetFactionForRace(
uint8 race);
2245 void InitDisplayIds();
2247 bool IsAtGroupRewardDistance(
WorldObject const* pRewardSource)
const;
2248 bool IsAtRecruitAFriendDistance(
WorldObject const* pOther)
const;
2249 void RewardPlayerAndGroupAtEvent(
uint32 creature_id,
WorldObject* pRewardSource);
2250 bool isHonorOrXPTarget(
Unit const* victim)
const;
2252 bool GetsRecruitAFriendBonus(
bool forXP);
2257 void RewardReputation(
Unit* victim,
float rate);
2258 void RewardReputation(
Quest const* quest);
2262 void UpdateSkillsForLevel();
2263 void ModifySkillBonus(
uint32 skillid,
int32 val,
bool talent);
2268 void UpdateHonorFields();
2269 bool RewardHonor(
Unit* victim,
uint32 groupsize,
int32 honor = -1,
bool pvptoken =
false);
2270 void ResetHonorStats();
2271 uint32 GetMaxPersonalArenaRatingRequirement(
uint32 minarenaslot)
const;
2280 void AddHonorXP(
uint32 xp);
2281 void SetHonorLevel(
uint8 honorLevel);
2284 void UpdateHonorNextLevel();
2287 void RewardPlayerWithRewardPack(
uint32 rewardPackID);
2288 void RewardPlayerWithRewardPack(
RewardPackEntry const* rewardPackEntry);
2290 void SetDrunkValue(
uint8 newDrunkValue,
uint32 itemId = 0);
2295 uint32 GetCorpseReclaimDelay(
bool pvp)
const;
2296 void UpdateCorpseReclaimDelay();
2297 int32 CalculateCorpseReclaimDelay(
bool load =
false)
const;
2298 void SendCorpseReclaimDelay(
uint32 delay)
const;
2300 float GetBlockPercent(
uint8 attackerLevel)
const override;
2302 void SetCanParry(
bool value);
2304 void SetCanBlock(
bool value);
2306 void SetCanTitanGrip(
bool value,
uint32 penaltySpellId = 0);
2307 void CheckTitanGripPenalty();
2310 void SetRegularAttackTime();
2312 void HandleBaseModFlatValue(
BaseModGroup modGroup,
float amount,
bool apply);
2313 void ApplyBaseModPctValue(
BaseModGroup modGroup,
float pct);
2315 void SetBaseModFlatValue(
BaseModGroup modGroup,
float val);
2316 void SetBaseModPctValue(
BaseModGroup modGroup,
float val);
2322 float GetTotalBaseModValue(
BaseModGroup modGroup)
const;
2324 void _ApplyAllStatBonuses();
2325 void _RemoveAllStatBonuses();
2327 void ResetAllPowers();
2331 void CastAllObtainSpells();
2332 void ApplyItemObtainSpells(
Item* item,
bool apply);
2335 void UpdateAllWeaponDependentCritAuras();
2338 void ApplyItemDependentAuras(
Item* item,
bool apply);
2342 void _ApplyItemMods(
Item* item,
uint8 slot,
bool apply,
bool updateItemAuras =
true);
2343 void _RemoveAllItemMods();
2344 void _ApplyAllItemMods();
2345 void _ApplyAllLevelScaleItemMods(
bool apply);
2346 void ApplyAllAzeriteItemMods(
bool apply);
2347 void ApplyAllAzeriteEmpoweredItemMods(
bool apply);
2348 void _ApplyItemBonuses(
Item* item,
uint8 slot,
bool apply);
2349 void _ApplyWeaponDamage(
uint8 slot,
Item* item,
bool apply);
2350 bool EnchantmentFitsRequirements(
uint32 enchantmentcondition,
int8 slot)
const;
2351 void ToggleMetaGemsActive(
uint8 exceptslot,
bool apply);
2352 void CorrectMetaGemEnchants(
uint8 slot,
bool apply);
2353 void InitDataForForm(
bool reapplyMods =
false);
2355 void ApplyItemEquipSpell(
Item* item,
bool apply,
bool formChange =
false);
2356 void ApplyEquipSpell(
SpellInfo const* spellInfo,
Item* item,
bool apply,
bool formChange =
false);
2357 void UpdateEquipSpellsAtFormChange();
2358 void UpdateItemSetAuras(
bool formChange =
false);
2359 void ApplyArtifactPowers(
Item* item,
bool apply);
2361 void ApplyAzeritePowers(
Item* item,
bool apply);
2367 void CastItemCombatSpell(
DamageInfo const& damageInfo);
2370 void ApplyItemLootedSpell(
Item* item,
bool apply);
2372 void SendEquipmentSetList();
2374 void DeleteEquipmentSet(
uint64 id);
2376 void SendInitWorldStates(
uint32 zoneId,
uint32 areaId);
2377 void SendUpdateWorldState(
uint32 variable,
uint32 value,
bool hidden =
false)
const;
2378 void SendDirectMessage(
WorldPacket const* data)
const;
2380 void SendAurasForTarget(
Unit* target)
const;
2385 void SendLoot(
Loot& loot,
bool aeLooting =
false);
2388 void SendLootReleaseAll()
const;
2390 void SendNotifyLootMoneyRemoved(
ObjectGuid lootObj)
const;
2397 bool InArena()
const;
2403 bool InBattlegroundQueue(
bool ignoreArena =
false)
const;
2413 bool HasFreeBattlegroundQueueId()
const;
2416 bool IsInvitedForBattlegroundInstance(
uint32 instanceId)
const;
2420 void SetBattlegroundEntryPoint();
2422 void SetBGTeam(
uint32 team);
2423 uint32 GetBGTeam()
const;
2426 bool CanJoinToBattleground(
Battleground const* bg)
const;
2427 bool CanReportAfkDueToLimit();
2428 void ReportedAfkBy(
Player* reporter);
2432 bool CanUseBattlegroundObject(
GameObject* gameobject)
const;
2433 bool isTotalImmune()
const;
2434 bool CanCaptureTowerPoint()
const;
2437 void SetRandomWinner(
bool isWinner);
2445 bool IsOutdoorPvPActive()
const;
2451 bool IsImmuneToEnvironmentalDamage()
const;
2479 void SetFallInformation(
uint32 time,
float z);
2482 void SetClientControl(
Unit* target,
bool allowMove);
2485 void SetViewpoint(
WorldObject* target,
bool apply);
2487 void StopCastingCharm();
2488 void StopCastingBindSight()
const;
2495 m_recall_location.WorldRelocate(*
this);
2496 m_recall_instanceId = GetInstanceId();
2498 void Recall() { TeleportTo(m_recall_location, 0, m_recall_instanceId); }
2501 void SendBindPointUpdate()
const;
2514 bool HaveAtClient(
Object const* u)
const;
2516 bool IsNeverVisibleFor(
WorldObject const* seer,
bool allowServersideObjects =
false)
const override;
2518 bool IsVisibleGloballyFor(
Player const* player)
const;
2520 void SendInitialVisiblePackets(
Unit* target)
const;
2521 void OnPhaseChange()
override;
2522 void UpdateObjectVisibility(
bool forced =
true)
override;
2523 void UpdateVisibilityForPlayer();
2526 void UpdateTriggerVisibility();
2529 void UpdateVisibilityOf(T* target,
UpdateData& data, std::set<Unit*>& visibleNow);
2538 bool isUsingLfg()
const;
2539 bool inRandomLfgDungeon()
const;
2547 void UnsummonPetTemporaryIfAny();
2548 void ResummonPetTemporaryUnSummonedIfAny();
2549 bool IsPetNeedBeTemporaryUnsummoned()
const;
2551 void SendCinematicStart(
uint32 CinematicSequenceId)
const;
2552 void SendMovieStart(
uint32 movieId);
2557 void UpdateItemLevelAreaBasedScaling();
2565 void UpdateHomebindTime(
uint32 time);
2572 auto itr = m_recentInstances.find(mapId);
2573 return itr != m_recentInstances.end() ? itr->second : 0;
2578 m_recentInstances[mapId] = instanceId;
2582 void ConfirmPendingBind();
2583 void SetPendingBind(
uint32 instanceId,
uint32 bindTimer);
2585 void SendRaidInfo();
2587 bool CheckInstanceValidity(
bool );
2588 bool CheckInstanceCount(
uint32 instanceId)
const;
2589 void AddInstanceEnterTime(
uint32 instanceId, time_t enterTime);
2605 void SetGroup(
Group* group,
int8 subgroup = -1);
2611 void ResetGroupUpdateSequenceIfNeeded(
Group const* group);
2613 Player* GetNextRandomRaidMember(
float radius);
2617 void SetBattlegroundOrBattlefieldRaid(
Group* group,
int8 subgroup = -1);
2618 void RemoveFromBattlegroundOrBattlefieldRaid();
2622 void SetOriginalGroup(
Group* group,
int8 subgroup = -1);
2630 void SetMap(
Map* map)
override;
2631 void ResetMap()
override;
2633 bool isAllowedToLoot(
Creature const* creature)
const;
2636 uint8 GetRunesState()
const;
2638 uint32 GetRuneBaseCooldown()
const;
2639 void SetRuneCooldown(
uint8 index,
uint32 cooldown);
2640 void ResyncRunes()
const;
2643 void SendRespondInspectAchievements(
Player* player)
const;
2644 uint32 GetAchievementPoints()
const;
2645 std::vector<uint32> GetCompletedAchievementIds()
const;
2646 bool HasAchieved(
uint32 achievementId)
const;
2647 void ResetAchievements();
2653 bool ModifierTreeSatisfied(
uint32 modifierTreeId)
const;
2662 bool CanSeeSpellClickOn(
Creature const* creature)
const;
2668 float GetAverageItemLevel()
const;
2683 std::string GetMapAreaAndZoneString()
const;
2684 std::string GetCoordsMapAreaAndZoneString()
const;
2690 uint8 GetNextVoidStorageFreeSlot()
const;
2691 uint8 GetNumOfVoidStorageFreeSlots()
const;
2693 void DeleteVoidStorageItem(
uint8 slot);
2694 bool SwapVoidStorageItem(
uint8 oldSlot,
uint8 newSlot);
2702 void CreateGarrison(
uint32 garrSiteId);
2703 void DeleteGarrison();
2714 SetUpdateFieldValue(m_values
2721 SetUpdateFieldValue(m_values
2729 bool MeetPlayerCondition(
uint32 conditionId)
const;
2751 if (choiceIndex >= 0)
2752 return m_playerData->Customizations[choiceIndex].ChrCustomizationChoiceID;
2757 template<
typename Iter>
2761 m_customizationsChanged =
true;
2764 for (
auto&& customization : customizations)
2797 int32 index = m_activePlayerData->ConditionalTransmog.FindIndex(itemModifiedAppearanceId);
2808 int32 index = m_activePlayerData->SelfResSpells.FindIndex(spellId);
2841 bool IsInFriendlyArea()
const;
2844 void SetWarModeDesired(
bool enabled);
2848 void SetWarModeLocal(
bool enabled);
2849 bool CanEnableWarModeInArea()
const;
2850 void UpdateWarModeAuras();
2911 void _LoadGlyphAuras();
2977 void HandleSobering();
2980 void HandleDrowning(
uint32 time_diff);
2988 void outDebugValues()
const;
3116 bool CanNeverSee(
WorldObject const* obj)
const override;
3117 bool CanAlwaysSee(
WorldObject const* obj)
const override;
3119 bool IsAlwaysDetectableFor(
WorldObject const* seer)
const override;
3138 void SendRefundInfo(
Item* item);
3139 void RefundItem(
Item* item);
3142 void AdjustQuestObjectiveProgress(
Quest const* quest);
3150 bool IsInstanceLoginGameMasterException()
const;
3205 void _InitHonorLevelOnLoadFromDB(
uint32 honor,
uint32 honorLevel);
3216template<
typename Container>
3219 static_assert(std::is_same<typename Container::value_type, UF::ChrCustomizationChoice>::value,
3220 "MakeChrCustomizationChoiceRange must be used with containers of UF::ChrCustomizationChoice");
3222 return { container.data(), container.data() + container.size() };
uint32 GetBagSize(Bag const *bag)
Definition: Bag.cpp:303
Item * GetItemInBag(Bag const *bag, uint8 slot)
Definition: Bag.cpp:308
#define MAX_CUF_PROFILES
Maximum number of CompactUnitFrames profiles.
Definition: CUFProfile.h:26
Difficulty
Definition: DBCEnums.h:732
CriteriaType
Definition: DBCEnums.h:376
ItemContext
Definition: DBCEnums.h:922
CriteriaStartEvent
Definition: DBCEnums.h:343
CriteriaFailEvent
Definition: DBCEnums.h:322
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
Definition: DatabaseEnvFwd.h:72
SQLTransaction< LoginDatabaseConnection > LoginDatabaseTransaction
Definition: DatabaseEnvFwd.h:74
std::shared_ptr< PreparedResultSet > PreparedQueryResult
Definition: DatabaseEnvFwd.h:48
#define TC_GAME_API
Definition: Define.h:124
uint8_t uint8
Definition: Define.h:145
int64_t int64
Definition: Define.h:138
int16_t int16
Definition: Define.h:140
int8_t int8
Definition: Define.h:141
int32_t int32
Definition: Define.h:139
uint64_t uint64
Definition: Define.h:142
#define UI64LIT(N)
Definition: Define.h:128
uint16_t uint16
Definition: Define.h:144
uint32_t uint32
Definition: Define.h:143
std::unordered_set< uint32 > params[2]
Definition: DisableMgr.cpp:50
uint16 flags
Definition: DisableMgr.cpp:49
#define DEFINE_ENUM_FLAG(enumType)
Definition: EnumFlag.h:26
std::map< uint64, EquipmentSetInfo > EquipmentSetContainer
Definition: EquipmentSet.h:69
std::string GetDebugInfo()
Definition: Errors.cpp:157
#define ASSERT
Definition: Errors.h:68
GroupCategory
Definition: Group.h:109
EnchantmentSlot
Definition: ItemDefines.h:174
@ MAX_ENCHANTMENT_SLOT
Definition: ItemDefines.h:191
InventoryResult
Definition: ItemDefines.h:25
@ EQUIP_ERR_OK
Definition: ItemDefines.h:26
BuyResult
Definition: ItemDefines.h:148
SellResult
Definition: ItemDefines.h:162
uint32 ItemRandomBonusListId
Definition: ItemEnchantmentMgr.h:23
ItemClass
Definition: ItemTemplate.h:401
InventoryType
Definition: ItemTemplate.h:360
void RemoveItemFromUpdateQueueOf(Item *item, Player *player)
Definition: Item.cpp:1217
void AddItemToUpdateQueueOf(Item *item, Player *player)
Definition: Item.cpp:1196
LootItemType
Definition: LootItemType.h:24
LootType
Definition: Loot.h:96
LootError
Definition: Loot.h:135
ZLiquidStatus
Definition: MapDefines.h:125
InstanceResetMethod
Definition: Map.h:805
InstanceResetResult
Definition: Map.h:812
TransferAbortReason
Definition: Map.h:84
std::list< ObjectGuid > GuidList
Definition: ObjectGuid.h:385
std::unordered_set< ObjectGuid > GuidUnorderedSet
Definition: ObjectGuid.h:387
std::set< ObjectGuid > GuidSet
Definition: ObjectGuid.h:384
PlayerCreateMode
Definition: ObjectMgr.h:617
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition: Optional.h:25
PetTameResult
Definition: PetDefines.h:95
PetSaveMode
Definition: PetDefines.h:41
EquipmentSlots
Definition: Player.h:660
@ EQUIPMENT_SLOT_SHOULDERS
Definition: Player.h:664
@ EQUIPMENT_SLOT_BODY
Definition: Player.h:665
@ EQUIPMENT_SLOT_HANDS
Definition: Player.h:671
@ EQUIPMENT_SLOT_FINGER1
Definition: Player.h:672
@ EQUIPMENT_SLOT_NECK
Definition: Player.h:663
@ EQUIPMENT_SLOT_FINGER2
Definition: Player.h:673
@ EQUIPMENT_SLOT_MAINHAND
Definition: Player.h:677
@ EQUIPMENT_SLOT_TABARD
Definition: Player.h:680
@ EQUIPMENT_SLOT_TRINKET1
Definition: Player.h:674
@ EQUIPMENT_SLOT_END
Definition: Player.h:681
@ EQUIPMENT_SLOT_HEAD
Definition: Player.h:662
@ EQUIPMENT_SLOT_LEGS
Definition: Player.h:668
@ EQUIPMENT_SLOT_BACK
Definition: Player.h:676
@ EQUIPMENT_SLOT_OFFHAND
Definition: Player.h:678
@ EQUIPMENT_SLOT_WAIST
Definition: Player.h:667
@ EQUIPMENT_SLOT_FEET
Definition: Player.h:669
@ EQUIPMENT_SLOT_CHEST
Definition: Player.h:666
@ EQUIPMENT_SLOT_WRISTS
Definition: Player.h:670
@ EQUIPMENT_SLOT_TRINKET2
Definition: Player.h:675
@ EQUIPMENT_SLOT_START
Definition: Player.h:661
@ EQUIPMENT_SLOT_RANGED
Definition: Player.h:679
std::deque< Mail * > PlayerMails
Definition: Player.h:134
std::vector< ItemPosCount > ItemPosCountVec
Definition: Player.h:771
ArenaTeamInfoType
Definition: Player.h:809
@ ARENA_TEAM_GAMES_WEEK
Definition: Player.h:813
@ ARENA_TEAM_TYPE
Definition: Player.h:811
@ ARENA_TEAM_ID
Definition: Player.h:810
@ ARENA_TEAM_END
Definition: Player.h:817
@ ARENA_TEAM_PERSONAL_RATING
Definition: Player.h:816
@ ARENA_TEAM_MEMBER
Definition: Player.h:812
@ ARENA_TEAM_WINS_SEASON
Definition: Player.h:815
@ ARENA_TEAM_GAMES_SEASON
Definition: Player.h:814
EnviromentalDamage
Type of environmental damages.
Definition: Player.h:834
@ DAMAGE_SLIME
Definition: Player.h:839
@ DAMAGE_FALL
Definition: Player.h:837
@ DAMAGE_LAVA
Definition: Player.h:838
@ DAMAGE_FALL_TO_VOID
Definition: Player.h:841
@ DAMAGE_DROWNING
Definition: Player.h:836
@ DAMAGE_FIRE
Definition: Player.h:840
@ DAMAGE_EXHAUSTED
Definition: Player.h:835
ReagentSlots
Definition: Player.h:742
@ REAGENT_SLOT_START
Definition: Player.h:743
@ REAGENT_SLOT_END
Definition: Player.h:744
uint32 constexpr PLAYER_MAX_HONOR_LEVEL
Definition: Player.h:1111
NewWorldReason
Definition: Player.h:793
@ NEW_WORLD_NORMAL
Definition: Player.h:794
@ NEW_WORLD_SEAMLESS
Definition: Player.h:795
ReferAFriendError
Definition: Player.h:945
@ ERR_REFER_A_FRIEND_TARGET_TOO_HIGH
Definition: Player.h:948
@ ERR_REFER_A_FRIEND_SUMMON_OFFLINE_S
Definition: Player.h:959
@ ERR_REFER_A_FRIEND_DIFFERENT_FACTION
Definition: Player.h:951
@ ERR_REFER_A_FRIEND_NONE
Definition: Player.h:946
@ ERR_REFER_A_FRIEND_NO_TARGET
Definition: Player.h:954