309#define ACTION_BUTTON_ACTION(X) (uint64(X) & 0x00FFFFFFFFFFFFFF)
310#define ACTION_BUTTON_TYPE(X) ((uint64(X) & 0xFF00000000000000) >> 56)
311#define MAX_ACTION_BUTTON_ACTION_VALUE UI64LIT(0xFFFFFFFFFFFFFF)
335#define MAX_ACTION_BUTTONS 180
380#define MAX_RECHARGING_RUNES 3
508#define DISABLED_MIRROR_TIMER -1
618static_assert(UF::size<decltype(UF::ActivePlayerData::InvSlots)>() ==
PLAYER_SLOT_END);
620#define INVENTORY_SLOT_BAG_0 255
621#define INVENTORY_DEFAULT_SIZE 16
741 bool isContainedIn(std::vector<ItemPosCount>
const& vec)
const;
827#define MAX_PLAYED_TIME_INDEX 2
910#define MAX_PLAYER_SUMMON_DELAY (2*MINUTE)
1020 uint32 fixedScalingLevel,
uint32 artifactKnowledgeLevel,
ItemContext context, std::vector<int32>
const& bonuses)
1116 void CleanupsBeforeDelete(
bool finalCleanup =
true)
override;
1118 void AddToWorld()
override;
1119 void RemoveFromWorld()
override;
1121 void SetObjectScale(
float scale)
override;
1125 bool TeleportToBGEntryPoint();
1127 bool HasSummonPending()
const;
1128 void SendSummonRequestFrom(
Unit* summoner);
1129 void SummonIfPossible(
bool agree);
1135 bool IsImmunedToSpellEffect(
SpellInfo const* spellInfo,
SpellEffectInfo const& spellEffectInfo,
WorldObject const* caster,
bool requireImmunityPurgesEffectAttribute =
false)
const override;
1139 void SendInitialPacketsBeforeAddToMap();
1140 void SendInitialPacketsAfterAddToMap();
1141 void SendSupercededSpell(
uint32 oldSpell,
uint32 newSpell)
const;
1144 bool CanInteractWithQuestGiver(
Object* questGiver)
const;
1153 uint16 GetChatFlags()
const;
1159 void RemoveSocial();
1163 bool ActivateTaxiPathTo(std::vector<uint32>
const& nodes,
Creature* npc =
nullptr,
uint32 spellid = 0,
uint32 preferredMountDisplay = 0);
1164 bool ActivateTaxiPathTo(
uint32 taxi_path_id,
uint32 spellid = 0);
1165 void FinishTaxiFlight();
1166 void CleanupAfterTaxiFlight();
1167 void ContinueTaxiFlight()
const;
1175 bool CanBeGameMaster()
const;
1176 void SetGameMaster(
bool on);
1182 void SetGMVisible(
bool on);
1194 void GiveXP(
uint32 xp,
Unit* victim,
float group_rate=1.0f);
1195 void GiveLevel(
uint8 level);
1196 bool IsMaxLevel()
const;
1198 void InitStatsForLevel(
bool reapplyMods =
false);
1223 void SetStableMaster(
ObjectGuid stableMaster);
1225 Pet* GetPet()
const;
1227 void RemovePet(
Pet* pet,
PetSaveMode mode,
bool returnreagent =
false);
1232 void AddPetAura(
PetAura const* petSpell);
1233 void RemovePetAura(
PetAura const* petSpell);
1245 void TextEmote(std::string_view text,
WorldObject const* =
nullptr,
bool =
false)
override;
1246 void TextEmote(
uint32 textId,
WorldObject const* target =
nullptr,
bool isBossEmote =
false)
override;
1248 void Whisper(std::string_view text,
Language language,
Player* receiver,
bool =
false)
override;
1249 void Whisper(
uint32 textId,
Player* target,
bool isBossWhisper =
false)
override;
1250 void WhisperAddon(std::string
const& text, std::string
const& prefix,
bool isLogged,
Player* receiver);
1252 bool CanUnderstandLanguage(
Language language)
const;
1264 template <
typename T>
1269 if (flag.
HasFlag(ItemSearchLocation::Equipment))
1273 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1278 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1282 if (flag.
HasFlag(ItemSearchLocation::Inventory))
1287 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1292 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1296 if (
Bag* pBag = GetBagByPos(i))
1299 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1303 if (flag.
HasFlag(ItemSearchLocation::Bank))
1307 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1311 if (
Bag* pBag = GetBagByPos(i))
1314 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1318 if (flag.
HasFlag(ItemSearchLocation::ReagentBank))
1321 if (
Bag* bag = GetBagByPos(i))
1324 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1329 if (callback(pItem) == ItemSearchCallbackResult::Stop)
1337 void UpdateAverageItemLevelTotal();
1338 void UpdateAverageItemLevelEquipped();
1342 uint32 GetItemCount(
uint32 item,
bool inBankAlso =
false,
Item* skipItem =
nullptr)
const;
1343 uint32 GetItemCountWithLimitCategory(
uint32 limitCategory,
Item* skipItem =
nullptr)
const;
1346 std::vector<Item*> GetItemListByEntry(
uint32 entry,
bool inBankAlso =
false)
const;
1350 Bag* GetBagByPos(
uint8 slot)
const;
1351 std::vector<Item*> GetCraftingReagentItemsToDeposit();
1352 uint32 GetFreeInventorySpace()
const;
1354 Item* GetShield(
bool useable =
false)
const;
1359 static bool IsInventoryPos(
uint8 bag,
uint8 slot);
1361 static bool IsEquipmentPos(
uint8 bag,
uint8 slot);
1362 static bool IsBagPos(
uint16 pos);
1364 static bool IsBankPos(
uint8 bag,
uint8 slot);
1366 static bool IsReagentBankPos(
uint8 bag,
uint8 slot);
1368 static bool IsChildEquipmentPos(
uint8 bag,
uint8 slot);
1370 bool IsValidPos(
uint8 bag,
uint8 slot,
bool explicit_pos)
const;
1372 void SetInventorySlotCount(
uint8 slots);
1375 bool HasItemCount(
uint32 item,
uint32 count = 1,
bool inBankAlso =
false)
const;
1376 bool HasItemFitToSpellRequirements(
SpellInfo const* spellInfo,
Item const* ignoreItem =
nullptr)
const;
1377 bool CanNoReagentCast(
SpellInfo const* spellInfo)
const;
1380 for (
uint8 i = 0; i < 4; ++i)
1407 ItemContext context = ItemContext::NONE, std::vector<int32>
const* bonusListIDs =
nullptr,
bool addToCollection =
true);
1411 void AutoUnequipOffhandIfNeed(
bool force =
false);
1412 void EquipChildItem(
uint8 parentBag,
uint8 parentSlot,
Item* parentItem);
1413 void AutoUnequipChildItem(
Item* parentItem);
1415 void AutoStoreLoot(
uint8 bag,
uint8 slot,
uint32 loot_id,
LootStore const& store,
ItemContext context = ItemContext::NONE,
bool broadcast =
false,
bool createdByPlayer =
false);
1416 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); }
1426 void SendCurrencies()
const;
1428 void SendPvpRewards()
const;
1438 void ResetCurrencyWeekCap();
1443 uint32 GetCurrencyIncreasedCapQuantity(
uint32 id)
const;
1444 uint32 GetCurrencyMaxQuantity(
CurrencyTypesEntry const* currency,
bool onLoad =
false,
bool onUpdateVersion =
false)
const;
1451 void ApplyEquipCooldown(
Item* pItem);
1452 void QuickEquipItem(
uint16 pos,
Item* pItem);
1453 void VisualizeItem(
uint8 slot,
Item* pItem);
1454 void SetVisibleItemSlot(
uint8 slot,
Item* pItem);
1456 void RemoveItem(
uint8 bag,
uint8 slot,
bool update);
1457 void MoveItemFromInventory(
uint8 bag,
uint8 slot,
bool update);
1459 void MoveItemToInventory(
ItemPosCountVec const& dest,
Item* pItem,
bool update,
bool in_characterInventoryDB =
false);
1461 void RemoveItemDependentAurasAndCasts(
Item* pItem);
1462 void DestroyItem(
uint8 bag,
uint8 slot,
bool update);
1463 uint32 DestroyItemCount(
uint32 item,
uint32 count,
bool update,
bool unequip_check =
false);
1464 void DestroyItemCount(
Item* item,
uint32& count,
bool update);
1465 void DestroyConjuredItems(
bool update);
1466 void DestroyZoneLimitedItem(
bool update,
uint32 new_zone);
1469 void AddItemToBuyBackSlot(
Item* pItem);
1473 void RemoveItemFromBuyBackSlot(
uint32 slot,
bool del);
1481 bool IsUseEquipedWeapon(
bool mainhand)
const;
1482 bool IsTwoHandUsed()
const;
1483 bool IsUsingTwoHandedWeaponInOneHand()
const;
1484 void SendNewItem(
Item* item,
uint32 quantity,
bool received,
bool created,
bool broadcast =
false,
uint32 dungeonEncounterId = 0);
1489 float GetReputationPriceDiscount(
Creature const* creature)
const;
1492 Player* GetTrader()
const;
1494 void TradeCancel(
bool sendback);
1498 void UpdateEnchantTime(
uint32 time);
1499 void UpdateSoulboundTradeItems();
1500 void AddTradeableItem(
Item* item);
1501 void RemoveTradeableItem(
Item* item);
1502 void UpdateItemDuration(
uint32 time,
bool realtimeonly =
false);
1503 void AddEnchantmentDurations(
Item* item);
1504 void RemoveEnchantmentDurations(
Item* item);
1505 void RemoveEnchantmentDurationsReferences(
Item* item);
1508 void ApplyEnchantment(
Item* item,
EnchantmentSlot slot,
bool apply,
bool apply_dur =
true,
bool ignore_condition =
false);
1509 void ApplyEnchantment(
Item* item,
bool apply);
1511 void SendEnchantmentDurations();
1512 void AddItemDurations(
Item* item);
1513 void RemoveItemDurations(
Item* item);
1514 void SendItemDurations();
1523 void PrepareGossipMenu(
WorldObject* source,
uint32 menuId,
bool showQuests =
false);
1535 int32 GetQuestMinLevel(
Quest const* quest)
const;
1536 int32 GetQuestMinLevel(
uint32 contentTuningId)
const;
1537 int32 GetQuestLevel(
Quest const* quest)
const;
1538 int32 GetQuestLevel(
uint32 contentTuningId)
const;
1541 bool IsActiveQuest(
uint32 quest_id)
const;
1542 Quest const* GetNextQuest(
Object const* questGiver,
Quest const* quest)
const;
1543 bool CanSeeStartQuest(
Quest const* quest)
const;
1544 bool CanTakeQuest(
Quest const* quest,
bool msg)
const;
1545 bool CanAddQuest(
Quest const* quest,
bool msg)
const;
1546 bool CanCompleteQuest(
uint32 quest_id,
uint32 ignoredQuestObjectiveId = 0);
1547 bool CanCompleteRepeatableQuest(
Quest const* quest);
1548 bool CanRewardQuest(
Quest const* quest,
bool msg)
const;
1550 void AddQuestAndCheckCompletion(
Quest const* quest,
Object* questGiver);
1551 void AddQuest(
Quest const* quest,
Object* questGiver);
1552 void AbandonQuest(
uint32 quest_id);
1554 void IncompleteQuest(
uint32 quest_id);
1555 uint32 GetQuestMoneyReward(
Quest const* quest)
const;
1560 void SetRewardedQuest(
uint32 quest_id);
1561 void FailQuest(
uint32 quest_id);
1563 bool SatisfyQuestSkill(
Quest const* qInfo,
bool msg)
const;
1564 bool SatisfyQuestLevel(
Quest const* qInfo,
bool msg)
const;
1565 bool SatisfyQuestMinLevel(
Quest const* qInfo,
bool msg)
const;
1566 bool SatisfyQuestMaxLevel(
Quest const* qInfo,
bool msg)
const;
1567 bool SatisfyQuestLog(
bool msg)
const;
1568 bool SatisfyQuestDependentQuests(
Quest const* qInfo,
bool msg)
const;
1569 bool SatisfyQuestPreviousQuest(
Quest const* qInfo,
bool msg)
const;
1570 bool SatisfyQuestDependentPreviousQuests(
Quest const* qInfo,
bool msg)
const;
1571 bool SatisfyQuestBreadcrumbQuest(
Quest const* qInfo,
bool msg)
const;
1572 bool SatisfyQuestDependentBreadcrumbQuests(
Quest const* qInfo,
bool msg)
const;
1573 bool SatisfyQuestClass(
Quest const* qInfo,
bool msg)
const;
1574 bool SatisfyQuestRace(
Quest const* qInfo,
bool msg)
const;
1575 bool SatisfyQuestReputation(
Quest const* qInfo,
bool msg)
const;
1576 bool SatisfyQuestStatus(
Quest const* qInfo,
bool msg)
const;
1577 bool SatisfyQuestConditions(
Quest const* qInfo,
bool msg)
const;
1578 bool SatisfyQuestTimed(
Quest const* qInfo,
bool msg)
const;
1579 bool SatisfyQuestExclusiveGroup(
Quest const* qInfo,
bool msg)
const;
1580 bool SatisfyQuestDay(
Quest const* qInfo,
bool msg)
const;
1581 bool SatisfyQuestWeek(
Quest const* qInfo,
bool msg)
const;
1582 bool SatisfyQuestMonth(
Quest const* qInfo,
bool msg)
const;
1583 bool SatisfyQuestSeasonal(
Quest const* qInfo,
bool msg)
const;
1584 bool SatisfyQuestExpansion(
Quest const* qInfo,
bool msg)
const;
1585 bool GiveQuestSourceItem(
Quest const* quest);
1586 bool TakeQuestSourceItem(
uint32 questId,
bool msg);
1587 bool GetQuestRewardStatus(
uint32 quest_id)
const;
1590 void RemoveActiveQuest(
uint32 questId,
bool update =
true);
1591 void RemoveRewardedQuest(
uint32 questId,
bool update =
true);
1592 void SendQuestUpdate(
uint32 questId);
1595 void SetDailyQuestStatus(
uint32 quest_id);
1596 bool IsDailyQuestDone(
uint32 quest_id)
const;
1597 void SetWeeklyQuestStatus(
uint32 quest_id);
1598 void SetMonthlyQuestStatus(
uint32 quest_id);
1599 void SetSeasonalQuestStatus(
uint32 quest_id);
1601 void ResetWeeklyQuestStatus();
1602 void ResetMonthlyQuestStatus();
1603 void ResetSeasonalQuestStatus(
uint16 event_id, time_t eventStartTime);
1610 bool GetQuestSlotObjectiveFlag(
uint16 slot,
int8 objectiveIndex)
const;
1616 void SetQuestSlotEndTime(
uint16 slot, time_t endTime);
1617 void SetQuestSlotObjectiveFlag(
uint16 slot,
int8 objectiveIndex);
1618 void RemoveQuestSlotObjectiveFlag(
uint16 slot,
int8 objectiveIndex);
1619 void SetQuestCompletedBit(
uint32 questBit,
bool completed);
1622 void AreaExploredOrEventHappens(
uint32 questId);
1625 void ItemRemovedQuestCheck(
uint32 entry,
uint32 count);
1628 void KilledPlayerCredit(
ObjectGuid victimGuid);
1631 void KillCreditCriteriaTreeObjective(
QuestObjective const& questObjective);
1632 void MoneyChanged(
uint64 value);
1634 void CurrencyChanged(
uint32 currencyId,
int32 change);
1636 bool HasQuestForItem(
uint32 itemId)
const;
1637 bool HasQuestForGO(
int32 goId)
const;
1638 void UpdateVisibleGameobjectsOrSpellClicks();
1639 bool CanShareQuest(
uint32 questId)
const;
1645 bool IsQuestObjectiveProgressBarComplete(
uint16 slot,
Quest const* quest)
const;
1646 void SendQuestComplete(
uint32 questId)
const;
1647 void SendQuestReward(
Quest const* quest,
Creature const* questGiver,
uint32 xp,
bool hideChatMessage)
const;
1649 void SendQuestTimerFailed(
uint32 questId)
const;
1650 void SendCanTakeQuestResponse(
QuestFailedReason reason,
bool sendErrorMessage =
true, std::string reasonText =
"")
const;
1651 void SendQuestConfirmAccept(
Quest const* quest,
Player* receiver)
const;
1654 void SendQuestUpdateAddCreditSimple(
QuestObjective const& obj)
const;
1655 void SendQuestUpdateAddPlayer(
Quest const* quest,
uint16 newCount)
const;
1656 void SendQuestGiverStatusMultiple();
1678 if (_CUFProfiles[i])
1683 bool HasPvPForcingQuest()
const;
1690 bool IsLoading()
const override;
1693 static bool LoadPositionFromDB(
uint32& mapid,
float& x,
float& y,
float& z,
float& o,
bool& in_flight,
ObjectGuid guid);
1703 void SaveToDB(
bool create =
false);
1712 static void DeleteFromDB(
ObjectGuid playerguid,
uint32 accountId,
bool updateRealmChars =
true,
bool deleteFinally =
false);
1713 static void DeleteOldCharacters();
1714 static void DeleteOldCharacters(
uint32 keepDays);
1720 void RegenerateAll();
1721 void Regenerate(
Powers power);
1722 void InterruptPowerRegen(
Powers power);
1723 void RegenerateHealth();
1728 bool ModifyMoney(
int64 amount,
bool sendError =
true);
1731 void SetMoney(
uint64 value);
1737 bool IsQuestRewarded(
uint32 quest_id)
const;
1739 Unit* GetSelectedUnit()
const;
1740 Player* GetSelectedPlayer()
const;
1746 void SendNewMail()
const;
1747 void UpdateNextMailTimeAndUnreads();
1748 void AddNewMailDeliverTime(time_t deliver_time);
1750 void RemoveMail(
uint64 id);
1767 typedef std::unordered_map<ObjectGuid::LowType, Item*>
ItemMap;
1772 void AddMItem(
Item* it);
1775 void SendOnCancelExpectedVehicleRideAura()
const;
1776 void PetSpellInitialize();
1777 void CharmSpellInitialize();
1778 void PossessSpellInitialize();
1779 void VehicleSpellInitialize();
1780 void SendRemoveControlBar()
const;
1781 bool HasSpell(
uint32 spell)
const override;
1782 bool HasActiveSpell(
uint32 spell)
const;
1784 bool IsSpellFitByClassAndRace(
uint32 spell_id)
const;
1785 bool HandlePassiveSpellLearn(
SpellInfo const* spellInfo);
1787 void SendProficiency(
ItemClass itemClass,
uint32 itemSubclassMask)
const;
1788 void SendKnownSpells();
1789 void SendUnlearnSpells();
1790 bool AddSpell(
uint32 spellId,
bool active,
bool learning,
bool dependent,
bool disabled,
bool loading =
false,
int32 fromSkill = 0,
bool favorite =
false,
Optional<int32> traitDefinitionId = {});
1791 void LearnSpell(
uint32 spell_id,
bool dependent,
int32 fromSkill = 0,
bool suppressMessaging =
false,
Optional<int32> traitDefinitionId = {});
1792 void RemoveSpell(
uint32 spell_id,
bool disabled =
false,
bool learn_low_rank =
true,
bool suppressMessaging =
false);
1793 void ResetSpells(
bool myClassOnly =
false);
1794 void LearnCustomSpells();
1795 void LearnDefaultSkills();
1797 void LearnQuestRewardedSpells();
1798 void LearnQuestRewardedSpells(
Quest const* quest);
1799 void AddTemporarySpell(
uint32 spellId);
1800 void RemoveTemporarySpell(
uint32 spellId);
1802 void AddOverrideSpell(
uint32 overridenSpellId,
uint32 newSpellId);
1803 void RemoveOverrideSpell(
uint32 overridenSpellId,
uint32 newSpellId);
1804 void LearnSpecializationSpells();
1805 void RemoveSpecializationSpells();
1806 void AddSpellCategoryCooldownMod(
int32 spellCategoryId,
int32 mod);
1807 void RemoveSpellCategoryCooldownMod(
int32 spellCategoryId,
int32 mod);
1808 void SetSpellFavorite(
uint32 spellId,
bool favorite);
1810 void AddStoredAuraTeleportLocation(
uint32 spellId);
1811 void RemoveStoredAuraTeleportLocation(
uint32 spellId);
1814 void SetReputation(
uint32 factionentry,
int32 value);
1816 std::string GetGuildName()
const;
1834 uint32 GetDefaultSpecId()
const;
1837 bool ResetTalents(
bool noCost =
false);
1838 void ResetPvpTalents();
1839 uint32 GetNextResetTalentsCost()
const;
1840 void InitTalentForLevel();
1841 void SendTalentsInfoData();
1844 bool HasTalent(
uint32 spell_id,
uint8 spec)
const;
1846 void ResetTalentSpecialization();
1851 void TogglePvpTalents(
bool enable);
1852 bool HasPvpTalent(
uint32 talentID,
uint8 activeTalentGroup)
const;
1853 void EnablePvpRules(
bool dueToCombat =
false);
1854 void DisablePvpRules();
1855 bool HasPvpRulesEnabled()
const;
1856 bool IsInAreaThatActivatesPvpTalents()
const;
1857 bool IsAreaThatActivatesPvpTalents(
uint32 areaID)
const;
1866 std::vector<uint32>
const&
GetGlyphs(
uint8 spec)
const {
return _specializationInfo.Glyphs[spec]; }
1867 std::vector<uint32>&
GetGlyphs(
uint8 spec) {
return _specializationInfo.Glyphs[spec]; }
1869 void StartLoadingActionButtons(std::function<
void()>&& callback =
nullptr);
1878 void RenameTraitConfig(
int32 editedConfigId, std::string&& newName);
1879 void DeleteTraitConfig(
int32 deletedConfigId);
1880 void ApplyTraitConfig(
int32 configId,
bool apply);
1881 void ApplyTraitEntry(
int32 traitNodeEntryId,
int32 rank,
int32 grantedRanks,
bool apply);
1883 void SetTraitConfigUseStarterBuild(
int32 traitConfigId,
bool useStarterBuild);
1884 void SetTraitConfigUseSharedActionBars(
int32 traitConfigId,
bool usesSharedActionBars,
bool isLastSelectedSavedConfig);
1888 void InitPrimaryProfessions();
1900 void SetSpellModTakingSpell(
Spell* spell,
bool apply);
1901 void SendSpellModifiers()
const;
1903 void RemoveArenaSpellCooldowns(
bool removeActivePetCooldowns =
false);
1906 void UpdatePotionCooldown(
Spell* spell =
nullptr);
1911 _resurrectionData.reset();
1916 if (!IsResurrectRequested())
1919 return !_resurrectionData->GUID.IsEmpty() && _resurrectionData->GUID == guid;
1923 void ResurrectUsingRequestData();
1924 void ResurrectUsingRequestDataImpl();
1935 void RemoveActionButton(
uint8 button);
1938 void SendActionButtons(
uint32 state)
const;
1939 bool IsActionButtonDataValid(
uint8 button,
uint64 action,
uint8 type)
const;
1944 void UpdatePvPState(
bool onlyFFA =
false);
1945 void SetPvP(
bool state)
override;
1946 void UpdatePvP(
bool state,
bool override =
false);
1948 void UpdateArea(
uint32 newArea);
1950 void UpdateZoneDependentAuras(
uint32 zone_id);
1951 void UpdateAreaDependentAuras(
uint32 area_id);
1953 void UpdateAfkReport(time_t currTime);
1954 void UpdatePvPFlag(time_t currTime);
1955 void SetContestedPvP(
Player* attackedPlayer =
nullptr);
1956 void UpdateContestedPvP(
uint32 currTime);
1958 void ResetContestedPvP();
1962 void UpdateDuelFlag(time_t currTime);
1963 void CheckDuelDistance(time_t currTime);
1968 bool IsGroupVisibleFor(
Player const* p)
const;
1969 bool IsInSameGroupWith(
Player const* p)
const;
1970 bool IsInSameRaidWith(
Player const* p)
const;
1971 void UninviteFromGroup();
1974 void SendUpdateToOutOfRangeGroupMembers();
1984 Guild const* GetGuild()
const;
1986 static void RemovePetitionsAndSigns(
ObjectGuid guid);
1991 static void LeaveAllArenaTeams(
ObjectGuid guid);
2012 bool UpdateCraftSkill(
SpellInfo const* spellInfo);
2014 bool UpdateFishingSkill(
int32 expansion);
2016 float GetHealthBonusFromStamina()
const;
2017 Stats GetPrimaryStat()
const;
2019 bool UpdateStats(
Stats stat)
override;
2020 bool UpdateAllStats()
override;
2021 void ApplySpellPenetrationBonus(
int32 amount,
bool apply);
2024 void UpdateResistances(
uint32 school)
override;
2025 void UpdateArmor()
override;
2026 void UpdateMaxHealth()
override;
2027 void UpdateMaxPower(
Powers power)
override;
2029 void UpdateAttackPowerAndDamage(
bool ranged =
false)
override;
2030 void ApplySpellPowerBonus(
int32 amount,
bool apply);
2031 void UpdateSpellDamageAndHealingBonus();
2038 void UpdateAllRatings();
2039 void UpdateMastery();
2040 void UpdateVersatilityDamageDone();
2041 void UpdateHealingDonePercentMod();
2042 bool CanUseMastery()
const;
2044 void CalculateMinMaxDamage(
WeaponAttackType attType,
bool normalized,
bool addTotalPct,
float& minDamage,
float& maxDamage)
const override;
2047 void GetDodgeFromAgility(
float &diminishing,
float &nondiminishing)
const;
2050 float ApplyRatingDiminishing(
CombatRating cr,
float bonusValue)
const;
2059 void UpdateBlockPercentage();
2061 void UpdateAllCritPercentages();
2062 void UpdateParryPercentage();
2063 void UpdateDodgePercentage();
2064 void UpdateMeleeHitChances();
2065 void UpdateRangedHitChances();
2066 void UpdateSpellHitChances();
2068 void UpdateSpellCritChance();
2069 void UpdateCorruption();
2070 void UpdateArmorPenetration(
int32 amount);
2072 void ApplyManaRegenBonus(
int32 amount,
bool apply);
2073 void ApplyHealthRegenBonus(
int32 amount,
bool apply);
2074 void UpdateManaRegen();
2075 void UpdateAllRunesRegen();
2081 Loot* GetLootByWorldObjectGUID(
ObjectGuid const& lootWorldObjectGuid)
const;
2082 std::unordered_map<ObjectGuid, Loot*>
const&
GetAELootView()
const {
return m_AELootView; }
2085 void RemoveLootRoll(
LootRoll* roll);
2087 void RemovedInsignia(
Player* looterPlr);
2093 void BuildValuesCreate(
ByteBuffer* data,
Player const* target)
const override;
2094 void BuildValuesUpdate(
ByteBuffer* data,
Player const* target)
const override;
2095 void ClearUpdateMask(
bool remove)
override;
2098 void BuildCreateUpdateBlockForPlayer(
UpdateData* data,
Player* target)
const override;
2113 void operator()(
Player const* player)
const;
2116 void DestroyForPlayer(
Player* target)
const override;
2119 void SendAttackSwingCantAttack()
const;
2120 void SendAttackSwingCancelAttack()
const;
2121 void SendAttackSwingDeadTarget()
const;
2122 void SendAttackSwingNotInRange()
const;
2123 void SendAttackSwingBadFacingAttack()
const;
2124 void SendAutoRepeatCancel(
Unit* target);
2125 void SendExplorationExperience(
uint32 Area,
uint32 Experience)
const;
2127 void SendDungeonDifficulty(
int32 forcedDifficulty = -1)
const;
2128 void SendRaidDifficulty(
bool legacy,
int32 forcedDifficulty = -1)
const;
2130 void SendResetInstanceSuccess(
uint32 MapId)
const;
2132 void SendResetFailedNotify(
uint32 mapid)
const;
2133 bool IsLockedToDungeonEncounter(
uint32 dungeonEncounterId)
const;
2134 bool IsLockedToDungeonEncounter(
uint32 dungeonEncounterId,
Difficulty difficulty)
const;
2136 bool UpdatePosition(
float x,
float y,
float z,
float orientation,
bool teleport =
false)
override;
2139 void AtEnterCombat()
override;
2140 void AtExitCombat()
override;
2143 void SendMessageToSetInRange(
WorldPacket const* data,
float dist,
bool self)
const override;
2144 void SendMessageToSetInRange(
WorldPacket const* data,
float dist,
bool self,
bool own_team_only,
bool required3dDist =
false)
const;
2145 void SendMessageToSet(
WorldPacket const* data,
Player const* skipped_rcvr)
const override;
2147 void SendChatMessageToSetInRange(
ChatMsg chatMsg,
Language lanugageId, std::string&& text,
float range);
2149 Corpse* GetCorpse()
const;
2150 void SpawnCorpseBones(
bool triggerSave =
true);
2156 void InitializeSelfResurrectionSpells();
2157 void ResurrectPlayer(
float restore_percent,
bool applySickness =
false);
2158 void BuildPlayerRepop();
2159 void RepopAtGraveyard();
2161 void DurabilityLossAll(
double percent,
bool inventory);
2162 void DurabilityLoss(
Item* item,
double percent);
2163 void DurabilityPointsLossAll(
int32 points,
bool inventory);
2164 void DurabilityPointsLoss(
Item* item,
int32 points);
2166 void DurabilityRepairAll(
bool takeCost,
float discountMod,
bool guildBank);
2167 void DurabilityRepair(
uint16 pos,
bool takeCost,
float discountMod);
2169 void UpdateMirrorTimers();
2170 void StopMirrorTimers();
2175 void JoinedChannel(
Channel* c);
2177 void CleanupChannels();
2178 void UpdateLocalChannels(
uint32 newZone);
2179 void LeaveLFGChannel();
2184 void InitializeSkillFields();
2195 bool HasSkill(
uint32 skill)
const;
2198 int32 FindEmptyProfessionSlotFor(
uint32 skillId)
const;
2216 void ProcessDelayedOperations();
2218 void CheckAreaExploreAndOutdoor(
void);
2224 static uint8 GetFactionGroupForRace(
uint8 race);
2227 void SetFactionForRace(
uint8 race);
2232 void InitDisplayIds();
2234 bool IsAtGroupRewardDistance(
WorldObject const* pRewardSource)
const;
2235 bool IsAtRecruitAFriendDistance(
WorldObject const* pOther)
const;
2236 void RewardPlayerAndGroupAtEvent(
uint32 creature_id,
WorldObject* pRewardSource);
2237 bool isHonorOrXPTarget(
Unit const* victim)
const;
2239 bool GetsRecruitAFriendBonus(
bool forXP);
2244 void RewardReputation(
Unit* victim,
float rate);
2245 void RewardReputation(
Quest const* quest);
2249 void UpdateSkillsForLevel();
2250 void ModifySkillBonus(
uint32 skillid,
int32 val,
bool talent);
2255 void UpdateHonorFields();
2256 bool RewardHonor(
Unit* victim,
uint32 groupsize,
int32 honor = -1,
bool pvptoken =
false);
2257 void ResetHonorStats();
2258 uint32 GetMaxPersonalArenaRatingRequirement(
uint32 minarenaslot)
const;
2267 void AddHonorXP(
uint32 xp);
2268 void SetHonorLevel(
uint8 honorLevel);
2271 void UpdateHonorNextLevel();
2274 void RewardPlayerWithRewardPack(
uint32 rewardPackID);
2275 void RewardPlayerWithRewardPack(
RewardPackEntry const* rewardPackEntry);
2277 void SetDrunkValue(
uint8 newDrunkValue,
uint32 itemId = 0);
2282 uint32 GetCorpseReclaimDelay(
bool pvp)
const;
2283 void UpdateCorpseReclaimDelay();
2284 int32 CalculateCorpseReclaimDelay(
bool load =
false)
const;
2285 void SendCorpseReclaimDelay(
uint32 delay)
const;
2287 float GetBlockPercent(
uint8 attackerLevel)
const override;
2289 void SetCanParry(
bool value);
2291 void SetCanBlock(
bool value);
2293 void SetCanTitanGrip(
bool value,
uint32 penaltySpellId = 0);
2294 void CheckTitanGripPenalty();
2297 void SetRegularAttackTime();
2299 void HandleBaseModFlatValue(
BaseModGroup modGroup,
float amount,
bool apply);
2300 void ApplyBaseModPctValue(
BaseModGroup modGroup,
float pct);
2302 void SetBaseModFlatValue(
BaseModGroup modGroup,
float val);
2303 void SetBaseModPctValue(
BaseModGroup modGroup,
float val);
2309 float GetTotalBaseModValue(
BaseModGroup modGroup)
const;
2311 void _ApplyAllStatBonuses();
2312 void _RemoveAllStatBonuses();
2314 void ResetAllPowers();
2318 void CastAllObtainSpells();
2319 void ApplyItemObtainSpells(
Item* item,
bool apply);
2322 void UpdateAllWeaponDependentCritAuras();
2325 void ApplyItemDependentAuras(
Item* item,
bool apply);
2329 void _ApplyItemMods(
Item* item,
uint8 slot,
bool apply,
bool updateItemAuras =
true);
2330 void _RemoveAllItemMods();
2331 void _ApplyAllItemMods();
2332 void _ApplyAllLevelScaleItemMods(
bool apply);
2333 void ApplyAllAzeriteItemMods(
bool apply);
2334 void ApplyAllAzeriteEmpoweredItemMods(
bool apply);
2335 void _ApplyItemBonuses(
Item* item,
uint8 slot,
bool apply);
2336 void _ApplyWeaponDamage(
uint8 slot,
Item* item,
bool apply);
2337 bool EnchantmentFitsRequirements(
uint32 enchantmentcondition,
int8 slot)
const;
2338 void ToggleMetaGemsActive(
uint8 exceptslot,
bool apply);
2339 void CorrectMetaGemEnchants(
uint8 slot,
bool apply);
2340 void InitDataForForm(
bool reapplyMods =
false);
2342 void ApplyItemEquipSpell(
Item* item,
bool apply,
bool formChange =
false);
2343 void ApplyEquipSpell(
SpellInfo const* spellInfo,
Item* item,
bool apply,
bool formChange =
false);
2344 void UpdateEquipSpellsAtFormChange();
2345 void UpdateItemSetAuras(
bool formChange =
false);
2346 void ApplyArtifactPowers(
Item* item,
bool apply);
2348 void ApplyAzeritePowers(
Item* item,
bool apply);
2354 void CastItemCombatSpell(
DamageInfo const& damageInfo);
2357 void ApplyItemLootedSpell(
Item* item,
bool apply);
2359 void SendEquipmentSetList();
2361 void DeleteEquipmentSet(
uint64 id);
2363 void SendInitWorldStates(
uint32 zoneId,
uint32 areaId);
2364 void SendUpdateWorldState(
uint32 variable,
uint32 value,
bool hidden =
false)
const;
2365 void SendDirectMessage(
WorldPacket const* data)
const;
2367 void SendAurasForTarget(
Unit* target)
const;
2372 void SendLoot(
Loot& loot,
bool aeLooting =
false);
2375 void SendLootReleaseAll()
const;
2377 void SendNotifyLootMoneyRemoved(
ObjectGuid lootObj)
const;
2384 bool InArena()
const;
2390 bool InBattlegroundQueue(
bool ignoreArena =
false)
const;
2400 bool HasFreeBattlegroundQueueId()
const;
2403 bool IsInvitedForBattlegroundInstance(
uint32 instanceId)
const;
2407 void SetBattlegroundEntryPoint();
2409 void SetBGTeam(
uint32 team);
2410 uint32 GetBGTeam()
const;
2414 bool CanReportAfkDueToLimit();
2415 void ReportedAfkBy(
Player* reporter);
2419 bool CanUseBattlegroundObject(
GameObject* gameobject)
const;
2420 bool isTotalImmune()
const;
2421 bool CanCaptureTowerPoint()
const;
2424 void SetRandomWinner(
bool isWinner);
2432 bool IsOutdoorPvPActive()
const;
2438 bool IsImmuneToEnvironmentalDamage()
const;
2466 void SetFallInformation(
uint32 time,
float z);
2469 void SetClientControl(
Unit* target,
bool allowMove);
2472 void SetViewpoint(
WorldObject* target,
bool apply);
2474 void StopCastingCharm();
2475 void StopCastingBindSight()
const;
2482 m_recall_location.WorldRelocate(*
this);
2483 m_recall_instanceId = GetInstanceId();
2488 void SendBindPointUpdate()
const;
2501 bool HaveAtClient(
Object const* u)
const;
2503 bool IsNeverVisibleFor(
WorldObject const* seer,
bool allowServersideObjects =
false)
const override;
2505 bool IsVisibleGloballyFor(
Player const* player)
const;
2507 void SendInitialVisiblePackets(
Unit* target)
const;
2508 void OnPhaseChange()
override;
2509 void UpdateObjectVisibility(
bool forced =
true)
override;
2510 void UpdateVisibilityForPlayer();
2513 void UpdateTriggerVisibility();
2516 void UpdateVisibilityOf(T* target,
UpdateData& data, std::set<Unit*>& visibleNow);
2525 bool isUsingLfg()
const;
2526 bool inRandomLfgDungeon()
const;
2536 void EnablePetControlsOnDismount();
2537 void UnsummonPetTemporaryIfAny();
2538 void ResummonPetTemporaryUnSummonedIfAny();
2539 bool IsPetNeedBeTemporaryUnsummoned()
const;
2541 void SendCinematicStart(
uint32 CinematicSequenceId)
const;
2542 void SendMovieStart(
uint32 movieId);
2547 void UpdateItemLevelAreaBasedScaling();
2555 void UpdateHomebindTime(
uint32 time);
2562 auto itr = m_recentInstances.find(mapId);
2563 return itr != m_recentInstances.end() ? itr->second : 0;
2568 m_recentInstances[mapId] = instanceId;
2572 void ConfirmPendingBind();
2573 void SetPendingBind(
uint32 instanceId,
uint32 bindTimer);
2575 void SendRaidInfo();
2577 bool CheckInstanceValidity(
bool );
2578 bool CheckInstanceCount(
uint32 instanceId)
const;
2579 void AddInstanceEnterTime(
uint32 instanceId, time_t enterTime);
2598 void SetGroup(
Group* group,
int8 subgroup = -1);
2604 void ResetGroupUpdateSequenceIfNeeded(
Group const* group);
2606 Player* GetNextRandomRaidMember(
float radius);
2610 void SetBattlegroundOrBattlefieldRaid(
Group* group,
int8 subgroup = -1);
2611 void RemoveFromBattlegroundOrBattlefieldRaid();
2615 void SetOriginalGroup(
Group* group,
int8 subgroup = -1);
2623 void SetMap(
Map* map)
override;
2624 void ResetMap()
override;
2626 bool isAllowedToLoot(
Creature const* creature)
const;
2629 uint8 GetRunesState()
const;
2631 uint32 GetRuneBaseCooldown()
const;
2632 void SetRuneCooldown(
uint8 index,
uint32 cooldown);
2633 void ResyncRunes()
const;
2636 void SendRespondInspectAchievements(
Player* player)
const;
2637 uint32 GetAchievementPoints()
const;
2638 std::vector<uint32> GetCompletedAchievementIds()
const;
2639 bool HasAchieved(
uint32 achievementId)
const;
2640 void ResetAchievements();
2646 bool ModifierTreeSatisfied(
uint32 modifierTreeId)
const;
2655 bool CanSeeSpellClickOn(
Creature const* creature)
const;
2661 float GetAverageItemLevel()
const;
2676 std::string GetMapAreaAndZoneString()
const;
2677 std::string GetCoordsMapAreaAndZoneString()
const;
2683 uint8 GetNextVoidStorageFreeSlot()
const;
2684 uint8 GetNumOfVoidStorageFreeSlots()
const;
2686 void DeleteVoidStorageItem(
uint8 slot);
2687 bool SwapVoidStorageItem(
uint8 oldSlot,
uint8 newSlot);
2695 void CreateGarrison(
uint32 garrSiteId);
2696 void DeleteGarrison();
2707 SetUpdateFieldValue(m_values
2714 SetUpdateFieldValue(m_values
2722 bool MeetPlayerCondition(
uint32 conditionId)
const;
2744 if (choiceIndex >= 0)
2745 return m_playerData->Customizations[choiceIndex].ChrCustomizationChoiceID;
2750 template<
typename Iter>
2754 m_customizationsChanged =
true;
2757 for (
auto&& customization : customizations)
2790 int32 index = m_activePlayerData->ConditionalTransmog.FindIndex(itemModifiedAppearanceId);
2801 int32 index = m_activePlayerData->SelfResSpells.FindIndex(spellId);
2837 bool IsInFriendlyArea()
const;
2840 void SetWarModeDesired(
bool enabled);
2844 void SetWarModeLocal(
bool enabled);
2845 bool CanEnableWarModeInArea()
const;
2846 void UpdateWarModeAuras();
2853 void SetAreaSpiritHealer(
Creature* creature);
2856 void SendAreaSpiritHealerTime(
Unit* spiritHealer)
const;
2857 void SendAreaSpiritHealerTime(
ObjectGuid const& spiritHealerGUID,
int32 timeLeft)
const;
2913 void _LoadGlyphAuras();
2979 void HandleSobering();
2982 void HandleDrowning(
uint32 time_diff);
2990 void outDebugValues()
const;
3118 bool CanNeverSee(
WorldObject const* obj)
const override;
3119 bool CanAlwaysSee(
WorldObject const* obj)
const override;
3121 bool IsAlwaysDetectableFor(
WorldObject const* seer)
const override;
3140 void SendRefundInfo(
Item* item);
3141 void RefundItem(
Item* item);
3144 void AdjustQuestObjectiveProgress(
Quest const* quest);
3152 bool IsInstanceLoginGameMasterException()
const;
3208 void _InitHonorLevelOnLoadFromDB(
uint32 honor,
uint32 honorLevel);
3220template<
typename Container>
3223 static_assert(std::is_same<typename Container::value_type, UF::ChrCustomizationChoice>::value,
3224 "MakeChrCustomizationChoiceRange must be used with containers of UF::ChrCustomizationChoice");
3226 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::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