CommonLibSSE (Parapets fork)
TESAIForm.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSSimpleList.h"
5 
6 namespace RE
7 {
8  class TESPackage;
9 
10  enum class ACTOR_AGGRESSION
11  {
12  kCalmed = static_cast<std::underlying_type_t<ACTOR_AGGRESSION>>(-1),
13  kUnaggressive = 0,
14  kAggressive = 1,
15  kVeryAggressive = 2,
16  kFrenzied = 3
17  };
18 
20  {
21  enum
22  {
26 
27  kTotal
28  };
29  };
30 
31  enum class ACTOR_ASSISTANCE
32  {
33  kHelpsNobody = 0,
34  kHelpsAllies = 1,
35  kHelpsFriends = 2
36  };
37 
38  enum class ACTOR_CONFIDENCE
39  {
40  kCowardly = 0,
41  kCautious = 1,
42  kAverage = 2,
43  kBrave = 3,
44  kFoolhardy = 4
45  };
46 
47  enum class ACTOR_MOOD
48  {
49  kNeutral = 0,
50  kAngry = 1,
51  kFear = 2,
52  kHappy = 3,
53  kSad = 4,
54  kSurprised = 5,
55  kPuzzled = 6,
56  kDisgusted = 7
57  };
58 
59  enum class ACTOR_MORALITY
60  {
61  kAnyCrime = 0,
64  kNoCrime = 3
65  };
66 
67  struct AIDATA_GAME
68  {
69  public:
70  // members
71  bool aggression1: 1; // 0 - 0
72  bool aggression2: 1; // 0 - 1
73  bool confidence1: 1; // 0 - 2
74  bool confidence2: 1; // 0 - 3
75  bool confidence3: 1; // 0 - 4
76  bool energyLevel1: 1; // 0 - 5
77  bool energyLevel2: 1; // 0 - 6
78  bool energyLevel3: 1; // 0 - 7
79  bool energyLevel4: 1; // 1 - 0
80  bool energyLevel5: 1; // 1 - 1
81  bool energyLevel6: 1; // 1 - 2
82  bool energyLevel7: 1; // 1 - 3
83  bool energyLevel8: 1; // 1 - 4
84  bool morality1: 1; // 1 - 5
85  bool morality2: 1; // 1 - 6
86  bool mood1: 1; // 1 - 7
87  bool mood2: 1; // 2 - 0
88  bool mood3: 1; // 2 - 1
89  bool assistance1: 1; // 2 - 2
90  bool assistance2: 1; // 2 - 3
91  bool aggroRadiusBehaviour: 1; // 2 - 4
92  bool pad2_5: 1; // 2 - 5
93  bool pad2_6: 1; // 2 - 6
94  bool pad2_7: 1; // 2 - 7
95  std::uint8_t pad3; // 3
97  bool noSlowApproach: 1; // A - 0
98  bool padA_1: 1; // A - 1
99  bool padA_2: 1; // A - 2
100  bool padA_3: 1; // A - 3
101  bool padA_4: 1; // A - 4
102  bool padA_5: 1; // A - 5
103  bool padA_6: 1; // A - 6
104  bool padA_7: 1; // A - 7
105  std::uint8_t padB; // B
106  };
107  static_assert(sizeof(AIDATA_GAME) == 0xC);
108 
109  struct PackageList
110  {
111  public:
112  // members
114  };
115  static_assert(sizeof(PackageList) == 0x10);
116 
118  {
119  public:
120  inline static constexpr auto RTTI = RTTI_TESAIForm;
121 
122  ~TESAIForm() override; // 00
123 
124  // override (BaseFormComponent)
125  void InitializeDataComponent() override; // 01
126  void ClearDataComponent() override; // 02
127  void CopyComponent(BaseFormComponent* a_rhs) override; // 03
128 
129  [[nodiscard]] bool AggroRadiusBehaviourIsEnabled() const;
130  [[nodiscard]] ACTOR_AGGRESSION GetAggressionLevel() const;
131  [[nodiscard]] ACTOR_ASSISTANCE GetAssistanceLevel() const;
132  [[nodiscard]] ACTOR_CONFIDENCE GetConfidenceLevel() const;
133  [[nodiscard]] std::uint8_t GetEnergyLevel() const;
134  [[nodiscard]] ACTOR_MOOD GetMoodLevel() const;
135  [[nodiscard]] ACTOR_MORALITY GetMoralityLevel() const;
136  [[nodiscard]] bool NoSlowApproach() const;
137 
138  // members
139  AIDATA_GAME aiData; // 08 - AIDT
140  PackageList aiPackages; // 18 - PKID
141  };
142  static_assert(sizeof(TESAIForm) == 0x28);
143 }
Definition: BSSimpleList.h:10
Definition: BaseFormComponent.h:8
Definition: TESAIForm.h:118
ACTOR_ASSISTANCE GetAssistanceLevel() const
std::uint8_t GetEnergyLevel() const
bool NoSlowApproach() const
static constexpr auto RTTI
Definition: TESAIForm.h:120
ACTOR_MORALITY GetMoralityLevel() const
void InitializeDataComponent() override
AIDATA_GAME aiData
Definition: TESAIForm.h:139
ACTOR_AGGRESSION GetAggressionLevel() const
~TESAIForm() override
bool AggroRadiusBehaviourIsEnabled() const
void ClearDataComponent() override
void CopyComponent(BaseFormComponent *a_rhs) override
PackageList aiPackages
Definition: TESAIForm.h:140
ACTOR_CONFIDENCE GetConfidenceLevel() const
ACTOR_MOOD GetMoodLevel() const
Definition: AbsorbEffect.h:6
ACTOR_AGGRESSION
Definition: TESAIForm.h:11
ACTOR_ASSISTANCE
Definition: TESAIForm.h:32
ACTOR_CONFIDENCE
Definition: TESAIForm.h:39
ACTOR_MORALITY
Definition: TESAIForm.h:60
ACTOR_MOOD
Definition: TESAIForm.h:48
constexpr REL::ID RTTI_TESAIForm
Definition: Offsets_RTTI.h:5965
Definition: TESAIForm.h:20
@ kTotal
Definition: TESAIForm.h:27
@ kAttack
Definition: TESAIForm.h:25
@ kWarn
Definition: TESAIForm.h:23
@ kWarnAndAttack
Definition: TESAIForm.h:24
Definition: TESAIForm.h:68
bool padA_1
Definition: TESAIForm.h:98
bool aggression1
Definition: TESAIForm.h:71
bool energyLevel8
Definition: TESAIForm.h:83
bool pad2_5
Definition: TESAIForm.h:92
bool padA_7
Definition: TESAIForm.h:104
bool padA_4
Definition: TESAIForm.h:101
bool energyLevel6
Definition: TESAIForm.h:81
bool confidence3
Definition: TESAIForm.h:75
bool assistance1
Definition: TESAIForm.h:89
bool padA_2
Definition: TESAIForm.h:99
bool assistance2
Definition: TESAIForm.h:90
bool energyLevel2
Definition: TESAIForm.h:77
bool confidence1
Definition: TESAIForm.h:73
bool mood3
Definition: TESAIForm.h:88
bool padA_3
Definition: TESAIForm.h:100
bool mood2
Definition: TESAIForm.h:87
bool aggroRadiusBehaviour
Definition: TESAIForm.h:91
bool energyLevel7
Definition: TESAIForm.h:82
bool energyLevel1
Definition: TESAIForm.h:76
std::uint8_t padB
Definition: TESAIForm.h:105
bool pad2_7
Definition: TESAIForm.h:94
bool pad2_6
Definition: TESAIForm.h:93
bool mood1
Definition: TESAIForm.h:86
bool morality1
Definition: TESAIForm.h:84
bool aggression2
Definition: TESAIForm.h:72
bool energyLevel4
Definition: TESAIForm.h:79
bool padA_6
Definition: TESAIForm.h:103
bool energyLevel3
Definition: TESAIForm.h:78
std::uint8_t pad3
Definition: TESAIForm.h:95
bool energyLevel5
Definition: TESAIForm.h:80
bool morality2
Definition: TESAIForm.h:85
bool noSlowApproach
Definition: TESAIForm.h:97
std::uint16_t aggroRadius[ACTOR_AGGRO_RADIUS::kTotal]
Definition: TESAIForm.h:96
bool confidence2
Definition: TESAIForm.h:74
bool padA_5
Definition: TESAIForm.h:102
Definition: TESAIForm.h:110
BSSimpleList< TESPackage * > packages
Definition: TESAIForm.h:113