diff options
Diffstat (limited to 'src/game/Player.h')
-rw-r--r-- | src/game/Player.h | 137 |
1 files changed, 78 insertions, 59 deletions
diff --git a/src/game/Player.h b/src/game/Player.h index 379bb606f7a..f6784e402a2 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -355,6 +355,7 @@ struct LookingForGroup LookingForGroupSlot slots[MAX_LOOKING_FOR_GROUP_SLOT]; LookingForGroupSlot more; std::string comment; + uint8 roles; }; enum PlayerMovementType @@ -543,7 +544,7 @@ enum PlayerSlots // first slot for item stored (in any way in player m_items data) PLAYER_SLOT_START = 0, // last+1 slot for item stored (in any way in player m_items data) - PLAYER_SLOT_END = 200, + PLAYER_SLOT_END = 150, PLAYER_SLOTS_COUNT = (PLAYER_SLOT_END - PLAYER_SLOT_START) }; @@ -611,24 +612,39 @@ enum KeyRingSlots // 32 slots KEYRING_SLOT_END = 118 }; -enum VanityPetSlots // 18 slots +enum CurrencyTokenSlots // 32 slots { - VANITYPET_SLOT_START = 118, // not use, vanity pets stored as spells - VANITYPET_SLOT_END = 136 // not allowed any content in. + CURRENCYTOKEN_SLOT_START = 118, + CURRENCYTOKEN_SLOT_END = 150 }; -enum CurrencyTokenSlots // 32 slots +enum EquipmentSetUpdateState { - CURRENCYTOKEN_SLOT_START = 136, - CURRENCYTOKEN_SLOT_END = 168 + EQUIPMENT_SET_UNCHANGED = 0, + EQUIPMENT_SET_CHANGED = 1, + EQUIPMENT_SET_NEW = 2, + EQUIPMENT_SET_DELETED = 3 }; -enum QuestBagSlots // 32 slots +struct EquipmentSet { - QUESTBAG_SLOT_START = 168, // not use - QUESTBAG_SLOT_END = 200 // not allowed any content in. + EquipmentSet() : Guid(0), state(EQUIPMENT_SET_NEW) + { + for(int i = 0; i < EQUIPMENT_SLOT_END; ++i) + Items[i] = 0; + } + + uint64 Guid; + std::string Name; + std::string IconName; + uint32 Items[EQUIPMENT_SLOT_END]; + EquipmentSetUpdateState state; }; +#define MAX_EQUIPMENT_SET_INDEX 10 // client limit + +typedef std::map<uint32, EquipmentSet> EquipmentSets; + struct ItemPosCount { ItemPosCount(uint16 _pos, uint32 _count) : pos(_pos), count(_count) {} @@ -647,15 +663,19 @@ enum TradeSlots enum TransferAbortReason { - TRANSFER_ABORT_ERROR = 0x00, - TRANSFER_ABORT_MAX_PLAYERS = 0x01, // Transfer Aborted: instance is full - TRANSFER_ABORT_NOT_FOUND = 0x02, // Transfer Aborted: instance not found - TRANSFER_ABORT_TOO_MANY_INSTANCES = 0x03, // You have entered too many instances recently. - TRANSFER_ABORT_ZONE_IN_COMBAT = 0x05, // Unable to zone in while an encounter is in progress. - TRANSFER_ABORT_INSUF_EXPAN_LVL = 0x06, // You must have <TBC,WotLK> expansion installed to access this area. - TRANSFER_ABORT_DIFFICULTY = 0x07, // <Normal,Heroic,Epic> difficulty mode is not available for %s. - TRANSFER_ABORT_UNIQUE_MESSAGE = 0x08, // Until you've escaped TLK's grasp, you cannot leave this place! - TRANSFER_ABORT_TOO_MANY_REALM_INSTANCES = 0x09 // Additional instances cannot be launched, please try again later. + TRANSFER_ABORT_NONE = 0x00, + TRANSFER_ABORT_ERROR = 0x01, + TRANSFER_ABORT_MAX_PLAYERS = 0x02, // Transfer Aborted: instance is full + TRANSFER_ABORT_NOT_FOUND = 0x03, // Transfer Aborted: instance not found + TRANSFER_ABORT_TOO_MANY_INSTANCES = 0x04, // You have entered too many instances recently. + TRANSFER_ABORT_ZONE_IN_COMBAT = 0x06, // Unable to zone in while an encounter is in progress. + TRANSFER_ABORT_INSUF_EXPAN_LVL = 0x07, // You must have <TBC,WotLK> expansion installed to access this area. + TRANSFER_ABORT_DIFFICULTY = 0x08, // <Normal,Heroic,Epic> difficulty mode is not available for %s. + TRANSFER_ABORT_UNIQUE_MESSAGE = 0x09, // Until you've escaped TLK's grasp, you cannot leave this place! + TRANSFER_ABORT_TOO_MANY_REALM_INSTANCES = 0x0A, // Additional instances cannot be launched, please try again later. + TRANSFER_ABORT_NEED_GROUP = 0x0B, // 3.1 + TRANSFER_ABORT_NOT_FOUND2 = 0x0C, // 3.1 + TRANSFER_ABORT_NOT_FOUND3 = 0x0D, // 3.1 }; enum InstanceResetWarningType @@ -724,20 +744,20 @@ enum PlayerLoginQueryIndex PLAYER_LOGIN_QUERY_LOADSPELLS = 4, PLAYER_LOGIN_QUERY_LOADQUESTSTATUS = 5, PLAYER_LOGIN_QUERY_LOADDAILYQUESTSTATUS = 6, - PLAYER_LOGIN_QUERY_LOADTUTORIALS = 7, // common for all characters for some account at specific realm - PLAYER_LOGIN_QUERY_LOADREPUTATION = 8, - PLAYER_LOGIN_QUERY_LOADINVENTORY = 9, - PLAYER_LOGIN_QUERY_LOADACTIONS = 10, - PLAYER_LOGIN_QUERY_LOADMAILCOUNT = 11, - PLAYER_LOGIN_QUERY_LOADMAILDATE = 12, - PLAYER_LOGIN_QUERY_LOADSOCIALLIST = 13, - PLAYER_LOGIN_QUERY_LOADHOMEBIND = 14, - PLAYER_LOGIN_QUERY_LOADSPELLCOOLDOWNS = 15, - PLAYER_LOGIN_QUERY_LOADDECLINEDNAMES = 16, - PLAYER_LOGIN_QUERY_LOADGUILD = 17, - PLAYER_LOGIN_QUERY_LOADARENAINFO = 18, - PLAYER_LOGIN_QUERY_LOADACHIEVEMENTS = 19, - PLAYER_LOGIN_QUERY_LOADCRITERIAPROGRESS = 20, + PLAYER_LOGIN_QUERY_LOADREPUTATION = 7, + PLAYER_LOGIN_QUERY_LOADINVENTORY = 8, + PLAYER_LOGIN_QUERY_LOADACTIONS = 9, + PLAYER_LOGIN_QUERY_LOADMAILCOUNT = 10, + PLAYER_LOGIN_QUERY_LOADMAILDATE = 11, + PLAYER_LOGIN_QUERY_LOADSOCIALLIST = 12, + PLAYER_LOGIN_QUERY_LOADHOMEBIND = 13, + PLAYER_LOGIN_QUERY_LOADSPELLCOOLDOWNS = 14, + PLAYER_LOGIN_QUERY_LOADDECLINEDNAMES = 15, + PLAYER_LOGIN_QUERY_LOADGUILD = 16, + PLAYER_LOGIN_QUERY_LOADARENAINFO = 17, + PLAYER_LOGIN_QUERY_LOADACHIEVEMENTS = 18, + PLAYER_LOGIN_QUERY_LOADCRITERIAPROGRESS = 19, + PLAYER_LOGIN_QUERY_LOADEQUIPMENTSETS = 20, MAX_PLAYER_LOGIN_QUERY = 21 }; @@ -1095,6 +1115,7 @@ class TRINITY_DLL_SPEC Player : public Unit void ApplyEnchantment(Item *item,EnchantmentSlot slot,bool apply, bool apply_dur = true, bool ignore_condition = false); void ApplyEnchantment(Item *item,bool apply); void SendEnchantmentDurations(); + void BuildEnchantmentsInfoData(WorldPacket *data); void AddItemDurations(Item *item); void RemoveItemDurations(Item *item); void SendItemDurations(); @@ -1271,22 +1292,6 @@ class TRINITY_DLL_SPEC Player : public Unit UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED); } - uint32 GetTutorialInt(uint32 intId ) - { - ASSERT( (intId < 8) ); - return m_Tutorials[intId]; - } - - void SetTutorialInt(uint32 intId, uint32 value) - { - ASSERT( (intId < 8) ); - if(m_Tutorials[intId]!=value) - { - m_Tutorials[intId] = value; - m_TutorialsChanged = true; - } - } - QuestStatusMap& getQuestStatusMap() { return mQuestStatus; }; const uint64& GetSelection( ) const { return m_curSelection; } @@ -1373,12 +1378,21 @@ class TRINITY_DLL_SPEC Player : public Unit bool resetTalents(bool no_cost = false); uint32 resetTalentsCost() const; void InitTalentForLevel(); - + void BuildPlayerTalentsInfoData(WorldPacket *data); + void BuildPetTalentsInfoData(WorldPacket *data); + void SendTalentsInfoData(bool pet); void LearnTalent(uint32 talentId, uint32 talentRank); void LearnPetTalent(uint64 petGuid, uint32 talentId, uint32 talentRank); uint32 CalculateTalentsPoints() const; + // Dual Spec + uint32 GetActiveSpec() { return m_activeSpec; } + void SetActiveSpec(uint32 spec) { m_activeSpec = spec; } + uint32 GetSpecsCount() { return m_specsCount; } + void SetSpecsCount(uint32 count) { m_specsCount = count; } + void ActivateSpec(uint32 specNum); + void InitGlyphsForLevel(); void SetGlyphSlot(uint8 slot, uint32 slottype) { SetUInt32Value(PLAYER_FIELD_GLYPH_SLOTS_1 + slot, slottype); } uint32 GetGlyphSlot(uint8 slot) { return GetUInt32Value(PLAYER_FIELD_GLYPH_SLOTS_1 + slot); } @@ -1758,6 +1772,10 @@ class TRINITY_DLL_SPEC Player : public Unit void CastItemCombatSpell(Item *item, CalcDamageInfo *damageInfo, ItemPrototype const * proto); void CastItemUseSpell(Item *item,SpellCastTargets const& targets,uint8 cast_count, uint32 glyphIndex); + void SendEquipmentSetList(); + void SetEquipmentSet(uint32 index, EquipmentSet eqset); + void DeleteEquipmentSet(uint64 setGuid); + void SendInitWorldStates(uint32 zone, uint32 area); void SendUpdateWorldState(uint32 Field, uint32 Value); void SendDirectMessage(WorldPacket *data); @@ -1928,11 +1946,11 @@ class TRINITY_DLL_SPEC Player : public Unit } void HandleFall(MovementInfo const& movementInfo); - bool isMoving() const { return HasUnitMovementFlag(movementFlagsMask); } - bool isMovingOrTurning() const { return HasUnitMovementFlag(movementOrTurningFlagsMask); } + bool isMoving() const { return m_movementInfo.HasMovementFlag(movementFlagsMask); } + bool isMovingOrTurning() const { return m_movementInfo.HasMovementFlag(movementOrTurningFlagsMask); } - bool CanFly() const { return HasUnitMovementFlag(MOVEMENTFLAG_CAN_FLY); } - bool IsFlying() const { return HasUnitMovementFlag(MOVEMENTFLAG_FLYING); } + bool CanFly() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_CAN_FLY); } + bool IsFlying() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_FLYING); } bool IsAllowUseFlyMountsHere() const; void SetClientControl(Unit* target, uint8 allowMove); @@ -2127,11 +2145,11 @@ class TRINITY_DLL_SPEC Player : public Unit void _LoadGroup(QueryResult *result); void _LoadSkills(); void _LoadSpells(QueryResult *result); - void _LoadTutorials(QueryResult *result); void _LoadFriendList(QueryResult *result); bool _LoadHomeBind(QueryResult *result); void _LoadDeclinedNames(QueryResult *result); void _LoadArenaTeamInfo(QueryResult *result); + void _LoadEquipmentSets(QueryResult *result); /*********************************************************/ /*** SAVE SYSTEM ***/ @@ -2144,7 +2162,7 @@ class TRINITY_DLL_SPEC Player : public Unit void _SaveQuestStatus(); void _SaveDailyQuestStatus(); void _SaveSpells(); - void _SaveTutorials(); + void _SaveEquipmentSets(); void _SetCreateBits(UpdateMask *updateMask, Player *target) const; void _SetUpdateBits(UpdateMask *updateMask, Player *target) const; @@ -2197,6 +2215,9 @@ class TRINITY_DLL_SPEC Player : public Unit PlayerSpellMap m_spells; uint32 m_lastPotionId; // last used health/mana potion in combat, that block next potion use + uint32 m_activeSpec; + uint32 m_specsCount; + ActionButtonList m_actionButtons; float m_auraBaseMod[BASEMOD_END][MOD_END]; @@ -2231,9 +2252,6 @@ class TRINITY_DLL_SPEC Player : public Unit time_t m_nextThinkTime; - uint32 m_Tutorials[8]; - bool m_TutorialsChanged; - bool m_DailyQuestChanged; time_t m_lastDailyQuestTime; @@ -2292,6 +2310,7 @@ class TRINITY_DLL_SPEC Player : public Unit DeclinedName *m_declinedname; Runes *m_runes; + EquipmentSets m_EquipmentSets; private: // internal common parts for CanStore/StoreItem functions uint8 _CanStoreItem_InSpecificSlot( uint8 bag, uint8 slot, ItemPosCountVec& dest, ItemPrototype const *pProto, uint32& count, bool swap, Item *pSrcItem ) const; |