/** * Ashita - Copyright (c) 2014 - 2021 atom0s [atom0s@live.com] * * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to * Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. * * By using Ashita, you agree to the above license and its terms. * * Attribution - You must give appropriate credit, provide a link to the license and indicate if changes were * made. You must do so in any reasonable manner, but not in any way that suggests the licensor * endorses you or your use. * * Non-Commercial - You may not use the material (Ashita) for commercial purposes. * * No-Derivatives - If you remix, transform, or build upon the material (Ashita), you may not distribute the * modified material. You are, however, allowed to submit the modified works back to the original * Ashita project in attempt to have it added to the original project. * * You may not apply legal terms or technological measures that legally restrict others * from doing anything the license permits. * * No warranties are given. */ #ifndef __ASHITA_AS_FFXI_PLAYER_INCLUDED__ #define __ASHITA_AS_FFXI_PLAYER_INCLUDED__ #if defined (_MSC_VER) && (_MSC_VER >= 1020) #pragma once #endif namespace Ashita { namespace FFXI { struct playerstats_t { int16_t Strength; int16_t Dexterity; int16_t Vitality; int16_t Agility; int16_t Intelligence; int16_t Mind; int16_t Charisma; }; struct playerresists_t { int16_t Fire; int16_t Ice; int16_t Wind; int16_t Earth; int16_t Lightning; int16_t Water; int16_t Light; int16_t Dark; }; struct combatskill_t { uint16_t Raw; uint16_t GetSkill(void) const { return (uint16_t)(this->Raw & 0x7FFF); } bool IsCapped(void) const { return (this->Raw & 0x8000) == 0 ? false : true; }; }; struct craftskill_t { uint16_t Raw; uint16_t GetSkill(void) const { return (this->Raw & 0x1FE0) >> 5; } uint16_t GetRank(void) const { return (uint16_t)(this->Raw & 0x1F); } bool IsCapped(void) const { return (this->Raw & 0x8000) >> 15 == 0 ? false : true; }; }; struct combatskills_t { combatskill_t Unknown; combatskill_t HandToHand; combatskill_t Dagger; combatskill_t Sword; combatskill_t GreatSword; combatskill_t Axe; combatskill_t GreatAxe; combatskill_t Scythe; combatskill_t Polearm; combatskill_t Katana; combatskill_t GreatKatana; combatskill_t Club; combatskill_t Staff; combatskill_t Unused0000; combatskill_t Unused0001; combatskill_t Unused0002; combatskill_t Unused0003; combatskill_t Unused0004; combatskill_t Unused0005; combatskill_t Unused0006; combatskill_t Unused0007; combatskill_t Unused0008; combatskill_t Unused0009; combatskill_t Unused0010; combatskill_t Unused0011; combatskill_t Archery; combatskill_t Marksmanship; combatskill_t Throwing; combatskill_t Guarding; combatskill_t Evasion; combatskill_t Shield; combatskill_t Parrying; combatskill_t Divine; combatskill_t Healing; combatskill_t Enhancing; combatskill_t Enfeebling; combatskill_t Elemental; combatskill_t Dark; combatskill_t Summon; combatskill_t Ninjitsu; combatskill_t Singing; combatskill_t String; combatskill_t Wind; combatskill_t BlueMagic; combatskill_t Unused0012; combatskill_t Unused0013; combatskill_t Unused0014; combatskill_t Unused0015; }; struct craftskills_t { craftskill_t Fishing; craftskill_t Woodworking; craftskill_t Smithing; craftskill_t Goldsmithing; craftskill_t Clothcraft; craftskill_t Leathercraft; craftskill_t Bonecraft; craftskill_t Alchemy; craftskill_t Cooking; craftskill_t Synergy; craftskill_t Riding; craftskill_t Unused0000; craftskill_t Unused0001; craftskill_t Unused0002; craftskill_t Unused0003; craftskill_t Unused0004; }; struct abilityrecast_t { uint16_t Recast; // The abilities recast timer at the time of use. uint8_t Unknown0000; // Unknown uint8_t RecastTimerId; // The abilities recast timer id. uint32_t Unknown0001; // Unknown }; #pragma pack(push, 1) struct playerinfo_t { uint32_t HealthMax; // The players max health. uint32_t ManaMax; // The players max mana. uint8_t MainJob; // The players main job id. uint8_t MainJobLevel; // The players main job level. uint8_t SubJob; // The players sub job id. uint8_t SubJobLevel; // The players sub job level. uint16_t ExpCurrent; // The players current experience points. uint16_t ExpNeeded; // The players current experience points needed to level. playerstats_t Stats; // The players base stats. playerstats_t StatsModifiers; // The players stat modifiers. int16_t Attack; // The players attack. int16_t Defense; // The players defense. playerresists_t Resists; // The players elemental resists. uint16_t Title; // The players title id. uint16_t Rank; // The players rank number. uint16_t RankPoints; // The players rank points. uint8_t Nation; // The players nation id. uint8_t Residence; // The players residence id. uint32_t Homepoint; // The players homepoint. (Homepoint & 0x0000FFFF) combatskills_t CombatSkills; // The players combat skills. craftskills_t CraftSkills; // The players crafting skills. abilityrecast_t AbilityInfo[34]; // The players ability recast information. uint8_t Unknown0000[6]; // Unknown - Potentially a 'start' delay time to offset the ability recasts from. uint16_t LimitPoints; // The players current limit points. uint8_t MeritPoints; // The players current merit points. uint8_t LimitMode; // The players current limit mode. uint32_t MeritPointsMax; // The players max merits. uint8_t Unknown0001[214]; // Unknown int16_t StatusIcons[32]; // The players status icons used for status timers. int32_t StatusTimers[32]; // The players status timers. uint8_t Unknown0002[104]; // Unknown int16_t Buffs[32]; // The players current status effect icon ids. }; #pragma pack(pop) }; // namespace FFXI }; // namespace Ashita #endif // __ASHITA_AS_FFXI_PLAYER_INCLUDED__