From 6614b605dd4083c2349f0209896588257fb4a32b Mon Sep 17 00:00:00 2001 From: SimGamerJen Date: Thu, 30 Jul 2026 01:34:23 +0100 Subject: [PATCH 1/3] Stage Hired Helper Tool runtime block patch --- .automation/patch_hht_runtime_block.py | 107 +++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 .automation/patch_hht_runtime_block.py diff --git a/.automation/patch_hht_runtime_block.py b/.automation/patch_hht_runtime_block.py new file mode 100644 index 0000000..cf0544a --- /dev/null +++ b/.automation/patch_hht_runtime_block.py @@ -0,0 +1,107 @@ +from pathlib import Path + + +def replace_once(path: str, old: str, new: str) -> None: + p = Path(path) + text = p.read_text(encoding="utf-8") + count = text.count(old) + if count != 1: + raise RuntimeError(f"{path}: expected one match, found {count}: {old[:80]!r}") + p.write_text(text.replace(old, new, 1), encoding="utf-8") + + +# Hide the HUD immediately once the late compatibility guard detects HHT. +replace_once( + "scripts/HP_UI.lua", + "function HP_UI:render(dtMillis)\n if self.flashTime ~= nil and self.flashTime > 0 then", + "function HP_UI:render(dtMillis)\n if HP_Compatibility ~= nil and HP_Compatibility:isBlocked() then\n self.visible = false\n self.flashText = nil\n self.flashTime = 0\n return\n end\n\n if self.flashTime ~= nil and self.flashTime > 0 then", +) +replace_once( + "scripts/HP_UI.lua", + "function HP_UI:loadMap()\n if HP_Config ~= nil", + "function HP_UI:loadMap()\n if HP_Compatibility ~= nil and HP_Compatibility:isBlocked() then\n self.visible = false\n return\n end\n\n if HP_Config ~= nil", +) + +# Ensure every player/vehicle input path observes the compatibility block. +replace_once( + "scripts/RegisterPlayerActionEvents.lua", + "local function _onCycle(_, actionName, inputValue, callbackState, isAnalog)\n if not _isPress(inputValue, callbackState) then return end", + "local function _isCompatibilityBlocked()\n return HP_Compatibility ~= nil and HP_Compatibility:isBlocked()\nend\n\nlocal function _onCycle(_, actionName, inputValue, callbackState, isAnalog)\n if not _isPress(inputValue, callbackState) then return end\n if _isCompatibilityBlocked() then return end", +) +replace_once( + "scripts/RegisterPlayerActionEvents.lua", + "local function _onToggle(_, actionName, inputValue, callbackState, isAnalog)\n if HP_UI and HP_UI.onToggleAction then", + "local function _onToggle(_, actionName, inputValue, callbackState, isAnalog)\n if _isCompatibilityBlocked() then return end\n if HP_UI and HP_UI.onToggleAction then", +) +replace_once( + "scripts/RegisterPlayerActionEvents.lua", + "local function _onMode(_, actionName, inputValue, callbackState, isAnalog)\n if not _isPress(inputValue, callbackState) then return end", + "local function _onMode(_, actionName, inputValue, callbackState, isAnalog)\n if not _isPress(inputValue, callbackState) then return end\n if _isCompatibilityBlocked() then return end", +) +replace_once( + "scripts/RegisterPlayerActionEvents.lua", + "local function _onAppearanceMenu(_, actionName, inputValue, callbackState, isAnalog)\n if not _isPress(inputValue, callbackState) then return end", + "local function _onAppearanceMenu(_, actionName, inputValue, callbackState, isAnalog)\n if not _isPress(inputValue, callbackState) then return end\n if _isCompatibilityBlocked() then return end", +) +replace_once( + "scripts/RegisterPlayerActionEvents.lua", + "local function _registerPlayerActions()\n _registerPlayerAction", + "local function _registerPlayerActions()\n if _isCompatibilityBlocked() then return end\n _registerPlayerAction", +) +replace_once( + "scripts/RegisterPlayerActionEvents.lua", + "local function _registerVehicleActions(vehicle, isActiveForInput)\n if not isActiveForInput", + "local function _registerVehicleActions(vehicle, isActiveForInput)\n if _isCompatibilityBlocked() then return end\n if not isActiveForInput", +) + +# Withdraw the shared HelperProfiles API when the roster is owned by HHT. +replace_once( + "scripts/HP_IntegrationAPI.lua", + "local function hpApiPrint(message)\n print(LOG .. tostring(message))\nend\n\nlocal function normalizeSlot", + "local function hpApiPrint(message)\n print(LOG .. tostring(message))\nend\n\nlocal function isCompatibilityBlocked()\n return HP_Compatibility ~= nil and HP_Compatibility:isBlocked()\nend\n\nlocal function normalizeSlot", +) +replace_once( + "scripts/HP_IntegrationAPI.lua", + "local function getProfiles()\n if HelperProfiles == nil", + "local function getProfiles()\n if isCompatibilityBlocked() then return {} end\n if HelperProfiles == nil", +) +replace_once( + "scripts/HP_IntegrationAPI.lua", + " return {\n available = true,", + " return {\n available = not isCompatibilityBlocked(),\n disabledReason = isCompatibilityBlocked() and HP_Compatibility:getReason() or nil,", +) +replace_once( + "scripts/HP_IntegrationAPI.lua", + " function api:getSlots()\n local profiles = getProfiles()", + " function api:getSlots()\n if isCompatibilityBlocked() then return {} end\n local profiles = getProfiles()", +) +replace_once( + "scripts/HP_IntegrationAPI.lua", + "function HP_IntegrationAPI:publish(reason)\n if g_currentMission == nil then return false end", + "function HP_IntegrationAPI:unpublish()\n if g_currentMission ~= nil then\n if g_currentMission.helperProfilesAPI == self.api then g_currentMission.helperProfilesAPI = nil end\n if g_currentMission.fs25HelperProfilesAPI == self.api then g_currentMission.fs25HelperProfilesAPI = nil end\n end\n if rawget(_G, \"FS25_HelperProfiles_API\") == self.api then _G.FS25_HelperProfiles_API = nil end\n if rawget(_G, \"FS25_HelperProfilesAPI\") == self.api then _G.FS25_HelperProfilesAPI = nil end\n self.published = false\nend\n\nfunction HP_IntegrationAPI:publish(reason)\n if isCompatibilityBlocked() then\n self:unpublish()\n return false\n end\n if g_currentMission == nil then return false end", +) +replace_once( + "scripts/HP_IntegrationAPI.lua", + "function HP_IntegrationAPI:update()\n if not self.published", + "function HP_IntegrationAPI:update()\n if isCompatibilityBlocked() then\n self:unpublish()\n return\n end\n if not self.published", +) +replace_once( + "scripts/HP_IntegrationAPI.lua", + "function HP_IntegrationAPI:deleteMap()\n if g_currentMission ~= nil then\n if g_currentMission.helperProfilesAPI == self.api then g_currentMission.helperProfilesAPI = nil end\n if g_currentMission.fs25HelperProfilesAPI == self.api then g_currentMission.fs25HelperProfilesAPI = nil end\n end\n if rawget(_G, \"FS25_HelperProfiles_API\") == self.api then _G.FS25_HelperProfiles_API = nil end\n if rawget(_G, \"FS25_HelperProfilesAPI\") == self.api then _G.FS25_HelperProfilesAPI = nil end\n self.published = false\nend", + "function HP_IntegrationAPI:deleteMap()\n self:unpublish()\nend", +) + +# Static assertions for the corrected architecture. +checks = { + "scripts/HP_UI.lua": ["HP_Compatibility:isBlocked()", "self.visible = false"], + "scripts/RegisterPlayerActionEvents.lua": ["_isCompatibilityBlocked", "if _isCompatibilityBlocked() then return end"], + "scripts/HP_IntegrationAPI.lua": ["function HP_IntegrationAPI:unpublish()", "disabledReason", "if isCompatibilityBlocked() then return {} end"], + "scripts/HP_Compatibility.lua": ["helperCount > target", "function HP_Compatibility:update(dt)", "scanLoadedModTable"], +} +for path, needles in checks.items(): + text = Path(path).read_text(encoding="utf-8") + for needle in needles: + if needle not in text: + raise RuntimeError(f"{path}: missing verification token {needle!r}") + +print("HHT runtime block patch verified") From 35e96cfcf1cfeeb4cf6dd8c35bb48ac1c6793870 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 30 Jul 2026 00:35:10 +0000 Subject: [PATCH 2/3] Fully disable HelperProfiles when HHT owns the roster --- .automation/patch_hht_runtime_block.py | 107 ------------------------- scripts/HP_IntegrationAPI.lua | 35 ++++++-- scripts/HP_UI.lua | 12 +++ scripts/RegisterPlayerActionEvents.lua | 10 +++ 4 files changed, 49 insertions(+), 115 deletions(-) delete mode 100644 .automation/patch_hht_runtime_block.py diff --git a/.automation/patch_hht_runtime_block.py b/.automation/patch_hht_runtime_block.py deleted file mode 100644 index cf0544a..0000000 --- a/.automation/patch_hht_runtime_block.py +++ /dev/null @@ -1,107 +0,0 @@ -from pathlib import Path - - -def replace_once(path: str, old: str, new: str) -> None: - p = Path(path) - text = p.read_text(encoding="utf-8") - count = text.count(old) - if count != 1: - raise RuntimeError(f"{path}: expected one match, found {count}: {old[:80]!r}") - p.write_text(text.replace(old, new, 1), encoding="utf-8") - - -# Hide the HUD immediately once the late compatibility guard detects HHT. -replace_once( - "scripts/HP_UI.lua", - "function HP_UI:render(dtMillis)\n if self.flashTime ~= nil and self.flashTime > 0 then", - "function HP_UI:render(dtMillis)\n if HP_Compatibility ~= nil and HP_Compatibility:isBlocked() then\n self.visible = false\n self.flashText = nil\n self.flashTime = 0\n return\n end\n\n if self.flashTime ~= nil and self.flashTime > 0 then", -) -replace_once( - "scripts/HP_UI.lua", - "function HP_UI:loadMap()\n if HP_Config ~= nil", - "function HP_UI:loadMap()\n if HP_Compatibility ~= nil and HP_Compatibility:isBlocked() then\n self.visible = false\n return\n end\n\n if HP_Config ~= nil", -) - -# Ensure every player/vehicle input path observes the compatibility block. -replace_once( - "scripts/RegisterPlayerActionEvents.lua", - "local function _onCycle(_, actionName, inputValue, callbackState, isAnalog)\n if not _isPress(inputValue, callbackState) then return end", - "local function _isCompatibilityBlocked()\n return HP_Compatibility ~= nil and HP_Compatibility:isBlocked()\nend\n\nlocal function _onCycle(_, actionName, inputValue, callbackState, isAnalog)\n if not _isPress(inputValue, callbackState) then return end\n if _isCompatibilityBlocked() then return end", -) -replace_once( - "scripts/RegisterPlayerActionEvents.lua", - "local function _onToggle(_, actionName, inputValue, callbackState, isAnalog)\n if HP_UI and HP_UI.onToggleAction then", - "local function _onToggle(_, actionName, inputValue, callbackState, isAnalog)\n if _isCompatibilityBlocked() then return end\n if HP_UI and HP_UI.onToggleAction then", -) -replace_once( - "scripts/RegisterPlayerActionEvents.lua", - "local function _onMode(_, actionName, inputValue, callbackState, isAnalog)\n if not _isPress(inputValue, callbackState) then return end", - "local function _onMode(_, actionName, inputValue, callbackState, isAnalog)\n if not _isPress(inputValue, callbackState) then return end\n if _isCompatibilityBlocked() then return end", -) -replace_once( - "scripts/RegisterPlayerActionEvents.lua", - "local function _onAppearanceMenu(_, actionName, inputValue, callbackState, isAnalog)\n if not _isPress(inputValue, callbackState) then return end", - "local function _onAppearanceMenu(_, actionName, inputValue, callbackState, isAnalog)\n if not _isPress(inputValue, callbackState) then return end\n if _isCompatibilityBlocked() then return end", -) -replace_once( - "scripts/RegisterPlayerActionEvents.lua", - "local function _registerPlayerActions()\n _registerPlayerAction", - "local function _registerPlayerActions()\n if _isCompatibilityBlocked() then return end\n _registerPlayerAction", -) -replace_once( - "scripts/RegisterPlayerActionEvents.lua", - "local function _registerVehicleActions(vehicle, isActiveForInput)\n if not isActiveForInput", - "local function _registerVehicleActions(vehicle, isActiveForInput)\n if _isCompatibilityBlocked() then return end\n if not isActiveForInput", -) - -# Withdraw the shared HelperProfiles API when the roster is owned by HHT. -replace_once( - "scripts/HP_IntegrationAPI.lua", - "local function hpApiPrint(message)\n print(LOG .. tostring(message))\nend\n\nlocal function normalizeSlot", - "local function hpApiPrint(message)\n print(LOG .. tostring(message))\nend\n\nlocal function isCompatibilityBlocked()\n return HP_Compatibility ~= nil and HP_Compatibility:isBlocked()\nend\n\nlocal function normalizeSlot", -) -replace_once( - "scripts/HP_IntegrationAPI.lua", - "local function getProfiles()\n if HelperProfiles == nil", - "local function getProfiles()\n if isCompatibilityBlocked() then return {} end\n if HelperProfiles == nil", -) -replace_once( - "scripts/HP_IntegrationAPI.lua", - " return {\n available = true,", - " return {\n available = not isCompatibilityBlocked(),\n disabledReason = isCompatibilityBlocked() and HP_Compatibility:getReason() or nil,", -) -replace_once( - "scripts/HP_IntegrationAPI.lua", - " function api:getSlots()\n local profiles = getProfiles()", - " function api:getSlots()\n if isCompatibilityBlocked() then return {} end\n local profiles = getProfiles()", -) -replace_once( - "scripts/HP_IntegrationAPI.lua", - "function HP_IntegrationAPI:publish(reason)\n if g_currentMission == nil then return false end", - "function HP_IntegrationAPI:unpublish()\n if g_currentMission ~= nil then\n if g_currentMission.helperProfilesAPI == self.api then g_currentMission.helperProfilesAPI = nil end\n if g_currentMission.fs25HelperProfilesAPI == self.api then g_currentMission.fs25HelperProfilesAPI = nil end\n end\n if rawget(_G, \"FS25_HelperProfiles_API\") == self.api then _G.FS25_HelperProfiles_API = nil end\n if rawget(_G, \"FS25_HelperProfilesAPI\") == self.api then _G.FS25_HelperProfilesAPI = nil end\n self.published = false\nend\n\nfunction HP_IntegrationAPI:publish(reason)\n if isCompatibilityBlocked() then\n self:unpublish()\n return false\n end\n if g_currentMission == nil then return false end", -) -replace_once( - "scripts/HP_IntegrationAPI.lua", - "function HP_IntegrationAPI:update()\n if not self.published", - "function HP_IntegrationAPI:update()\n if isCompatibilityBlocked() then\n self:unpublish()\n return\n end\n if not self.published", -) -replace_once( - "scripts/HP_IntegrationAPI.lua", - "function HP_IntegrationAPI:deleteMap()\n if g_currentMission ~= nil then\n if g_currentMission.helperProfilesAPI == self.api then g_currentMission.helperProfilesAPI = nil end\n if g_currentMission.fs25HelperProfilesAPI == self.api then g_currentMission.fs25HelperProfilesAPI = nil end\n end\n if rawget(_G, \"FS25_HelperProfiles_API\") == self.api then _G.FS25_HelperProfiles_API = nil end\n if rawget(_G, \"FS25_HelperProfilesAPI\") == self.api then _G.FS25_HelperProfilesAPI = nil end\n self.published = false\nend", - "function HP_IntegrationAPI:deleteMap()\n self:unpublish()\nend", -) - -# Static assertions for the corrected architecture. -checks = { - "scripts/HP_UI.lua": ["HP_Compatibility:isBlocked()", "self.visible = false"], - "scripts/RegisterPlayerActionEvents.lua": ["_isCompatibilityBlocked", "if _isCompatibilityBlocked() then return end"], - "scripts/HP_IntegrationAPI.lua": ["function HP_IntegrationAPI:unpublish()", "disabledReason", "if isCompatibilityBlocked() then return {} end"], - "scripts/HP_Compatibility.lua": ["helperCount > target", "function HP_Compatibility:update(dt)", "scanLoadedModTable"], -} -for path, needles in checks.items(): - text = Path(path).read_text(encoding="utf-8") - for needle in needles: - if needle not in text: - raise RuntimeError(f"{path}: missing verification token {needle!r}") - -print("HHT runtime block patch verified") diff --git a/scripts/HP_IntegrationAPI.lua b/scripts/HP_IntegrationAPI.lua index be49870..75e78f3 100644 --- a/scripts/HP_IntegrationAPI.lua +++ b/scripts/HP_IntegrationAPI.lua @@ -15,6 +15,10 @@ local function hpApiPrint(message) print(LOG .. tostring(message)) end +local function isCompatibilityBlocked() + return HP_Compatibility ~= nil and HP_Compatibility:isBlocked() +end + local function normalizeSlot(slot) if HP_SlotRegistry ~= nil and HP_SlotRegistry.normalise ~= nil then return HP_SlotRegistry:normalise(slot, HP_SlotRegistry.TARGET_COUNT) @@ -23,6 +27,7 @@ local function normalizeSlot(slot) end local function getProfiles() + if isCompatibilityBlocked() then return {} end if HelperProfiles == nil or type(HelperProfiles.getProfiles) ~= "function" then return {} end local ok, profiles = pcall(HelperProfiles.getProfiles, HelperProfiles) return ok and type(profiles) == "table" and profiles or {} @@ -194,7 +199,8 @@ local function buildApi() and HP_RosterExpansion:getStatus() or nil return { - available = true, + available = not isCompatibilityBlocked(), + disabledReason = isCompatibilityBlocked() and HP_Compatibility:getReason() or nil, apiVersion = self.apiVersion, modName = self.modName, modVersion = self.modVersion, @@ -256,6 +262,7 @@ local function buildApi() end function api:getSlots() + if isCompatibilityBlocked() then return {} end local profiles = getProfiles() local slots = {} for index = 1, getManagedSlotCount(profiles) do @@ -267,7 +274,21 @@ local function buildApi() return api end +function HP_IntegrationAPI:unpublish() + if g_currentMission ~= nil then + if g_currentMission.helperProfilesAPI == self.api then g_currentMission.helperProfilesAPI = nil end + if g_currentMission.fs25HelperProfilesAPI == self.api then g_currentMission.fs25HelperProfilesAPI = nil end + end + if rawget(_G, "FS25_HelperProfiles_API") == self.api then _G.FS25_HelperProfiles_API = nil end + if rawget(_G, "FS25_HelperProfilesAPI") == self.api then _G.FS25_HelperProfilesAPI = nil end + self.published = false +end + function HP_IntegrationAPI:publish(reason) + if isCompatibilityBlocked() then + self:unpublish() + return false + end if g_currentMission == nil then return false end self.api = self.api or buildApi() self.api.modVersion = self.modVersion @@ -294,6 +315,10 @@ end function HP_IntegrationAPI:loadMap() self:publish("loadMap") end function HP_IntegrationAPI:update() + if isCompatibilityBlocked() then + self:unpublish() + return + end if not self.published or g_currentMission == nil or g_currentMission.helperProfilesAPI ~= self.api or g_currentMission.fs25HelperProfilesAPI ~= self.api then @@ -302,13 +327,7 @@ function HP_IntegrationAPI:update() end function HP_IntegrationAPI:deleteMap() - if g_currentMission ~= nil then - if g_currentMission.helperProfilesAPI == self.api then g_currentMission.helperProfilesAPI = nil end - if g_currentMission.fs25HelperProfilesAPI == self.api then g_currentMission.fs25HelperProfilesAPI = nil end - end - if rawget(_G, "FS25_HelperProfiles_API") == self.api then _G.FS25_HelperProfiles_API = nil end - if rawget(_G, "FS25_HelperProfilesAPI") == self.api then _G.FS25_HelperProfilesAPI = nil end - self.published = false + self:unpublish() end addModEventListener(HP_IntegrationAPI) diff --git a/scripts/HP_UI.lua b/scripts/HP_UI.lua index 1d297a8..de828a8 100644 --- a/scripts/HP_UI.lua +++ b/scripts/HP_UI.lua @@ -604,6 +604,13 @@ end -- ===== Render ================================================================ function HP_UI:render(dtMillis) + if HP_Compatibility ~= nil and HP_Compatibility:isBlocked() then + self.visible = false + self.flashText = nil + self.flashTime = 0 + return + end + if self.flashTime ~= nil and self.flashTime > 0 then local dt = tonumber(dtMillis) or 16 self.flashTime = math.max(0, self.flashTime - dt * 0.001) @@ -720,6 +727,11 @@ end -- ===== Engine hooks ========================================================== function HP_UI:loadMap() + if HP_Compatibility ~= nil and HP_Compatibility:isBlocked() then + self.visible = false + return + end + if HP_Config ~= nil and HP_Config.read ~= nil and HP_Config.applyToUI ~= nil and HP_Config.init ~= nil then HP_Config:init() local config = HP_Config:read() diff --git a/scripts/RegisterPlayerActionEvents.lua b/scripts/RegisterPlayerActionEvents.lua index 63aaefe..53f04c0 100644 --- a/scripts/RegisterPlayerActionEvents.lua +++ b/scripts/RegisterPlayerActionEvents.lua @@ -44,8 +44,13 @@ local function _isHpModifierDown() or _isPhysicalKeyPressed("KEY_ralt") end +local function _isCompatibilityBlocked() + return HP_Compatibility ~= nil and HP_Compatibility:isBlocked() +end + local function _onCycle(_, actionName, inputValue, callbackState, isAnalog) if not _isPress(inputValue, callbackState) then return end + if _isCompatibilityBlocked() then return end -- GIANTS action bindings are not exclusive: KEY_semicolon can still fire -- when KEY_shift/KEY_ctrl/KEY_alt + KEY_semicolon is pressed. @@ -63,6 +68,7 @@ local function _onCycle(_, actionName, inputValue, callbackState, isAnalog) end local function _onToggle(_, actionName, inputValue, callbackState, isAnalog) + if _isCompatibilityBlocked() then return end if HP_UI and HP_UI.onToggleAction then HP_UI:onToggleAction(actionName, inputValue, callbackState, isAnalog) end @@ -70,6 +76,7 @@ end local function _onMode(_, actionName, inputValue, callbackState, isAnalog) if not _isPress(inputValue, callbackState) then return end + if _isCompatibilityBlocked() then return end if HelperProfiles and HelperProfiles.togglePickMode then HelperProfiles:togglePickMode() end @@ -77,6 +84,7 @@ end local function _onAppearanceMenu(_, actionName, inputValue, callbackState, isAnalog) if not _isPress(inputValue, callbackState) then return end + if _isCompatibilityBlocked() then return end if HP_AppearanceBindingsGui ~= nil and HP_AppearanceBindingsGui.open ~= nil then HP_AppearanceBindingsGui:open() elseif HP_AppearanceMenu ~= nil and HP_AppearanceMenu.toggle ~= nil then @@ -120,6 +128,7 @@ local function _unregisterPlayerAction(field, label) end local function _registerPlayerActions() + if _isCompatibilityBlocked() then return end _registerPlayerAction("_playerCycleId", InputAction.OPEN_HELPER_MENU, HelperProfiles, _onCycle, "OPEN_HELPER_MENU") _registerPlayerAction("_playerToggleId", InputAction.HP_TOGGLE_OVERLAY, HP_UI, _onToggle, "HP_TOGGLE_OVERLAY") _registerPlayerAction("_playerModeId", InputAction.HP_TOGGLE_MODE, HelperProfiles, _onMode, "HP_TOGGLE_MODE") @@ -186,6 +195,7 @@ local function _addVehicleAction(vehicle, spec, inputAction, target, callback, l end local function _registerVehicleActions(vehicle, isActiveForInput) + if _isCompatibilityBlocked() then return end if not isActiveForInput or vehicle == nil or vehicle.addActionEvent == nil then return end local spec = _ensureVehicleSpec(vehicle) From a7c42eaf40cf3a1407a891449adf8d2a8046f9a5 Mon Sep 17 00:00:00 2001 From: SimGamerJen Date: Thu, 30 Jul 2026 01:38:14 +0100 Subject: [PATCH 3/3] Avoid blocking on inactive installed roster mods --- scripts/HP_Compatibility.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/HP_Compatibility.lua b/scripts/HP_Compatibility.lua index 943c584..9e1a695 100644 --- a/scripts/HP_Compatibility.lua +++ b/scripts/HP_Compatibility.lua @@ -40,7 +40,7 @@ local function modLooksActive(mod) if mod.isLoaded ~= nil then return mod.isLoaded == true end if mod.isActive ~= nil then return mod.isActive == true end if mod.isSelected ~= nil then return mod.isSelected == true end - return true + return false end local function scanLoadedModTable()