diff --git a/include/RE/B/BGSPrimitive.h b/include/RE/B/BGSPrimitive.h index 95fb4ba9..c9d0d18d 100644 --- a/include/RE/B/BGSPrimitive.h +++ b/include/RE/B/BGSPrimitive.h @@ -6,6 +6,7 @@ namespace RE { + class BGSPrimitiveLine; class BSMultiBoundShape; class BSFadeNode; @@ -37,6 +38,13 @@ namespace RE REX::TEnumSet type; // 08 NiPoint3 radii; // 0C NiPointer node; // 18 + + static BGSPrimitiveLine* CreateAbstract(PRIMITIVE_TYPE a_type, const NiPoint3* a_radii, const NiColorA* a_color) + { + using func_t = decltype(&BGSPrimitive::CreateAbstract); + static REL::Relocation func{ ID::BGSPrimitive::CreateAbstract }; + return func(a_type, a_radii, a_color); + } }; static_assert(sizeof(BGSPrimitive) == 0x20); } diff --git a/include/RE/B/BSShaderUtil.h b/include/RE/B/BSShaderUtil.h new file mode 100644 index 00000000..2ec0023b --- /dev/null +++ b/include/RE/B/BSShaderUtil.h @@ -0,0 +1,17 @@ +#pragma once + +namespace RE +{ + class NiAvObject; + class NiSwitchNode; + + namespace BSShaderUtil + { + inline void SetMaterialAlpha(NiAvObject* a_object, float a_alpha, bool a_onlyFade) + { + using func_t = decltype(&BSShaderUtil::SetMaterialAlpha); + static REL::Relocation func{ ID::BSShaderUtil::SetMaterialAlpha }; + return func(a_object, a_alpha, a_onlyFade); + } + } +} diff --git a/include/RE/E/EXTRA_DATA_TYPE.h b/include/RE/E/EXTRA_DATA_TYPE.h index c3f6f4e8..139ecb2e 100644 --- a/include/RE/E/EXTRA_DATA_TYPE.h +++ b/include/RE/E/EXTRA_DATA_TYPE.h @@ -24,13 +24,13 @@ namespace RE kBiped, // kUsedMarkers, // kDistantData, // - kRagdollData, // + kRagdollData, // ExtraRagDollData kCellPrevisRefs, // kInitActions, // kEssentialProtected, // kPackagesStartLoc, // kPackage, // - kTrespassPackage, // + kTresPassPackage, // ExtraTresPassPackage kRunOncePackages, // kReferenceHandle, // ExtraReferenceHandles kFollower, // diff --git a/include/RE/E/ExtraRagDollData.h b/include/RE/E/ExtraRagDollData.h new file mode 100644 index 00000000..9f5c1ec0 --- /dev/null +++ b/include/RE/E/ExtraRagDollData.h @@ -0,0 +1,20 @@ +#pragma once + +#include "RE/B/BSExtraData.h" +#include "RE/R/RagDollData.h" + +namespace RE +{ + class __declspec(novtable) ExtraRagDolldata : + public BSExtraData // 00 + { + public: + static constexpr auto RTTI{ RTTI::ExtraRagDollData }; + static constexpr auto VTABLE{ VTABLE::ExtraRagDollData }; + static constexpr auto TYPE{ EXTRA_DATA_TYPE::kRagdollData }; + + // members + RagDollData* ragDollData; // 18 + }; + static_assert(sizeof(ExtraRagDolldata) == 0x20); +} diff --git a/include/RE/E/ExtraTresPassPackage.h b/include/RE/E/ExtraTresPassPackage.h new file mode 100644 index 00000000..b151238e --- /dev/null +++ b/include/RE/E/ExtraTresPassPackage.h @@ -0,0 +1,20 @@ +#pragma once + +#include "RE/B/BSExtraData.h" +#include "RE/T/TrespassPackage.h" + +namespace RE +{ + class __declspec(novtable) ExtraTresPassPackage : + public BSExtraData // 00 + { + public: + static constexpr auto RTTI{ RTTI::ExtraTresPassPackage }; + static constexpr auto VTABLE{ VTABLE::ExtraTresPassPackage }; + static constexpr auto TYPE{ EXTRA_DATA_TYPE::kTresPassPackage }; + + // members + TrespassPackage* pack; // 18 + }; + static_assert(sizeof(ExtraTresPassPackage) == 0x20); +} diff --git a/include/RE/Fallout.h b/include/RE/Fallout.h index d0d6a154..29d90854 100644 --- a/include/RE/Fallout.h +++ b/include/RE/Fallout.h @@ -443,6 +443,7 @@ #include "RE/B/BSShaderPropertyLightData.h" #include "RE/B/BSShaderTechniqueIDMap.h" #include "RE/B/BSShaderTextureSet.h" +#include "RE/B/BSShaderUtil.h" #include "RE/B/BSSimpleList.h" #include "RE/B/BSSoundHandle.h" #include "RE/B/BSSpinLock.h" @@ -666,10 +667,12 @@ #include "RE/E/ExtraRadioData.h" #include "RE/E/ExtraRadioReceiver.h" #include "RE/E/ExtraRadioRepeater.h" +#include "RE/E/ExtraRagDollData.h" #include "RE/E/ExtraReferenceHandles.h" #include "RE/E/ExtraStartingWorldOrCell.h" #include "RE/E/ExtraTeleport.h" #include "RE/E/ExtraTextDisplayData.h" +#include "RE/E/ExtraTresPassPackage.h" #include "RE/E/ExtraUniqueID.h" #include "RE/F/FACTION_CRIME_DATA.h" #include "RE/F/FACTION_CRIME_DATA_VALUES.h" @@ -1013,6 +1016,8 @@ #include "RE/P/PerkValueEvents.h" #include "RE/P/PersistentPassList.h" #include "RE/P/PipboyArray.h" +#include "RE/P/PipboyCommand.h" +#include "RE/P/PipboyCommandResult.h" #include "RE/P/PipboyDataGroup.h" #include "RE/P/PipboyDataManager.h" #include "RE/P/PipboyHolotapeMenu.h" @@ -1136,6 +1141,8 @@ #include "RE/S/SceneGraph.h" #include "RE/S/ScrapHeap.h" #include "RE/S/ScrapItemCallback.h" +#include "RE/S/ScreenSplatter.h" +#include "RE/S/ScreenSplatterType.h" #include "RE/S/ScreenshotHandler.h" #include "RE/S/Script.h" #include "RE/S/ScriptCompileData.h" diff --git a/include/RE/IDs.h b/include/RE/IDs.h index ab7484be..6742dfc2 100644 --- a/include/RE/IDs.h +++ b/include/RE/IDs.h @@ -343,6 +343,11 @@ namespace RE::ID inline constexpr REL::ID ctor{ 2214021 }; } + namespace BGSPrimitive + { + inline constexpr REL::ID CreateAbstract{ 2194290 }; + } + namespace BGSProjectile { inline constexpr REL::ID CollidesWithSmallTransparentLayer{ 2197620 }; @@ -713,6 +718,11 @@ namespace RE::ID inline constexpr REL::ID CreateObject{ 2316324 }; } + namespace BSShaderUtil + { + inline constexpr REL::ID SetMaterialAlpha{ 2317566 }; + } + namespace BSSoundHandle { inline constexpr REL::ID FadeInPlay{ 2267075 }; @@ -866,6 +876,7 @@ namespace RE::ID inline constexpr REL::ID GetPickRef{ 2701395 }; inline constexpr REL::ID GetPickRefs{ 2701391 }; inline constexpr REL::ID SetCurrentPickREFR{ 2248551 }; + inline constexpr REL::ID DisplayRef{ 2248550 }; } namespace ConsoleLog @@ -1223,6 +1234,7 @@ namespace RE::ID namespace LockpickingMenu { inline constexpr REL::ID OpenLockpickingMenu{ 2249263 }; + inline constexpr REL::ID SendLockInfoToMenu{ 2249267 }; } namespace LocksPicked @@ -1246,6 +1258,11 @@ namespace RE::ID inline constexpr REL::ID SetCameraFOV{ 2228973 }; } + namespace MapMarkerData + { + inline constexpr REL::ID GetLocationName{ 2191791 }; + } + namespace MemoryManager { namespace AutoScrapBuffer @@ -1638,6 +1655,12 @@ namespace RE::ID inline constexpr REL::ID ShowBuildFailureMessage{ 2224322 }; } + namespace PowerUtils + { + inline constexpr REL::ID ItemIsPowerConnection{ 2195078 }; + inline constexpr REL::ID ItemIsPowerReceiver{ 2195060 }; + } + namespace ProcessLists { inline constexpr REL::ID Singleton{ 4796160 }; @@ -1648,9 +1671,12 @@ namespace RE::ID namespace REFR_LOCK { + inline constexpr REL::ID GetLevel{ 2191019 }; inline constexpr REL::ID GetLockLevel{ 2191018 }; inline constexpr REL::ID SetLocked{ 2191020 }; inline constexpr REL::ID IsBroken{ 2191021 }; + inline constexpr REL::ID NumericValueToEnum{ 2191023 }; + inline constexpr REL::ID IsInaccessible{ 2191022 }; } namespace SavefileMetadata @@ -1664,6 +1690,12 @@ namespace RE::ID inline constexpr REL::ID Deallocate{ 2267984 }; } + namespace ScreenSplatter + { + inline constexpr REL::ID Clear{ 2194783 }; + inline constexpr REL::ID Update{ 2194781 }; + } + namespace SCRIPT_FUNCTION { inline constexpr REL::ID ConsoleFunctions{ 901511 }; @@ -1968,6 +2000,17 @@ namespace RE::ID inline constexpr REL::ID DefaultWater{ 4799138 }; } + namespace TESObjectCONT + { + inline constexpr REL::ID GetActivateText{ 2198653 }; + } + + namespace TESObjectDOOR + { + inline constexpr REL::ID GetActivateText{ 2198690 }; + inline constexpr REL::ID CalculateDoFavor{ 2198692 }; + } + namespace TESObjectLoadedEvent { inline constexpr REL::ID GetEventSource{ 2201853 }; @@ -2015,6 +2058,7 @@ namespace RE::ID inline constexpr REL::ID UpdateDynamicNavmesh{ 2201206 }; inline constexpr REL::ID GetMapMarkerData{ 2202644 }; inline constexpr REL::ID GetRelevantWaterHeight{ 2201189 }; + inline constexpr REL::ID CanBeMoved{ 2200898 }; } namespace TESObjectWEAP diff --git a/include/RE/M/MapMarkerData.h b/include/RE/M/MapMarkerData.h index 153bc821..9e351b30 100644 --- a/include/RE/M/MapMarkerData.h +++ b/include/RE/M/MapMarkerData.h @@ -8,6 +8,13 @@ namespace RE class __declspec(novtable) MapMarkerData : public TESFullName // 00 { + const char* GetLocationName() + { + using func_t = decltype(&MapMarkerData::GetLocationName); + static REL::Relocation func{ ID::MapMarkerData::GetLocationName }; + return func(this); + } + std::uint8_t flags; // 10 std::uint8_t originalFlags; // 11 MARKER_TYPE type; // 12 diff --git a/include/RE/P/PipboyCommand.h b/include/RE/P/PipboyCommand.h new file mode 100644 index 00000000..1c33d210 --- /dev/null +++ b/include/RE/P/PipboyCommand.h @@ -0,0 +1,26 @@ +#pragma once + +namespace RE +{ + class PipboyCommandResult; + + class __declspec(novtable) PipboyCommand + { + public: + static constexpr auto RTTI{ RTTI::PipboyCommand }; + static constexpr auto VTABLE{ VTABLE::PipboyCommand }; + + // add + virtual ~PipboyCommand(); // 00 + virtual void Init(Json::Value* a_json) = 0; // 01 + virtual const PipboyCommandResult* DoValidate(); // 02 + virtual const PipboyCommandResult* DoExecute(); // 03 + + // members + const std::uint32_t id; // 08 + const PipboyCommandResult* validationResult; // 10 + const PipboyCommandResult* executionResult; // 18 + bool isReadonOnly; // 20 + }; + static_assert(sizeof(PipboyCommand) == 0x28); +} diff --git a/include/RE/P/PipboyCommandResult.h b/include/RE/P/PipboyCommandResult.h new file mode 100644 index 00000000..7808df77 --- /dev/null +++ b/include/RE/P/PipboyCommandResult.h @@ -0,0 +1,21 @@ +#pragma once + +namespace RE +{ + class __declspec(novtable) PipboyCommandResult + { + public: + static constexpr auto RTTI{ RTTI::PipboyCommandResult }; + static constexpr auto VTABLE{ VTABLE::PipboyCommandResult }; + + // add + virtual ~PipboyCommandResult(); // 00 + virtual void Serialize(Json::Value* a_json) = 0; // 01 + + // members + const std::uint32_t commandID; // 08 + const bool succeeded; // 0C + const bool shouldReply; // 0D + }; + static_assert(sizeof(PipboyCommandResult) == 0x10); +} diff --git a/include/RE/P/PowerUtils.h b/include/RE/P/PowerUtils.h index d8f85ca7..be22d2ca 100644 --- a/include/RE/P/PowerUtils.h +++ b/include/RE/P/PowerUtils.h @@ -40,6 +40,30 @@ namespace RE float load{ 0.0 }; // 6C }; static_assert(sizeof(PowerGrid) == 0x70); + + class TraverseConnectionsOptions + { + public: + // members + std::uint32_t ignoreMode; // 00 + bool wiredOnly; // 04 + bool inputsOnly; // 05 + }; + static_assert(sizeof(TraverseConnectionsOptions) == 0x8); + + bool ItemIsPowerConnection(const TESObjectREFR* refr) + { + using func_t = decltype(&PowerUtils::ItemIsPowerConnection); + static REL::Relocation func{ ID::PowerUtils::ItemIsPowerConnection }; + return func(refr); + } + + bool ItemIsPowerReceiver(const TESObjectREFR* refr) + { + using func_t = decltype(&PowerUtils::ItemIsPowerReceiver); + static REL::Relocation func{ ID::PowerUtils::ItemIsPowerReceiver }; + return func(refr); + } } template <> diff --git a/include/RE/R/REFR_LOCK.h b/include/RE/R/REFR_LOCK.h index 0779646b..fa7cc0c4 100644 --- a/include/RE/R/REFR_LOCK.h +++ b/include/RE/R/REFR_LOCK.h @@ -28,6 +28,13 @@ namespace RE return func(this); } + [[nodiscard]] static LOCK_LEVEL NumericValueToEnum(std::int32_t a_value) + { + using func_t = decltype(&REFR_LOCK::NumericValueToEnum); + static REL::Relocation func{ ID::REFR_LOCK::NumericValueToEnum }; + return func(a_value); + } + // members std::uint8_t baseLevel; // 00 TESKey* key; // 08 diff --git a/include/RE/S/ScreenSplatter.h b/include/RE/S/ScreenSplatter.h new file mode 100644 index 00000000..3fd21ba1 --- /dev/null +++ b/include/RE/S/ScreenSplatter.h @@ -0,0 +1,30 @@ +#pragma once + +namespace RE +{ + class NiCamera; + + namespace ScreenSplatter + { + enum class SCREENSPLATTER_TEXTURES : std::uint32_t + { + kColor = 0x0, + kAlpha = 0x1, + kFlare = 0x2, + }; + + inline void Clear() + { + using func_t = decltype(&ScreenSplatter::Clear); + static REL::Relocation func{ ID::ScreenSplatter::Clear }; + return func(); + } + + inline void Update() + { + using func_t = decltype(&ScreenSplatter::Update); + static REL::Relocation func{ ID::ScreenSplatter::Update }; + return func(); + } + } +} diff --git a/include/RE/S/ScreenSplatterType.h b/include/RE/S/ScreenSplatterType.h new file mode 100644 index 00000000..af94796f --- /dev/null +++ b/include/RE/S/ScreenSplatterType.h @@ -0,0 +1,11 @@ +#pragma once + +namespace RE +{ + enum class ScreenSplatterType : std::uint32_t + { + kBlood = 0x0, + kBlood2 = 0x1, + kBlood3 = 0x2, + }; +} diff --git a/include/RE/T/TESObjectREFR.h b/include/RE/T/TESObjectREFR.h index de11ba7b..f0b8d587 100644 --- a/include/RE/T/TESObjectREFR.h +++ b/include/RE/T/TESObjectREFR.h @@ -557,6 +557,13 @@ namespace RE return func(this); } + bool CanBeMoved() + { + using func_t = decltype(&TESObjectREFR::CanBeMoved); + static REL::Relocation func{ ID::TESObjectREFR::CanBeMoved }; + return func(this); + } + // members TESObjectCELL* parentCell; // 0B8 OBJ_REFR data; // 0C0