CommonLibSSE (powerof3)
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/F/FormTypes.h"
15 #include "RE/H/hkRefPtr.h"
16 #include "RE/N/NiPoint3.h"
17 #include "RE/N/NiSmartPointer.h"
18 #include "RE/N/NiTMap.h"
20 #include "RE/T/TESObjectWEAP.h"
21 #include "RE/T/TESQuest.h"
22 
23 namespace RE
24 {
25  enum class AQUIRE_TYPE;
26 
27  class Actor;
28  class BGSInstancedQuestObjective;
29  class BGSLocation;
30  class bhkMouseSpringAction;
31  class BipedAnim;
32  class BSFadeNode;
33  class BSLight;
34  class CombatGroup;
35  class ImageSpaceModifierInstanceDOF;
36  class InventoryEntryData;
37  class MenuModeChangeEvent;
38  class MenuOpenCloseEvent;
39  class NiAVObject;
40  class NiNode;
41  class ObjectListItem;
42  class TESObject;
43  class TESObjectREFR;
44  class TintMask;
45  class UserEventEnabledEvent;
46  struct BGSActorCellEvent;
47  struct BGSActorDeathEvent;
48  struct PerkRankData;
49  struct PositionPlayerEvent;
50  struct TESQuestStageItem;
51  struct TESTrackedStatsEvent;
52 
53  enum class PLAYER_ACTION
54  {
55  kNone = 0,
58  kShootBow,
60  kJumping,
68  kShout,
70 
71  kTotal,
73  };
74 
76  {
77  public:
78  // members
79  float violentCur; // 00
80  float nonViolentCur; // 04
81  float nonViolentInfamy; // 08
82  float violentInfamy; // 0C
83  };
84  static_assert(sizeof(CrimeGoldStruct) == 0x10);
85 
87  {
88  public:
89  // members
90  std::int32_t unwitnessed; // 0
91  std::int32_t witnessed; // 4
92  };
93  static_assert(sizeof(StolenItemValueStruct) == 0x8);
94 
96  {
97  public:
98  // members
99  std::uint16_t friendCounts[4]; // 0
100  };
101  static_assert(sizeof(FriendshipFactionsStruct) == 0x8);
102 
104  {
105  public:
106  using ArrivalFunc_t = void(std::int64_t);
107 
108  // members
114  std::int64_t arrivalFuncData; // 30
117  bool resetWeather; // 40
118  bool allowAutoSave; // 41
119  bool isValid; // 42
120  std::uint8_t pad43; // 43
121  std::uint32_t pad44; // 44
122  };
123  static_assert(sizeof(PLAYER_TARGET_LOC) == 0x48);
124 
126  {
127  public:
128  // members
129  float timer; // 0
132  };
133  static_assert(sizeof(PlayerActionObject) == 0xC);
134 
136  public Character, // 000
137  public BSTEventSource<BGSActorCellEvent>, // 2D0
138  public BSTEventSource<BGSActorDeathEvent>, // 328
139  public BSTEventSource<PositionPlayerEvent>, // 380
140  public BSTEventSink<MenuOpenCloseEvent>, // 2B0
141  public BSTEventSink<MenuModeChangeEvent>, // 2B8
142  public BSTEventSink<UserEventEnabledEvent>, // 2C0
143  public BSTEventSink<TESTrackedStatsEvent> // 2C8
144  {
145  public:
146  inline static constexpr auto RTTI = RTTI_PlayerCharacter;
147  inline static constexpr auto VTABLE = VTABLE_PlayerCharacter;
148  inline static constexpr auto FORMTYPE = FormType::ActorCharacter;
149 
150  enum class EventType
151  {
152  kThief = 3,
153  kContainer = 5,
154  kDeadBody = 6
155  };
156 
157  enum class GrabbingType
158  {
159  kNone = 0,
160  kNormal,
161  kTelekinesis,
162  };
163 
164  enum class ByCharGenFlag
165  {
166  kNone = 0,
167  kDisableSaving = 1 << 0,
168  kHandsBound = 1 << 2
169  };
170 
171  struct PlayerFlags
172  {
173  // members
174  bool travelUseDoor: 1; // 0:0 - Guess from FO4 given matching logic for Character::WarpFollowers
175  bool fastTraveling: 1; // 0:1 - Set and cleared in the same fast travel function
176  bool overAutoAimTarget: 1; // 0:2 - Crosshair over hostile actor AND equipped WEAPON_TYPE bow, staff, or crossbow, must have weapon out to be accurate
177  bool showQuestItems: 1; // 0:3 - Not used by game, confirmed with console command `SetShowQuestItems`
178  bool unk0_4: 1; // 0:4 - Unused?
179  bool hasQueuedEquipAnim: 1; // 0:5 - Set true in `OnItemEquipped` if a_playAnim && isPaused, false once out of menu
180  bool escaping: 1; // 0:6 - Is Escaping from jail
181  bool forceQuestTargetRepath: 1; // 0:7 - Updates quest target in compass
182  bool unk1_0: 1; // 1:0
183  bool unk1_1: 1; // 1:1
184  bool sleeping: 1; // 1:2
185  bool unk1_3: 1; // 1:3
186  bool unk1_4: 1; // 1:4
187  bool unk1_5: 1; // 1:5
188  bool greetingPlayer: 1; // 1:6 - NPC greeting player
189  bool unk1_7: 1; // 1:7
190  bool unk2_0: 1; // 2:0
191  bool aiControlledToPos: 1; // 2:1 - Guess from FO4, confirmed aiControlled related
192  bool aiControlledFromPos: 1; // 2:2 - Guess from FO4, confirmed aiControlled related
193  bool aiControlledPackage: 1; // 2:3 - Guess from FO4, confirmed aiControlled related
194  bool returnToLastKnownGoodPosition: 1; // 2:4 - return to lastKnownGoodPosition on next Update
195  bool isBeingChased: 1; // 2:5 - unused along with chaseTimer
196  bool unk2_6: 1; // 2:6
197  bool unk2_7: 1; // 2:7
198  bool isInThirdPersonMode: 1; // 3:0
199  bool unk3_1: 1; // 3:1
200  bool unk3_2: 1; // 3:2
201  bool unk3_3: 1; // 3:3
202  bool target3DDistant: 1; // 3:4 - Distance from object in crosshair > 1000
203  bool isInCombat: 1; // 3:5
204  bool attemptedYieldInCurrentCombat: 1; // 3:6 - Set when yielding to guard for arrest dialogue, prevents multiple arrest dialogues
205  bool unk3_7: 1; // 3:7
206  bool isLoading: 1; // 4:0 - Is player loading a new area
207  bool shouldUpdateCrosshair: 1; // 4:1 - If forced off without letting Skyrim update this, crosshair UI won't update,
208  bool unk4_2: 1; // 4:2
209  bool healthTutorialShown: 1; // 4:3
210  bool magickaTutorialShown: 1; // 4:4
211  bool staminaTutorialShown: 1; // 4:5
212  bool goToJailQueued: 1; // 4:6 - Briefly set
213  bool unk4_7: 1; // 4:7
214  bool isSprinting: 1; // 5:0
215  bool isSungazing: 1; // 5:1 - Is staring at the sun
216  bool dragonRideTargetLocked: 1; // 5:2
217  bool everModded: 1; // 5:3
218  bool servingJailTime: 1; // 5:4 - Briefly set
219  bool pad5_5: 3; // 5:5
220  std::uint16_t pad6; // 6
221  };
222  static_assert(sizeof(PlayerFlags) == 0x8);
223 
225  {
226  public:
227  // members
230  };
231  static_assert(sizeof(QueuedWeapon) == 0x10);
232 
233  struct TeleportPath // TODO: Should not be in Player class. Gets used in Pathing and other non-player areas
234  {
235  public:
236  struct Unk00Data
237  {
238  public:
239  // members
240  bool unk00; // 00 - Determines whether to use worldspace or cell?
241  char pad01[7]; // 01
244  };
245  static_assert(sizeof(Unk00Data) == 0x18);
246 
247  struct Unk18Data
248  {
249  public:
250  // members
252  std::uint64_t unk08; // 08
253  std::uint64_t unk10; // 10
254  };
255  static_assert(sizeof(Unk18Data) == 0x18);
256 
257  // members
260  std::uint64_t unk30; // 30
261  std::uint64_t unk38; // 38
262  std::uint64_t unk40; // 40
263  };
264  static_assert(sizeof(TeleportPath) == 0x48);
265 
267  {
268  public:
269  // members
274  };
275  static_assert(sizeof(PreTransformationData) == 0x40);
276 
278  {
279  public:
280  struct Data
281  {
282  public:
283  struct Skills
284  {
285  enum Skill : std::uint32_t
286  {
289  kArchery = 2,
290  kBlock = 3,
296  kSneak = 9,
297  kAlchemy = 10,
298  kSpeech = 11,
302  kIllusion = 15,
305  kTotal
306  };
307  };
309 
310  struct SkillData
311  {
312  public:
313  // members
314  float level; // 0
315  float xp; // 4
316  float levelThreshold; // 8
317  };
318  static_assert(sizeof(SkillData) == 0xC);
319 
320  // members
321  float xp; // 000
322  float levelThreshold; // 004
323  SkillData skills[Skill::kTotal]; // 008
324  std::uint32_t legendaryLevels[Skill::kTotal]; // 0E0
325  };
326  static_assert(sizeof(Data) == 0x128);
327 
328  void AdvanceLevel(bool a_addThreshold);
329 
330  // members
331  Data* data; // 0
332  };
333  static_assert(sizeof(PlayerSkills) == 0x8);
334 
335  ~PlayerCharacter() override; // 000
336 
337  // override
338  void RemoveWeapon(BIPED_OBJECT equipIndex) override; // 082
339 
340  // add
341  virtual void Unk_12A(void); // 12A
342  virtual std::uint32_t GetViolentCrimeGoldValue(const TESFaction* a_faction) const; // 12B
343  virtual std::uint32_t GetNonViolentCrimeGoldValue(const TESFaction* a_faction) const; // 12C
344  virtual void ClearAllCrimeGold(TESFaction* a_faction); // 12D
345  virtual void Unk_12E(void); // 12E - { return 0; }
346 
348  static bool IsGodMode();
349 
351  void AddPlayerAddItemEvent(TESObject* a_object, TESForm* a_owner, TESObjectREFR* a_container, AQUIRE_TYPE a_type);
352  void AddSkillExperience(ActorValue a_skill, float a_experience);
353  bool AttemptPickpocket(TESObjectREFR* a_containerRef, InventoryEntryData* a_entry, std::int32_t a_number, bool a_fromContainer = true);
354  bool CenterOnCell(const char* a_cellName);
356  bool CheckCast(MagicItem* a_spell, Effect* a_effect, MagicSystem::CannotCastReason& a_reason);
363  std::int32_t GetItemCount(TESBoundObject* a_object);
364  std::uint32_t GetNumTints(std::uint32_t a_tintType);
365  TintMask* GetOverlayTintMask(TintMask* a_original);
367  TintMask* GetTintMask(std::uint32_t a_tintType, std::uint32_t a_index);
368  bool HasActorDoingCommand() const;
369  bool IsGrabbing() const;
371  void PlayPickupEvent(TESForm* a_item, TESForm* a_containerOwner, TESObjectREFR* a_containerRef, EventType a_eventType);
372  void SetAIDriven(bool a_enable);
373  void SetEscaping(bool a_flag, bool a_escaped);
376 
377  template <class T>
379  {
380  return static_cast<BSTEventSource<T>*>(this);
381  }
382 
383  template <class T>
384  inline void AddEventSink(BSTEventSink<T>* a_sink)
385  {
386  GetEventSource<T>()->AddEventSink(a_sink);
387  }
388 
389  // members
390  mutable BSSpinLock questTargetsLock; // 3D8
394  std::uint32_t pad444; // 444
399  std::uint32_t pad49C; // 49C
400  BGSNote* unusedNote; // 4A0 - Used for unimplemented formtype BGSNote
401  BGSNote* unusedNote2; // 4A8 - Used for unimplemented formtype BGSNote
418  std::uint32_t pad63C; // 63C
420  BSSoundHandle unusedSound; // 688 - Only place it is set is an unused function
423  std::uint32_t pad6AC; // 6AC
425  std::uint32_t unk6B8; // 6B8
426  std::uint32_t unk6BC; // 6BC
428  std::int32_t numberofStealWarnings; // 6C8
429  float stealWarningTimer; // 6CC
430  std::int32_t numberofPickpocketWarnings; // 6D0
433  std::uint32_t pad6DC; // 6DC
437  float dynamicDOFFocusTime; // 6F8
438  bool dynamicDOFFocused; // 6FC
439  std::uint8_t unk6FD; // 6FD
440  std::uint16_t unk6FE; // 6FE
444  std::int32_t jailSentence; // 720
445  std::uint32_t pad724; // 724
446  void* unk728; // 728 - smart ptr
447  QueuedWeapon queuedWeaponAttachs[WEAPON_TYPE::kTotal]; // 730 - Weapons are attached on next PlayerCharacter::Update
448  std::int32_t vampireFeedDetection; // 7D0
449  std::uint32_t mapMarkerIterator; // 7D4
456  float grabObjectWeight; // 8CC
457  float grabDistance; // 8D0
458  float unk8D4; // 8D4
459  std::uint64_t unk8D8; // 8D8
460  std::uint32_t unk8E0; // 8E0 - Unused?
461  std::uint32_t sleepSeconds; // 8E4
464  float eyeHeight; // 8F8
465  float greetTimer; // 8FC
466  float encumberedTimer; // 900
467  float powerAttackTimer; // 904
468  std::int32_t hoursToSleep; // 908
469  std::int32_t amountStolenSold; // 90C
470  std::uint32_t valueStolen; // 910
474  float sitHeadingDelta; // 920
475  ObjectRefHandle playerMapMarker; // 924 - Custom marker placed by player in map
476  TeleportPath* playerMarkerPath; // 928 - Educated guess from FO4
477  std::uint32_t skillTrainingsThisLevel; // 930
478  std::uint32_t unk934; // 934
480  std::uint64_t unk940; // 940 - Unused?
481  std::uint32_t crimeCounts[PackageNS::CRIME_TYPES::kTotal]; // 948
482  std::uint32_t unk964; // 964
484  std::int64_t lastPlayingTimeUpdate; // 970
485  std::int64_t totalPlayingTime; // 978
486  std::int32_t characterSeed; // 980
487  std::uint32_t unk984; // 984
489  std::uint32_t unk990; // 990
490  std::uint32_t unk994; // 994
493  float dropAngleMod; // 9A8
494  float lastDropAngleMod; // 9AC
498  std::uint64_t unk9C0; // 9C0
502  TESForm* advanceObject; // 9F0 - Part of AE8 and AEC, the object advancing the skill (eg telekinesis spell for alteration skill)
504  std::uint32_t teammateCount; // A08
505  float combatTimer; // A0C
506  float yieldTimer; // A10
507  float chaseTimer; // A14
509  std::uint32_t unkA1C; // A1C
510  std::uint8_t unkA20[0xA0]; // A20 - Unused?
511  std::uint32_t unkAC0; // AC0
512  std::uint32_t unkAC4; // AC4
515  float telekinesisDistance; // AD4
516  float commandTimer; // AD8
517  float sunGazeTimer; // ADC - Upon sungazing, counts down from 0.5 seconds. When 0, applies imagespace modifier
519  ActorValue advanceSkill; // AE8 - advance values set, then cleared in PlayerSkills::ModSkillPoints surronding ApplyPerkEntry
520  std::uint32_t advanceAction; // AEC - Part of AE8 and 9F0
523  std::int32_t difficulty; // AF8
525  std::int8_t murder; // B00
526  std::int8_t perkCount; // B01
528  std::uint8_t padB03; // B03
529  std::uint32_t unkB04; // B04
535  TESRace* race2; // B40
536  std::int32_t unkB48; // B48
537  std::uint32_t padB4C; // B4C
539  std::uint64_t unkB68; // B68
540  std::uint64_t unkB70; // B70
541  std::uint64_t unkB78; // B78
542  std::uint64_t unkB80; // B80
543  std::int32_t unkB88; // B88
544  std::uint32_t padB8C; // B8C
545  std::uint64_t unkB90; // B90
548  PreTransformationData* preTransformationData; // BD0 - Stores equipped data when transforming to vampire/werewolf, cleared when transforming back to human
550 
551  private:
552  bool CenterOnCell_Impl(const char* a_cellName, RE::TESObjectCELL* a_cell);
553  };
554 #ifndef SKYRIM_SUPPORT_AE
555  static_assert(sizeof(PlayerCharacter) == 0xBE0);
556 #else
557  static_assert(sizeof(PlayerCharacter) == 0xBE8);
558 #endif
559 }
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:70
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:104
std::uint32_t pad44
Definition: PlayerCharacter.h:121
NiPoint3 angle
Definition: PlayerCharacter.h:112
TESObjectCELL * interior
Definition: PlayerCharacter.h:110
NiPoint3 location
Definition: PlayerCharacter.h:111
bool resetWeather
Definition: PlayerCharacter.h:117
bool isValid
Definition: PlayerCharacter.h:119
bool allowAutoSave
Definition: PlayerCharacter.h:118
RefHandle fastTravelMarker
Definition: PlayerCharacter.h:116
std::int64_t arrivalFuncData
Definition: PlayerCharacter.h:114
void(std::int64_t) ArrivalFunc_t
Definition: PlayerCharacter.h:106
TESWorldSpace * world
Definition: PlayerCharacter.h:109
RefHandle furnitureRef
Definition: PlayerCharacter.h:115
ArrivalFunc_t * arrivalFunc
Definition: PlayerCharacter.h:113
std::uint8_t pad43
Definition: PlayerCharacter.h:120
Definition: PlayerCharacter.h:144
BGSNote * unusedNote2
Definition: PlayerCharacter.h:401
PreTransformationData * preTransformationData
Definition: PlayerCharacter.h:548
BSTHashMap< const TESFaction *, CrimeGoldStruct > crimeGoldMap
Definition: PlayerCharacter.h:391
std::uint64_t unkB90
Definition: PlayerCharacter.h:545
BSSimpleList< TESQuestStageItem * > questLog
Definition: PlayerCharacter.h:410
BSTSmallArray< void *, 4 > unkBA0
Definition: PlayerCharacter.h:547
BSSimpleList< ObjectRefHandle > droppedRefList
Definition: PlayerCharacter.h:414
std::uint32_t unk984
Definition: PlayerCharacter.h:487
float grabDistance
Definition: PlayerCharacter.h:457
NiPointer< BSLight > thirdPersonLight
Definition: PlayerCharacter.h:492
TESBoundObject * lastOneHandItems[2]
Definition: PlayerCharacter.h:503
static bool IsGodMode()
std::uint32_t unk964
Definition: PlayerCharacter.h:482
BSTArray< PerkRankData * > addedPerks
Definition: PlayerCharacter.h:402
BSTHashMap< UnkKey, UnkValue > currentSayOnceInfosMap
Definition: PlayerCharacter.h:413
static PlayerCharacter * GetSingleton()
ObjectRefHandle commandWaitMarker
Definition: PlayerCharacter.h:393
TeleportPath * playerMarkerPath
Definition: PlayerCharacter.h:476
BSSoundHandle magicFailureSound
Definition: PlayerCharacter.h:421
NiPoint3 dynamicDOFLastAngle
Definition: PlayerCharacter.h:441
std::int32_t vampireFeedDetection
Definition: PlayerCharacter.h:448
BSTHashMap< const TESFaction *, FriendshipFactionsStruct > factionOwnerFriendsMap
Definition: PlayerCharacter.h:395
std::uint64_t unkB78
Definition: PlayerCharacter.h:541
NiPoint3 exteriorPosition
Definition: PlayerCharacter.h:417
NiPointer< NiAVObject > targeted3D
Definition: PlayerCharacter.h:499
std::uint32_t mapMarkerIterator
Definition: PlayerCharacter.h:449
QueuedWeapon queuedWeaponAttachs[WEAPON_TYPE::kTotal]
Definition: PlayerCharacter.h:447
std::uint32_t padB4C
Definition: PlayerCharacter.h:537
float unk8D4
Definition: PlayerCharacter.h:458
std::uint64_t unkB68
Definition: PlayerCharacter.h:539
std::int32_t hoursToSleep
Definition: PlayerCharacter.h:468
ActorHandle autoAimActor
Definition: PlayerCharacter.h:496
void AddEventSink(BSTEventSink< T > *a_sink)
Definition: PlayerCharacter.h:384
std::int32_t difficulty
Definition: PlayerCharacter.h:523
TESRace * charGenRace
Definition: PlayerCharacter.h:534
ActorHandle lastRiddenMount
Definition: PlayerCharacter.h:471
std::uint32_t unkB04
Definition: PlayerCharacter.h:529
ByCharGenFlag
Definition: PlayerCharacter.h:165
static constexpr auto RTTI
Definition: PlayerCharacter.h:146
std::uint32_t crimeCounts[PackageNS::CRIME_TYPES::kTotal]
Definition: PlayerCharacter.h:481
BSTHashMap< const TESFaction *, StolenItemValueStruct > stolenItemValueMap
Definition: PlayerCharacter.h:392
BSTEventSource< T > * GetEventSource()
Definition: PlayerCharacter.h:378
std::uint32_t valueStolen
Definition: PlayerCharacter.h:470
PLAYER_ACTION mostRecentAction
Definition: PlayerCharacter.h:452
std::int32_t jailSentence
Definition: PlayerCharacter.h:444
bool CenterOnCell(const char *a_cellName)
RefHandle unk9BC
Definition: PlayerCharacter.h:497
ActorHandle actorDoingPlayerCommand
Definition: PlayerCharacter.h:453
std::uint8_t unk6FD
Definition: PlayerCharacter.h:439
BSTArray< ObjectRefHandle > currentMapMarkers
Definition: PlayerCharacter.h:405
BSSpinLock questTargetsLock
Definition: PlayerCharacter.h:390
AITimeStamp warnToLeaveTimeStamp
Definition: PlayerCharacter.h:432
std::uint64_t unk8D8
Definition: PlayerCharacter.h:459
BSSoundHandle shoutFailureSound
Definition: PlayerCharacter.h:422
std::uint32_t GetNumTints(std::uint32_t a_tintType)
ImageSpaceModifierInstanceDOF * vatsDOFInstance
Definition: PlayerCharacter.h:435
void AddPlayerAddItemEvent(TESObject *a_object, TESForm *a_owner, TESObjectREFR *a_container, AQUIRE_TYPE a_type)
std::uint32_t unkAC0
Definition: PlayerCharacter.h:511
NiPoint3 dynamicDOFLastPosition
Definition: PlayerCharacter.h:442
std::uint32_t pad6AC
Definition: PlayerCharacter.h:423
std::int32_t unkB88
Definition: PlayerCharacter.h:543
std::uint32_t pad6DC
Definition: PlayerCharacter.h:433
BSTHashMap< TESQuest *, BSTArray< TESQuestTarget * > * > questTargets
Definition: PlayerCharacter.h:412
std::uint32_t unk994
Definition: PlayerCharacter.h:490
std::uint32_t unk6B8
Definition: PlayerCharacter.h:425
TESForm * advanceObject
Definition: PlayerCharacter.h:502
NiPointer< Actor > GetActorDoingPlayerCommand() const
REX::EnumSet< ByCharGenFlag, std::uint8_t > byCharGenFlag
Definition: PlayerCharacter.h:527
TintMask * GetTintMask(std::uint32_t a_tintType, std::uint32_t a_index)
std::uint64_t unk9C0
Definition: PlayerCharacter.h:498
bool AttemptPickpocket(TESObjectREFR *a_containerRef, InventoryEntryData *a_entry, std::int32_t a_number, bool a_fromContainer=true)
ActorHandle lightTarget
Definition: PlayerCharacter.h:472
std::uint64_t unk940
Definition: PlayerCharacter.h:480
TESWorldSpace * cachedWorldSpace
Definition: PlayerCharacter.h:416
NiPointer< TESObjectREFR > GetGrabbedRef()
virtual void ClearAllCrimeGold(TESFaction *a_faction)
std::int32_t characterSeed
Definition: PlayerCharacter.h:486
void RemoveWeapon(BIPED_OBJECT equipIndex) override
PlayerSkills * skills
Definition: PlayerCharacter.h:495
BSTArray< TintMask * > * overlayTintMasks
Definition: PlayerCharacter.h:532
BSTArray< ActorHandle > actorsToDisplayOnTheHUDArray
Definition: PlayerCharacter.h:501
std::uint32_t sleepSeconds
Definition: PlayerCharacter.h:461
std::int8_t murder
Definition: PlayerCharacter.h:525
ImageSpaceModifierInstanceDOF * ironsightsDOFInstance
Definition: PlayerCharacter.h:434
BSTArray< BGSInstancedQuestObjective > objectives
Definition: PlayerCharacter.h:411
BSSoundHandle unusedSound
Definition: PlayerCharacter.h:420
TESRace * race2
Definition: PlayerCharacter.h:535
std::uint32_t unk934
Definition: PlayerCharacter.h:478
AlchemyItem * pendingPoison
Definition: PlayerCharacter.h:483
DialoguePackage * aiConversationRunning
Definition: PlayerCharacter.h:427
std::uint32_t unk8E0
Definition: PlayerCharacter.h:460
TESClass * defaultClass
Definition: PlayerCharacter.h:479
RefHandle forceActivateRef
Definition: PlayerCharacter.h:450
TESForm * lastKnownGoodLocation
Definition: PlayerCharacter.h:488
BSTSmartPointer< BipedAnim > largeBiped
Definition: PlayerCharacter.h:462
float dropAngleMod
Definition: PlayerCharacter.h:493
NiPoint3 lastKnownGoodPosition
Definition: PlayerCharacter.h:396
void SetAIDriven(bool a_enable)
std::int32_t numberofPickpocketWarnings
Definition: PlayerCharacter.h:430
CombatGroup * combatGroup
Definition: PlayerCharacter.h:500
REX::EnumSet< DEFAULT_OBJECT, std::int32_t > animationObjectAction
Definition: PlayerCharacter.h:521
float pickPocketWarningTimer
Definition: PlayerCharacter.h:431
virtual std::uint32_t GetNonViolentCrimeGoldValue(const TESFaction *a_faction) const
bool CenterOnCell(TESObjectCELL *a_cell)
float yieldTimer
Definition: PlayerCharacter.h:506
BGSLocation * currentLocation
Definition: PlayerCharacter.h:513
float sortActorDistanceTimer
Definition: PlayerCharacter.h:473
NiTMap< std::uint32_t, std::uint8_t > randomDoorSpaceMap
Definition: PlayerCharacter.h:415
PlayerActionObject playerActionObjects[15]
Definition: PlayerCharacter.h:451
float sitHeadingDelta
Definition: PlayerCharacter.h:474
std::int64_t totalPlayingTime
Definition: PlayerCharacter.h:485
float grabObjectWeight
Definition: PlayerCharacter.h:456
float dynamicDOFFocusTime
Definition: PlayerCharacter.h:437
BSTArray< std::uint64_t > unkB50
Definition: PlayerCharacter.h:538
NiPoint3 cachedVelocity
Definition: PlayerCharacter.h:398
virtual void Unk_12A(void)
std::uint64_t unkB70
Definition: PlayerCharacter.h:540
TESFaction * currentPrisonFaction
Definition: PlayerCharacter.h:443
std::int8_t perkCount
Definition: PlayerCharacter.h:526
virtual void Unk_12E(void)
BSTArray< void * > imageSpaceModifierAnims1
Definition: PlayerCharacter.h:408
bool HasActorDoingCommand() const
NiPointer< BSLight > firstPersonLight
Definition: PlayerCharacter.h:491
float powerAttackTimer
Definition: PlayerCharacter.h:467
float GetDamage(InventoryEntryData *a_form)
float combatTimer
Definition: PlayerCharacter.h:505
std::int32_t unkB48
Definition: PlayerCharacter.h:536
std::uint32_t pad444
Definition: PlayerCharacter.h:394
BSTArray< ProjectileHandle > runesCast
Definition: PlayerCharacter.h:407
~PlayerCharacter() override
DialoguePackage * closestConversation
Definition: PlayerCharacter.h:424
void PlayPickupEvent(TESForm *a_item, TESForm *a_containerOwner, TESObjectREFR *a_containerRef, EventType a_eventType)
float encumberedTimer
Definition: PlayerCharacter.h:466
float lastDropAngleMod
Definition: PlayerCharacter.h:494
void SetEscaping(bool a_flag, bool a_escaped)
std::uint32_t teammateCount
Definition: PlayerCharacter.h:504
std::uint32_t pad49C
Definition: PlayerCharacter.h:399
std::uint32_t pad63C
Definition: PlayerCharacter.h:418
float stealWarningTimer
Definition: PlayerCharacter.h:429
std::uint8_t padB03
Definition: PlayerCharacter.h:528
TESImageSpaceModifier * sunGazeImageSpaceModifier
Definition: PlayerCharacter.h:518
void AddSkillExperience(ActorValue a_skill, float a_experience)
std::uint32_t unkAC4
Definition: PlayerCharacter.h:512
AITimeStamp cachedVelocityTimeStamp
Definition: PlayerCharacter.h:514
std::uint32_t padB8C
Definition: PlayerCharacter.h:544
virtual std::uint32_t GetViolentCrimeGoldValue(const TESFaction *a_faction) const
std::int32_t amountStolenSold
Definition: PlayerCharacter.h:469
ActorHandle assumedIdentity
Definition: PlayerCharacter.h:524
REX::EnumSet< GrabbingType, std::uint32_t > grabType
Definition: PlayerCharacter.h:522
NiPoint3 bulletAutoAim
Definition: PlayerCharacter.h:397
ObjectRefHandle playerMapMarker
Definition: PlayerCharacter.h:475
float GetArmorValue(InventoryEntryData *a_form)
NiPointer< NiNode > firstPerson3D
Definition: PlayerCharacter.h:463
GrabbingType
Definition: PlayerCharacter.h:158
std::uint64_t unkB80
Definition: PlayerCharacter.h:542
static constexpr auto VTABLE
Definition: PlayerCharacter.h:147
ObjectRefHandle grabbedObject
Definition: PlayerCharacter.h:455
std::uint32_t skillTrainingsThisLevel
Definition: PlayerCharacter.h:477
bool IsGrabbing() const
float greetTimer
Definition: PlayerCharacter.h:465
float sunGazeTimer
Definition: PlayerCharacter.h:517
BSTArray< BSTTuple< NiPoint3, AITimeStamp > > velocityArray
Definition: PlayerCharacter.h:406
float commandTimer
Definition: PlayerCharacter.h:516
void PlayMagicFailureSound(MagicSystem::SpellType a_spellType)
std::uint8_t unkA20[0xA0]
Definition: PlayerCharacter.h:510
float drawSheatheSafetyTimer
Definition: PlayerCharacter.h:508
float chaseTimer
Definition: PlayerCharacter.h:507
std::uint32_t pad724
Definition: PlayerCharacter.h:445
BGSTextureSet * complexion
Definition: PlayerCharacter.h:533
ImageSpaceModifierInstanceDOF * dynamicDOFInstance
Definition: PlayerCharacter.h:436
BSTArray< void * > imageSpaceModifierAnims2
Definition: PlayerCharacter.h:409
ActorValue advanceSkill
Definition: PlayerCharacter.h:519
std::uint32_t advanceAction
Definition: PlayerCharacter.h:520
BSTArray< BGSPerk * > perks
Definition: PlayerCharacter.h:403
std::uint16_t unk6FE
Definition: PlayerCharacter.h:440
float telekinesisDistance
Definition: PlayerCharacter.h:515
bool dynamicDOFFocused
Definition: PlayerCharacter.h:438
InventoryEntryData * temperingItem
Definition: PlayerCharacter.h:546
std::uint32_t unkA1C
Definition: PlayerCharacter.h:509
bool CheckCast(MagicItem *a_spell, Effect *a_effect, MagicSystem::CannotCastReason &a_reason)
PLAYER_TARGET_LOC queuedTargetLoc
Definition: PlayerCharacter.h:419
Crime * resistArrestCrime
Definition: PlayerCharacter.h:530
std::int32_t numberofStealWarnings
Definition: PlayerCharacter.h:428
void * unk728
Definition: PlayerCharacter.h:446
BSTSmallArray< hkRefPtr< bhkMouseSpringAction >, 4 > grabSpring
Definition: PlayerCharacter.h:454
BGSNote * unusedNote
Definition: PlayerCharacter.h:400
BSTArray< TintMask * > tintMasks
Definition: PlayerCharacter.h:531
static constexpr auto FORMTYPE
Definition: PlayerCharacter.h:148
BSTArray< TintMask * > & GetTintList()
float eyeHeight
Definition: PlayerCharacter.h:464
EventType
Definition: PlayerCharacter.h:151
PlayerFlags playerFlags
Definition: PlayerCharacter.h:549
TintMask * GetOverlayTintMask(TintMask *a_original)
std::uint32_t unk6BC
Definition: PlayerCharacter.h:426
std::uint32_t unk990
Definition: PlayerCharacter.h:489
std::int64_t lastPlayingTimeUpdate
Definition: PlayerCharacter.h:484
std::int32_t GetItemCount(TESBoundObject *a_object)
BSTArray< BGSPerk * > standingStonePerks
Definition: PlayerCharacter.h:404
Definition: TESBoundObject.h:24
Definition: TESClass.h:88
Definition: TESFaction.h:120
Definition: TESForm.h:36
Definition: TESImageSpaceModifier.h:111
Definition: TESObjectCELL.h:115
Definition: TESObjectREFR.h:114
Definition: TESObjectWEAP.h:79
Definition: TESObject.h:11
Definition: TESRace.h:146
Definition: TESWorldSpace.h:118
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:54
AQUIRE_TYPE
Definition: BGSAddToPlayerInventoryEvent.h:11
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:76
float nonViolentCur
Definition: PlayerCharacter.h:80
float violentInfamy
Definition: PlayerCharacter.h:82
float nonViolentInfamy
Definition: PlayerCharacter.h:81
float violentCur
Definition: PlayerCharacter.h:79
Definition: Crime.h:35
Definition: Effect.h:11
Definition: PlayerCharacter.h:96
std::uint16_t friendCounts[4]
Definition: PlayerCharacter.h:99
Definition: PlayerCharacter.h:126
REX::EnumSet< PLAYER_ACTION, std::uint32_t > next
Definition: PlayerCharacter.h:131
RefHandle refObj
Definition: PlayerCharacter.h:130
float timer
Definition: PlayerCharacter.h:129
Definition: PlayerCharacter.h:172
bool everModded
Definition: PlayerCharacter.h:217
bool goToJailQueued
Definition: PlayerCharacter.h:212
bool unk1_4
Definition: PlayerCharacter.h:186
bool unk3_3
Definition: PlayerCharacter.h:201
bool unk2_0
Definition: PlayerCharacter.h:190
std::uint16_t pad6
Definition: PlayerCharacter.h:220
bool isSungazing
Definition: PlayerCharacter.h:215
bool travelUseDoor
Definition: PlayerCharacter.h:174
bool aiControlledFromPos
Definition: PlayerCharacter.h:192
bool aiControlledPackage
Definition: PlayerCharacter.h:193
bool unk1_0
Definition: PlayerCharacter.h:182
bool unk4_7
Definition: PlayerCharacter.h:213
bool unk1_1
Definition: PlayerCharacter.h:183
bool aiControlledToPos
Definition: PlayerCharacter.h:191
bool unk3_2
Definition: PlayerCharacter.h:200
bool unk0_4
Definition: PlayerCharacter.h:178
bool pad5_5
Definition: PlayerCharacter.h:219
bool unk1_3
Definition: PlayerCharacter.h:185
bool magickaTutorialShown
Definition: PlayerCharacter.h:210
bool escaping
Definition: PlayerCharacter.h:180
bool unk2_7
Definition: PlayerCharacter.h:197
bool isInThirdPersonMode
Definition: PlayerCharacter.h:198
bool unk4_2
Definition: PlayerCharacter.h:208
bool attemptedYieldInCurrentCombat
Definition: PlayerCharacter.h:204
bool greetingPlayer
Definition: PlayerCharacter.h:188
bool target3DDistant
Definition: PlayerCharacter.h:202
bool returnToLastKnownGoodPosition
Definition: PlayerCharacter.h:194
bool unk2_6
Definition: PlayerCharacter.h:196
bool shouldUpdateCrosshair
Definition: PlayerCharacter.h:207
bool unk3_1
Definition: PlayerCharacter.h:199
bool healthTutorialShown
Definition: PlayerCharacter.h:209
bool forceQuestTargetRepath
Definition: PlayerCharacter.h:181
bool fastTraveling
Definition: PlayerCharacter.h:175
bool unk1_5
Definition: PlayerCharacter.h:187
bool sleeping
Definition: PlayerCharacter.h:184
bool overAutoAimTarget
Definition: PlayerCharacter.h:176
bool isInCombat
Definition: PlayerCharacter.h:203
bool showQuestItems
Definition: PlayerCharacter.h:177
bool servingJailTime
Definition: PlayerCharacter.h:218
bool isLoading
Definition: PlayerCharacter.h:206
bool isSprinting
Definition: PlayerCharacter.h:214
bool unk3_7
Definition: PlayerCharacter.h:205
bool unk1_7
Definition: PlayerCharacter.h:189
bool hasQueuedEquipAnim
Definition: PlayerCharacter.h:179
bool isBeingChased
Definition: PlayerCharacter.h:195
bool dragonRideTargetLocked
Definition: PlayerCharacter.h:216
bool staminaTutorialShown
Definition: PlayerCharacter.h:211
float level
Definition: PlayerCharacter.h:314
float levelThreshold
Definition: PlayerCharacter.h:316
float xp
Definition: PlayerCharacter.h:315
Definition: PlayerCharacter.h:284
Skill
Definition: PlayerCharacter.h:286
@ kIllusion
Definition: PlayerCharacter.h:302
@ kAlchemy
Definition: PlayerCharacter.h:297
@ kSneak
Definition: PlayerCharacter.h:296
@ kEnchanting
Definition: PlayerCharacter.h:304
@ kLightArmor
Definition: PlayerCharacter.h:293
@ kArchery
Definition: PlayerCharacter.h:289
@ kSmithing
Definition: PlayerCharacter.h:291
@ kDestruction
Definition: PlayerCharacter.h:301
@ kPickpocket
Definition: PlayerCharacter.h:294
@ kLockpicking
Definition: PlayerCharacter.h:295
@ kTwoHanded
Definition: PlayerCharacter.h:288
@ kOneHanded
Definition: PlayerCharacter.h:287
@ kRestoration
Definition: PlayerCharacter.h:303
@ kConjuration
Definition: PlayerCharacter.h:300
@ kTotal
Definition: PlayerCharacter.h:305
@ kAlteration
Definition: PlayerCharacter.h:299
@ kBlock
Definition: PlayerCharacter.h:290
@ kSpeech
Definition: PlayerCharacter.h:298
@ kHeavyArmor
Definition: PlayerCharacter.h:292
Definition: PlayerCharacter.h:281
SkillData skills[Skill::kTotal]
Definition: PlayerCharacter.h:323
float xp
Definition: PlayerCharacter.h:318
float levelThreshold
Definition: PlayerCharacter.h:322
std::uint32_t legendaryLevels[Skill::kTotal]
Definition: PlayerCharacter.h:324
Definition: PlayerCharacter.h:278
Data * data
Definition: PlayerCharacter.h:331
void AdvanceLevel(bool a_addThreshold)
Definition: PlayerCharacter.h:267
TESBoundObject * storedLastOneHandItems[2]
Definition: PlayerCharacter.h:273
MagicItem * storedSelectedSpells[4]
Definition: PlayerCharacter.h:270
TESRace * storedRace
Definition: PlayerCharacter.h:271
TESForm * storedSelectedPower
Definition: PlayerCharacter.h:272
Definition: PlayerCharacter.h:225
TESObjectWEAP * rightHandWeapon
Definition: PlayerCharacter.h:228
TESObjectWEAP * leftHandWeapon
Definition: PlayerCharacter.h:229
Definition: PlayerCharacter.h:237
TESWorldSpace * worldspace
Definition: PlayerCharacter.h:242
char pad01[7]
Definition: PlayerCharacter.h:241
bool unk00
Definition: PlayerCharacter.h:240
TESObjectCELL * interiorCell
Definition: PlayerCharacter.h:243
Definition: PlayerCharacter.h:248
std::uint64_t unk10
Definition: PlayerCharacter.h:253
std::uint64_t unk08
Definition: PlayerCharacter.h:252
RE::TESObjectREFR * unk00
Definition: PlayerCharacter.h:251
Definition: PlayerCharacter.h:234
BSTArray< Unk00Data > unk00
Definition: PlayerCharacter.h:255
std::uint64_t unk38
Definition: PlayerCharacter.h:261
BSTArray< Unk18Data > unk18
Definition: PlayerCharacter.h:259
std::uint64_t unk30
Definition: PlayerCharacter.h:260
std::uint64_t unk40
Definition: PlayerCharacter.h:262
Definition: PlayerCharacter.h:87
std::int32_t unwitnessed
Definition: PlayerCharacter.h:90
std::int32_t witnessed
Definition: PlayerCharacter.h:91