CommonLibVR
Loading...
Searching...
No Matches
PlayerCharacter.h
Go to the documentation of this file.
1#pragma once
2
6#include "RE/B/BSTArray.h"
7#include "RE/B/BSTEvent.h"
8#include "RE/B/BSTHashMap.h"
9#include "RE/B/BSTList.h"
11#include "RE/B/BSTTuple.h"
12#include "RE/C/Character.h"
13#include "RE/C/Crime.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
24namespace 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
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,
208 };
209
210 enum class ByCharGenFlag
211 {
212 kNone = 0,
213 kDisableSaving = 1 << 0,
214 kHandsBound = 1 << 2
215 };
216
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
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
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:
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
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
361 static_assert(sizeof(PreTransformationData) == 0x40);
362
364 {
365 public:
366 struct Data
367 {
368 public:
395
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
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
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
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
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
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
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
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)
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
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 EnumSet.h:9
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 NiTMap.h:10
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
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
TintMask * GetOverlayTintMask(TintMask *a_original)
std::uint32_t crimeCounts[PackageNS::CRIME_TYPES::kTotal]
Definition PlayerCharacter.h:580
BSTHashMap< const TESFaction *, StolenItemValueStruct > stolenItemValueMap
Definition PlayerCharacter.h:491
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)
NiPointer< TESObjectREFR > GetGrabbedRef()
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)
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
REX::EnumSet< ByCharGenFlag, std::uint8_t > byCharGenFlag
Definition PlayerCharacter.h:626
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
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
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
NiPointer< Actor > GetActorDoingPlayerCommand() const
REX::EnumSet< DEFAULT_OBJECT, std::int32_t > animationObjectAction
Definition PlayerCharacter.h:620
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
BSTArray< TintMask * > & GetTintList()
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)
TintMask * GetTintMask(std::uint32_t a_tintType, std::uint32_t a_index)
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
REX::EnumSet< GrabbingType, std::uint32_t > grabType
Definition PlayerCharacter.h:621
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
static PlayerCharacter * GetSingleton()
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
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
BSTEventSource< T > * GetEventSource()
Definition PlayerCharacter.h:476
BGSNote * unusedNote
Definition PlayerCharacter.h:499
BSTArray< TintMask * > tintMasks
Definition PlayerCharacter.h:630
static constexpr auto FORMTYPE
Definition PlayerCharacter.h:194
float eyeHeight
Definition PlayerCharacter.h:563
EventType
Definition PlayerCharacter.h:197
PlayerFlags playerFlags
Definition PlayerCharacter.h:648
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:114
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
@ 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
REX::EnumSet< PLAYER_ACTION, std::uint32_t > next
Definition PlayerCharacter.h:164
RefHandle refObj
Definition PlayerCharacter.h:163
float timer
Definition PlayerCharacter.h:162
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:407
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:344
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