diff --git a/sfse/GameChargen.cpp b/sfse/GameChargen.cpp index e56f529..cc604f8 100644 --- a/sfse/GameChargen.cpp +++ b/sfse/GameChargen.cpp @@ -1 +1,3 @@ #include "sfse/GameChargen.h" + +RelocPtr TESNPCData::g_actorCheckpoint(0x0658F658); diff --git a/sfse/GameChargen.h b/sfse/GameChargen.h index 9a290f4..460fc5a 100644 --- a/sfse/GameChargen.h +++ b/sfse/GameChargen.h @@ -6,7 +6,7 @@ #include "sfse_common/Utilities.h" #include "sfse/NiTypes.h" -class TESNPC; +class MenuActor; namespace TESNPCData { @@ -23,8 +23,10 @@ class ChargenDataModel : public IDataModel, public BSTSingletonSDM g_actorCheckpoint; } namespace BGSCharacterMorph diff --git a/sfse/GameFormComponents.h b/sfse/GameFormComponents.h index 7fc7cb5..e68a856 100644 --- a/sfse/GameFormComponents.h +++ b/sfse/GameFormComponents.h @@ -339,8 +339,7 @@ struct PerkRankData class BGSPerkRankArray : public BaseFormComponent { public: - PerkRankData* pPerksA; // 08 - u32 uiPerkCount; // 10 + BSTArray pPerksA; // 08 }; static_assert(sizeof(BGSPerkRankArray) == 0x18); diff --git a/sfse/GameMenu.h b/sfse/GameMenu.h index a9a6c4c..7c5b951 100644 --- a/sfse/GameMenu.h +++ b/sfse/GameMenu.h @@ -138,22 +138,10 @@ class ChargenMenu : public: MenuPaperDoll* pPaperDoll; // 2C0 TESNPC* npc; // 2C8 - void* unk2D0; // 2D0 ChargenRestorePoint - u64 unk2D8[(0x5C0 - 0x2D8) >> 3]; - u64 unk5C0; - u32 cameraPosition; // 5C8 - u32 unk5CC; // 5CC - u64 unk5D0; // 5D0 - u64 unk5D8; // 5D8 - u8 unk5E0; // 5E0 - Camera dirty? - u8 unk5E1; // 5E1 - u8 unk5E2; // 5E2 - u8 unk5E3; // 5E3 - u8 unk5E4; // 5E4 - u8 unk5E5; // 5E5 - u8 unk5E6; // 5E6 - u8 unk5E7; // 5E7 - u32 unk5E8; // 5E8 + u64 unk2D0[(0x5B0 - 0x2D0) >> 3]; + u32 cameraPosition; // 5B0 + u32 unk5B4; // 5B4 + u64 unk5D8[(0x648 - 0x5B8) >> 3]; enum { @@ -164,6 +152,5 @@ class ChargenMenu : TRAITS_CAMERA_POSITION }; }; -static_assert(offsetof(ChargenMenu, unk2D0) == 0x2D0); -static_assert(offsetof(ChargenMenu, cameraPosition) == 0x5C8); -static_assert(offsetof(ChargenMenu, unk5E0) == 0x5E0); \ No newline at end of file +static_assert(offsetof(ChargenMenu, cameraPosition) == 0x5B0); +static_assert(sizeof(ChargenMenu) == 0x648); \ No newline at end of file diff --git a/sfse/GameObjects.h b/sfse/GameObjects.h index 3f7ecfc..ee5147f 100644 --- a/sfse/GameObjects.h +++ b/sfse/GameObjects.h @@ -142,7 +142,7 @@ class TESNPC : u64 unk3C8; // 3C8 BSTArray* unk3D0; // 3D0 -- 5 floats entries? BSTHashMap2* AdditionalSliders; // 3D8 - BSTHashMap*>* unk3E0; // 3E0 + BSTHashMap*>* unk3E0; // 3E0 struct HeadPartData { u32 type; // 00 1 - Mask? @@ -160,15 +160,15 @@ class TESNPC : BSTArray HeadPartDataA; // 3E0 u32 skinTone; // 3F8 u32 unk3FC; // 3FC - BSFixedString teeth; // 400 - BSFixedString jewelryColor; // 408 - BSFixedString eyeColor; // 410 - BSFixedString hairColor; // 418 - BSFixedString facialHairColor; // 420 - BSFixedString eyebrowColor; // 428 + BSFixedStringCS teeth; // 400 + BSFixedStringCS jewelryColor; // 408 + BSFixedStringCS eyeColor; // 410 + BSFixedStringCS hairColor; // 418 + BSFixedStringCS facialHairColor; // 420 + BSFixedStringCS eyebrowColor; // 428 u64 unk468; // 430 BSFixedString unk438; // 438 - BSTHashMap* shapeBlendData; // 440 - ShapeBlendData Map + BSTHashMap* shapeBlendData; // 440 - ShapeBlendData Map u8 pronoun; // 448 u8 pad449[7]; // 449