Better Spindown Dice Method Part 2: Unlockables

This commit is contained in:
kittenchilly committed 2021-10-19 09:37:17 -05:00
1 parent 1708368e1e
commit 94186a6591
2 files changed
+49 -1

No files matched your search

+48 -1
View File
@@ -755,10 +755,57 @@ function EID:getSpindownResult(collectibleID)
local newID = collectibleID
repeat
newID = newID - 1
until config:GetCollectible(newID) and not config:GetCollectible(newID).Hidden
until (config:GetCollectible(newID) and EID:isCollectibleUnlockedAnyPool(newID) and not config:GetCollectible(newID).Hidden) or newID == CollectibleType.COLLECTIBLE_NULL
return newID
end
function EID:isCollectibleUnlocked(collectibleID, itemPoolOfItem)
local itemPool = Game():GetItemPool()
local itemConfig = Isaac.GetItemConfig()
for i= 1, GetMaxCollectibleID() do
if ItemConfig.Config.IsValidCollectible(i) and i ~= collectibleID then
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)
if collID == collectibleID then
isUnlocked = true
break
end
end
itemPool:ResetRoomBlacklist()
return isUnlocked
end
function EID:isCollectibleUnlockedAnyPool(collectibleID)
local itemConfig = Isaac.GetItemConfig()
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
end
--print("found item " .. tostring(collectibleID) .. " unlocked in pool " .. tostring(itemPoolNum))
EID.itemUnlockStates[collectibleID] = true
return true
else
--print("item " .. tostring(collectibleID) .. " was already cached: " .. tostring(EID.itemUnlockStates[collectibleID]))
return EID.itemUnlockStates[collectibleID]
end
end
-- Converts a given table into a string containing the crafting icons of the table
-- Example input: {1,2,3,4,5,6,7,8}
-- Result: "{{Crafting8}}{{Crafting7}}{{Crafting6}}{{Crafting5}}{{Crafting4}}{{Crafting3}}{{Crafting2}}{{Crafting1}}"