diff --git a/Source/Script/LuaScript.cpp b/Source/Script/LuaScript.cpp index e4a8b7b65..baf59fb57 100644 --- a/Source/Script/LuaScript.cpp +++ b/Source/Script/LuaScript.cpp @@ -1,6 +1,7 @@ #include "Script/LuaScript.h" #include "Archive/PakRegistry.h" #include "Client/Session.h" +#include "Contents/Configuration/GameSettingsMgr.h" #include "Contents/Configuration/ServiceOptions.h" #include "Contents/EntryQueueMgr.h" #include "Contents/Effects/EffectLists.h" @@ -28,6 +29,7 @@ extern "C" { #include #include +#include #include #include #include @@ -151,12 +153,20 @@ int SetSubChatWndOption(lua_State* state) { return 1; } +// INLINED +static CGameSettingsMgr* GameSettingsInstance() { + if (Singleton::s_instance == nullptr) { + Singleton::s_instance = new (std::nothrow) CGameSettingsMgr; + } + return Singleton::s_instance; +} + // OFFSET: 0x00AFF020 // FUNCTION: fn_18351 int SetCmdOnOffList(lua_State* state) { const char* name = luaL_checkstring(state, 1); const bool enabled = luaL_checknumber(state, 2) != 0.0; - Singleton::GetInstance(); + GameSettingsInstance(); const int optionId = SetOption(name, enabled); if (optionId != 3) { if (optionId == 229) { @@ -172,9 +182,9 @@ int SetCmdOnOffList(lua_State* state) { // FUNCTION: fn_18350 int GetCmdOnOffValue(lua_State* state) { const char* name = luaL_checkstring(state, 1); - Singleton::GetInstance(); + GameSettingsInstance(); const auto option = FindServiceOption(name); - lua_pushnumber(state, option.first == 3 ? -1.0 : static_cast(option.second != 0)); + lua_pushnumber(state, option.first != 3 ? static_cast(option.second != 0) : -1.0); return 1; }