TrinityCore
Loading...
Searching...
No Matches
Player.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef _PLAYER_H
19#define _PLAYER_H
20
21#include "GridObject.h"
22#include "Unit.h"
23#include "DatabaseEnvFwd.h"
24#include "DBCEnums.h"
25#include "EquipmentSet.h"
26#include "GroupReference.h"
27#include "ItemDefines.h"
28#include "ItemEnchantmentMgr.h"
29#include "MapReference.h"
30#include "PetDefines.h"
31#include "PlayerTaxi.h"
32#include "QuestDef.h"
33#include <memory>
34#include <queue>
35#include <unordered_set>
36
38struct AchievementEntry;
39struct AreaTableEntry;
40struct AreaTriggerEntry;
42struct CharTitlesEntry;
44struct CreatureTemplate;
45struct FactionEntry;
47struct ItemSetEffect;
48struct ItemTemplate;
49struct Loot;
50struct Mail;
51struct MapEntry;
54struct TrainerSpell;
55struct VendorItem;
56
57class AchievementMgr;
58class Bag;
59class Battleground;
60class CinematicMgr;
61class Channel;
62class Creature;
63class DynamicObject;
64class GameClient;
65class Group;
66class Guild;
67class Item;
68class LootStore;
69class OutdoorPvP;
70class Pet;
71class PetAura;
72class PlayerAI;
73class PlayerMenu;
74class PlayerSocial;
75class ReputationMgr;
77class TradeData;
78
79enum InventoryType : uint8;
80enum ItemClass : uint8;
81enum LootError : uint8;
82enum LootType : uint8;
84
85namespace WorldPackets
86{
87 namespace Character
88 {
90 }
91
92 namespace Talent
93 {
95 struct TalentInfoUpdate;
96 }
97}
98
99typedef std::deque<Mail*> PlayerMails;
100
101#define PLAYER_MAX_SKILLS 128
117
118#define PLAYER_MAX_DAILY_QUESTS 25
119#define PLAYER_EXPLORED_ZONES_SIZE 128
120
121// Note: SPELLMOD_* values is aura types in fact
127
128// 2^n values, Player::m_isunderwater is a bitmask. These are Trinity internal values, they are never send to any client
130{
132 UNDERWATER_INWATER = 0x01, // terrain type is water and player is afflicted by it
133 UNDERWATER_INLAVA = 0x02, // terrain type is lava and player is afflicted by it
134 UNDERWATER_INSLIME = 0x04, // terrain type is lava and player is afflicted by it
135 UNDERWATER_INDARKWATER = 0x08, // terrain type is dark water and player is afflicted by it
136
139
147
156
158{
160 bool active : 1; // show in spellbook
161 bool dependent : 1; // learned as result another spell learn, skill grow, quest reward, etc
162 bool disabled : 1; // first rank has been learned in result talent learn but currently talent unlearned, save max learned ranks
163};
164
165// Spell modifier (used for modify other spells)
178
179typedef std::unordered_map<uint32, PlayerSpellState> PlayerTalentMap;
180typedef std::unordered_map<uint32, PlayerSpell> PlayerSpellMap;
181typedef std::unordered_set<SpellModifier*> SpellModContainer;
182
190
200
211
212#define ACTION_BUTTON_ACTION(X) (uint32(X) & 0x00FFFFFF)
213#define ACTION_BUTTON_TYPE(X) ((uint32(X) & 0xFF000000) >> 24)
214#define MAX_ACTION_BUTTON_ACTION_VALUE (0x00FFFFFF+1)
215
217{
219
222
223 // helpers
227 {
228 uint32 newData = action | (uint32(type) << 24);
229 if (newData != packedData || uState == ACTIONBUTTON_DELETED)
230 {
231 packedData = newData;
234 }
235 }
236};
237
238#define MAX_ACTION_BUTTONS 144 //checked in 3.2.0
239
240typedef std::map<uint8, ActionButton> ActionButtonList;
241
243{
244 PvPInfo() : IsHostile(false), IsInHostileArea(false), IsInNoPvPArea(false), IsInFFAPvPArea(false), EndTimer(0) { }
245
250 time_t EndTimer;
251};
252
261{
262 DuelInfo(Player* opponent, Player* initiator, bool isMounted) : Opponent(opponent), Initiator(initiator), IsMounted(isMounted) {}
263
266 bool const IsMounted;
268 time_t StartTime = 0;
269 time_t OutOfBoundsTime = 0;
270};
271
272struct Areas
273{
276 float x1;
277 float x2;
278 float y1;
279 float y2;
280};
281
283{
285 RUNE_MISS_COOLDOWN = 1500 // cooldown applied on runes when the spell misses
287
296
298{
302 std::unordered_set<AuraEffect const*> ConvertAuras;
303};
304
305struct Runes
306{
308 uint8 runeState; // mask of available runes
310
311 void SetRuneState(uint8 index, bool set = true)
312 {
313 if (set)
314 runeState |= (1 << index); // usable
315 else
316 runeState &= ~(1 << index); // on cooldown
317 }
318};
319
321{
323 EnchantDuration(Item* _item, EnchantmentSlot _slot, uint32 _leftduration) : item(_item), slot(_slot),
324 leftduration(_leftduration){ ASSERT(item); }
325
329};
330
331typedef std::list<EnchantDuration> EnchantDurationList;
332typedef std::list<Item*> ItemDurationList;
333
341
342#define MAX_DRUNKEN 4
343
345{
347 PLAYER_FLAGS_AFK = 0x00000002,
348 PLAYER_FLAGS_DND = 0x00000004,
349 PLAYER_FLAGS_GM = 0x00000008,
350 PLAYER_FLAGS_GHOST = 0x00000010,
353 PLAYER_FLAGS_UNK7 = 0x00000080, // pre-3.0.3 PLAYER_FLAGS_FFA_PVP flag for FFA PVP state
354 PLAYER_FLAGS_CONTESTED_PVP = 0x00000100, // Player has been involved in a PvP combat and will be attacked by contested guards
358 PLAYER_FLAGS_PLAYED_LONG_TIME = 0x00001000, // played long time
359 PLAYER_FLAGS_PLAYED_TOO_LONG = 0x00002000, // played too long time
361 PLAYER_FLAGS_DEVELOPER = 0x00008000, // <Dev> prefix for something?
362 PLAYER_FLAGS_LOW_LEVEL_RAID_ENABLED = 0x00010000, // pre-3.0.3 PLAYER_FLAGS_SANCTUARY flag for player entered sanctuary
363 PLAYER_FLAGS_TAXI_BENCHMARK = 0x00020000, // taxi benchmark mode (on/off) (2.0.1)
364 PLAYER_FLAGS_PVP_TIMER = 0x00040000, // 3.0.2, pvp timer active (after you disable pvp manually)
365 PLAYER_FLAGS_UBER = 0x00080000,
366 PLAYER_FLAGS_UNK20 = 0x00100000,
367 PLAYER_FLAGS_UNK21 = 0x00200000,
369 PLAYER_ALLOW_ONLY_ABILITY = 0x00800000, // used by bladestorm and killing spree, allowed only spells with SPELL_ATTR0_REQ_AMMO, SPELL_EFFECT_ATTACK, checked only for active player
370 PLAYER_FLAGS_UNK24 = 0x01000000, // disabled all melee ability on tab include autoattack
372 PLAYER_FLAGS_UNK26 = 0x04000000,
373 PLAYER_FLAGS_UNK27 = 0x08000000,
374 PLAYER_FLAGS_UNK28 = 0x10000000,
375 PLAYER_FLAGS_UNK29 = 0x20000000,
376 PLAYER_FLAGS_UNK30 = 0x40000000,
377 PLAYER_FLAGS_UNK31 = 0x80000000
379
387
395
403
411
418
419static_assert((PLAYER_FIELD_BYTES_2_OFFSET_OVERRIDE_SPELLS_ID & 1) == 0, "PLAYER_FIELD_BYTES_2_OFFSET_OVERRIDE_SPELLS_ID must be aligned to 2 byte boundary");
420
421#define PLAYER_BYTES_2_OVERRIDE_SPELLS_UINT16_OFFSET (PLAYER_FIELD_BYTES_2_OFFSET_OVERRIDE_SPELLS_ID / 2)
422
423#define KNOWN_TITLES_SIZE 3
424#define MAX_TITLE_INDEX (KNOWN_TITLES_SIZE * 64) // 3 uint64 fields
425
426// used in PLAYER_FIELD_BYTES values
428{
430 PLAYER_FIELD_BYTE_RELEASE_TIMER = 0x00000008, // Display time till auto release spirit
431 PLAYER_FIELD_BYTE_NO_RELEASE_WINDOW = 0x00000010 // Display no "release spirit" window at all
433
434// used in PLAYER_FIELD_BYTES2 values
441
447
449{
452 FIRE_TIMER = 2 // feign death
454#define MAX_TIMERS 3
455#define DISABLED_MIRROR_TIMER -1
456
457// 2^n values
459{
460 // gm abilities
465 PLAYER_EXTRA_GM_CHAT = 0x0020, // Show GM badge in chat messages
466 PLAYER_EXTRA_HAS_310_FLYER = 0x0040, // Marks if player already has 310% speed flying mount
467
468 // other states
469 PLAYER_EXTRA_PVP_DEATH = 0x0100, // store PvP death status until corpse creating.
470
471 // Character services markers
474 PLAYER_EXTRA_LEVEL_BOOSTED = 0x0800, // reserved for master branch
475};
476
477// 2^n values
491
492typedef std::map<uint32, QuestStatusData> QuestStatusMap;
493typedef std::set<uint32> RewardedQuestSet;
494
501
502// quest
503typedef std::map<uint32, QuestSaveType> QuestStatusSaveMap;
504
512
513#define MAX_QUEST_OFFSET 5
514
521
529
531{
532 SkillStatusData(uint8 _pos, SkillUpdateState _uState) : pos(_pos), uState(_uState)
533 {
534 }
537};
538
539typedef std::unordered_map<uint32, SkillStatusData> SkillStatusMap;
540
541class Quest;
542class Spell;
543class Item;
544class WorldSession;
545
547{
548 // first slot for item stored (in any way in player m_items data)
550 // last+1 slot for item stored (in any way in player m_items data)
554
555#define INVENTORY_SLOT_BAG_0 255
556
581
587
593
594enum BankItemSlots // 28 slots
595{
599
600enum BankBagSlots // 7 slots
601{
605
606enum BuyBackSlots // 12 slots
607{
608 // stored in m_buybackitems
612
613enum KeyRingSlots : uint8 // 32 slots
614{
616 KEYRING_SLOT_END = 118
618
624
626{
627 ItemPosCount(uint16 _pos, uint32 _count) : pos(_pos), count(_count) { }
628 bool isContainedIn(std::vector<ItemPosCount> const& vec) const;
631};
632typedef std::vector<ItemPosCount> ItemPosCountVec;
633
635{
636 RAID_INSTANCE_WARNING_HOURS = 1, // WARNING! %s is scheduled to reset in %d hour(s).
637 RAID_INSTANCE_WARNING_MIN = 2, // WARNING! %s is scheduled to reset in %d minute(s)!
638 RAID_INSTANCE_WARNING_MIN_SOON = 3, // WARNING! %s is scheduled to reset in %d minute(s). Please exit the zone or you will be returned to your bind location!
639 RAID_INSTANCE_WELCOME = 4, // Welcome to %s. This raid instance is scheduled to reset in %s.
642
643// PLAYER_FIELD_ARENA_TEAM_INFO_1_1 offsets
655
656class InstanceSave;
657
659{
662 REST_FLAG_IN_FACTION_AREA = 0x4, // used with AREA_FLAG_REST_ZONE_*
663};
664
675
678{
685 DAMAGE_FALL_TO_VOID = 6 // custom case for fall without durability loss
687
693
694#define MAX_PLAYED_TIME_INDEX 2
695
696// used at player loading query list preparing, and later result selection
735
745
746// Player summoning auto-decline time (in secs)
747#define MAX_PLAYER_SUMMON_DELAY (2*MINUTE)
748// Maximum money amount : 2^31 - 1
750
752{
756 EXTEND_STATE_KEEP = 255 // special state: keep current save type
759{
761 /* permanent PlayerInstanceBinds are created in Raid/Heroic instances for players
762 that aren't already permanently bound when they are inside when a boss is killed
763 or when they enter an instance that the group leader is permanently bound to. */
764 bool perm;
765 /* extend state listing:
766 EXPIRED - doesn't affect anything unless manually re-extended by player
767 NORMAL - standard state
768 EXTENDED - won't be promoted to EXPIRED at next reset period, will instead be promoted to NORMAL */
770
772};
773
775{
776 CHAR_DELETE_REMOVE = 0, // Completely remove from the database
777 CHAR_DELETE_UNLINK = 1 // The character gets unlinked from the account,
778 // the name gets freed up and appears as deleted ingame
780
786
804
811
821
822class Player;
823
848
861
870
871#define SPELL_DK_RAISE_ALLY 46619
872
878
900
901class TC_GAME_API Player : public Unit, public GridObject<Player>
902{
903 friend class WorldSession;
904 friend class CinematicMgr;
905 friend void AddItemToUpdateQueueOf(Item* item, Player* player);
906 friend void RemoveItemFromUpdateQueueOf(Item* item, Player* player);
907 public:
908 explicit Player(WorldSession* session);
909 ~Player();
910
911 PlayerAI* AI() const { return reinterpret_cast<PlayerAI*>(GetAI()); }
912
913 void CleanupsBeforeDelete(bool finalCleanup = true) override;
914
915 void AddToWorld() override;
916 void RemoveFromWorld() override;
917
918 void SetObjectScale(float scale) override;
919
920 bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options = 0);
921 bool TeleportTo(WorldLocation const& loc, uint32 options = 0);
922 bool TeleportToBGEntryPoint();
923
924 bool HasSummonPending() const;
925 void SendSummonRequestFrom(Unit* summoner);
926 void SummonIfPossible(bool agree);
927
928 bool Create(ObjectGuid::LowType guidlow, WorldPackets::Character::CharacterCreateInfo const* createInfo);
929
930 void Update(uint32 time) override;
931
932 void Heartbeat() override;
933
934 static bool BuildEnumData(PreparedQueryResult result, WorldPacket* data);
935
936 bool IsImmunedToSpellEffect(SpellInfo const* spellInfo, SpellEffectInfo const& spellEffectInfo, WorldObject const* caster, bool requireImmunityPurgesEffectAttribute = false) const override;
937
938 bool IsInAreaTriggerRadius(AreaTriggerEntry const* trigger) const;
939
940 void SendInitialPacketsBeforeAddToMap();
941 void SendInitialPacketsAfterAddToMap();
942 void SendSupercededSpell(uint32 oldSpell, uint32 newSpell) const;
943 void SendTransferAborted(uint32 mapid, TransferAbortReason reason, uint8 arg = 0) const;
944 void SendInstanceResetWarning(uint32 mapid, Difficulty difficulty, uint32 time, bool welcome) const;
945
946 bool CanInteractWithQuestGiver(Object* questGiver) const;
947 Creature* GetNPCIfCanInteractWith(ObjectGuid const& guid, NPCFlags npcFlags) const;
948 GameObject* GetGameObjectIfCanInteractWith(ObjectGuid const& guid) const;
949 GameObject* GetGameObjectIfCanInteractWith(ObjectGuid const& guid, GameobjectTypes type) const;
950
951 void ToggleAFK();
952 void ToggleDND();
953 bool isAFK() const { return HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_AFK); }
954 bool isDND() const { return HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_DND); }
955 uint8 GetChatTag() const;
956 std::string autoReplyMsg;
957
958 uint32 GetBarberShopCost(uint8 newhairstyle, uint8 newhaircolor, uint8 newfacialhair, BarberShopStyleEntry const* newSkin = nullptr) const;
959
960 PlayerSocial* GetSocial() { return m_social; }
961 void RemoveSocial();
962
965 bool ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc = nullptr, uint32 spellid = 0);
966 bool ActivateTaxiPathTo(uint32 taxi_path_id, uint32 spellid = 0);
967 void FinishTaxiFlight();
968 void CleanupAfterTaxiFlight();
969 void ContinueTaxiFlight() const;
970 void SendTaxiNodeStatusMultiple();
971
974 bool isAcceptWhispers() const { return (m_ExtraFlags & PLAYER_EXTRA_ACCEPT_WHISPERS) != 0; }
975 void SetAcceptWhispers(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_ACCEPT_WHISPERS; else m_ExtraFlags &= ~PLAYER_EXTRA_ACCEPT_WHISPERS; }
976 bool IsGameMaster() const { return (m_ExtraFlags & PLAYER_EXTRA_GM_ON) != 0; }
977 bool IsGameMasterAcceptingWhispers() const { return IsGameMaster() && isAcceptWhispers(); }
978 bool CanBeGameMaster() const;
979 void SetGameMaster(bool on);
980 bool isGMChat() const { return (m_ExtraFlags & PLAYER_EXTRA_GM_CHAT) != 0; }
981 void SetGMChat(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_GM_CHAT; else m_ExtraFlags &= ~PLAYER_EXTRA_GM_CHAT; }
982 bool isTaxiCheater() const { return (m_ExtraFlags & PLAYER_EXTRA_TAXICHEAT) != 0; }
983 void SetTaxiCheater(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_TAXICHEAT; else m_ExtraFlags &= ~PLAYER_EXTRA_TAXICHEAT; }
984 bool isGMVisible() const { return !(m_ExtraFlags & PLAYER_EXTRA_GM_INVISIBLE); }
985 void SetGMVisible(bool on);
986 bool Has310Flyer(bool checkAllSpells, uint32 excludeSpellId = 0);
987 void SetHas310Flyer(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_HAS_310_FLYER; else m_ExtraFlags &= ~PLAYER_EXTRA_HAS_310_FLYER; }
988 void SetPvPDeath(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_PVP_DEATH; else m_ExtraFlags &= ~PLAYER_EXTRA_PVP_DEATH; }
989 bool HasRaceChanged() const { return (m_ExtraFlags & PLAYER_EXTRA_HAS_RACE_CHANGED) != 0; }
991 bool HasBeenGrantedLevelsFromRaF() const { return (m_ExtraFlags & PLAYER_EXTRA_GRANTED_LEVELS_FROM_RAF) != 0; }
993 bool HasLevelBoosted() const { return (m_ExtraFlags & PLAYER_EXTRA_LEVEL_BOOSTED) != 0; }
995
999 void GiveXP(uint32 xp, Unit* victim, float group_rate = 1.0f);
1000 void GiveLevel(uint8 level);
1001 bool IsMaxLevel() const;
1002
1003 void InitStatsForLevel(bool reapplyMods = false);
1004
1005 // .cheat command related
1006 bool GetCommandStatus(uint32 command) const { return (_activeCheats & command) != 0; }
1007 void SetCommandStatusOn(uint32 command) { _activeCheats |= command; }
1008 void SetCommandStatusOff(uint32 command) { _activeCheats &= ~command; }
1009
1010 // Played Time Stuff
1014 uint32 GetTotalPlayedTime() const { return m_Played_time[PLAYED_TIME_TOTAL]; }
1015 uint32 GetLevelPlayedTime() const { return m_Played_time[PLAYED_TIME_LEVEL]; }
1016
1029
1030 void setDeathState(DeathState s) override; // overwrite Unit::setDeathState
1031
1032 float GetRestBonus() const { return m_rest_bonus; }
1033 void SetRestBonus(float rest_bonus_new);
1034
1037
1038 bool HasRestFlag(RestFlag restFlag) const { return (_restFlagMask & restFlag) != 0; }
1039 void SetRestFlag(RestFlag restFlag, uint32 triggerId = 0);
1040 void RemoveRestFlag(RestFlag restFlag);
1041
1042 uint32 GetXPRestBonus(uint32 xp);
1043 uint32 GetInnTriggerId() const { return inn_triggerId; }
1044
1045 PetStable* GetPetStable() { return m_petStable.get(); }
1046 PetStable& GetOrInitPetStable();
1047 PetStable const* GetPetStable() const { return m_petStable.get(); }
1048
1049 Pet* GetPet() const;
1050 Pet* SummonPet(uint32 entry, float x, float y, float z, float ang, PetType petType, uint32 despwtime);
1051 void RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent = false);
1052 uint32 GetPhaseMaskForSpawn() const; // used for proper set phase for DB at GM-mode creature/GO spawn
1053
1054 // pet auras
1055 std::unordered_set<PetAura const*> m_petAuras;
1056 void AddPetAura(PetAura const* petSpell);
1057 void RemovePetAura(PetAura const* petSpell);
1058
1060 void Say(std::string_view text, Language language, WorldObject const* = nullptr) override;
1061 void Say(uint32 textId, WorldObject const* target = nullptr) override;
1063 void Yell(std::string_view text, Language language, WorldObject const* = nullptr) override;
1064 void Yell(uint32 textId, WorldObject const* target = nullptr) override;
1066 void TextEmote(std::string_view text, WorldObject const* = nullptr, bool = false) override;
1067 void TextEmote(uint32 textId, WorldObject const* target = nullptr, bool isBossEmote = false) override;
1069 void Whisper(std::string_view text, Language language, Player* receiver, bool = false) override;
1070 void Whisper(uint32 textId, Player* target, bool isBossWhisper = false) override;
1071 void WhisperAddon(std::string const& text, Player* receiver);
1072
1073 /*********************************************************/
1074 /*** STORAGE SYSTEM ***/
1075 /*********************************************************/
1076
1077 void SetVirtualItemSlot(uint8 i, Item* item);
1078 void SetSheath(SheathState sheathed) override; // overwrite Unit version
1079 uint8 FindEquipSlot(Item const* item, uint32 slot, bool swap) const;
1080 uint32 GetItemCount(uint32 item, bool inBankAlso = false, Item* skipItem = nullptr) const;
1081 uint32 GetItemCountWithLimitCategory(uint32 limitCategory, Item* skipItem = nullptr) const;
1082 Item* GetItemByGuid(ObjectGuid guid) const;
1083 Item* GetItemByEntry(uint32 entry) const;
1084 Item* GetItemByPos(uint16 pos) const;
1085 Item* GetItemByPos(uint8 bag, uint8 slot) const;
1086 Item* GetUseableItemByPos(uint8 bag, uint8 slot) const;
1087 Bag* GetBagByPos(uint8 slot) const;
1088 uint32 GetFreeInventorySpace() const;
1089 Item* GetWeaponForAttack(WeaponAttackType attackType, bool useable = false) const;
1090 Item* GetShield(bool useable = false) const;
1091 static WeaponAttackType GetAttackBySlot(uint8 slot); // MAX_ATTACK if not weapon slot
1092 std::vector<Item*>& GetItemUpdateQueue() { return m_itemUpdateQueue; }
1093 static bool IsInventoryPos(uint16 pos) { return IsInventoryPos(pos >> 8, pos & 255); }
1094 static bool IsInventoryPos(uint8 bag, uint8 slot);
1095 static bool IsEquipmentPos(uint16 pos) { return IsEquipmentPos(pos >> 8, pos & 255); }
1096 static bool IsEquipmentPos(uint8 bag, uint8 slot);
1097 static bool IsBagPos(uint16 pos);
1098 static bool IsBankPos(uint16 pos) { return IsBankPos(pos >> 8, pos & 255); }
1099 static bool IsBankPos(uint8 bag, uint8 slot);
1100 bool IsValidPos(uint16 pos, bool explicit_pos) const { return IsValidPos(pos >> 8, pos & 255, explicit_pos); }
1101 bool IsValidPos(uint8 bag, uint8 slot, bool explicit_pos) const;
1104 bool HasItemCount(uint32 item, uint32 count = 1, bool inBankAlso = false) const;
1105 bool HasItemFitToSpellRequirements(SpellInfo const* spellInfo, Item const* ignoreItem = nullptr) const;
1106 bool CanNoReagentCast(SpellInfo const* spellInfo) const;
1108 {
1109 for (uint8 i = 0; i < 3; ++i)
1111 }
1112 bool HasItemOrGemWithIdEquipped(uint32 item, uint32 count, uint8 except_slot = NULL_SLOT) const;
1113 bool HasItemWithLimitCategoryEquipped(uint32 limitCategory, uint32 count, uint8 except_slot = NULL_SLOT) const;
1114 bool HasGemWithLimitCategoryEquipped(uint32 limitCategory, uint32 count, uint8 except_slot = NULL_SLOT) const;
1115 InventoryResult CanTakeMoreSimilarItems(Item* pItem, uint32* itemLimitCategory = nullptr) const;
1116 InventoryResult CanTakeMoreSimilarItems(uint32 entry, uint32 count, uint32* itemLimitCategory = nullptr) const { return CanTakeMoreSimilarItems(entry, count, nullptr, nullptr, itemLimitCategory); }
1117 InventoryResult CanStoreNewItem(uint8 bag, uint8 slot, ItemPosCountVec& dest, uint32 item, uint32 count, uint32* no_space_count = nullptr) const;
1118 InventoryResult CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec& dest, Item* pItem, bool swap = false) const;
1119 InventoryResult CanStoreItems(Item** items, int count, uint32* itemLimitCategory) const;
1120 InventoryResult CanEquipNewItem(uint8 slot, uint16& dest, uint32 item, bool swap) const;
1121 InventoryResult CanEquipItem(uint8 slot, uint16& dest, Item* pItem, bool swap, bool not_loading = true) const;
1122
1123 InventoryResult CanEquipUniqueItem(Item* pItem, uint8 except_slot = NULL_SLOT, uint32 limit_count = 1) const;
1124 InventoryResult CanEquipUniqueItem(ItemTemplate const* itemProto, uint8 except_slot = NULL_SLOT, uint32 limit_count = 1) const;
1125 InventoryResult CanUnequipItems(uint32 item, uint32 count) const;
1126 InventoryResult CanUnequipItem(uint16 src, bool swap) const;
1127 InventoryResult CanBankItem(uint8 bag, uint8 slot, ItemPosCountVec& dest, Item* pItem, bool swap, bool not_loading = true) const;
1128 InventoryResult CanUseItem(Item* pItem, bool not_loading = true) const;
1129 bool HasItemTotemCategory(uint32 TotemCategory) const;
1130 InventoryResult CanUseItem(ItemTemplate const* pItem) const;
1131 InventoryResult CanUseAmmo(uint32 item) const;
1132 InventoryResult CanRollForItemInLFG(ItemTemplate const* item, WorldObject const* lootedObject) const;
1133 Item* StoreNewItem(ItemPosCountVec const& pos, uint32 itemId, bool update, int32 randomPropertyId = 0, GuidSet const& allowedLooters = GuidSet());
1134 Item* StoreItem(ItemPosCountVec const& pos, Item* pItem, bool update);
1135 Item* EquipNewItem(uint16 pos, uint32 item, bool update);
1136 Item* EquipItem(uint16 pos, Item* pItem, bool update);
1137 void AutoUnequipOffhandIfNeed(bool force = false);
1138 bool StoreNewItemInBestSlots(uint32 item_id, uint32 item_count);
1139 void AutoStoreLoot(uint8 bag, uint8 slot, uint32 loot_id, LootStore const& store, bool broadcast = false, bool createdByPlayer = false);
1140 void AutoStoreLoot(uint32 loot_id, LootStore const& store, bool broadcast = false, bool createdByPlayer = false) { AutoStoreLoot(NULL_BAG, NULL_SLOT, loot_id, store, broadcast, createdByPlayer); }
1141 void StoreLootItem(uint8 lootSlot, Loot* loot);
1142
1143 InventoryResult CanTakeMoreSimilarItems(uint32 entry, uint32 count, Item* pItem, uint32* no_space_count = nullptr, uint32* itemLimitCategory = nullptr) const;
1144 InventoryResult CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec& dest, uint32 entry, uint32 count, Item* pItem = nullptr, bool swap = false, uint32* no_space_count = nullptr) const;
1145
1146 void AddRefundReference(ObjectGuid it);
1147 void DeleteRefundReference(ObjectGuid it);
1148
1149 void ApplyEquipCooldown(Item* pItem);
1150 void SetAmmo(uint32 item);
1151 void RemoveAmmo();
1152 float GetAmmoDPS() const { return m_ammoDPS; }
1153 bool CheckAmmoCompatibility(ItemTemplate const* ammo_proto) const;
1154 void QuickEquipItem(uint16 pos, Item* pItem);
1155 void VisualizeItem(uint8 slot, Item* pItem);
1156 void SetVisibleItemSlot(uint8 slot, Item* pItem);
1157 Item* BankItem(ItemPosCountVec const& dest, Item* pItem, bool update);
1158 void RemoveItem(uint8 bag, uint8 slot, bool update);
1159 void MoveItemFromInventory(uint8 bag, uint8 slot, bool update);
1160 // in trade, auction, guild bank, mail....
1161 void MoveItemToInventory(ItemPosCountVec const& dest, Item* pItem, bool update, bool in_characterInventoryDB = false);
1162 // in trade, guild bank, mail....
1163 void RemoveItemDependentAurasAndCasts(Item* pItem);
1164 void DestroyItem(uint8 bag, uint8 slot, bool update);
1165 uint32 DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check = false);
1166 void DestroyItemCount(Item* item, uint32& count, bool update);
1167 void DestroyConjuredItems(bool update);
1168 void DestroyZoneLimitedItem(bool update, uint32 new_zone);
1169 void SplitItem(uint16 src, uint16 dst, uint32 count);
1170 void SwapItem(uint16 src, uint16 dst);
1171 void AddItemToBuyBackSlot(Item* pItem);
1172 Item* GetItemFromBuyBackSlot(uint32 slot);
1173 void RemoveItemFromBuyBackSlot(uint32 slot, bool del);
1175 void SendEquipError(InventoryResult msg, Item const* item1 = nullptr, Item const* item2 = nullptr, uint32 itemId = 0) const;
1176 void SendBuyError(BuyResult msg, Creature* creature, uint32 item, uint32 param) const;
1177 void SendSellError(SellResult msg, Creature* creature, ObjectGuid guid, uint32 param) const;
1178 void AddWeaponProficiency(uint32 newflag) { m_WeaponProficiency |= newflag; }
1179 void AddArmorProficiency(uint32 newflag) { m_ArmorProficiency |= newflag; }
1180 uint32 GetWeaponProficiency() const { return m_WeaponProficiency; }
1181 uint32 GetArmorProficiency() const { return m_ArmorProficiency; }
1182 bool IsUseEquipedWeapon(bool mainhand) const;
1183 bool IsTwoHandUsed() const;
1184 bool IsUsingTwoHandedWeaponInOneHand() const;
1185 void SendNewItem(Item* item, uint32 count, bool received, bool created, bool broadcast = false, bool sendChatMessage = true);
1186 bool BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uint32 item, uint32 count, uint8 bag, uint8 slot);
1187 bool _StoreOrEquipNewItem(uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot, int32 price, ItemTemplate const* pProto, Creature* pVendor, VendorItem const* crItem, bool bStore);
1188
1189 float GetReputationPriceDiscount(Creature const* creature) const;
1190 float GetReputationPriceDiscount(FactionTemplateEntry const* factionTemplate) const;
1191
1192 Player* GetTrader() const;
1193 TradeData* GetTradeData() const { return m_trade; }
1194 void TradeCancel(bool sendback, TradeStatus status = TRADE_STATUS_TRADE_CANCELED);
1195
1196 CinematicMgr* GetCinematicMgr() const { return _cinematicMgr; }
1197
1198 void UpdateEnchantTime(uint32 time);
1199 void UpdateSoulboundTradeItems();
1200 void AddTradeableItem(Item* item);
1201 void RemoveTradeableItem(Item* item);
1202 void UpdateItemDuration(uint32 time, bool realtimeonly = false);
1203 void AddEnchantmentDurations(Item* item);
1204 void RemoveEnchantmentDurations(Item* item);
1205 void RemoveEnchantmentDurationsReferences(Item* item);
1206 void RemoveArenaEnchantments(EnchantmentSlot slot);
1207 void AddEnchantmentDuration(Item* item, EnchantmentSlot slot, uint32 duration);
1208 void ApplyEnchantment(Item* item, EnchantmentSlot slot, bool apply, bool apply_dur = true, bool ignore_condition = false);
1209 void ApplyEnchantment(Item* item, bool apply);
1210 void UpdateSkillEnchantments(uint16 skill_id, uint16 curr_value, uint16 new_value);
1211 void SendEnchantmentDurations();
1212 void AddItemDurations(Item* item);
1213 void RemoveItemDurations(Item* item);
1214 void SendItemDurations();
1215 void LoadCorpse(PreparedQueryResult result);
1216 void LoadPet();
1217
1218 bool AddItem(uint32 itemId, uint32 count);
1219
1220 /*********************************************************/
1221 /*** GOSSIP SYSTEM ***/
1222 /*********************************************************/
1223
1224 void PrepareGossipMenu(WorldObject* source, uint32 menuId = 0, bool showQuests = false);
1225 void SendPreparedGossip(WorldObject* source);
1226 void OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 menuId);
1227
1228 uint32 GetGossipTextId(uint32 menuId, WorldObject* source);
1229 uint32 GetGossipTextId(WorldObject* source);
1230 static uint32 GetDefaultGossipMenuForSource(WorldObject* source);
1231
1232 /*********************************************************/
1233 /*** QUEST SYSTEM ***/
1234 /*********************************************************/
1235
1236 int32 GetQuestLevel(Quest const* quest) const { return quest && (quest->GetQuestLevel() > 0) ? quest->GetQuestLevel() : GetLevel(); }
1237
1238 void PrepareQuestMenu(ObjectGuid guid);
1239 void SendPreparedQuest(ObjectGuid guid);
1240 bool IsActiveQuest(uint32 quest_id) const;
1241 Quest const* GetNextQuest(Object const* questGiver, Quest const* quest) const;
1242 bool CanSeeStartQuest(Quest const* quest) const;
1243 bool CanTakeQuest(Quest const* quest, bool msg) const;
1244 bool CanAddQuest(Quest const* quest, bool msg) const;
1245 bool CanCompleteQuest(uint32 quest_id);
1246 bool CanCompleteRepeatableQuest(Quest const* quest);
1247 bool CanRewardQuest(Quest const* quest, bool msg);
1248 bool CanRewardQuest(Quest const* quest, uint32 reward, bool msg);
1249 void AddQuestAndCheckCompletion(Quest const* quest, Object* questGiver);
1250 void AddQuest(Quest const* quest, Object* questGiver);
1251 void AbandonQuest(uint32 quest_id);
1252 void CompleteQuest(uint32 quest_id);
1253 void IncompleteQuest(uint32 quest_id);
1254 uint32 GetQuestXPReward(Quest const* quest);
1255 void RewardQuest(Quest const* quest, uint32 reward, Object* questGiver, bool announce = true);
1256 void SetRewardedQuest(uint32 quest_id);
1257 void FailQuest(uint32 quest_id);
1258 bool SatisfyQuestSkill(Quest const* qInfo, bool msg) const;
1259 bool SatisfyQuestLevel(Quest const* qInfo, bool msg) const;
1260 bool SatisfyQuestLog(bool msg) const;
1261 bool SatisfyQuestDependentQuests(Quest const* qInfo, bool msg) const;
1262 bool SatisfyQuestPreviousQuest(Quest const* qInfo, bool msg) const;
1263 bool SatisfyQuestDependentPreviousQuests(Quest const* qInfo, bool msg) const;
1264 bool SatisfyQuestBreadcrumbQuest(Quest const* qInfo, bool msg) const;
1265 bool SatisfyQuestDependentBreadcrumbQuests(Quest const* qInfo, bool msg) const;
1266 bool SatisfyQuestClass(Quest const* qInfo, bool msg) const;
1267 bool SatisfyQuestRace(Quest const* qInfo, bool msg) const;
1268 bool SatisfyQuestReputation(Quest const* qInfo, bool msg) const;
1269 bool SatisfyQuestStatus(Quest const* qInfo, bool msg) const;
1270 bool SatisfyQuestConditions(Quest const* qInfo, bool msg) const;
1271 bool SatisfyQuestTimed(Quest const* qInfo, bool msg) const;
1272 bool SatisfyQuestExclusiveGroup(Quest const* qInfo, bool msg) const;
1273 bool SatisfyQuestDay(Quest const* qInfo, bool msg) const;
1274 bool SatisfyQuestWeek(Quest const* qInfo, bool msg) const;
1275 bool SatisfyQuestMonth(Quest const* qInfo, bool msg) const;
1276 bool SatisfyQuestSeasonal(Quest const* qInfo, bool msg) const;
1277 bool GiveQuestSourceItem(Quest const* quest);
1278 bool TakeQuestSourceItem(uint32 questId, bool msg);
1279 bool GetQuestRewardStatus(uint32 quest_id) const;
1280 QuestStatus GetQuestStatus(uint32 quest_id) const;
1281 void SetQuestStatus(uint32 questId, QuestStatus status, bool update = true);
1282 void RemoveActiveQuest(uint32 questId, bool update = true);
1283 void RemoveRewardedQuest(uint32 questId, bool update = true);
1284 void SendQuestUpdate(uint32 questId);
1285 QuestGiverStatus GetQuestDialogStatus(Object* questGiver);
1286
1287 void SetDailyQuestStatus(uint32 quest_id);
1288 bool IsDailyQuestDone(uint32 quest_id);
1289 void SetWeeklyQuestStatus(uint32 quest_id);
1290 void SetMonthlyQuestStatus(uint32 quest_id);
1291 void SetSeasonalQuestStatus(uint32 quest_id);
1292 void ResetDailyQuestStatus();
1293 void ResetWeeklyQuestStatus();
1294 void ResetMonthlyQuestStatus();
1295 void ResetSeasonalQuestStatus(uint16 event_id, time_t eventStartTime);
1296
1297 uint16 FindQuestSlot(uint32 quest_id) const;
1298 uint32 GetQuestSlotQuestId(uint16 slot) const;
1299 uint32 GetQuestSlotState(uint16 slot) const;
1300 uint16 GetQuestSlotCounter(uint16 slot, uint8 counter) const;
1301 uint32 GetQuestSlotTime(uint16 slot) const;
1302 void SetQuestSlot(uint16 slot, uint32 quest_id, uint32 timer = 0);
1303 void SetQuestSlotCounter(uint16 slot, uint8 counter, uint16 count);
1304 void SetQuestSlotState(uint16 slot, uint32 state);
1305 void RemoveQuestSlotState(uint16 slot, uint32 state);
1306 void SetQuestSlotTimer(uint16 slot, uint32 timer);
1307 void SwapQuestSlot(uint16 slot1, uint16 slot2);
1308
1309 uint16 GetReqKillOrCastCurrentCount(uint32 quest_id, int32 entry) const;
1310 void AreaExploredOrEventHappens(uint32 questId);
1311 void GroupEventHappens(uint32 questId, WorldObject const* pEventObject);
1312 void ItemAddedQuestCheck(uint32 entry, uint32 count);
1313 void ItemRemovedQuestCheck(uint32 entry, uint32 count);
1314 void KilledMonster(CreatureTemplate const* cInfo, ObjectGuid guid);
1315 void KilledMonsterCredit(uint32 entry, ObjectGuid guid = ObjectGuid::Empty);
1316 void KilledPlayerCredit(uint16 count = 1);
1317 void KilledPlayerCreditForQuest(uint16 count, Quest const* quest);
1318 void KillCreditGO(uint32 entry, ObjectGuid guid = ObjectGuid::Empty);
1319 void TalkedToCreature(uint32 entry, ObjectGuid guid);
1320 void MoneyChanged(uint32 value);
1321 void ReputationChanged(FactionEntry const* factionEntry);
1322 void ReputationChanged2(FactionEntry const* factionEntry);
1323 bool HasQuestForItem(uint32 itemId, uint32 excludeQuestId = 0, bool turnIn = false) const;
1324 bool HasQuestForGO(int32 goId) const;
1325 void UpdateVisibleGameobjectsOrSpellClicks();
1326 bool CanShareQuest(uint32 questId) const;
1327
1328 void SendQuestComplete(uint32 questId) const;
1329 void SendQuestReward(Quest const* quest, uint32 XP) const;
1330 void SendQuestFailed(uint32 questId, InventoryResult reason = EQUIP_ERR_OK) const;
1331 void SendQuestTimerFailed(uint32 questId) const;
1332 void SendCanTakeQuestResponse(QuestFailedReason msg) const;
1333 void SendQuestConfirmAccept(Quest const* quest, Player* pReceiver) const;
1334 void SendPushToPartyResponse(Player const* player, QuestShareMessages msg) const;
1335 void SendQuestUpdateAddItem(Quest const* quest, uint32 itemIdx, uint16 count) const;
1336 void SendQuestUpdateAddCreatureOrGo(Quest const* quest, ObjectGuid guid, uint32 creatureOrGOIdx, uint16 oldCount, uint16 addCount);
1337 void SendQuestUpdateAddPlayer(Quest const* quest, uint16 oldCount, uint16 addCount);
1338 void SendQuestGiverStatusMultiple();
1339
1340 uint32 GetSharedQuestID() const { return m_sharedQuestId; }
1341 ObjectGuid GetPlayerSharingQuest() const { return m_playerSharingQuest; }
1342 void SetQuestSharingInfo(ObjectGuid guid, uint32 id) { m_playerSharingQuest = guid; m_sharedQuestId = id; }
1343 void ClearQuestSharingInfo() { m_playerSharingQuest = ObjectGuid::Empty; m_sharedQuestId = 0; }
1344
1345 uint32 GetInGameTime() const { return m_ingametime; }
1346 void SetInGameTime(uint32 time) { m_ingametime = time; }
1347
1348 void AddTimedQuest(uint32 questId) { m_timedquests.insert(questId); }
1349 void RemoveTimedQuest(uint32 questId) { m_timedquests.erase(questId); }
1350
1351 bool HasPvPForcingQuest() const;
1352
1353 /*********************************************************/
1354 /*** LOAD SYSTEM ***/
1355 /*********************************************************/
1356
1357 bool LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& holder);
1358 bool IsLoading() const override;
1359
1360 static uint32 GetZoneIdFromDB(ObjectGuid guid);
1361 static bool LoadPositionFromDB(uint32& mapid, float& x, float& y, float& z, float& o, bool& in_flight, ObjectGuid guid);
1362
1363 static bool IsValidGender(uint8 Gender) { return Gender <= GENDER_FEMALE; }
1364 static bool ValidateAppearance(uint8 race, uint8 class_, uint8 gender, uint8 hairID, uint8 hairColor, uint8 faceID, uint8 facialHair, uint8 skinColor, bool create = false);
1365
1366 /*********************************************************/
1367 /*** SAVE SYSTEM ***/
1368 /*********************************************************/
1369
1370 void SaveToDB(bool create = false);
1371 void SaveToDB(CharacterDatabaseTransaction trans, bool create = false);
1372 void SaveInventoryAndGoldToDB(CharacterDatabaseTransaction trans); // fast save function for item/money cheating preventing
1373 void SaveGoldToDB(CharacterDatabaseTransaction trans) const;
1374
1375 static void SavePositionInDB(WorldLocation const& loc, uint16 zoneId, ObjectGuid guid, CharacterDatabaseTransaction trans);
1376
1377 static void DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRealmChars = true, bool deleteFinally = false);
1378 static void DeleteOldCharacters();
1379 static void DeleteOldCharacters(uint32 keepDays);
1380
1382
1383 void SetBindPoint(ObjectGuid guid) const;
1384 void SendRespecWipeConfirm(ObjectGuid const& guid, uint32 cost) const;
1385 void ResetPetTalents();
1386 void RegenerateAll();
1387 void Regenerate(Powers power);
1388 void RegenerateHealth();
1389 void setRegenTimerCount(uint32 time) {m_regenTimerCount = time;}
1390 void setWeaponChangeTimer(uint32 time) {m_weaponChangeTimer = time;}
1391
1393 bool ModifyMoney(int32 amount, bool sendError = true);
1394 bool HasEnoughMoney(uint32 amount) const { return (GetMoney() >= amount); }
1395 bool HasEnoughMoney(int32 amount) const { return (amount < 0) || HasEnoughMoney(uint32(amount)); }
1396 void SetMoney(uint32 value);
1397
1398 RewardedQuestSet const& getRewardedQuests() const { return m_RewardedQuests; }
1399 QuestStatusMap& getQuestStatusMap() { return m_QuestStatus; }
1400
1401 size_t GetRewardedQuestCount() const { return m_RewardedQuests.size(); }
1402 bool IsQuestRewarded(uint32 quest_id) const;
1403
1404 Unit* GetSelectedUnit() const;
1405 Player* GetSelectedPlayer() const;
1406
1407 void SetTarget(ObjectGuid const& /*guid*/) override { }
1409
1410 void SendMailResult(uint32 mailId, MailResponseType mailAction, MailResponseResult mailError, uint32 equipError = 0, ObjectGuid::LowType item_guid = 0, uint32 item_count = 0) const;
1411 void SendNewMail() const;
1412 void UpdateNextMailTimeAndUnreads();
1413 void AddNewMailDeliverTime(time_t deliver_time);
1414
1415 void RemoveMail(uint32 id);
1416
1417 void AddMail(Mail* mail) { m_mail.push_front(mail);}// for call from WorldSession::SendMailTo
1418 uint32 GetMailSize() { return m_mail.size();}
1419 Mail* GetMail(uint32 id);
1420
1421 PlayerMails const& GetMails() const { return m_mail; }
1422
1423 void SendItemRetrievalMail(uint32 itemEntry, uint32 count); // Item retrieval mails sent by The Postmaster (34337), used in multiple places.
1424
1425 /*********************************************************/
1426 /*** MAILED ITEMS SYSTEM ***/
1427 /*********************************************************/
1428
1431
1432 typedef std::unordered_map<ObjectGuid::LowType, Item*> ItemMap;
1433
1434 ItemMap mMitems; //template defined in objectmgr.cpp
1435
1436 Item* GetMItem(ObjectGuid::LowType id);
1437 void AddMItem(Item* it);
1438 bool RemoveMItem(ObjectGuid::LowType id);
1439
1440 void SendOnCancelExpectedVehicleRideAura() const;
1441 void PetSpellInitialize();
1442 void CharmSpellInitialize();
1443 void PossessSpellInitialize();
1444 void VehicleSpellInitialize();
1445 void SendRemoveControlBar() const;
1446 bool HasSpell(uint32 spell) const override;
1447 bool HasActiveSpell(uint32 spell) const; // show in spellbook
1448 bool IsSpellFitByClassAndRace(uint32 spell_id) const;
1449 bool HandlePassiveSpellLearn(SpellInfo const* spellInfo);
1450
1451 void SendProficiency(ItemClass itemClass, uint32 itemSubclassMask) const;
1452 void SendInitialSpells();
1453 void SendUnlearnSpells();
1454 bool AddSpell(uint32 spellId, bool active, bool learning, bool dependent, bool disabled, bool loading = false, uint32 fromSkill = 0);
1455 void LearnSpell(uint32 spell_id, bool dependent, uint32 fromSkill = 0);
1456 void RemoveSpell(uint32 spell_id, bool disabled = false, bool learn_low_rank = true);
1457 void ResetSpells(bool myClassOnly = false);
1458 void LearnCustomSpells();
1459 void LearnDefaultSkills();
1460 void LearnDefaultSkill(uint32 skillId, uint16 rank);
1461 void LearnQuestRewardedSpells();
1462 void LearnQuestRewardedSpells(Quest const* quest);
1463 void AddTemporarySpell(uint32 spellId);
1464 void RemoveTemporarySpell(uint32 spellId);
1465 void SetReputation(uint32 factionentry, uint32 value);
1466 uint32 GetReputation(uint32 factionentry) const;
1467 std::string GetGuildName() const;
1468
1469 // Talents
1471 void SetFreeTalentPoints(uint32 points);
1472 uint32 GetUsedTalentCount() const { return _talentMgr->UsedTalentCount; }
1473 void SetUsedTalentCount(uint32 talents) { _talentMgr->UsedTalentCount = talents; }
1474 uint32 GetQuestRewardedTalentCount() const { return _talentMgr->QuestRewardedTalentCount; }
1475 void AddQuestRewardedTalentCount(uint32 points) { _talentMgr->QuestRewardedTalentCount += points; }
1476 uint32 GetTalentResetCost() const { return _talentMgr->ResetTalentsCost; }
1477 void SetTalentResetCost(uint32 cost) { _talentMgr->ResetTalentsCost = cost; }
1478 time_t GetTalentResetTime() const { return _talentMgr->ResetTalentsTime; }
1479 void SetTalentResetTime(time_t time_) { _talentMgr->ResetTalentsTime = time_; }
1480 uint8 GetActiveTalentGroup() const { return _talentMgr->ActiveGroup; }
1481 void SetActiveTalentGroup(uint8 group){ _talentMgr->ActiveGroup = group; }
1482 uint8 GetTalentGroupsCount() const { return _talentMgr->GroupsCount; }
1483 void SetTalentGroupsCount(uint8 count) { _talentMgr->GroupsCount = count; }
1484
1485 bool ResetTalents(bool involuntarily = false);
1486 uint32 GetNextResetTalentsCost() const;
1487 void IncreaseResetTalentsCostAndCounters(uint32 lastResetTalentsCost);
1488 void InitTalentForLevel();
1489 void BuildPlayerTalentsInfoData(WorldPackets::Talent::TalentInfoUpdate& talentInfo);
1490 void BuildPetTalentsInfoData(WorldPackets::Talent::PetTalentInfoUpdate& petTalentInfo) const;
1491 void SendTalentsInfoData(bool pet);
1492 bool LearnTalent(uint32 talentId, uint32 talentRank);
1493 void LearnPetTalent(ObjectGuid petGuid, uint32 talentId, uint32 talentRank);
1494 void SendTameFailure(uint8 result);
1495 bool AddTalent(uint32 spellId, uint8 spec, bool learning);
1496 bool HasTalent(uint32 spell_id, uint8 spec) const;
1497 uint32 CalculateTalentsPoints() const;
1498
1499 // Dual Spec
1500 void UpdateTalentGroupCount(uint8 count);
1501 void ActivateTalentGroup(uint8 group);
1502 void LoadActions(PreparedQueryResult result);
1503
1504 void InitGlyphsForLevel();
1505 void SetGlyphSlot(uint8 slot, uint32 slottype) { SetUInt32Value(PLAYER_FIELD_GLYPH_SLOTS_1 + slot, slottype); }
1507 void SetGlyph(uint8 slot, uint32 glyph);
1508 uint32 GetGlyph(uint8 group, uint8 slot) const { return _talentMgr->GroupInfo[group].Glyphs[slot]; }
1509
1510 PlayerTalentMap const* GetTalentMap(uint8 group) const { return &_talentMgr->GroupInfo[group].Talents; }
1511 PlayerTalentMap* GetTalentMap(uint8 group) { return &_talentMgr->GroupInfo[group].Talents; }
1512 ActionButtonList const& GetActionButtons() const { return m_actionButtons; }
1513
1516 void InitPrimaryProfessions();
1517
1518 PlayerSpellMap const& GetSpellMap() const { return m_spells; }
1519 PlayerSpellMap & GetSpellMap() { return m_spells; }
1520
1521 void AddSpellMod(SpellModifier* mod, bool apply);
1522 static bool IsAffectedBySpellmod(SpellInfo const* spellInfo, SpellModifier* mod, Spell* spell = nullptr);
1523 template <class T>
1524 void ApplySpellMod(uint32 spellId, SpellModOp op, T& basevalue, Spell* spell = nullptr) const;
1525 static void ApplyModToSpell(SpellModifier* mod, Spell* spell);
1526 static bool HasSpellModApplied(SpellModifier* mod, Spell* spell);
1527 void SetSpellModTakingSpell(Spell* spell, bool apply);
1528
1529 void RemoveArenaSpellCooldowns(bool removeActivePetCooldowns = false);
1530 uint32 GetLastPotionId() const { return m_lastPotionId; }
1531 void SetLastPotionId(uint32 item_id) { m_lastPotionId = item_id; }
1532 void UpdatePotionCooldown(Spell* spell = nullptr);
1533
1534 void SetResurrectRequestData(WorldObject const* caster, uint32 health, uint32 mana, uint32 appliedAura);
1535
1537 {
1538 _resurrectionData.reset();
1539 }
1540
1541 bool IsResurrectRequestedBy(ObjectGuid const& guid) const
1542 {
1543 if (!IsResurrectRequested())
1544 return false;
1545
1546 return !_resurrectionData->GUID.IsEmpty() && _resurrectionData->GUID == guid;
1547 }
1548
1549 bool IsResurrectRequested() const { return _resurrectionData.get() != nullptr; }
1550 void ResurrectUsingRequestData();
1551 void ResurrectUsingRequestDataImpl();
1552
1553 uint8 getCinematic() const { return m_cinematic; }
1554 void setCinematic(uint8 cine) { m_cinematic = cine; }
1555
1556 uint32 GetMovie() const { return m_movie; }
1557 void SetMovie(uint32 movie) { m_movie = movie; }
1558
1559 ActionButton* AddActionButton(uint8 button, uint32 action, uint8 type);
1560 void RemoveActionButton(uint8 button);
1561 ActionButton const* GetActionButton(uint8 button);
1562 void SendInitialActionButtons() const { SendActionButtons(1); }
1563 void SendActionButtons(uint32 state) const;
1564 bool IsActionButtonDataValid(uint8 button, uint32 action, uint8 type) const;
1566
1568 void InitPvP();
1569 void UpdatePvPState(bool onlyFFA = false);
1570 void SetPvP(bool state) override;
1571 void UpdatePvP(bool state, bool override = false);
1572 void UpdateZone(uint32 newZone, uint32 newArea);
1573 void UpdateArea(uint32 newArea);
1574 void SetNeedsZoneUpdate(bool needsUpdate) { m_needsZoneUpdate = needsUpdate; }
1575
1576 void UpdateZoneDependentAuras(uint32 zone_id); // zones
1577 void UpdateAreaDependentAuras(uint32 area_id); // subzones
1578
1579 void UpdateAfkReport(time_t currTime);
1580 void UpdatePvPFlag(time_t currTime);
1581 void SetContestedPvP(Player* attackedPlayer = nullptr);
1582 void UpdateContestedPvP(uint32 currTime);
1583 void SetContestedPvPTimer(uint32 newTime) {m_contestedPvPTimer = newTime;}
1584 void ResetContestedPvP();
1585
1587 std::unique_ptr<DuelInfo> duel;
1588 void UpdateDuelFlag(time_t currTime);
1589 void CheckDuelDistance(time_t currTime);
1590 void DuelComplete(DuelCompleteType type);
1591 void SendDuelCountdown(uint32 counter);
1592
1593 bool IsGroupVisibleFor(Player const* p) const;
1594 bool IsInSameGroupWith(Player const* p) const;
1595 bool IsInSameRaidWith(Player const* p) const;
1596 void UninviteFromGroup();
1597 static void RemoveFromGroup(Group* group, ObjectGuid guid, RemoveMethod method = GROUP_REMOVEMETHOD_DEFAULT, ObjectGuid kicker = ObjectGuid::Empty, char const* reason = nullptr);
1599 void SendUpdateToOutOfRangeGroupMembers();
1600
1601 void SetInGuild(ObjectGuid::LowType guildId);
1604 void SetGuildIdInvited(ObjectGuid::LowType GuildId) { m_GuildIdInvited = GuildId; }
1606 Guild* GetGuild();
1607 Guild const* GetGuild() const;
1608 ObjectGuid::LowType GetGuildIdInvited() const { return m_GuildIdInvited; }
1609 static void RemovePetitionsAndSigns(ObjectGuid guid, CharterTypes type);
1610
1611 // Arena Team
1612 void SetInArenaTeam(uint32 ArenaTeamId, uint8 slot, uint8 type);
1613 void SetArenaTeamInfoField(uint8 slot, ArenaTeamInfoType type, uint32 value);
1614 static void LeaveAllArenaTeams(ObjectGuid guid);
1617 void SetArenaTeamIdInvited(uint32 ArenaTeamId) { m_ArenaTeamIdInvited = ArenaTeamId; }
1618 uint32 GetArenaTeamIdInvited() const { return m_ArenaTeamIdInvited; }
1619
1620 Difficulty GetDifficultyID(MapEntry const* mapEntry) const;
1621 Difficulty GetDungeonDifficultyID() const { return m_dungeonDifficulty; }
1622 Difficulty GetRaidDifficultyID() const { return m_raidDifficulty; }
1623 void SetDungeonDifficultyID(Difficulty dungeon_difficulty) { m_dungeonDifficulty = dungeon_difficulty; }
1624 void SetRaidDifficultyID(Difficulty raid_difficulty) { m_raidDifficulty = raid_difficulty; }
1625 static Difficulty CheckLoadedDungeonDifficultyID(Difficulty difficulty);
1626 static Difficulty CheckLoadedRaidDifficultyID(Difficulty difficulty);
1627
1628 bool UpdateSkill(uint32 skill_id, uint32 step);
1629 bool UpdateSkillPro(uint16 skillId, int32 chance, uint32 step);
1630
1631 bool UpdateCraftSkill(uint32 spellid);
1632 bool UpdateGatherSkill(uint32 SkillId, uint32 SkillValue, uint32 RedLevel, uint32 Multiplicator = 1);
1633 bool UpdateFishingSkill();
1634
1635 uint32 GetBaseDefenseSkillValue() const { return GetBaseSkillValue(SKILL_DEFENSE); }
1636 uint32 GetBaseWeaponSkillValue(WeaponAttackType attType) const;
1637
1638 float GetHealthBonusFromStamina();
1639 float GetManaBonusFromIntellect();
1640
1641 bool UpdateStats(Stats stat) override;
1642 bool UpdateAllStats() override;
1643 void ApplySpellPenetrationBonus(int32 amount, bool apply);
1644 void UpdateResistances(uint32 school) override;
1645 void UpdateArmor() override;
1646 void UpdateMaxHealth() override;
1647 void UpdateMaxPower(Powers power) override;
1648 void ApplyFeralAPBonus(int32 amount, bool apply);
1649 void UpdateAttackPowerAndDamage(bool ranged = false) override;
1650 void UpdateShieldBlockValue();
1651 void ApplySpellPowerBonus(int32 amount, bool apply);
1652 void UpdateSpellDamageAndHealingBonus();
1653 void ApplyRatingMod(CombatRating cr, int32 value, bool apply);
1654 void UpdateRating(CombatRating cr);
1655 void UpdateAllRatings();
1656
1657 void CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float& minDamage, float& maxDamage, uint8 damageIndex) const override;
1658
1659 void UpdateDefenseBonusesMod();
1660 void RecalculateRating(CombatRating cr) { ApplyRatingMod(cr, 0, true);}
1661 float GetMeleeCritFromAgility() const;
1662 void GetDodgeFromAgility(float &diminishing, float &nondiminishing) const;
1663 float GetMissPercentageFromDefense() const;
1664 float GetSpellCritFromIntellect() const;
1665 float OCTRegenHPPerSpirit() const;
1666 float OCTRegenMPPerSpirit() const;
1667 float GetRatingMultiplier(CombatRating cr) const;
1668 float GetRatingBonusValue(CombatRating cr) const;
1669
1671 uint32 GetBaseSpellPowerBonus() const { return m_baseSpellPower; }
1672 int32 GetSpellPenetrationItemMod() const { return m_spellPenetrationItemMod; }
1673
1674 bool CanApplyResilience() const override { return true; }
1675
1676 float GetExpertiseDodgeOrParryReduction(WeaponAttackType attType) const;
1677 void UpdateBlockPercentage();
1678 void UpdateCritPercentage(WeaponAttackType attType);
1679 void UpdateAllCritPercentages();
1680 void UpdateParryPercentage();
1681 void UpdateDodgePercentage();
1682 void UpdateMeleeHitChances();
1683 void UpdateRangedHitChances();
1684 void UpdateSpellHitChances();
1685
1686 void UpdateAllSpellCritChances();
1687 void UpdateSpellCritChance(uint32 school);
1688 void UpdateArmorPenetration(int32 amount);
1689 void UpdateExpertise(WeaponAttackType attType);
1690 void ApplyManaRegenBonus(int32 amount, bool apply);
1691 void ApplyHealthRegenBonus(int32 amount, bool apply);
1692 void UpdatePowerRegen(Powers power);
1693 void UpdateRuneRegen(RuneType rune);
1694 float GetPowerRegen(Powers power) const;
1695 uint32 GetRuneTimer(uint8 index) const { return m_runeGraceCooldown[index]; }
1696 void SetRuneTimer(uint8 index, uint32 timer) { m_runeGraceCooldown[index] = timer; }
1697 uint32 GetLastRuneGraceTimer(uint8 index) const { return m_lastRuneGraceTimers[index]; }
1698 void SetLastRuneGraceTimer(uint8 index, uint32 timer) { m_lastRuneGraceTimers[index] = timer; }
1699
1700 ObjectGuid GetLootGUID() const { return m_lootGuid; }
1701 void SetLootGUID(ObjectGuid guid) { m_lootGuid = guid; }
1702
1703 void RemovedInsignia(Player* looterPlr);
1704
1705 WorldSession* GetSession() const { return m_session; }
1706 GameClient* GetGameClient() const;
1707
1708 void BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) const override;
1709 void DestroyForPlayer(Player* target, bool onDeath = false) const override;
1710 void SendLogXPGain(uint32 GivenXP, Unit* victim, uint32 BonusXP, bool recruitAFriend = false, float group_rate=1.0f) const;
1711
1712 // notifiers
1713 void SendAttackSwingCantAttack() const;
1714 void SendAttackSwingCancelAttack() const;
1715 void SendAttackSwingDeadTarget() const;
1716 void SendAttackSwingNotInRange() const;
1717 void SendAttackSwingBadFacingAttack() const;
1718 void SendAutoRepeatCancel(Unit* target);
1719 void SendExplorationExperience(uint32 Area, uint32 Experience) const;
1720
1721 void SendDungeonDifficulty(bool changeCurrentDifficuly, bool changeGroupDifficuly) const;
1722 void SendRaidDifficulty(bool changeCurrentDifficuly, bool changeGroupDifficuly) const;
1723 void ResetInstances(uint8 method, bool isRaid);
1724 void SendResetInstanceSuccess(uint32 MapId) const;
1725 void SendResetInstanceFailed(uint32 reason, uint32 MapId) const;
1726 void SendResetFailedNotify(uint32 mapid) const;
1727
1728 bool UpdatePosition(float x, float y, float z, float orientation, bool teleport = false) override;
1729 bool UpdatePosition(Position const& pos, bool teleport = false) override { return UpdatePosition(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), teleport); }
1730 void ProcessTerrainStatusUpdate(ZLiquidStatus oldLiquidStatus, Optional<LiquidData> const& newLiquidData) override;
1731 void AtExitCombat() override;
1732
1733 void SendMessageToSet(WorldPacket const* data, bool self) const override { SendMessageToSetInRange(data, GetVisibilityRange(), self); }
1734 void SendMessageToSetInRange(WorldPacket const* data, float dist, bool self) const override;
1735 void SendMessageToSetInRange(WorldPacket const* data, float dist, bool self, bool own_team_only, bool required3dDist = false) const;
1736 void SendMessageToSet(WorldPacket const* data, Player const* skipped_rcvr) const override;
1737
1738 Corpse* GetCorpse() const;
1739 void SpawnCorpseBones(bool triggerSave = true);
1740 Corpse* CreateCorpse();
1741 void KillPlayer();
1742 static void OfflineResurrect(ObjectGuid const& guid, CharacterDatabaseTransaction trans);
1743 bool HasCorpse() const { return _corpseLocation.GetMapId() != MAPID_INVALID; }
1744 WorldLocation const& GetCorpseLocation() const { return _corpseLocation; }
1745 uint32 GetResurrectionSpellId();
1746 void ResurrectPlayer(float restore_percent, bool applySickness = false);
1747 void BuildPlayerRepop();
1748 void RepopAtGraveyard();
1749
1750 void RemoveGhoul();
1751
1752 void SendDurabilityLoss();
1753 void DurabilityLossAll(double percent, bool inventory);
1754 void DurabilityLoss(Item* item, double percent);
1755 void DurabilityPointsLossAll(int32 points, bool inventory);
1756 void DurabilityPointsLoss(Item* item, int32 points);
1757 void DurabilityPointLossForEquipSlot(EquipmentSlots slot);
1758 void DurabilityRepairAll(bool takeCost, float discountMod, bool guildBank);
1759 void DurabilityRepair(uint16 pos, bool takeCost, float discountMod);
1760
1761 void UpdateMirrorTimers();
1762 void StopMirrorTimers();
1763 bool IsMirrorTimerActive(MirrorTimerType type) const;
1764
1765 bool CanJoinConstantChannelInZone(ChatChannelsEntry const* channel, AreaTableEntry const* zone) const;
1766
1767 void JoinedChannel(Channel* c);
1768 void LeftChannel(Channel* c);
1769 void CleanupChannels();
1770 void UpdateLocalChannels(uint32 newZone);
1771 void LeaveLFGChannel();
1772
1773 typedef std::list<Channel*> JoinedChannelsList;
1774 JoinedChannelsList const& GetJoinedChannels() const { return m_channels; }
1775
1776 void UpdateDefense();
1777 void UpdateWeaponSkill(Unit* victim, WeaponAttackType attType);
1778 void UpdateCombatSkills(Unit* victim, WeaponAttackType attType, bool defense);
1779
1780 void SetSkill(uint32 id, uint16 step, uint16 newVal, uint16 maxVal);
1781 uint16 GetMaxSkillValue(uint32 skill) const; // max + perm. bonus + temp bonus
1782 uint16 GetPureMaxSkillValue(uint32 skill) const; // max
1783 uint16 GetSkillValue(uint32 skill) const; // skill value + perm. bonus + temp bonus
1784 uint16 GetBaseSkillValue(uint32 skill) const; // skill value + perm. bonus
1785 uint16 GetPureSkillValue(uint32 skill) const; // skill value
1786 int16 GetSkillPermBonusValue(uint32 skill) const;
1787 int16 GetSkillTempBonusValue(uint32 skill) const;
1788 uint16 GetSkillStep(uint32 skill) const; // 0...6
1789 bool HasSkill(uint32 skill) const;
1790 void LearnSkillRewardedSpells(uint32 skillId, uint32 skillValue);
1803
1804 WorldLocation& GetTeleportDest() { return m_teleport_dest; }
1805 uint32 GetTeleportOptions() const { return m_teleport_options; }
1806 bool IsBeingTeleported() const { return IsBeingTeleportedNear() || IsBeingTeleportedFar(); }
1807 bool IsBeingTeleportedNear() const { return mSemaphoreTeleport_Near; }
1808 bool IsBeingTeleportedFar() const { return mSemaphoreTeleport_Far; }
1809 void SetSemaphoreTeleportNear(bool semphsetting) { mSemaphoreTeleport_Near = semphsetting; }
1810 void SetSemaphoreTeleportFar(bool semphsetting) { mSemaphoreTeleport_Far = semphsetting; }
1811 void ProcessDelayedOperations();
1812
1813 void CheckAreaExplore();
1814 void CheckOutdoorsAuraRequirements();
1815
1816 static uint32 TeamForRace(uint8 race);
1817 static TeamId TeamIdForRace(uint8 race);
1818 uint32 GetTeam() const { return m_team; }
1819 TeamId GetTeamId() const { return m_team == ALLIANCE ? TEAM_ALLIANCE : TEAM_HORDE; }
1820 void SetFactionForRace(uint8 race);
1821
1822 void InitDisplayIds();
1823
1824 bool IsAtGroupRewardDistance(WorldObject const* pRewardSource) const;
1825 bool IsAtRecruitAFriendDistance(WorldObject const* pOther) const;
1826 void RewardPlayerAndGroupAtKill(Unit* victim, bool isBattleGround);
1827 void RewardPlayerAndGroupAtEvent(uint32 creature_id, WorldObject* pRewardSource);
1828 bool isHonorOrXPTarget(Unit const* victim) const;
1829
1830 bool GetsRecruitAFriendBonus(bool forXP);
1831 uint8 GetGrantableLevels() const { return m_grantableLevels; }
1832 void SetGrantableLevels(uint8 val) { m_grantableLevels = val; }
1833
1834 ReputationMgr& GetReputationMgr() { return *m_reputationMgr; }
1835 ReputationMgr const& GetReputationMgr() const { return *m_reputationMgr; }
1836 ReputationRank GetReputationRank(uint32 faction_id) const;
1837 void RewardReputation(Unit* victim, float rate);
1838 void RewardReputation(Quest const* quest);
1839
1840 int32 CalculateReputationGain(ReputationSource source, uint32 creatureOrQuestLevel, int32 rep, int32 faction, bool noQuestBonus = false);
1841
1842 void UpdateSkillsForLevel();
1843 void UpdateWeaponsSkillsToMaxSkillsForLevel(); // for .levelup
1844 void ModifySkillBonus(uint32 skillid, int32 val, bool talent);
1845
1846 /*********************************************************/
1847 /*** PVP SYSTEM ***/
1848 /*********************************************************/
1850 void UpdateHonorFields();
1851 bool RewardHonor(Unit* victim, uint32 groupsize, int32 honor = -1, bool pvptoken = false);
1854 void ModifyHonorPoints(int32 value, CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr));
1855 void ModifyArenaPoints(int32 value, CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr));
1856 uint32 GetMaxPersonalArenaRatingRequirement(uint32 minarenaslot) const;
1857 void SetHonorPoints(uint32 value);
1858 void SetArenaPoints(uint32 value);
1859
1860 // duel health and mana reset methods
1861 void SaveHealthBeforeDuel() { healthBeforeDuel = GetHealth(); }
1862 void SaveManaBeforeDuel() { manaBeforeDuel = GetPower(POWER_MANA); }
1863 void RestoreHealthAfterDuel() { SetHealth(healthBeforeDuel); }
1864 void RestoreManaAfterDuel() { SetPower(POWER_MANA, manaBeforeDuel); }
1865
1866 //End of PvP System
1867
1868 void SetDrunkValue(uint8 newDrunkValue, uint32 itemId = 0);
1872 void UpdateInvisibilityDrunkDetect();
1873 static DrunkenState GetDrunkenstateByValue(uint8 value);
1874
1875 uint32 GetDeathTimer() const { return m_deathTimer; }
1876 uint32 GetCorpseReclaimDelay(bool pvp) const;
1877 void UpdateCorpseReclaimDelay();
1878 int32 CalculateCorpseReclaimDelay(bool load = false) const;
1879 void SendCorpseReclaimDelay(uint32 delay) const;
1880
1881 uint32 GetShieldBlockValue() const override; // overwrite Unit version (virtual)
1882 bool CanParry() const { return m_canParry; }
1883 void SetCanParry(bool value);
1884 bool CanBlock() const { return m_canBlock; }
1885 void SetCanBlock(bool value);
1886 bool CanTitanGrip(Item const* item) const;
1887 void SetCanTitanGrip(bool value, uint32 penaltySpellId = 0, int32 allowedItemClass = 0, int32 allowedItemSubClassMask = 0);
1888 void CheckTitanGripPenalty();
1889 bool CanTameExoticPets() const { return IsGameMaster() || HasAuraType(SPELL_AURA_ALLOW_TAME_PET_TYPE); }
1890
1891 void SetRegularAttackTime();
1892
1893 void HandleBaseModFlatValue(BaseModGroup modGroup, float amount, bool apply);
1894 void ApplyBaseModPctValue(BaseModGroup modGroup, float pct);
1895
1896 void SetBaseModFlatValue(BaseModGroup modGroup, float val);
1897 void SetBaseModPctValue(BaseModGroup modGroup, float val);
1898
1899 void UpdateDamageDoneMods(WeaponAttackType attackType, int32 skipEnchantSlot = -1) override;
1900 void UpdateBaseModGroup(BaseModGroup modGroup);
1901
1902 float GetBaseModValue(BaseModGroup modGroup, BaseModType modType) const;
1903 float GetTotalBaseModValue(BaseModGroup modGroup) const;
1904
1905 void _ApplyAllStatBonuses();
1906 void _RemoveAllStatBonuses();
1907
1908 void ResetAllPowers();
1909
1910 SpellSchoolMask GetMeleeDamageSchoolMask(WeaponAttackType attackType = BASE_ATTACK, uint8 damageIndex = 0) const override;
1911
1912 void CastAllObtainSpells();
1913 void ApplyItemObtainSpells(Item* item, bool apply);
1914
1915 void UpdateWeaponDependentCritAuras(WeaponAttackType attackType);
1916 void UpdateAllWeaponDependentCritAuras();
1917
1918 void UpdateWeaponDependentAuras(WeaponAttackType attackType);
1919 void ApplyItemDependentAuras(Item* item, bool apply);
1920
1921 bool CheckAttackFitToAuraRequirement(WeaponAttackType attackType, AuraEffect const* aurEff) const override;
1922
1923 void _ApplyItemMods(Item* item, uint8 slot, bool apply, bool updateItemAuras = true);
1924 void _RemoveAllItemMods();
1925 void _ApplyAllItemMods();
1926 void _ApplyAllLevelScaleItemMods(bool apply);
1927 ScalingStatDistributionEntry const* GetScalingStatDistributionFor(ItemTemplate const& itemTemplate) const;
1928 ScalingStatValuesEntry const* GetScalingStatValuesFor(ItemTemplate const& itemTemplate) const;
1929 void _ApplyItemBonuses(ItemTemplate const* proto, uint8 slot, bool apply, bool only_level_scale = false);
1930 void _ApplyWeaponDamage(uint8 slot, ItemTemplate const* proto, bool apply);
1931 void _ApplyAmmoBonuses();
1932 bool EnchantmentFitsRequirements(uint32 enchantmentcondition, int8 slot) const;
1933 void ToggleMetaGemsActive(uint8 exceptslot, bool apply);
1934 void CorrectMetaGemEnchants(uint8 slot, bool apply);
1935 void InitDataForForm(bool reapplyMods = false);
1936
1937 void ApplyItemEquipSpell(Item* item, bool apply, bool form_change = false);
1938 void ApplyEquipSpell(SpellInfo const* spellInfo, Item* item, bool apply, bool form_change = false);
1939 void UpdateEquipSpellsAtFormChange();
1940 void CastItemCombatSpell(DamageInfo const& damageInfo);
1941 void CastItemCombatSpell(DamageInfo const& damageInfo, Item* item, ItemTemplate const* proto);
1942 void CastItemUseSpell(Item* item, uint32 spellId, SpellCastTargets const& targets, uint8 cast_count, uint32 misc);
1943
1944 void SendEquipmentSetList();
1945 void SetEquipmentSet(EquipmentSetInfo::EquipmentSetData const& eqset);
1946 void DeleteEquipmentSet(uint64 id);
1947
1948 void SendInitWorldStates(uint32 zoneId, uint32 areaId);
1949 void SendUpdateWorldState(uint32 variable, uint32 value) const;
1950 void SendDirectMessage(WorldPacket const* data) const;
1951 void SendBGWeekendWorldStates() const;
1952 void SendBattlefieldWorldStates() const;
1953
1954 void SendAurasForTarget(Unit* target, bool force = false) const;
1955
1957 std::vector<ItemSetEffect*> ItemSetEff;
1958
1959 void SendLoot(ObjectGuid guid, LootType loot_type);
1960 void SendLootError(ObjectGuid const& owner, LootError error) const;
1961 void SendLootRelease(ObjectGuid guid) const;
1962 void SendNotifyLootItemRemoved(uint8 lootListId) const;
1963 void SendNotifyLootMoneyRemoved() const;
1964
1965 /*********************************************************/
1966 /*** BATTLEGROUND SYSTEM ***/
1967 /*********************************************************/
1968
1969 bool InBattleground() const { return m_bgData.bgInstanceID != 0; }
1970 bool InArena() const;
1971 uint32 GetBattlegroundId() const { return m_bgData.bgInstanceID; }
1972 BattlegroundTypeId GetBattlegroundTypeId() const { return m_bgData.bgTypeID; }
1973 Battleground* GetBattleground() const;
1974
1975 bool InBattlegroundQueue(bool ignoreArena = false) const;
1976 bool IsDeserter() const { return HasAura(26013); }
1977
1978 BattlegroundQueueTypeId GetBattlegroundQueueTypeId(uint32 index) const;
1979 uint32 GetBattlegroundQueueIndex(BattlegroundQueueTypeId bgQueueTypeId) const;
1980 bool IsInvitedForBattlegroundQueueType(BattlegroundQueueTypeId bgQueueTypeId) const;
1981 bool InBattlegroundQueueForBattlegroundQueueType(BattlegroundQueueTypeId bgQueueTypeId) const;
1982
1983 void SetBattlegroundId(uint32 val, BattlegroundTypeId bgTypeId);
1984 uint32 AddBattlegroundQueueId(BattlegroundQueueTypeId val);
1985 bool HasFreeBattlegroundQueueId() const;
1986 void RemoveBattlegroundQueueId(BattlegroundQueueTypeId val);
1987 void SetInviteForBattlegroundQueueType(BattlegroundQueueTypeId bgQueueTypeId, uint32 instanceId);
1988 bool IsInvitedForBattlegroundInstance(uint32 instanceId) const;
1989 WorldLocation const& GetBattlegroundEntryPoint() const { return m_bgData.joinPos; }
1990 void SetBattlegroundEntryPoint();
1991
1992 void SetBGTeam(uint32 team);
1993 uint32 GetBGTeam() const;
1994
1995 void LeaveBattleground(bool teleportToEntryPoint = true, bool withoutDeserterDebuff = false);
1996 bool CanJoinToBattleground(Battleground const* bg) const;
1997 bool CanReportAfkDueToLimit();
1998 void ReportedAfkBy(Player* reporter);
1999 void ClearAfkReports() { m_bgData.bgAfkReporter.clear(); }
2000
2001 bool GetBGAccessByLevel(BattlegroundTypeId bgTypeId) const;
2002 bool CanUseBattlegroundObject(GameObject* gameobject) const;
2003 bool isTotalImmune() const;
2004 bool CanCaptureTowerPoint() const;
2005
2006 bool GetRandomWinner() const { return m_IsBGRandomWinner; }
2007 void SetRandomWinner(bool isWinner);
2008
2009 /*********************************************************/
2010 /*** OUTDOOR PVP SYSTEM ***/
2011 /*********************************************************/
2012
2013 OutdoorPvP* GetOutdoorPvP() const;
2014 // returns true if the player is in active state for outdoor pvp objective capturing, false otherwise
2015 bool IsOutdoorPvPActive() const;
2016
2017 /*********************************************************/
2018 /*** ENVIROMENTAL SYSTEM ***/
2019 /*********************************************************/
2020
2021 bool IsImmuneToEnvironmentalDamage() const;
2022 uint32 EnvironmentalDamage(EnviromentalDamage type, uint32 damage);
2023
2024 /*********************************************************/
2025 /*** FLOOD FILTER SYSTEM ***/
2026 /*********************************************************/
2027
2029 {
2031 {
2032 REGULAR = 0,
2033 ADDON = 1,
2034 MAX
2036
2037 time_t Time = 0;
2038 uint32 Count = 0;
2039 };
2040
2041 void UpdateSpeakTime(ChatFloodThrottle::Index index);
2042
2043 /*********************************************************/
2044 /*** VARIOUS SYSTEMS ***/
2045 /*********************************************************/
2046 void UpdateFallInformationIfNeed(MovementInfo const& minfo, uint16 opcode);
2047 // only changed for direct client control (possess, vehicle etc.), not stuff you control using pet commands
2049 void SetFallInformation(uint32 time, float z);
2050 void HandleFall();
2051
2052 bool CanFlyInZone(uint32 mapid, uint32 zone, SpellInfo const* bySpell) const;
2053
2054 void SetClientControl(Unit* target, bool allowMove);
2055
2056 void SetSeer(WorldObject* target) { m_seer = target; }
2057 void SetViewpoint(WorldObject* target, bool apply);
2058 WorldObject* GetViewpoint() const;
2059 void StopCastingCharm();
2060 void StopCastingBindSight() const;
2061
2062 uint32 GetSaveTimer() const { return m_nextSave; }
2063 void SetSaveTimer(uint32 timer) { m_nextSave = timer; }
2064
2065 void SaveRecallPosition() { m_recall_location.WorldRelocate(*this); }
2066 void Recall() { TeleportTo(m_recall_location); }
2067
2068 void SetHomebind(WorldLocation const& loc, uint32 areaId);
2069 void SendBindPointUpdate();
2070 void SendPlayerBound(ObjectGuid const& binderGuid, uint32 areaId) const;
2071
2072 // Homebind coordinates
2078
2079 uint8 GetStartLevel(uint8 playerClass) const;
2080 WorldLocation GetStartPosition() const;
2081
2082 // currently visible objects at player client
2084
2085 bool HaveAtClient(Object const* u) const;
2086
2087 bool IsNeverVisible(bool allowServersideObjects) const override;
2088
2089 bool IsVisibleGloballyFor(Player const* player) const;
2090
2091 void SendInitialVisiblePackets(Unit* target) const;
2092 void UpdateObjectVisibility(bool forced = true) override;
2093 void UpdateVisibilityForPlayer();
2094 void UpdateVisibilityOf(WorldObject* target);
2095 void UpdateTriggerVisibility();
2096 void SetPhaseMask(uint32 newPhaseMask, bool update) override;// overwrite Unit::SetPhaseMask
2097
2098 template<class T>
2099 void UpdateVisibilityOf(T* target, UpdateData& data, std::set<Unit*>& visibleNow);
2100
2101 bool HasAtLoginFlag(AtLoginFlags f) const { return (m_atLoginFlags & f) != 0; }
2102 void SetAtLoginFlag(AtLoginFlags f) { m_atLoginFlags |= f; }
2103 void RemoveAtLoginFlag(AtLoginFlags flags, bool persist = false);
2104
2105 bool isUsingLfg() const;
2106 bool inRandomLfgDungeon() const;
2107
2108 typedef std::set<uint32> DFQuestsDoneList;
2110
2111 // Temporarily removed pet cache
2112 uint32 GetTemporaryUnsummonedPetNumber() const { return m_temporaryUnsummonedPetNumber; }
2113 void SetTemporaryUnsummonedPetNumber(uint32 petnumber) { m_temporaryUnsummonedPetNumber = petnumber; }
2114 void UnsummonPetTemporaryIfAny();
2115 void ResummonPetTemporaryUnSummonedIfAny();
2116 bool IsPetNeedBeTemporaryUnsummoned() const;
2117
2118 void SendCinematicStart(uint32 CinematicSequenceId) const;
2119 void SendMovieStart(uint32 movieId);
2120
2121 uint32 DoRandomRoll(uint32 minimum, uint32 maximum);
2122
2123 /*********************************************************/
2124 /*** INSTANCE SYSTEM ***/
2125 /*********************************************************/
2126
2127 typedef std::unordered_map< uint32 /*mapId*/, InstancePlayerBind > BoundInstancesMap;
2128
2129 void UpdateHomebindTime(uint32 time);
2130
2133 // permanent binds and solo binds by difficulty
2135 InstancePlayerBind* GetBoundInstance(uint32 mapid, Difficulty difficulty, bool withExpired = false);
2136 BoundInstancesMap& GetBoundInstances(Difficulty difficulty) { return m_boundInstances[difficulty]; }
2137 InstanceSave* GetInstanceSave(uint32 mapid);
2138 void UnbindInstance(uint32 mapid, Difficulty difficulty, bool unload = false);
2139 void UnbindInstance(BoundInstancesMap::iterator &itr, Difficulty difficulty, bool unload = false);
2140 InstancePlayerBind* BindToInstance(InstanceSave* save, bool permanent, BindExtensionState extendState = EXTEND_STATE_NORMAL, bool load = false);
2141 void BindToInstance();
2142 void SetPendingBind(uint32 instanceId, uint32 bindTimer);
2143 bool HasPendingBind() const { return _pendingBindId > 0; }
2144 void SendRaidInfo();
2145 void SendSavedInstances();
2146 bool Satisfy(AccessRequirement const* ar, uint32 target_map, bool report = false);
2147 bool CheckInstanceValidity(bool /*isLogin*/);
2148
2149 // last used pet number (for BG's)
2150 uint32 GetLastPetNumber() const { return m_lastpetnumber; }
2151 void SetLastPetNumber(uint32 petnumber) { m_lastpetnumber = petnumber; }
2152
2153 /*********************************************************/
2154 /*** GROUP SYSTEM ***/
2155 /*********************************************************/
2156
2157 Group* GetGroupInvite() const { return m_groupInvite; }
2158 void SetGroupInvite(Group* group) { m_groupInvite = group; }
2159 Group* GetGroup() { return m_group.getTarget(); }
2160 Group const* GetGroup() const { return const_cast<Group const*>(m_group.getTarget()); }
2161 GroupReference& GetGroupRef() { return m_group; }
2162 void SetGroup(Group* group, int8 subgroup = -1);
2163 uint8 GetSubGroup() const { return m_group.getSubGroup(); }
2164 uint32 GetGroupUpdateFlag() const { return m_groupUpdateMask; }
2165 void SetGroupUpdateFlag(uint32 flag) { m_groupUpdateMask |= flag; }
2166 uint64 GetAuraUpdateMaskForRaid() const { return m_auraRaidUpdateMask; }
2167 void SetAuraUpdateMaskForRaid(uint8 slot) { m_auraRaidUpdateMask |= (uint64(1) << slot); }
2168 Player* GetNextRandomRaidMember(float radius);
2169 PartyResult CanUninviteFromGroup(ObjectGuid guidMember = ObjectGuid::Empty) const;
2170
2171 // Battleground / Battlefield Group System
2172 void SetBattlegroundOrBattlefieldRaid(Group* group, int8 subgroup = -1);
2173 void RemoveFromBattlegroundOrBattlefieldRaid();
2174 Group* GetOriginalGroup() const { return m_originalGroup.getTarget(); }
2175 GroupReference& GetOriginalGroupRef() { return m_originalGroup; }
2176 uint8 GetOriginalSubGroup() const { return m_originalGroup.getSubGroup(); }
2177 void SetOriginalGroup(Group* group, int8 subgroup = -1);
2178
2179 void SetPassOnGroupLoot(bool bPassOnGroupLoot) { m_bPassOnGroupLoot = bPassOnGroupLoot; }
2180 bool GetPassOnGroupLoot() const { return m_bPassOnGroupLoot; }
2181
2182 MapReference &GetMapRef() { return m_mapRef; }
2183
2184 // Set map to player and add reference
2185 void SetMap(Map* map) override;
2186 void ResetMap() override;
2187
2188 bool isAllowedToLoot(Creature const* creature) const;
2189
2190 DeclinedName const* GetDeclinedNames() const { return m_declinedname; }
2191 uint8 GetRunesState() const { return m_runes->runeState; }
2192 RuneType GetBaseRune(uint8 index) const { return RuneType(m_runes->runes[index].BaseRune); }
2193 RuneType GetCurrentRune(uint8 index) const { return RuneType(m_runes->runes[index].CurrentRune); }
2194 uint32 GetRuneCooldown(uint8 index) const { return m_runes->runes[index].Cooldown; }
2195 uint32 GetRuneBaseCooldown(uint8 index) const { return GetRuneTypeBaseCooldown(GetBaseRune(index)); }
2196 uint32 GetRuneTypeBaseCooldown(RuneType runeType) const;
2197 bool IsBaseRuneSlotsOnCooldown(RuneType runeType) const;
2198 RuneType GetLastUsedRune() const { return m_runes->lastUsedRune; }
2199 void SetLastUsedRune(RuneType type) { m_runes->lastUsedRune = type; }
2200 void SetBaseRune(uint8 index, RuneType baseRune) { m_runes->runes[index].BaseRune = baseRune; }
2201 void SetCurrentRune(uint8 index, RuneType currentRune) { m_runes->runes[index].CurrentRune = currentRune; }
2202 void SetRuneCooldown(uint8 index, uint32 cooldown, bool casted = false);
2203 void SetRuneConvertAura(uint8 index, AuraEffect const* aura);
2204 void RemoveRuneConvertAura(uint8 index, AuraEffect const* aura);
2205 void AddRuneByAuraEffect(uint8 index, RuneType newType, AuraEffect const* aura);
2206 void RemoveRunesByAuraEffect(AuraEffect const* aura);
2207 void RestoreBaseRune(uint8 index);
2208 void ConvertRune(uint8 index, RuneType newType);
2209 void ResyncRunes() const;
2210 void AddRunePower(uint8 index) const;
2211 void InitRunes();
2212
2213 void SendRespondInspectAchievements(Player* player) const;
2214 bool HasAchieved(uint32 achievementId) const;
2215 void ResetAchievements();
2216 void ResetAchievementCriteria(AchievementCriteriaCondition condition, uint32 value, bool evenIfCriteriaComplete = false);
2217 void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1 = 0, uint32 miscValue2 = 0, WorldObject* ref = nullptr);
2218 void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry, uint32 timeLost = 0);
2219 void RemoveTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry);
2220 void CompletedAchievement(AchievementEntry const* entry);
2221
2222 bool HasTitle(uint32 bitIndex) const;
2223 bool HasTitle(CharTitlesEntry const* title) const;
2224 void SetTitle(CharTitlesEntry const* title, bool lost = false);
2225
2226 //bool isActiveObject() const { return true; }
2227 bool CanSeeSpellClickOn(Creature const* creature) const;
2228
2229 uint32 GetChampioningFaction() const { return m_ChampioningFaction; }
2230 void SetChampioningFaction(uint32 faction) { m_ChampioningFaction = faction; }
2232
2233 float GetAverageItemLevel() const;
2235
2236 void ClearWhisperWhiteList() { WhisperList.clear(); }
2237 void AddWhisperWhiteList(ObjectGuid guid) { WhisperList.push_back(guid); }
2238 bool IsInWhisperWhiteList(ObjectGuid guid);
2239 void RemoveFromWhisperWhiteList(ObjectGuid guid) { WhisperList.remove(guid); }
2240
2241 void SendMovementSetCollisionHeight(float height);
2242
2243 bool CanFly() const override { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_CAN_FLY); }
2244 bool CanEnterWater() const override { return true; }
2245
2246 std::string GetMapAreaAndZoneString() const;
2247 std::string GetCoordsMapAreaAndZoneString() const;
2248
2249 std::string GetDebugInfo() const override;
2250
2251 protected:
2252 // Gamemaster whisper whitelist
2257 float m_powerFraction[MAX_POWERS];
2259
2260 /*********************************************************/
2261 /*** BATTLEGROUND SYSTEM ***/
2262 /*********************************************************/
2263
2264 /*
2265 this is an array of BG queues (BgTypeIDs) in which is player
2266 */
2272
2275
2277
2278 /*********************************************************/
2279 /*** QUEST SYSTEM ***/
2280 /*********************************************************/
2281
2282 //We allow only one timed quest active at the same time. Below can then be simple value instead of set.
2283 typedef std::set<uint32> QuestSet;
2284 typedef std::unordered_map<uint32, time_t> SeasonalQuestMapByQuest;
2285 typedef std::unordered_map<uint32, SeasonalQuestMapByQuest> SeasonalQuestMapByEvent;
2290
2294
2295 /*********************************************************/
2296 /*** LOAD SYSTEM ***/
2297 /*********************************************************/
2298
2299 void _LoadActions(PreparedQueryResult result);
2300 void _LoadAuras(PreparedQueryResult auraResult, uint32 timediff);
2301 void _LoadGlyphAuras();
2302 void _LoadBoundInstances(PreparedQueryResult result);
2303 void _LoadInventory(PreparedQueryResult result, uint32 timeDiff);
2304 void _LoadMail(PreparedQueryResult mailsResult, PreparedQueryResult mailItemsResult);
2305 static Item* _LoadMailedItem(ObjectGuid const& playerGuid, Player* player, uint32 mailId, Mail* mail, Field* fields);
2306 void _LoadQuestStatus(PreparedQueryResult result);
2307 void _LoadQuestStatusRewarded(PreparedQueryResult result);
2308 void _LoadDailyQuestStatus(PreparedQueryResult result);
2309 void _LoadWeeklyQuestStatus(PreparedQueryResult result);
2310 void _LoadMonthlyQuestStatus(PreparedQueryResult result);
2311 void _LoadSeasonalQuestStatus(PreparedQueryResult result);
2312 void _LoadRandomBGStatus(PreparedQueryResult result);
2313 void _LoadGroup(PreparedQueryResult result);
2314 void _LoadSkills(PreparedQueryResult result);
2315 void _LoadSpells(PreparedQueryResult result);
2316 bool _LoadHomeBind(PreparedQueryResult result);
2317 void _LoadDeclinedNames(PreparedQueryResult result);
2318 void _LoadArenaTeamInfo(PreparedQueryResult result);
2319 void _LoadEquipmentSets(PreparedQueryResult result);
2320 void _LoadBGData(PreparedQueryResult result);
2321 void _LoadGlyphs(PreparedQueryResult result);
2322 void _LoadTalents(PreparedQueryResult result);
2323 void _LoadPetStable(uint8 petStableSlots, PreparedQueryResult result);
2324
2325 /*********************************************************/
2326 /*** SAVE SYSTEM ***/
2327 /*********************************************************/
2328
2329 void _SaveActions(CharacterDatabaseTransaction trans);
2330 void _SaveAuras(CharacterDatabaseTransaction trans);
2331 void _SaveInventory(CharacterDatabaseTransaction trans);
2332 void _SaveMail(CharacterDatabaseTransaction trans);
2333 void _SaveQuestStatus(CharacterDatabaseTransaction trans);
2334 void _SaveDailyQuestStatus(CharacterDatabaseTransaction trans);
2335 void _SaveWeeklyQuestStatus(CharacterDatabaseTransaction trans);
2336 void _SaveMonthlyQuestStatus(CharacterDatabaseTransaction trans);
2337 void _SaveSeasonalQuestStatus(CharacterDatabaseTransaction trans);
2338 void _SaveSkills(CharacterDatabaseTransaction trans);
2339 void _SaveSpells(CharacterDatabaseTransaction trans);
2340 void _SaveEquipmentSets(CharacterDatabaseTransaction trans);
2341 void _SaveBGData(CharacterDatabaseTransaction trans);
2342 void _SaveGlyphs(CharacterDatabaseTransaction trans) const;
2343 void _SaveTalents(CharacterDatabaseTransaction trans);
2344 void _SaveStats(CharacterDatabaseTransaction trans) const;
2345
2346 /*********************************************************/
2347 /*** ENVIRONMENTAL SYSTEM ***/
2348 /*********************************************************/
2349 void HandleSobering();
2350 void SendMirrorTimer(MirrorTimerType Type, uint32 MaxValue, uint32 CurrentValue, int32 Regen);
2351 void StopMirrorTimer(MirrorTimerType Type);
2352 void HandleDrowning(uint32 time_diff);
2353 int32 getMaxTimer(MirrorTimerType timer) const;
2354
2355 /*********************************************************/
2356 /*** HONOR SYSTEM ***/
2357 /*********************************************************/
2359
2360 void outDebugValues() const;
2362
2365 std::array<ChatFloodThrottle, ChatFloodThrottle::MAX> m_chatFloodData;
2368
2370
2373
2374 std::vector<Item*> m_itemUpdateQueue;
2376
2378
2381
2384
2386
2389
2392 uint32 m_lastPotionId; // last used health/mana potion in combat, that block next potion use
2393
2395
2397
2398 float m_auraBaseFlatMod[BASEMOD_END];
2399 float m_auraBasePctMod[BASEMOD_END];
2400 int16 m_baseRatingValue[MAX_COMBAT_RATING];
2406
2408
2412
2413 std::unique_ptr<ResurrectionData> _resurrectionData;
2414
2416
2418
2420
2422
2424
2430
2434
2438
2441
2452
2459
2460 // Social
2462
2463 // Groups
2470
2471 // last used pet number (for BG's)
2473
2474 // Player summoning
2477
2478 // Recall position
2480
2484
2485 bool CanAlwaysSee(WorldObject const* obj) const override;
2486
2487 bool IsAlwaysDetectableFor(WorldObject const* seer) const override;
2488
2490
2492
2494
2495 private:
2496 // internal common parts for CanStore/StoreItem functions
2497 InventoryResult CanStoreItem_InSpecificSlot(uint8 bag, uint8 slot, ItemPosCountVec& dest, ItemTemplate const* pProto, uint32& count, bool swap, Item* pSrcItem) const;
2498 InventoryResult CanStoreItem_InBag(uint8 bag, ItemPosCountVec& dest, ItemTemplate const* pProto, uint32& count, bool merge, bool non_specialized, Item* pSrcItem, uint8 skip_bag, uint8 skip_slot) const;
2499 InventoryResult CanStoreItem_InInventorySlots(uint8 slot_begin, uint8 slot_end, ItemPosCountVec& dest, ItemTemplate const* pProto, uint32& count, bool merge, Item* pSrcItem, uint8 skip_bag, uint8 skip_slot) const;
2500 Item* _StoreItem(uint16 pos, Item* pItem, uint32 count, bool clone, bool update);
2501 Item* _LoadItem(CharacterDatabaseTransaction trans, uint32 zoneId, uint32 timeDiff, Field* fields);
2502
2504
2506 void SendRefundInfo(Item* item);
2507 void RefundItem(Item* item);
2508 void SendItemRefundResult(Item* item, ItemExtendedCostEntry const* iece, uint8 error) const;
2509
2510 // know currencies are not removed at any point (0 displayed)
2511 void AddKnownCurrency(uint32 itemId);
2512
2513 void AdjustQuestReqItemCount(Quest const* quest, QuestStatusData& questStatusData);
2514
2515 bool IsCanDelayTeleport() const { return m_bCanDelayTeleport; }
2516 void SetCanDelayTeleport(bool setting) { m_bCanDelayTeleport = setting; }
2517 bool IsHasDelayedTeleport() const { return m_bHasDelayedTeleport; }
2518 void SetDelayedTeleportFlag(bool setting) { m_bHasDelayedTeleport = setting; }
2519 void ScheduleDelayedOperation(uint32 operation) { if (operation < DELAYED_END) m_DelayedOperations |= operation; }
2520
2521 bool IsInstanceLoginGameMasterException() const;
2522
2524
2527
2528 int32 m_MirrorTimer[MAX_TIMERS];
2531
2532 // Rune type / Rune timer
2533 uint32 m_runeGraceCooldown[MAX_RUNES];
2534 uint32 m_lastRuneGraceTimers[MAX_RUNES];
2535
2536 // Current teleport data
2541
2545
2546 std::unique_ptr<PetStable> m_petStable;
2547
2548 // Temporary removed pet cache
2551
2554
2556
2559
2561
2562 // variables to save health and mana before duel and restore them after duel
2565
2567};
2568
2569TC_GAME_API void AddItemsSetItem(Player* player, Item* item);
2570TC_GAME_API void RemoveItemsSetItem(Player* player, ItemTemplate const* proto);
2571
2572#endif
Difficulty
Definition DBCEnums.h:279
AchievementCriteriaTimedTypes
Definition DBCEnums.h:121
AchievementCriteriaCondition
Definition DBCEnums.h:97
#define MAX_DIFFICULTY
Definition DBCEnums.h:294
AchievementCriteriaTypes
Definition DBCEnums.h:133
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
std::shared_ptr< PreparedResultSet > PreparedQueryResult
#define TC_GAME_API
Definition Define.h:114
uint8_t uint8
Definition Define.h:135
int16_t int16
Definition Define.h:130
int8_t int8
Definition Define.h:131
int32_t int32
Definition Define.h:129
uint64_t uint64
Definition Define.h:132
uint16_t uint16
Definition Define.h:134
uint32_t uint32
Definition Define.h:133
uint16 flags
std::map< uint64, EquipmentSetInfo > EquipmentSetContainer
#define ASSERT
Definition Errors.h:68
EnchantmentSlot
@ MAX_ENCHANTMENT_SLOT
InventoryResult
Definition ItemDefines.h:25
@ EQUIP_ERR_OK
Definition ItemDefines.h:26
BuyResult
SellResult
ItemClass
InventoryType
void RemoveItemFromUpdateQueueOf(Item *item, Player *player)
Definition Item.cpp:696
void AddItemToUpdateQueueOf(Item *item, Player *player)
Definition Item.cpp:675
LootType
Definition Loot.h:89
LootError
Definition Loot.h:122
ZLiquidStatus
Definition MapDefines.h:74
TransferAbortReason
Definition Map.h:74
std::list< ObjectGuid > GuidList
Definition ObjectGuid.h:261
std::unordered_set< ObjectGuid > GuidUnorderedSet
Definition ObjectGuid.h:263
std::set< ObjectGuid > GuidSet
Definition ObjectGuid.h:260
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition Optional.h:25
PetSaveMode
Definition PetDefines.h:40
PetType
Definition PetDefines.h:30
EquipmentSlots
Definition Player.h:558
@ EQUIPMENT_SLOT_SHOULDERS
Definition Player.h:562
@ EQUIPMENT_SLOT_BODY
Definition Player.h:563
@ EQUIPMENT_SLOT_HANDS
Definition Player.h:569
@ EQUIPMENT_SLOT_FINGER1
Definition Player.h:570
@ EQUIPMENT_SLOT_NECK
Definition Player.h:561
@ EQUIPMENT_SLOT_FINGER2
Definition Player.h:571
@ EQUIPMENT_SLOT_MAINHAND
Definition Player.h:575
@ EQUIPMENT_SLOT_TABARD
Definition Player.h:578
@ EQUIPMENT_SLOT_TRINKET1
Definition Player.h:572
@ EQUIPMENT_SLOT_END
Definition Player.h:579
@ EQUIPMENT_SLOT_HEAD
Definition Player.h:560
@ EQUIPMENT_SLOT_LEGS
Definition Player.h:566
@ EQUIPMENT_SLOT_BACK
Definition Player.h:574
@ EQUIPMENT_SLOT_OFFHAND
Definition Player.h:576
@ EQUIPMENT_SLOT_WAIST
Definition Player.h:565
@ EQUIPMENT_SLOT_FEET
Definition Player.h:567
@ EQUIPMENT_SLOT_CHEST
Definition Player.h:564
@ EQUIPMENT_SLOT_WRISTS
Definition Player.h:568
@ EQUIPMENT_SLOT_TRINKET2
Definition Player.h:573
@ EQUIPMENT_SLOT_START
Definition Player.h:559
@ EQUIPMENT_SLOT_RANGED
Definition Player.h:577
std::deque< Mail * > PlayerMails
Definition Player.h:99
std::vector< ItemPosCount > ItemPosCountVec
Definition Player.h:632
ArenaTeamInfoType
Definition Player.h:645
@ ARENA_TEAM_GAMES_WEEK
Definition Player.h:649
@ ARENA_TEAM_TYPE
Definition Player.h:647
@ ARENA_TEAM_ID
Definition Player.h:646
@ ARENA_TEAM_END
Definition Player.h:653
@ ARENA_TEAM_PERSONAL_RATING
Definition Player.h:652
@ ARENA_TEAM_MEMBER
Definition Player.h:648
@ ARENA_TEAM_WINS_SEASON
Definition Player.h:651
@ ARENA_TEAM_GAMES_SEASON
Definition Player.h:650
EnviromentalDamage
Type of environmental damages.
Definition Player.h:678
@ DAMAGE_SLIME
Definition Player.h:683
@ DAMAGE_FALL
Definition Player.h:681
@ DAMAGE_LAVA
Definition Player.h:682
@ DAMAGE_FALL_TO_VOID
Definition Player.h:685
@ DAMAGE_DROWNING
Definition Player.h:680
@ DAMAGE_FIRE
Definition Player.h:684
@ DAMAGE_EXHAUSTED
Definition Player.h:679
ReferAFriendError
Definition Player.h:788
@ ERR_REFER_A_FRIEND_TARGET_TOO_HIGH
Definition Player.h:791
@ ERR_REFER_A_FRIEND_SUMMON_OFFLINE_S
Definition Player.h:802
@ ERR_REFER_A_FRIEND_DIFFERENT_FACTION
Definition Player.h:794
@ ERR_REFER_A_FRIEND_NONE
Definition Player.h:789
@ ERR_REFER_A_FRIEND_NO_TARGET
Definition Player.h:797
@ ERR_REFER_A_FRIEND_NOT_NOW
Definition Player.h:795
@ ERR_REFER_A_FRIEND_INSUF_EXPAN_LVL
Definition Player.h:801
@ ERR_REFER_A_FRIEND_INSUFFICIENT_GRANTABLE_LEVELS
Definition Player.h:792
@ ERR_REFER_A_FRIEND_NOT_REFERRED_BY
Definition Player.h:790
@ ERR_REFER_A_FRIEND_TOO_FAR
Definition Player.h:793
@ ERR_REFER_A_FRIEND_SUMMON_LEVEL_MAX_I
Definition Player.h:799
@ ERR_REFER_A_FRIEND_NOT_IN_GROUP
Definition Player.h:798
@ ERR_REFER_A_FRIEND_GRANT_LEVEL_MAX_I
Definition Player.h:796
@ ERR_REFER_A_FRIEND_SUMMON_COOLDOWN
Definition Player.h:800
InventorySlots
Definition Player.h:583
@ INVENTORY_SLOT_BAG_START
Definition Player.h:584
@ INVENTORY_SLOT_BAG_END
Definition Player.h:585
TeleportToOptions
Definition Player.h:666
@ TELE_TO_TRANSPORT_TELEPORT
Definition Player.h:672
@ TELE_TO_SPELL
Definition Player.h:671
@ TELE_TO_NOT_LEAVE_COMBAT
Definition Player.h:669
@ TELE_TO_NOT_UNSUMMON_PET
Definition Player.h:670
@ TELE_TO_GM_MODE
Definition Player.h:667
@ TELE_REVIVE_AT_TELEPORT
Definition Player.h:673
@ TELE_TO_NOT_LEAVE_TRANSPORT
Definition Player.h:668
TC_GAME_API void AddItemsSetItem(Player *player, Item *item)
Definition Item.cpp:43
DuelState
Definition Player.h:254
@ DUEL_STATE_CHALLENGED
Definition Player.h:255
@ DUEL_STATE_COUNTDOWN
Definition Player.h:256
@ DUEL_STATE_COMPLETED
Definition Player.h:258
@ DUEL_STATE_IN_PROGRESS
Definition Player.h:257
PlayerFieldByte2Flags
Definition Player.h:436
@ PLAYER_FIELD_BYTE2_STEALTH
Definition Player.h:438
@ PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW
Definition Player.h:439
@ PLAYER_FIELD_BYTE2_NONE
Definition Player.h:437
TC_GAME_API void RemoveItemsSetItem(Player *player, ItemTemplate const *proto)
Definition Item.cpp:125
QuestSlotStateMask
Definition Player.h:516
@ QUEST_STATE_COMPLETE
Definition Player.h:518
@ QUEST_STATE_FAIL
Definition Player.h:519
@ QUEST_STATE_NONE
Definition Player.h:517
SkillFieldOffset
Definition Player.h:103
@ SKILL_PERM_BONUS_FIELD_OFFSET
Definition Player.h:114
@ SKILL_PERM_BONUS_SHORT_OFFSET
Definition Player.h:115
@ SKILL_STEP_SHORT_OFFSET
Definition Player.h:107
@ SKILL_TEMP_BONUS_FIELD_OFFSET
Definition Player.h:112
@ SKILL_MAX_RANK_FIELD_OFFSET
Definition Player.h:110
@ SKILL_ID_FIELD_OFFSET
Definition Player.h:104
@ SKILL_ID_SHORT_OFFSET
Definition Player.h:105
@ SKILL_RANK_FIELD_OFFSET
Definition Player.h:108
@ SKILL_MAX_RANK_SHORT_OFFSET
Definition Player.h:111
@ SKILL_TEMP_BONUS_SHORT_OFFSET
Definition Player.h:113
@ SKILL_RANK_SHORT_OFFSET
Definition Player.h:109
@ SKILL_STEP_FIELD_OFFSET
Definition Player.h:106
PlayerFieldByteFlags
Definition Player.h:428
@ PLAYER_FIELD_BYTE_NO_RELEASE_WINDOW
Definition Player.h:431
@ PLAYER_FIELD_BYTE_TRACK_STEALTHED
Definition Player.h:429
@ PLAYER_FIELD_BYTE_RELEASE_TIMER
Definition Player.h:430
PlayerRestState
Definition Player.h:806
@ REST_STATE_RESTED
Definition Player.h:807
@ REST_STATE_RAF_LINKED
Definition Player.h:809
@ REST_STATE_NOT_RAF_LINKED
Definition Player.h:808
PlayerExtraFlags
Definition Player.h:459
@ PLAYER_EXTRA_GM_ON
Definition Player.h:461
@ PLAYER_EXTRA_LEVEL_BOOSTED
Definition Player.h:474
@ PLAYER_EXTRA_ACCEPT_WHISPERS
Definition Player.h:462
@ PLAYER_EXTRA_GM_INVISIBLE
Definition Player.h:464
@ PLAYER_EXTRA_HAS_310_FLYER
Definition Player.h:466
@ PLAYER_EXTRA_TAXICHEAT
Definition Player.h:463
@ PLAYER_EXTRA_GRANTED_LEVELS_FROM_RAF
Definition Player.h:473
@ PLAYER_EXTRA_PVP_DEATH
Definition Player.h:469
@ PLAYER_EXTRA_HAS_RACE_CHANGED
Definition Player.h:472
@ PLAYER_EXTRA_GM_CHAT
Definition Player.h:465
std::unordered_map< uint32, PlayerSpell > PlayerSpellMap
Definition Player.h:180
CurrencyItems
Definition Player.h:782
@ ITEM_ARENA_POINTS_ID
Definition Player.h:784
@ ITEM_HONOR_POINTS_ID
Definition Player.h:783
std::unordered_set< SpellModifier * > SpellModContainer
Definition Player.h:181
PlayerFlags
Definition Player.h:345
@ PLAYER_ALLOW_ONLY_ABILITY
Definition Player.h:369
@ PLAYER_FLAGS_UNK28
Definition Player.h:374
@ PLAYER_FLAGS_DND
Definition Player.h:348
@ PLAYER_FLAGS_IN_PVP
Definition Player.h:355
@ PLAYER_FLAGS_HIDE_CLOAK
Definition Player.h:357
@ PLAYER_FLAGS_PLAYED_LONG_TIME
Definition Player.h:358
@ PLAYER_FLAGS_CONTESTED_PVP
Definition Player.h:354
@ PLAYER_FLAGS_NO_XP_GAIN
Definition Player.h:371
@ PLAYER_FLAGS_UNK27
Definition Player.h:373
@ PLAYER_FLAGS_UNK26
Definition Player.h:372
@ PLAYER_FLAGS_GROUP_LEADER
Definition Player.h:346
@ PLAYER_FLAGS_RESTING
Definition Player.h:351
@ PLAYER_FLAGS_IS_OUT_OF_BOUNDS
Definition Player.h:360
@ PLAYER_FLAGS_VOICE_CHAT
Definition Player.h:352
@ PLAYER_FLAGS_GHOST
Definition Player.h:350
@ PLAYER_FLAGS_AFK
Definition Player.h:347
@ PLAYER_FLAGS_UNK20
Definition Player.h:366
@ PLAYER_FLAGS_GM
Definition Player.h:349
@ PLAYER_FLAGS_TAXI_BENCHMARK
Definition Player.h:363
@ PLAYER_FLAGS_HIDE_HELM
Definition Player.h:356
@ PLAYER_FLAGS_LOW_LEVEL_RAID_ENABLED
Definition Player.h:362
@ PLAYER_FLAGS_UNK24
Definition Player.h:370
@ PLAYER_FLAGS_COMMENTATOR2
Definition Player.h:368
@ PLAYER_FLAGS_UNK31
Definition Player.h:377
@ PLAYER_FLAGS_UNK21
Definition Player.h:367
@ PLAYER_FLAGS_UNK29
Definition Player.h:375
@ PLAYER_FLAGS_UNK7
Definition Player.h:353
@ PLAYER_FLAGS_DEVELOPER
Definition Player.h:361
@ PLAYER_FLAGS_PVP_TIMER
Definition Player.h:364
@ PLAYER_FLAGS_UBER
Definition Player.h:365
@ PLAYER_FLAGS_UNK30
Definition Player.h:376
@ PLAYER_FLAGS_PLAYED_TOO_LONG
Definition Player.h:359
ActionButtonUpdateState
Definition Player.h:184
@ ACTIONBUTTON_NEW
Definition Player.h:187
@ ACTIONBUTTON_UNCHANGED
Definition Player.h:185
@ ACTIONBUTTON_DELETED
Definition Player.h:188
@ ACTIONBUTTON_CHANGED
Definition Player.h:186
std::map< uint32, QuestSaveType > QuestStatusSaveMap
Definition Player.h:503
SpellModType
Definition Player.h:123
@ SPELLMOD_FLAT
Definition Player.h:124
@ SPELLMOD_PCT
Definition Player.h:125
RuneCooldowns
Definition Player.h:283
@ RUNE_MISS_COOLDOWN
Definition Player.h:285
@ RUNE_BASE_COOLDOWN
Definition Player.h:284
PlayerFieldBytesOffsets
Definition Player.h:405
@ PLAYER_FIELD_BYTES_OFFSET_LIFETIME_MAX_PVP_RANK
Definition Player.h:409
@ PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES
Definition Player.h:408
@ PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL
Definition Player.h:407
@ PLAYER_FIELD_BYTES_OFFSET_FLAGS
Definition Player.h:406
InventoryPackSlots
Definition Player.h:589
@ INVENTORY_SLOT_ITEM_START
Definition Player.h:590
@ INVENTORY_SLOT_ITEM_END
Definition Player.h:591
PlayerCommandStates
Definition Player.h:813
@ CHEAT_COOLDOWN
Definition Player.h:817
@ CHEAT_POWER
Definition Player.h:818
@ CHEAT_GOD
Definition Player.h:815
@ CHEAT_NONE
Definition Player.h:814
@ CHEAT_WATERWALK
Definition Player.h:819
@ CHEAT_CASTTIME
Definition Player.h:816
PlayerDelayedOperations
Definition Player.h:737
@ DELAYED_END
Definition Player.h:743
@ DELAYED_SAVE_PLAYER
Definition Player.h:738
@ DELAYED_BG_MOUNT_RESTORE
Flag to restore mount state after teleport from BG.
Definition Player.h:741
@ DELAYED_BG_TAXI_RESTORE
Flag to restore taxi state after teleport from BG.
Definition Player.h:742
@ DELAYED_SPELL_CAST_DESERTER
Definition Player.h:740
@ DELAYED_RESURRECT_PLAYER
Definition Player.h:739
RestFlag
Definition Player.h:659
@ REST_FLAG_IN_TAVERN
Definition Player.h:660
@ REST_FLAG_IN_FACTION_AREA
Definition Player.h:662
@ REST_FLAG_IN_CITY
Definition Player.h:661
ActionButtonType
Definition Player.h:192
@ ACTION_BUTTON_EQSET
Definition Player.h:195
@ ACTION_BUTTON_C
Definition Player.h:194
@ ACTION_BUTTON_MACRO
Definition Player.h:196
@ ACTION_BUTTON_ITEM
Definition Player.h:198
@ ACTION_BUTTON_CMACRO
Definition Player.h:197
@ ACTION_BUTTON_SPELL
Definition Player.h:193
std::unordered_map< uint32, PlayerSpellState > PlayerTalentMap
Definition Player.h:179
BuyBackSlots
Definition Player.h:607
@ BUYBACK_SLOT_END
Definition Player.h:610
@ BUYBACK_SLOT_START
Definition Player.h:609
std::map< uint8, ActionButton > ActionButtonList
Definition Player.h:240
KeyRingSlots
Definition Player.h:614
@ KEYRING_SLOT_END
Definition Player.h:616
@ KEYRING_SLOT_START
Definition Player.h:615
PlayerSpellState
Definition Player.h:149
@ PLAYERSPELL_REMOVED
Definition Player.h:153
@ PLAYERSPELL_UNCHANGED
Definition Player.h:150
@ PLAYERSPELL_CHANGED
Definition Player.h:151
@ PLAYERSPELL_NEW
Definition Player.h:152
@ PLAYERSPELL_TEMPORARY
Definition Player.h:154
#define MAX_TIMERS
Definition Player.h:454
QuestSlotOffsets
Definition Player.h:506
@ QUEST_TIME_OFFSET
Definition Player.h:510
@ QUEST_ID_OFFSET
Definition Player.h:507
@ QUEST_COUNTS_OFFSET
Definition Player.h:509
@ QUEST_STATE_OFFSET
Definition Player.h:508
std::unordered_map< uint32, SkillStatusData > SkillStatusMap
Definition Player.h:539
#define ACTION_BUTTON_TYPE(X)
Definition Player.h:213
BankBagSlots
Definition Player.h:601
@ BANK_SLOT_BAG_END
Definition Player.h:603
@ BANK_SLOT_BAG_START
Definition Player.h:602
CurrencyTokenSlots
Definition Player.h:620
@ CURRENCYTOKEN_SLOT_END
Definition Player.h:622
@ CURRENCYTOKEN_SLOT_START
Definition Player.h:621
RuneType
Definition Player.h:289
@ RUNE_UNHOLY
Definition Player.h:291
@ RUNE_DEATH
Definition Player.h:293
@ NUM_RUNE_TYPES
Definition Player.h:294
@ RUNE_FROST
Definition Player.h:292
@ RUNE_BLOOD
Definition Player.h:290
BuyBankSlotResult
Definition Player.h:141
@ ERR_BANKSLOT_NOTBANKER
Definition Player.h:144
@ ERR_BANKSLOT_FAILED_TOO_MANY
Definition Player.h:142
@ ERR_BANKSLOT_OK
Definition Player.h:145
@ ERR_BANKSLOT_INSUFFICIENT_FUNDS
Definition Player.h:143
BankItemSlots
Definition Player.h:595
@ BANK_SLOT_ITEM_START
Definition Player.h:596
@ BANK_SLOT_ITEM_END
Definition Player.h:597
PlayedTimeIndex
Definition Player.h:689
@ PLAYED_TIME_TOTAL
Definition Player.h:690
@ PLAYED_TIME_LEVEL
Definition Player.h:691
#define MAX_PLAYED_TIME_INDEX
Definition Player.h:694
PlayerUnderwaterState
Definition Player.h:130
@ UNDERWATER_INDARKWATER
Definition Player.h:135
@ UNDERWATER_NONE
Definition Player.h:131
@ UNDERWATER_INSLIME
Definition Player.h:134
@ UNDERWATER_EXIST_TIMERS
Definition Player.h:137
@ UNDERWATER_INWATER
Definition Player.h:132
@ UNDERWATER_INLAVA
Definition Player.h:133
InstanceResetWarningType
Definition Player.h:635
@ RAID_INSTANCE_WARNING_MIN
Definition Player.h:637
@ RAID_INSTANCE_EXPIRED
Definition Player.h:640
@ RAID_INSTANCE_WARNING_MIN_SOON
Definition Player.h:638
@ RAID_INSTANCE_WARNING_HOURS
Definition Player.h:636
@ RAID_INSTANCE_WELCOME
Definition Player.h:639
AtLoginFlags
Definition Player.h:479
@ AT_LOGIN_RESET_TALENTS
Definition Player.h:483
@ AT_LOGIN_RESET_SPELLS
Definition Player.h:482
@ AT_LOGIN_NONE
Definition Player.h:480
@ AT_LOGIN_RESET_PET_TALENTS
Definition Player.h:485
@ AT_LOGIN_FIRST
Definition Player.h:486
@ AT_LOGIN_RESURRECT
Definition Player.h:489
@ AT_LOGIN_CUSTOMIZE
Definition Player.h:484
@ AT_LOGIN_RENAME
Definition Player.h:481
@ AT_LOGIN_CHANGE_RACE
Definition Player.h:488
@ AT_LOGIN_CHANGE_FACTION
Definition Player.h:487
PlayerBytes3Offsets
Definition Player.h:397
@ PLAYER_BYTES_3_OFFSET_PVP_TITLE
Definition Player.h:400
@ PLAYER_BYTES_3_OFFSET_INEBRIATION
Definition Player.h:399
@ PLAYER_BYTES_3_OFFSET_GENDER
Definition Player.h:398
@ PLAYER_BYTES_3_OFFSET_ARENA_FACTION
Definition Player.h:401
CharDeleteMethod
Definition Player.h:775
@ CHAR_DELETE_REMOVE
Definition Player.h:776
@ CHAR_DELETE_UNLINK
Definition Player.h:777
#define ACTION_BUTTON_ACTION(X)
Definition Player.h:212
std::list< EnchantDuration > EnchantDurationList
Definition Player.h:331
TC_GAME_API uint32 const MAX_MONEY_AMOUNT
Definition Player.cpp:125
PlayerFieldKillsOffsets
Definition Player.h:443
@ PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS
Definition Player.h:444
@ PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS
Definition Player.h:445
PlayerBytesOffsets
Definition Player.h:381
@ PLAYER_BYTES_OFFSET_HAIR_COLOR_ID
Definition Player.h:385
@ PLAYER_BYTES_OFFSET_HAIR_STYLE_ID
Definition Player.h:384
@ PLAYER_BYTES_OFFSET_SKIN_ID
Definition Player.h:382
@ PLAYER_BYTES_OFFSET_FACE_ID
Definition Player.h:383
MirrorTimerType
Definition Player.h:449
@ FIRE_TIMER
Definition Player.h:452
@ FATIGUE_TIMER
Definition Player.h:450
@ BREATH_TIMER
Definition Player.h:451
BindExtensionState
Definition Player.h:752
@ EXTEND_STATE_NORMAL
Definition Player.h:754
@ EXTEND_STATE_EXTENDED
Definition Player.h:755
@ EXTEND_STATE_EXPIRED
Definition Player.h:753
@ EXTEND_STATE_KEEP
Definition Player.h:756
SkillUpdateState
Definition Player.h:523
@ SKILL_DELETED
Definition Player.h:527
@ SKILL_CHANGED
Definition Player.h:525
@ SKILL_UNCHANGED
Definition Player.h:524
@ SKILL_NEW
Definition Player.h:526
QuestSaveType
Definition Player.h:496
@ QUEST_DELETE_SAVE_TYPE
Definition Player.h:498
@ QUEST_FORCE_DELETE_SAVE_TYPE
Definition Player.h:499
@ QUEST_DEFAULT_SAVE_TYPE
Definition Player.h:497
DrunkenState
Definition Player.h:335
@ DRUNKEN_TIPSY
Definition Player.h:337
@ DRUNKEN_DRUNK
Definition Player.h:338
@ DRUNKEN_SOBER
Definition Player.h:336
@ DRUNKEN_SMASHED
Definition Player.h:339
ReputationSource
Definition Player.h:202
@ REPUTATION_SOURCE_KILL
Definition Player.h:203
@ REPUTATION_SOURCE_SPELL
Definition Player.h:209
@ REPUTATION_SOURCE_QUEST
Definition Player.h:204
@ REPUTATION_SOURCE_MONTHLY_QUEST
Definition Player.h:207
@ REPUTATION_SOURCE_REPEATABLE_QUEST
Definition Player.h:208
@ REPUTATION_SOURCE_WEEKLY_QUEST
Definition Player.h:206
@ REPUTATION_SOURCE_DAILY_QUEST
Definition Player.h:205
PlayerFieldBytes2Offsets
Definition Player.h:413
@ PLAYER_FIELD_BYTES_2_OFFSET_OVERRIDE_SPELLS_ID
Definition Player.h:414
@ PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION
Definition Player.h:416
@ PLAYER_FIELD_BYTES_2_OFFSET_IGNORE_POWER_REGEN_PREDICTION_MASK
Definition Player.h:415
std::map< uint32, QuestStatusData > QuestStatusMap
Definition Player.h:492
std::set< uint32 > RewardedQuestSet
Definition Player.h:493
PlayerBytes2Offsets
Definition Player.h:389
@ PLAYER_BYTES_2_OFFSET_PARTY_TYPE
Definition Player.h:391
@ PLAYER_BYTES_2_OFFSET_BANK_BAG_SLOTS
Definition Player.h:392
@ PLAYER_BYTES_2_OFFSET_REST_STATE
Definition Player.h:393
@ PLAYER_BYTES_2_OFFSET_FACIAL_STYLE
Definition Player.h:390
PlayerSlots
Definition Player.h:547
@ PLAYER_SLOTS_COUNT
Definition Player.h:552
@ PLAYER_SLOT_START
Definition Player.h:549
@ PLAYER_SLOT_END
Definition Player.h:551
PlayerLoginQueryIndex
Definition Player.h:698
@ PLAYER_LOGIN_QUERY_LOAD_SPELL_COOLDOWNS
Definition Player.h:713
@ PLAYER_LOGIN_QUERY_LOAD_GLYPHS
Definition Player.h:721
@ PLAYER_LOGIN_QUERY_LOAD_DECLINED_NAMES
Definition Player.h:714
@ PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS_REW
Definition Player.h:728
@ MAX_PLAYER_LOGIN_QUERY
Definition Player.h:733
@ PLAYER_LOGIN_QUERY_LOAD_DAILY_QUEST_STATUS
Definition Player.h:705
@ PLAYER_LOGIN_QUERY_LOAD_SEASONAL_QUEST_STATUS
Definition Player.h:729
@ PLAYER_LOGIN_QUERY_LOAD_SOCIAL_LIST
Definition Player.h:711
@ PLAYER_LOGIN_QUERY_LOAD_ACTIONS
Definition Player.h:708
@ PLAYER_LOGIN_QUERY_LOAD_SKILLS
Definition Player.h:724
@ PLAYER_LOGIN_QUERY_LOAD_BG_DATA
Definition Player.h:720
@ PLAYER_LOGIN_QUERY_LOAD_ACCOUNT_DATA
Definition Player.h:723
@ PLAYER_LOGIN_QUERY_LOAD_MAIL_ITEMS
Definition Player.h:710
@ PLAYER_LOGIN_QUERY_LOAD_PET_SLOTS
Definition Player.h:732
@ PLAYER_LOGIN_QUERY_LOAD_INVENTORY
Definition Player.h:707
@ PLAYER_LOGIN_QUERY_LOAD_REPUTATION
Definition Player.h:706
@ PLAYER_LOGIN_QUERY_LOAD_FROM
Definition Player.h:699
@ PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS
Definition Player.h:704
@ PLAYER_LOGIN_QUERY_LOAD_WEEKLY_QUEST_STATUS
Definition Player.h:725
@ PLAYER_LOGIN_QUERY_LOAD_MONTHLY_QUEST_STATUS
Definition Player.h:730
@ PLAYER_LOGIN_QUERY_LOAD_GUILD
Definition Player.h:715
@ PLAYER_LOGIN_QUERY_LOAD_EQUIPMENT_SETS
Definition Player.h:719
@ PLAYER_LOGIN_QUERY_LOAD_MAILS
Definition Player.h:709
@ PLAYER_LOGIN_QUERY_LOAD_AURAS
Definition Player.h:702
@ PLAYER_LOGIN_QUERY_LOAD_TALENTS
Definition Player.h:722
@ PLAYER_LOGIN_QUERY_LOAD_BANNED
Definition Player.h:727
@ PLAYER_LOGIN_QUERY_LOAD_ARENA_INFO
Definition Player.h:716
@ PLAYER_LOGIN_QUERY_LOAD_GROUP
Definition Player.h:700
@ PLAYER_LOGIN_QUERY_LOAD_CRITERIA_PROGRESS
Definition Player.h:718
@ PLAYER_LOGIN_QUERY_LOAD_HOME_BIND
Definition Player.h:712
@ PLAYER_LOGIN_QUERY_LOAD_CORPSE_LOCATION
Definition Player.h:731
@ PLAYER_LOGIN_QUERY_LOAD_SPELLS
Definition Player.h:703
@ PLAYER_LOGIN_QUERY_LOAD_BOUND_INSTANCES
Definition Player.h:701
@ PLAYER_LOGIN_QUERY_LOAD_RANDOM_BG
Definition Player.h:726
@ PLAYER_LOGIN_QUERY_LOAD_ACHIEVEMENTS
Definition Player.h:717
std::list< Item * > ItemDurationList
Definition Player.h:332
#define MAPID_INVALID
Definition Position.h:165
QuestFailedReason
Definition QuestDef.h:49
QuestGiverStatus
Definition QuestDef.h:114
QuestStatus
Definition QuestDef.h:102
QuestShareMessages
Definition QuestDef.h:67
static void SaveToDB(QuestPool const &pool, CharacterDatabaseTransaction trans)
GameobjectTypes
#define MAX_TALENT_GROUPS
#define MAX_RUNES
Language
MailResponseType
Gender
@ GENDER_FEMALE
SpellSchoolMask
TradeStatus
@ TRADE_STATUS_TRADE_CANCELED
@ TRADE_STATUS_BUSY
TeamId
@ TEAM_ALLIANCE
@ TEAM_HORDE
#define MAX_GLYPH_SLOT_INDEX
WeaponAttackType
@ BASE_ATTACK
MailResponseResult
@ ALLIANCE
Powers
@ MAX_POWERS
@ POWER_MANA
ReputationRank
DuelCompleteType
TotemCategory
BattlegroundTypeId
@ BATTLEGROUND_TYPE_NONE
Stats
#define PLAYER_MAX_BATTLEGROUND_QUEUES
CharterTypes
RemoveMethod
@ GROUP_REMOVEMETHOD_DEFAULT
@ SKILL_DEFENSE
PartyResult
@ SPELL_AURA_ADD_PCT_MODIFIER
@ SPELL_AURA_ADD_FLAT_MODIFIER
@ SPELL_AURA_ALLOW_TAME_PET_TYPE
SpellModOp
@ SPELLMOD_DAMAGE
@ MAX_SPELLMOD
@ MOVEMENTFLAG_CAN_FLY
NPCFlags
Non Player Character flags.
SheathState
Definition UnitDefines.h:97
BaseModType
Definition Unit.h:202
DeathState
Definition Unit.h:224
#define MAX_COMBAT_RATING
Definition Unit.h:363
BaseModGroup
Definition Unit.h:193
@ BASEMOD_END
Definition Unit.h:198
CombatRating
Definition Unit.h:335
@ NULL_BAG
Definition Unit.h:60
@ NULL_SLOT
Definition Unit.h:61
@ PLAYER_BYTES_3
@ PLAYER_NEXT_LEVEL_XP
@ PLAYER_GUILDID
@ PLAYER_FAKE_INEBRIATION
@ PLAYER_FIELD_COINAGE
@ PLAYER_FIELD_ARENA_CURRENCY
@ PLAYER_XP
@ PLAYER_NO_REAGENT_COST_1
@ PLAYER_FIELD_HONOR_CURRENCY
@ PLAYER_BYTES_2
@ PLAYER_FLAGS
@ PLAYER_GUILDRANK
@ PLAYER_FIELD_GLYPH_SLOTS_1
@ PLAYER_BYTES
@ PLAYER_FIELD_ARENA_TEAM_INFO_1_1
@ PLAYER_CHARACTER_POINTS1
@ PLAYER_CHARACTER_POINTS2
@ PLAYER_SKILL_INFO_1_1
@ UNIT_FIELD_TARGET
@ PLAYER_FIELD_BYTES
Definition Bag.h:27
Class used to access individual fields of database query result.
Definition Field.h:92
Definition Group.h:165
Definition Guild.h:284
Definition Item.h:62
Definition Map.h:302
static ObjectGuid const Empty
Definition ObjectGuid.h:140
uint32 LowType
Definition ObjectGuid.h:142
uint8 GetByteValue(uint16 index, uint8 offset) const
Definition Object.cpp:259
void SetByteValue(uint16 index, uint8 offset, uint8 value)
Definition Object.cpp:660
int32 GetInt32Value(uint16 index) const
Definition Object.cpp:235
void SetInt16Value(uint16 index, uint8 offset, int16 value)
Definition Object.h:120
void SetUInt16Value(uint16 index, uint8 offset, uint16 value)
Definition Object.cpp:676
uint32 GetUInt32Value(uint16 index) const
Definition Object.cpp:241
uint16 GetUInt16Value(uint16 index, uint8 offset) const
Definition Object.cpp:266
void ApplyModInt32Value(uint16 index, int32 val, bool apply)
Definition Object.cpp:729
virtual void BuildCreateUpdateBlockForPlayer(UpdateData *data, Player *target) const
Definition Object.cpp:162
void ApplyModFlag(uint16 index, uint32 flag, bool apply)
Definition Object.cpp:806
void SetGuidValue(uint16 index, ObjectGuid value)
Definition Object.cpp:691
bool HasFlag(uint16 index, uint32 flag) const
Definition Object.cpp:800
virtual void SetObjectScale(float scale)
Definition Object.h:85
void SetUInt32Value(uint16 index, uint32 value)
Definition Object.cpp:577
ObjectGuid GetGUID() const
Definition Object.h:79
Definition Pet.h:40
void InitTaxiNodesForLevel(uint32 race, uint32 chrClass, uint8 level)
uint32 manaBeforeDuel
Definition Player.h:2564
bool m_bCanDelayTeleport
Definition Player.h:2543
void SetSemaphoreTeleportNear(bool semphsetting)
Definition Player.h:1809
bool IsValidPos(uint16 pos, bool explicit_pos) const
Definition Player.h:1100
bool m_needsZoneUpdate
Definition Player.h:2493
bool m_canParry
Definition Player.h:2444
ItemMap mMitems
Definition Player.h:1434
time_t m_summon_expire
Definition Player.h:2475
WorldLocation m_recall_location
Definition Player.h:2479
MapReference m_mapRef
Definition Player.h:2523
WorldLocation m_summon_location
Definition Player.h:2476
void ApplyModFakeDrunkValue(int32 mod, bool apply)
Definition Player.h:1870
uint8 GetGrantableLevels() const
Definition Player.h:1831
uint32 GetXP() const
Definition Player.h:996
float m_ammoDPS
Definition Player.h:2451
void SetTalentGroupsCount(uint8 count)
Definition Player.h:1483
void SetHasRaceChanged()
Definition Player.h:990
uint32 GetArmorProficiency() const
Definition Player.h:1181
GroupReference m_originalGroup
Definition Player.h:2465
static bool IsEquipmentPos(uint16 pos)
Definition Player.h:1095
PlayerSpellMap m_spells
Definition Player.h:2391
float m_rest_bonus
Definition Player.h:2456
uint32 GetTeam() const
Definition Player.h:1818
uint8 GetSkinId() const
Definition Player.h:1019
void SetHairStyleId(uint8 hairStyle)
Definition Player.h:1024
void SetTalentResetTime(time_t time_)
Definition Player.h:1479
uint32 m_temporaryUnsummonedPetNumber
Definition Player.h:2549
uint16 GetSkillLineIdByPos(uint32 pos) const
Definition Player.h:1791
QuestStatusMap m_QuestStatus
Definition Player.h:2379
uint32 m_ChampioningFaction
Definition Player.h:2555
WorldLocation const & GetCorpseLocation() const
Definition Player.h:1744
bool m_bHasDelayedTeleport
Definition Player.h:2544
void ScheduleDelayedOperation(uint32 operation)
Definition Player.h:2519
bool m_InstanceValid
Definition Player.h:2132
void SaveHealthBeforeDuel()
Definition Player.h:1861
WorldLocation & GetTeleportDest()
Definition Player.h:1804
int32 GetFakeDrunkValue() const
Definition Player.h:1871
uint16 GetSkillRankByPos(uint32 pos) const
Definition Player.h:1795
time_t m_deathExpireTime
Definition Player.h:2440
void SetLastPotionId(uint32 item_id)
Definition Player.h:1531
int32 GetQuestLevel(Quest const *quest) const
Definition Player.h:1236
uint64 GetAuraUpdateMaskForRaid() const
Definition Player.h:2166
uint32 GetArenaPersonalRating(uint8 slot) const
Definition Player.h:1616
bool IsGameMasterAcceptingWhispers() const
Definition Player.h:977
void SetSkillMaxRank(uint32 pos, uint16 max)
Definition Player.h:1798
ReputationMgr * m_reputationMgr
Definition Player.h:2553
std::vector< Item * > m_itemUpdateQueue
Definition Player.h:2374
WorldLocation m_teleport_dest
Definition Player.h:2537
uint16 GetSkillPermBonusByPos(uint32 pos) const
Definition Player.h:1801
uint32 GetSaveTimer() const
Definition Player.h:2062
uint32 GetInnTriggerId() const
Definition Player.h:1043
bool isGMVisible() const
Definition Player.h:984
PlayerTalentInfo * _talentMgr
Definition Player.h:2394
float m_homebindZ
Definition Player.h:2077
void SetArenaFaction(uint8 arenaFaction)
Definition Player.h:1849
BattlegroundTypeId GetBattlegroundTypeId() const
Definition Player.h:1972
bool IsBeingTeleportedFar() const
Definition Player.h:1808
uint32 GetBaseDefenseSkillValue() const
Definition Player.h:1635
uint32 m_lastFallTime
Definition Player.h:2525
ItemDurationList m_itemDuration
Definition Player.h:2410
uint32 m_lastPotionId
Definition Player.h:2392
void SetLastUsedRune(RuneType type)
Definition Player.h:2199
QuestStatusMap & getQuestStatusMap()
Definition Player.h:1399
uint32 GetFreeTalentPoints() const
Definition Player.h:1470
CinematicMgr * _cinematicMgr
Definition Player.h:2503
uint8 GetGuildRank() const
Definition Player.h:1603
void SetSkillLineId(uint32 pos, uint16 skillLineId)
Definition Player.h:1792
void SetGroupUpdateFlag(uint32 flag)
Definition Player.h:2165
uint32 m_titanGripPenaltySpellId
Definition Player.h:2449
uint32 GetTemporaryUnsummonedPetNumber() const
Definition Player.h:2112
void SetSeer(WorldObject *target)
Definition Player.h:2056
bool CanParry() const
Definition Player.h:1882
uint32 GetArenaPoints() const
Definition Player.h:1853
std::string autoReplyMsg
Definition Player.h:956
uint32 GetTotalPlayedTime() const
Definition Player.h:1014
PetStable const * GetPetStable() const
Definition Player.h:1047
void SetRuneTimer(uint8 index, uint32 timer)
Definition Player.h:1696
bool m_MonthlyQuestChanged
Definition Player.h:2427
RewardedQuestSet const & getRewardedQuests() const
Definition Player.h:1398
uint8 GetDrunkValue() const
Definition Player.h:1869
void SetNativeGender(Gender gender) override
Definition Player.h:1018
Gender GetNativeGender() const override
Definition Player.h:1017
PlayerSocial * m_social
Definition Player.h:2461
SkillStatusMap mSkillStatus
Definition Player.h:2385
std::unordered_map< uint32, InstancePlayerBind > BoundInstancesMap
Definition Player.h:2127
std::unordered_map< uint32, SeasonalQuestMapByQuest > SeasonalQuestMapByEvent
Definition Player.h:2285
uint32 m_homebindMapId
Definition Player.h:2073
WorldLocation _corpseLocation
Definition Player.h:2566
void SetAcceptWhispers(bool on)
Definition Player.h:975
std::array< ChatFloodThrottle, ChatFloodThrottle::MAX > m_chatFloodData
Definition Player.h:2365
void ClearAfkReports()
Definition Player.h:1999
bool HasRaceChanged() const
Definition Player.h:989
ObjectGuid::LowType m_GuildIdInvited
Definition Player.h:2387
time_t m_lastHonorUpdateTime
Definition Player.h:2358
time_t _restTime
Definition Player.h:2454
void SetGrantableLevels(uint8 val)
Definition Player.h:1832
ObjectGuid m_lootGuid
Definition Player.h:2361
std::unordered_map< ObjectGuid::LowType, Item * > ItemMap
Definition Player.h:1432
void SetSkillPermBonus(uint32 pos, uint16 bonus)
Definition Player.h:1802
GroupReference & GetGroupRef()
Definition Player.h:2161
GroupReference & GetOriginalGroupRef()
Definition Player.h:2175
bool CanTameExoticPets() const
Definition Player.h:1889
uint32 _activeCheats
Definition Player.h:2560
bool CanFly() const override
Definition Player.h:2243
bool HasRestFlag(RestFlag restFlag) const
Definition Player.h:1038
void SetHairColorId(uint8 hairColor)
Definition Player.h:1026
Group const * GetGroup() const
Definition Player.h:2160
uint32 GetArenaTeamIdInvited() const
Definition Player.h:1618
void SetTemporaryUnsummonedPetNumber(uint32 petnumber)
Definition Player.h:2113
DeclinedName const * GetDeclinedNames() const
Definition Player.h:2190
GuidSet m_refundableItems
Definition Player.h:2505
bool CanBlock() const
Definition Player.h:1884
uint8 m_MirrorTimerFlags
Definition Player.h:2529
uint32 m_atLoginFlags
Definition Player.h:2369
uint32 GetMaxKeyringSize() const
Definition Player.h:1174
void SetAuraUpdateMaskForRaid(uint8 slot)
Definition Player.h:2167
uint32 m_ExtraFlags
Definition Player.h:2377
uint32 GetUsedTalentCount() const
Definition Player.h:1472
DFQuestsDoneList m_DFQuests
Definition Player.h:2109
bool UpdatePosition(Position const &pos, bool teleport=false) override
Definition Player.h:1729
uint32 m_ingametime
Definition Player.h:2293
uint32 GetDeathTimer() const
Definition Player.h:1875
bool m_WeeklyQuestChanged
Definition Player.h:2426
Group * m_groupInvite
Definition Player.h:2466
uint8 GetBankBagSlotCount() const
Definition Player.h:1102
bool InBattleground() const
Definition Player.h:1969
uint32 m_sharedQuestId
Definition Player.h:2292
void SetDeveloper(bool on)
Definition Player.h:973
PlayerTalentMap * GetTalentMap(uint8 group)
Definition Player.h:1511
uint8 unReadMails
Definition Player.h:1429
InventoryResult CanTakeMoreSimilarItems(uint32 entry, uint32 count, uint32 *itemLimitCategory=nullptr) const
Definition Player.h:1116
std::set< uint32 > DFQuestsDoneList
Definition Player.h:2108
uint32 m_movie
Definition Player.h:2421
void SetBaseRune(uint8 index, RuneType baseRune)
Definition Player.h:2200
void SetGroupInvite(Group *group)
Definition Player.h:2158
uint32 m_DelayedOperations
Definition Player.h:2542
QuestSet m_timedquests
Definition Player.h:2286
void setWeaponChangeTimer(uint32 time)
Definition Player.h:1390
void SetSelection(ObjectGuid const &guid)
Used for serverside target changes, does not apply to players.
Definition Player.h:1408
PetStable * GetPetStable()
Definition Player.h:1045
void SetRaidDifficultyID(Difficulty raid_difficulty)
Definition Player.h:1624
void SetNoRegentCostMask(flag96 mask)
Definition Player.h:1107
uint32 healthBeforeDuel
Definition Player.h:2563
uint32 GetGlyphSlot(uint8 slot) const
Definition Player.h:1506
Group * GetOriginalGroup() const
Definition Player.h:2174
QuestSet m_weeklyquests
Definition Player.h:2287
bool HasCorpse() const
Definition Player.h:1743
uint32 GetBaseSpellPowerBonus() const
Returns base spellpower bonus from spellpower stat on items.
Definition Player.h:1671
GuidUnorderedSet m_clientGUIDs
Definition Player.h:2083
SeasonalQuestMapByEvent m_seasonalquests
Definition Player.h:2289
void setRegenTimerCount(uint32 time)
Definition Player.h:1389
TradeData * m_trade
Definition Player.h:2423
uint8 GetHairStyleId() const
Definition Player.h:1023
QuestSet m_monthlyquests
Definition Player.h:2288
void SetFacialStyle(uint8 facialStyle)
Definition Player.h:1028
void SetLootGUID(ObjectGuid guid)
Definition Player.h:1701
bool HasPendingBind() const
Definition Player.h:2143
uint32 m_nextSave
Definition Player.h:2364
uint32 m_zoneUpdateTimer
Definition Player.h:2436
bool m_mailsUpdated
Definition Player.h:1381
void SetTalentResetCost(uint32 cost)
Definition Player.h:1477
void RecalculateRating(CombatRating cr)
Definition Player.h:1660
uint32 m_foodEmoteTimerCount
Definition Player.h:2255
void SetGlyphSlot(uint8 slot, uint32 slottype)
Definition Player.h:1505
uint32 m_baseFeralAP
Definition Player.h:2402
time_t GetTalentResetTime() const
Definition Player.h:1478
ObjectGuid m_playerSharingQuest
Definition Player.h:2291
WorldObject * m_seer
Definition Player.h:2048
ActionButtonList const & GetActionButtons() const
Definition Player.h:1512
bool m_SeasonalQuestChanged
Definition Player.h:2428
GuidList WhisperList
Definition Player.h:2253
void SetSkillTempBonus(uint32 pos, int16 bonus)
Definition Player.h:1800
uint8 GetRunesState() const
Definition Player.h:2191
uint32 m_areaUpdateId
Definition Player.h:2437
void SetAtLoginFlag(AtLoginFlags f)
Definition Player.h:2102
bool IsDeserter() const
Definition Player.h:1976
bool GetCommandStatus(uint32 command) const
Definition Player.h:1006
WorldSession * GetSession() const
Definition Player.h:1705
GroupReference m_group
Definition Player.h:2464
PlayerMails const & GetMails() const
Definition Player.h:1421
void SetCommandStatusOn(uint32 command)
Definition Player.h:1007
int32 GetSpellPenetrationItemMod() const
Definition Player.h:1672
uint32 GetSharedQuestID() const
Definition Player.h:1340
JoinedChannelsList m_channels
Definition Player.h:2417
void AddMail(Mail *mail)
Definition Player.h:1417
uint32 GetMailSize()
Definition Player.h:1418
uint32 m_oldpetspell
Definition Player.h:2550
Runes * m_runes
Definition Player.h:2482
uint32 m_currentBuybackSlot
Definition Player.h:2372
void RemoveFromGroup(RemoveMethod method=GROUP_REMOVEMETHOD_DEFAULT)
Definition Player.h:1598
ObjectGuid GetLootGUID() const
Definition Player.h:1700
void SaveRecallPosition()
Definition Player.h:2065
uint32 m_deathTimer
Definition Player.h:2439
uint32 m_regenTimerCount
Definition Player.h:2254
bool GetRandomWinner() const
Definition Player.h:2006
void SetFaceId(uint8 face)
Definition Player.h:1022
uint32 GetInGameTime() const
Definition Player.h:1345
void SetPassOnGroupLoot(bool bPassOnGroupLoot)
Definition Player.h:2179
bool HasEnoughMoney(uint32 amount) const
Definition Player.h:1394
AchievementMgr * m_achievementMgr
Definition Player.h:2552
void ClearWhisperWhiteList()
Definition Player.h:2236
uint8 m_swingErrorMsg
Definition Player.h:2450
uint32 inn_triggerId
Definition Player.h:2455
ReputationMgr const & GetReputationMgr() const
Definition Player.h:1835
bool IsResurrectRequested() const
Definition Player.h:1549
Difficulty GetDungeonDifficultyID() const
Definition Player.h:1621
time_t m_nextMailDelivereTime
Definition Player.h:1430
TeamId GetTeamId() const
Definition Player.h:1819
PlayerSpellMap const & GetSpellMap() const
Definition Player.h:1518
CinematicMgr * GetCinematicMgr() const
Definition Player.h:1196
int16 GetSkillTempBonusByPos(uint32 pos) const
Definition Player.h:1799
uint32 GetHonorPoints() const
Definition Player.h:1852
void SetDelayedTeleportFlag(bool setting)
Definition Player.h:2518
static bool IsInventoryPos(uint16 pos)
Definition Player.h:1093
void SetGMChat(bool on)
Definition Player.h:981
bool m_bPassOnGroupLoot
Definition Player.h:2469
uint8 GetFaceId() const
Definition Player.h:1021
std::set< uint32 > QuestSet
Definition Player.h:2283
bool m_DailyQuestChanged
Definition Player.h:2425
void ClearResurrectRequestData()
Definition Player.h:1536
uint8 GetFacialStyle() const
Definition Player.h:1027
void SetSemaphoreTeleportFar(bool semphsetting)
Definition Player.h:1810
Difficulty m_dungeonDifficulty
Definition Player.h:2366
uint32 m_weaponChangeTimer
Definition Player.h:2433
uint32 m_WeaponProficiency
Definition Player.h:2442
bool mSemaphoreTeleport_Far
Definition Player.h:2540
void SetCurrentRune(uint8 index, RuneType currentRune)
Definition Player.h:2201
uint32 GetRuneCooldown(uint8 index) const
Definition Player.h:2194
void RestoreManaAfterDuel()
Definition Player.h:1864
void RemoveFromWhisperWhiteList(ObjectGuid guid)
Definition Player.h:2239
uint32 m_hostileReferenceCheckTimer
Definition Player.h:2431
uint32 GetArenaTeamId(uint8 slot) const
Definition Player.h:1615
PlayerTalentMap const * GetTalentMap(uint8 group) const
Definition Player.h:1510
PlayerAI * AI() const
Definition Player.h:911
uint8 GetTalentGroupsCount() const
Definition Player.h:1482
DeclinedName * m_declinedname
Definition Player.h:2481
void InitTaxiNodesForLevel()
Definition Player.h:964
bool IsHasDelayedTeleport() const
Definition Player.h:2517
void RestoreHealthAfterDuel()
Definition Player.h:1863
bool m_IsBGRandomWinner
Definition Player.h:2276
uint32 GetWeaponProficiency() const
Definition Player.h:1180
void SetHasLevelBoosted()
Definition Player.h:994
BoundInstancesMap & GetBoundInstances(Difficulty difficulty)
Definition Player.h:2136
uint32 m_drunkTimer
Definition Player.h:2432
bool HasEnoughMoney(int32 amount) const
Definition Player.h:1395
std::unique_ptr< ResurrectionData > _resurrectionData
Definition Player.h:2413
uint8 m_fishingSteps
Definition Player.h:2491
RewardedQuestSet m_RewardedQuests
Definition Player.h:2382
float GetAmmoDPS() const
Definition Player.h:1152
uint32 m_contestedPvPTimer
Definition Player.h:2258
void SetXP(uint32 xp)
Definition Player.h:998
void SetActiveTalentGroup(uint8 group)
Definition Player.h:1481
uint32 GetTalentResetCost() const
Definition Player.h:1476
void Recall()
Definition Player.h:2066
float m_homebindY
Definition Player.h:2076
EnchantDurationList m_enchantDuration
Definition Player.h:2409
void SetCommandStatusOff(uint32 command)
Definition Player.h:1008
TradeData * GetTradeData() const
Definition Player.h:1193
ObjectGuid::LowType GetGuildId() const
Definition Player.h:1605
void AutoStoreLoot(uint32 loot_id, LootStore const &store, bool broadcast=false, bool createdByPlayer=false)
Definition Player.h:1140
Group * GetGroup()
Definition Player.h:2159
bool isGMChat() const
Definition Player.h:980
void SetChampioningFaction(uint32 faction)
Definition Player.h:2230
void SetMovie(uint32 movie)
Definition Player.h:1557
RuneType GetCurrentRune(uint8 index) const
Definition Player.h:2193
uint32 m_baseSpellPower
Definition Player.h:2401
uint32 GetTeleportOptions() const
Definition Player.h:1805
bool IsGameMaster() const
Definition Player.h:976
void SetGuildRank(uint8 rankId)
Definition Player.h:1602
void SetNeedsZoneUpdate(bool needsUpdate)
Definition Player.h:1574
uint32 _restFlagMask
Definition Player.h:2457
bool CanApplyResilience() const override
Definition Player.h:1674
PvPInfo pvpInfo
Definition Player.h:1567
void SetPvPDeath(bool on)
Definition Player.h:988
ObjectGuid::LowType GetGuildIdInvited() const
Definition Player.h:1608
uint8 m_grantableLevels
Definition Player.h:2489
uint32 GetMoney() const
Definition Player.h:1392
uint32 GetLastPetNumber() const
Definition Player.h:2150
uint8 getCinematic() const
Definition Player.h:1553
uint16 m_homebindAreaId
Definition Player.h:2074
void SetCanDelayTeleport(bool setting)
Definition Player.h:2516
void SetTarget(ObjectGuid const &) override
Definition Player.h:1407
uint32 GetXPForNextLevel() const
Definition Player.h:997
uint32 m_zoneUpdateId
Definition Player.h:2435
PlayerTaxi m_taxi
Definition Player.h:963
uint8 m_MirrorTimerFlagsLast
Definition Player.h:2530
std::vector< ItemSetEffect * > ItemSetEff
Definition Player.h:1957
bool IsBeingTeleportedNear() const
Definition Player.h:1807
time_t m_lastDailyQuestTime
Definition Player.h:2429
void SaveManaBeforeDuel()
Definition Player.h:1862
void SetQuestSharingInfo(ObjectGuid guid, uint32 id)
Definition Player.h:1342
uint32 m_baseHealthRegen
Definition Player.h:2404
void ClearQuestSharingInfo()
Definition Player.h:1343
bool mSemaphoreTeleport_Near
Definition Player.h:2539
std::unordered_set< PetAura const * > m_petAuras
Definition Player.h:1055
Difficulty m_raidDifficulty
Definition Player.h:2367
uint8 GetActiveTalentGroup() const
Definition Player.h:1480
bool isDND() const
Definition Player.h:954
void SetDungeonDifficultyID(Difficulty dungeon_difficulty)
Definition Player.h:1623
float m_lastFallZ
Definition Player.h:2526
EquipmentSetContainer _equipmentSets
Definition Player.h:2483
std::vector< Item * > & GetItemUpdateQueue()
Definition Player.h:1092
uint32 m_baseManaRegen
Definition Player.h:2403
time_t m_logintime
Definition Player.h:1011
void AddQuestRewardedTalentCount(uint32 points)
Definition Player.h:1475
Difficulty GetRaidDifficultyID() const
Definition Player.h:1622
uint32 GetRuneBaseCooldown(uint8 index) const
Definition Player.h:2195
void SetSkinId(uint8 skin)
Definition Player.h:1020
MapReference & GetMapRef()
Definition Player.h:2182
uint32 GetGlyph(uint8 group, uint8 slot) const
Definition Player.h:1508
uint32 m_ArenaTeamIdInvited
Definition Player.h:2388
bool HasLevelBoosted() const
Definition Player.h:993
std::unique_ptr< PetStable > m_petStable
Definition Player.h:2546
uint32 GetBattlegroundId() const
Definition Player.h:1971
PlayerSocial * GetSocial()
Definition Player.h:960
static bool IsValidGender(uint8 Gender)
Definition Player.h:1363
void AddArmorProficiency(uint32 newflag)
Definition Player.h:1179
uint32 GetRuneTimer(uint8 index) const
Definition Player.h:1695
std::list< Channel * > JoinedChannelsList
Definition Player.h:1773
uint32 GetGroupUpdateFlag() const
Definition Player.h:2164
PlayerSpellMap & GetSpellMap()
Definition Player.h:1519
bool IsDeveloper() const
Definition Player.h:972
std::unordered_map< uint32, time_t > SeasonalQuestMapByQuest
Definition Player.h:2284
void SetSaveTimer(uint32 timer)
Definition Player.h:2063
void AddWhisperWhiteList(ObjectGuid guid)
Definition Player.h:2237
bool GetPassOnGroupLoot() const
Definition Player.h:2180
uint16 GetSkillMaxRankByPos(uint32 pos) const
Definition Player.h:1797
bool HasAtLoginFlag(AtLoginFlags f) const
Definition Player.h:2101
void SetHas310Flyer(bool on)
Definition Player.h:987
void SetRestState(uint8 restState)
Definition Player.h:1036
uint32 m_HomebindTimer
Definition Player.h:2131
static bool IsBankPos(uint16 pos)
Definition Player.h:1098
uint32 m_titanGripArmorSubclasses
Definition Player.h:2448
uint64 m_auraRaidUpdateMask
Definition Player.h:2468
bool m_canTitanGrip
Definition Player.h:2446
ActionButtonList m_actionButtons
Definition Player.h:2396
std::unique_ptr< DuelInfo > duel
Definition Player.h:1587
bool m_canBlock
Definition Player.h:2445
uint8 GetSubGroup() const
Definition Player.h:2163
bool IsResurrectRequestedBy(ObjectGuid const &guid) const
Definition Player.h:1541
bool isAFK() const
Definition Player.h:953
uint8 m_cinematic
Definition Player.h:2419
void AddTimedQuest(uint32 questId)
Definition Player.h:1348
int32 m_spellPenetrationItemMod
Definition Player.h:2405
void SetFreePrimaryProfessions(uint16 profs)
Definition Player.h:1515
void SendInitialActionButtons() const
Definition Player.h:1562
uint32 GetLastRuneGraceTimer(uint8 index) const
Definition Player.h:1697
bool isAcceptWhispers() const
Definition Player.h:974
size_t GetRewardedQuestCount() const
Definition Player.h:1401
uint8 GetHairColorId() const
Definition Player.h:1025
ObjectGuid GetPlayerSharingQuest() const
Definition Player.h:1341
void RemoveTimedQuest(uint32 questId)
Definition Player.h:1349
void SetTaxiCheater(bool on)
Definition Player.h:983
uint32 GetChampioningFaction() const
Definition Player.h:2229
WorldSession * m_session
Definition Player.h:2415
float GetRestBonus() const
Definition Player.h:1032
void SetArenaTeamIdInvited(uint32 ArenaTeamId)
Definition Player.h:1617
void SendMessageToSet(WorldPacket const *data, bool self) const override
Definition Player.h:1733
uint32 GetLevelPlayedTime() const
Definition Player.h:1015
void SetSkillRank(uint32 pos, uint16 rank)
Definition Player.h:1796
uint32 m_ArmorProficiency
Definition Player.h:2443
bool IsCanDelayTeleport() const
Definition Player.h:2515
bool HasBeenGrantedLevelsFromRaF() const
Definition Player.h:991
bool isDebugAreaTriggers
Definition Player.h:2234
bool CanEnterWater() const override
Definition Player.h:2244
void AddWeaponProficiency(uint32 newflag)
Definition Player.h:1178
void SetMultiActionBars(uint8 mask)
Definition Player.h:1565
uint32 GetFreePrimaryProfessionPoints() const
Definition Player.h:1514
uint32 GetQuestRewardedTalentCount() const
Definition Player.h:1474
uint32 m_teleport_options
Definition Player.h:2538
uint8 GetRestState() const
Definition Player.h:1035
GuidUnorderedSet m_itemSoulboundTradeable
Definition Player.h:2411
void SetSkillStep(uint32 pos, uint16 step)
Definition Player.h:1794
Group * GetGroupInvite() const
Definition Player.h:2157
void SetContestedPvPTimer(uint32 newTime)
Definition Player.h:1583
PlayerMails m_mail
Definition Player.h:2390
void SetInGameTime(uint32 time)
Definition Player.h:1346
uint32 m_team
Definition Player.h:2363
void SetGuildIdInvited(ObjectGuid::LowType GuildId)
Definition Player.h:1604
uint32 m_groupUpdateMask
Definition Player.h:2467
BGData m_bgData
Definition Player.h:2274
Spell * m_spellModTakingSpell
Definition Player.h:2231
void SetBankBagSlotCount(uint8 count)
Definition Player.h:1103
uint16 GetSkillStepByPos(uint32 pos) const
Definition Player.h:1793
QuestStatusSaveMap m_QuestStatusSave
Definition Player.h:2380
uint32 GetMovie() const
Definition Player.h:1556
void setCinematic(uint8 cine)
Definition Player.h:1554
uint32 GetLastPotionId() const
Definition Player.h:1530
RuneType GetBaseRune(uint8 index) const
Definition Player.h:2192
uint32 m_lastpetnumber
Definition Player.h:2472
void SetLastPetNumber(uint32 petnumber)
Definition Player.h:2151
QuestStatusSaveMap m_RewardedQuestsSave
Definition Player.h:2383
uint32 m_titanGripWeaponSubclasses
Definition Player.h:2447
bool isTaxiCheater() const
Definition Player.h:982
float m_healthFraction
Definition Player.h:2256
uint32 _pendingBindTimer
Definition Player.h:2558
void SetBeenGrantedLevelsFromRaF()
Definition Player.h:992
JoinedChannelsList const & GetJoinedChannels() const
Definition Player.h:1774
WorldLocation const & GetBattlegroundEntryPoint() const
Definition Player.h:1989
time_t m_Last_tick
Definition Player.h:1012
ReputationMgr & GetReputationMgr()
Definition Player.h:1834
bool IsBeingTeleported() const
Definition Player.h:1806
uint8 GetOriginalSubGroup() const
Definition Player.h:2176
void SetLastRuneGraceTimer(uint8 index, uint32 timer)
Definition Player.h:1698
void SetUsedTalentCount(uint32 talents)
Definition Player.h:1473
PlayerMenu * PlayerTalkClass
Definition Player.h:1956
float m_homebindX
Definition Player.h:2075
bool m_itemUpdateQueueBlocked
Definition Player.h:2375
uint32 _pendingBindId
Definition Player.h:2557
RuneType GetLastUsedRune() const
Definition Player.h:2198
int32 GetQuestLevel() const
Definition QuestDef.h:233
Definition Spell.h:152
Definition Unit.h:783
void Heartbeat() override
Definition Unit.cpp:510
void UpdateObjectVisibility(bool forced=true) override
Definition Unit.cpp:12151
void AddToWorld() override
Definition Unit.cpp:9569
virtual void AtExitCombat()
Definition Unit.cpp:8720
uint8 GetClass() const
Definition Unit.h:909
virtual bool UpdateAllStats()=0
virtual SpellSchoolMask GetMeleeDamageSchoolMask(WeaponAttackType attackType=BASE_ATTACK, uint8 damageIndex=0) const =0
virtual void SetPvP(bool state)
Definition Unit.cpp:11927
virtual void UpdateAttackPowerAndDamage(bool ranged=false)=0
virtual void Yell(std::string_view text, Language language, WorldObject const *target=nullptr)
Definition Unit.cpp:13810
virtual void UpdateDamageDoneMods(WeaponAttackType attackType, int32 skipEnchantSlot=-1)
Definition Unit.cpp:9126
void CleanupsBeforeDelete(bool finalCleanup=true) override
Definition Unit.cpp:9656
virtual void UpdateResistances(uint32 school)=0
std::string GetDebugInfo() const override
Definition Unit.cpp:13921
virtual bool IsLoading() const
Definition Unit.h:1801
void SetHealth(uint32 val)
Definition Unit.cpp:9338
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
Definition Unit.cpp:4558
UnitAI * GetAI() const
Definition Unit.h:814
virtual bool HasSpell(uint32) const
Definition Unit.h:1175
virtual void SetSheath(SheathState sheathed)
Definition Unit.h:984
virtual bool IsImmunedToSpellEffect(SpellInfo const *spellInfo, SpellEffectInfo const &spellEffectInfo, WorldObject const *caster, bool requireImmunityPurgesEffectAttribute=false) const
Definition Unit.cpp:7751
virtual bool UpdatePosition(float x, float y, float z, float ang, bool teleport=false)
Definition Unit.cpp:12866
virtual void UpdateArmor()=0
virtual void UpdateMaxPower(Powers power)=0
uint32 GetHealth() const
Definition Unit.h:927
virtual void TextEmote(std::string_view text, WorldObject const *target=nullptr, bool isBossEmote=false)
Definition Unit.cpp:13815
void SetPower(Powers power, uint32 val, bool withPowerUpdate=true, bool force=false)
Definition Unit.cpp:9398
virtual uint32 GetShieldBlockValue() const =0
bool HasAuraType(AuraType auraType) const
Definition Unit.cpp:4565
virtual bool UpdateStats(Stats stat)=0
virtual bool CheckAttackFitToAuraRequirement(WeaponAttackType, AuraEffect const *) const
Definition Unit.h:1534
void SetPhaseMask(uint32 newPhaseMask, bool update) override
Definition Unit.cpp:12123
virtual void Update(uint32 time) override
Definition Unit.cpp:440
void RemoveFromWorld() override
Definition Unit.cpp:9578
virtual void UpdateMaxHealth()=0
virtual void CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float &minDamage, float &maxDamage, uint8 damageIndex) const =0
virtual void setDeathState(DeathState s)
Definition Unit.cpp:8668
uint32 GetPower(Powers power) const
Definition Unit.h:948
virtual void ProcessTerrainStatusUpdate(ZLiquidStatus oldLiquidStatus, Optional< LiquidData > const &newLiquidData)
Definition Unit.cpp:3202
bool IsAlwaysDetectableFor(WorldObject const *seer) const override
Definition Unit.cpp:8437
virtual void Whisper(std::string_view text, Language language, Player *target, bool isBossWhisper=false)
Definition Unit.cpp:13820
uint8 GetLevel() const
Definition Unit.h:903
uint8 GetRace() const
Definition Unit.h:906
void DestroyForPlayer(Player *target, bool onDeath) const override
Definition Unit.cpp:13709
virtual void SendMessageToSet(WorldPacket const *data, bool self) const
Definition Object.cpp:1784
virtual void ResetMap()
Definition Object.cpp:1827
virtual void SetMap(Map *map)
Definition Object.cpp:1809
virtual bool IsNeverVisible(bool allowServersideObjects) const
Definition Object.h:625
float GetVisibilityRange() const
Definition Object.cpp:1493
virtual void SendMessageToSetInRange(WorldPacket const *data, float dist, bool self) const
Definition Object.cpp:1790
virtual bool CanAlwaysSee(WorldObject const *) const
Definition Object.h:647
Player session in the World.
Definition Util.h:412
void SetActionAndType(uint32 action, ActionButtonType type)
Definition Player.h:226
uint32 packedData
Definition Player.h:220
ActionButtonUpdateState uState
Definition Player.h:221
uint32 GetAction() const
Definition Player.h:225
ActionButtonType GetType() const
Definition Player.h:224
float y1
Definition Player.h:278
uint32 areaID
Definition Player.h:274
float x1
Definition Player.h:276
float y2
Definition Player.h:279
uint32 areaFlag
Definition Player.h:275
float x2
Definition Player.h:277
Holder for Battleground data.
Definition Player.h:826
uint32 bgTeam
What side the player will be added to.
Definition Player.h:838
BattlegroundTypeId bgTypeID
Definition Player.h:832
time_t bgAfkReportedTimer
Definition Player.h:836
uint32 taxiPath[2]
Definition Player.h:841
void ClearTaxiPath()
Definition Player.h:845
uint32 bgInstanceID
Definition Player.h:830
GuidSet bgAfkReporter
Definition Player.h:834
bool HasTaxiPath() const
Definition Player.h:846
WorldLocation joinPos
From where player entered BG.
Definition Player.h:843
uint8 bgAfkReportedCount
Definition Player.h:835
BGData()
Definition Player.h:827
uint32 mountSpell
Definition Player.h:840
DuelInfo(Player *opponent, Player *initiator, bool isMounted)
Definition Player.h:262
time_t StartTime
Definition Player.h:268
Player *const Opponent
Definition Player.h:264
time_t OutOfBoundsTime
Definition Player.h:269
bool const IsMounted
Definition Player.h:266
Player *const Initiator
Definition Player.h:265
DuelState State
Definition Player.h:267
EnchantmentSlot slot
Definition Player.h:327
uint32 leftduration
Definition Player.h:328
EnchantDuration(Item *_item, EnchantmentSlot _slot, uint32 _leftduration)
Definition Player.h:323
Item * item
Definition Player.h:326
Data sent in EquipmentSet related packets.
InstanceSave * save
Definition Player.h:760
BindExtensionState extendState
Definition Player.h:769
ItemPosCount(uint16 _pos, uint32 _count)
Definition Player.h:627
uint32 count
Definition Player.h:630
bool isContainedIn(std::vector< ItemPosCount > const &vec) const
Definition Player.cpp:24076
uint16 pos
Definition Player.h:629
Definition Loot.h:226
Definition Mail.h:167
bool active
Definition Player.h:160
bool disabled
Definition Player.h:162
bool dependent
Definition Player.h:161
PlayerSpellState state
Definition Player.h:159
time_t ResetTalentsTime
Definition Player.h:892
PlayerTalentInfo(PlayerTalentInfo const &)=delete
uint8 GroupsCount
Definition Player.h:894
uint8 ActiveGroup
Definition Player.h:893
uint32 UsedTalentCount
Definition Player.h:889
TalentGroupInfo GroupInfo[MAX_TALENT_GROUPS]
Definition Player.h:888
uint32 ResetTalentsCost
Definition Player.h:891
PlayerTalentInfo & operator=(PlayerTalentInfo const &)=delete
uint32 QuestRewardedTalentCount
Definition Player.h:890
BattlegroundQueueTypeId bgQueueTypeId
Definition Player.h:2269
float GetPositionZ() const
Definition Position.h:81
float GetOrientation() const
Definition Position.h:82
float GetPositionX() const
Definition Position.h:79
float GetPositionY() const
Definition Position.h:80
bool IsHostile
Definition Player.h:246
bool IsInNoPvPArea
‍Marks if player is in an area which forces PvP flag
Definition Player.h:248
bool IsInFFAPvPArea
‍Marks if player is in a sanctuary or friendly capital city
Definition Player.h:249
bool IsInHostileArea
Definition Player.h:247
PvPInfo()
Definition Player.h:244
time_t EndTimer
‍Marks if player is in an FFAPvP area (such as Gurubashi Arena)
Definition Player.h:250
ObjectGuid GUID
Definition Player.h:864
uint32 Health
Definition Player.h:866
WorldLocation Location
Definition Player.h:865
uint8 CurrentRune
Definition Player.h:300
uint32 Cooldown
Definition Player.h:301
std::unordered_set< AuraEffect const * > ConvertAuras
Definition Player.h:302
uint8 BaseRune
Definition Player.h:299
RuneType lastUsedRune
Definition Player.h:309
void SetRuneState(uint8 index, bool set=true)
Definition Player.h:311
RuneInfo runes[MAX_RUNES]
Definition Player.h:307
uint8 runeState
Definition Player.h:308
SkillUpdateState uState
Definition Player.h:536
SkillStatusData(uint8 _pos, SkillUpdateState _uState)
Definition Player.h:532
SpellModOp op
Definition Player.h:170
SpellModType type
Definition Player.h:171
int32 value
Definition Player.h:173
uint32 spellId
Definition Player.h:175
Aura *const ownerAura
Definition Player.h:176
SpellModifier(Aura *_ownerAura)
Definition Player.h:168
flag96 mask
Definition Player.h:174
PlayerTalentMap Talents
Definition Player.h:875
uint32 Glyphs[MAX_GLYPH_SLOT_INDEX]
Definition Player.h:876
bool IsTargetResult
Definition Player.h:857
TradeStatus Status
Definition Player.h:854
uint32 ItemLimitCategoryId
Definition Player.h:858
InventoryResult Result
Definition Player.h:856
ObjectGuid TraderGuid
Definition Player.h:855