Better Spindown Dice Method Part 2: Unlockables
This commit is contained in:
1 parent
1708368e1e
commit
94186a6591
2 files changed
+49
-1
No files matched your search
+48
-1
@@ -755,10 +755,57 @@ function EID:getSpindownResult(collectibleID)
|
|||||||
local newID = collectibleID
|
local newID = collectibleID
|
||||||
repeat
|
repeat
|
||||||
newID = newID - 1
|
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
|
return newID
|
||||||
end
|
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
|
-- Converts a given table into a string containing the crafting icons of the table
|
||||||
-- Example input: {1,2,3,4,5,6,7,8}
|
-- Example input: {1,2,3,4,5,6,7,8}
|
||||||
-- Result: "{{Crafting8}}{{Crafting7}}{{Crafting6}}{{Crafting5}}{{Crafting4}}{{Crafting3}}{{Crafting2}}{{Crafting1}}"
|
-- Result: "{{Crafting8}}{{Crafting7}}{{Crafting6}}{{Crafting5}}{{Crafting4}}{{Crafting3}}{{Crafting2}}{{Crafting1}}"
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ EID.lineHeight = 11
|
|||||||
EID.sacrificeCounter = {}
|
EID.sacrificeCounter = {}
|
||||||
EID.itemConfig = Isaac.GetItemConfig()
|
EID.itemConfig = Isaac.GetItemConfig()
|
||||||
EID.effectList = {["76"] = true}
|
EID.effectList = {["76"] = true}
|
||||||
|
EID.itemUnlockStates = {}
|
||||||
|
|
||||||
-- Sprite inits
|
-- Sprite inits
|
||||||
EID.IconSprite = Sprite()
|
EID.IconSprite = Sprite()
|
||||||
|
|||||||
Reference in new issue
Block a user