From d24be7911dcb4ff1ef576f3df7940f630eacc581 Mon Sep 17 00:00:00 2001 From: shad0wshayd3 <2724172+shad0wshayd3@users.noreply.github.com> Date: Thu, 17 Sep 2026 21:53:14 -0600 Subject: [PATCH 1/3] feat: access `RE::BSTSmartPointer` without using global var --- src/Config/Papyrus.cpp | 8 ++------ src/Config/Papyrus.h | 9 ++++++++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Config/Papyrus.cpp b/src/Config/Papyrus.cpp index 5df918e0..e00c517a 100644 --- a/src/Config/Papyrus.cpp +++ b/src/Config/Papyrus.cpp @@ -40,13 +40,9 @@ namespace QuickLoot::Config return; }; - MCMScript = Util::ScriptObject::FromForm(quest, "QuickLootIEMCM"); - if (!MCMScript.IsValid()) { - logger::info("Unable to locate MCM script on form"); - return; - }; + MCMQuest = quest; - logger::info("MCM pointer set successfully"); + logger::info("MCM quest pointer set successfully"); UserSettings::Update(); }; diff --git a/src/Config/Papyrus.h b/src/Config/Papyrus.h index b6a029ef..f74493f7 100644 --- a/src/Config/Papyrus.h +++ b/src/Config/Papyrus.h @@ -4,7 +4,7 @@ namespace QuickLoot::Config { - static Util::ScriptObject MCMScript{}; + static RE::TESQuest* MCMQuest{ nullptr }; inline bool QLIE_ShowInCombat; inline bool QLIE_ShowWhenEmpty; @@ -142,6 +142,13 @@ namespace QuickLoot::Config template static void LoadSetting(T& variable, const std::string& propertyName, const T& defaultValue) { + auto MCMScript = Util::ScriptObject::FromForm(MCMQuest, "QuickLootIEMCM"); + if (!MCMScript.IsValid()) + { + logger::error("Unable to locate MCM script on form"); + return; + } + const auto* prop = MCMScript.GetProperty(propertyName); if (!prop) { From f2805aeb51293404feb859d9d4f053e760162d5f Mon Sep 17 00:00:00 2001 From: shad0wshayd3 <2724172+shad0wshayd3@users.noreply.github.com> Date: Thu, 17 Sep 2026 22:02:14 -0600 Subject: [PATCH 2/3] formatting: match project formatting --- src/Config/Papyrus.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Config/Papyrus.h b/src/Config/Papyrus.h index f74493f7..fb3ea22b 100644 --- a/src/Config/Papyrus.h +++ b/src/Config/Papyrus.h @@ -143,8 +143,7 @@ namespace QuickLoot::Config static void LoadSetting(T& variable, const std::string& propertyName, const T& defaultValue) { auto MCMScript = Util::ScriptObject::FromForm(MCMQuest, "QuickLootIEMCM"); - if (!MCMScript.IsValid()) - { + if (!MCMScript.IsValid()) { logger::error("Unable to locate MCM script on form"); return; } From 6c7b8de4772f72cdeecf0f9dffb73ae03cd91023 Mon Sep 17 00:00:00 2001 From: shad0wshayd3 <2724172+shad0wshayd3@users.noreply.github.com> Date: Thu, 17 Sep 2026 22:39:54 -0600 Subject: [PATCH 3/3] feat: move `ScriptObject::FromForm` call to `UpdateSettings` --- src/Config/Papyrus.cpp | 8 +++++++- src/Config/Papyrus.h | 10 ++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Config/Papyrus.cpp b/src/Config/Papyrus.cpp index e00c517a..23ccb957 100644 --- a/src/Config/Papyrus.cpp +++ b/src/Config/Papyrus.cpp @@ -49,9 +49,15 @@ namespace QuickLoot::Config void Papyrus::UpdateVariables(RE::StaticFunctionTag*) { + auto MCMScript = Util::ScriptObject::FromForm(MCMQuest, "QuickLootIEMCM"); + if (!MCMScript.IsValid()) { + logger::error("Unable to locate MCM script on form"); + return; + } + PROFILE_SCOPE; -#define LoadSettingsVar(name, ...) LoadSetting(name, #name, __VA_ARGS__) +#define LoadSettingsVar(name, ...) LoadSetting(MCMScript, name, #name, __VA_ARGS__) // General > Behavior Settings LoadSettingsVar(QLIE_ShowInCombat, true); diff --git a/src/Config/Papyrus.h b/src/Config/Papyrus.h index fb3ea22b..72d5f5e8 100644 --- a/src/Config/Papyrus.h +++ b/src/Config/Papyrus.h @@ -140,15 +140,9 @@ namespace QuickLoot::Config } template - static void LoadSetting(T& variable, const std::string& propertyName, const T& defaultValue) + static void LoadSetting(Util::ScriptObject& mcmscript, T& variable, const std::string& propertyName, const T& defaultValue) { - auto MCMScript = Util::ScriptObject::FromForm(MCMQuest, "QuickLootIEMCM"); - if (!MCMScript.IsValid()) { - logger::error("Unable to locate MCM script on form"); - return; - } - - const auto* prop = MCMScript.GetProperty(propertyName); + const auto* prop = mcmscript.GetProperty(propertyName); if (!prop) { variable = defaultValue;