Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: TESNPC #291

Merged
merged 2 commits into from
Oct 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions include/RE/T/TESActorBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,17 @@ namespace RE
class TESActorBase :
public TESBoundAnimObject, // 000
public TESActorBaseData, // 0E0
public TESContainer, // 150
public TESSpellList, // 168
public TESAIForm, // 180
public TESFullName, // 1C0
public ActorValueOwner, // 1D0
public BGSDestructibleObjectForm, // 1D8
public BGSSkinForm, // 1E8
public BGSKeywordForm, // 1F8
public BGSAttackDataForm, // 228
public BGSPerkRankArray, // 238
public BGSPropertySheet // 250
public TESContainer, // 168
public TESSpellList, // 180
public TESAIForm, // 198
public TESFullName, // 1D8
public ActorValueOwner, // 1E0
public BGSDestructibleObjectForm, // 1F0
public BGSSkinForm, // 200
public BGSKeywordForm, // 218
public BGSAttackDataForm, // 240
public BGSPerkRankArray, // 250
public BGSPropertySheet // 268
{
public:
SF_RTTI_VTABLE(TESActorBase);
Expand All @@ -44,5 +44,5 @@ namespace RE
virtual void SetCombatStyle(TESCombatStyle*); // 84
virtual TESForm* GetAsForm(); // 85
};
static_assert(sizeof(TESActorBase) == 0x268);
static_assert(sizeof(TESActorBase) == 0x270);
}
21 changes: 11 additions & 10 deletions include/RE/T/TESActorBaseData.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,16 @@ namespace RE
ACTOR_BASE_DATA actorData; // 08
std::int32_t changeFlags; // 1C
BSTArray<FACTION_RANK> factions; // 20
TESForm** templateForms; // 30
TESForm** unk38; // 38
TESForm* baseTemplateForm; // 40
TESLevItem* deathItem; // 48
TESGlobal* legendChance; // 50
TESForm* legendTemplate; // 58
BGSVoiceType* voiceType; // 60
std::uint32_t unk68; // 68
std::uint32_t unk6C; // 6C
std::uint64_t pad30; // 30
TESForm** templateForms; // 38
TESForm** unk40; // 40
TESForm* baseTemplateForm; // 48
TESLevItem* deathItem; // 50
TESGlobal* legendChance; // 58
TESForm* legendTemplate; // 60
BGSVoiceType* voiceType; // 68
std::uint32_t unk70; // 70
std::uint32_t unk74; // 74
};
static_assert(sizeof(TESActorBaseData) == 0x70);
static_assert(sizeof(TESActorBaseData) == 0x78);
}
93 changes: 46 additions & 47 deletions include/RE/T/TESNPC.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ namespace RE

class TESNPC :
public TESActorBase, // 000
public TESRaceForm, // 260
public BGSOverridePackCollection, // 270
public BGSForcedLocRefType, // 2B8
public BGSNativeTerminalForm, // 2D0
public BSTEventSink<MenuOpenCloseEvent> // 2E0
public TESRaceForm, // 278
public BGSOverridePackCollection, // 288
public BGSForcedLocRefType, // 2D0
public BGSNativeTerminalForm, // 2E8
public BSTEventSink<MenuOpenCloseEvent> // 2F8
{
public:
SF_RTTI_VTABLE(TESNPC);
Expand Down Expand Up @@ -108,49 +108,48 @@ namespace RE
}

// members
BGSAttachParentArray attachParents; // 2E8
std::uint32_t unk308; // 308
std::uint32_t unk30C; // 30C
TESClass* npcClass; // 310
std::uint64_t unk318; // 318
BGSListForm* giftFilter; // 320
TESCombatStyle* combatStyle; // 328
std::uint32_t fileOffset; // 330
std::uint32_t unk334; // 334
TESRace* originalRace; // 338
TESNPC* faceNPC; // 340
MorphWeight morphWeight; // 348
float height; // 354
float heightMax; // 358
std::uint32_t unk35C; // 35C
TESNPC* unk360; // 360
std::uint64_t unk368; // 368
BGSAttachParentArray attachParents; // 2F8
std::uint32_t unk318; // 318
std::uint32_t unk31C; // 31C
TESClass* npcClass; // 320
BGSListForm* giftFilter; // 328
TESCombatStyle* combatStyle; // 330
std::uint32_t fileOffset; // 338
std::uint32_t unk33C; // 33C
TESRace* originalRace; // 340
TESNPC* faceNPC; // 348
MorphWeight morphWeight; // 350
float height; // 35C
float heightMax; // 360
std::uint32_t unk364; // 364
TESNPC* unk368; // 368
std::uint64_t unk370; // 370
BGSLocalizedString shortName; // 378
TESObjectARMO* farSkin; // 380
TESFurniture* powerArmorFurn; // 388
BGSOutfit* defaultOutfit; // 390
BGSOutfit* sleepOutfit; // 398
BGSListForm* defaultPackList; // 3A0
TESFaction* crimeFaction; // 3A8
TESFaction* unk3B0; // 3B0
BSGuarded<BSTArray<BGSHeadPart*>, BSNonReentrantSpinLock> headParts; // 3B8
BSTArray<float>* unk3D0; // 3D0
BSTHashMap2<std::uint32_t, float>* unk3D8; // 3D8
BSTHashMap<std::uint32_t, BSTHashMap<BSFixedStringCS, float>*>* unk3E0; // 3E0
BSTArray<AVMData> tintAVMData; // 3E8
std::uint32_t skinToneIndex; // 3F8
std::uint32_t unk3FC; // 3FC
BSFixedString teeth; // 400
BSFixedString jewelryColor; // 408
BSFixedString eyeColor; // 410
BSFixedString hairColor; // 418
BSFixedString facialColor; // 420
BSFixedString eyebrowColor; // 428
BSTArray<BGSRelationship*>* relationships; // 430
BGSLocalizedString organization; // 438 - faction?
BSTHashMap<BSFixedStringCS, float>* shapeBlendData; // 440
REX::Enum<PRONOUN_TYPE, std::uint8_t> pronoun; // 448
std::uint64_t unk378; // 378
BGSLocalizedString shortName; // 380
TESObjectARMO* farSkin; // 388
TESFurniture* powerArmorFurn; // 390
BGSOutfit* defaultOutfit; // 398
BGSOutfit* sleepOutfit; // 3A0
BGSListForm* defaultPackList; // 3A8
TESFaction* crimeFaction; // 3B0
TESFaction* unk3B8; // 3B8
BSGuarded<BSTArray<BGSHeadPart*>, BSNonReentrantSpinLock> headParts; // 3C0
BSTArray<float>* unk3D8; // 3D8
BSTHashMap2<std::uint32_t, float>* unk3E0; // 3E0
BSTHashMap<std::uint32_t, BSTHashMap<BSFixedStringCS, float>*>* unk3E8; // 3E8
BSTArray<AVMData> tintAVMData; // 3F0
std::uint32_t skinToneIndex; // 400
std::uint32_t unk404; // 404
BSFixedString teeth; // 408
BSFixedString jewelryColor; // 410
BSFixedString eyeColor; // 418
BSFixedString hairColor; // 420
BSFixedString facialColor; // 428
BSFixedString eyebrowColor; // 430
BSTArray<BGSRelationship*>* relationships; // 438
BGSLocalizedString organization; // 440 - faction?
BSTHashMap<BSFixedStringCS, float>* shapeBlendData; // 448
REX::Enum<PRONOUN_TYPE, std::uint8_t> pronoun; // 450
};
static_assert(sizeof(TESNPC) == 0x458);
}