CommonLibVR
PlayerCharacter.h
Go to the documentation of this file.
1 #pragma once
2 
4 #include "RE/B/BSPointerHandle.h"
5 #include "RE/B/BSSoundHandle.h"
6 #include "RE/B/BSTArray.h"
7 #include "RE/B/BSTEvent.h"
8 #include "RE/B/BSTHashMap.h"
9 #include "RE/B/BSTList.h"
10 #include "RE/B/BSTSmartPointer.h"
11 #include "RE/B/BSTTuple.h"
12 #include "RE/C/Character.h"
13 #include "RE/C/Crime.h"
14 #include "RE/C/CrosshairPickData.h"
15 #include "RE/F/FormTypes.h"
16 #include "RE/H/hkRefPtr.h"
17 #include "RE/N/NiPoint3.h"
18 #include "RE/N/NiSmartPointer.h"
19 #include "RE/N/NiTMap.h"
21 #include "RE/T/TESObjectWEAP.h"
22 #include "RE/T/TESQuest.h"
23 
24 namespace RE
25 {
26  enum class AQUIRE_TYPE;
27 
28  class Actor;
29  class BGSInstancedQuestObjective;
30  class BGSLocation;
31  class bhkMouseSpringAction;
32  class BipedAnim;
33  class BSFadeNode;
34  class BSLight;
35  class BSTriShape;
36  class CombatGroup;
37  class ImageSpaceModifierInstanceDOF;
38  class InventoryEntryData;
39  class MenuModeChangeEvent;
40  class MenuOpenCloseEvent;
41  class NiAVObject;
42  class NiBillboardNode;
43  class NiNode;
44  class ObjectListItem;
45  class TESObject;
46  class TESObjectREFR;
47  class TintMask;
48  class UserEventEnabledEvent;
49  struct BGSActorCellEvent;
50  struct BGSActorDeathEvent;
51  struct PerkRankData;
52  struct PositionPlayerEvent;
53  struct TESQuestStageItem;
54  struct TESTrackedStatsEvent;
55 #ifdef SKYRIMVR
56  struct VRDeviceConnectionChange;
57  struct VROverlayChange;
58  struct VRResetHMDHeight;
59 #endif
60 
61  enum class PLAYER_ACTION
62  {
63  kNone = 0,
66  kShootBow,
68  kJumping,
76  kShout,
78 
79  kTotal,
81  };
82 
83  enum VR_Bow_State : std::uint32_t
84  {
89  };
90 
92  {
93  public:
94  // members
95  float violentCur; // 00
96  float nonViolentCur; // 04
97  float nonViolentInfamy; // 08
98  float violentInfamy; // 0C
99  };
100  static_assert(sizeof(CrimeGoldStruct) == 0x10);
101 
103  {
104  public:
105  // members
106  std::int32_t unwitnessed; // 0
107  std::int32_t witnessed; // 4
108  };
109  static_assert(sizeof(StolenItemValueStruct) == 0x8);
110 
112  {
113  public:
114  // members
115  std::uint16_t friendCounts[4]; // 0
116  };
117  static_assert(sizeof(FriendshipFactionsStruct) == 0x8);
118 
120  {
121  public:
122  using ArrivalFunc_t = void(std::int64_t);
123 
124  // members
130  std::int64_t arrivalFuncData; // 30
133 #ifndef SKYRIMVR
134  bool resetWeather; // 40
135  bool allowAutoSave; // 41
136  bool isValid; // 42
137  std::uint8_t pad43; // 43
138  std::uint32_t pad44; // 44
139 #else
140  float unk_40; // 40 - New in VR, always 0.0 in vanilla
141  std::uint8_t unk44; // 44
142  bool resetWeather; // 45
143  std::uint8_t allowAutoSave; // 46
144  bool isValid; // 47
145  std::uint8_t unk48; // 48
146  std::uint8_t unk49; // 49
147  std::uint8_t unk4A; // 4A
148  std::uint8_t unk4B; // 4B
149  std::uint32_t unk4C; // 4C
150 #endif
151  };
152 #ifndef SKYRIMVR
153  static_assert(sizeof(PLAYER_TARGET_LOC) == 0x48);
154 #else
155  static_assert(sizeof(PLAYER_TARGET_LOC) == 0x50);
156 #endif
157 
159  {
160  public:
161  // members
162  float timer; // 0
165  };
166  static_assert(sizeof(PlayerActionObject) == 0xC);
167 
169  public Character, // 000
170 #ifndef SKYRIMVR
171  public BSTEventSource<BGSActorCellEvent>, // 2D0
172  public BSTEventSource<BGSActorDeathEvent>, // 328
173  public BSTEventSource<PositionPlayerEvent>, // 380
174  public BSTEventSink<MenuOpenCloseEvent>, // 2B0
175  public BSTEventSink<MenuModeChangeEvent>, // 2B8
176  public BSTEventSink<UserEventEnabledEvent>, // 2C0
177  public BSTEventSink<TESTrackedStatsEvent> // 2C8
178 #else
179  public BSTEventSource<BGSActorCellEvent>, // 2E8
180  public BSTEventSource<BGSActorDeathEvent>, // 340
181  public BSTEventSource<PositionPlayerEvent>, // 398
182  public BSTEventSink<MenuOpenCloseEvent>, // 2B0
183  public BSTEventSink<MenuModeChangeEvent>, // 2B8
184  public BSTEventSink<UserEventEnabledEvent>, // 2C0
185  public BSTEventSink<TESTrackedStatsEvent>, // 2C8
186  public BSTEventSink<VROverlayChange>, // 2D0
187  public BSTEventSink<VRDeviceConnectionChange>, // 2D8
188  public BSTEventSink<VRResetHMDHeight> // 2E0
189 #endif
190  {
191  public:
192  inline static constexpr auto RTTI = RTTI_PlayerCharacter;
193  inline static constexpr auto VTABLE = VTABLE_PlayerCharacter;
194  inline static constexpr auto FORMTYPE = FormType::ActorCharacter;
195 
196  enum class EventType
197  {
198  kThief = 3,
199  kContainer = 5,
200  kDeadBody = 6
201  };
202 
203  enum class GrabbingType
204  {
205  kNone = 0,
206  kNormal,
207  kTelekinesis,
208  };
209 
210  enum class ByCharGenFlag
211  {
212  kNone = 0,
213  kDisableSaving = 1 << 0,
214  kHandsBound = 1 << 2
215  };
216 
217  struct VRGrabData
218  {
219  public:
220  // members
223  float grabObjectWeight; // 34
225  float grabDistance; // 3C
226  std::double_t unk40; // 40 - 0x40 and below for havok stuff
227  std::uint64_t unk48; // 48
228  std::double_t unk50; // 50
229  std::uint64_t unk58; // 58
230  std::uint32_t unk60; // 60
231  std::uint32_t unk64Flags; // 64
232  };
233  static_assert(sizeof(VRGrabData) == 0x68);
234 
235  struct PlayerFlags
236  {
237  // members
238  bool travelUseDoor: 1; // 0:0 - Guess from FO4 given matching logic for Character::WarpFollowers
239  bool fastTraveling: 1; // 0:1 - Set and cleared in the same fast travel function
240  bool overAutoAimTarget: 1; // 0:2 - Crosshair over hostile actor AND equipped WEAPON_TYPE bow, staff, or crossbow, must have weapon out to be accurate
241  bool showQuestItems: 1; // 0:3 - Not used by game, confirmed with console command `SetShowQuestItems`
242  bool unk0_4: 1; // 0:4 - Unused?
243  bool hasQueuedEquipAnim: 1; // 0:5 - Set true in `OnItemEquipped` if a_playAnim && isPaused, false once out of menu
244  bool escaping: 1; // 0:6 - Is Escaping from jail
245  bool forceQuestTargetRepath: 1; // 0:7 - Updates quest target in compass
246  bool unk1_0: 1; // 1:0
247  bool unk1_1: 1; // 1:1
248  bool sleeping: 1; // 1:2
249  bool unk1_3: 1; // 1:3
250  bool unk1_4: 1; // 1:4
251  bool unk1_5: 1; // 1:5
252  bool greetingPlayer: 1; // 1:6 - NPC greeting player
253  bool unk1_7: 1; // 1:7
254  bool unk2_0: 1; // 2:0
255  bool aiControlledToPos: 1; // 2:1 - Guess from FO4, confirmed aiControlled related
256  bool aiControlledFromPos: 1; // 2:2 - Guess from FO4, confirmed aiControlled related
257  bool aiControlledPackage: 1; // 2:3 - Guess from FO4, confirmed aiControlled related
258  bool returnToLastKnownGoodPosition: 1; // 2:4 - return to lastKnownGoodPosition on next Update
259  bool isBeingChased: 1; // 2:5 - unused along with chaseTimer
260  bool unk2_6: 1; // 2:6
261  bool unk2_7: 1; // 2:7
262  bool isInThirdPersonMode: 1; // 3:0
263  bool unk3_1: 1; // 3:1
264  bool unk3_2: 1; // 3:2
265  bool unk3_3: 1; // 3:3
266  bool target3DDistant: 1; // 3:4 - Distance from object in crosshair > 1000
267  bool isInCombat: 1; // 3:5
268  bool attemptedYieldInCurrentCombat: 1; // 3:6 - Set when yielding to guard for arrest dialogue, prevents multiple arrest dialogues
269  bool unk3_7: 1; // 3:7
270  bool isLoading: 1; // 4:0 - Is player loading a new area
271  bool shouldUpdateCrosshair: 1; // 4:1 - If forced off without letting Skyrim update this, crosshair UI won't update,
272  bool unk4_2: 1; // 4:2
273  bool healthTutorialShown: 1; // 4:3
274  bool magickaTutorialShown: 1; // 4:4
275  bool staminaTutorialShown: 1; // 4:5
276  bool goToJailQueued: 1; // 4:6 - Briefly set
277  bool unk4_7: 1; // 4:7
278  bool isSprinting: 1; // 5:0
279  bool isSungazing: 1; // 5:1 - Is staring at the sun
280  bool dragonRideTargetLocked: 1; // 5:2
281  bool everModded: 1; // 5:3
282  bool servingJailTime: 1; // 5:4 - Briefly set
283 #ifndef SKYRIMVR
284  bool pad5_5: 3; // 5:5
285  std::uint16_t pad6; // 6
286 #else
287  bool unk5_5: 1; // 5:5
288  bool unk5_6: 1; // 5:6
289  bool unk5_7: 1; // 5:7
290  bool unk6_0: 1; // 6:0
291  bool unk6_1: 1; // 6:1
292  bool unk6_2: 1; // 6:2
293  bool unk6_3: 1; // 6:3
294  bool unk6_4: 1; // 6:4
295  bool unk6_5: 1; // 6:5
296  bool unk6_6: 1; // 6:6
297  bool unk6_7: 1; // 6:7
298  bool unk7_0: 1; // 7:0
299  bool unk7_1: 1; // 7:1
300  bool unk7_2: 1; // 7:2
301  bool unk7_3: 1; // 7:3
302  bool unk7_4: 1; // 7:4
303  bool unk7_5: 1; // 7:5
304  bool unk7_6: 1; // 7:6
305  bool unk7_7: 1; // 7:7
306 #endif
307  };
308  static_assert(sizeof(PlayerFlags) == 0x8);
309 
311  {
312  public:
313  // members
314  TESObjectWEAP* rightHandWeapon; // 00 - These may be main/off hand weapon for VR?
316  };
317  static_assert(sizeof(QueuedWeapon) == 0x10);
318 
319  struct TeleportPath // TODO: Should not be in Player class. Gets used in Pathing and other non-player areas
320  {
321  public:
322  struct Unk00Data
323  {
324  public:
325  // members
326  bool unk00; // 00 - Determines whether to use worldspace or cell?
327  char pad01[7]; // 01
330  };
331  static_assert(sizeof(Unk00Data) == 0x18);
332 
333  struct Unk18Data
334  {
335  public:
336  // members
338  std::uint64_t unk08; // 08
339  std::uint64_t unk10; // 10
340  };
341  static_assert(sizeof(Unk18Data) == 0x18);
342 
343  // members
346  std::uint64_t unk30; // 30
347  std::uint64_t unk38; // 38
348  std::uint64_t unk40; // 40
349  };
350  static_assert(sizeof(TeleportPath) == 0x48);
351 
353  {
354  public:
355  // members
360  };
361  static_assert(sizeof(PreTransformationData) == 0x40);
362 
364  {
365  public:
366  struct Data
367  {
368  public:
369  struct Skills
370  {
371  enum Skill : std::uint32_t
372  {
375  kArchery = 2,
376  kBlock = 3,
382  kSneak = 9,
383  kAlchemy = 10,
384  kSpeech = 11,
388  kIllusion = 15,
391  kTotal
392  };
393  };
395 
396  struct SkillData
397  {
398  public:
399  // members
400  float level; // 0
401  float xp; // 4
402  float levelThreshold; // 8
403  };
404  static_assert(sizeof(SkillData) == 0xC);
405 
406  // members
407  float xp; // 000
408  float levelThreshold; // 004
409  SkillData skills[Skill::kTotal]; // 008
410  std::uint32_t legendaryLevels[Skill::kTotal]; // 0E0
411  };
412  static_assert(sizeof(Data) == 0x128);
413 
414  void AdvanceLevel(bool a_addThreshold);
415 
416  // members
417  Data* data; // 0
418  };
419  static_assert(sizeof(PlayerSkills) == 0x8);
420 
421  ~PlayerCharacter() override; // 000
422 
423  // override
424 #ifdef SKYRIMVR
425  void AttachWeapon(RE::TESObjectWEAP* a_weapon, bool attachToShieldHand) override; // 82
426  void RemoveWeapon(BIPED_OBJECT equipIndex) override; // 83
427 #else
428  void RemoveWeapon(BIPED_OBJECT equipIndex) override; // 82
429 #endif
430 
431  // add
432  virtual void Unk_12A(void); // 12A
433  virtual std::uint32_t GetViolentCrimeGoldValue(const TESFaction* a_faction) const; // 12B
434  virtual std::uint32_t GetNonViolentCrimeGoldValue(const TESFaction* a_faction) const; // 12C
435  virtual void ClearAllCrimeGold(TESFaction* a_faction); // 12D
436  virtual void Unk_12E(void); // 12E - { return 0; }
437 
439  static bool IsGodMode();
440 
441  void AddPlayerAddItemEvent(TESObject* a_object, TESForm* a_owner, TESObjectREFR* a_container, AQUIRE_TYPE a_type);
442  void AddSkillExperience(ActorValue a_skill, float a_experience);
443  bool AttemptPickpocket(TESObjectREFR* a_containerRef, InventoryEntryData* a_entry, std::int32_t a_number, bool a_fromContainer = true);
444  bool CenterOnCell(const char* a_cellName);
449  std::int32_t GetItemCount(TESBoundObject* a_object);
450  std::uint32_t GetNumTints(std::uint32_t a_tintType);
451  bool CheckCast(MagicItem* a_spell, Effect* a_effect, MagicSystem::CannotCastReason& a_reason);
452 #ifndef SKYRIMVR
456  TintMask* GetOverlayTintMask(TintMask* a_original);
458  TintMask* GetTintMask(std::uint32_t a_tintType, std::uint32_t a_index);
461 #else
462  void StartGrabObject(VR_DEVICE a_device);
464  bool IsGrabbingWithDevice(VR_DEVICE a_device) const;
465  void ActivatePickRef(VR_DEVICE a_device = VR_DEVICE::kHeadset);
466 #endif
467  bool HasActorDoingCommand() const;
468  bool IsGrabbing() const;
470  void PlayPickupEvent(TESForm* a_item, TESForm* a_containerOwner, TESObjectREFR* a_containerRef, EventType a_eventType);
471  void SetAIDriven(bool a_enable);
472  void SetEscaping(bool a_flag, bool a_escaped);
474 
475  template <class T>
477  {
478  return static_cast<BSTEventSource<T>*>(this);
479  }
480 
481  template <class T>
482  inline void AddEventSink(BSTEventSink<T>* a_sink)
483  {
484  GetEventSource<T>()->AddEventSink(a_sink);
485  }
486 
487  // members
488 #ifndef SKYRIMVR
489  mutable BSSpinLock questTargetsLock; // 3D8
493  std::uint32_t pad444; // 444
498  std::uint32_t pad49C; // 49C
499  BGSNote* unusedNote; // 4A0 - Used for unimplemented formtype BGSNote
500  BGSNote* unusedNote2; // 4A8 - Used for unimplemented formtype BGSNote
517  std::uint32_t pad63C; // 63C
519  BSSoundHandle unusedSound; // 688 - Only place it is set is an unused function
522  std::uint32_t pad6AC; // 6AC
524  std::uint32_t unk6B8; // 6B8
525  std::uint32_t unk6BC; // 6BC
527  std::int32_t numberofStealWarnings; // 6C8
528  float stealWarningTimer; // 6CC
529  std::int32_t numberofPickpocketWarnings; // 6D0
532  std::uint32_t pad6DC; // 6DC
536  float dynamicDOFFocusTime; // 6F8
537  bool dynamicDOFFocused; // 6FC
538  std::uint8_t unk6FD; // 6FD
539  std::uint16_t unk6FE; // 6FE
543  std::int32_t jailSentence; // 720
544  std::uint32_t pad724; // 724
545  void* unk728; // 728 - smart ptr
546  QueuedWeapon queuedWeaponAttachs[WEAPON_TYPE::kTotal]; // 730 - Weapons are attached on next PlayerCharacter::Update
547  std::int32_t vampireFeedDetection; // 7D0
548  std::uint32_t mapMarkerIterator; // 7D4
555  float grabObjectWeight; // 8CC
556  float grabDistance; // 8D0
557  float unk8D4; // 8D4
558  std::uint64_t unk8D8; // 8D8
559  std::uint32_t unk8E0; // 8E0 - Unused?
560  std::uint32_t sleepSeconds; // 8E4
563  float eyeHeight; // 8F8
564  float greetTimer; // 8FC
565  float encumberedTimer; // 900
566  float powerAttackTimer; // 904
567  std::int32_t hoursToSleep; // 908
568  std::int32_t amountStolenSold; // 90C
569  std::uint32_t valueStolen; // 910
573  float sitHeadingDelta; // 920
574  ObjectRefHandle playerMapMarker; // 924 - Custom marker placed by player in map
575  TeleportPath* playerMarkerPath; // 928 - Educated guess from FO4
576  std::uint32_t skillTrainingsThisLevel; // 930
577  std::uint32_t unk934; // 934
579  std::uint64_t unk940; // 940 - Unused?
580  std::uint32_t crimeCounts[PackageNS::CRIME_TYPES::kTotal]; // 948
581  std::uint32_t unk964; // 964
583  std::int64_t lastPlayingTimeUpdate; // 970
584  std::int64_t totalPlayingTime; // 978
585  std::int32_t characterSeed; // 980
586  std::uint32_t unk984; // 984
588  std::uint32_t unk990; // 990
589  std::uint32_t unk994; // 994
592  float dropAngleMod; // 9A8
593  float lastDropAngleMod; // 9AC
597  std::uint64_t unk9C0; // 9C0
601  TESForm* advanceObject; // 9F0 - Part of AE8 and AEC, the object advancing the skill (eg telekinesis spell for alteration skill)
603  std::uint32_t teammateCount; // A08
604  float combatTimer; // A0C
605  float yieldTimer; // A10
606  float chaseTimer; // A14
608  std::uint32_t unkA1C; // A1C
609  std::uint8_t unkA20[0xA0]; // A20 - Unused?
610  std::uint32_t unkAC0; // AC0
611  std::uint32_t unkAC4; // AC4
614  float telekinesisDistance; // AD4
615  float commandTimer; // AD8
616  float sunGazeTimer; // ADC - Upon sungazing, counts down from 0.5 seconds. When 0, applies imagespace modifier
618  ActorValue advanceSkill; // AE8 - advance values set, then cleared in PlayerSkills::ModSkillPoints surronding ApplyPerkEntry
619  std::uint32_t advanceAction; // AEC - Part of AE8 and 9F0
622  std::int32_t difficulty; // AF8
624  std::int8_t murder; // B00
625  std::int8_t perkCount; // B01
627  std::uint8_t padB03; // B03
628  std::uint32_t unkB04; // B04
634  TESRace* race2; // B40
635  std::int32_t unkB48; // B48
636  std::uint32_t padB4C; // B4C
638  std::uint64_t unkB68; // B68
639  std::uint64_t unkB70; // B70
640  std::uint64_t unkB78; // B78
641  std::uint64_t unkB80; // B80
642  std::int32_t unkB88; // B88
643  std::uint32_t padB8C; // B8C
644  std::uint64_t unkB90; // B90
647  PreTransformationData* preTransformationData; // BD0 - Stores equipped data when transforming to vampire/werewolf, cleared when transforming back to human
649 #else
650  // members VR
651  NiPointer<NiNode> PlayerWorldNode; // 3F0
652  NiPointer<NiNode> FollowNode; // 3F8
653  NiPointer<NiNode> FollowOffset; // 400
654  NiPointer<NiNode> HeightOffsetNode; // 408
655  NiPointer<NiNode> SnapWalkOffsetNode; // 410
656  NiPointer<NiNode> RoomNode; // 418
657  NiPointer<NiNode> BlackSphere; // 420
658  NiPointer<NiNode> uiNode; // 428
659  NiPointer<BSTriShape> InWorldUIQuadGeo; // 430
660  NiPointer<NiNode> UIPointerNode; // 438
661  NiPointer<BSTriShape> UIPointerGeo; // 440
662  NiPointer<NiNode> DialogueUINode; // 448
663  NiPointer<NiNode> TeleportDestinationPreview; // 450
664  NiPointer<NiNode> TeleportDestinationFail; // 458
665  NiPointer<NiNode> TeleportSprintPreview; // 460
666  NiPointer<NiNode> SpellOrigin; // 468
667  NiPointer<NiNode> SpellDestination; // 470
668  NiPointer<NiNode> ArrowOrigin; // 478
669  NiPointer<NiNode> ArrowDestination; // 480
670  NiPointer<NiNode> QuestMarker; // 488
671  NiPointer<NiNode> LeftWandNode; // 490
672  NiPointer<NiNode> LeftWandShakeNode; // 498
673  NiPointer<NiNode> LeftValveIndexControllerNode; // 4A0
674  NiPointer<NiNode> unkNode4A8; // 4A8
675  NiPointer<NiNode> LeftWeaponOffsetNode; // 4B0
676  NiPointer<NiNode> LeftCrossbowOffsetNode; // 4B8
677  NiPointer<NiNode> LeftMeleeWeaponOffsetNode; // 4C0
678  NiPointer<NiNode> LeftStaffWeaponOffsetNode; // 4C8
679  NiPointer<NiNode> LeftShieldOffsetNode; // 4D0
680  NiPointer<NiNode> RightShieldOffsetNode; // 4D8
681  NiPointer<NiNode> SecondaryMagicOffsetNode; // 4E0
682  NiPointer<NiNode> SecondaryMagicAimNode; // 4E8
683  NiPointer<NiNode> SecondaryStaffMagicOffsetNode; // 4F0
684  NiPointer<NiNode> RightWandNode; // 4F8
685  NiPointer<NiNode> RightWandShakeNode; // 500
686  NiPointer<NiNode> RightValveIndexControllerNode; // 508
687  NiPointer<NiNode> unkNode510; // 510
688  NiPointer<NiNode> RightWeaponOffsetNode; // 518
689  NiPointer<NiNode> RightCrossbowOffsetNode; // 520
690  NiPointer<NiNode> RightMeleeWeaponOffsetNode; // 528
691  NiPointer<NiNode> RightStaffWeaponOffsetNode; // 530
692  NiPointer<NiNode> PrimaryMagicOffsetNode; // 538
693  NiPointer<NiNode> PrimaryMagicAimNode; // 540
694  NiPointer<NiNode> PrimaryStaffMagicOffsetNode; // 548
695  std::uint32_t unk550; // 550 - left hand for something?
696  std::uint32_t unk554; // 554 - right hand for something?
697  NiPointer<NiBillboardNode> CrosshairParent; // 558
698  NiPointer<NiBillboardNode> CrosshairSecondaryParent; // 560
699  NiPointer<NiBillboardNode> TargetLockParent; // 568
700  NiPointer<NiNode> GamepadNode; // 570
701  NiPointer<NiNode> LastSyncPos; // 578
702  NiPointer<NiNode> UprightHmdNode; // 580
703  NiPointer<NiNode> MapMarkers3D; // 588
704  NiPointer<NiNode> NPCLHnd; // 590
705  NiPointer<NiNode> NPCRHnd; // 598
706  NiPointer<NiNode> NPCLClv; // 5A0
707  NiPointer<NiNode> NPCRClv; // 5A8
708  std::uint32_t unk5B0; // 5B0
709  std::uint32_t unk5B4; // 5B4
710  std::uint64_t unk5B8; // 5B8
711  VR_Bow_State bowState; // 5C0
712  std::uint32_t unk5C4; // 5C4
713  NiPointer<NiNode> BowAimNode; // 5C8
714  NiPointer<NiNode> BowRotationNode; // 5D0
715  NiPointer<NiNode> ArrowSnapNode; // 5D8
716  NiPointer<BSFadeNode> ArrowNode; // 5E0
717  NiPointer<BSFadeNode> ArrowFireNode; // 5E8
718  std::uint64_t unk5F0; // 5F0
719  NiPointer<NiNode> ArrowHoldOffsetNode; // 5F8
720  NiPointer<NiNode> ArrowHoldNode; // 600
721  NiPointer<NiNode> unk608; // 608
722  float currentArrowSnapDistance; // 610
723  std::uint32_t unk614; // 614
724  float currentBowDrawAmount; // 618 - 0 to 1
725  float lastRumbleBowDrawAmount; // 61C - 0 to 1
726  std::uint64_t unk620; // 620
727  std::uint64_t unk628; // 628
728  std::uint64_t unk630; // 630
729  void* QuestMarkerBillBoardsNodeArray; // 638 TODO - Make into proper data structure
730  void* TeleportNodeArray; // 640 TODO - Make into proper data structure
731  void* QuestMarkerBillBoardsNodeArray2; // 648 TODO - Make into proper data structure -> points to same place as QuestMarkerBillBoardsNodeArray
732  std::uint64_t unk650; // 650
733  void* TeleportNodeArray2; // 658 TODO - Make into proper data structure -> points to same place as TeleportNodeArray
734  void* QuestMarkerBillBoardsNodeArray3; // 660 TODO - Make into proper data structure -> points to same place as QuestMarkerBillBoardsNodeArray
735  std::uint64_t unk668; // 668
736  float unkFloat670; // 670
737  std::uint32_t unk674; // 674
738  void* TeleportNodeArray3; // 678 TODO - Make into proper data structure
739  std::uint64_t unk680; // 680
740  std::uint64_t unk688; // 688
741  std::uint64_t unk690; // 690
742  std::uint64_t unk698; // 698
743  std::uint64_t unk6A0; // 6A0
744  std::uint64_t unk6A8[0x5]; // 6A8
745  std::uint32_t unk6D0; // 6D0
746  std::uint32_t isRightHandMainHand; // 6D4 - Determined from Settings->VR->MainHand setting
747  std::uint32_t isLeftHandMainHand; // 6D8 - Determined from Settings->VR->MainHand setting
748  std::uint32_t unk6DC; // 6DC
749  std::uint64_t unk6F0[0x5D]; // 6F0
750  mutable BSSpinLock questTargetsLock; // 9C8 - Confirmed in ConsoleFunc__Handler::ShowQuestTargets_14032A200
754  std::uint32_t padA34; // A34
757  NiPoint3 bulletAutoAim; // A74 - Guessed from 12D3, confirmed is NiPoint3
758  NiPoint3 cachedVelocity; // A80
759  std::uint32_t padA8C; // A8C
760  BGSNote* unusedNote; // A90 - Used for unimplemented formtype BGSNote
761  BGSNote* unusedNote2; // A98 - Used for unimplemented formtype BGSNote
762  BSTArray<PerkRankData*> addedPerks; // AA0 these 3 here gotta be fixed - guessed based on ae8
763  BSTArray<BGSPerk*> perks; // AB8 guess
777  NiPoint3 exteriorPosition; // C20
778  std::uint32_t padC2C; // C2C
780  BSSoundHandle unusedSound; // C80 - Only place it is set is an unused function
783  std::uint32_t unkCA4; // CA4
785  std::uint64_t unkCB0; // CB0
787  std::int32_t numberofStealWarnings; // CC0
788  float stealWarningTimer; // CC4
789  std::uint32_t numberofPickpocketWarnings; // CC8 - Guess
790  float pickPocketWarningTimer; // CCC
792  std::uint32_t unkCD4; // CD4
796  float dynamicDOFFocusTime; // CF0
797  bool dynamicDOFFocused; // CF4
801  std::int32_t jailSentence; // D18
802  std::int32_t unkD1C; // D18
803  std::uint64_t unkD20; // D20
804  QueuedWeapon queuedWeaponAttachs[WEAPON_TYPE::kTotal]; // D28 - Weapons attach to PlayerCharacter on next frame
805  std::uint32_t vampireFeedDetection; // DC8
806  std::uint32_t mapMarkerIterator; // DCC
811  std::uint64_t unkE90; // E90
812  VRGrabData grabbedObjectData[VR_DEVICE::kTotal]; // E98 -
813  float unkFD0; // FD0 - Not grabDistance as expected in SE
814  float unkFloatFD4; // FD4
815  std::uint64_t unkFD8; // FD8
816  std::uint32_t sleepSeconds; // FE0
817  std::uint32_t unkFE4; // FE4
820  float eyeHeight; // FF8
821  float greetTimer; // FFC
822  float encumberedTimer; // 1000
823  float powerAttackTimer; // 1004
824  std::int32_t hoursToSleep; // 1008
825  std::int32_t amountStolenSold; // 100C
826  std::uint32_t valueStolen; // 1010
828  ActorHandle lightTarget; // 1018
829  float sortActorDistanceTimer; // 101C
830  ObjectRefHandle playerMapMarker; // 1020 - Custom marker placed by player in map
831  std::uint32_t pad1024; // 1024
832  TeleportPath* playerMarkerPath; // 1028 - Educated guess from FO4
833  std::uint32_t skillTrainingsThisLevel; // 1030
834  std::uint32_t unk1034; // 1034
835  TESClass* defaultClass; // 1038
836  std::uint64_t unk1040; // 1040
837  std::uint32_t crimeCounts[PackageNS::CRIME_TYPES::kTotal]; // 1048
838  std::uint32_t unk964; // 1064
839  AlchemyItem* pendingPoison; // 1068
840  std::int64_t lastPlayingTimeUpdate; // 1070
841  std::int64_t totalPlayingTime; // 1078
842  std::int32_t characterSeed; // 1080
843  std::uint32_t unk984; // 1084
845  std::uint32_t unk990; // 1090
846  std::uint32_t unk994; // 1094
849  float dropAngleMod; // 10A8
850  float lastDropAngleMod; // 10AC
851  PlayerSkills* skills; // 10B0
852  ActorHandle autoAimActor; // 10B8
853  RefHandle unk9BC; // 10BC
854  std::uint64_t unk9C0; // 10C0
856  CombatGroup* combatGroup; // 10D0
858  TESForm* advanceObject; // 10F0 - Part of 11E8 and 11EC, the object advancing the skill (eg telekinesis spell for alteration skill)
859  TESBoundObject* lastOneHandItems[2]; // 10F8
860  std::uint32_t teammateCount; // 1108
861  float combatTimer; // 110C
862  float yieldTimer; // 1110
863  float chaseTimer; // 1114
864  float drawSheatheSafetyTimer; // 1118
865  std::uint32_t unk111C; // 111C
866  std::uint8_t unk1120[0xA0]; // 1120 - Unused?
867  std::uint32_t unkAC0; // 11C0
868  std::uint32_t unkAC4; // 11C4
869  BGSLocation* currentLocation; // 11C8
871  float telekinesisDistance; // 11D4
872  float commandTimer; // 11D8
873  float sunGazeTimer; // 11DC - Upon sungazing, counts down from 0.5 seconds. When 0, applies imagespace modifier
875  ActorValue advanceSkill; // 11E8 - advance values set, then cleared in PlayerSkills::ModSkillPoints surronding ApplyPerkEntry
876  std::uint32_t advanceAction; // 11EC - Part of 10F0 and 11E8
878  std::int32_t difficulty; // 11F4
880  std::int8_t murder; // 11FC
881  std::int8_t perkCount; // 11FD
883  std::uint8_t padB03; // 11FF
884  Crime* resistArrestCrime; // 1200
887  BGSTextureSet* complexion; // 1228
888  TESRace* charGenRace; // 1230
889  TESRace* race2; // 1238
890  std::uint64_t unk1240[0x11]; // 1240
891  PreTransformationData* preTransformationData; // 12C8 - Stores equipped data when transforming to vampire/werewolf, cleared when transforming back to human
892  PlayerFlags playerFlags; // 12D0
893 #endif
894 
895  private:
896  bool CenterOnCell_Impl(const char* a_cellName, RE::TESObjectCELL* a_cell);
897  };
898 
899 #ifndef SKYRIM_SUPPORT_AE
900 # ifndef SKYRIMVR
901  static_assert(sizeof(PlayerCharacter) == 0xBE0);
902 # else
903  static_assert(sizeof(PlayerCharacter) == 0x12D8);
904 # endif
905 #else
906  static_assert(sizeof(PlayerCharacter) == 0xBE8);
907 #endif
908 }
Definition: AlchemyItem.h:24
Definition: BGSLocation.h:68
Definition: BGSNote.h:19
Definition: BGSTextureSet.h:16
Definition: BSTList.h:10
Definition: BSAtomic.h:92
Definition: BSTArray.h:378
Definition: BSTEvent.h:143
Definition: BSTEvent.h:19
Definition: BSTHashMap.h:21
Definition: BSTSmartPointer.h:37
Definition: Character.h:8
Definition: CombatGroup.h:74
Definition: DialoguePackage.h:10
Definition: ImageSpaceModifierInstanceDOF.h:9
Definition: InventoryEntryData.h:15
Definition: MagicItem.h:30
Definition: NiPoint3.h:6
Definition: NiSmartPointer.h:9
Definition: PlayerCharacter.h:120
std::uint32_t pad44
Definition: PlayerCharacter.h:138
NiPoint3 angle
Definition: PlayerCharacter.h:128
TESObjectCELL * interior
Definition: PlayerCharacter.h:126
NiPoint3 location
Definition: PlayerCharacter.h:127
bool resetWeather
Definition: PlayerCharacter.h:134
bool isValid
Definition: PlayerCharacter.h:136
bool allowAutoSave
Definition: PlayerCharacter.h:135
RefHandle fastTravelMarker
Definition: PlayerCharacter.h:132
std::int64_t arrivalFuncData
Definition: PlayerCharacter.h:130
void(std::int64_t) ArrivalFunc_t
Definition: PlayerCharacter.h:122
TESWorldSpace * world
Definition: PlayerCharacter.h:125
RefHandle furnitureRef
Definition: PlayerCharacter.h:131
ArrivalFunc_t * arrivalFunc
Definition: PlayerCharacter.h:129
std::uint8_t pad43
Definition: PlayerCharacter.h:137
Definition: PlayerCharacter.h:190
BGSNote * unusedNote2
Definition: PlayerCharacter.h:500
PreTransformationData * preTransformationData
Definition: PlayerCharacter.h:647
BSTHashMap< const TESFaction *, CrimeGoldStruct > crimeGoldMap
Definition: PlayerCharacter.h:490
std::uint64_t unkB90
Definition: PlayerCharacter.h:644
BSSimpleList< TESQuestStageItem * > questLog
Definition: PlayerCharacter.h:509
BSTSmallArray< void *, 4 > unkBA0
Definition: PlayerCharacter.h:646
BSSimpleList< ObjectRefHandle > droppedRefList
Definition: PlayerCharacter.h:513
std::uint32_t unk984
Definition: PlayerCharacter.h:586
float grabDistance
Definition: PlayerCharacter.h:556
NiPointer< BSLight > thirdPersonLight
Definition: PlayerCharacter.h:591
TESBoundObject * lastOneHandItems[2]
Definition: PlayerCharacter.h:602
static bool IsGodMode()
std::uint32_t unk964
Definition: PlayerCharacter.h:581
BSTArray< PerkRankData * > addedPerks
Definition: PlayerCharacter.h:501
BSTHashMap< UnkKey, UnkValue > currentSayOnceInfosMap
Definition: PlayerCharacter.h:512
static PlayerCharacter * GetSingleton()
ObjectRefHandle commandWaitMarker
Definition: PlayerCharacter.h:492
TeleportPath * playerMarkerPath
Definition: PlayerCharacter.h:575
BSSoundHandle magicFailureSound
Definition: PlayerCharacter.h:520
NiPoint3 dynamicDOFLastAngle
Definition: PlayerCharacter.h:540
std::int32_t vampireFeedDetection
Definition: PlayerCharacter.h:547
BSTHashMap< const TESFaction *, FriendshipFactionsStruct > factionOwnerFriendsMap
Definition: PlayerCharacter.h:494
std::uint64_t unkB78
Definition: PlayerCharacter.h:640
NiPoint3 exteriorPosition
Definition: PlayerCharacter.h:516
NiPointer< NiAVObject > targeted3D
Definition: PlayerCharacter.h:598
std::uint32_t mapMarkerIterator
Definition: PlayerCharacter.h:548
QueuedWeapon queuedWeaponAttachs[WEAPON_TYPE::kTotal]
Definition: PlayerCharacter.h:546
std::uint32_t padB4C
Definition: PlayerCharacter.h:636
float unk8D4
Definition: PlayerCharacter.h:557
std::uint64_t unkB68
Definition: PlayerCharacter.h:638
std::int32_t hoursToSleep
Definition: PlayerCharacter.h:567
ActorHandle autoAimActor
Definition: PlayerCharacter.h:595
void AddEventSink(BSTEventSink< T > *a_sink)
Definition: PlayerCharacter.h:482
std::int32_t difficulty
Definition: PlayerCharacter.h:622
TESRace * charGenRace
Definition: PlayerCharacter.h:633
ActorHandle lastRiddenMount
Definition: PlayerCharacter.h:570
std::uint32_t unkB04
Definition: PlayerCharacter.h:628
ByCharGenFlag
Definition: PlayerCharacter.h:211
static constexpr auto RTTI
Definition: PlayerCharacter.h:192
std::uint32_t crimeCounts[PackageNS::CRIME_TYPES::kTotal]
Definition: PlayerCharacter.h:580
BSTHashMap< const TESFaction *, StolenItemValueStruct > stolenItemValueMap
Definition: PlayerCharacter.h:491
BSTEventSource< T > * GetEventSource()
Definition: PlayerCharacter.h:476
std::uint32_t valueStolen
Definition: PlayerCharacter.h:569
PLAYER_ACTION mostRecentAction
Definition: PlayerCharacter.h:551
std::int32_t jailSentence
Definition: PlayerCharacter.h:543
bool CenterOnCell(const char *a_cellName)
RefHandle unk9BC
Definition: PlayerCharacter.h:596
ActorHandle actorDoingPlayerCommand
Definition: PlayerCharacter.h:552
std::uint8_t unk6FD
Definition: PlayerCharacter.h:538
BSTArray< ObjectRefHandle > currentMapMarkers
Definition: PlayerCharacter.h:504
BSSpinLock questTargetsLock
Definition: PlayerCharacter.h:489
AITimeStamp warnToLeaveTimeStamp
Definition: PlayerCharacter.h:531
std::uint64_t unk8D8
Definition: PlayerCharacter.h:558
BSSoundHandle shoutFailureSound
Definition: PlayerCharacter.h:521
std::uint32_t GetNumTints(std::uint32_t a_tintType)
stl::enumeration< DEFAULT_OBJECT, std::int32_t > animationObjectAction
Definition: PlayerCharacter.h:620
ImageSpaceModifierInstanceDOF * vatsDOFInstance
Definition: PlayerCharacter.h:534
void AddPlayerAddItemEvent(TESObject *a_object, TESForm *a_owner, TESObjectREFR *a_container, AQUIRE_TYPE a_type)
std::uint32_t unkAC0
Definition: PlayerCharacter.h:610
NiPoint3 dynamicDOFLastPosition
Definition: PlayerCharacter.h:541
std::uint32_t pad6AC
Definition: PlayerCharacter.h:522
std::int32_t unkB88
Definition: PlayerCharacter.h:642
std::uint32_t pad6DC
Definition: PlayerCharacter.h:532
BSTHashMap< TESQuest *, BSTArray< TESQuestTarget * > * > questTargets
Definition: PlayerCharacter.h:511
std::uint32_t unk994
Definition: PlayerCharacter.h:589
std::uint32_t unk6B8
Definition: PlayerCharacter.h:524
TESForm * advanceObject
Definition: PlayerCharacter.h:601
NiPointer< Actor > GetActorDoingPlayerCommand() const
TintMask * GetTintMask(std::uint32_t a_tintType, std::uint32_t a_index)
std::uint64_t unk9C0
Definition: PlayerCharacter.h:597
bool AttemptPickpocket(TESObjectREFR *a_containerRef, InventoryEntryData *a_entry, std::int32_t a_number, bool a_fromContainer=true)
ActorHandle lightTarget
Definition: PlayerCharacter.h:571
std::uint64_t unk940
Definition: PlayerCharacter.h:579
TESWorldSpace * cachedWorldSpace
Definition: PlayerCharacter.h:515
NiPointer< TESObjectREFR > GetGrabbedRef()
virtual void ClearAllCrimeGold(TESFaction *a_faction)
std::int32_t characterSeed
Definition: PlayerCharacter.h:585
void RemoveWeapon(BIPED_OBJECT equipIndex) override
PlayerSkills * skills
Definition: PlayerCharacter.h:594
BSTArray< TintMask * > * overlayTintMasks
Definition: PlayerCharacter.h:631
BSTArray< ActorHandle > actorsToDisplayOnTheHUDArray
Definition: PlayerCharacter.h:600
std::uint32_t sleepSeconds
Definition: PlayerCharacter.h:560
std::int8_t murder
Definition: PlayerCharacter.h:624
ImageSpaceModifierInstanceDOF * ironsightsDOFInstance
Definition: PlayerCharacter.h:533
BSTArray< BGSInstancedQuestObjective > objectives
Definition: PlayerCharacter.h:510
BSSoundHandle unusedSound
Definition: PlayerCharacter.h:519
stl::enumeration< GrabbingType, std::uint32_t > grabType
Definition: PlayerCharacter.h:621
TESRace * race2
Definition: PlayerCharacter.h:634
std::uint32_t unk934
Definition: PlayerCharacter.h:577
AlchemyItem * pendingPoison
Definition: PlayerCharacter.h:582
DialoguePackage * aiConversationRunning
Definition: PlayerCharacter.h:526
std::uint32_t unk8E0
Definition: PlayerCharacter.h:559
TESClass * defaultClass
Definition: PlayerCharacter.h:578
RefHandle forceActivateRef
Definition: PlayerCharacter.h:549
TESForm * lastKnownGoodLocation
Definition: PlayerCharacter.h:587
BSTSmartPointer< BipedAnim > largeBiped
Definition: PlayerCharacter.h:561
float dropAngleMod
Definition: PlayerCharacter.h:592
NiPoint3 lastKnownGoodPosition
Definition: PlayerCharacter.h:495
void SetAIDriven(bool a_enable)
std::int32_t numberofPickpocketWarnings
Definition: PlayerCharacter.h:529
CombatGroup * combatGroup
Definition: PlayerCharacter.h:599
float pickPocketWarningTimer
Definition: PlayerCharacter.h:530
virtual std::uint32_t GetNonViolentCrimeGoldValue(const TESFaction *a_faction) const
bool CenterOnCell(TESObjectCELL *a_cell)
float yieldTimer
Definition: PlayerCharacter.h:605
BGSLocation * currentLocation
Definition: PlayerCharacter.h:612
float sortActorDistanceTimer
Definition: PlayerCharacter.h:572
NiTMap< std::uint32_t, std::uint8_t > randomDoorSpaceMap
Definition: PlayerCharacter.h:514
PlayerActionObject playerActionObjects[15]
Definition: PlayerCharacter.h:550
float sitHeadingDelta
Definition: PlayerCharacter.h:573
std::int64_t totalPlayingTime
Definition: PlayerCharacter.h:584
float grabObjectWeight
Definition: PlayerCharacter.h:555
float dynamicDOFFocusTime
Definition: PlayerCharacter.h:536
BSTArray< std::uint64_t > unkB50
Definition: PlayerCharacter.h:637
NiPoint3 cachedVelocity
Definition: PlayerCharacter.h:497
virtual void Unk_12A(void)
std::uint64_t unkB70
Definition: PlayerCharacter.h:639
TESFaction * currentPrisonFaction
Definition: PlayerCharacter.h:542
std::int8_t perkCount
Definition: PlayerCharacter.h:625
virtual void Unk_12E(void)
BSTArray< void * > imageSpaceModifierAnims1
Definition: PlayerCharacter.h:507
bool HasActorDoingCommand() const
NiPointer< BSLight > firstPersonLight
Definition: PlayerCharacter.h:590
float powerAttackTimer
Definition: PlayerCharacter.h:566
float GetDamage(InventoryEntryData *a_form)
float combatTimer
Definition: PlayerCharacter.h:604
std::int32_t unkB48
Definition: PlayerCharacter.h:635
std::uint32_t pad444
Definition: PlayerCharacter.h:493
BSTArray< ProjectileHandle > runesCast
Definition: PlayerCharacter.h:506
~PlayerCharacter() override
DialoguePackage * closestConversation
Definition: PlayerCharacter.h:523
void PlayPickupEvent(TESForm *a_item, TESForm *a_containerOwner, TESObjectREFR *a_containerRef, EventType a_eventType)
float encumberedTimer
Definition: PlayerCharacter.h:565
float lastDropAngleMod
Definition: PlayerCharacter.h:593
void SetEscaping(bool a_flag, bool a_escaped)
std::uint32_t teammateCount
Definition: PlayerCharacter.h:603
std::uint32_t pad49C
Definition: PlayerCharacter.h:498
std::uint32_t pad63C
Definition: PlayerCharacter.h:517
float stealWarningTimer
Definition: PlayerCharacter.h:528
std::uint8_t padB03
Definition: PlayerCharacter.h:627
TESImageSpaceModifier * sunGazeImageSpaceModifier
Definition: PlayerCharacter.h:617
void AddSkillExperience(ActorValue a_skill, float a_experience)
std::uint32_t unkAC4
Definition: PlayerCharacter.h:611
AITimeStamp cachedVelocityTimeStamp
Definition: PlayerCharacter.h:613
std::uint32_t padB8C
Definition: PlayerCharacter.h:643
virtual std::uint32_t GetViolentCrimeGoldValue(const TESFaction *a_faction) const
std::int32_t amountStolenSold
Definition: PlayerCharacter.h:568
ActorHandle assumedIdentity
Definition: PlayerCharacter.h:623
NiPoint3 bulletAutoAim
Definition: PlayerCharacter.h:496
ObjectRefHandle playerMapMarker
Definition: PlayerCharacter.h:574
float GetArmorValue(InventoryEntryData *a_form)
NiPointer< NiNode > firstPerson3D
Definition: PlayerCharacter.h:562
GrabbingType
Definition: PlayerCharacter.h:204
std::uint64_t unkB80
Definition: PlayerCharacter.h:641
static constexpr auto VTABLE
Definition: PlayerCharacter.h:193
ObjectRefHandle grabbedObject
Definition: PlayerCharacter.h:554
std::uint32_t skillTrainingsThisLevel
Definition: PlayerCharacter.h:576
bool IsGrabbing() const
float greetTimer
Definition: PlayerCharacter.h:564
float sunGazeTimer
Definition: PlayerCharacter.h:616
BSTArray< BSTTuple< NiPoint3, AITimeStamp > > velocityArray
Definition: PlayerCharacter.h:505
float commandTimer
Definition: PlayerCharacter.h:615
void PlayMagicFailureSound(MagicSystem::SpellType a_spellType)
std::uint8_t unkA20[0xA0]
Definition: PlayerCharacter.h:609
float drawSheatheSafetyTimer
Definition: PlayerCharacter.h:607
float chaseTimer
Definition: PlayerCharacter.h:606
std::uint32_t pad724
Definition: PlayerCharacter.h:544
BGSTextureSet * complexion
Definition: PlayerCharacter.h:632
ImageSpaceModifierInstanceDOF * dynamicDOFInstance
Definition: PlayerCharacter.h:535
BSTArray< void * > imageSpaceModifierAnims2
Definition: PlayerCharacter.h:508
ActorValue advanceSkill
Definition: PlayerCharacter.h:618
std::uint32_t advanceAction
Definition: PlayerCharacter.h:619
BSTArray< BGSPerk * > perks
Definition: PlayerCharacter.h:502
std::uint16_t unk6FE
Definition: PlayerCharacter.h:539
stl::enumeration< ByCharGenFlag, std::uint8_t > byCharGenFlag
Definition: PlayerCharacter.h:626
float telekinesisDistance
Definition: PlayerCharacter.h:614
bool dynamicDOFFocused
Definition: PlayerCharacter.h:537
InventoryEntryData * temperingItem
Definition: PlayerCharacter.h:645
std::uint32_t unkA1C
Definition: PlayerCharacter.h:608
bool CheckCast(MagicItem *a_spell, Effect *a_effect, MagicSystem::CannotCastReason &a_reason)
PLAYER_TARGET_LOC queuedTargetLoc
Definition: PlayerCharacter.h:518
Crime * resistArrestCrime
Definition: PlayerCharacter.h:629
std::int32_t numberofStealWarnings
Definition: PlayerCharacter.h:527
void * unk728
Definition: PlayerCharacter.h:545
BSTSmallArray< hkRefPtr< bhkMouseSpringAction >, 4 > grabSpring
Definition: PlayerCharacter.h:553
BGSNote * unusedNote
Definition: PlayerCharacter.h:499
BSTArray< TintMask * > tintMasks
Definition: PlayerCharacter.h:630
static constexpr auto FORMTYPE
Definition: PlayerCharacter.h:194
BSTArray< TintMask * > & GetTintList()
float eyeHeight
Definition: PlayerCharacter.h:563
EventType
Definition: PlayerCharacter.h:197
PlayerFlags playerFlags
Definition: PlayerCharacter.h:648
TintMask * GetOverlayTintMask(TintMask *a_original)
std::uint32_t unk6BC
Definition: PlayerCharacter.h:525
std::uint32_t unk990
Definition: PlayerCharacter.h:588
std::int64_t lastPlayingTimeUpdate
Definition: PlayerCharacter.h:583
std::int32_t GetItemCount(TESBoundObject *a_object)
BSTArray< BGSPerk * > standingStonePerks
Definition: PlayerCharacter.h:503
Definition: TESBoundObject.h:26
Definition: TESClass.h:88
Definition: TESFaction.h:120
Definition: TESForm.h:40
Definition: TESImageSpaceModifier.h:111
Definition: TESObjectCELL.h:119
Definition: TESObjectREFR.h:113
Definition: TESObjectWEAP.h:79
Definition: TESObject.h:11
Definition: TESRace.h:149
Definition: TESWorldSpace.h:120
SpellType
Definition: MagicSystem.h:64
CannotCastReason
Definition: MagicSystem.h:13
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_PlayerCharacter(static_cast< std::uint64_t >(686898))
ActorValue
Definition: ActorValues.h:6
PLAYER_ACTION
Definition: PlayerCharacter.h:62
AQUIRE_TYPE
Definition: BGSAddToPlayerInventoryEvent.h:11
VR_Bow_State
Definition: PlayerCharacter.h:84
@ kNone
Definition: PlayerCharacter.h:85
@ kNoAmmo
Definition: PlayerCharacter.h:86
@ kNone
@ kIdle
Definition: PlayerCharacter.h:87
@ kArrowKnocked
Definition: PlayerCharacter.h:88
constexpr std::array< REL::ID, 14 > VTABLE_PlayerCharacter
Definition: Offsets_VTABLE.h:12552
std::uint32_t RefHandle
Definition: BSCoreTypes.h:6
Definition: AITimeStamp.h:6
BIPED_OBJECT
Definition: BipedObjects.h:8
Definition: BSSoundHandle.h:10
Definition: PlayerCharacter.h:92
float nonViolentCur
Definition: PlayerCharacter.h:96
float violentInfamy
Definition: PlayerCharacter.h:98
float nonViolentInfamy
Definition: PlayerCharacter.h:97
float violentCur
Definition: PlayerCharacter.h:95
Definition: Crime.h:35
Definition: Effect.h:11
Definition: PlayerCharacter.h:112
std::uint16_t friendCounts[4]
Definition: PlayerCharacter.h:115
Definition: PlayerCharacter.h:159
RefHandle refObj
Definition: PlayerCharacter.h:163
float timer
Definition: PlayerCharacter.h:162
stl::enumeration< PLAYER_ACTION, std::uint32_t > next
Definition: PlayerCharacter.h:164
Definition: PlayerCharacter.h:236
bool everModded
Definition: PlayerCharacter.h:281
bool goToJailQueued
Definition: PlayerCharacter.h:276
bool unk1_4
Definition: PlayerCharacter.h:250
bool unk3_3
Definition: PlayerCharacter.h:265
bool unk2_0
Definition: PlayerCharacter.h:254
std::uint16_t pad6
Definition: PlayerCharacter.h:285
bool isSungazing
Definition: PlayerCharacter.h:279
bool travelUseDoor
Definition: PlayerCharacter.h:238
bool aiControlledFromPos
Definition: PlayerCharacter.h:256
bool aiControlledPackage
Definition: PlayerCharacter.h:257
bool unk1_0
Definition: PlayerCharacter.h:246
bool unk4_7
Definition: PlayerCharacter.h:277
bool unk1_1
Definition: PlayerCharacter.h:247
bool aiControlledToPos
Definition: PlayerCharacter.h:255
bool unk3_2
Definition: PlayerCharacter.h:264
bool unk0_4
Definition: PlayerCharacter.h:242
bool pad5_5
Definition: PlayerCharacter.h:284
bool unk1_3
Definition: PlayerCharacter.h:249
bool magickaTutorialShown
Definition: PlayerCharacter.h:274
bool escaping
Definition: PlayerCharacter.h:244
bool unk2_7
Definition: PlayerCharacter.h:261
bool isInThirdPersonMode
Definition: PlayerCharacter.h:262
bool unk4_2
Definition: PlayerCharacter.h:272
bool attemptedYieldInCurrentCombat
Definition: PlayerCharacter.h:268
bool greetingPlayer
Definition: PlayerCharacter.h:252
bool target3DDistant
Definition: PlayerCharacter.h:266
bool returnToLastKnownGoodPosition
Definition: PlayerCharacter.h:258
bool unk2_6
Definition: PlayerCharacter.h:260
bool shouldUpdateCrosshair
Definition: PlayerCharacter.h:271
bool unk3_1
Definition: PlayerCharacter.h:263
bool healthTutorialShown
Definition: PlayerCharacter.h:273
bool forceQuestTargetRepath
Definition: PlayerCharacter.h:245
bool fastTraveling
Definition: PlayerCharacter.h:239
bool unk1_5
Definition: PlayerCharacter.h:251
bool sleeping
Definition: PlayerCharacter.h:248
bool overAutoAimTarget
Definition: PlayerCharacter.h:240
bool isInCombat
Definition: PlayerCharacter.h:267
bool showQuestItems
Definition: PlayerCharacter.h:241
bool servingJailTime
Definition: PlayerCharacter.h:282
bool isLoading
Definition: PlayerCharacter.h:270
bool isSprinting
Definition: PlayerCharacter.h:278
bool unk3_7
Definition: PlayerCharacter.h:269
bool unk1_7
Definition: PlayerCharacter.h:253
bool hasQueuedEquipAnim
Definition: PlayerCharacter.h:243
bool isBeingChased
Definition: PlayerCharacter.h:259
bool dragonRideTargetLocked
Definition: PlayerCharacter.h:280
bool staminaTutorialShown
Definition: PlayerCharacter.h:275
float level
Definition: PlayerCharacter.h:400
float levelThreshold
Definition: PlayerCharacter.h:402
float xp
Definition: PlayerCharacter.h:401
Definition: PlayerCharacter.h:370
Skill
Definition: PlayerCharacter.h:372
@ kIllusion
Definition: PlayerCharacter.h:388
@ kAlchemy
Definition: PlayerCharacter.h:383
@ kSneak
Definition: PlayerCharacter.h:382
@ kEnchanting
Definition: PlayerCharacter.h:390
@ kLightArmor
Definition: PlayerCharacter.h:379
@ kArchery
Definition: PlayerCharacter.h:375
@ kSmithing
Definition: PlayerCharacter.h:377
@ kDestruction
Definition: PlayerCharacter.h:387
@ kPickpocket
Definition: PlayerCharacter.h:380
@ kLockpicking
Definition: PlayerCharacter.h:381
@ kTwoHanded
Definition: PlayerCharacter.h:374
@ kOneHanded
Definition: PlayerCharacter.h:373
@ kRestoration
Definition: PlayerCharacter.h:389
@ kConjuration
Definition: PlayerCharacter.h:386
@ kTotal
Definition: PlayerCharacter.h:391
@ kAlteration
Definition: PlayerCharacter.h:385
@ kBlock
Definition: PlayerCharacter.h:376
@ kSpeech
Definition: PlayerCharacter.h:384
@ kHeavyArmor
Definition: PlayerCharacter.h:378
Definition: PlayerCharacter.h:367
SkillData skills[Skill::kTotal]
Definition: PlayerCharacter.h:409
float xp
Definition: PlayerCharacter.h:404
float levelThreshold
Definition: PlayerCharacter.h:408
std::uint32_t legendaryLevels[Skill::kTotal]
Definition: PlayerCharacter.h:410
Definition: PlayerCharacter.h:364
Data * data
Definition: PlayerCharacter.h:417
void AdvanceLevel(bool a_addThreshold)
Definition: PlayerCharacter.h:353
TESBoundObject * storedLastOneHandItems[2]
Definition: PlayerCharacter.h:359
MagicItem * storedSelectedSpells[4]
Definition: PlayerCharacter.h:356
TESRace * storedRace
Definition: PlayerCharacter.h:357
TESForm * storedSelectedPower
Definition: PlayerCharacter.h:358
Definition: PlayerCharacter.h:311
TESObjectWEAP * rightHandWeapon
Definition: PlayerCharacter.h:314
TESObjectWEAP * leftHandWeapon
Definition: PlayerCharacter.h:315
Definition: PlayerCharacter.h:323
TESWorldSpace * worldspace
Definition: PlayerCharacter.h:328
char pad01[7]
Definition: PlayerCharacter.h:327
bool unk00
Definition: PlayerCharacter.h:326
TESObjectCELL * interiorCell
Definition: PlayerCharacter.h:329
Definition: PlayerCharacter.h:334
std::uint64_t unk10
Definition: PlayerCharacter.h:339
std::uint64_t unk08
Definition: PlayerCharacter.h:338
RE::TESObjectREFR * unk00
Definition: PlayerCharacter.h:337
Definition: PlayerCharacter.h:320
BSTArray< Unk00Data > unk00
Definition: PlayerCharacter.h:341
std::uint64_t unk38
Definition: PlayerCharacter.h:347
BSTArray< Unk18Data > unk18
Definition: PlayerCharacter.h:345
std::uint64_t unk30
Definition: PlayerCharacter.h:346
std::uint64_t unk40
Definition: PlayerCharacter.h:348
Definition: PlayerCharacter.h:218
GrabbingType grabType
Definition: PlayerCharacter.h:224
BSTSmallArray< hkRefPtr< bhkMouseSpringAction >, 4 > grabSpring
Definition: PlayerCharacter.h:221
float grabObjectWeight
Definition: PlayerCharacter.h:223
std::uint32_t unk60
Definition: PlayerCharacter.h:230
float grabDistance
Definition: PlayerCharacter.h:225
std::double_t unk50
Definition: PlayerCharacter.h:228
std::double_t unk40
Definition: PlayerCharacter.h:226
std::uint64_t unk48
Definition: PlayerCharacter.h:227
std::uint64_t unk58
Definition: PlayerCharacter.h:229
std::uint32_t unk64Flags
Definition: PlayerCharacter.h:231
ObjectRefHandle grabbedObject
Definition: PlayerCharacter.h:222
Definition: PlayerCharacter.h:103
std::int32_t unwitnessed
Definition: PlayerCharacter.h:106
std::int32_t witnessed
Definition: PlayerCharacter.h:107
VR_DEVICE
Definition: CrosshairPickData.h:15