From f00322d656dad87f5c0f0c699003decfcc057e6a Mon Sep 17 00:00:00 2001 From: Buurazu Date: Tue, 19 Oct 2021 22:13:29 -0400 Subject: [PATCH 01/11] Bag of Crafting locked items check --- eid_bagOfCrafting.lua | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/eid_bagOfCrafting.lua b/eid_bagOfCrafting.lua index 0f67bf2f..a6cb192b 100644 --- a/eid_bagOfCrafting.lua +++ b/eid_bagOfCrafting.lua @@ -511,24 +511,11 @@ EID.refreshNextTick = false EID.downHeld = 0 EID.upHeld = 0 -local function GetMaxCollectibleID() - local id = CollectibleType.NUM_COLLECTIBLES-1 - local step = 16 - while step > 0 do - if Isaac.GetItemConfig():GetCollectible(id+step) ~= nil then - id = id + step - else - step = step // 2 - end - end - - return id -end local maxItemID = nil local function detectModdedItems() if maxItemID == nil then - maxItemID = GetMaxCollectibleID() + maxItemID = EID:GetMaxCollectibleID() end if maxItemID > CollectibleType.NUM_COLLECTIBLES then local customDescObj = EID:getDescriptionObj(5, 100, 710) @@ -683,7 +670,13 @@ function EID:handleBagOfCraftingRendering() for k, v in pairs(randResults) do local resultID = EID:calculateBagOfCrafting(v) if resultID > 0 then - table.insert(calcResults, {v, resultID}) + if (not EID:isCollectibleUnlockedAnyPool(resultID)) then + if (EID.Config["BagOfCraftingDisplayBreakfast"]) then + table.insert(calcResults, {v, resultID, 25}) + end + else + table.insert(calcResults, {v, resultID}) + end end end randResultCache[queryString] = calcResults @@ -784,8 +777,13 @@ function EID:handleBagOfCraftingRendering() for i=EID.bagOfCraftingOffset+1,EID.bagOfCraftingOffset+EID.Config["BagOfCraftingResults"] do local v = results[i] if (not v) then break end + if (not EID.Config["BagOfCraftingDisplayNames"]) then - customDescObj.Description = customDescObj.Description.."# {{Collectible"..v[2].."}} " .. " =" + customDescObj.Description = customDescObj.Description.."# {{Collectible"..v[2].."}} " + --tack on Breakfast image to locked recipes + if (v[3]) then customDescObj.Description = customDescObj.Description.."{{Collectible25}}" end + --color the equals sign with the item quality, so the order of the list can make sense + customDescObj.Description = customDescObj.Description.. qualities[EID.itemWeightsLookup[v[2]]] .. "={{CR}}" --only display the item name if it's the first occurrence else if (prevItem ~= v[2]) then @@ -795,7 +793,10 @@ function EID:handleBagOfCraftingRendering() else customDescObj.Description = customDescObj.Description.."#" end + --replace recipe bulletpoint with Breakfast on locked recipes + if (v[3]) then customDescObj.Description = customDescObj.Description.." {{Collectible25}} " end end + customDescObj.Description = customDescObj.Description..EID:tableToCraftingIconsMerged(v[1]) prevItem = v[2] end From 744b4c329114744b4217df7e32d06fd8592fb6c3 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Tue, 19 Oct 2021 22:15:13 -0400 Subject: [PATCH 02/11] max collectible ID function --- eid_api.lua | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/eid_api.lua b/eid_api.lua index 9ae40089..536adb1c 100644 --- a/eid_api.lua +++ b/eid_api.lua @@ -759,10 +759,26 @@ function EID:getSpindownResult(collectibleID) return newID end +function EID:GetMaxCollectibleID() + local id = CollectibleType.NUM_COLLECTIBLES-1 + local step = 16 + while step > 0 do + if Isaac.GetItemConfig():GetCollectible(id+step) ~= nil then + id = id + step + else + step = step // 2 + end + end + + return id +end + +local maxCollectibleID = nil function EID:isCollectibleUnlocked(collectibleID, itemPoolOfItem) local itemPool = Game():GetItemPool() local itemConfig = Isaac.GetItemConfig() - for i= 1, GetMaxCollectibleID() do + if (not maxCollectibleID) then maxCollectibleID = EID:GetMaxCollectibleID() end + for i= 1, maxCollectibleID do if ItemConfig.Config.IsValidCollectible(i) and i ~= collectibleID then itemPool:AddRoomBlacklist(i) end @@ -822,20 +838,20 @@ end -- Converts a given table into a string containing the crafting icons of the table, which are also grouped to reduce render lag -- Example input: {1,1,1,2,2,3,3,3} -- Result: "3{{Crafting3}}2{{Crafting2}}3{{Crafting1}}" +local emptyPickupTable = {} +for i=1,25 do emptyPickupTable[i] = 0 end function EID:tableToCraftingIconsMerged(craftTable) local sortedList = {table.unpack(craftTable)} table.sort(sortedList, function(a, b) return a > b end) - local filteredList = {} + local filteredList = {table.unpack(emptyPickupTable)} for _,nr in ipairs(sortedList) do - if filteredList[nr] == nil then - filteredList[nr] = 1 - else - filteredList[nr] = filteredList[nr] +1 - end + filteredList[nr] = filteredList[nr] +1 end local iconString = "" - for nr,count in pairs(filteredList) do - iconString = iconString..count.."{{Crafting"..nr.."}}" + for nr,count in ipairs(filteredList) do + if (count > 0) then + iconString = iconString..count.."{{Crafting"..nr.."}}" + end end return iconString end From b4923dd12f558219f114b703df5032223000975c Mon Sep 17 00:00:00 2001 From: Buurazu Date: Tue, 19 Oct 2021 22:16:05 -0400 Subject: [PATCH 03/11] Locked recipes option, lower default random recipes --- eid_config.lua | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/eid_config.lua b/eid_config.lua index 8d144fac..bb6410db 100644 --- a/eid_config.lua +++ b/eid_config.lua @@ -176,8 +176,8 @@ EID.UserConfig = { ["BagOfCraftingCombinationMax"] = 12, -- Changes the number of random recipes calculated -- Higher numbers will cause lag spikes on new pickup sets! - -- Default = 500 - ["BagOfCraftingRandomResults"] = 500, + -- Default = 400 + ["BagOfCraftingRandomResults"] = 400, -- Set the keybinding to toggle the scroll feature of the bag of crafting descriptions -- look into the AB+ or Repentance documentation for the key names here: https://wofsauge.github.io/IsaacDocs/rep/enums/ButtonAction.html -- Default = ButtonAction.ACTION_MAP @@ -185,6 +185,9 @@ EID.UserConfig = { -- Display craftable item names, moving the recipe to a new line -- Default = false ["BagOfCraftingDisplayNames"] = false, + -- Display locked item recipes, which will all turn into Breakfast + -- Default = false + ["BagOfCraftingDisplayBreakfast"] = false, ---------Mouse Controls----------- @@ -282,9 +285,10 @@ EID.DefaultConfig = { ["DisplayBagOfCrafting"] = "always", ["BagOfCraftingResults"] = 7, ["BagOfCraftingCombinationMax"] = 12, - ["BagOfCraftingRandomResults"] = 500, + ["BagOfCraftingRandomResults"] = 400, ["BagOfCraftingToggleKey"] = ButtonAction.ACTION_MAP, ["BagOfCraftingDisplayNames"] = false, + ["BagOfCraftingDisplayBreakfast"] = false, ["SpindownDiceResults"] = 3, ["EnableMouseControls"] = false, ["ShowCursor"] = false, From 39fb48fd60fbaf1e351d0343e5a7f522d2d9ccfd Mon Sep 17 00:00:00 2001 From: Buurazu Date: Tue, 19 Oct 2021 22:16:37 -0400 Subject: [PATCH 04/11] Locked recipes option --- mod_config_menu.lua | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/mod_config_menu.lua b/mod_config_menu.lua index 6b71f2ae..b76b4ace 100644 --- a/mod_config_menu.lua +++ b/mod_config_menu.lua @@ -1032,6 +1032,28 @@ if MCMLoaded then Info = {"If on, each result takes two lines; lower your displayed results accordingly"} } ) + -- Bag of Crafting Breakfast recipes + MCM.AddSetting( + "EID", + "Crafting", + { + Type = ModConfigMenu.OptionType.BOOLEAN, + CurrentSetting = function() + return EID.Config["BagOfCraftingDisplayBreakfast"] + end, + Display = function() + local onOff = "False" + if EID.Config["BagOfCraftingDisplayBreakfast"] then + onOff = "True" + end + return "Show Locked Recipes: " .. onOff + end, + OnChange = function(currentBool) + EID.Config["BagOfCraftingDisplayBreakfast"] = currentBool + end, + Info = {"Recipes for locked items turn into Breakfast, filling the list with essentially useless recipes"} + } + ) MCM.AddSpace("EID", "Crafting") --------Clear Floor--------- From 598019686b6e3eedd6f2120e06a5c992835d2ea9 Mon Sep 17 00:00:00 2001 From: Buurazu Date: Wed, 20 Oct 2021 05:25:38 -0400 Subject: [PATCH 05/11] collectible lock check tweaks --- eid_api.lua | 49 ++++++++++++-------- eid_config.lua | 14 ++++-- eid_data.lua | 20 ++++++++ eid_modifiers.lua | 1 + mod_config_menu.lua | 109 +++++++++++++++++++++++++++----------------- 5 files changed, 127 insertions(+), 66 deletions(-) diff --git a/eid_api.lua b/eid_api.lua index 536adb1c..ac5d3263 100644 --- a/eid_api.lua +++ b/eid_api.lua @@ -755,7 +755,8 @@ function EID:getSpindownResult(collectibleID) local newID = collectibleID repeat newID = newID - 1 - until (config:GetCollectible(newID) and EID:isCollectibleUnlockedAnyPool(newID) and not config:GetCollectible(newID).Hidden) or newID == CollectibleType.COLLECTIBLE_NULL + --note: the order of this statement is important so that the item is checked for being in a pool (to display a ? if it isn't) + until (config:GetCollectible(newID) and (EID:isCollectibleUnlockedAnyPool(newID) or not EID.Config["SpindownDiceSkipLocked"]) and not config:GetCollectible(newID).Hidden) or newID == CollectibleType.COLLECTIBLE_NULL return newID end @@ -776,7 +777,7 @@ end local maxCollectibleID = nil function EID:isCollectibleUnlocked(collectibleID, itemPoolOfItem) local itemPool = Game():GetItemPool() - local itemConfig = Isaac.GetItemConfig() + --local itemConfig = Isaac.GetItemConfig() if (not maxCollectibleID) then maxCollectibleID = EID:GetMaxCollectibleID() end for i= 1, maxCollectibleID do if ItemConfig.Config.IsValidCollectible(i) and i ~= collectibleID then @@ -798,27 +799,35 @@ end function EID:isCollectibleUnlockedAnyPool(collectibleID) local itemConfig = Isaac.GetItemConfig() + local item = itemConfig:GetCollectible(collectibleID) if EID.itemUnlockStates[collectibleID] == nil then - local itemPoolNum = 0 - while EID:isCollectibleUnlocked(collectibleID, itemPoolNum) == false do - if itemPoolNum == ItemPoolType.NUM_ITEMPOOLS - 1 then - if itemConfig:GetCollectible(collectibleID).Tags & ItemConfig.TAG_QUEST == ItemConfig.TAG_QUEST then - --print("item " .. tostring(collectibleID) .. " is tagged as quest!") - EID.itemUnlockStates[collectibleID] = true - return true - end - --print("couldn't find item " .. tostring(collectibleID) .. " in any item pools") - EID.itemUnlockStates[collectibleID] = false - return false - end - itemPoolNum = itemPoolNum + 1 + --whitelist all quest items and items with no associated achievement + if (item.AchievementID == -1 or item.Tags & ItemConfig.TAG_QUEST == ItemConfig.TAG_QUEST) then + --print("item " .. tostring(collectibleID) .. " is tagged as quest or has no achievement ID!") + EID.itemUnlockStates[collectibleID] = true + return true end - --print("found item " .. tostring(collectibleID) .. " unlocked in pool " .. tostring(itemPoolNum)) - EID.itemUnlockStates[collectibleID] = true - return true + --blacklist all hidden items + if (item.Hidden) then + --print("item " .. tostring(collectibleID) .. " is tagged as hidden!") + EID.itemUnlockStates[collectibleID] = false + return false + end + --iterate through the pools this item can be in + for k,v in ipairs(EID.CollectiblesPools[collectibleID]) do + if (EID:isCollectibleUnlocked(collectibleID, v)) then + --print("found item " .. tostring(collectibleID) .. " unlocked in pool " .. tostring(v)) + EID.itemUnlockStates[collectibleID] = true + return true + end + end + --note: some items will still be missed by this, if they've been taken out of their pools (especially when in Greed Mode) + --print("couldn't find item " .. tostring(collectibleID) .. " in any item pools") + EID.itemUnlockStates[collectibleID] = false + return false else - --print("item " .. tostring(collectibleID) .. " was already cached: " .. tostring(EID.itemUnlockStates[collectibleID])) - return EID.itemUnlockStates[collectibleID] + --print("item " .. tostring(collectibleID) .. " was already cached: " .. tostring(EID.itemUnlockStates[collectibleID])) + return EID.itemUnlockStates[collectibleID] end end diff --git a/eid_config.lua b/eid_config.lua index bb6410db..e370a575 100644 --- a/eid_config.lua +++ b/eid_config.lua @@ -184,10 +184,11 @@ EID.UserConfig = { ["BagOfCraftingToggleKey"] = ButtonAction.ACTION_MAP, -- Display craftable item names, moving the recipe to a new line -- Default = false - ["BagOfCraftingDisplayNames"] = false, + ["BagOfCraftingDisplayNames"] = false, -- Display locked item recipes, which will all turn into Breakfast - -- Default = false - ["BagOfCraftingDisplayBreakfast"] = false, + -- However, there are false positives with this, as the current state of item pools is checked to determine an item's locked status + -- Default = true + ["BagOfCraftingDisplayBreakfast"] = true, ---------Mouse Controls----------- @@ -205,6 +206,10 @@ EID.UserConfig = { -- Default = 3 ["SpindownDiceResults"] = 3, + -- Spindown dice preview can skip over locked items, however the method for determining an item's locked status is not perfect + -- Default = false + ["SpindownDiceSkipLocked"] = false, + -- Show ID of described object in the format "Type.Variant.SubType" next to the name -- Default = false ["ShowObjectID"] = false, @@ -287,9 +292,10 @@ EID.DefaultConfig = { ["BagOfCraftingCombinationMax"] = 12, ["BagOfCraftingRandomResults"] = 400, ["BagOfCraftingToggleKey"] = ButtonAction.ACTION_MAP, - ["BagOfCraftingDisplayNames"] = false, + ["BagOfCraftingDisplayNames"] = false, ["BagOfCraftingDisplayBreakfast"] = false, ["SpindownDiceResults"] = 3, + ["SpindownDiceSkipLocked"] = false, ["EnableMouseControls"] = false, ["ShowCursor"] = false, ["ErrorMessage"] = "[Effect not defined]", diff --git a/eid_data.lua b/eid_data.lua index 75728362..365c70bc 100644 --- a/eid_data.lua +++ b/eid_data.lua @@ -364,3 +364,23 @@ EID.InlineColors = { return color end, } + + +--[[ +A list of all the item pools that an item is in +generated from itempools in bagOfCrafting.lua: +local items = {} +for i=1,800 do items[i] = {} end + +for k,v in ipairs(itempools) do + for k2,v2 in ipairs(v) do + local item = v2[1] + table.insert(items[item],k-1) + end +end +for k,v in ipairs(items) do + print("{" .. table.concat(v,",") .. "},") +end +]] +EID.CollectiblesPools = { +{0,16,23,24}, {0,16}, {0,16,23}, {0,16,23}, {0,16,23}, {0,16}, {0,4,16,21,29}, {0,3,16,28}, {7}, {0,13,16,28}, {5,18}, {0,16,17}, {0,11,16}, {0,2,11,17}, {0,17}, {5,17}, {0,5}, {}, {0}, {5}, {1,10,23}, {2,10,17}, {2,10,17}, {2,10,17}, {2,10,17}, {2,10,17,30}, {2,17,29}, {2,8,17}, {2,8,15,17,27}, {2,15,17,27}, {2,15,17,27}, {2,8,17,23}, {1,4,6}, {3,6,16,20}, {3,5,6,16,20}, {0,7}, {0,16,25}, {16,23}, {0,15,27}, {0}, {0,15,27}, {0,16,30}, {}, {0,23}, {0,16}, {0,10,18,23}, {0,16,23}, {0,16,23}, {0,23}, {16}, {2,3,11,12,20,23}, {0,16}, {0}, {1,10}, {0,15,16,27}, {0,16}, {0,13,16,28}, {0,6}, {}, {1,29}, {}, {0,16}, {1,14,18,23}, {1,16}, {0,6,16}, {0,23}, {0,3,16,20,28}, {0,16,20,23}, {0,16}, {2,11,17}, {0,17}, {0,4,21}, {16,17,18,19,20,21,22,28}, {3,8,20}, {0,1,18}, {0,18}, {0,16,23}, {0,6,16,21}, {3,11,12,20}, {3,11,12,20}, {3,9,12,19,20}, {3,11,20}, {3,11,20}, {3,5,18}, {0,1,16,23}, {0}, {0,11,16}, {0,16,28}, {0,16,23}, {23}, {0,18,23}, {0,2}, {0,16,23}, {0,16}, {0,16,23,28}, {0,16,28}, {0,3,6,16,20}, {0,4,16}, {0,16,28}, {0,16,28}, {0,4,16,17}, {0,1,10,11,15,16,23,27}, {0,16}, {0,16}, {0,18,23}, {0,16,25}, {0,16}, {0,4,16}, {0,3,20}, {0,15,16,27}, {0,10,16}, {4,21,28}, {0,3,20,28}, {0,3,15,16,20,27}, {0,3,16,20}, {1,14,18,23}, {0,16,20,28}, {3,20}, {}, {0,5,16,17}, {0,5}, {3,11,20}, {0,3,6,20}, {0,4,16}, {0,16,25}, {3,11}, {0,3,5,11}, {0,13,16,28}, {0}, {}, {0,16}, {16,17,20}, {3,9,12,19,20}, {3,9,12,19,20}, {}, {0,23}, {0,1,16,23,25}, {0,16,21,29}, {1,15,18,27}, {0,9,16,25,30}, {2}, {0,4,16}, {0,2,11,17}, {0,10,28}, {3,9,12,19,20}, {0,4,16}, {1,23}, {0,16}, {0,16}, {0,16}, {0,16}, {0,16,23}, {0,16,23}, {0,16}, {0,16,28}, {1,4,18}, {0,3,16,20}, {}, {3,11,20}, {0}, {0,16}, {0,4,16,21}, {0,3,16,28}, {1}, {2}, {0,18,23}, {0,16,28}, {5}, {0,16}, {0,16,28}, {0}, {0,3,16,20,28}, {0,4,21}, {0,16,28}, {0,13,16,27}, {0,2,17}, {1,10}, {0,4,21}, {8}, {0,10}, {}, {4,21}, {2,17,29}, {4,21}, {4,21}, {0,16}, {3,20}, {0,16,28}, {0,16,23}, {0,5,25}, {0,16}, {0,6,16}, {2,17}, {2,8,17,23}, {1,2,10,11,15,17,27}, {2,8,17,23}, {2,17,21}, {2,10,17}, {1,13,15,17,27}, {0,15,16,27}, {0,16}, {0}, {1}, {1,10,18}, {1,14}, {0,16}, {28}, {1,18,23}, {0,7,16,25}, {0,16}, {0}, {3,9,12,19,20,23}, {0,5,16}, {0,16}, {3,12}, {3,11,12,20}, {0,15,16,27}, {2}, {2}, {0,16,25}, {0,16}, {0,16}, {0,16}, {0,16}, {0,3,11,12,20}, {5,16}, {0,1,23}, {0,15,16,27}, {0,16}, {3,11,20}, {0,16}, {1,23}, {0,16}, {0,16}, {}, {0,16}, {0,3,16,20}, {}, {}, {0,2,11,17}, {3,11,12}, {0,5,16}, {4,21}, {0,16,23}, {0,16}, {1,10,18}, {1,18}, {1,18}, {1}, {1}, {1,18,23}, {1,18}, {2,17}, {2,16,17}, {2,8,17,23}, {0,16,25}, {0,16}, {5,16}, {3,11,20}, {1,12,18}, {0,16}, {3,5,11}, {5,23}, {0,13,16,28}, {0,16,28}, {0,16,28}, {0,16,23,28}, {0,3,16,20,28,30}, {0,3,16,20,28}, {0,20,28}, {0,5,10,16}, {0,13,28}, {0,16,28,30}, {0,16,28}, {0,3,28}, {0}, {0,16,28}, {0,3,11,28}, {0,13,16,28}, {0,16,28}, {0,16,28}, {0,6}, {0,18,23}, {0,18,23}, {0,18,23}, {1,5,18}, {0,5,6}, {0,16}, {1,18}, {1}, {0,16}, {0,3,6,20}, {}, {0,10}, {0,1}, {1}, {1,9,18}, {0}, {0,16}, {0,16}, {0,16}, {0,16}, {0,16}, {0}, {0,16}, {0,16}, {0,16}, {0,16}, {0,16}, {0,16}, {3,20}, {0,16}, {0,4,21}, {0,17}, {0,16}, {0,5,9,16}, {0,16}, {0,16}, {0,16}, {0,13,16,28}, {0,5,16}, {0,16,28}, {0}, {0}, {0,16}, {4}, {}, {}, {0,16}, {0,16}, {4,21}, {0,4,16}, {0,4,16,21}, {0,4,16,21}, {0,4,16,21}, {0,16,30}, {1,23}, {1,23}, {2,17}, {2,11,17}, {2,8,17,27}, {2,17}, {2,8,13,17}, {2,8,17}, {2,11,17}, {2,17}, {1}, {1,5,18}, {1,16,29}, {0}, {0,16}, {0,16,23}, {0,16,25}, {2,8,17}, {2,8,15,17,27}, {1,14,18}, {1,16,23}, {0,16}, {0,16}, {3,20,28}, {0,28}, {0,10,16,23,29}, {4,21,28}, {0,13,16,28}, {0,13,16,28}, {0,16,25}, {0,16,25}, {0,16}, {0,16}, {2,8,17,23}, {0,9,12,16}, {1,14,18,28}, {0,16}, {0,4,16}, {0,16}, {1,10}, {0,16}, {0,7,16}, {0,16}, {1,16,18}, {0}, {0,16,23}, {1,16,23}, {0,16,28}, {0,10,28}, {0,18,23}, {4,21}, {0,5,13,28}, {0,5,16}, {0,4,21,28}, {0,3,16,20}, {0,16}, {0,16}, {0,16}, {0,16,23}, {1}, {0,16,23}, {0,16}, {3,20}, {4,21}, {0,16}, {1,5,18}, {1,18,23,28}, {0,28}, {0,5,18}, {0,18,23}, {0,16,21}, {3,12,20}, {3,11,20}, {0,16}, {0,3,16,20}, {3,20}, {4,21}, {1}, {4,21}, {1,16,18}, {3,28}, {0}, {0,23}, {3,11,20}, {0,16}, {0,1,23}, {4,21}, {1,5}, {1,16,23}, {0,13,16,28}, {0,23}, {2,8,17}, {}, {0,13,16,28}, {0,3,16,20}, {0,16,25}, {3,20}, {1,16,18}, {0,28}, {0,16}, {0,23}, {2,8,17,23}, {1,15,18,23,27,29}, {0,16}, {3,20}, {3,12,20}, {0,16}, {0,8,16,23}, {0,16}, {0,16}, {0,10,16}, {0,16}, {0,16}, {5,16}, {1,12,18,20,23}, {0,16}, {0,16}, {0,16}, {2,8,10,17,27}, {2,8,10,17}, {0,16}, {0,16}, {0,16}, {0,16}, {0,16}, {3,20}, {0,16}, {4,21}, {0,16,23}, {0,16}, {0,16}, {3,12,20,28}, {0,16}, {0,16,28}, {0,16,28}, {1,18,28}, {0,16,28}, {}, {1,3,9,11,12,18}, {0,18,23}, {3,4,18}, {0,18,23}, {1}, {1,30}, {0,18}, {0,18}, {1,18,25}, {}, {0,1,10,18}, {1,18}, {1,11,18}, {0,18,23,29}, {5,18}, {4,21}, {0,28}, {0,13,28}, {0,11,16}, {0,14,16,23}, {0,16}, {0,11,12,16}, {0,16}, {3,4}, {4,21}, {5,18}, {5}, {0,16}, {11,12,16,20}, {0,7,16}, {1,18,23}, {0,16}, {0,16}, {0,12,15,16,27}, {0,16,28}, {4}, {0,16,28}, {0,16,18}, {0,16}, {1,16}, {1,16,18,23}, {0,16,18,23}, {0,16,25}, {1,16,18,23,28}, {3,4,20,28}, {1,14,16}, {1}, {0,16}, {1}, {0,16,23}, {0,16}, {3,4,20,21}, {1,13,18,23,29}, {4,21}, {0,16}, {3,20}, {0,16}, {0,16}, {4,21}, {1,8,18}, {1,18}, {3,12,20}, {0,16,28}, {2,17,23}, {0,16}, {0,16}, {2,17}, {0,16}, {0,4,16}, {0,16}, {0,3,6,16,20}, {5,27}, {2,17,27}, {0,16}, {0,16}, {}, {}, {}, {0,16}, {3,20}, {0,16}, {3,20}, {0,16}, {0,16}, {0,14,16}, {0,16}, {0,16}, {5}, {0,16,25}, {2,17}, {0,9,12,16}, {1,18}, {4,21}, {4,21}, {3,12,20}, {0,16}, {5,8}, {3,20}, {4,21}, {4,21}, {0,16,28}, {0,7,16}, {3,20}, {0,16}, {4,21}, {5,9,12,13,15}, {0,13,16,28}, {5}, {0,16,25}, {4,6,21}, {1,18}, {4,21}, {}, {26}, {26}, {26}, {26}, {26}, {26}, {26}, {26}, {26}, {26}, {26}, {1,23}, {2,17}, {4,21}, {1}, {1,14,18}, {1,18,23,27}, {0,16}, {3,20}, {0,16,28}, {0,16,28}, {0,5,16,23}, {0,16,28}, {0,16}, {0,5,16,28}, {}, {0,16,25}, {0,16,28}, {0,16}, {0,16,23}, {0,16,30}, {1,18}, {}, {1,18}, {4,21}, {1,18}, {1,2,17,18,23}, {0,5,16}, {}, {}, {5}, {0,13,16,23,28}, {}, {0,16}, {5}, {}, {3,4,20,21}, {0,16,28}, {5,18}, {0,16}, {1,18,23}, {0,16,30}, {4,21}, {0,16}, {1,9,12}, {4,21}, {2,8,17,23}, {0,16,28}, {3,20,25}, {1,14,18}, {}, {0,13,16,23,28}, {0,16}, {4,21}, {0,16}, {4,21}, {3,9,12,20}, {0,16,23}, {}, {0,16}, {0,16}, {2,17}, {1}, {0,16,28}, {}, {0,16}, {5}, {3,9,20}, {}, {5,18}, {}, {5}, {1}, {0,16}, {3,11}, {}, {5,18}, {0,5,16}, {0,11,16}, {0,5,16}, {}, {3,20,28}, {0,16}, {0,16}, {0,16,28}, {0,16}, {3,20}, {4,21}, {4,21}, {0,16,23}, {5,18}, {5,18}, {0,16}, {4,5,18,21}, {3,12,18,20}, {0,13,16}, {3,12,20}, {0,3,16,20}, {4,21}, {5,12}, {3,20,28}, {3,20}, {5,18}, {5,18}, {3,12,20}, {0,5,16,18}, {3,20}, {3,20}, {3,20}, {2,10,17}, {2,8,17}, {0,16,23}, {}, {}, {3,6,20}, {}, {}, {}, {1,5,16}, {0,5,16}, {}, {1,5,16,29}, {0,16,23}, {5,16,18}, {0,16,18}, {0,5,16,18,23}, {0,16}, {0,16}, {0,16}, {0,16,25}, {0,3,16,20}, {0,16}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {} } diff --git a/eid_modifiers.lua b/eid_modifiers.lua index 9a1ca114..3d5ade7a 100644 --- a/eid_modifiers.lua +++ b/eid_modifiers.lua @@ -80,6 +80,7 @@ local game = Game() refID = spinnedID if refID > 0 and refID < 4294960000 then EID:appendToDescription(descObj, "{{Collectible"..refID.."}}") + if EID.itemUnlockStates[refID] == false then EID:appendToDescription(descObj, "?") end if i ~= EID.Config["SpindownDiceResults"] then EID:appendToDescription(descObj, " ->") end diff --git a/mod_config_menu.lua b/mod_config_menu.lua index b76b4ace..76e6afeb 100644 --- a/mod_config_menu.lua +++ b/mod_config_menu.lua @@ -491,6 +491,51 @@ if MCMLoaded then } ) + -- Spindown Dice results + local diceSteps = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} + MCM.AddSetting( + "EID", + "Display", + { + Type = ModConfigMenu.OptionType.SCROLL, + CurrentSetting = function() + return AnIndexOf(diceSteps, EID.Config["SpindownDiceResults"]) - 1 + end, + Display = function() + return "Spindown Dice: $scroll" .. + AnIndexOf(diceSteps, EID.Config["SpindownDiceResults"]) - 1 .. " " .. EID.Config["SpindownDiceResults"] .. " Items" + end, + OnChange = function(currentNum) + EID.Config["SpindownDiceResults"] = diceSteps[currentNum%#diceSteps + 1] + end, + Info = {"Preview of Items resulting when using the Spindown dice X times"} + } + ) + -- + + -- Spindown Dice skip locked items + MCM.AddSetting( + "EID", + "Display", + { + Type = ModConfigMenu.OptionType.BOOLEAN, + CurrentSetting = function() + return EID.Config["SpindownDiceSkipLocked"] + end, + Display = function() + local onOff = "False" + if EID.Config["SpindownDiceSkipLocked"] then + onOff = "True" + end + return "Skip Locked Items: " .. onOff + end, + OnChange = function(currentBool) + EID.Config["SpindownDiceSkipLocked"] = currentBool + end, + Info = {"Skip locked items in the preview just as the dice will; the method to check for unlock status is not perfect, though"} + } + ) + --------Obstruction--------- MCM.AddSpace("EID", "Display") MCM.AddText("EID", "Display", "Display Infos when obstructed") @@ -647,26 +692,6 @@ if MCMLoaded then } ) - -- Spindown Dice results - local diceSteps = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} - MCM.AddSetting( - "EID", - "Display", - { - Type = ModConfigMenu.OptionType.SCROLL, - CurrentSetting = function() - return AnIndexOf(diceSteps, EID.Config["SpindownDiceResults"]) - 1 - end, - Display = function() - return "Spindown Dice: $scroll" .. - AnIndexOf(diceSteps, EID.Config["SpindownDiceResults"]) - 1 .. " " .. EID.Config["SpindownDiceResults"] .. " Items" - end, - OnChange = function(currentNum) - EID.Config["SpindownDiceResults"] = diceSteps[currentNum%#diceSteps + 1] - end, - Info = {"Preview of Items resulting when using the Spindown dice X times"} - } - ) MCM.AddSpace("EID", "Display") MCM.AddText("EID", "Display", "Interaction with 'Options?'") @@ -1031,28 +1056,28 @@ if MCMLoaded then end, Info = {"If on, each result takes two lines; lower your displayed results accordingly"} } - ) - -- Bag of Crafting Breakfast recipes - MCM.AddSetting( - "EID", - "Crafting", - { - Type = ModConfigMenu.OptionType.BOOLEAN, - CurrentSetting = function() - return EID.Config["BagOfCraftingDisplayBreakfast"] - end, - Display = function() - local onOff = "False" - if EID.Config["BagOfCraftingDisplayBreakfast"] then - onOff = "True" - end - return "Show Locked Recipes: " .. onOff - end, - OnChange = function(currentBool) - EID.Config["BagOfCraftingDisplayBreakfast"] = currentBool - end, - Info = {"Recipes for locked items turn into Breakfast, filling the list with essentially useless recipes"} - } + ) + -- Bag of Crafting Breakfast recipes + MCM.AddSetting( + "EID", + "Crafting", + { + Type = ModConfigMenu.OptionType.BOOLEAN, + CurrentSetting = function() + return EID.Config["BagOfCraftingDisplayBreakfast"] + end, + Display = function() + local onOff = "False" + if EID.Config["BagOfCraftingDisplayBreakfast"] then + onOff = "True" + end + return "Show Locked Recipes: " .. onOff + end, + OnChange = function(currentBool) + EID.Config["BagOfCraftingDisplayBreakfast"] = currentBool + end, + Info = {"Recipes for locked items turn into Breakfast, cluttering the list; the method to check for unlock status is not perfect, though"} + } ) MCM.AddSpace("EID", "Crafting") From abbb79f0657dd92cc40659a499f5b0f35705a1db Mon Sep 17 00:00:00 2001 From: Buurazu Date: Wed, 20 Oct 2021 05:30:30 -0400 Subject: [PATCH 06/11] collectible lock check tweaks --- eid_api.lua | 2 +- eid_config.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eid_api.lua b/eid_api.lua index ac5d3263..462c70c8 100644 --- a/eid_api.lua +++ b/eid_api.lua @@ -755,7 +755,7 @@ function EID:getSpindownResult(collectibleID) local newID = collectibleID repeat newID = newID - 1 - --note: the order of this statement is important so that the item is checked for being in a pool (to display a ? if it isn't) + --note: the order of the SkipLocked check statement is important so that the item is checked for being in a pool either way (to display a ? if it isn't) until (config:GetCollectible(newID) and (EID:isCollectibleUnlockedAnyPool(newID) or not EID.Config["SpindownDiceSkipLocked"]) and not config:GetCollectible(newID).Hidden) or newID == CollectibleType.COLLECTIBLE_NULL return newID end diff --git a/eid_config.lua b/eid_config.lua index e370a575..aad59af1 100644 --- a/eid_config.lua +++ b/eid_config.lua @@ -293,7 +293,7 @@ EID.DefaultConfig = { ["BagOfCraftingRandomResults"] = 400, ["BagOfCraftingToggleKey"] = ButtonAction.ACTION_MAP, ["BagOfCraftingDisplayNames"] = false, - ["BagOfCraftingDisplayBreakfast"] = false, + ["BagOfCraftingDisplayBreakfast"] = true, ["SpindownDiceResults"] = 3, ["SpindownDiceSkipLocked"] = false, ["EnableMouseControls"] = false, From 1766c52648c245b1e4801cc74e70855bac3d8e50 Mon Sep 17 00:00:00 2001 From: Wofsauge Date: Thu, 21 Oct 2021 00:57:05 +0200 Subject: [PATCH 07/11] Removed unused sprites and anm2 files --- resources/gfx/EID_Icons.png | Bin 28353 -> 0 bytes resources/gfx/eid_blank.png | Bin 28353 -> 24321 bytes resources/gfx/eid_transform_icons_old.anm2 | 261 ------------- resources/gfx/eid_transform_icons_old.png | Bin 30858 -> 0 bytes resources/gfx/icons.anm2 | 417 --------------------- 5 files changed, 678 deletions(-) delete mode 100644 resources/gfx/EID_Icons.png delete mode 100644 resources/gfx/eid_transform_icons_old.anm2 delete mode 100644 resources/gfx/eid_transform_icons_old.png delete mode 100644 resources/gfx/icons.anm2 diff --git a/resources/gfx/EID_Icons.png b/resources/gfx/EID_Icons.png deleted file mode 100644 index cd4ce9b97e9ca99838be8cc8f588bb26041f4307..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28353 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
    =Dr7g10%#a4^g_fyszBkW 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 U?C|xo{|UrMf4yFwj>F#n0bxKYX#fBK diff --git a/resources/gfx/eid_blank.png b/resources/gfx/eid_blank.png index cd4ce9b97e9ca99838be8cc8f588bb26041f4307..e3dabb805033746dce9942478b44a067958c467c 100644 GIT binary patch delta 284 zcmX?jm$7jlqhe=(pF1y?6c+;n1FxrtOAwG|1Yr&~ASo|;q;sQUF&886=BZq}nFS1W z4GnaS3_}bItV~U;Oid>z@R?xY{blh?)RX)*|Vx;TbZ+)DcK|Gzym(0~8`Gc$1fVfuG@ SX=x&m%i!ti=d#Wzp$Pz(?o8AG delta 4356 zcma)Ac{J4T_kRx&BTII&W}k)`V;H*#nL)`C$~s1w>?w>eV=06zGsf7LEEQQ3*=5TX zk+nXdqOxYmPQUq_-|w&A_n+@M_qq2x_j%oW?z#8=@j6dLE2!fikYt?2mCNj4VK4vy z>}V51OS+}ej|U6$za9$>^=iogFz9S;8n}s(3$6&)P(-L%BjB0{q$V6icHvO_4`*!& z#{jb;0;%lgriMT$s;aT{j72OTzeSufXhJ zr;w*0H^?uXl!%cD zk&#s&^N&lThFp=(CVZ?3Ag!gCoAI17l#k*VrY;U&%#6e|SNf?_22QvwaLqPe>-MAu+O+3k|K3=^3-xVc^T znMGKH6UFZPA{9+ciVjZ>&q_<*_4r3q0Y|aq<>j4wyB9pTZYgS}=mGE~XUjQLbHvN6 z(98@yDB_K)rYf`fXPNn<2II5E#Ci(uFN+K$BqnBDWN3fBW!3Pf#KCU{wzxY*FjnX$ z>gK)976-h&yv+2e5hT36!THtub$0gEeU=_YO>CFEU%oE6Qqn=gYrpalRTI~HB43=S z*84B4^!?TO*IA7Ie^ab}ltO=$N(@+td(A#46V=B)fPes9Q;8Pu z@p=27K&01!Pewj$Sy3$S_)M=0-yArZcz?G4$$fQH+9(AptPYHvP;aq094ih{W?_tm zq{{&Z(2FHZ0Grtvgl;t=6ziuv#f!^GU;I7e)%~>_ApJ?Rv2(KaDxq8IF~>|*%HPi; zBV3ZvhFziPnEVZTFFYO)c~28HFH4~Ek~2FPbEN1FO2&XO-^h?Q&vPcA@zw@bWn<>C zjDK4W|2I{eurQsMm6i2lUW?VBHEl!oZoEPw9(AqL|4=dLYIu0-=z08=60&oZOT?G0 zgRg9{{_v6xyNvmOAJ~iTAMU+n@&LIE=jwRru{~DXObOERuJi7^+e!?Yez%Juth&oV z3{!**5*|%NG6+IX>YAU~@n1>KJZ})Y|Lk%!=2Xh*dHNEW<)ivVr5-6rgXWA+6c{0>mUMpMOkX+rg$h9 z;OF=Eq?{P~p7umPDX^-_)#BHv%dMw~SU@Lr7)Q9KY~0w?z8=K=#qf)*W1{Y*r~4`H z1JnZl-8G6+vV^4dsJh```oi?Wxd0aJ^sCa&(eF%k5WiQRY}GoSv6|}NEX2N=9LEx_ zRWAq?XT|Zhozt-zo`G$5od5WJa{l2)i^9Y5?Zmspt$<#g7`L4bLZExjrq-H9HYFrA zZTNlf0FjzgKeiEo6KE(co-S;mSM$59#hj|$WWf;do1o`aRmoZQ*7X!?+-F!$Cp!i=g_b_rv`XiJh7%{3iGhda_Qx8b zq4DAzWAqW_Qg77?5a>y^TkLch6N8}kN!M2NE5I=uORZrgvRhbL&)Me&YO&(0B${aHA!xvlHNKO&w4Nv#wYzo=iY~Bf}JxZhM?tkZXQ{r=PWh;96a2{Wp}JGYEJmBaJvc*-M_@XV!LD zc-TJg6n2nx1|efF@s&YZMn-0|fq5Xv{!l;35w!hjP3K@#pyxJq5wk>`n~$sx>}DI! z|KlD4fi<`0KK$Nn(@(8a03>+9AmFhnrmDJ-p<70V8Y)*SC@sy+^xJV)Ol7NSO^0S> z%?Z#|(y!%`F`IM8KaIlHixUQGmM?LlS&V}Io zh7?}ZlX`aI2$4GsMBrmO>;1*@j?J4BaH6?Bb%?~5PRSo4J+G_d14d?NeeWPp8aJ$y zq`6NK#nfX%tGZatc8D2ILaHx*xNBLeP!&;@zWpqEpzRf$HyBwn_7%XX6x{f(s81 z56eRX4{vW(ag^80D^~iwLRWBENcWP-_tnnIxosDik9~1j&RA5-v;E`R;MCC`xtH_c zL@sVZGnRePVHtIyEM<`AIc#h!H*nm~-t&CZmj}Z~&DDhlnd@97@S%xc9ZmrQQLbk5B=O51V{3w=ztxXv6ApIyeM_*cmC6?V@LAJuY~4`umq(`R3x0fpq@*|gD%L+S9vI-)CC>l>xoKT zT~jvE;6+#L3Ivd_hQofXXKiZ*7^5G77B9yuH*7u*FmDjF1K`SmeDU>4+h;N+cg<@Q z+zpHdVvK=`|gx1y*!>14UDQT_e)`{t33bO3LjG zp@iz3cNqL3EGpV9)l&vcQ}=N`WaI4jSJBM)s+_F#p4;iIh7Wo#E0_I@O_Zznm1dhA z@2i)?y!x*5>r2qs#x9~{F#1^`gP>@4#bdCDx93)~Q+VTb>+7k8JPMwM{%0HelmOZ( z_%Ba)Q6=QrvjwI-rb0wJ!AspAM$b&qlW&V&Cw0zX4fZ;02BaCtR>z-193PW1`0MRw zywrA|HU-YSH1x>US>uPh1{$@#!~F-YtwX{WT=c;mR<0)~+;iXbJQKQk)*#|@>=}f8{&q2; zfQI+IGAv;Q63}yU)~5>lCwy-^nmAp-_qi2^Hv3|_Wso9Dwr%I;ya`$8isMoCixW)-2D0^h)rRA+;kx8nq!MF6C1z!!;8YtrKxEzKi|y0;G^X>E3qqzv$RZ-3NLIHfT-jGQxFPb6yFqb>?#i0kjRh^)$~n;eL_U{7Ydo=M zrq0u?@rXT1d!^41@zO}cn?EVeI`#OxZv4IY?+-wRZWsMel9vy#OBr)3z~I@)A9+Nl z2R{plG1`YXI`K;$(ru^6qs?KKaokKax(rTklJf>@iHBy!pPJmTb^7M+cay1CvsR!|&Men`mQ07W}Z&DbyQWmTTH({BG&yykkt zQ}&^LljQ9R)*5bc;e-yp(h)izDz7Z>x?ue1q~-B@IBqfPlO40K5_#csnV5SjFlKJ= z>%iwMBE}G~4a*fnQyJIU5MmWX#<35y`d8hIlktSDYWhZLR)$5fYXq44*(8mgb{RfS z`}$K)^S5EAIM?*cN<`Q}d61qOMuC;v;M4LQ^QnJXRB1867}ly@9hK*0Kvw5Z)bBZJ z7T8)W?Sc|v^c|n7E0}yt2cxII$j&&~dcIX1yJ41XF@U70mnlRL4_L>rXCSXtkwv3U zPDnc>tH6u@ZRiD7*VyQsW5d$Qjbvq>=W} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/gfx/eid_transform_icons_old.png b/resources/gfx/eid_transform_icons_old.png deleted file mode 100644 index e2343a8e46478bbbff1a2f8c50ecdc43c438c02e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30858 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 M-&`+W$9enz09J*}r~m)} diff --git a/resources/gfx/icons.anm2 b/resources/gfx/icons.anm2 deleted file mode 100644 index 5ab334ff..00000000 --- a/resources/gfx/icons.anm2 +++ /dev/null @@ -1,417 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From b7a28b873943b6f44c2a1a6838c3e3e8bd0dc27b Mon Sep 17 00:00:00 2001 From: Wofsauge Date: Thu, 21 Oct 2021 00:58:37 +0200 Subject: [PATCH 08/11] Improved colors and code of new item unlock-state functions --- eid_api.lua | 14 +++----------- eid_bagOfCrafting.lua | 23 ++++++----------------- eid_data.lua | 3 +++ 3 files changed, 12 insertions(+), 28 deletions(-) diff --git a/eid_api.lua b/eid_api.lua index 462c70c8..80891061 100644 --- a/eid_api.lua +++ b/eid_api.lua @@ -751,12 +751,11 @@ end -- Converts a given CollectibleID into the respective Spindown dice result function EID:getSpindownResult(collectibleID) - local config = Isaac.GetItemConfig() local newID = collectibleID repeat newID = newID - 1 --note: the order of the SkipLocked check statement is important so that the item is checked for being in a pool either way (to display a ? if it isn't) - until (config:GetCollectible(newID) and (EID:isCollectibleUnlockedAnyPool(newID) or not EID.Config["SpindownDiceSkipLocked"]) and not config:GetCollectible(newID).Hidden) or newID == CollectibleType.COLLECTIBLE_NULL + until (EID.itemConfig:GetCollectible(newID) and (EID:isCollectibleUnlockedAnyPool(newID) or not EID.Config["SpindownDiceSkipLocked"]) and not EID.itemConfig:GetCollectible(newID).Hidden) or newID == CollectibleType.COLLECTIBLE_NULL return newID end @@ -764,7 +763,7 @@ function EID:GetMaxCollectibleID() local id = CollectibleType.NUM_COLLECTIBLES-1 local step = 16 while step > 0 do - if Isaac.GetItemConfig():GetCollectible(id+step) ~= nil then + if EID.itemConfig:GetCollectible(id+step) ~= nil then id = id + step else step = step // 2 @@ -784,7 +783,6 @@ function EID:isCollectibleUnlocked(collectibleID, itemPoolOfItem) itemPool:AddRoomBlacklist(i) end end - local room = Game():GetRoom() local isUnlocked = false for i = 0,1 do -- some samples to make sure local collID = itemPool:GetCollectible(itemPoolOfItem, false) @@ -798,35 +796,29 @@ function EID:isCollectibleUnlocked(collectibleID, itemPoolOfItem) end function EID:isCollectibleUnlockedAnyPool(collectibleID) - local itemConfig = Isaac.GetItemConfig() - local item = itemConfig:GetCollectible(collectibleID) + local item = EID.itemConfig:GetCollectible(collectibleID) if EID.itemUnlockStates[collectibleID] == nil then --whitelist all quest items and items with no associated achievement if (item.AchievementID == -1 or item.Tags & ItemConfig.TAG_QUEST == ItemConfig.TAG_QUEST) then - --print("item " .. tostring(collectibleID) .. " is tagged as quest or has no achievement ID!") EID.itemUnlockStates[collectibleID] = true return true end --blacklist all hidden items if (item.Hidden) then - --print("item " .. tostring(collectibleID) .. " is tagged as hidden!") EID.itemUnlockStates[collectibleID] = false return false end --iterate through the pools this item can be in for k,v in ipairs(EID.CollectiblesPools[collectibleID]) do if (EID:isCollectibleUnlocked(collectibleID, v)) then - --print("found item " .. tostring(collectibleID) .. " unlocked in pool " .. tostring(v)) EID.itemUnlockStates[collectibleID] = true return true end end --note: some items will still be missed by this, if they've been taken out of their pools (especially when in Greed Mode) - --print("couldn't find item " .. tostring(collectibleID) .. " in any item pools") EID.itemUnlockStates[collectibleID] = false return false else - --print("item " .. tostring(collectibleID) .. " was already cached: " .. tostring(EID.itemUnlockStates[collectibleID])) return EID.itemUnlockStates[collectibleID] end end diff --git a/eid_bagOfCrafting.lua b/eid_bagOfCrafting.lua index a6cb192b..b6966f3d 100644 --- a/eid_bagOfCrafting.lua +++ b/eid_bagOfCrafting.lua @@ -760,11 +760,9 @@ function EID:handleBagOfCraftingRendering() --fix bug with being allowed to go to an empty page if recipe count = multiple of page size (or if we refresh on last page) if (EID.bagOfCraftingOffset >= #results) then EID.bagOfCraftingOffset = EID.bagOfCraftingOffset - EID.Config["BagOfCraftingResults"] end - local resultCount = 0 - local skips = 0 local prevItem = 0 - local qualities = { [0] = "{{ColorSilver}}", "{{ColorLime}}", "{{ColorTransform}}", "{{ColorObjName}}", "{{ColorGold}}" } + local qualities = { [0] = "{{ColorSilver}}", "{{ColorLime}}", "{{ColorPastelBlue}}", "{{ColorLavender}}", "{{ColorLightOrange}}" } local prefix = "#{{Blank}} " if (EID.lockedResults) then prefix = "#{{Trinket159}} " @@ -776,17 +774,17 @@ function EID:handleBagOfCraftingRendering() end for i=EID.bagOfCraftingOffset+1,EID.bagOfCraftingOffset+EID.Config["BagOfCraftingResults"] do local v = results[i] - if (not v) then break end + if not v then break end - if (not EID.Config["BagOfCraftingDisplayNames"]) then + if not EID.Config["BagOfCraftingDisplayNames"] then customDescObj.Description = customDescObj.Description.."# {{Collectible"..v[2].."}} " --tack on Breakfast image to locked recipes - if (v[3]) then customDescObj.Description = customDescObj.Description.."{{Collectible25}}" end + if v[3] then customDescObj.Description = customDescObj.Description.."({{Collectible25}})" end --color the equals sign with the item quality, so the order of the list can make sense customDescObj.Description = customDescObj.Description.. qualities[EID.itemWeightsLookup[v[2]]] .. "={{CR}}" --only display the item name if it's the first occurrence else - if (prevItem ~= v[2]) then + if prevItem ~= v[2] then --substring the first 18 characters of the item name so it fits on one line; is there a way to get around desc line length limits? customDescObj.Description = customDescObj.Description.."# {{Collectible"..v[2].."}} ".. qualities[EID.itemWeightsLookup[v[2]]] .. string.sub(EID:getObjectName(5, 100, v[2]),1,18).."#" @@ -794,7 +792,7 @@ function EID:handleBagOfCraftingRendering() customDescObj.Description = customDescObj.Description.."#" end --replace recipe bulletpoint with Breakfast on locked recipes - if (v[3]) then customDescObj.Description = customDescObj.Description.." {{Collectible25}} " end + if v[3] then customDescObj.Description = customDescObj.Description.." {{Collectible25}} " end end customDescObj.Description = customDescObj.Description..EID:tableToCraftingIconsMerged(v[1]) @@ -807,12 +805,3 @@ function EID:handleBagOfCraftingRendering() EID:printDescription(customDescObj) return true end - ---[[ -Isaac.DebugString("Calculating: {1, 1, 1, 1, 1, 1, 1, 1}") -Isaac.DebugString(EID:calculateBagOfCrafting({1, 1, 1, 1, 1, 1, 1, 1})) -Isaac.DebugString("Calculating: {1, 1, 1, 1, 1, 1, 1, 2}") -Isaac.DebugString(EID:calculateBagOfCrafting({1, 1, 1, 1, 1, 1, 1, 2})) -Isaac.DebugString("Calculating: {1, 1, 1, 1, 1, 1, 1, 3}") -Isaac.DebugString(EID:calculateBagOfCrafting({1, 1, 1, 1, 1, 1, 1, 3})) -]]-- diff --git a/eid_data.lua b/eid_data.lua index 365c70bc..ba977a19 100644 --- a/eid_data.lua +++ b/eid_data.lua @@ -291,6 +291,9 @@ EID.InlineColors = { ["ColorTeal"] = KColor(0, 0.5, 0.5, 1), ["ColorNavy"] = KColor(0, 0, 0.5, 1), ["ColorOrange"] = KColor(1, 0.54, 0, 1), + ["ColorPastelBlue"] = KColor(0.3882, 0.5216, 1, 1), + ["ColorLavender"] = KColor(0.7451, 0.3686, 1, 1), + ["ColorLightOrange"] = KColor(1, 0.6353, 0.3686, 1), -- Swag Colors -- Rainbow color effect From 8bea7679d7b72078ba866788b103eaa68fd58dfb Mon Sep 17 00:00:00 2001 From: Wofsauge Date: Thu, 21 Oct 2021 00:59:22 +0200 Subject: [PATCH 09/11] Added warning message for disabled achievements --- descriptions/rep/en_us.lua | 2 ++ main.lua | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/descriptions/rep/en_us.lua b/descriptions/rep/en_us.lua index 91173a68..e0d5869d 100644 --- a/descriptions/rep/en_us.lua +++ b/descriptions/rep/en_us.lua @@ -675,3 +675,5 @@ EID.descriptions["en_us"].CraftingFloorContent = "Floor:" EID.descriptions["en_us"].CraftingResults = "(Scroll: hold {{CONFIG_BoC_Toggle}} + {{ButtonY}} {{ButtonA}},#Lock: {{ButtonX}}, Refresh: {{ButtonB}})" EID.descriptions["en_us"].CraftingBagModError = "!!! {{ColorRed}}ERROR:#{{ColorRed}}The \"Crafting result calculation\" feature currently does not work when item mods are installed!#{{ColorRed}}Please uninstall the item mods or deactivate the Bag of Crafting descriptions in the config" +EID.descriptions["en_us"].AchievementWarningTitle = "{{ColorYellow}}!!! WARNING !!!" +EID.descriptions["en_us"].AchievementWarningText = "Achievements are disabled!#In order to enable progression and achievements, you first need to kill Mom (Depths II) without any mods enabled." diff --git a/main.lua b/main.lua index f97b4bd1..7c4f8d80 100644 --- a/main.lua +++ b/main.lua @@ -535,6 +535,22 @@ function EID:onGameUpdate() end EID:AddCallback(ModCallbacks.MC_POST_UPDATE, EID.onGameUpdate) +local hasShownAchievementWarning = false +local function renderAchievementInfo() + if game:GetFrameCount() < 10*30 then + local hasCubeOfMeatUnlocked = EID:isCollectibleUnlockedAnyPool(CollectibleType.COLLECTIBLE_CUBE_OF_MEAT) + if not hasCubeOfMeatUnlocked then + local demoDescObj = EID:getDescriptionObj(-999, -1, 1) + demoDescObj.Name = EID:getDescriptionEntry("AchievementWarningTitle") or "" + demoDescObj.Description = EID:getDescriptionEntry("AchievementWarningText") or "" + EID:displayPermanentText(demoDescObj) + hasShownAchievementWarning = true + end + elseif hasShownAchievementWarning then + EID:hidePermanentText() + end +end + --------------------------------------------------------------------------- ---------------------------On Render Function------------------------------ @@ -550,6 +566,7 @@ local function onRender(t) end EID:renderMCMDummyDescription() + renderAchievementInfo() EID.player = Isaac.GetPlayer(0) if EID.GameVersion == "ab+" then @@ -790,6 +807,8 @@ if EID.MCMLoaded or REPENTANCE then EID.Config["BagFloorContent"] = EID.bagOfCraftingRoomQueries or {} end EID.SaveData(EID, json.encode(EID.Config)) + EID:hidePermanentText() + EID.itemUnlockStates[CollectibleType.COLLECTIBLE_CUBE_OF_MEAT] = nil end EID:AddCallback(ModCallbacks.MC_PRE_GAME_EXIT, SaveGame) end From 36d76527326c8ab4974960eb0b35c86f79f563f0 Mon Sep 17 00:00:00 2001 From: Wofsauge Date: Thu, 21 Oct 2021 19:06:20 +0200 Subject: [PATCH 10/11] Fixed mirror dimension detection for off-grid rooms like Devil Deal --- main.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.lua b/main.lua index 7c4f8d80..c66bad07 100644 --- a/main.lua +++ b/main.lua @@ -377,7 +377,7 @@ local function IsMirror() local level = game:GetLevel() local id = level:GetCurrentRoomIndex() - return GetPtrHash(level:GetRoomByIdx(id)) == GetPtrHash(level:GetRoomByIdx(id, 1)) + return id >=0 and GetPtrHash(level:GetRoomByIdx(id)) == GetPtrHash(level:GetRoomByIdx(id, 1)) end local isMirrorRoom = false From 1a22c0083d358ab8dab91b018e6c7c32b403986c Mon Sep 17 00:00:00 2001 From: Wofsauge Date: Thu, 21 Oct 2021 19:33:06 +0200 Subject: [PATCH 11/11] Improved description for Sacrificial Dagger in Repentance --- descriptions/rep/en_us.lua | 1 + main.lua | 2 +- metadata.xml | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/descriptions/rep/en_us.lua b/descriptions/rep/en_us.lua index e0d5869d..74f3b6f1 100644 --- a/descriptions/rep/en_us.lua +++ b/descriptions/rep/en_us.lua @@ -59,6 +59,7 @@ local repCollectibles={ [155] = {"155", "The Peeper", "Floats around the room#Deals 17.1 contact damage per second#Tears shot from isaacs left eye deal 34% more damage"}, -- The Peeper [158] = {"158", "Crystal Ball", "Reveal full map#Drops random Card or soul heart#While held:#↑ +15% Planetatium chance#100% if a treasure room was skipped"}, -- Crystal Ball [171] = {"171", "Spider Butt", "Slows down enemies for 4 seconds#10 Damage to all enemies#Enemies killed with it spawn blue spiders"}, -- Spider Butt + [172] = {"172", "Sacrificial Dagger", "Orbital knife#Blocks enemy shots#Deals 112.5 damage per second"}, -- Sacrificial Dagger [176] = {"176", "Stem Cells", "↑ +1 Health up#↑ +0.16 Shot Speed up#Heals 1 red heart"}, -- Stem Cells [178] = {"178", "Holy Water", "{{Throwable}} {{ColorOrange}}Throwable{{CR}}#Leaves pool of creep at the thrown location"}, -- Holy Water [182] = {"182", "Sacred Heart", "Homing tears#↑ +1 Health up#↑ 230% + 1 Damage up#↓ -0.4 Tears down#↓ -0.25 Shot Speed down#↑ +0.5 Range up#Full Health"}, -- Sacred Heart diff --git a/main.lua b/main.lua index c66bad07..6440d327 100644 --- a/main.lua +++ b/main.lua @@ -9,7 +9,7 @@ local game = Game() require("eid_config") EID.Config = EID.UserConfig EID.Config.Version = "3.2" -EID.ModVersion = "3.82" +EID.ModVersion = "3.84" EID.DefaultConfig.Version = EID.Config.Version EID.isHidden = false EID.player = nil diff --git a/metadata.xml b/metadata.xml index 6cbae1a7..435dd424 100644 --- a/metadata.xml +++ b/metadata.xml @@ -90,7 +90,7 @@ https://moddingofisaac.com/mod/1079/external-item-descriptions - Jake for the sweet [b]German[/b] language pack - [url=https://steamcommunity.com/id/whytefang/]adc[/url] for creating an awesome new Languagepack and providing ideas for new functionalities - 3.83 + 3.84 Public