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