diff --git a/include/RE/A/ACTOR_AGGRESSION.h b/include/RE/A/ACTOR_AGGRESSION.h new file mode 100644 index 00000000..f8f36fb5 --- /dev/null +++ b/include/RE/A/ACTOR_AGGRESSION.h @@ -0,0 +1,14 @@ +#pragma once + +namespace RE +{ + enum class ACTOR_AGGRESSION : std::uint32_t + { + kCalmed = 0xFFFFFFFF, + kUnagressive = 0x0, + kAggressive = 0x1, + kVeryAggressive = 0x2, + kFrenzied = 0x3, + kMax = 0x3 + }; +} diff --git a/include/RE/A/ACTOR_AGGRO_RADIUS.h b/include/RE/A/ACTOR_AGGRO_RADIUS.h new file mode 100644 index 00000000..96ec184b --- /dev/null +++ b/include/RE/A/ACTOR_AGGRO_RADIUS.h @@ -0,0 +1,12 @@ +#pragma once + +namespace RE +{ + enum class ACTOR_AGGRO_RADIUS : std::uint32_t + { + kWarn = 0x0, + kWarnAndAttack = 0x1, + kAttack = 0x2, + kCount = 0x3 + }; +} diff --git a/include/RE/A/ACTOR_ASSISTANCE.h b/include/RE/A/ACTOR_ASSISTANCE.h new file mode 100644 index 00000000..717ee063 --- /dev/null +++ b/include/RE/A/ACTOR_ASSISTANCE.h @@ -0,0 +1,12 @@ +#pragma once + +namespace RE +{ + enum class ACTOR_ASSISTANCE : std::uint32_t + { + kHelpsNobody = 0x0, + kHelpsAllies = 0x1, + kHelpsFriends = 0x2, + kCount = 0x3 + }; +} diff --git a/include/RE/A/ACTOR_COMBAT_STATE.h b/include/RE/A/ACTOR_COMBAT_STATE.h new file mode 100644 index 00000000..c57344cd --- /dev/null +++ b/include/RE/A/ACTOR_COMBAT_STATE.h @@ -0,0 +1,11 @@ +#pragma once + +namespace RE +{ + enum class ACTOR_COMBAT_STATE : std::int32_t + { + kNone = 0x0, + kCombat = 0x1, + kSearching = 0x2 + }; +} diff --git a/include/RE/A/ACTOR_CONFIDENCE.h b/include/RE/A/ACTOR_CONFIDENCE.h new file mode 100644 index 00000000..1fe976a2 --- /dev/null +++ b/include/RE/A/ACTOR_CONFIDENCE.h @@ -0,0 +1,14 @@ +#pragma once + +namespace RE +{ + enum class ACTOR_CONFIDENCE : std::uint32_t + { + kCowardly = 0x0, + kCautious = 0x1, + kAverage = 0x2, + kBrave = 0x3, + kFoolhardy = 0x4, + kCount = 0x5 + }; +} diff --git a/include/RE/A/ACTOR_STANCE.h b/include/RE/A/ACTOR_STANCE.h new file mode 100644 index 00000000..500e4f07 --- /dev/null +++ b/include/RE/A/ACTOR_STANCE.h @@ -0,0 +1,15 @@ +#pragma once + +namespace RE +{ + enum class ACTOR_STANCE : std::uint32_t + { + kNormal = 0x0, + kSneaking = 0x1, + kCoverVeryLow = 0x2, + kCoverLow = 0x3, + kCoverMid = 0x4, + kCoverHigh = 0x5, + kCount = 0x6 + }; +} diff --git a/include/RE/A/AIFormulas.h b/include/RE/A/AIFormulas.h new file mode 100644 index 00000000..705a0ba8 --- /dev/null +++ b/include/RE/A/AIFormulas.h @@ -0,0 +1,14 @@ +#pragma once + +namespace RE +{ + namespace AIFormulas + { + inline float GetBarterValue(float a_baseValue, float a_charisma, bool a_selling, TESObjectREFR* a_refTarget) + { + using func_t = decltype(&AIFormulas::GetBarterValue); + static REL::Relocation func{ ID::AIFormulas::GetBarterValue }; + return func(a_baseValue, a_charisma, a_selling, a_refTarget); + } + } +} diff --git a/include/RE/A/Actor.h b/include/RE/A/Actor.h index 0f2e838c..abf8857f 100644 --- a/include/RE/A/Actor.h +++ b/include/RE/A/Actor.h @@ -573,6 +573,20 @@ namespace RE return func(this); } + std::uint8_t GetMobilityCrippled() + { + using func_t = decltype(&Actor::GetMobilityCrippled); + static REL::Relocation func{ ID::Actor::GetMobilityCrippled }; + return func(this); + } + + void SPECIALModifiedCallback(const ActorValueInfo* a_info, float a_originalValue, float a_delta) + { + using func_t = decltype(&Actor::SPECIALModifiedCallback); + static REL::Relocation func{ ID::Actor::SPECIALModifiedCallback }; + return func(this, a_info, a_originalValue, a_delta); + } + // members NiTFlags niFlags; // 2D0 float updateTargetTimer; // 2D4 diff --git a/include/RE/B/BGSMaterialObject.h b/include/RE/B/BGSMaterialObject.h index 1012f0cc..81c7b091 100644 --- a/include/RE/B/BGSMaterialObject.h +++ b/include/RE/B/BGSMaterialObject.h @@ -21,7 +21,7 @@ namespace RE { public: // members - std::int8_t* nuffer; // 00 + char* buffer; // 00 std::uint32_t bufferSize; // 08 }; static_assert(sizeof(FILE_DATA) == 0x10); diff --git a/include/RE/B/BGSMod.h b/include/RE/B/BGSMod.h index 74cb045d..262496f1 100644 --- a/include/RE/B/BGSMod.h +++ b/include/RE/B/BGSMod.h @@ -49,6 +49,12 @@ namespace RE::BGSMod kPair }; + enum class BLOCKIDS : std::uint32_t + { + kOMOD = 0x0, + kPMOD = 0x1 + }; + class Mod // id == 1 { public: diff --git a/include/RE/B/BSSceneGraph.h b/include/RE/B/BSSceneGraph.h new file mode 100644 index 00000000..aac81e40 --- /dev/null +++ b/include/RE/B/BSSceneGraph.h @@ -0,0 +1,28 @@ +#pragma once + +#include "RE//N/NiCamera.h" + +namespace RE +{ + class __declspec(novtable) BSSceneGraph : + public NiNode // 000 + { + public: + static constexpr auto RTTI{ RTTI::BSSceneGraph }; + static constexpr auto VTABLE{ VTABLE::BSSceneGraph }; + static constexpr auto Ni_RTTI{ Ni_RTTI::BSSceneGraph }; + + // add + virtual float GetFarDistance(); // 43 + virtual float GetNearDistance(); // 44 + virtual void SetViewDistanceBasedOnFrameRate(float a_time); // 44 + + // members + NiPointer camera; // 140 + NiVisibleArray* visArray; // 148 + BSCullingProcess* culler; // 150 + bool menuSceneGraph; // 158 + float currentFOV; // 15C + }; + static_assert(sizeof(BSSceneGraph) == 0x160); +} diff --git a/include/RE/B/BSScript_Internal_StringIndexSize.h b/include/RE/B/BSScript_Internal_StringIndexSize.h new file mode 100644 index 00000000..76babfb7 --- /dev/null +++ b/include/RE/B/BSScript_Internal_StringIndexSize.h @@ -0,0 +1,16 @@ +#pragma once + +namespace RE +{ + namespace BSScript + { + namespace Internal + { + enum class StringIndexSize : std::uint32_t + { + kSmall = 0x0, + kLarge = 0x1 + }; + } + } +} diff --git a/include/RE/B/bhkCharacterController.h b/include/RE/B/bhkCharacterController.h index fa96dd91..ecd8988a 100644 --- a/include/RE/B/bhkCharacterController.h +++ b/include/RE/B/bhkCharacterController.h @@ -73,6 +73,13 @@ namespace RE virtual void ApplyMoveImmediately() = 0; // 4B virtual void ClearCollectorDataImpl() = 0; // 4C + void Jump(float a_height) + { + using func_t = decltype(&bhkCharacterController::Jump); + static REL::Relocation func{ ID::bhkCharacterController::Jump }; + return func(this, a_height); + } + // members hkVector4f forwardVec; // 140 hkStepInfo stepInfo; // 150 diff --git a/include/RE/B/bhkNPCollisionObjectBase.h b/include/RE/B/bhkNPCollisionObjectBase.h index 387d92fb..b115f1e0 100644 --- a/include/RE/B/bhkNPCollisionObjectBase.h +++ b/include/RE/B/bhkNPCollisionObjectBase.h @@ -13,6 +13,13 @@ namespace RE inline static constexpr auto VTABLE{ VTABLE::bhkNPCollisionObjectBase }; inline static constexpr auto Ni_RTTI{ Ni_RTTI::bhkNPCollisionObjectBase }; + enum class TRANSCHANGEFLAGS : std::uint32_t + { + kNone = 0x0, + kPos = 0x1, + kRot = 0x2 + }; + // add virtual void LockMotionImpl() = 0; // 2C diff --git a/include/RE/Fallout.h b/include/RE/Fallout.h index 0ad8b12c..297950ec 100644 --- a/include/RE/Fallout.h +++ b/include/RE/Fallout.h @@ -3,14 +3,21 @@ #include "F4SE/Impl/PCH.h" #include "RE/A/ACTION_OBJECT.h" +#include "RE/A/ACTOR_AGGRESSION.h" +#include "RE/A/ACTOR_AGGRO_RADIUS.h" +#include "RE/A/ACTOR_ASSISTANCE.h" #include "RE/A/ACTOR_BASE_DATA.h" +#include "RE/A/ACTOR_COMBAT_STATE.h" +#include "RE/A/ACTOR_CONFIDENCE.h" #include "RE/A/ACTOR_CRITICAL_STAGE.h" #include "RE/A/ACTOR_LIFE_STATE.h" #include "RE/A/ACTOR_LOS_LOCATION.h" +#include "RE/A/ACTOR_STANCE.h" #include "RE/A/ACTOR_VALUE_MODIFIER.h" #include "RE/A/ACTOR_VISIBILITY_MASK.h" #include "RE/A/ADDON_DATA.h" #include "RE/A/AIDATA_GAME.h" +#include "RE/A/AIFormulas.h" #include "RE/A/AIProcess.h" #include "RE/A/AITimeStamp.h" #include "RE/A/AITimer.h" @@ -336,6 +343,7 @@ #include "RE/B/BSScaleformManager.h" #include "RE/B/BSScaleformRenderer.h" #include "RE/B/BSScaleformTranslator.h" +#include "RE/B/BSSceneGraph.h" #include "RE/B/BSScriptUtil.h" #include "RE/B/BSScript_Array.h" #include "RE/B/BSScript_ArrayWrapper.h" @@ -370,6 +378,7 @@ #include "RE/B/BSScript_Internal_ReadableTypeTable.h" #include "RE/B/BSScript_Internal_ScriptFunction.h" #include "RE/B/BSScript_Internal_Stack.h" +#include "RE/B/BSScript_Internal_StringIndexSize.h" #include "RE/B/BSScript_Internal_SuspendedStack.h" #include "RE/B/BSScript_Internal_VDescTable.h" #include "RE/B/BSScript_Internal_VirtualMachine.h" @@ -725,6 +734,7 @@ #include "RE/I/INPUT_EVENT_TYPE.h" #include "RE/I/INSTANCE_FILTER.h" #include "RE/I/INTERACTING_STATE.h" +#include "RE/I/INTERACTION_EXIT.h" #include "RE/I/INTERIOR_DATA.h" #include "RE/I/IPipboyThrottledValue.h" #include "RE/I/IPostAnimationChannelUpdateFunctor.h" @@ -882,6 +892,7 @@ #include "RE/P/PART_DATA.h" #include "RE/P/PATH_DATA.h" #include "RE/P/PC_GAMEPAD_TYPE.h" +#include "RE/P/PERK_ENTRY_TYPE.h" #include "RE/P/PIPBOY_PAGES.h" #include "RE/P/PLAYER_ACTION.h" #include "RE/P/PLAYER_TARGET_LOC.h" @@ -968,6 +979,8 @@ #include "RE/Q/QUEST_OBJECTIVE_STATE.h" #include "RE/Q/QUEST_STAGE_DATA.h" #include "RE/Q/QUEST_TAB.h" +#include "RE/Q/QUEST_TYPE.h" +#include "RE/Q/QuestFlag.h" #include "RE/Q/QuickContainerMode.h" #include "RE/Q/QuickContainerStateData.h" #include "RE/Q/QuickContainerStateEvent.h" @@ -991,6 +1004,7 @@ #include "RE/RTTI.h" #include "RE/S/SCENE_ACTION_PLAYER_RESPONSE_TYPE.h" #include "RE/S/SCENE_ACTION_TYPE.h" +#include "RE/S/SCENE_ACTOR_FLAG.h" #include "RE/S/SCRIPT_EFFECT_DATA.h" #include "RE/S/SCRIPT_FUNCTION.h" #include "RE/S/SCRIPT_HEADER.h" @@ -1009,6 +1023,7 @@ #include "RE/S/SWFToCodeFunctionHandler.h" #include "RE/S/SavefileMetadata.h" #include "RE/S/SayOnceTimeStampStruct.h" +#include "RE/S/SceneGraph.h" #include "RE/S/ScrapHeap.h" #include "RE/S/ScrapItemCallback.h" #include "RE/S/ScreenshotHandler.h" diff --git a/include/RE/H/hknpMotionPropertiesId.h b/include/RE/H/hknpMotionPropertiesId.h index 1a6c59d6..ac1ce074 100644 --- a/include/RE/H/hknpMotionPropertiesId.h +++ b/include/RE/H/hknpMotionPropertiesId.h @@ -14,7 +14,16 @@ namespace RE public hkHandle { public: - enum class Preset; + enum class Preset : std::uint32_t + { + kStatic = 0x0, + kDynamic = 0x1, + kKeyframed = 0x2, + kFrozen = 0x3, + kDebris = 0x4, + kCount = 0x5, + kInvalid = 0xFFFF + }; }; static_assert(sizeof(hknpMotionPropertiesId) == 0x02); } diff --git a/include/RE/I/INTERACTION_EXIT.h b/include/RE/I/INTERACTION_EXIT.h new file mode 100644 index 00000000..1d0e646c --- /dev/null +++ b/include/RE/I/INTERACTION_EXIT.h @@ -0,0 +1,11 @@ +#pragma once + +namespace RE +{ + enum class INTERACTION_EXIT : std::int32_t + { + kNormal = 0x0, + kQuick = 0x1, + kInstant = 0x2 + }; +} diff --git a/include/RE/IDs.h b/include/RE/IDs.h index 403ce095..57896ec6 100644 --- a/include/RE/IDs.h +++ b/include/RE/IDs.h @@ -60,6 +60,9 @@ namespace RE::ID inline constexpr REL::ID IsAngryWithPlayer{ 2229998 }; inline constexpr REL::ID RedressIfNeeded{ 2230394 }; inline constexpr REL::ID UpdateSprinting{ 2230498 }; + inline constexpr REL::ID Jump{ 2229650 }; + inline constexpr REL::ID GetMobilityCrippled{ 2230996 }; + inline constexpr REL::ID SPECIALModifiedCallback{ 2231020 }; } namespace ActorEquipManager @@ -86,6 +89,11 @@ namespace RE::ID inline constexpr REL::ID Singleton{ 2189587 }; } + namespace AIFormulas + { + inline constexpr REL::ID GetBarterValue{ 2208969 }; + } + namespace AIProcess { inline constexpr REL::ID GetCurrentAmmo{ 2232300 }; @@ -369,6 +377,12 @@ namespace RE::ID inline constexpr REL::ID GetHackDifficultyLockLevel{ 2197777 }; inline constexpr REL::ID IsTerminalRefInUse{ 2197779 }; inline constexpr REL::ID Show{ 2197776 }; + inline constexpr REL::ID Activate{ 2197778 }; + } + + namespace bhkCharacterController + { + inline constexpr REL::ID Jump{ 2278191 }; } namespace bhkNPCollisionObject @@ -930,7 +944,7 @@ namespace RE::ID namespace GamePlayFormulas { - inline constexpr REL::ID CanHackGateCheck{ 269668 }; + inline constexpr REL::ID CanHackGateCheck{ 2209069 }; inline constexpr REL::ID CanPickLockGateCheck{ 2209066 }; inline constexpr REL::ID GetExperienceReward{ 2209076 }; inline constexpr REL::ID GetLockXPReward{ 2209070 }; @@ -940,6 +954,7 @@ namespace RE::ID inline constexpr REL::ID GetPartialPickAngle{ 2209083 }; inline constexpr REL::ID GetPickBreakSeconds{ 2209084 }; inline constexpr REL::ID GetHackingWordCount{ 2209067 }; + inline constexpr REL::ID CalculateItemValue{ 2209074 }; } namespace GameScript @@ -1237,6 +1252,7 @@ namespace RE::ID namespace NiCamera { inline constexpr REL::ID WorldPtToScreenPt3{ 2270344 }; + inline constexpr REL::ID ViewPointToRay{ 2270338 }; } namespace NiControllerManager @@ -1971,6 +1987,8 @@ namespace RE::ID inline constexpr REL::ID PlayPipboySound{ 2249706 }; inline constexpr REL::ID PlayMenuSound{ 2249707 }; inline constexpr REL::ID UpdateGamepadDependentButtonCodes{ 2249714 }; + inline constexpr REL::ID ShowCraftingMenu{ 2249718 }; + inline constexpr REL::ID HasRequiredInventoryForCraftingMenu{ 2249717 }; } namespace VATS diff --git a/include/RE/N/NiCamera.h b/include/RE/N/NiCamera.h index 1dda9609..0530a563 100644 --- a/include/RE/N/NiCamera.h +++ b/include/RE/N/NiCamera.h @@ -39,6 +39,13 @@ namespace RE return func(a_matrix, a_port, a_point, a_x, a_y, a_z, a_zeroTolerance); } + void ViewPointToRay(float a_vx, float a_vy, NiPoint3* a_origin, NiPoint3* a_dir) + { + using func_t = decltype(&NiCamera::ViewPointToRay); + static REL::Relocation func{ ID::NiCamera::ViewPointToRay }; + return func(this, a_vx, a_vy, a_origin, a_dir); + } + // members float worldToCam[4][4]; // 120 NiFrustum viewFrustum; // 160 diff --git a/include/RE/P/PERK_ENTRY_TYPE.h b/include/RE/P/PERK_ENTRY_TYPE.h new file mode 100644 index 00000000..fdc18454 --- /dev/null +++ b/include/RE/P/PERK_ENTRY_TYPE.h @@ -0,0 +1,10 @@ +namespace RE +{ + enum class PERK_ENTRY_TYPE + { + kQuest = 0x0, + kAbility = 0x1, + kEntryPoint = 0x2, + kTotal = 0x3 + }; +} diff --git a/include/RE/Q/QUEST_TYPE.h b/include/RE/Q/QUEST_TYPE.h new file mode 100644 index 00000000..059e88c5 --- /dev/null +++ b/include/RE/Q/QUEST_TYPE.h @@ -0,0 +1,19 @@ +#pragma once + +namespace RE +{ + enum class QUEST_TYPE : std::int32_t + { + kNone = 0x0, + kMainquest = 0x1, + kBrotherhood = 0x2, + kInstitue = 0x3, + kMinutemen = 0x4, + kRailroad = 0x5, + kMiscellaneous = 0x6, + kSidequests = 0x7, + kDLC01 = 0x8, + kDLC02 = 0x9, + kDLC03 = 0xA + }; +} diff --git a/include/RE/Q/QuestFlag.h b/include/RE/Q/QuestFlag.h new file mode 100644 index 00000000..8ba1e78f --- /dev/null +++ b/include/RE/Q/QuestFlag.h @@ -0,0 +1,25 @@ +#pragma once + +namespace RE +{ + enum class QUEST_TYPE : std::int32_t + { + kEnabled = 0x1, + kCompleted = 0x2, + kAddIdleToHello = 0x4, + kAllowRepeatStages = 0x8, + kStartsEnabled = 0x10, + kDisplayedInHUD = 0x20, + kFailed = 0x40, + kStageWait = 0x80, + kRunOnce = 0x100, + kExcludedFromExport = 0x200, + kWarnOnAliasFillFailure = 0x400, + kActive = 0x800, + kRepeatsConditions = 0x1000, + kKeepInstance = 0x2000, + kWantDormant = 0x4000, + kHasDialogueData = 0x8000, + kNonSaveFlags = 0x970C + }; +} diff --git a/include/RE/S/SCENE_ACTOR_FLAG.h b/include/RE/S/SCENE_ACTOR_FLAG.h new file mode 100644 index 00000000..67fd85a2 --- /dev/null +++ b/include/RE/S/SCENE_ACTOR_FLAG.h @@ -0,0 +1,13 @@ +#pragma once + +namespace RE +{ + enum class SCENE_ACTOR_FLAG : std::uint32_t + { + kNoPlayerActivation = 0x0, + kOption = 0x1, + kRunOnlyScenePackages = 0x2, + kNoCommandState = 0x3, + kCount = 0x4 + }; +} diff --git a/include/RE/S/SceneGraph.h b/include/RE/S/SceneGraph.h new file mode 100644 index 00000000..046f6d71 --- /dev/null +++ b/include/RE/S/SceneGraph.h @@ -0,0 +1,19 @@ +#pragma once + +namespace RE +{ + class __declspec(novtable) SceneGraph : + public BSSceneGraph // 000 + { + static constexpr auto RTTI{ RTTI::SceneGraph }; + static constexpr auto VTABLE{ VTABLE::SceneGraph }; + static constexpr auto Ni_RTTI{ Ni_RTTI::SceneGraph }; + + // members + float customNearDistance; // 160 + float customFarDistance; // 164 + bool customNearDistanceActive; // 168 + bool customFarDistanceActive; // 169 + }; + static_assert(sizeof(SceneGraph) == 0x170); +} diff --git a/include/RE/U/UIUtils.h b/include/RE/U/UIUtils.h index d128e698..6e6b189b 100644 --- a/include/RE/U/UIUtils.h +++ b/include/RE/U/UIUtils.h @@ -38,5 +38,19 @@ namespace RE static REL::Relocation func{ ID::UIUtils::UpdateGamepadDependentButtonCodes }; return func(a_usingGamepad); } + + inline void ShowCraftingMenu(TESObjectREFR* a_furniture) + { + using func_t = decltype(&ShowCraftingMenu); + static REL::Relocation func{ ID::UIUtils::ShowCraftingMenu }; + return func(a_furniture); + } + + inline bool HasRequiredInventoryForCraftingMenu(TESObjectREFR* a_furniture) + { + using func_t = decltype(&HasRequiredInventoryForCraftingMenu); + static REL::Relocation func{ ID::UIUtils::HasRequiredInventoryForCraftingMenu }; + return func(a_furniture); + } } }