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