From 55f5b11f263fd8c800e3d6b168a9b57cebd931c1 Mon Sep 17 00:00:00 2001 From: Wofsauge Date: Tue, 22 Mar 2022 23:00:18 +0100 Subject: [PATCH] Active item touched status is now saved in between game restarts --- eid_api.lua | 2 +- main.lua | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/eid_api.lua b/eid_api.lua index a10dcdb5..0640bda8 100644 --- a/eid_api.lua +++ b/eid_api.lua @@ -1483,7 +1483,7 @@ function EID:evaluateQueuedItems() if not EID.TouchedActiveItems[i] then EID.TouchedActiveItems[i] = {LastTouch = 0} end - if EID.TouchedActiveItems[i].LastTouch + 60 >= game:GetFrameCount() and player.QueuedItem.Item then + if EID.TouchedActiveItems[i].LastTouch + 45 >= game:GetFrameCount() and player.QueuedItem.Item then return else EID.TouchedActiveItems[i].LastTouch = 0 diff --git a/main.lua b/main.lua index c41de738..742af6be 100644 --- a/main.lua +++ b/main.lua @@ -1472,7 +1472,9 @@ EID:AddCallback(ModCallbacks.MC_POST_RENDER, onRender) local function OnGameStartGeneral(_,isSave) EID:buildTransformationTables() - EID.TouchedActiveItems = {} + if not isSave then + EID.TouchedActiveItems = {} + end end EID:AddCallback(ModCallbacks.MC_POST_GAME_STARTED, OnGameStartGeneral) @@ -1486,6 +1488,7 @@ if EID.MCMLoaded or REPENTANCE then ["FlipItemPositions"] = true, ["AbsorbedItems"] = true, ["CollectedItems"] = true, + ["TouchedActiveItems"] = true, } -------------------------------- --------Handle Savadata--------- @@ -1503,6 +1506,17 @@ if EID.MCMLoaded or REPENTANCE then EID.SaveGame[EID.Config["SaveGameNumber"]].ItemNeedsPickup[id] = nil end end + EID.TouchedActiveItems = {} + if isSave then + -- JSON saves integer table keys as strings. we need to transform them back... + for playerID, data in pairs(savedEIDConfig["TouchedActiveItems"]) do + local convertedData = {} + for key, value in pairs(data) do + convertedData[tonumber(key) or key] = value + end + EID.TouchedActiveItems[tonumber(playerID)] = convertedData + end + end if REPENTANCE then EID.BagItems = {} @@ -1589,6 +1603,7 @@ if EID.MCMLoaded or REPENTANCE then EID.Config["FlipItemPositions"] = flipItemTable or {} end EID.Config["CollectedItems"] = EID.CollectedItems + EID.Config["TouchedActiveItems"] = EID.TouchedActiveItems or {} EID.SaveData(EID, json.encode(EID.Config)) EID:hidePermanentText()