#ifndef OBJECT_CLIENT_CG_PLAYER_HPP #define OBJECT_CLIENT_CG_PLAYER_HPP #include "object/Types.hpp" #include "util/GUID.hpp" #include struct CQuestLogData { int32_t questID; uint32_t field2; uint32_t field3; uint32_t field4; uint32_t field5; }; // TODO is this VisibleItem_C? struct CVisibleItemData { int32_t entryID; uint32_t enchantment; }; struct CSkillInfo { uint16_t skillLineID; uint16_t skillStep; uint16_t skillRank; uint16_t skillMaxRank; int16_t skillTempModifier; int16_t skillPermModifier; }; struct CArenaTeamInfo { uint32_t field1; uint32_t field2; uint32_t field3; uint32_t field4; uint32_t field5; uint32_t field6; uint32_t field7; }; struct CGPlayerData { WOWGUID duelArbiter; uint32_t flags; uint32_t guildID; uint32_t guildRank; uint8_t skinID; uint8_t faceID; uint8_t hairStyleID; uint8_t hairColorID; uint8_t facialHairStyleID; uint8_t bytes_2_2; // TODO uint8_t bytes_2_3; // TODO uint8_t restState; uint8_t bytes_3_1; // TODO uint8_t bytes_3_2; // TODO uint8_t bytes_3_3; // TODO uint8_t bytes_3_4; // TODO uint32_t duelTeam; int32_t guildTimestamp; CQuestLogData questLog[25]; CVisibleItemData visibleItems[19]; int32_t chosenTitle; int32_t fakeInebriation; int32_t pad1; WOWGUID invSlots[NUM_INVENTORY_SLOTS]; WOWGUID packSlots[16]; WOWGUID bankSlots[28]; WOWGUID bankBagSlots[7]; WOWGUID vendorBuybackSlots[12]; WOWGUID keyringSlots[32]; WOWGUID currencyTokenSlots[32]; WOWGUID farsightObject; WOWGUID knownTitles; WOWGUID knownTitles2; WOWGUID knownTitles3; WOWGUID knownCurrencies; uint32_t xp; uint32_t nextLevelXP; CSkillInfo skillInfo[128]; int32_t characterPoints[2]; uint32_t trackCreatureMask; uint32_t trackResourceMask; float blockPercentage; float dodgePercentage; float parryPercentage; int32_t expertise; int32_t offhandExpertise; float critPercentage; float rangedCritPercentage; float offhandCritPercentage; float spellCritPercentage[7]; int32_t shieldBlock; float shieldBlockCritPercentage; uint8_t exploredZones[512]; uint32_t restStateXP; uint32_t coinage; int32_t modDamageDonePos[7]; int32_t modDamageDoneNeg[7]; float modDamageDonePct[7]; uint32_t modHealingDonePos; float modHealingPct; float modHealingDonePct; int32_t modTargetResistance; int32_t modTargetPhysicalResistance; uint8_t field_bytes_1; // TODO uint8_t field_bytes_2; // TODO uint8_t field_bytes_3; // TODO uint8_t field_bytes_4; // TODO int32_t ammoID; int32_t selfResSpell; uint32_t pvpMedals; uint32_t buybackPrice[12]; uint32_t buybackTimestamp[12]; uint16_t kills[2]; uint32_t todayContribution; uint32_t yesterdayContribution; uint32_t lifetimeHonorableKills; uint8_t field_bytes_2_1; // TODO uint8_t field_bytes_2_2; // TODO uint8_t field_bytes_2_3; // TODO uint8_t field_bytes_2_4; // TODO int32_t watchedFactionIndex; uint32_t combatRating[25]; CArenaTeamInfo arenaTeamInfo[3]; uint32_t honorCurrency; uint32_t arenaCurrency; uint32_t maxLevel; uint32_t dailyQuests[25]; float runeRegen[4]; uint32_t noReagentCost[3]; uint32_t glyphSlots[6]; uint32_t glyphs[6]; int32_t glyphsEnabled; uint32_t petSpellPower; }; class CGPlayer { public: // Public static functions static uint32_t GetBaseOffset(); static uint32_t GetBaseOffsetSaved(); static uint32_t GetDataSize(); static uint32_t GetDataSizeSaved(); static uint32_t GetRemoteDataSize(); static uint32_t GetRemoteDataSizeSaved(); static uint32_t TotalFields(); static uint32_t TotalRemoteFields(); static uint32_t TotalFieldsSaved(); static uint32_t TotalRemoteFieldsSaved(); // Public member variables CGPlayerData* m_player; uint32_t* m_playerSaved; }; #endif