CommonLibVR
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/E/EmotionTypes.h"
19 #include "RE/F/FormTypes.h"
21 #include "RE/M/MagicSystem.h"
22 #include "RE/M/MagicTarget.h"
23 #include "RE/N/NiSmartPointer.h"
24 #include "RE/T/TESNPC.h"
25 #include "RE/T/TESObjectREFR.h"
26 
27 #include "REX/W32/BASE.h"
28 
29 namespace RE
30 {
31  enum class FIGHT_REACTION;
32 
33  class ActorMagicCaster;
34  class ActorMover;
35  class AIProcess;
36  class bhkCharacterController;
37  class bhkCharacterMoveFinishEvent;
38  class BipedAnim;
39  class BSTransformDeltaEvent;
40  class CombatController;
41  class CombatGroup;
42  class ExtraDataList;
43  class InventoryEntryData;
44  class MovementControllerNPC;
45  class MovementMessageActorCollision;
46  class NiRefObject;
47  class PackageLocation;
48  class PerkEntryVisitor;
49  class TrespassPackage;
50  struct ActorMotionFeedbackData;
51  struct ActorMotionFeedbackOutput;
52  struct HighProcessData;
53  struct MiddleHighProcessData;
54 
56  {
57  kNone = 0,
58  kGooStart = 1,
59  kGooEnd = 2,
61  kDisintegrateEnd = 4,
62 
63  kTotal
64  };
65 
66  struct Modifiers
67  {
68  public:
69  // members
71  };
72  static_assert(sizeof(Modifiers) == 0xC);
73 
75  {
76  public:
77  template <class T>
78  struct LocalMap
79  {
80  public:
81  T* operator[](ActorValue a_actorValue)
82  {
83  return GetAt(static_cast<char>(a_actorValue));
84  }
85 
86  const T* operator[](ActorValue a_actorValue) const
87  {
88  return GetAt(static_cast<char>(a_actorValue));
89  }
90 
91  // members
93  T* entries; // 08
94 
95  private:
96  [[nodiscard]] T* GetAt(char a_actorValue) const
97  {
98  auto akVals = actorValues.data();
99  if (akVals && entries) {
100  std::uint32_t idx = 0;
101  while (akVals[idx] != '\0') {
102  if (akVals[idx] == a_actorValue) {
103  break;
104  }
105  ++idx;
106  }
107 
108  if (akVals[idx] != '\0') {
109  return std::addressof(entries[idx]);
110  }
111  }
112  return 0;
113  }
114  };
115  static_assert(sizeof(LocalMap<float>) == 0x10);
116 
117  // members
120  };
121  static_assert(sizeof(ActorValueStorage) == 0x20);
122 
124 
125  class Actor :
126  public TESObjectREFR, // 000
127  public MagicTarget, // 098
128  public ActorValueOwner, // 0B0
129  public ActorState, // 0B8
130  public BSTEventSink<BSTransformDeltaEvent>, // 0C8
131  public BSTEventSink<bhkCharacterMoveFinishEvent>, // 0D0
133  {
134  private:
136 
137  public:
138  inline static constexpr auto RTTI = RTTI_Actor;
139  inline static constexpr auto VTABLE = VTABLE_Actor;
140  inline static constexpr auto FORMTYPE = FormType::ActorCharacter;
141 
142  struct SlotTypes
143  {
144  enum
145  {
150 
151  kTotal
152  };
153  };
154 
155  enum class BOOL_BITS
156  {
157  kNone = 0,
158  kDelayUpdateScenegraph = 1 << 0,
159  kProcessMe = 1 << 1,
160  kMurderAlarm = 1 << 2,
161  kHasSceneExtra = 1 << 3,
162  kHeadingFixed = 1 << 4,
163  kSpeakingDone = 1 << 5,
165  kSoundFileDone = 1 << 7,
166  kVoiceFileDone = 1 << 8,
167  kInTempChangeList = 1 << 9,
168  kDoNotRunSayToCallback = 1 << 10,
169  kDead = 1 << 11,
170  kForceGreetingPlayer = 1 << 12,
171  kForceUpdateQuestTarget = 1 << 13,
172  kSearchingInCombat = 1 << 14,
173  kAttackOnNextTheft = 1 << 15,
174  kEvpBuffered = 1 << 16,
175  kResetAI = 1 << 17,
176  kInWater = 1 << 18,
177  kSwimming = 1 << 19,
178  kVoicePausedByScript = 1 << 20,
179  kWasInFrustrum = 1 << 21,
180  kShouldRotateToTrack = 1 << 22,
181  kSetOnDeath = 1 << 23,
182  kDoNotPadVoice = 1 << 24,
183  kFootIKInRange = 1 << 25,
184  kPlayerTeammate = 1 << 26,
185  kGivePlayerXP = 1 << 27,
186  kSoundCallbackSuccess = 1 << 28,
187  kUseEmotion = 1 << 29,
188  kGuard = 1 << 30,
189  kParalyzed = 1 << 31
190  };
191 
192  enum class BOOL_FLAGS
193  {
194  kNone = 0,
195  kScenePackage = 1 << 0,
196  kIsAMount = 1 << 1,
197  kMountPointClear = 1 << 2,
198  kGettingOnOffMount = 1 << 3,
199  kInRandomScene = 1 << 4,
200  kNoBleedoutRecovery = 1 << 5,
201  kInBleedoutAnimation = 1 << 6,
202  kCanDoFavor = 1 << 7,
203  kShouldAnimGraphUpdate = 1 << 8,
204  kCanSpeakToEssentialDown = 1 << 9,
205  kBribedByPlayer = 1 << 10,
206  kAngryWithPlayer = 1 << 11,
207  kIsTrespassing = 1 << 12,
208  kCanSpeak = 1 << 13,
209  kIsInKillMove = 1 << 14,
210  kAttackOnSight = 1 << 15,
211  kIsCommandedActor = 1 << 16,
212  kForceOneAnimgraphUpdate = 1 << 17,
213  kEssential = 1 << 18,
214  kProtected = 1 << 19,
215  kAttackingDisabled = 1 << 20,
216  kCastingDisabled = 1 << 21,
217  kSceneHeadTrackRotation = 1 << 22,
218  kForceIncMinBoneUpdate = 1 << 23,
219  kCrimeSearch = 1 << 24,
220  kMovingIntoLoadedArea = 1 << 25,
221  kDoNotShowOnStealthMeter = 1 << 26,
222  kMovementBlocked = 1 << 27,
224  kForceAnimGraphUpdate = 1 << 29,
225  kCheckAddEffectDualCast = 1 << 30,
226  kUnderwater = 1 << 31
227  };
228 
229  struct ChangeFlags
230  {
231  enum ChangeFlag : std::uint32_t
232  {
233  kLifeState = 1 << 10,
234  kPackageExtraData = 1 << 11,
236  kDismemberedLimbs = 1 << 17,
237  kLeveledActor = 1 << 18,
238  kDispModifiers = 1 << 19,
239  kTempModifiers = 1 << 20,
240  kDamageModifiers = 1 << 21,
243  };
244  };
245 
246  struct RecordFlags
247  {
248  enum RecordFlag : std::uint32_t
249  {
250  kDeleted = 1 << 5,
251  kStartsDead = 1 << 9,
252  kPersistent = 1 << 10,
254  kIgnored = 1 << 12,
255  kNoAIAcquire = 1 << 25,
256  kDontHavokSettle = 1 << 29
257  };
258  };
259 
261  {
262  public:
263  inline static constexpr auto RTTI = RTTI_Actor__ForEachSpellVisitor;
264  inline static constexpr auto VTABLE = VTABLE_Actor__ForEachSpellVisitor;
265 
266  virtual ~ForEachSpellVisitor() = default; // 00
267 
268  // add
269  virtual BSContainer::ForEachResult Visit(SpellItem* a_spell) = 0; // 01
270  };
271 
272  ~Actor() override; // 000
273 
274  // override (TESObjectREFR)
275  void SaveGame(BGSSaveFormBuffer* a_buf) override; // 00E
276  void LoadGame(BGSLoadFormBuffer* a_buf) override; // 00F
277  void InitLoadGame(BGSLoadFormBuffer* a_buf) override; // 010
278  void FinishLoadGame(BGSLoadFormBuffer* a_buf) override; // 011
279  void Revert(BGSLoadFormBuffer* a_buf) override; // 012
280  void InitItemImpl() override; // 013
281  void SetDelete(bool a_set) override; // 023
282  void Predestroy() override; // 03B
283  BGSLocation* GetEditorLocation1() const override; // 03C - { return editorLocation; }
284  bool GetEditorLocation2(NiPoint3& a_outPos, NiPoint3& a_outRot, TESForm*& a_outWorldOrCell, TESObjectCELL* a_fallback) override; // 03D
285  void ForceEditorLocation(BGSLocation* a_location) override; // 03E - { editorLocation = a_location; }
286  void Update3DPosition(bool a_warp) override; // 03F
287  void UpdateSoundCallBack(bool a_endSceneAction) override; // 040
288  bool SetDialogueWithPlayer(bool a_flag, bool a_forceGreet, TESTopicInfo* a_topic) override; // 041
289  BGSAnimationSequencer* GetSequencer(void) const override; // 045 - { return currentProcess->high->animSequencer; }
290  bool HasKeywordHelper(const BGSKeyword* a_keyword) const override; // 048
291  TESPackage* CheckForCurrentAliasPackage() override; // 049 - { return 0; }
292  BGSScene* GetCurrentScene() const override; // 04A
293  void SetCurrentScene(BGSScene* a_scene) override; // 04B
294  bool UpdateInDialogue(DialogueResponse* a_response, bool a_unused) override; // 04C
295  BGSDialogueBranch* GetExclusiveBranch() const override; // 04D - { return exclusiveBranch; }
296  void SetExclusiveBranch(BGSDialogueBranch* a_branch) override; // 04E - { exclusiveBranch = a_arg1; }
297  void PauseCurrentDialogue(void) override; // 04F
298  NiPoint3 GetStartingAngle() const override; // 052
299  NiPoint3 GetStartingLocation() const override; // 053
300  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
301  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
302  void DoTrap1(TrapData& a_data) override; // 058
303  void DoTrap2(TrapEntry* a_trap, TargetEntry* a_target) override; // 059
304  void AddObjectToContainer(TESBoundObject* a_object, ExtraDataList* a_extraList, std::int32_t a_count, TESObjectREFR* a_fromRefr) override; // 05A
305  NiPoint3 GetLookingAtLocation() const override; // 05B
307  MagicTarget* GetMagicTarget() override; // 05D - { return static_cast<MagicTarget*>(this); }
308  bool IsChild() const override; // 05E - { return false; }
310  bool DetachHavok(NiAVObject* a_obj3D) override; // 065
311  void InitHavok() override; // 066
312  void Unk_67(void) override; // 067 - related to vampire lord cape
313  void Unk_68(void) override; // 068 - verlet physics
314  void Unk_69(void) override; // 069 - verlet physics
315  NiAVObject* Load3D(bool a_arg1) override; // 06A
316  void Set3D(NiAVObject* a_object, bool a_queue3DTasks = true) override; // 06C
317  bool PopulateGraphProjectsToLoad(void) const override; // 072
318  NiPoint3 GetBoundMin() const override; // 073
319  NiPoint3 GetBoundMax() const override; // 074
320  void Unk_75(void) override; // 075 - "ActorValue GetWeaponSkill()"? really weird call, only works for right hand, and defaults to 1
321  void Unk_78(void) override; // 078
322  void ModifyAnimationUpdateData(BSAnimationUpdateData& a_data) override; // 079
323  bool ShouldSaveAnimationOnUnloading() const override; // 07A - { return false; }
324  bool ShouldSaveAnimationOnSaving() const override; // 07B
325  bool ShouldPerformRevert() const override; // 07C
326  void UpdateAnimation(float a_delta) override; // 07D
327 
328 #ifndef SKYRIMVR
329  void RemoveWeapon(BIPED_OBJECT equipIndex) override; // 082
330  void SetObjectReference(TESBoundObject* a_object) override; // 084
331  void MoveHavok(bool a_forceRec) override; // 085
332  void GetLinearVelocity(NiPoint3& a_velocity) const override; // 086
333  void SetActionComplete(bool a_set) override; // 087
334  void Disable() override; // 089
335  void ResetInventory(bool a_leveledOnly) override; // 08A
336  NiNode* GetFireNode() override; // 08B
337  void SetFireNode(NiNode* a_fireNode) override; // 08C
338  bool OnAddCellPerformQueueReference(TESObjectCELL& a_cell) const override; // 090
339  void DoMoveToHigh() override; // 091
340  void TryMoveToMiddleLow() override; // 092
341  bool TryChangeSkyCellActorsProcessLevel() override; // 093
342  void TryUpdateActorLastSeenTime() override; // 095
343  void Unk_96(void) override; // 096
344  void SetParentCell(TESObjectCELL* a_cell) override; // 098
345  bool IsDead(bool a_notEssential = true) const override; // 099
346  bool ProcessInWater(hkpCollidable* a_collidable, float a_waterHeight, float a_deltaTime) override; // 09C
347  bool ApplyCurrent(float a_velocityTime, const hkVector4& a_velocity) override; // 09D
348  TESAmmo* GetCurrentAmmo() const override; // 09E
349  void UnequipItem(std::uint64_t a_arg1, TESBoundObject* a_object) override; // 0A1
350 #else
351  void RemoveWeapon(BIPED_OBJECT equipIndex) override; // 083
352  void SetObjectReference(TESBoundObject* a_object) override; // 085
353  void MoveHavok(bool a_forceRec) override; // 086
354  void GetLinearVelocity(NiPoint3& a_velocity) const override; // 087
355  void SetActionComplete(bool a_set) override; // 088
356  void Disable() override; // 08A
357  void ResetInventory(bool a_leveledOnly) override; // 08B
358  NiNode* GetFireNode() override; // 08B
359  void SetFireNode(NiNode* a_fireNode) override; // 08C
360  bool OnAddCellPerformQueueReference(TESObjectCELL& a_cell) const override; // 091
361  void DoMoveToHigh() override; // 092
362  void TryMoveToMiddleLow() override; // 093
363  bool TryChangeSkyCellActorsProcessLevel() override; // 094
364  void TryUpdateActorLastSeenTime() override; // 095
365  void Unk_97(void); // 097
366  void SetParentCell(TESObjectCELL* a_cell) override; // 099
367  bool IsDead(bool a_notEssential = true) const override; // 09A
368  void ProcessInWater(hkpCollidable* a_collidable, float a_waterHeight, float a_deltaTime) override; // 09D
369  bool ApplyCurrent(float a_velocityTime, const hkVector4& a_velocity) override; // 09E
370  TESAmmo* GetCurrentAmmo() const override; // 09F
371  void UnequipItem(std::uint64_t a_arg1, TESBoundObject* a_object) override; // 0A2
372 #endif
373  // override (MagicTarget)
374  Actor* GetTargetStatsObject() override; // 002 - { return this; }
375  bool MagicTargetIsActor() const override; // 003 - { return true; }
377 
378  // add
379 #ifndef SKYRIMVR
380  virtual void Unk_A2(void); // 0A2
381  virtual void PlayPickUpSound(TESBoundObject* a_object, bool a_pickup, bool a_use); // 0A3
382  virtual float GetHeading(bool a_ignoreRaceSettings) const; // 0A4
383  virtual void SetAvoidanceDisabled(bool a_set); // 0A5 - { return; }
384  virtual void DrawWeaponMagicHands(bool a_draw); // 0A6
385  virtual void DetachCharController(); // 0A7
386  virtual void RemoveCharController(); // 0A8
387  virtual void SetPosition(const NiPoint3& a_pos, bool a_updateCharController); // 0A9
388  virtual void KillDying(); // 0AA
389  virtual void Resurrect(bool a_resetInventory, bool a_attach3D); // 0AB
390  virtual bool PutActorOnMountQuick(); // 0AC
391  virtual void Update(float a_delta); // 0AD
392  virtual void UpdateNoAI(float a_delta); // 0AE - { return UpdateActor3DPosition(); }
394  virtual void PotentiallyFixRagdollState(); // 0B0
395  virtual void UpdateNonRenderSafe(float a_delta); // 0B1
396  virtual void OnItemEquipped(bool a_playAnim); // 0B2
397  virtual void Unk_B3(void); // 0B3 - { return 1; }
398  virtual void Unk_B4(void); // 0B4
399  virtual void SetCrimeGoldValue(TESFaction* a_faction, bool a_violent, std::uint32_t a_amount); // 0B5
400  virtual void ModCrimeGoldValue(TESFaction* a_faction, bool a_violent, std::int32_t a_amount); // 0B6
401  virtual void RemoveCrimeGoldValue(TESFaction* a_faction, bool a_violent, std::int32_t a_amount); // 0B7
402  virtual std::uint32_t GetCrimeGoldValue(const TESFaction* a_faction) const; // 0B8
403  virtual void GoToPrison(TESFaction* a_faction, bool a_removeInventory, bool a_realJail); // 0B9 - { return; }
404  virtual void ServePrisonTime(); // 0BA - { return; }
405  virtual void PayFine(TESFaction* a_faction, bool a_goToJail, bool a_removeStolenItems); // 0BB - { return; }
406  virtual bool GetCannibal(); // 0BC - { return false; }
407  virtual void SetCannibal(bool a_set); // 0BD - { return; }
408  virtual bool GetVampireFeed(); // 0BE - { return false; }
409  virtual void SetVampireFeed(bool a_set); // 0BF - { return; }
410  virtual void InitiateVampireFeedPackage(Actor* a_target, TESObjectREFR* a_furniture); // 0C0 - { return; }
411  virtual void InitiateCannibalPackage(Actor* a_target); // 0C1 - { return; }
412  virtual void GetEyeVector(NiPoint3& a_origin, NiPoint3& a_direction, bool a_includeCameraOffset); // 0C2
413  virtual void SetRefraction(bool a_enable, float a_refraction); // 0C3
414  virtual void Unk_C4(void); // 0C4 - { return; }
415  virtual void Unk_C5(void); // 0C5 - { return 1; }
416  virtual void Unk_C6(void) = 0; // 0C6
417  virtual float GetAcrobatics() const; // 0C7 - { return 1.0; }
418  virtual bhkCharacterController* Move(float a_arg2, const NiPoint3& a_position); // 0C8
419  virtual void Unk_C9(void); // 0C9
420  virtual void OnArmorActorValueChanged(); // 0CA - { return; }
421  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
422  virtual void PickUpObject(TESObjectREFR* a_object, std::int32_t a_count, bool a_arg3 = false, bool a_playSound = true); // 0CC
423  virtual void AttachArrow(const BSTSmartPointer<BipedAnim>& a_biped); // 0CD
424  virtual void DetachArrow(const BSTSmartPointer<BipedAnim>& a_biped); // 0CE
425  virtual bool AddShout(TESShout* a_shout); // 0CF
426  virtual void UnlockWord(TESWordOfPower* a_power); // 0D0 - { return; }
427  virtual void Unk_D1(void); // 0D1
428  virtual std::uint32_t UseAmmo(std::uint32_t a_shotCount); // 0D2
429  virtual bool CalculateCachedOwnerIsInCombatantFaction() const; // 0D3
430  virtual CombatGroup* GetCombatGroup() const; // 0D4
431  virtual void SetCombatGroup(CombatGroup* a_group); // 0D5
432  virtual bool CheckValidTarget(TESObjectREFR& a_target); // 0D6
433  virtual bool InitiateTresPassPackage(TrespassPackage* a_trespassPackage); // 0D7 - { return 0; }
434  virtual void InitiateDialogue(Actor* a_target, PackageLocation* a_loc1, PackageLocation* a_loc2); // 0D8
435  virtual void SetSize(float a_size); // 0D9
436  virtual void EndDialogue(); // 0DA
437  virtual Actor* SetUpTalkingActivatorActor(Actor* a_target, Actor*& a_activator); // 0DB
438  virtual void InitiateSpectator(Actor* a_target); // 0DC - { return; }
439  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
440  virtual void InitiateGetUpPackage(); // 0DE
441  virtual void PutCreatedPackage(TESPackage* a_package, bool a_tempPackage, bool a_createdPackage); // 0DF
442  virtual void UpdateAlpha(); // 0E0
443  virtual void SetAlpha(float a_alpha = 1.0); // 0E1
444  virtual float GetAlpha(); // 0E2
445  virtual bool IsInCombat() const; // 0E3
446  virtual void UpdateCombat(); // 0E4
447  virtual void StopCombat(); // 0E5
448  virtual float CalcArmorRating(); // 0E6 - { return 0.0; }
449  virtual float GetArmorBaseFactorSum(); // 0E7 - { return 0.0; }
450  virtual float CalcUnarmedDamage(); // 0E8 - { return 0; }
451  virtual void Unk_E9(void); // 0E9 - { return 0; }
452  virtual void Unk_EA(void); // 0EA - { return 0; }
453  virtual float GetRunSpeed(); // 0EB
454  virtual float GetJogSpeed(); // 0EC
455  virtual float GetFastWalkSpeed(); // 0ED
456  virtual float GetWalkSpeed(); // 0EE
457  virtual void WeaponSwingCallBack(); // 0EF
458  virtual void SetActorStartingPosition(); // 0F0
459  virtual bool MoveToHigh(); // 0F1
460  virtual bool MovetoLow(); // 0F2
461  virtual bool MovetoMiddleLow(); // 0F3
462  virtual bool MoveToMiddleHigh(); // 0F4
463  virtual bool HasBeenAttacked() const; // 0F5
464  virtual void SetBeenAttacked(bool a_set); // 0F6
465  virtual void UseSkill(ActorValue a_av, float a_points, TESForm* a_arg3); // 0F7 - { return; }
466  virtual bool IsAtPoint(const NiPoint3& a_point, float a_radius, bool a_expandRadius, bool a_alwaysTestHeight); // 0F8
467  virtual bool IsInFaction(const TESFaction* faction) const; // 0F9
468  virtual void ForEachPerk(PerkEntryVisitor& a_visitor) const; // 0FA
469  virtual void AddPerk(BGSPerk* a_perk, std::uint32_t a_rank = 0); // 0FB - { return; }
470  virtual void RemovePerk(BGSPerk* a_perk); // 0FC - { return; }
471  virtual void ApplyTemporaryPerk(BGSPerk* a_perk); // 0FD - { return; }
472  virtual void RemoveTemporaryPerk(BGSPerk* a_perk); // 0FE - { return; }
473  virtual bool HasPerkEntries(EntryPoint a_entryType) const; // 0FF
474  virtual void ForEachPerkEntry(EntryPoint a_entryType, PerkEntryVisitor& a_visitor) const; // 100
475  virtual void ApplyPerksFromBase(); // 101
476  virtual void StartPowerAttackCoolDown(); // 102 - { return; }
477  virtual bool IsPowerAttackCoolingDown() const; // 103 - { return false; }
478  virtual void HandleHealthDamage(Actor* a_attacker, float a_damage); // 104
479  virtual void Unk_105(void); // 105
480  virtual void Unk_106(void); // 106 - { return; }
481  virtual bool QSpeakingDone() const; // 107 - { return ~(unk0E0 >> 5) & 1; }
482  virtual void SetSpeakingDone(bool a_set); // 108
483  virtual void CreateMovementController(); // 109
484  virtual EmotionType GetEmotionType(); // 10A - { return unk16C; }
485  virtual void SetEmotionType(EmotionType a_emotionType); // 10B - { unk16C = a_arg1; }
486  virtual std::uint32_t GetEmotionValue(); // 10C - { return unk170; }
487  virtual void SetEmotionValue(std::uint32_t a_emotionValue); // 10D - { unk170 = a_arg1; }
488  virtual void KillImpl(Actor* a_attacker, float a_damage, bool a_sendEvent, bool a_ragdollInstant); // 10E
489  virtual bool DrinkPotion(AlchemyItem* a_potion, ExtraDataList* a_extralist); // 10F
490  virtual bool CheckCast(MagicItem* a_spell, bool a_dualCast, MagicSystem::CannotCastReason* a_reason); // 110
491  virtual void CheckTempModifiers(); // 111 - { return; }
492  virtual std::int32_t GetCurrentShoutLevel(); // 112 - return -1 on error
493  virtual void SetLastRiddenMount(ActorHandle a_mount); // 113 - { return; }
494  virtual ActorHandle QLastRiddenMount() const; // 114 - { return {}; }
495  virtual bool CalculateCachedOwnerIsUndead() const; // 115
496  virtual bool CalculateCachedOwnerIsNPC() const; // 116
497  virtual void Unk_117(void); // 117 - { return; }
498  virtual void InitValues(); // 118
499  virtual const BSFixedString& GetResponseString() const; // 119 - { return "ActorResponse"; }
500  virtual void ModifyMovementData(float a_delta, NiPoint3& a_arg3, NiPoint3& a_arg4); // 11A
501  virtual void UpdateCombatControllerSettings(); // 11B
502  virtual void UpdateFadeSettings(bhkCharacterController* a_controller); // 11C
503  virtual bool ComputeMotionFeedbackSpeedAndDirection(const ActorMotionFeedbackData& a_data, float a_delta, ActorMotionFeedbackOutput& a_output); // 11D
504  virtual bool UpdateFeedbackGraphSpeedAndDirection(const ActorMotionFeedbackOutput& a_output); // 11E
505  virtual void UpdateActor3DPosition(); // 11F
506  virtual void PrecacheData(); // 120
507  virtual void WornArmorChanged(void); // 121
508  virtual void ProcessTracking(float a_delta, NiAVObject* a_obj3D); // 122
509  virtual void Unk_123(void); // 123
510  virtual void CreateActorMover(); // 124
511  virtual void DestroyActorMover(); // 125
512  virtual bool ShouldRespondToActorCollision(const MovementMessageActorCollision& a_msg, const ActorHandlePtr& a_target); // 126
513  virtual float CheckClampDamageModifier(ActorValue a_av, float a_delta); // 127
514 #else
515  virtual void Unk_A3(void); // 0A3
516  virtual void PlayPickUpSound(TESBoundObject* a_object, bool a_pickup, bool a_use); // 0A4
517  virtual float GetHeading(bool a_ignoreRaceSettings) const; // 0A5
518  virtual void SetAvoidanceDisabled(bool a_set); // 0A6 - { return; }
519  virtual void Unk_A7(void); // 0A7
520  virtual void DrawWeaponMagicHands(bool a_draw); // 0A8
521  virtual void Unk_A9(void); // 0A9
522  virtual void Unk_AA(void); // 0AA
523  virtual void SetPosition(const NiPoint3& a_pos, bool a_updateCharController); // 0AB
524  virtual void KillDying(); // 0AC
525  virtual void Resurrect(bool a_resetInventory, bool a_attach3D); // 0AD
526  virtual bool PutActorOnMountQuick(); // 0AE
527  virtual void Update(float a_delta); // 0AF
528  virtual void UpdateNoAI(float a_delta); // 0B0 - { return UpdateActor3DPosition(); }
529  virtual void UpdateCharacterControllerSimulationSettings(bhkCharacterController& a_controller); // 0B1
530  virtual void PotentiallyFixRagdollState(); // 0B2
531  virtual void UpdateNonRenderSafe(float a_delta); // 0B3
532  virtual void OnItemEquipped(bool a_playAnim); // 0B4
533  virtual void Unk_B5(void); // 0B5 - { return 1; }
534  virtual void Unk_B6(void); // 0B6
535  virtual void SetCrimeGoldValue(TESFaction* a_faction, bool a_violent, std::uint32_t a_amount); // 0B7
536  virtual void ModCrimeGoldValue(TESFaction* a_faction, bool a_violent, std::int32_t a_amount); // 0B8
537  virtual void RemoveCrimeGoldValue(TESFaction* a_faction, std::int32_t a_amount, bool a_violent); // 0B9
538  virtual std::uint32_t GetCrimeGoldValue(const TESFaction* a_faction) const; // 0BA
539  virtual void GoToPrison(TESFaction* a_faction, bool a_removeInventory, bool a_realJail); // 0BB - { return; }
540  virtual void ServePrisonTime(); // 0BC - { return; }
541  virtual void PayFine(TESFaction* a_faction, bool a_goToJail, bool a_removeStolenItems); // 0BD - { return; }
542  virtual bool GetCannibal(); // 0BE - { return false; }
543  virtual void SetCannibal(bool a_set); // 0BF - { return; }
544  virtual bool GetVampireFeed(); // 0C0 - { return false; }
545  virtual void SetVampireFeed(bool a_set); // 0C1 - { return; }
546  virtual void InitiateVampireFeedPackage(Actor* a_target, TESObjectREFR* a_furniture); // 0C2 - { return; }
547  virtual void InitiateCannibalPackage(Actor* a_target); // 0C3 - { return; }
548  virtual void GetEyeVector(NiPoint3& a_origin, NiPoint3& a_direction, bool a_includeCameraOffset); // 0C4
549  virtual void SetRefraction(bool a_enable, float a_refraction); // 0C5
550  virtual void Unk_C6(void); // 0C6 - { return; }
551  virtual void Unk_C7(void); // 0C7 - { return 1; }
552  virtual void Unk_C8(void) = 0; // 0C8
553  virtual float GetAcrobatics() const; // 0C7 - { return 1.0; }
554  virtual bhkCharacterController* Move(float a_arg2, const NiPoint3& a_position); // 0CA
555  virtual void Unk_CB(void); // 0CB
556  virtual void OnArmorActorValueChanged(); // 0CC - { return; }
557  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); // 0CD
558  virtual void PickUpObject(TESObjectREFR* a_object, std::int32_t a_count, bool a_arg3 = false, bool a_playSound = true); // 0CE
559  virtual void AttachArrow(const BSTSmartPointer<BipedAnim>& a_biped); // 0CF
560  virtual void DetachArrow(const BSTSmartPointer<BipedAnim>& a_biped); // 0D0
561  virtual bool AddShout(TESShout* a_shout); // 0D1
562  virtual void Unk_D2(void); // 0D2 - { return; }
563  virtual void Unk_D3(void); // 0D3
564  virtual std::uint32_t UseAmmo(std::uint32_t a_shotCount); // 0D4
565  virtual bool CalculateCachedOwnerIsInCombatantFaction() const; // 0D5
566  virtual CombatGroup* GetCombatGroup() const; // 0D6
567  virtual void SetCombatGroup(CombatGroup* a_group); // 0D7
568  virtual bool CheckValidTarget(TESObjectREFR& a_target); // 0D8
569  virtual bool InitiateTresPassPackage(TrespassPackage* a_trespassPackage); // 0D9 - { return 0; }
570  virtual void InitiateDialogue(Actor* a_target, PackageLocation* a_loc1, PackageLocation* a_loc2); // 0DA
571  virtual void SetSize(float a_size); // 0DB
572  virtual void EndDialogue(); // 0DC
573  virtual Actor* SetUpTalkingActivatorActor(Actor* a_target, Actor*& a_activator); // 0DD
574  virtual void Unk_DE(void); // 0DE - { return; }
575  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); // 0DF
576  virtual void InitiateGetUpPackage(); // 0E0
577  virtual void PutCreatedPackage(TESPackage* a_package, bool a_tempPackage, bool a_createdPackage, bool a_allowFromFurniture); // 0E1
578  virtual void UpdateAlpha(); // 0E2
579  virtual void SetAlpha(float a_alpha = 1.0); // 0E3
580  virtual float GetAlpha(); // 0E4
581  virtual bool IsInCombat() const; // 0E5
582  virtual void UpdateCombat(); // 0E6
583  virtual void StopCombat(); // 0E7
584  virtual float CalcArmorRating(); // 0E8 - { return 0.0; }
585  virtual float GetArmorBaseFactorSum(); // 0E9 - { return 0.0; }
586  virtual float CalcUnarmedDamage(); // 0EA - { return 0; }
587  virtual void Unk_EB(void); // 0EB - { return 0; }
588  virtual void Unk_EC(void); // 0EC - { return 0; }
589  virtual float GetRunSpeed(); // 0ED
590  virtual float GetJogSpeed(); // 0EE
591  virtual float GetFastWalkSpeed(); // 0EF
592  virtual float GetWalkSpeed(); // 0F0
593  virtual void WeaponSwingCallBack(); // 0F1
594  virtual void SetActorStartingPosition(); // 0F2
595  virtual bool MoveToHigh(); // 0F3
596  virtual bool MovetoLow(); // 0F4
597  virtual bool MovetoMiddleLow(); // 0F5
598  virtual bool MoveToMiddleHigh(); // 0F6
599  virtual bool HasBeenAttacked() const; // 0F7
600  virtual void SetBeenAttacked(bool a_set); // 0F8
601  virtual void UseSkill(ActorValue a_av, float a_points, TESForm* a_arg3); // 0F9 - { return; }
602  virtual bool IsAtPoint(const NiPoint3& a_point, float a_radius, bool a_expandRadius, bool a_alwaysTestHeight); // 0FA
603  virtual bool IsInFaction(const TESFaction* faction) const; // 0FB
604  virtual void ForEachPerk(PerkEntryVisitor& a_visitor) const; // 0FC
605  virtual void AddPerk(BGSPerk* a_perk, std::uint32_t a_rank = 0); // 0FD - { return; }
606  virtual void RemovePerk(BGSPerk* a_perk); // 0FE - { return; }
607  virtual void Unk_FF(void); // 0FF - { return; }
608  virtual void Unk_100(void); // 100 - { return; }
609  virtual bool HasPerkEntries(EntryPoint a_entryType) const; // 101
610  virtual void ForEachPerkEntry(EntryPoint a_entryType, PerkEntryVisitor& a_visitor) const; // 102
611  virtual void ApplyPerksFromBase(); // 103
612  virtual void StartPowerAttackCoolDown(); // 104 - { return; }
613  virtual bool IsPowerAttackCoolingDown() const; // 105 - { return false; }
614  virtual void HandleHealthDamage(Actor* a_attacker, float a_damage); // 106 - { return; }
615  virtual void Unk_107(void); // 107 - { return ~(unk0E0 >> 5) & 1; }
616  virtual void Unk_108(void); // 108
617  virtual bool QSpeakingDone() const; // 109
618  virtual void SetSpeakingDone(bool a_set); // 10A - { return unk16C; }
619  virtual void CreateMovementController(); // 10B - { unk16C = a_arg1; }
620  virtual void Unk_10C(void); // 10C - { return unk170; }
621  virtual void Unk_10D(void); // 10D - { unk170 = a_arg1; }
622  virtual void Unk_10E(void); // 10E
623  virtual void Unk_10F(void); // 10F
624  virtual void KillImpl(Actor* a_attacker, float a_damage, bool a_sendEvent, bool a_ragdollInstant); // 110
625  virtual bool DrinkPotion(AlchemyItem* a_potion, ExtraDataList* a_extralist); // 111 - { return; }
626  virtual bool CheckCast(MagicItem* a_spell, bool a_dualCast, MagicSystem::CannotCastReason* a_reason); // 112 - return -1 on error
627  virtual void CheckTempModifiers(); // 113 - { return; }
628  virtual std::int32_t GetCurrentShoutLevel(); // 114 - { return {}; }
629  virtual void SetLastRiddenMount(ActorHandle a_mount); // 115
630  virtual ActorHandle QLastRiddenMount() const; // 116
631  virtual bool CalculateCachedOwnerIsUndead() const; // 117 - { return; }
632  virtual bool CalculateCachedOwnerIsNPC() const; // 118
633  virtual void Unk_119(void); // 119 - { return "ActorResponse"; }
634  virtual void InitValues(); // 11A
635  virtual const BSFixedString& GetResponseString() const; // 11B
636  virtual void ModifyMovementData(float a_delta, NiPoint3& a_arg3, NiPoint3& a_arg4); // 11C
637  virtual void UpdateCombatControllerSettings(); // 11D
638  virtual void UpdateFadeSettings(bhkCharacterController* a_controller); // 11E
639  virtual bool ComputeMotionFeedbackSpeedAndDirection(const ActorMotionFeedbackData& a_data, float a_delta, ActorMotionFeedbackOutput& a_output); // 11F
640  virtual bool UpdateFeedbackGraphSpeedAndDirection(const ActorMotionFeedbackOutput& a_output); // 120
641  virtual void UpdateActor3DPosition(); // 121
642  virtual void PrecacheData(); // 122
643  virtual void WornArmorChanged(void); // 123
644  virtual void ProcessTracking(float a_delta, NiAVObject* a_obj3D); // 124
645  virtual void Unk_125(void); // 125
646  virtual void CreateActorMover(); // 126
647  virtual void DestroyActorMover(); // 127
648  virtual bool ShouldRespondToActorCollision(const MovementMessageActorCollision& a_msg, const ActorHandlePtr& a_target); // 128
649  virtual float CheckClampDamageModifier(ActorValue a_av, float a_delta); // 129
650 #endif
652  static bool LookupByHandle(RefHandle a_refHandle, NiPointer<Actor>& a_refrOut);
653 
655  void AddCastPower(SpellItem* a_power);
657  bool AddSpell(SpellItem* a_spell);
658  void AddToFaction(TESFaction* a_faction, std::int8_t a_rank);
659  void AddWornOutfit(BGSOutfit* a_outfit, bool a_forceUpdate);
660  void AllowBleedoutDialogue(bool a_canTalk);
661  void AllowPCDialogue(bool a_talk);
662  void CastPermanentMagic(bool a_wornItemEnchantments, bool a_baseSpells, bool a_raceSpells, bool a_everyActorAbility);
663  bool CanAttackActor(Actor* a_actor);
664  bool CanFlyHere() const;
665  bool CanOfferServices() const;
666  bool CanPickpocket() const;
667  bool CanTalkToPlayer() const;
668  bool CanUseIdle(TESIdleForm* a_idle) const;
673  bool Decapitate();
674  void DeselectSpell(SpellItem* a_spell);
677  void DoReset3D(bool a_updateWeight);
678  void EnableAI(bool a_enable);
679  void EndInterruptPackage(bool a_skipDialogue);
680  void EvaluatePackage(bool a_immediate = false, bool a_resetAI = false);
682  const TESNPC* GetActorBase() const;
683  float GetActorValueModifier(ACTOR_VALUE_MODIFIER a_modifier, ActorValue a_value) const;
684  float GetAimAngle() const;
685  float GetAimHeading() const;
689  std::uint32_t GetCollisionFilterInfo(std::uint32_t& a_outCollisionFilterInfo);
692  const TESFaction* GetCrimeFaction() const;
696  const TESShout* GetCurrentShout() const;
697  InventoryEntryData* GetEquippedEntryData(bool a_leftHand) const;
698  TESForm* GetEquippedObject(bool a_leftHand) const;
701  std::int32_t GetFactionRank(TESFaction* a_faction, bool a_isPlayer);
703  std::int32_t GetGoldAmount(bool a_noInit = false);
706  float GetHeight();
708  Actor* GetKiller() const;
709  std::uint16_t GetLevel() const;
711  bool GetMount(NiPointer<Actor>& a_outMount);
712  bool GetMountedBy(NiPointer<Actor>& a_outRider);
715  bool GetPlayerControls() const;
716  TESRace* GetRace() const;
717  float GetRegenDelay(ActorValue a_actorValue) const;
718  bool GetRider(NiPointer<Actor>& a_outRider);
719  [[nodiscard]] TESObjectARMO* GetSkin() const;
720  [[nodiscard]] TESObjectARMO* GetSkin(BGSBipedObjectForm::BipedObjectSlot a_slot, bool a_noInit = false);
721  [[nodiscard]] SOUL_LEVEL GetSoulSize() const;
724  float GetTrackedDamage() const;
726  const TESFaction* GetVendorFaction() const;
728 #ifndef SKYRIMVR
729  float GetWarmthRating() const;
730 #endif
731  [[nodiscard]] TESObjectARMO* GetWornArmor(BGSBipedObjectForm::BipedObjectSlot a_slot, bool a_noInit = false);
732  [[nodiscard]] TESObjectARMO* GetWornArmor(FormID a_formID, bool a_noInit = false);
733  bool HasKeyword(const BGSKeyword* a_keyword) const;
734  bool HasKeywordString(std::string_view a_formEditorID);
735  bool HasLineOfSight(TESObjectREFR* a_ref, bool& a_arg2);
736  bool HasOutfitItems(BGSOutfit* a_outfit);
737  bool HasPerk(BGSPerk* a_perk) const;
738  bool HasShout(TESShout* a_shout) const;
739  bool HasSpell(SpellItem* a_spell) const;
741  void InterruptCast(bool a_restoreMagicka) const;
742  bool IsAttacking() const;
743  bool IsAIEnabled() const;
744  bool IsAlarmed() const;
745  bool IsAMount() const;
747  bool IsAnimationDriven() const;
748  bool IsBeingRidden() const;
749  bool IsBlocking() const;
750  bool IsCasting(MagicItem* a_spell) const;
751  bool IsCombatTarget(Actor* a_other) const;
752  bool IsCommandedActor() const;
753  bool IsCurrentShout(SpellItem* a_power);
754  bool IsDoingFavor() const;
755  bool IsDualCasting() const;
756  bool IsEssential() const;
757  bool IsFactionInCrimeGroup(const TESFaction* a_faction) const;
758  bool IsGhost() const;
759  bool IsGuard() const;
760  bool IsHostileToActor(Actor* a_actor);
761  bool IsInCastPowerList(SpellItem* a_power);
762  [[nodiscard]] constexpr bool IsInKillMove() const noexcept { return boolFlags.all(BOOL_FLAGS::kIsInKillMove); }
763  bool IsInMidair() const;
764  bool IsInRagdollState() const;
765  bool IsLeveled() const;
766  bool IsLimbGone(std::uint32_t a_limb);
767  bool IsMoving() const;
768  bool IsOnMount() const;
769  bool IsOverEncumbered() const;
770  bool IsPlayerTeammate() const;
771  bool IsPowerAttacking() const;
772  bool IsProtected() const;
773  bool IsRunning() const;
774  bool IsSneaking() const;
775  [[nodiscard]] bool IsSummoned() const noexcept;
776  bool IsTrespassing() const;
778  void PlayASound(BSSoundHandle& a_result, FormID a_formID, bool a_unk03, std::uint32_t a_flags);
779  void ProcessVATSAttack(MagicCaster* a_caster, bool a_hasTargetAnim, TESObjectREFR* a_target, bool a_leftHand);
781  void RemoveCastScroll(SpellItem* a_spell, MagicSystem::CastingSource a_source);
783  void RemoveFromFaction(TESFaction* a_faction);
784  void RemoveOutfitItems(BGSOutfit* a_outfit);
785  bool RemoveSpell(SpellItem* a_spell);
786  std::int32_t RequestDetectionLevel(Actor* a_target, DETECTION_PRIORITY a_priority = DETECTION_PRIORITY::kNormal);
787  bool SetDefaultOutfit(BGSOutfit* a_outfit, bool a_update3D);
788  void SetHeading(float a_angle); // SetRotationZ
789  void SetLifeState(ACTOR_LIFE_STATE a_lifeState);
790  void SetLooking(float a_angle); // SetRotationX
791  void SetPlayerControls(bool a_enable);
792  bool SetSleepOutfit(BGSOutfit* a_outfit, bool a_update3D);
793  void StealAlarm(TESObjectREFR* a_ref, TESForm* a_object, std::int32_t a_num, std::int32_t a_total, TESForm* a_owner, bool a_allowWarning);
795  void StopInteractingQuick(bool a_unk02);
796  void StopMoving(float a_delta);
797  void SwitchRace(TESRace* a_race, bool a_player);
798  void TrespassAlarm(TESObjectREFR* a_ref, TESForm* a_ownership, std::int32_t a_crime);
799  void UpdateArmorAbility(TESForm* a_armor, ExtraDataList* a_extraData);
800  void UpdateAwakeSound(NiAVObject* a_obj3D);
803  void UpdateRegenDelay(ActorValue a_actorValue, float a_regenDelay);
805  void UpdateWeaponAbility(TESForm* a_weapon, ExtraDataList* a_extraData, bool a_leftHand);
806  void VisitArmorAddon(TESObjectARMO* a_armor, TESObjectARMA* a_arma, std::function<void(bool a_firstPerson, NiAVObject& a_obj)> a_visitor);
807  bool VisitFactions(std::function<bool(TESFaction* a_faction, std::int8_t a_rank)> a_visitor);
809  std::uint8_t WhoIsCasting();
810  bool WouldBeStealing(const TESObjectREFR* a_target) const;
811 
812  // members
813  stl::enumeration<BOOL_BITS, std::uint32_t> boolBits; // 0E0
814  float updateTargetTimer; // 0E4
816  std::uint32_t pad0EC; // 0EC
821  float checkMyDeadBodyTimer; // 104
822  float voiceTimer; // 108
823  float underWaterTimer; // 10C
824  std::int32_t thiefCrimeStamp; // 110
825  std::int32_t actionValue; // 114
826  float timerOnAction; // 118
827  std::uint32_t unk11C; // 11C
829  float editorLocRot; // 12C
839  std::uint32_t emotionValue; // 170
840  std::uint32_t unk174; // 174
841  std::uint32_t unk178; // 178
842  std::uint32_t intimidateBribeDayStamp; // 17C
843  std::uint64_t unk180; // 180
848  std::uint32_t unk1E8; // 1E8
849  std::uint32_t pad1EC; // 1EC
850  TESRace* race; // 1F0
851  float equippedWeight; // 1F8
852  stl::enumeration<BOOL_FLAGS, std::uint32_t> boolFlags; // 1FC
859  float lastUpdate; // 258
860  std::uint32_t lastSeenTime; // 25C
862  float armorRating; // 268
863  float armorBaseFactorSum; // 26C
864  std::int8_t soundCallBackSet; // 271
865  std::uint8_t unk271; // 270
866  std::uint8_t unk272; // 272
867  std::uint8_t unk273; // 273
868  std::uint32_t unk274; // 274
869  std::uint64_t unk278; // 278
870  std::uint64_t unk280; // 280
871  REX::W32::CRITICAL_SECTION unk288; // 288 - havok related
872 
873  private:
874  void CalculateCurrentVendorFaction() const;
875  float CalcEquippedWeight();
876  TESFaction* GetCrimeFactionImpl() const;
877  KEEP_FOR_RE()
878  };
879 #ifndef SKYRIM_SUPPORT_AE
880  static_assert(sizeof(Actor) == 0x2B0);
881 #else
882  static_assert(sizeof(Actor) == 0x2B8);
883 #endif
884 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: AIProcess.h:113
Definition: ActorMagicCaster.h:22
Definition: ActorMover.h:8
Definition: ActorState.h:93
Definition: ActorValueOwner.h:8
Definition: Actor.h:261
virtual BSContainer::ForEachResult Visit(SpellItem *a_spell)=0
static constexpr auto RTTI
Definition: Actor.h:263
static constexpr auto VTABLE
Definition: Actor.h:264
virtual ~ForEachSpellVisitor()=default
Definition: Actor.h:133
bool IsCommandedActor() const
void StopInteractingQuick(bool a_unk02)
NiPoint3 editorLocCoord
Definition: Actor.h:828
virtual void InitiateCannibalPackage(Actor *a_target)
void UpdateRegenDelay(ActorValue a_actorValue, float a_regenDelay)
virtual void PlayPickUpSound(TESBoundObject *a_object, bool a_pickup, bool a_use)
virtual bool GetVampireFeed()
virtual float GetRunSpeed()
void KillImmediate()
bool IsMoving() const
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)
bool GetRider(NiPointer< Actor > &a_outRider)
float GetActorValueModifier(ACTOR_VALUE_MODIFIER a_modifier, ActorValue a_value) const
MagicItem * selectedSpells[SlotTypes::kTotal]
Definition: Actor.h:846
virtual void ProcessTracking(float a_delta, NiAVObject *a_obj3D)
std::uint8_t unk272
Definition: Actor.h:866
virtual void UpdateNoAI(float a_delta)
EmotionType emotionType
Definition: Actor.h:838
TESFaction * GetVendorFaction()
NiPoint3 GetBoundMin() const override
BGSAnimationSequencer * GetSequencer(void) const override
bool IsChild() const override
Modifiers staminaModifiers
Definition: Actor.h:857
void SaveGame(BGSSaveFormBuffer *a_buf) override
void Unk_69(void) override
MagicTarget * GetMagicTarget() override
virtual void RemoveCrimeGoldValue(TESFaction *a_faction, bool a_violent, std::int32_t a_amount)
std::int32_t RequestDetectionLevel(Actor *a_target, DETECTION_PRIORITY a_priority=DETECTION_PRIORITY::kNormal)
bool ProcessInWater(hkpCollidable *a_collidable, float a_waterHeight, float a_deltaTime) override
BOOL_FLAGS
Definition: Actor.h:193
bool ShouldPerformRevert() const override
void AddToFaction(TESFaction *a_faction, std::int8_t a_rank)
void UpdateSoundCallBack(bool a_endSceneAction) override
virtual void Unk_106(void)
virtual ActorHandle QLastRiddenMount() const
std::uint8_t WhoIsCasting()
bool HasShout(TESShout *a_shout) const
bool IsDualCasting() const
static NiPointer< Actor > LookupByHandle(RefHandle a_refHandle)
bool IsEssential() const
virtual float CalcUnarmedDamage()
NiPoint3 GetLookingAtLocation() const override
float GetTrackedDamage() const
std::uint32_t unk1E8
Definition: Actor.h:848
virtual bool IsInCombat() const
AITimeStamp calculateVendorFactionTimer
Definition: Actor.h:837
virtual void WeaponSwingCallBack()
bool GetMountedBy(NiPointer< Actor > &a_outRider)
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)
float GetRegenDelay(ActorValue a_actorValue) const
void MoveHavok(bool a_forceRec) override
std::int32_t thiefCrimeStamp
Definition: Actor.h:824
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
void DispelAlteredStates(RE::EffectArchetype a_exception)
void SetFireNode(NiNode *a_fireNode) override
bool IsCurrentShout(SpellItem *a_power)
virtual void InitiateSpectator(Actor *a_target)
TESObjectARMO * GetWornArmor(BGSBipedObjectForm::BipedObjectSlot a_slot, bool a_noInit=false)
virtual void SetVampireFeed(bool a_set)
virtual void RemoveCharController()
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:855
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
FIGHT_REACTION GetFactionReaction(Actor *a_other) const
MagicCaster * GetMagicCaster(MagicSystem::CastingSource a_source) override
void RemoveExtraArrows3D()
std::int32_t actionValue
Definition: Actor.h:825
virtual void SetCannibal(bool a_set)
NiPoint3 GetStartingAngle() const override
stl::enumeration< ACTOR_CRITICAL_STAGE, std::uint32_t > criticalStage
Definition: Actor.h:815
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)
bool HasLineOfSight(TESObjectREFR *a_ref, bool &a_arg2)
std::int32_t GetGoldAmount(bool a_noInit=false)
bool AddAnimationGraphEventSink(BSTEventSink< BSAnimationGraphEvent > *a_sink) const
const TESFaction * GetCrimeFaction() const
bool ShouldSaveAnimationOnSaving() const override
virtual EmotionType GetEmotionType()
void InitHavok() override
void InitiateDoNothingPackage()
std::uint32_t emotionValue
Definition: Actor.h:839
NiAVObject * GetHeadPartObject(BGSHeadPart::HeadPartType a_type)
virtual bool CheckCast(MagicItem *a_spell, bool a_dualCast, MagicSystem::CannotCastReason *a_reason)
virtual std::uint32_t GetEmotionValue()
virtual void GetEyeVector(NiPoint3 &a_origin, NiPoint3 &a_direction, bool a_includeCameraOffset)
virtual void RemoveTemporaryPerk(BGSPerk *a_perk)
ActorHandle currentCombatTarget
Definition: Actor.h:819
virtual void StartPowerAttackCoolDown()
void SetDelete(bool a_set) override
BGSDialogueBranch * GetExclusiveBranch() const override
void RemoveWeapon(BIPED_OBJECT equipIndex) override
static constexpr auto RTTI
Definition: Actor.h:138
NiNode * GetFireNode() override
std::uint8_t unk273
Definition: Actor.h:867
bool IsBeingRidden() const
virtual void InitiateGetUpPackage()
void DoMoveToHigh() override
float GetAimHeading() const
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:860
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 bool InitiateTresPassPackage(TrespassPackage *a_trespassPackage)
virtual void Unk_117(void)
TESAmmo * GetCurrentAmmo() const override
std::uint32_t unk178
Definition: Actor.h:841
virtual void Update(float a_delta)
virtual CombatGroup * GetCombatGroup() const
virtual void Unk_123(void)
void SetHeading(float a_angle)
void Unk_67(void) override
std::uint32_t pad1EC
Definition: Actor.h:849
bool UpdateInDialogue(DialogueResponse *a_response, bool a_unused) override
virtual void UpdateCombatControllerSettings()
float armorBaseFactorSum
Definition: Actor.h:863
void SetLooking(float a_angle)
ActorHandle CreateRefHandle()
bool IsRunning() const
BSTSmartPointer< BipedAnim > biped
Definition: Actor.h:861
virtual void UnlockWord(TESWordOfPower *a_power)
ActorHandle myKiller
Definition: Actor.h:820
virtual float GetWalkSpeed()
Modifiers voicePointsModifiers
Definition: Actor.h:858
ObjectRefHandle dialogueItemTarget
Definition: Actor.h:818
TESRace * race
Definition: Actor.h:850
void SetCurrentScene(BGSScene *a_scene) override
bool GetMount(NiPointer< Actor > &a_outMount)
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)
SOUL_LEVEL GetSoulSize() const
bool IsDoingFavor() const
virtual void Unk_B3(void)
static constexpr auto VTABLE
Definition: Actor.h:139
bool IsProtected() const
ActorMagicCaster * magicCasters[SlotTypes::kTotal]
Definition: Actor.h:845
bool CanFlyHere() const
TESObjectARMO * GetWornArmor(FormID a_formID, bool a_noInit=false)
bool Decapitate()
void TryUpdateActorLastSeenTime() override
bool CanUseIdle(TESIdleForm *a_idle) const
bool IsAttacking() const
float lastUpdate
Definition: Actor.h:859
virtual bool MovetoLow()
bool SetSleepOutfit(BGSOutfit *a_outfit, bool a_update3D)
void SetExclusiveBranch(BGSDialogueBranch *a_branch) override
TESObjectARMO * GetSkin() const
NiPoint3 GetBoundMax() const override
void UpdateWeaponAbility(TESForm *a_weapon, ExtraDataList *a_extraData, bool a_leftHand)
virtual void SetSpeakingDone(bool a_set)
bool GetPlayerControls() const
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
BOOL_BITS
Definition: Actor.h:156
BGSDialogueBranch * exclusiveBranch
Definition: Actor.h:854
void UpdateSkinColor()
virtual void Unk_EA(void)
virtual void CheckTempModifiers()
float GetWarmthRating() const
TESObjectARMO * GetSkin(BGSBipedObjectForm::BipedObjectSlot a_slot, bool a_noInit=false)
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)
bool IsOverEncumbered() const
virtual bool QSpeakingDone() const
double GetMoveDirectionRelativeToFacing()
void Unk_68(void) override
void Unk_78(void) override
bool IsOnMount() const
bool IsAngryWithPlayer() const
Definition: Actor.h:746
TESShout * GetCurrentShout()
void TrespassAlarm(TESObjectREFR *a_ref, TESForm *a_ownership, std::int32_t a_crime)
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
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:856
bool IsGuard() const
virtual void UpdateCharacterControllerSimulationSettings(bhkCharacterController &a_controller)
std::uint64_t unk278
Definition: Actor.h:869
virtual void SetLastRiddenMount(ActorHandle a_mount)
static constexpr auto FORMTYPE
Definition: Actor.h:140
void Update3DPosition(bool a_warp) override
virtual void ModifyMovementData(float a_delta, NiPoint3 &a_arg3, NiPoint3 &a_arg4)
bool AddSpell(SpellItem *a_spell)
virtual void WornArmorChanged(void)
void RemoveOutfitItems(BGSOutfit *a_outfit)
ActorValueStorage avStorage
Definition: Actor.h:853
bool IsDead(bool a_notEssential=true) const override
void ProcessVATSAttack(MagicCaster *a_caster, bool a_hasTargetAnim, TESObjectREFR *a_target, bool a_leftHand)
TESPackage * GetCurrentPackage()
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:813
void SetActionComplete(bool a_set) override
void SetPlayerControls(bool a_enable)
NiPointer< Actor > GetCommandingActor() const
virtual std::uint32_t UseAmmo(std::uint32_t a_shotCount)
virtual bool MoveToMiddleHigh()
virtual void GoToPrison(TESFaction *a_faction, bool a_removeInventory, bool a_realJail)
bool IsAMount() const
void UpdateAnimation(float a_delta) override
float voiceTimer
Definition: Actor.h:822
virtual void HandleHealthDamage(Actor *a_attacker, float a_damage)
bool IsBlocking() const
void StopMoving(float a_delta)
std::uint32_t GetCollisionFilterInfo(std::uint32_t &a_outCollisionFilterInfo)
bool IsInCastPowerList(SpellItem *a_power)
void EnableAI(bool a_enable)
void DeselectSpell(SpellItem *a_spell)
TESFaction * vendorFaction
Definition: Actor.h:836
virtual bhkCharacterController * Move(float a_arg2, const NiPoint3 &a_position)
virtual void UpdateAlpha()
bool CanTalkToPlayer() const
void AllowBleedoutDialogue(bool a_canTalk)
void ClearArrested()
void ForceEditorLocation(BGSLocation *a_location) override
~Actor() override
virtual void SetSize(float a_size)
bool HasOutfitItems(BGSOutfit *a_outfit)
HighProcessData * GetHighProcess() const
TESPackage * unk150
Definition: Actor.h:834
TESForm * GetEquippedObjectInSlot(const BGSEquipSlot *slot) const
void DoTrap1(TrapData &a_data) override
std::uint32_t unk174
Definition: Actor.h:840
bool HasSpell(SpellItem *a_spell) const
float armorRating
Definition: Actor.h:862
const TESFaction * GetVendorFaction() const
TESNPC * GetTemplateBase()
virtual void AttachArrow(const BSTSmartPointer< BipedAnim > &a_biped)
virtual bool GetCannibal()
REX::W32::CRITICAL_SECTION unk288
Definition: Actor.h:871
virtual float GetArmorBaseFactorSum()
virtual float CheckClampDamageModifier(ActorValue a_av, float a_delta)
constexpr bool IsInKillMove() const noexcept
Definition: Actor.h:762
virtual bool PutActorOnMountQuick()
virtual void ApplyTemporaryPerk(BGSPerk *a_perk)
BSFaceGenAnimationData * GetFaceGenAnimationData() override
virtual void CreateMovementController()
virtual void KillImpl(Actor *a_attacker, float a_damage, bool a_sendEvent, bool a_ragdollInstant)
bool HasKeyword(const BGSKeyword *a_keyword) const
virtual bool CalculateCachedOwnerIsNPC() const
virtual float CalcArmorRating()
bool IsSneaking() const
ActorHandle GetHandle()
virtual void ModCrimeGoldValue(TESFaction *a_faction, bool a_violent, std::int32_t a_amount)
BSSimpleList< ActiveEffect * > * GetActiveEffectList() override
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)
bool CanPickpocket() const
std::uint8_t unk271
Definition: Actor.h:865
std::int32_t GetFactionRank(TESFaction *a_faction, bool a_isPlayer)
float underWaterTimer
Definition: Actor.h:823
bool IsAnimationDriven() const
void ClearExtraArrows()
Definition: Actor.h:671
void RemoveCastScroll(SpellItem *a_spell, MagicSystem::CastingSource a_source)
virtual void ApplyPerksFromBase()
InventoryEntryData * GetEquippedEntryData(bool a_leftHand) const
bool IsInRagdollState() const
bool IsSummoned() const noexcept
virtual bool CheckValidTarget(TESObjectREFR &a_target)
virtual void ServePrisonTime()
float GetTotalCarryWeight()
void SetLifeState(ACTOR_LIFE_STATE a_lifeState)
void RemoveFromFaction(TESFaction *a_faction)
void LoadGame(BGSLoadFormBuffer *a_buf) override
BSTSmallArray< SpellItem * > addedSpells
Definition: Actor.h:844
std::uint32_t intimidateBribeDayStamp
Definition: Actor.h:842
virtual bool IsPowerAttackCoolingDown() const
std::int8_t soundCallBackSet
Definition: Actor.h:864
virtual bool IsAtPoint(const NiPoint3 &a_point, float a_radius, bool a_expandRadius, bool a_alwaysTestHeight)
AIProcess * currentProcess
Definition: Actor.h:817
bool HasKeywordHelper(const BGSKeyword *a_keyword) const override
Actor * GetKiller() const
TESForm * selectedPower
Definition: Actor.h:847
void TryMoveToMiddleLow() override
float GetVoiceRecoveryTime()
std::uint32_t unk274
Definition: Actor.h:868
virtual float GetFastWalkSpeed()
BGSLocation * GetEditorLocation1() const override
const TESShout * GetCurrentShout() const
void VisitSpells(ForEachSpellVisitor &a_visitor)
void UpdateAwakeSound(NiAVObject *a_obj3D)
virtual void Resurrect(bool a_resetInventory, bool a_attach3D)
BGSScene * GetCurrentScene() const override
bool IsLeveled() const
void CastPermanentMagic(bool a_wornItemEnchantments, bool a_baseSpells, bool a_raceSpells, bool a_everyActorAbility)
virtual void SetRefraction(bool a_enable, float a_refraction)
virtual void RemovePerk(BGSPerk *a_perk)
CombatController * combatController
Definition: Actor.h:835
bool IsLimbGone(std::uint32_t a_limb)
bool PopulateGraphProjectsToLoad(void) const override
bool DetachHavok(NiAVObject *a_obj3D) override
ActorMover * actorMover
Definition: Actor.h:832
BGSLocation * editorLocation
Definition: Actor.h:831
virtual void InitValues()
void FinishLoadGame(BGSLoadFormBuffer *a_buf) override
void ResetInventory(bool a_leveledOnly) override
bool IsCombatTarget(Actor *a_other) const
virtual void UpdateCombat()
virtual void CreateActorMover()
NiPoint3 GetStartingLocation() const override
virtual void InitiateVampireFeedPackage(Actor *a_target, TESObjectREFR *a_furniture)
virtual bool AddShout(TESShout *a_shout)
float GetEquippedWeight()
void PlayASound(BSSoundHandle &a_result, FormID a_formID, bool a_unk03, std::uint32_t a_flags)
virtual bool UpdateFeedbackGraphSpeedAndDirection(const ActorMotionFeedbackOutput &a_output)
std::uint32_t pad0EC
Definition: Actor.h:816
void GetLinearVelocity(NiPoint3 &a_velocity) const override
virtual void StopCombat()
float GetHeight()
bool IsCasting(MagicItem *a_spell) const
void InitLoadGame(BGSLoadFormBuffer *a_buf) override
float equippedWeight
Definition: Actor.h:851
virtual bool ComputeMotionFeedbackSpeedAndDirection(const ActorMotionFeedbackData &a_data, float a_delta, ActorMotionFeedbackOutput &a_output)
void AddWornOutfit(BGSOutfit *a_outfit, bool a_forceUpdate)
virtual float GetAlpha()
virtual void SetEmotionType(EmotionType a_emotionType)
void InterruptCast(bool a_restoreMagicka) const
virtual void Unk_E9(void)
TESPackage * CheckForCurrentAliasPackage() override
virtual void SetEmotionValue(std::uint32_t a_emotionValue)
virtual void DestroyActorMover()
float editorLocRot
Definition: Actor.h:829
bool SetDefaultOutfit(BGSOutfit *a_outfit, bool a_update3D)
void RemoveAnimationGraphEventSink(BSTEventSink< BSAnimationGraphEvent > *a_sink) const
void InitItemImpl() override
void VisitArmorAddon(TESObjectARMO *a_armor, TESObjectARMA *a_arma, std::function< void(bool a_firstPerson, NiAVObject &a_obj)> a_visitor)
TESRace * GetRace() const
virtual bool CalculateCachedOwnerIsUndead() const
virtual void PutCreatedPackage(TESPackage *a_package, bool a_tempPackage, bool a_createdPackage)
virtual float GetHeading(bool a_ignoreRaceSettings) const
virtual void SetCombatGroup(CombatGroup *a_group)
virtual float GetJogSpeed()
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
virtual void DetachCharController()
MiddleHighProcessData * GetMiddleHighProcess() 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:833
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)
void StopAlarmOnActor()
std::uint64_t unk280
Definition: Actor.h:870
bool IsPowerAttacking() const
float GetAimAngle() const
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:814
float checkMyDeadBodyTimer
Definition: Actor.h:821
const TESNPC * GetActorBase() const
virtual std::uint32_t GetCrimeGoldValue(const TESFaction *a_faction) const
virtual bool DrinkPotion(AlchemyItem *a_potion, ExtraDataList *a_extralist)
virtual void UpdateActor3DPosition()
void Update3DModel()
bool ShouldSaveAnimationOnUnloading() const override
void EvaluatePackage(bool a_immediate=false, bool a_resetAI=false)
void AddDeathItems()
bool CanOfferServices() const
virtual void OnArmorActorValueChanged()
virtual void Unk_A2(void)
TESNPC * GetActorBase()
bool TryChangeSkyCellActorsProcessLevel() override
void AddCastPower(SpellItem *a_power)
std::uint16_t GetLevel() const
virtual void SetAvoidanceDisabled(bool a_set)
void DispelWornItemEnchantments()
bool ApplyCurrent(float a_velocityTime, const hkVector4 &a_velocity) override
bool VisitFactions(std::function< bool(TESFaction *a_faction, std::int8_t a_rank)> a_visitor)
std::uint64_t unk180
Definition: Actor.h:843
bool SetDialogueWithPlayer(bool a_flag, bool a_forceGreet, TESTopicInfo *a_topic) override
std::uint32_t unk11C
Definition: Actor.h:827
virtual std::int32_t GetCurrentShoutLevel()
bool HasKeywordString(std::string_view a_formEditorID)
const TESPackage * GetCurrentPackage() const
InventoryEntryData * GetAttackingWeapon()
bool CanAttackActor(Actor *a_actor)
bool IsGhost() const
float timerOnAction
Definition: Actor.h:826
TESForm * editorLocForm
Definition: Actor.h:830
virtual void UseSkill(ActorValue a_av, float a_points, TESForm *a_arg3)
bool HasPerk(BGSPerk *a_perk) const
bool IsInMidair() const
bool IsAlarmed() const
virtual void PrecacheData()
stl::enumeration< BOOL_FLAGS, std::uint32_t > boolFlags
Definition: Actor.h:852
virtual void InitiateDialogue(Actor *a_target, PackageLocation *a_loc1, PackageLocation *a_loc2)
void EndInterruptPackage(bool a_skipDialogue)
virtual float GetAcrobatics() const
Definition: AlchemyItem.h:24
Definition: BGSAnimationSequencer.h:11
Definition: BGSDialogueBranch.h:10
Definition: BGSEquipSlot.h:10
HeadPartType
Definition: BGSHeadPart.h:34
Definition: BGSKeyword.h:10
Definition: BGSLoadFormBuffer.h:11
Definition: BGSLocation.h:68
Definition: BGSOutfit.h:11
BGSEntryPoint::ENTRY_POINT EntryPoint
Definition: BGSPerkEntry.h:25
Definition: BGSPerk.h:33
Definition: BGSSaveFormBuffer.h:8
Definition: BGSScene.h:34
Definition: BSFaceGenAnimationData.h:11
Definition: BSPointerHandleSmartPointer.h:10
Definition: BSTList.h:10
Definition: BSTArray.h:378
Definition: BSTEvent.h:143
Definition: BSTSmartPointer.h:37
Definition: BipedAnim.h:42
Definition: CombatController.h:23
Definition: CombatGroup.h:74
Definition: DialogueItem.h:22
Definition: ExtraDataList.h:51
Definition: IPostAnimationChannelUpdateFunctor.h:6
Definition: InventoryEntryData.h:15
Definition: MagicCaster.h:25
Definition: MagicItem.h:30
Definition: MagicTarget.h:29
Definition: MovementControllerNPC.h:21
Definition: NiAVObject.h:57
Definition: NiNode.h:12
Definition: NiPoint3.h:6
Definition: NiSmartPointer.h:9
Definition: PackageLocation.h:11
Definition: PerkEntryVisitor.h:10
Definition: SpellItem.h:16
Definition: TESAmmo.h:52
Definition: TESBoundObject.h:26
Definition: TESFaction.h:120
Definition: TESForm.h:40
Definition: TESIdleForm.h:37
Definition: TESNPC.h:36
Definition: TESObjectARMA.h:28
Definition: TESObjectARMO.h:37
Definition: TESObjectCELL.h:119
Definition: TESObjectREFR.h:113
Definition: TESPackage.h:316
Definition: TESRace.h:149
Definition: TESShout.h:18
Definition: TESTopicInfo.h:42
Definition: TESWordOfPower.h:13
Definition: bhkCharacterController.h:73
const_pointer data() const noexcept
Definition: BSFixedString.h:116
Definition: hkVector4.h:9
Definition: hkpCollidable.h:13
constexpr bool all(Args... a_args) const noexcept requires(std
Definition: PCH.h:290
Definition: BSDirectInputManager.h:8
ForEachResult
Definition: BSContainer.h:6
CannotCastReason
Definition: MagicSystem.h:13
CastingSource
Definition: MagicSystem.h:27
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_Actor__ForEachSpellVisitor(static_cast< std::uint64_t >(686850))
constexpr REL::ID RTTI_Actor(static_cast< std::uint64_t >(513915))
NiSmartPointer(Actor)
SOUL_LEVEL
Definition: SoulLevels.h:6
EmotionType
Definition: EmotionTypes.h:6
ActorValue
Definition: ActorValues.h:6
constexpr std::array< REL::ID, 1 > VTABLE_Actor__ForEachSpellVisitor
Definition: Offsets_VTABLE.h:7389
DETECTION_PRIORITY
Definition: DetectionPriorities.h:6
ACTOR_LIFE_STATE
Definition: ActorState.h:8
std::uint32_t FormID
Definition: BSCoreTypes.h:5
constexpr std::array< REL::ID, 10 > VTABLE_Actor
Definition: Offsets_VTABLE.h:7363
@ kNone
ITEM_REMOVE_REASON
Definition: TESObjectREFR.h:64
ACTOR_CRITICAL_STAGE
Definition: Actor.h:56
std::uint32_t RefHandle
Definition: BSCoreTypes.h:6
FIGHT_REACTION
Definition: FightReactions.h:6
Definition: PCH.h:75
enumeration(Args...) -> enumeration< std::common_type_t< Args... >, std::underlying_type_t< std::common_type_t< Args... >>>
Definition: EffectArchetypes.h:65
ACTOR_VALUE_MODIFIER
Definition: ActorValues.h:179
@ kTotal
Definition: ActorValues.h:184
Definition: AITimeStamp.h:6
Definition: Actor.h:79
const T * operator[](ActorValue a_actorValue) const
Definition: Actor.h:86
T * operator[](ActorValue a_actorValue)
Definition: Actor.h:81
BSFixedString actorValues
Definition: Actor.h:92
T * entries
Definition: Actor.h:93
Definition: Actor.h:75
LocalMap< float > baseValues
Definition: Actor.h:115
LocalMap< Modifiers > modifiers
Definition: Actor.h:119
Definition: Actor.h:230
ChangeFlag
Definition: Actor.h:232
@ kLifeState
Definition: Actor.h:233
@ kMerchantContainer
Definition: Actor.h:235
@ kDismemberedLimbs
Definition: Actor.h:236
@ kOverrideModifiers
Definition: Actor.h:241
@ kPackageExtraData
Definition: Actor.h:234
@ kDispModifiers
Definition: Actor.h:238
@ kPermanentModifiers
Definition: Actor.h:242
@ kLeveledActor
Definition: Actor.h:237
@ kTempModifiers
Definition: Actor.h:239
@ kDamageModifiers
Definition: Actor.h:240
Definition: Actor.h:247
RecordFlag
Definition: Actor.h:249
@ kInitiallyDisabled
Definition: Actor.h:253
@ kPersistent
Definition: Actor.h:252
@ kNoAIAcquire
Definition: Actor.h:255
@ kIgnored
Definition: Actor.h:254
@ kDontHavokSettle
Definition: Actor.h:256
@ kStartsDead
Definition: Actor.h:251
@ kDeleted
Definition: Actor.h:250
Definition: Actor.h:143
@ kLeftHand
Definition: Actor.h:146
@ kPowerOrShout
Definition: Actor.h:149
@ kUnknown
Definition: Actor.h:148
@ kTotal
Definition: Actor.h:151
@ kRightHand
Definition: Actor.h:147
ENTRY_POINT
Definition: BGSEntryPoint.h:14
BipedObjectSlot
Definition: BGSBipedObjectForm.h:11
BIPED_OBJECT
Definition: BipedObjects.h:8
Definition: BSAnimationGraphEvent.h:10
Definition: BSAnimationUpdateData.h:10
Definition: BSSoundHandle.h:10
ArchetypeID
Definition: EffectArchetypes.h:8
Definition: HighProcessData.h:61
Definition: MiddleHighProcessData.h:135
Definition: Actor.h:67
float modifiers[ACTOR_VALUE_MODIFIERS::kTotal]
Definition: Actor.h:70