CommonLibSSE (powerof3)
Actor.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/A/AITimeStamp.h"
4 #include "RE/A/ActiveEffect.h"
5 #include "RE/A/ActorState.h"
6 #include "RE/A/ActorValueOwner.h"
7 #include "RE/A/ActorValues.h"
10 #include "RE/B/BSPointerHandle.h"
12 #include "RE/B/BSTArray.h"
13 #include "RE/B/BSTEvent.h"
14 #include "RE/B/BSTList.h"
15 #include "RE/B/BSTSmartPointer.h"
16 #include "RE/B/BSTTuple.h"
18 #include "RE/F/FormTypes.h"
20 #include "RE/M/MagicSystem.h"
21 #include "RE/M/MagicTarget.h"
22 #include "RE/N/NiSmartPointer.h"
23 #include "RE/T/TESNPC.h"
24 #include "RE/T/TESObjectREFR.h"
25 
26 namespace RE
27 {
28  class ActorMagicCaster;
29  class ActorMover;
30  class AIProcess;
31  class bhkCharacterController;
32  class bhkCharacterMoveFinishEvent;
33  class BipedAnim;
34  class BSTransformDeltaEvent;
35  class CombatController;
36  class CombatGroup;
37  class ExtraDataList;
38  class InventoryEntryData;
39  class MovementControllerNPC;
40  class MovementMessageActorCollision;
41  class NiRefObject;
42  class PackageLocation;
43  class PerkEntryVisitor;
44  struct ActorMotionFeedbackData;
45  struct ActorMotionFeedbackOutput;
46 
48  {
49  kNone = 0,
50  kGooStart = 1,
51  kGooEnd = 2,
53  kDisintegrateEnd = 4,
54 
55  kTotal
56  };
57 
58  struct Modifiers
59  {
60  public:
61  // members
63  };
64  static_assert(sizeof(Modifiers) == 0xC);
65 
67  {
68  public:
69  template <class T>
70  struct LocalMap
71  {
72  public:
73  T* operator[](ActorValue a_actorValue)
74  {
75  return GetAt(static_cast<char>(a_actorValue));
76  }
77 
78  const T* operator[](ActorValue a_actorValue) const
79  {
80  return GetAt(static_cast<char>(a_actorValue));
81  }
82 
83  // members
85  T* entries; // 08
86 
87  private:
88  [[nodiscard]] T* GetAt(char a_actorValue) const
89  {
90  auto akVals = actorValues.data();
91  if (akVals && entries) {
92  std::uint32_t idx = 0;
93  while (akVals[idx] != '\0') {
94  if (akVals[idx] == a_actorValue) {
95  break;
96  }
97  ++idx;
98  }
99 
100  if (akVals[idx] != '\0') {
101  return std::addressof(entries[idx]);
102  }
103  }
104  return 0;
105  }
106  };
107  static_assert(sizeof(LocalMap<float>) == 0x10);
108 
109  // members
112  };
113  static_assert(sizeof(ActorValueStorage) == 0x20);
114 
116 
117  class Actor :
118  public TESObjectREFR, // 000
119  public MagicTarget, // 098
120  public ActorValueOwner, // 0B0
121  public ActorState, // 0B8
122  public BSTEventSink<BSTransformDeltaEvent>, // 0C8
123  public BSTEventSink<bhkCharacterMoveFinishEvent>, // 0D0
125  {
126  private:
128 
129  public:
130  inline static constexpr auto RTTI = RTTI_Actor;
131  inline static constexpr auto FORMTYPE = FormType::ActorCharacter;
132 
133  struct SlotTypes
134  {
135  enum
136  {
141 
142  kTotal
143  };
144  };
145 
146  enum class BOOL_BITS
147  {
148  kNone = 0,
149  kDelayUpdateScenegraph = 1 << 0,
150  kProcessMe = 1 << 1,
151  kMurderAlarm = 1 << 2,
152  kHasSceneExtra = 1 << 3,
153  kHeadingFixed = 1 << 4,
154  kSpeakingDone = 1 << 5,
156  kSoundFileDone = 1 << 7,
157  kVoiceFileDone = 1 << 8,
158  kInTempChangeList = 1 << 9,
159  kDoNotRunSayToCallback = 1 << 10,
160  kDead = 1 << 11,
161  kForceGreetingPlayer = 1 << 12,
162  kForceUpdateQuestTarget = 1 << 13,
163  kSearchingInCombat = 1 << 14,
164  kAttackOnNextTheft = 1 << 15,
165  kEvpBuffered = 1 << 16,
166  kResetAI = 1 << 17,
167  kInWater = 1 << 18,
168  kSwimming = 1 << 19,
169  kVoicePausedByScript = 1 << 20,
170  kWasInFrustrum = 1 << 21,
171  kShouldRotateToTrack = 1 << 22,
172  kSetOnDeath = 1 << 23,
173  kDoNotPadVoice = 1 << 24,
174  kFootIKInRange = 1 << 25,
175  kPlayerTeammate = 1 << 26,
176  kGivePlayerXP = 1 << 27,
177  kSoundCallbackSuccess = 1 << 28,
178  kUseEmotion = 1 << 29,
179  kGuard = 1 << 30,
180  kParalyzed = 1 << 31
181  };
182 
183  enum class BOOL_FLAGS
184  {
185  kNone = 0,
186  kScenePackage = 1 << 0,
187  kIsAMount = 1 << 1,
188  kMountPointClear = 1 << 2,
189  kGettingOnOffMount = 1 << 3,
190  kInRandomScene = 1 << 4,
191  kNoBleedoutRecovery = 1 << 5,
192  kInBleedoutAnimation = 1 << 6,
193  kCanDoFavor = 1 << 7,
194  kShouldAnimGraphUpdate = 1 << 8,
195  kCanSpeakToEssentialDown = 1 << 9,
196  kBribedByPlayer = 1 << 10,
197  kAngryWithPlayer = 1 << 11,
198  kIsTrespassing = 1 << 12,
199  kCanSpeak = 1 << 13,
200  kIsInKillMove = 1 << 14,
201  kAttackOnSight = 1 << 15,
202  kIsCommandedActor = 1 << 16,
203  kForceOneAnimgraphUpdate = 1 << 17,
204  kEssential = 1 << 18,
205  kProtected = 1 << 19,
206  kAttackingDisabled = 1 << 20,
207  kCastingDisabled = 1 << 21,
208  kSceneHeadTrackRotation = 1 << 22,
209  kForceIncMinBoneUpdate = 1 << 23,
210  kCrimeSearch = 1 << 24,
211  kMovingIntoLoadedArea = 1 << 25,
212  kDoNotShowOnStealthMeter = 1 << 26,
213  kMovementBlocked = 1 << 27,
215  kForceAnimGraphUpdate = 1 << 29,
216  kCheckAddEffectDualCast = 1 << 30,
217  kUnderwater = 1 << 31
218  };
219 
220  struct ChangeFlags
221  {
222  enum ChangeFlag : std::uint32_t
223  {
224  kLifeState = 1 << 10,
225  kPackageExtraData = 1 << 11,
227  kDismemberedLimbs = 1 << 17,
228  kLeveledActor = 1 << 18,
229  kDispModifiers = 1 << 19,
230  kTempModifiers = 1 << 20,
231  kDamageModifiers = 1 << 21,
234  };
235  };
236 
237  struct RecordFlags
238  {
239  enum RecordFlag : std::uint32_t
240  {
241  kDeleted = 1 << 5,
242  kStartsDead = 1 << 9,
243  kPersistent = 1 << 10,
245  kIgnored = 1 << 12,
246  kNoAIAcquire = 1 << 25,
247  kDontHavokSettle = 1 << 29
248  };
249  };
250 
251  ~Actor() override; // 000
252 
253  // override (TESObjectREFR)
254  void SaveGame(BGSSaveFormBuffer* a_buf) override; // 00E
255  void LoadGame(BGSLoadFormBuffer* a_buf) override; // 00F
256  void InitLoadGame(BGSLoadFormBuffer* a_buf) override; // 010
257  void FinishLoadGame(BGSLoadFormBuffer* a_buf) override; // 011
258  void Revert(BGSLoadFormBuffer* a_buf) override; // 012
259  void InitItemImpl() override; // 013
260  void SetDelete(bool a_set) override; // 023
261  void Predestroy() override; // 03B
262  BGSLocation* GetEditorLocation1() const override; // 03C - { return editorLocation; }
263  bool GetEditorLocation2(NiPoint3& a_outPos, NiPoint3& a_outRot, TESForm*& a_outWorldOrCell, TESObjectCELL* a_fallback) override; // 03D
264  void ForceEditorLocation(BGSLocation* a_location) override; // 03E - { editorLocation = a_location; }
265  void Update3DPosition(bool a_warp) override; // 03F
266  void UpdateSoundCallBack(bool a_endSceneAction) override; // 040
267  bool SetDialogueWithPlayer(bool a_flag, bool a_forceGreet, TESTopicInfo* a_topic) override; // 041
268  BGSAnimationSequencer* GetSequencer(void) const override; // 045 - { return currentProcess->high->animSequencer; }
269  bool HasKeywordHelper(const BGSKeyword* a_keyword) const override; // 048
270  TESPackage* CheckForCurrentAliasPackage() override; // 049 - { return 0; }
271  BGSScene* GetCurrentScene() const override; // 04A
272  void SetCurrentScene(BGSScene* a_scene) override; // 04B
273  bool UpdateInDialogue(DialogueResponse* a_response, bool a_unused) override; // 04C
274  BGSDialogueBranch* GetExclusiveBranch() const override; // 04D - { return exclusiveBranch; }
275  void SetExclusiveBranch(BGSDialogueBranch* a_branch) override; // 04E - { exclusiveBranch = a_arg1; }
276  void PauseCurrentDialogue(void) override; // 04F
277  NiPoint3 GetStartingAngle() const override; // 052
278  NiPoint3 GetStartingLocation() const override; // 053
279  ObjectRefHandle RemoveItem(TESBoundObject* a_item, std::int32_t a_count, ITEM_REMOVE_REASON a_reason, ExtraDataList* a_extraList, TESObjectREFR* a_moveToRef, const NiPoint3* a_dropLoc = 0, const NiPoint3* a_rotate = 0) override; // 056
280  bool AddWornItem(TESBoundObject* a_item, std::int32_t a_count, bool a_forceEquip, std::uint32_t a_arg4, std::uint32_t a_arg5) override; // 057
281  void DoTrap1(TrapData& a_data) override; // 058
282  void DoTrap2(TrapEntry* a_trap, TargetEntry* a_target) override; // 059
283  void AddObjectToContainer(TESBoundObject* a_object, ExtraDataList* a_extraList, std::int32_t a_count, TESObjectREFR* a_fromRefr) override; // 05A
284  NiPoint3 GetLookingAtLocation() const override; // 05B
286  MagicTarget* GetMagicTarget() override; // 05D - { return static_cast<MagicTarget*>(this); }
287  bool IsChild() const override; // 05E - { return false; }
289  bool DetachHavok(NiAVObject* a_obj3D) override; // 065
290  void InitHavok() override; // 066
291  void Unk_67(void) override; // 067 - related to vampire lord cape
292  void Unk_68(void) override; // 068
293  void Unk_69(void) override; // 069
294  NiAVObject* Load3D(bool a_arg1) override; // 06A
295  void Set3D(NiAVObject* a_object, bool a_queue3DTasks = true) override; // 06C
296  bool PopulateGraphProjectsToLoad(void) const override; // 072
297  NiPoint3 GetBoundMin() const override; // 073
298  NiPoint3 GetBoundMax() const override; // 074
299  void Unk_75(void) override; // 075 - "ActorValue GetWeaponSkill()"? really weird call, only works for right hand, and defaults to 1
300  void Unk_78(void) override; // 078
301  void ModifyAnimationUpdateData(BSAnimationUpdateData& a_data) override; // 079
302  bool ShouldSaveAnimationOnUnloading() const override; // 07A - { return false; }
303  bool ShouldSaveAnimationOnSaving() const override; // 07B
304  bool ShouldPerformRevert() const override; // 07C
305  void UpdateAnimation(float a_delta) override; // 07D
306  void Unk_82(void) override; // 082
307  void SetObjectReference(TESBoundObject* a_object) override; // 084
308  void MoveHavok(bool a_forceRec) override; // 085
309  void GetLinearVelocity(NiPoint3& a_velocity) const override; // 086
310  void SetActionComplete(bool a_set) override; // 087
311  void Disable() override; // 089
312  void ResetInventory(bool a_leveledOnly) override; // 08A
313  void Unk_8B(void) override; // 08B
314  void Unk_8C(void) override; // 08C
315  bool OnAddCellPerformQueueReference(TESObjectCELL& a_cell) const override; // 090
316  void DoMoveToHigh() override; // 091
317  void TryMoveToMiddleLow() override; // 092
318  bool TryChangeSkyCellActorsProcessLevel() override; // 093
319  void Unk_95(void) override; // 095
320  void Unk_96(void) override; // 096
321  void SetParentCell(TESObjectCELL* a_cell) override; // 098
322  bool IsDead(bool a_notEssential = true) const override; // 099
323  void Unk_9C(void) override; // 09C
324  void Unk_9D(void) override; // 09D
325  TESAmmo* GetCurrentAmmo() const override; // 09E
326  void UnequipItem(std::uint64_t a_arg1, TESBoundObject* a_object) override; // 0A1
327 
328  // override (MagicTarget)
329  Actor* GetTargetStatsObject() override; // 002 - { return this; }
330  bool MagicTargetIsActor() const override; // 003 - { return true; }
332 
333  // add
334  virtual void Unk_A2(void); // 0A2
335  virtual void PlayPickUpSound(TESBoundObject* a_object, bool a_pickup, bool a_use); // 0A3
336  virtual float GetHeading(bool a_ignoreRaceSettings) const; // 0A4
337  virtual void SetAvoidanceDisabled(bool a_set); // 0A5 - { return; }
338  virtual void DrawWeaponMagicHands(bool a_draw); // 0A6
339  virtual void Unk_A7(void); // 0A7
340  virtual void Unk_A8(void); // 0A8
341  virtual void SetPosition(const NiPoint3& a_pos, bool a_updateCharController); // 0A9
342  virtual void KillDying(); // 0AA
343  virtual void Resurrect(bool a_resetInventory, bool a_attach3D); // 0AB
344  virtual bool PutActorOnMountQuick(); // 0AC
345  virtual void Update(float a_delta); // 0AD
346  virtual void UpdateNoAI(float a_delta); // 0AE - { return UpdateActor3DPosition(); }
348  virtual void PotentiallyFixRagdollState(); // 0B0
349  virtual void UpdateNonRenderSafe(float a_delta); // 0B1
350  virtual void OnItemEquipped(bool a_playAnim); // 0B2
351  virtual void Unk_B3(void); // 0B3 - { return 1; }
352  virtual void Unk_B4(void); // 0B4
353  virtual void SetCrimeGoldValue(TESFaction* a_faction, bool a_violent, std::uint32_t a_amount); // 0B5
354  virtual void ModCrimeGoldValue(TESFaction* a_faction, bool a_violent, std::int32_t a_amount); // 0B6
355  virtual void RemoveCrimeGoldValue(TESFaction* a_faction, std::int32_t a_amount, bool a_violent); // 0B7
356  virtual std::uint32_t GetCrimeGoldValue(const TESFaction* a_faction) const; // 0B8
357  virtual void GoToPrison(TESFaction* a_faction, bool a_removeInventory, bool a_realJail); // 0B9 - { return; }
358  virtual void ServePrisonTime(); // 0BA - { return; }
359  virtual void PayFine(TESFaction* a_faction, bool a_goToJail, bool a_removeStolenItems); // 0BB - { return; }
360  virtual bool GetCannibal(); // 0BC - { return false; }
361  virtual void SetCannibal(bool a_set); // 0BD - { return; }
362  virtual bool GetVampireFeed(); // 0BE - { return false; }
363  virtual void SetVampireFeed(bool a_set); // 0BF - { return; }
364  virtual void InitiateVampireFeedPackage(Actor* a_target, TESObjectREFR* a_furniture); // 0C0 - { return; }
365  virtual void InitiateCannibalPackage(Actor* a_target); // 0C1 - { return; }
366  virtual void GetEyeVector(NiPoint3& a_origin, NiPoint3& a_direction, bool a_includeCameraOffset); // 0C2
367  virtual void SetRefraction(bool a_enable, float a_refraction); // 0C3
368  virtual void Unk_C4(void); // 0C4 - { return; }
369  virtual void Unk_C5(void); // 0C5 - { return 1; }
370  virtual void Unk_C6(void) = 0; // 0C6
371  virtual float GetAcrobatics() const; // 0C7 - { return 1.0; }
372  virtual void Unk_C8(void); // 0C8
373  virtual void Unk_C9(void); // 0C9
374  virtual void OnArmorActorValueChanged(); // 0CA - { return; }
375  virtual ObjectRefHandle DropObject(const TESBoundObject* a_object, ExtraDataList* a_extraList, std::int32_t a_count, const NiPoint3* a_dropLoc = 0, const NiPoint3* a_rotate = 0); // 0CB
376  virtual void PickUpObject(TESObjectREFR* a_object, std::int32_t a_count, bool a_arg3 = false, bool a_playSound = true); // 0CC
377  virtual void AttachArrow(const BSTSmartPointer<BipedAnim>& a_biped); // 0CD
378  virtual void DetachArrow(const BSTSmartPointer<BipedAnim>& a_biped); // 0CE
379  virtual bool AddShout(TESShout* a_shout); // 0CF
380  virtual void Unk_D0(void); // 0D0 - { return; }
381  virtual void Unk_D1(void); // 0D1
382  virtual std::uint32_t UseAmmo(std::uint32_t a_shotCount); // 0D2
383  virtual bool CalculateCachedOwnerIsInCombatantFaction() const; // 0D3
384  virtual CombatGroup* GetCombatGroup() const; // 0D4
385  virtual void SetCombatGroup(CombatGroup* a_group); // 0D5
386  virtual bool CheckValidTarget(TESObjectREFR& a_target); // 0D6
387  virtual void Unk_D7(void); // 0D7 - { return 0; }
388  virtual void InitiateDialogue(Actor* a_target, PackageLocation* a_loc1, PackageLocation* a_loc2); // 0D8
389  virtual void Unk_D9(void); // 0D9
390  virtual void EndDialogue(); // 0DA
391  virtual Actor* SetUpTalkingActivatorActor(Actor* a_target, Actor*& a_activator); // 0DB
392  virtual void Unk_DC(void); // 0DC - { return; }
393  virtual void InitiateFlee(TESObjectREFR* a_fleeRef, bool a_runOnce, bool a_knows, bool a_combatMode, TESObjectCELL* a_cell, TESObjectREFR* a_ref, float a_fleeFromDist, float a_fleeToDist); // 0DD
394  virtual void InitiateGetUpPackage(); // 0DE
395  virtual void PutCreatedPackage(TESPackage* a_package, bool a_tempPackage, bool a_createdPackage, bool a_allowFromFurniture); // 0DF
396  virtual void UpdateAlpha(); // 0E0
397  virtual void SetAlpha(float a_alpha = 1.0); // 0E1
398  virtual float GetAlpha(); // 0E2
399  virtual bool IsInCombat() const; // 0E3
400  virtual void UpdateCombat(); // 0E4
401  virtual void StopCombat(); // 0E5
402  virtual void Unk_E6(void); // 0E6 - { return 0.0; }
403  virtual void Unk_E7(void); // 0E7 - { return 0.0; }
404  virtual void Unk_E8(void); // 0E8 - { return 0; }
405  virtual void Unk_E9(void); // 0E9 - { return 0; }
406  virtual void Unk_EA(void); // 0EA - { return 0; }
407  virtual void Unk_EB(void); // 0EB
408  virtual void Unk_EC(void); // 0EC
409  virtual void Unk_ED(void); // 0ED
410  virtual void Unk_EE(void); // 0EE
411  virtual void WeaponSwingCallBack(); // 0EF
412  virtual void SetActorStartingPosition(); // 0F0
413  virtual bool MoveToHigh(); // 0F1
414  virtual bool MovetoLow(); // 0F2
415  virtual bool MovetoMiddleLow(); // 0F3
416  virtual void Unk_F4(void); // 0F4
417  virtual bool HasBeenAttacked() const; // 0F5
418  virtual void SetBeenAttacked(bool a_set); // 0F6
419  virtual void UseSkill(ActorValue a_av, float a_points, TESForm* a_arg3); // 0F7 - { return; }
420  virtual bool IsAtPoint(const NiPoint3& a_point, float a_radius, bool a_expandRadius, bool a_alwaysTestHeight); // 0F8
421  virtual bool IsInFaction(const TESFaction* faction) const; // 0F9
422  virtual void ForEachPerk(PerkEntryVisitor& a_visitor) const; // 0FA
423  virtual void AddPerk(BGSPerk* a_perk, std::uint32_t a_rank = 0); // 0FB - { return; }
424  virtual void RemovePerk(BGSPerk* a_perk); // 0FC - { return; }
425  virtual void Unk_FD(void); // 0FD - { return; }
426  virtual void Unk_FE(void); // 0FE - { return; }
427  virtual bool HasPerkEntries(EntryPoint a_entryType) const; // 0FF
428  virtual void ForEachPerkEntry(EntryPoint a_entryType, PerkEntryVisitor& a_visitor) const; // 100
429  virtual void ApplyPerksFromBase(); // 101
430  virtual void StartPowerAttackCoolDown(); // 102 - { return; }
431  virtual bool IsPowerAttackCoolingDown() const; // 103 - { return false; }
432  virtual void HandleHealthDamage(Actor* a_attacker, float a_damage); // 104
433  virtual void Unk_105(void); // 105
434  virtual void Unk_106(void); // 106 - { return; }
435  virtual bool QSpeakingDone() const; // 107 - { return ~(unk0E0 >> 5) & 1; }
436  virtual void SetSpeakingDone(bool a_set); // 108
437  virtual void CreateMovementController(); // 109
438  virtual void Unk_10A(void); // 10A - { return unk16C; }
439  virtual void Unk_10B(void); // 10B - { unk16C = a_arg1; }
440  virtual void Unk_10C(void); // 10C - { return unk170; }
441  virtual void Unk_10D(void); // 10D - { unk170 = a_arg1; }
442  virtual void KillImpl(Actor* a_attacker, float a_damage, bool a_sendEvent, bool a_ragdollInstant); // 10E
443  virtual void Unk_10F(void); // 10F
444  virtual bool CheckCast(MagicItem* a_spell, bool a_dualCast, MagicSystem::CannotCastReason* a_reason); // 110
445  virtual void CheckTempModifiers(); // 111 - { return; }
446  virtual std::int32_t GetCurrentShoutLevel(); // 112 - return -1 on error
447  virtual void SetLastRiddenMount(ActorHandle a_mount); // 113 - { return; }
448  virtual ActorHandle QLastRiddenMount() const; // 114 - { return {}; }
449  virtual bool CalculateCachedOwnerIsUndead() const; // 115
450  virtual bool CalculateCachedOwnerIsNPC() const; // 116
451  virtual void Unk_117(void); // 117 - { return; }
452  virtual void Unk_118(void); // 118
453  virtual const BSFixedString& GetResponseString() const; // 119 - { return "ActorResponse"; }
454  virtual void Unk_11A(void); // 11A
455  virtual void UpdateCombatControllerSettings(); // 11B
456  virtual void UpdateFadeSettings(bhkCharacterController* a_controller); // 11C
457  virtual bool ComputeMotionFeedbackSpeedAndDirection(const ActorMotionFeedbackData& a_data, float a_delta, ActorMotionFeedbackOutput& a_output); // 11D
458  virtual bool UpdateFeedbackGraphSpeedAndDirection(const ActorMotionFeedbackOutput& a_output); // 11E
459  virtual void UpdateActor3DPosition(); // 11F
460  virtual void PrecacheData(); // 120
461  virtual void WornArmorChanged(void); // 121
462  virtual void ProcessTracking(float a_delta, NiAVObject* a_obj3D); // 122
463  virtual void Unk_123(void); // 123
464  virtual void CreateActorMover(); // 124
465  virtual void DestroyActorMover(); // 125
466  virtual bool ShouldRespondToActorCollision(const MovementMessageActorCollision& a_msg, const ActorHandlePtr& a_target); // 126
467  virtual float CheckClampDamageModifier(ActorValue a_av, float a_delta); // 127
468 
470  static bool LookupByHandle(RefHandle a_refHandle, NiPointer<Actor>& a_refrOut);
471 
472  bool AddSpell(SpellItem* a_spell);
473  void AllowBleedoutDialogue(bool a_canTalk);
474  void AllowPCDialogue(bool a_talk);
475  bool CanFlyHere() const;
476  bool CanPickpocket() const;
477  bool CanTalkToPlayer() const;
483  void DoReset3D(bool a_updateWeight);
484  void EvaluatePackage(bool a_immediate = false, bool a_resetAI = false);
486  const TESNPC* GetActorBase() const;
492  const TESFaction* GetCrimeFaction() const;
493  InventoryEntryData* GetEquippedEntryData(bool a_leftHand) const;
494  TESForm* GetEquippedObject(bool a_leftHand) const;
495  std::int32_t GetGoldAmount();
498  float GetHeight();
499  std::uint16_t GetLevel() const;
501  TESRace* GetRace() const;
504  [[nodiscard]] TESObjectARMO* GetWornArmor(FormID a_formID);
505  bool HasPerk(BGSPerk* a_perk) const;
506  void InterruptCast(bool a_restoreMagicka) const;
507  bool IsAIEnabled() const;
508  bool IsAMount() const;
509  bool IsAnimationDriven() const;
510  bool IsBeingRidden() const;
511  bool IsCommandedActor() const;
512  bool IsEssential() const;
513  bool IsFactionInCrimeGroup(const TESFaction* a_faction) const;
514  bool IsGhost() const;
515  bool IsGuard() const;
516  bool IsHostileToActor(Actor* a_actor);
517  [[nodiscard]] constexpr bool IsInKillMove() const noexcept { return boolFlags.all(BOOL_FLAGS::kIsInKillMove); }
518  bool IsOnMount() const;
519  bool IsPlayerTeammate() const;
520  bool IsRunning() const;
521  bool IsSneaking() const;
522  [[nodiscard]] bool IsSummoned() const noexcept;
523  bool IsTrespassing() const;
525  bool RemoveSpell(SpellItem* a_spell);
526  std::int32_t RequestDetectionLevel(Actor* a_target, DETECTION_PRIORITY a_priority = DETECTION_PRIORITY::kNormal);
527  void StealAlarm(TESObjectREFR* a_ref, TESForm* a_object, std::int32_t a_num, std::int32_t a_total, TESForm* a_owner, bool a_allowWarning);
528  void SwitchRace(TESRace* a_race, bool a_player);
529  void UpdateArmorAbility(TESForm* a_armor, ExtraDataList* a_extraData);
533  void UpdateWeaponAbility(TESForm* a_weapon, ExtraDataList* a_extraData, bool a_leftHand);
534  bool VisitFactions(std::function<bool(TESFaction* a_faction, std::int8_t a_rank)> a_visitor);
535  bool WouldBeStealing(const TESObjectREFR* a_target) const;
536 
537  // members
538  stl::enumeration<BOOL_BITS, std::uint32_t> boolBits; // 0E0
539  float updateTargetTimer; // 0E4
541  std::uint32_t pad0EC; // 0EC
546  float checkMyDeadBodyTimer; // 104
547  float voiceTimer; // 108
548  float underWaterTimer; // 10C
549  std::int32_t thiefCrimeStamp; // 110
550  std::int32_t actionValue; // 114
551  float timerOnAction; // 118
552  std::uint32_t unk11C; // 11C
554  float editorLocRot; // 12C
559  void* unk150; // 150
560  CombatController* combatController; // 158
563  std::uint32_t unk16C; // 16C
564  std::uint32_t unk170; // 170
565  std::uint32_t unk174; // 174
566  std::uint32_t unk178; // 178
567  std::uint32_t intimidateBribeDayStamp; // 17C
568  std::uint64_t unk180; // 180
570  ActorMagicCaster* magicCasters[SlotTypes::kTotal]; // 1A0
573  std::uint32_t unk1E8; // 1E8
574  std::uint32_t pad1EC; // 1EC
575  TESRace* race; // 1F0
576  float equippedWeight; // 1F8
577  stl::enumeration<BOOL_FLAGS, std::uint32_t> boolFlags; // 1FC
584  float lastUpdate; // 258
585  std::uint32_t lastSeenTime; // 25C
587  float armorRating; // 268
588  float armorBaseFactorSum; // 26C
589  std::int8_t soundCallBackSet; // 271
590  std::uint8_t unk271; // 270
591  std::uint8_t unk272; // 272
592  std::uint8_t unk273; // 273
593  std::uint32_t unk274; // 274
594  std::uint64_t unk278; // 278
595  std::uint64_t unk280; // 280
596  WinAPI::CRITICAL_SECTION unk288; // 288 - havok related
597 
598  private:
599  TESFaction* GetCrimeFactionImpl() const;
600  };
601  static_assert(sizeof(Actor) == 0x2B8);
602 }
Definition: AIProcess.h:107
Definition: ActorMover.h:8
Definition: ActorState.h:93
Definition: ActorValueOwner.h:8
Definition: Actor.h:125
bool IsCommandedActor() const
NiPoint3 editorLocCoord
Definition: Actor.h:553
virtual void InitiateCannibalPackage(Actor *a_target)
virtual void PlayPickUpSound(TESBoundObject *a_object, bool a_pickup, bool a_use)
virtual bool GetVampireFeed()
void Unk_9D(void) override
virtual void Unk_C9(void)
ObjectRefHandle GetOccupiedFurniture() const
virtual void PickUpObject(TESObjectREFR *a_object, std::int32_t a_count, bool a_arg3=false, bool a_playSound=true)
WinAPI::CRITICAL_SECTION unk288
Definition: Actor.h:596
MagicItem * selectedSpells[SlotTypes::kTotal]
Definition: Actor.h:571
virtual void ProcessTracking(float a_delta, NiAVObject *a_obj3D)
std::uint8_t unk272
Definition: Actor.h:591
virtual void UpdateNoAI(float a_delta)
NiPoint3 GetBoundMin() const override
BGSAnimationSequencer * GetSequencer(void) const override
virtual void Unk_FD(void)
bool IsChild() const override
Modifiers staminaModifiers
Definition: Actor.h:582
void SaveGame(BGSSaveFormBuffer *a_buf) override
virtual void Unk_118(void)
void Unk_69(void) override
MagicTarget * GetMagicTarget() override
std::int32_t RequestDetectionLevel(Actor *a_target, DETECTION_PRIORITY a_priority=DETECTION_PRIORITY::kNormal)
virtual void Unk_10B(void)
virtual void Unk_E6(void)
BOOL_FLAGS
Definition: Actor.h:184
bool ShouldPerformRevert() const override
void UpdateSoundCallBack(bool a_endSceneAction) override
virtual void Unk_106(void)
virtual ActorHandle QLastRiddenMount() const
static NiPointer< Actor > LookupByHandle(RefHandle a_refHandle)
bool IsEssential() const
NiPoint3 GetLookingAtLocation() const override
ActorHandle GetCommandingActor() const
std::uint32_t unk1E8
Definition: Actor.h:573
virtual bool IsInCombat() const
AITimeStamp calculateVendorFactionTimer
Definition: Actor.h:562
virtual void WeaponSwingCallBack()
virtual void EndDialogue()
virtual bool CalculateCachedOwnerIsInCombatantFaction() const
virtual void Unk_C4(void)
bhkCharacterController * GetCharController() const
TESFaction * GetCrimeFaction()
virtual void SetPosition(const NiPoint3 &a_pos, bool a_updateCharController)
virtual void Unk_C8(void)
void MoveHavok(bool a_forceRec) override
std::int32_t thiefCrimeStamp
Definition: Actor.h:549
ObjectRefHandle RemoveItem(TESBoundObject *a_item, std::int32_t a_count, ITEM_REMOVE_REASON a_reason, ExtraDataList *a_extraList, TESObjectREFR *a_moveToRef, const NiPoint3 *a_dropLoc=0, const NiPoint3 *a_rotate=0) override
virtual void Unk_EB(void)
virtual void SetVampireFeed(bool a_set)
NiAVObject * Load3D(bool a_arg1) override
virtual void Unk_C5(void)
virtual const BSFixedString & GetResponseString() const
bool RemoveSpell(SpellItem *a_spell)
bool OnAddCellPerformQueueReference(TESObjectCELL &a_cell) const override
Modifiers healthModifiers
Definition: Actor.h:580
virtual void Unk_FE(void)
virtual ObjectRefHandle DropObject(const TESBoundObject *a_object, ExtraDataList *a_extraList, std::int32_t a_count, const NiPoint3 *a_dropLoc=0, const NiPoint3 *a_rotate=0)
virtual void OnItemEquipped(bool a_playAnim)
Actor * GetTargetStatsObject() override
MagicCaster * GetMagicCaster(MagicSystem::CastingSource a_source) override
void RemoveExtraArrows3D()
std::int32_t actionValue
Definition: Actor.h:550
virtual void SetCannibal(bool a_set)
NiPoint3 GetStartingAngle() const override
stl::enumeration< ACTOR_CRITICAL_STAGE, std::uint32_t > criticalStage
Definition: Actor.h:540
virtual void Unk_10F(void)
void Revert(BGSLoadFormBuffer *a_buf) override
bool IsTrespassing() const
void AllowPCDialogue(bool a_talk)
void AddObjectToContainer(TESBoundObject *a_object, ExtraDataList *a_extraList, std::int32_t a_count, TESObjectREFR *a_fromRefr) override
virtual void Unk_D1(void)
const TESFaction * GetCrimeFaction() const
virtual void PutCreatedPackage(TESPackage *a_package, bool a_tempPackage, bool a_createdPackage, bool a_allowFromFurniture)
bool ShouldSaveAnimationOnSaving() const override
void InitHavok() override
NiAVObject * GetHeadPartObject(BGSHeadPart::HeadPartType a_type)
virtual bool CheckCast(MagicItem *a_spell, bool a_dualCast, MagicSystem::CannotCastReason *a_reason)
virtual void GetEyeVector(NiPoint3 &a_origin, NiPoint3 &a_direction, bool a_includeCameraOffset)
ActorHandle currentCombatTarget
Definition: Actor.h:544
virtual void StartPowerAttackCoolDown()
void SetDelete(bool a_set) override
BGSDialogueBranch * GetExclusiveBranch() const override
static constexpr auto RTTI
Definition: Actor.h:130
void Unk_8C(void) override
void * unk150
Definition: Actor.h:559
std::uint8_t unk273
Definition: Actor.h:592
bool IsBeingRidden() const
virtual void InitiateGetUpPackage()
void DoMoveToHigh() override
void UnequipItem(std::uint64_t a_arg1, TESBoundObject *a_object) override
void ClearExpressionOverride()
virtual bool IsInFaction(const TESFaction *faction) const
std::uint32_t lastSeenTime
Definition: Actor.h:585
virtual void SetCrimeGoldValue(TESFaction *a_faction, bool a_violent, std::uint32_t a_amount)
void Disable() override
virtual bool ShouldRespondToActorCollision(const MovementMessageActorCollision &a_msg, const ActorHandlePtr &a_target)
virtual void Unk_B4(void)
virtual void Unk_117(void)
TESAmmo * GetCurrentAmmo() const override
std::uint32_t unk178
Definition: Actor.h:566
virtual void Update(float a_delta)
virtual CombatGroup * GetCombatGroup() const
virtual void Unk_123(void)
virtual void Unk_EC(void)
void Unk_67(void) override
std::uint32_t pad1EC
Definition: Actor.h:574
bool UpdateInDialogue(DialogueResponse *a_response, bool a_unused) override
virtual void UpdateCombatControllerSettings()
float armorBaseFactorSum
Definition: Actor.h:588
ActorHandle CreateRefHandle()
bool IsRunning() const
BSTSmartPointer< BipedAnim > biped
Definition: Actor.h:586
ActorHandle myKiller
Definition: Actor.h:545
Modifiers voicePointsModifiers
Definition: Actor.h:583
ObjectRefHandle dialogueItemTarget
Definition: Actor.h:543
TESRace * race
Definition: Actor.h:575
void SetCurrentScene(BGSScene *a_scene) override
virtual void Unk_11A(void)
virtual bool MoveToHigh()
bool MagicTargetIsActor() const override
virtual bool MovetoMiddleLow()
virtual void PotentiallyFixRagdollState()
void SwitchRace(TESRace *a_race, bool a_player)
virtual void DetachArrow(const BSTSmartPointer< BipedAnim > &a_biped)
virtual void Unk_B3(void)
ActorMagicCaster * magicCasters[SlotTypes::kTotal]
Definition: Actor.h:570
bool CanFlyHere() const
float lastUpdate
Definition: Actor.h:584
virtual bool MovetoLow()
void SetExclusiveBranch(BGSDialogueBranch *a_branch) override
virtual void Unk_D7(void)
NiPoint3 GetBoundMax() const override
void UpdateWeaponAbility(TESForm *a_weapon, ExtraDataList *a_extraData, bool a_leftHand)
virtual void SetSpeakingDone(bool a_set)
bool IsHostileToActor(Actor *a_actor)
virtual void DrawWeaponMagicHands(bool a_draw)
const InventoryEntryData * GetAttackingWeapon() const
virtual void ForEachPerk(PerkEntryVisitor &a_visitor) const
bool IsAIEnabled() const
void UpdateHairColor()
void Set3D(NiAVObject *a_object, bool a_queue3DTasks=true) override
virtual void Unk_DC(void)
BOOL_BITS
Definition: Actor.h:147
BGSDialogueBranch * exclusiveBranch
Definition: Actor.h:579
void UpdateSkinColor()
virtual void Unk_EA(void)
virtual void CheckTempModifiers()
void Unk_82(void) override
virtual void Unk_C6(void)=0
virtual void ForEachPerkEntry(EntryPoint a_entryType, PerkEntryVisitor &a_visitor) const
TESForm * GetEquippedObject(bool a_leftHand) const
void DoReset3D(bool a_updateWeight)
virtual bool QSpeakingDone() const
void Unk_68(void) override
void Unk_78(void) override
bool IsOnMount() const
void Unk_95(void) override
virtual void KillDying()
virtual void PayFine(TESFaction *a_faction, bool a_goToJail, bool a_removeStolenItems)
virtual void Unk_105(void)
void DoTrap2(TrapEntry *a_trap, TargetEntry *a_target) override
void Predestroy() override
virtual void Unk_E8(void)
bool AddWornItem(TESBoundObject *a_item, std::int32_t a_count, bool a_forceEquip, std::uint32_t a_arg4, std::uint32_t a_arg5) override
void Unk_75(void) override
virtual void SetActorStartingPosition()
void UpdateArmorAbility(TESForm *a_armor, ExtraDataList *a_extraData)
Modifiers magickaModifiers
Definition: Actor.h:581
bool IsGuard() const
virtual void UpdateCharacterControllerSimulationSettings(bhkCharacterController &a_controller)
std::uint64_t unk278
Definition: Actor.h:594
virtual void SetLastRiddenMount(ActorHandle a_mount)
static constexpr auto FORMTYPE
Definition: Actor.h:131
void Update3DPosition(bool a_warp) override
bool AddSpell(SpellItem *a_spell)
virtual void WornArmorChanged(void)
ActorValueStorage avStorage
Definition: Actor.h:578
bool IsDead(bool a_notEssential=true) const override
std::uint32_t unk170
Definition: Actor.h:564
void SetParentCell(TESObjectCELL *a_cell) override
virtual Actor * SetUpTalkingActivatorActor(Actor *a_target, Actor *&a_activator)
virtual bool HasPerkEntries(EntryPoint a_entryType) const
stl::enumeration< BOOL_BITS, std::uint32_t > boolBits
Definition: Actor.h:538
void SetActionComplete(bool a_set) override
virtual void Unk_EE(void)
virtual std::uint32_t UseAmmo(std::uint32_t a_shotCount)
TESObjectARMO * GetSkin(BGSBipedObjectForm::BipedObjectSlot a_slot)
virtual void GoToPrison(TESFaction *a_faction, bool a_removeInventory, bool a_realJail)
virtual void Unk_ED(void)
bool IsAMount() const
void UpdateAnimation(float a_delta) override
float voiceTimer
Definition: Actor.h:547
virtual void HandleHealthDamage(Actor *a_attacker, float a_damage)
virtual void RemoveCrimeGoldValue(TESFaction *a_faction, std::int32_t a_amount, bool a_violent)
TESFaction * vendorFaction
Definition: Actor.h:561
virtual void UpdateAlpha()
bool CanTalkToPlayer() const
void AllowBleedoutDialogue(bool a_canTalk)
void ClearArrested()
void ForceEditorLocation(BGSLocation *a_location) override
void Unk_9C(void) override
~Actor() override
void DoTrap1(TrapData &a_data) override
virtual void Unk_10C(void)
std::uint32_t unk174
Definition: Actor.h:565
float armorRating
Definition: Actor.h:587
virtual void AttachArrow(const BSTSmartPointer< BipedAnim > &a_biped)
virtual bool GetCannibal()
virtual float CheckClampDamageModifier(ActorValue a_av, float a_delta)
constexpr bool IsInKillMove() const noexcept
Definition: Actor.h:517
virtual bool PutActorOnMountQuick()
BSFaceGenAnimationData * GetFaceGenAnimationData() override
virtual void CreateMovementController()
virtual void KillImpl(Actor *a_attacker, float a_damage, bool a_sendEvent, bool a_ragdollInstant)
virtual bool CalculateCachedOwnerIsNPC() const
bool IsSneaking() const
ActorHandle GetHandle()
virtual void ModCrimeGoldValue(TESFaction *a_faction, bool a_violent, std::int32_t a_amount)
BSSimpleList< ActiveEffect * > * GetActiveEffectList() override
virtual void Unk_D9(void)
void Unk_96(void) override
virtual void SetAlpha(float a_alpha=1.0)
void StealAlarm(TESObjectREFR *a_ref, TESForm *a_object, std::int32_t a_num, std::int32_t a_total, TESForm *a_owner, bool a_allowWarning)
virtual void Unk_10D(void)
bool CanPickpocket() const
std::uint8_t unk271
Definition: Actor.h:590
float underWaterTimer
Definition: Actor.h:548
virtual void Unk_A8(void)
bool IsAnimationDriven() const
void ClearExtraArrows()
Definition: Actor.h:480
virtual void ApplyPerksFromBase()
InventoryEntryData * GetEquippedEntryData(bool a_leftHand) const
bool IsSummoned() const noexcept
virtual bool CheckValidTarget(TESObjectREFR &a_target)
virtual void ServePrisonTime()
void LoadGame(BGSLoadFormBuffer *a_buf) override
BSTSmallArray< SpellItem * > addedSpells
Definition: Actor.h:569
std::uint32_t intimidateBribeDayStamp
Definition: Actor.h:567
virtual bool IsPowerAttackCoolingDown() const
std::int8_t soundCallBackSet
Definition: Actor.h:589
virtual bool IsAtPoint(const NiPoint3 &a_point, float a_radius, bool a_expandRadius, bool a_alwaysTestHeight)
AIProcess * currentProcess
Definition: Actor.h:542
bool HasKeywordHelper(const BGSKeyword *a_keyword) const override
TESForm * selectedPower
Definition: Actor.h:572
void TryMoveToMiddleLow() override
std::uint32_t unk274
Definition: Actor.h:593
BGSLocation * GetEditorLocation1() const override
virtual void Resurrect(bool a_resetInventory, bool a_attach3D)
BGSScene * GetCurrentScene() const override
virtual void SetRefraction(bool a_enable, float a_refraction)
virtual void RemovePerk(BGSPerk *a_perk)
TESObjectARMO * GetWornArmor(FormID a_formID)
CombatController * combatController
Definition: Actor.h:560
bool PopulateGraphProjectsToLoad(void) const override
bool DetachHavok(NiAVObject *a_obj3D) override
ActorMover * actorMover
Definition: Actor.h:557
virtual void Unk_E7(void)
void Unk_8B(void) override
BGSLocation * editorLocation
Definition: Actor.h:556
void FinishLoadGame(BGSLoadFormBuffer *a_buf) override
void ResetInventory(bool a_leveledOnly) override
virtual void UpdateCombat()
virtual void CreateActorMover()
NiPoint3 GetStartingLocation() const override
virtual void Unk_F4(void)
virtual void InitiateVampireFeedPackage(Actor *a_target, TESObjectREFR *a_furniture)
virtual bool AddShout(TESShout *a_shout)
virtual bool UpdateFeedbackGraphSpeedAndDirection(const ActorMotionFeedbackOutput &a_output)
std::uint32_t pad0EC
Definition: Actor.h:541
void GetLinearVelocity(NiPoint3 &a_velocity) const override
virtual void StopCombat()
float GetHeight()
void InitLoadGame(BGSLoadFormBuffer *a_buf) override
float equippedWeight
Definition: Actor.h:576
virtual bool ComputeMotionFeedbackSpeedAndDirection(const ActorMotionFeedbackData &a_data, float a_delta, ActorMotionFeedbackOutput &a_output)
virtual float GetAlpha()
void InterruptCast(bool a_restoreMagicka) const
virtual void Unk_E9(void)
TESPackage * CheckForCurrentAliasPackage() override
virtual void DestroyActorMover()
float editorLocRot
Definition: Actor.h:554
void InitItemImpl() override
virtual void Unk_D0(void)
TESRace * GetRace() const
virtual bool CalculateCachedOwnerIsUndead() const
virtual void Unk_10A(void)
virtual float GetHeading(bool a_ignoreRaceSettings) const
virtual void SetCombatGroup(CombatGroup *a_group)
virtual void InitiateFlee(TESObjectREFR *a_fleeRef, bool a_runOnce, bool a_knows, bool a_combatMode, TESObjectCELL *a_cell, TESObjectREFR *a_ref, float a_fleeFromDist, float a_fleeToDist)
bool IsFactionInCrimeGroup(const TESFaction *a_faction) const
bool GetEditorLocation2(NiPoint3 &a_outPos, NiPoint3 &a_outRot, TESForm *&a_outWorldOrCell, TESObjectCELL *a_fallback) override
void ModifyAnimationUpdateData(BSAnimationUpdateData &a_data) override
BSTSmartPointer< MovementControllerNPC > movementController
Definition: Actor.h:558
virtual void SetBeenAttacked(bool a_set)
bool WouldBeStealing(const TESObjectREFR *a_target) const
void SetObjectReference(TESBoundObject *a_object) override
bool IsPlayerTeammate() const
static bool LookupByHandle(RefHandle a_refHandle, NiPointer< Actor > &a_refrOut)
virtual void UpdateFadeSettings(bhkCharacterController *a_controller)
virtual void UpdateNonRenderSafe(float a_delta)
std::uint64_t unk280
Definition: Actor.h:595
TESObjectARMO * GetWornArmor(BGSBipedObjectForm::BipedObjectSlot a_slot)
virtual void AddPerk(BGSPerk *a_perk, std::uint32_t a_rank=0)
void PauseCurrentDialogue(void) override
virtual bool HasBeenAttacked() const
float updateTargetTimer
Definition: Actor.h:539
float checkMyDeadBodyTimer
Definition: Actor.h:546
const TESNPC * GetActorBase() const
virtual std::uint32_t GetCrimeGoldValue(const TESFaction *a_faction) const
virtual void UpdateActor3DPosition()
void Update3DModel()
bool ShouldSaveAnimationOnUnloading() const override
void EvaluatePackage(bool a_immediate=false, bool a_resetAI=false)
virtual void OnArmorActorValueChanged()
virtual void Unk_A2(void)
TESNPC * GetActorBase()
bool TryChangeSkyCellActorsProcessLevel() override
std::int32_t GetGoldAmount()
std::uint16_t GetLevel() const
virtual void SetAvoidanceDisabled(bool a_set)
std::uint32_t unk16C
Definition: Actor.h:563
void DispelWornItemEnchantments()
bool VisitFactions(std::function< bool(TESFaction *a_faction, std::int8_t a_rank)> a_visitor)
std::uint64_t unk180
Definition: Actor.h:568
bool SetDialogueWithPlayer(bool a_flag, bool a_forceGreet, TESTopicInfo *a_topic) override
std::uint32_t unk11C
Definition: Actor.h:552
virtual std::int32_t GetCurrentShoutLevel()
InventoryEntryData * GetAttackingWeapon()
bool IsGhost() const
float timerOnAction
Definition: Actor.h:551
virtual void Unk_A7(void)
TESForm * editorLocForm
Definition: Actor.h:555
virtual void UseSkill(ActorValue a_av, float a_points, TESForm *a_arg3)
bool HasPerk(BGSPerk *a_perk) const
virtual void PrecacheData()
stl::enumeration< BOOL_FLAGS, std::uint32_t > boolFlags
Definition: Actor.h:577
virtual void InitiateDialogue(Actor *a_target, PackageLocation *a_loc1, PackageLocation *a_loc2)
virtual float GetAcrobatics() const
Definition: BGSAnimationSequencer.h:11
Definition: BGSDialogueBranch.h:10
HeadPartType
Definition: BGSHeadPart.h:33
Definition: BGSKeyword.h:10
Definition: BGSLocation.h:68
BGSEntryPoint::ENTRY_POINT EntryPoint
Definition: BGSPerkEntry.h:24
Definition: BGSPerk.h:31
Definition: BGSScene.h:32
Definition: BSFaceGenAnimationData.h:11
Definition: BSPointerHandleSmartPointer.h:10
Definition: BSTList.h:10
Definition: BSTArray.h:377
Definition: BSTEvent.h:146
Definition: BSTSmartPointer.h:37
Definition: BipedAnim.h:40
Definition: DialogueItem.h:21
Definition: ExtraDataList.h:40
Definition: IPostAnimationChannelUpdateFunctor.h:6
Definition: InventoryEntryData.h:14
Definition: MagicCaster.h:11
Definition: MagicItem.h:27
Definition: MagicTarget.h:19
Definition: MovementControllerNPC.h:21
Definition: NiAVObject.h:45
Definition: NiPoint3.h:6
Definition: NiSmartPointer.h:9
Definition: PackageLocation.h:11
Definition: PerkEntryVisitor.h:8
Definition: SpellItem.h:16
Definition: TESAmmo.h:50
Definition: TESBoundObject.h:24
Definition: TESFaction.h:120
Definition: TESForm.h:34
Definition: TESNPC.h:36
Definition: TESObjectARMO.h:37
Definition: TESObjectCELL.h:102
Definition: TESObjectREFR.h:103
Definition: TESPackage.h:248
Definition: TESRace.h:146
Definition: TESShout.h:18
Definition: TESTopicInfo.h:42
Definition: bhkCharacterController.h:66
const_pointer data() const noexcept
Definition: BSFixedString.h:116
constexpr bool all(Args... a_args) const noexcept requires(std
Definition: PCH.h:287
CannotCastReason
Definition: MagicSystem.h:8
CastingSource
Definition: MagicSystem.h:21
Definition: AbsorbEffect.h:6
NiSmartPointer(Actor)
ActorValue
Definition: ActorValues.h:6
DETECTION_PRIORITY
Definition: DetectionPriorities.h:6
std::uint32_t FormID
Definition: BSCoreTypes.h:5
ITEM_REMOVE_REASON
Definition: TESObjectREFR.h:54
ACTOR_CRITICAL_STAGE
Definition: Actor.h:48
constexpr REL::ID RTTI_Actor
Definition: Offsets_RTTI.h:22
std::uint32_t RefHandle
Definition: BSCoreTypes.h:6
Definition: WinAPI.h:4
Definition: PCH.h:72
enumeration(Args...) -> enumeration< std::common_type_t< Args... >, std::underlying_type_t< std::common_type_t< Args... >>>
Definition: NiBinaryStream.h:94
@ kTotal
Definition: ActorValues.h:184
Definition: AITimeStamp.h:6
Definition: Actor.h:71
const T * operator[](ActorValue a_actorValue) const
Definition: Actor.h:78
T * operator[](ActorValue a_actorValue)
Definition: Actor.h:73
BSFixedString actorValues
Definition: Actor.h:84
T * entries
Definition: Actor.h:85
Definition: Actor.h:67
LocalMap< float > baseValues
Definition: Actor.h:107
LocalMap< Modifiers > modifiers
Definition: Actor.h:111
Definition: Actor.h:221
ChangeFlag
Definition: Actor.h:223
@ kLifeState
Definition: Actor.h:224
@ kMerchantContainer
Definition: Actor.h:226
@ kDismemberedLimbs
Definition: Actor.h:227
@ kOverrideModifiers
Definition: Actor.h:232
@ kPackageExtraData
Definition: Actor.h:225
@ kDispModifiers
Definition: Actor.h:229
@ kPermanentModifiers
Definition: Actor.h:233
@ kLeveledActor
Definition: Actor.h:228
@ kTempModifiers
Definition: Actor.h:230
@ kDamageModifiers
Definition: Actor.h:231
Definition: Actor.h:238
RecordFlag
Definition: Actor.h:240
@ kInitiallyDisabled
Definition: Actor.h:244
@ kPersistent
Definition: Actor.h:243
@ kNoAIAcquire
Definition: Actor.h:246
@ kIgnored
Definition: Actor.h:245
@ kDontHavokSettle
Definition: Actor.h:247
@ kStartsDead
Definition: Actor.h:242
@ kDeleted
Definition: Actor.h:241
Definition: Actor.h:134
@ kLeftHand
Definition: Actor.h:137
@ kPowerOrShout
Definition: Actor.h:140
@ kUnknown
Definition: Actor.h:139
@ kTotal
Definition: Actor.h:142
@ kRightHand
Definition: Actor.h:138
ENTRY_POINT
Definition: BGSEntryPoint.h:10
BipedObjectSlot
Definition: BGSBipedObjectForm.h:11
Definition: Actor.h:59
float modifiers[ACTOR_VALUE_MODIFIERS::kTotal]
Definition: Actor.h:62