CommonLibSSE (powerof3)
TESCombatStyle.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/F/FormTypes.h"
4 #include "RE/T/TESForm.h"
5 
6 namespace RE
7 {
8  struct CombatStyleGeneralData // CSGD
9  {
10  float offensiveMult; // 00
11  float defensiveMult; // 04
12  float groupOffensiveMult; // 08
13  float meleeScoreMult; // 0C
14  float magicScoreMult; // 10
15  float rangedScoreMult; // 14
16  float shoutScoreMult; // 18
17  float unarmedScoreMult; // 1C
18  float staffScoreMult; // 20
19  float avoidThreatChance; // 24
20  };
21  static_assert(sizeof(CombatStyleGeneralData) == 0x28);
22 
23  struct CombatStyleMeleeData // CSME
24  {
28  float bashMult; // 0C
29  float bashRecoilMult; // 10
30  float bashAttackMult; // 14
31  float bashPowerAttackMult; // 18
32  float specialAttackMult; // 1C
33  };
34  static_assert(sizeof(CombatStyleMeleeData) == 0x20);
35 
37  {
38  float circleMult; // 00
39  float fallbackMult; // 04
40  float flankDistanceMult; // 08
41  float stalkTimeMult; // 0C
42  };
43  static_assert(sizeof(CombatStyleCloseRangeData) == 0x10);
44 
45  struct CombatStyleLongRangeData // CSLR
46  {
47  float strafeMult; // 0
48  };
49  static_assert(sizeof(CombatStyleLongRangeData) == 0x4);
50 
51  struct CombatStyleFlightData // CSFL
52  {
53  float hoverChance; // 00
54  float diveBombChance; // 04
55  float groundAttackChance; // 08
56  float hoverTimeMult; // 0C
57  float groundAttackTimeMult; // 10
58  float perchAttackChance; // 14
59  float perchAttackTimeMult; // 18
60  float flyingAttackChance; // 1C
61  };
62  static_assert(sizeof(CombatStyleFlightData) == 0x20);
63 
64  class TESCombatStyle : public TESForm
65  {
66  public:
67  inline static constexpr auto RTTI = RTTI_TESCombatStyle;
68  inline static constexpr auto FORMTYPE = FormType::CombatStyle;
69 
70  enum class FLAG // DATA
71  {
72  kNone = 0,
73  kDuelingStyle = 1 << 0,
74  kFlankingStyle = 1 << 1,
75  kAllowDualWielding = 1 << 2
76  };
77 
78  struct RecordFlags
79  {
80  enum RecordFlag : std::uint32_t
81  {
82  kDeleted = 1 << 5,
83  kIgnored = 1 << 12,
84  kAllowDualWielding = 1 << 19
85  };
86  };
87 
88  ~TESCombatStyle() override; // 00
89 
90  // override (TESForm)
91  void InitializeData() override; // 04
92  bool Load(TESFile* a_mod) override; // 06
93  void InitItemImpl() override; // 13
94 
95  // members
102  };
103  static_assert(sizeof(TESCombatStyle) == 0xA0);
104 }
Definition: TESCombatStyle.h:65
bool Load(TESFile *a_mod) override
CombatStyleMeleeData meleeData
Definition: TESCombatStyle.h:97
void InitializeData() override
void InitItemImpl() override
static constexpr auto FORMTYPE
Definition: TESCombatStyle.h:68
CombatStyleCloseRangeData closeRangeData
Definition: TESCombatStyle.h:98
static constexpr auto RTTI
Definition: TESCombatStyle.h:67
CombatStyleGeneralData generalData
Definition: TESCombatStyle.h:96
CombatStyleFlightData flightData
Definition: TESCombatStyle.h:100
~TESCombatStyle() override
FLAG
Definition: TESCombatStyle.h:71
stl::enumeration< FLAG, std::uint32_t > flags
Definition: TESCombatStyle.h:101
CombatStyleLongRangeData longRangeData
Definition: TESCombatStyle.h:99
Definition: TESFile.h:14
Definition: TESForm.h:34
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_TESCombatStyle
Definition: Offsets_RTTI.h:5982
Definition: TESCombatStyle.h:37
float circleMult
Definition: TESCombatStyle.h:38
float stalkTimeMult
Definition: TESCombatStyle.h:41
float flankDistanceMult
Definition: TESCombatStyle.h:40
float fallbackMult
Definition: TESCombatStyle.h:39
Definition: TESCombatStyle.h:52
float groundAttackTimeMult
Definition: TESCombatStyle.h:57
float perchAttackTimeMult
Definition: TESCombatStyle.h:59
float flyingAttackChance
Definition: TESCombatStyle.h:60
float diveBombChance
Definition: TESCombatStyle.h:54
float groundAttackChance
Definition: TESCombatStyle.h:55
float perchAttackChance
Definition: TESCombatStyle.h:58
float hoverTimeMult
Definition: TESCombatStyle.h:56
float hoverChance
Definition: TESCombatStyle.h:53
Definition: TESCombatStyle.h:9
float meleeScoreMult
Definition: TESCombatStyle.h:13
float avoidThreatChance
Definition: TESCombatStyle.h:19
float magicScoreMult
Definition: TESCombatStyle.h:14
float defensiveMult
Definition: TESCombatStyle.h:11
float shoutScoreMult
Definition: TESCombatStyle.h:16
float offensiveMult
Definition: TESCombatStyle.h:10
float rangedScoreMult
Definition: TESCombatStyle.h:15
float staffScoreMult
Definition: TESCombatStyle.h:18
float groupOffensiveMult
Definition: TESCombatStyle.h:12
float unarmedScoreMult
Definition: TESCombatStyle.h:17
Definition: TESCombatStyle.h:46
float strafeMult
Definition: TESCombatStyle.h:47
Definition: TESCombatStyle.h:24
float powerAttackBlockingMult
Definition: TESCombatStyle.h:27
float attackIncapacitatedMult
Definition: TESCombatStyle.h:25
float powerAttackIncapacitatedMult
Definition: TESCombatStyle.h:26
float bashRecoilMult
Definition: TESCombatStyle.h:29
float specialAttackMult
Definition: TESCombatStyle.h:32
float bashAttackMult
Definition: TESCombatStyle.h:30
float bashPowerAttackMult
Definition: TESCombatStyle.h:31
float bashMult
Definition: TESCombatStyle.h:28
Definition: TESCombatStyle.h:79
RecordFlag
Definition: TESCombatStyle.h:81
@ kDeleted
Definition: TESCombatStyle.h:82
@ kIgnored
Definition: TESCombatStyle.h:83
@ kAllowDualWielding
Definition: TESCombatStyle.h:84