CommonLibSSE (powerof3)
MiddleHighProcessData.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/A/ActorPackage.h"
4 #include "RE/B/BGSPerkEntry.h"
5 #include "RE/B/BSAtomic.h"
6 #include "RE/B/BSPointerHandle.h"
7 #include "RE/B/BSResponse.h"
8 #include "RE/B/BSTArray.h"
9 #include "RE/B/BSTEvent.h"
10 #include "RE/B/BSTList.h"
11 #include "RE/B/BSTSmartPointer.h"
12 #include "RE/F/FormTypes.h"
13 #include "RE/M/MagicSystem.h"
14 #include "RE/N/NiPoint3.h"
15 #include "RE/N/NiSmartPointer.h"
16 
17 namespace RE
18 {
19  class ActiveEffect;
20  class BGSAttackData;
21  class BGSPerkEntry;
22  class bhkCharacterController;
23  class bhkRagdollPenetrationUtil;
24  class BSAnimationGraphManager;
25  class BSFaceGenAnimationData;
26  class BSFaceGenNiNode;
27  class BSLightingShaderProperty;
28  class ExtraDataList;
29  class InventoryEntryData;
30  class MagicItem;
31  class NiAVObject;
32  class NiNode;
33  class QueuedFile;
34  class TESBoundObject;
35  struct AnimationVariableData;
36  struct BSAnimationGraphVariableCache;
37 
38  enum class RESET_3D_FLAGS
39  {
40  kNone = 0,
41  kModel = 1 << 0,
42  kSkin = 1 << 1,
43  kHead = 1 << 2,
44  kFace = 1 << 3,
45  kScale = 1 << 4,
46  kSkeleton = 1 << 5,
47  kInitDefault = 1 << 6,
48  kSkyCellSkin = 1 << 7
49  };
50 
52  {
53  public:
54  // members
56  std::uint32_t pad04; // 04
58  };
59  static_assert(sizeof(CommandedActorData) == 0x10);
60 
62  {
63  public:
64  // members
66  std::int32_t count; // 08
67  std::uint32_t pad0C; // 0C
68  const BGSEquipSlot* equipSlot; // 10
69  void* unk18; // 18
70  bool playEquipSounds; // 20
71  bool forceEquip; // 21
72  bool showMessage; // 22
73  bool unk23; // 23
74  bool unk24; // 24
75  std::uint8_t pad25; // 25
76  std::uint16_t pad26; // 26
77  };
78  static_assert(sizeof(ObjectEquipParams) == 0x28);
79 
80  class QueuedItem
81  {
82  public:
83  // members
84  QueuedItem* next; // 00
88  bool equip; // 40
89  std::uint8_t pad41; // 41
90  std::uint16_t pad42; // 42
91  std::uint32_t pad44; // 44
92  };
93  static_assert(sizeof(QueuedItem) == 0x48);
94 
95  class HitData
96  {
97  public:
98  enum class Flag
99  {
100  kBlocked = 1 << 0,
101  kBlockWithWeapon = 1 << 1,
102  kBlockCandidate = 1 << 2,
103  kCritical = 1 << 3,
104  kCriticalOnDeath = 1 << 4,
105  kFatal = 1 << 5,
106  kDismemberLimb = 1 << 6,
107  kExplodeLimb = 1 << 7,
108  kCrippleLimb = 1 << 8,
109  kDisarm = 1 << 9,
110  kDisableWeapon = 1 << 10,
111  kSneakAttack = 1 << 11,
112  kIgnoreCritical = 1 << 12,
113  kPredictDamage = 1 << 13,
114  kPredictBaseDamage = 1 << 14,
115  kBash = 1 << 15,
116  kTimedBash = 1 << 16,
117  kPowerAttack = 1 << 17,
118  kMeleeAttack = 1 << 18,
119  kRicochet = 1 << 19,
120  kExplosion = 1 << 20
121  };
122 
123  void Populate(Actor* a_aggressor, Actor* a_target, InventoryEntryData* a_weapon);
124 
125  // members
131  std::uint32_t pad24; // 24
134  std::uint64_t unk38; // 38
135  std::uint64_t unk40; // 40
136  std::uint32_t unk48; // 48
137  float healthDamage; // 4C
138  float totalDamage; // 50
139  float physicalDamage; // 54
140  float targetedLimbDamage; // 58
141  float percentBlocked; // 5C
143  float resistedTypedDamage; // 64
144  std::uint32_t stagger; // 68
145  float sneakAttackBonus; // 6C
147  float pushBack; // 74
148  float reflectedDamage; // 78
149  float criticalDamageMult; // 7C
150  Flag flags; // 80
151  std::uint32_t equipIndex; // 84
152  std::uint32_t material; // 88
153  std::uint32_t damageLimb; // 8C
154  };
155  static_assert(sizeof(HitData) == 0x90);
156 
158  {
159  public:
160  // members
161  float dismemberTimer; // 00
162  std::uint32_t limbIndex; // 04
166  bool explosion; // 20
167  std::uint8_t pad21; // 21
168  std::uint16_t pad22; // 22
169  std::uint32_t pad24; // 24
170  };
171  static_assert(sizeof(DeferredHideLimb) == 0x28);
172 
173  struct AIPerkData
174  {
175  public:
177  {
178  return operator[](a_pos);
179  }
180 
182  {
183  assert(a_pos < BGSEntryPoint::ENTRY_POINT::kTotal);
184  return perkEntryArrays[stl::to_underlying(a_pos)];
185  }
186 
187  // members
189  };
190  static_assert(sizeof(AIPerkData) == 0x8A0);
191 
193  {
194  public:
204  std::uint32_t bleedoutAttacker; // 0EC
206  std::uint32_t pad0F4; // 0F4
209  NiNode* damageRootNode[6]; // 118
210  std::uint64_t unk148; // 148
217  std::uint64_t unk180; // 180
226  mutable BSSpinLock unk1E8; // 1E8
227  void* unk1F0; // 1F0 - smart ptr
228  std::uint16_t unk1F8; // 1F8
229  std::uint16_t unk1FA; // 1FA
230  std::uint32_t unk1FC; // 1FC
231  std::uint32_t unk200; // 200
232  float headHeightOffset; // 204
234  std::uint32_t unk20C; // 20C
235  std::uint64_t unk210; // 210
237  std::uint32_t pad21C; // 21C
240  void* unk230; // 230 - smart ptr
241  std::uint64_t unk238; // 238
242  std::uint64_t unk240; // 240
243  std::uint64_t unk248; // 248
249  void* unk278; // 278
250  std::uint64_t unk280; // 280
252  std::uint32_t unk290; // 290
253  std::uint32_t currentFurnitureSubgraphID; // 294
254  float unk298; // 298
255  float unk29C; // 29C
256  float unk2A0; // 2A0
257  float unk2A4; // 2A4
258  float unk2A8; // 2A8
259  float unk2AC; // 2AC
260  float unk2B0; // 2B0
261  float unk2B4; // 2B4
262  float unk2B8; // 2B8
263  float unk2BC; // 2BC
264  float unk2C0; // 2C0
265  float unk2C4; // 2C4
266  float alphaMult; // 2C8
267  float scriptRefractPower; // 2CC
268  float unk2D0; // 2D0
269  float deferredKillTimer; // 2D4
270  float killMoveTimer; // 2D8
271  float unk2DC; // 2DC
272  std::uint32_t unk2E0; // 2E0
273  std::uint32_t unk2E4; // 2E4
274  std::uint32_t currentFurnitureMarkerID; // 2E8
275  std::uint32_t unk2EC; // 2EC
276  std::uint64_t unk2F0; // 2F0
277  std::uint32_t unk2F8; // 2F8
278  std::uint32_t unk2FC; // 2FC
279  std::uint32_t unk300; // 300
280  std::uint16_t unk304; // 304
281  std::uint16_t unk306; // 306
282  std::uint64_t unk308; // 308
283  std::uint8_t unk310; // 310
285  std::uint16_t unk312; // 312
286  std::uint16_t unk314; // 314
287  bool unk316; // 316
288  bool unk317; // 317
289  bool unk318; // 318
290  bool unk319; // 319
291  bool unk31A; // 31A
292  bool pickPocketed; // 31B
293  bool summonedCreature; // 31C
294  bool unk31D; // 31D
295  bool unk31E; // 31E
296  bool unk31F; // 31F
297  bool unk320; // 320
298  bool unk321; // 321
299  bool beenAttacked; // 322
300  bool unk323; // 323
301  bool unk324; // 324
302  bool unk325; // 325
303  bool unk326; // 326
304  bool unk327; // 327
305  bool unk328; // 328
306  bool unk329; // 329
307  bool unk32A; // 32A
308  bool unk32B; // 32B
309  bool unk32C; // 32C
310  bool unk32D; // 32D
311  bool unk32E; // 32E
312  bool unk32F; // 32F
313  bool unk330; // 330
314  bool unk331; // 331
315  bool unk332; // 332
316  bool pad333; // 333
317  std::uint32_t pad334; // 334
318  };
319  static_assert(sizeof(MiddleHighProcessData) == 0x338);
320 }
Definition: ActiveEffect.h:22
Definition: ActorPackage.h:12
Definition: Actor.h:125
Definition: BGSEquipSlot.h:10
Definition: BSFaceGenNiNode.h:14
Definition: BSTList.h:10
Definition: BSAtomic.h:49
Definition: BSTArray.h:377
Definition: BSTSmartPointer.h:37
Definition: ExtraDataList.h:40
Definition: MiddleHighProcessData.h:96
std::uint32_t material
Definition: MiddleHighProcessData.h:152
float bonusHealthDamageMult
Definition: MiddleHighProcessData.h:146
Flag
Definition: MiddleHighProcessData.h:99
float percentBlocked
Definition: MiddleHighProcessData.h:141
float criticalDamageMult
Definition: MiddleHighProcessData.h:149
NiPoint3 unk0C
Definition: MiddleHighProcessData.h:127
float pushBack
Definition: MiddleHighProcessData.h:147
float resistedPhysicalDamage
Definition: MiddleHighProcessData.h:142
float healthDamage
Definition: MiddleHighProcessData.h:137
std::uint32_t unk48
Definition: MiddleHighProcessData.h:136
float reflectedDamage
Definition: MiddleHighProcessData.h:148
Flag flags
Definition: MiddleHighProcessData.h:150
std::uint64_t unk40
Definition: MiddleHighProcessData.h:135
std::uint32_t damageLimb
Definition: MiddleHighProcessData.h:153
float resistedTypedDamage
Definition: MiddleHighProcessData.h:143
ActorHandle aggressor
Definition: MiddleHighProcessData.h:128
std::uint32_t stagger
Definition: MiddleHighProcessData.h:144
ObjectRefHandle sourceRef
Definition: MiddleHighProcessData.h:130
void Populate(Actor *a_aggressor, Actor *a_target, InventoryEntryData *a_weapon)
std::uint32_t equipIndex
Definition: MiddleHighProcessData.h:151
std::uint32_t pad24
Definition: MiddleHighProcessData.h:131
float sneakAttackBonus
Definition: MiddleHighProcessData.h:145
TESObjectWEAP * weapon
Definition: MiddleHighProcessData.h:133
float targetedLimbDamage
Definition: MiddleHighProcessData.h:140
NiPointer< BGSAttackData > attackData
Definition: MiddleHighProcessData.h:132
float totalDamage
Definition: MiddleHighProcessData.h:138
NiPoint3 unk00
Definition: MiddleHighProcessData.h:126
std::uint64_t unk38
Definition: MiddleHighProcessData.h:134
ActorHandle target
Definition: MiddleHighProcessData.h:129
float physicalDamage
Definition: MiddleHighProcessData.h:139
Definition: InventoryEntryData.h:14
Definition: NiAVObject.h:45
Definition: NiNode.h:12
Definition: NiPoint3.h:6
Definition: MiddleHighProcessData.h:81
ObjectEquipParams equipParams
Definition: MiddleHighProcessData.h:86
std::uint8_t pad41
Definition: MiddleHighProcessData.h:89
TESBoundObject * object
Definition: MiddleHighProcessData.h:85
std::uint32_t pad44
Definition: MiddleHighProcessData.h:91
std::uint16_t pad42
Definition: MiddleHighProcessData.h:90
NiPointer< QueuedFile > queuedFiles
Definition: MiddleHighProcessData.h:87
QueuedItem * next
Definition: MiddleHighProcessData.h:84
bool equip
Definition: MiddleHighProcessData.h:88
Definition: TESBoundObject.h:24
Definition: TESIdleForm.h:35
Definition: TESObjectWEAP.h:73
WardState
Definition: MagicSystem.h:79
Definition: AbsorbEffect.h:6
RESET_3D_FLAGS
Definition: MiddleHighProcessData.h:39
constexpr auto to_underlying(Enum a_val) noexcept requires(std
Definition: PCH.h:634
Definition: MiddleHighProcessData.h:174
BSTArray< BGSPerkEntry * > perkEntryArrays[BGSEntryPoint::ENTRY_POINTS::kTotal]
Definition: MiddleHighProcessData.h:188
BSTArray< BGSPerkEntry * > & at(BGSEntryPoint::ENTRY_POINT a_pos)
Definition: MiddleHighProcessData.h:176
BSTArray< BGSPerkEntry * > & operator[](BGSEntryPoint::ENTRY_POINT a_pos)
Definition: MiddleHighProcessData.h:181
ENTRY_POINT
Definition: BGSEntryPoint.h:10
@ kTotal
Definition: BGSEntryPoint.h:104
Definition: BSAnimationGraphManager.h:34
Definition: MiddleHighProcessData.h:52
std::uint32_t pad04
Definition: MiddleHighProcessData.h:56
ActorHandle commandedActor
Definition: MiddleHighProcessData.h:55
ActiveEffect * activeEffect
Definition: MiddleHighProcessData.h:57
Definition: MiddleHighProcessData.h:158
std::uint8_t pad21
Definition: MiddleHighProcessData.h:167
NiPointer< NiNode > dismemberedLimbRoot
Definition: MiddleHighProcessData.h:163
std::uint16_t pad22
Definition: MiddleHighProcessData.h:168
NiPointer< NiNode > replacementLimb
Definition: MiddleHighProcessData.h:164
DeferredHideLimb * next
Definition: MiddleHighProcessData.h:165
std::uint32_t pad24
Definition: MiddleHighProcessData.h:169
bool explosion
Definition: MiddleHighProcessData.h:166
std::uint32_t limbIndex
Definition: MiddleHighProcessData.h:162
float dismemberTimer
Definition: MiddleHighProcessData.h:161
Definition: MiddleHighProcessData.h:193
float unk2B8
Definition: MiddleHighProcessData.h:262
float unk2A4
Definition: MiddleHighProcessData.h:257
BSTArray< ActorHandle > deadDetectList
Definition: MiddleHighProcessData.h:197
BSFaceGenNiNode * faceNodeSkinned
Definition: MiddleHighProcessData.h:215
bool unk332
Definition: MiddleHighProcessData.h:315
float unk2B4
Definition: MiddleHighProcessData.h:261
bool unk32B
Definition: MiddleHighProcessData.h:308
void * unk1F0
Definition: MiddleHighProcessData.h:227
NiPointer< bhkCharacterController > charController
Definition: MiddleHighProcessData.h:244
bool unk324
Definition: MiddleHighProcessData.h:301
std::uint32_t unk20C
Definition: MiddleHighProcessData.h:234
float unk2C0
Definition: MiddleHighProcessData.h:264
bool unk319
Definition: MiddleHighProcessData.h:290
bool unk321
Definition: MiddleHighProcessData.h:298
std::uint64_t unk148
Definition: MiddleHighProcessData.h:210
std::uint32_t unk1FC
Definition: MiddleHighProcessData.h:230
TESIdleForm * furnitureIdle
Definition: MiddleHighProcessData.h:239
BSSimpleList< ActiveEffect * > * activeEffects
Definition: MiddleHighProcessData.h:221
bool unk32F
Definition: MiddleHighProcessData.h:312
bool unk31E
Definition: MiddleHighProcessData.h:295
BSSimpleList< TESObjectREFR * > refListChairBed
Definition: MiddleHighProcessData.h:198
std::uint64_t unk210
Definition: MiddleHighProcessData.h:235
ActorHandle commandingActor
Definition: MiddleHighProcessData.h:236
std::uint32_t unk2E4
Definition: MiddleHighProcessData.h:273
bool pad333
Definition: MiddleHighProcessData.h:316
MagicSystem::WardState wardState
Definition: MiddleHighProcessData.h:205
bool unk318
Definition: MiddleHighProcessData.h:289
QueuedItem * itemstoEquipUnequip
Definition: MiddleHighProcessData.h:218
std::uint16_t unk1FA
Definition: MiddleHighProcessData.h:229
bool unk316
Definition: MiddleHighProcessData.h:287
std::uint64_t unk240
Definition: MiddleHighProcessData.h:242
float unk2AC
Definition: MiddleHighProcessData.h:259
float unk2C4
Definition: MiddleHighProcessData.h:265
std::uint16_t unk304
Definition: MiddleHighProcessData.h:280
std::uint64_t unk280
Definition: MiddleHighProcessData.h:250
float unk2B0
Definition: MiddleHighProcessData.h:260
NiAVObject * faceTargetSourceNode
Definition: MiddleHighProcessData.h:214
bool unk326
Definition: MiddleHighProcessData.h:303
float unk2D0
Definition: MiddleHighProcessData.h:268
bool pickPocketed
Definition: MiddleHighProcessData.h:292
NiPoint3 actorMountPosition
Definition: MiddleHighProcessData.h:201
bool unk31D
Definition: MiddleHighProcessData.h:294
std::uint8_t unk310
Definition: MiddleHighProcessData.h:283
std::uint32_t pad21C
Definition: MiddleHighProcessData.h:237
DeferredHideLimb * headDeferredHideLimb
Definition: MiddleHighProcessData.h:220
BSTEventSource< void * > unk000
Definition: MiddleHighProcessData.h:195
bool unk331
Definition: MiddleHighProcessData.h:314
ActorPackage runOncePackage
Definition: MiddleHighProcessData.h:196
float unk2A8
Definition: MiddleHighProcessData.h:258
InventoryEntryData * rightHand
Definition: MiddleHighProcessData.h:246
bool unk328
Definition: MiddleHighProcessData.h:305
std::uint32_t bleedoutAttacker
Definition: MiddleHighProcessData.h:204
ObjectRefHandle occupiedFurniture
Definition: MiddleHighProcessData.h:233
NiPoint3 furniturePathPoint
Definition: MiddleHighProcessData.h:202
bool unk323
Definition: MiddleHighProcessData.h:300
std::uint64_t unk248
Definition: MiddleHighProcessData.h:243
std::uint64_t unk308
Definition: MiddleHighProcessData.h:282
InventoryEntryData * leftHand
Definition: MiddleHighProcessData.h:238
NiNode * weaponBone
Definition: MiddleHighProcessData.h:211
std::uint32_t unk2EC
Definition: MiddleHighProcessData.h:275
float unk298
Definition: MiddleHighProcessData.h:254
BSTArray< void * > unk1B8
Definition: MiddleHighProcessData.h:224
float unk2DC
Definition: MiddleHighProcessData.h:271
BSTSmartPointer< BSAnimationGraphManager > animationGraphManager
Definition: MiddleHighProcessData.h:222
float unk2BC
Definition: MiddleHighProcessData.h:263
bool unk329
Definition: MiddleHighProcessData.h:306
bool unk330
Definition: MiddleHighProcessData.h:313
std::uint16_t unk314
Definition: MiddleHighProcessData.h:286
bool unk317
Definition: MiddleHighProcessData.h:288
float deferredKillTimer
Definition: MiddleHighProcessData.h:269
NiAVObject * headNode
Definition: MiddleHighProcessData.h:212
std::uint16_t unk306
Definition: MiddleHighProcessData.h:281
std::uint32_t unk2E0
Definition: MiddleHighProcessData.h:272
std::uint64_t unk180
Definition: MiddleHighProcessData.h:217
std::uint32_t pad334
Definition: MiddleHighProcessData.h:317
BSTSmartPointer< bhkRagdollPenetrationUtil > penetrationDetectUtil
Definition: MiddleHighProcessData.h:245
InventoryEntryData * bothHands
Definition: MiddleHighProcessData.h:247
bool unk32C
Definition: MiddleHighProcessData.h:309
BSTArray< void * > unk1D0
Definition: MiddleHighProcessData.h:225
NiAVObject * torsoNode
Definition: MiddleHighProcessData.h:213
std::uint32_t unk2FC
Definition: MiddleHighProcessData.h:278
AIPerkData * perkData
Definition: MiddleHighProcessData.h:251
std::uint32_t pad0F4
Definition: MiddleHighProcessData.h:206
BSAnimationGraphVariableCache * animationVariableCache
Definition: MiddleHighProcessData.h:223
std::uint32_t currentFurnitureSubgraphID
Definition: MiddleHighProcessData.h:253
void * unk278
Definition: MiddleHighProcessData.h:249
bool unk32D
Definition: MiddleHighProcessData.h:310
std::uint32_t unk290
Definition: MiddleHighProcessData.h:252
std::uint32_t unk300
Definition: MiddleHighProcessData.h:279
float killMoveTimer
Definition: MiddleHighProcessData.h:270
std::uint64_t unk2F0
Definition: MiddleHighProcessData.h:276
bool beenAttacked
Definition: MiddleHighProcessData.h:299
bool unk320
Definition: MiddleHighProcessData.h:297
float unk29C
Definition: MiddleHighProcessData.h:255
bool unk32A
Definition: MiddleHighProcessData.h:307
bool unk31F
Definition: MiddleHighProcessData.h:296
NiPoint3 rotation
Definition: MiddleHighProcessData.h:199
std::uint32_t unk2F8
Definition: MiddleHighProcessData.h:277
float alphaMult
Definition: MiddleHighProcessData.h:266
std::uint32_t currentFurnitureMarkerID
Definition: MiddleHighProcessData.h:274
std::uint32_t unk200
Definition: MiddleHighProcessData.h:231
float scriptRefractPower
Definition: MiddleHighProcessData.h:267
stl::enumeration< RESET_3D_FLAGS, std::uint8_t > update3DModel
Definition: MiddleHighProcessData.h:284
bool unk32E
Definition: MiddleHighProcessData.h:311
BSTSmartPointer< AnimResponse > animResponse
Definition: MiddleHighProcessData.h:207
bool unk31A
Definition: MiddleHighProcessData.h:291
NiPointer< BSLightingShaderProperty > lightingProperty
Definition: MiddleHighProcessData.h:216
NiPointer< QueuedFile > bodyPartPreload
Definition: MiddleHighProcessData.h:248
bool summonedCreature
Definition: MiddleHighProcessData.h:293
std::uint64_t unk238
Definition: MiddleHighProcessData.h:241
NiPoint3 lastSeenPosition
Definition: MiddleHighProcessData.h:203
void * unk230
Definition: MiddleHighProcessData.h:240
float headHeightOffset
Definition: MiddleHighProcessData.h:232
float unk2A0
Definition: MiddleHighProcessData.h:256
bool unk325
Definition: MiddleHighProcessData.h:302
std::uint16_t unk312
Definition: MiddleHighProcessData.h:285
NiNode * damageRootNode[6]
Definition: MiddleHighProcessData.h:209
BSSpinLock unk1E8
Definition: MiddleHighProcessData.h:226
std::uint16_t unk1F8
Definition: MiddleHighProcessData.h:228
HitData * lastHitData
Definition: MiddleHighProcessData.h:219
bool unk327
Definition: MiddleHighProcessData.h:304
BSTArray< CommandedActorData > commandedActors
Definition: MiddleHighProcessData.h:208
NiPoint3 rotationSpeed
Definition: MiddleHighProcessData.h:200
Definition: MiddleHighProcessData.h:62
void * unk18
Definition: MiddleHighProcessData.h:69
bool showMessage
Definition: MiddleHighProcessData.h:72
std::uint32_t pad0C
Definition: MiddleHighProcessData.h:67
bool playEquipSounds
Definition: MiddleHighProcessData.h:70
bool unk23
Definition: MiddleHighProcessData.h:73
ExtraDataList * extraDataList
Definition: MiddleHighProcessData.h:65
std::uint16_t pad26
Definition: MiddleHighProcessData.h:76
std::uint8_t pad25
Definition: MiddleHighProcessData.h:75
std::int32_t count
Definition: MiddleHighProcessData.h:66
bool unk24
Definition: MiddleHighProcessData.h:74
const BGSEquipSlot * equipSlot
Definition: MiddleHighProcessData.h:68
bool forceEquip
Definition: MiddleHighProcessData.h:71