CommonLibSSE (powerof3)
TESClass.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/F/FormTypes.h"
4 #include "RE/T/TESDescription.h"
5 #include "RE/T/TESForm.h"
6 #include "RE/T/TESFullName.h"
7 #include "RE/T/TESTexture.h"
8 
9 namespace RE
10 {
11  struct CLASS_DATA // DATA
12  {
13  public:
14  enum class Skill
15  {
16  kOneHanded = 0,
17  kTwoHanded = 1,
18  kArchery = 2,
19  kBlock = 3,
20  kSmithing = 4,
21  kHeavyArmor = 5,
22  kLightArmor = 6,
23  kPickpocket = 7,
24  kLockpicking = 8,
25  kSneak = 9,
26  kAlchemy = 10,
27  kSpeech = 11,
28  kAlteration = 12,
29  kConjuration = 13,
30  kDestruction = 14,
31  kIllusion = 15,
32  kRestoration = 16,
33  kEnchanting = 17,
34  };
35 
36  struct SkillWeights
37  {
38  public:
39  // members
40  std::uint8_t oneHanded; // 00
41  std::uint8_t twoHanded; // 01
42  std::uint8_t archery; // 02
43  std::uint8_t block; // 03
44  std::uint8_t smithing; // 04
45  std::uint8_t heavyArmor; // 05
46  std::uint8_t lightArmor; // 06
47  std::uint8_t pickpocket; // 07
48  std::uint8_t lockpicking; // 08
49  std::uint8_t sneak; // 09
50  std::uint8_t alchemy; // 0A
51  std::uint8_t speech; // 0B
52  std::uint8_t alteration; // 0C
53  std::uint8_t conjuration; // 0D
54  std::uint8_t destruction; // 0E
55  std::uint8_t illusion; // 0F
56  std::uint8_t restoration; // 10
57  std::uint8_t enchanting; // 11
58  };
59  static_assert(sizeof(SkillWeights) == 0x12);
60 
62  {
63  public:
64  // members
65  std::uint8_t health; // 0
66  std::uint8_t magicka; // 1
67  std::uint8_t stamina; // 2
68  };
69  static_assert(sizeof(AttributeWeights) == 0x3);
70 
71  // members
72  std::uint32_t unk00; // 00
74  std::uint8_t maximumTrainingLevel; // 05
76  float bleedoutDefault; // 18
77  std::uint32_t voicePoints; // 1C
79  std::uint8_t pad23; // 23
80  };
81  static_assert(sizeof(CLASS_DATA) == 0x24);
82 
83  class TESClass :
84  public TESForm, // 00
85  public TESFullName, // 20
86  public TESDescription, // 30
87  public TESTexture // 40
88  {
89  public:
90  inline static constexpr auto RTTI = RTTI_TESClass;
91  inline static constexpr auto FORMTYPE = FormType::Class;
92 
93  struct ChangeFlags
94  {
95  enum ChangeFlag : std::uint32_t
96  {
97  kTagSkills = 1 << 1
98  };
99  };
100 
101  struct RecordFlags
102  {
103  enum RecordFlag : std::uint32_t
104  {
105  kDeleted = 1 << 5,
106  kIgnored = 1 << 12
107  };
108  };
109 
110  ~TESClass() override; // 00
111 
112  // override (TESForm)
113  void InitializeData() override; // 04
114  bool Load(TESFile* a_mod) override; // 06
115 
116  // members
117  CLASS_DATA data; // 50 - DATA
118  std::uint32_t pad74; // 74
119  };
120  static_assert(sizeof(TESClass) == 0x78);
121 }
Definition: TESClass.h:88
bool Load(TESFile *a_mod) override
CLASS_DATA data
Definition: TESClass.h:117
static constexpr auto FORMTYPE
Definition: TESClass.h:91
static constexpr auto RTTI
Definition: TESClass.h:90
void InitializeData() override
~TESClass() override
std::uint32_t pad74
Definition: TESClass.h:118
Definition: TESDescription.h:12
Definition: TESFile.h:14
Definition: TESForm.h:34
Definition: TESFullName.h:9
Definition: TESTexture.h:10
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_TESClass
Definition: Offsets_RTTI.h:5980
Definition: TESClass.h:62
std::uint8_t stamina
Definition: TESClass.h:67
std::uint8_t health
Definition: TESClass.h:65
std::uint8_t magicka
Definition: TESClass.h:66
Definition: TESClass.h:37
std::uint8_t sneak
Definition: TESClass.h:49
std::uint8_t destruction
Definition: TESClass.h:54
std::uint8_t alchemy
Definition: TESClass.h:50
std::uint8_t smithing
Definition: TESClass.h:44
std::uint8_t block
Definition: TESClass.h:43
std::uint8_t restoration
Definition: TESClass.h:56
std::uint8_t pickpocket
Definition: TESClass.h:47
std::uint8_t archery
Definition: TESClass.h:42
std::uint8_t alteration
Definition: TESClass.h:52
std::uint8_t enchanting
Definition: TESClass.h:57
std::uint8_t speech
Definition: TESClass.h:51
std::uint8_t lightArmor
Definition: TESClass.h:46
std::uint8_t lockpicking
Definition: TESClass.h:48
std::uint8_t illusion
Definition: TESClass.h:55
std::uint8_t twoHanded
Definition: TESClass.h:41
std::uint8_t conjuration
Definition: TESClass.h:53
std::uint8_t oneHanded
Definition: TESClass.h:40
std::uint8_t heavyArmor
Definition: TESClass.h:45
Definition: TESClass.h:12
AttributeWeights attributeWeights
Definition: TESClass.h:78
std::uint32_t unk00
Definition: TESClass.h:69
stl::enumeration< Skill, std::uint8_t > teaches
Definition: TESClass.h:73
Skill
Definition: TESClass.h:15
std::uint8_t pad23
Definition: TESClass.h:79
std::uint32_t voicePoints
Definition: TESClass.h:77
float bleedoutDefault
Definition: TESClass.h:76
std::uint8_t maximumTrainingLevel
Definition: TESClass.h:74
SkillWeights skillWeights
Definition: TESClass.h:75
Definition: TESClass.h:94
ChangeFlag
Definition: TESClass.h:96
@ kTagSkills
Definition: TESClass.h:97
Definition: TESClass.h:102
RecordFlag
Definition: TESClass.h:104
@ kDeleted
Definition: TESClass.h:105
@ kIgnored
Definition: TESClass.h:106