diff --git a/descriptions/rep/en_us.lua b/descriptions/rep/en_us.lua index 6f5adfcb..d2d9202a 100644 --- a/descriptions/rep/en_us.lua +++ b/descriptions/rep/en_us.lua @@ -667,8 +667,9 @@ EID.descriptions["en_us"].horsepills={ [9999] = {"", "Golden Pill", "Random horse pill effect#Destroys itself after a few uses"}, -- golden Pill } -EID.descriptions["en_us"].CraftingBagContent = "Pickups in bag:" -EID.descriptions["en_us"].CraftingRoomContent = "Pickups in room:" +EID.descriptions["en_us"].CraftingBagContent = "Bag:" +EID.descriptions["en_us"].CraftingRoomContent = "Room:" +EID.descriptions["en_us"].CraftingFloorContent = "Floor:" EID.descriptions["en_us"].CraftingResults = "Results:#(Scroll: Hold TAB + Shoot △/▽)" EID.descriptions["en_us"].CraftingBagModError = "!!! {{ColorRed}}ERROR:#{{ColorRed}}This feature currently does not support games with modded items installed" diff --git a/descriptions/rep/pl.lua b/descriptions/rep/pl.lua index d15cfd60..81ee6267 100644 --- a/descriptions/rep/pl.lua +++ b/descriptions/rep/pl.lua @@ -665,8 +665,8 @@ EID.descriptions["pl"].horsepills={ [9999] = {"", "Złota Pigułka", "Efekt losowej, końskiej pigułki#Niszczy się po kilku użyciach"}, -- golden Pill } -EID.descriptions["pl"].CraftingBagContent = "Pickupy w torbie:" -EID.descriptions["pl"].CraftingRoomContent = "Pickupy w pokoju:" +EID.descriptions["pl"].CraftingBagContent = "torbie:" +EID.descriptions["pl"].CraftingRoomContent = "pokoju:" EID.descriptions["pl"].CraftingResults = "Wyniki:#(Przewiń: Trzymaj TAB + Strzał △/▽)" EID.descriptions["pl"].CraftingBagModError = "!!! {{ColorRed}}BŁĄD:#{{ColorRed}}Ta funkcja nie wspiera obecnie zmodowanych przedmiotów" diff --git a/descriptions/rep/pt_br.lua b/descriptions/rep/pt_br.lua index a1727360..511a4c76 100644 --- a/descriptions/rep/pt_br.lua +++ b/descriptions/rep/pt_br.lua @@ -632,6 +632,6 @@ EID.descriptions["pt_br"].horsepills={ {"49", "", "↑ Aumenta 1 status aleatório duas vezes#↓ Diminue 1 status aleatório duas vezes#Não vai diminuir com PHD"}, -- Experimental Pill } -EID.descriptions["pt_br"].CraftingBagContent = "Pickups na mochila:" -EID.descriptions["pt_br"].CraftingRoomContent = "Pickups na sala:" +EID.descriptions["pt_br"].CraftingBagContent = "mochila:" +EID.descriptions["pt_br"].CraftingRoomContent = "sala:" EID.descriptions["pt_br"].CraftingResults = "Resultado:#(Rolar: Segurar TAB + Atirar △/▽)" \ No newline at end of file diff --git a/descriptions/rep/ru.lua b/descriptions/rep/ru.lua index f8514196..3e117fd7 100644 --- a/descriptions/rep/ru.lua +++ b/descriptions/rep/ru.lua @@ -668,7 +668,7 @@ EID.descriptions["ru"].horsepills={ [9999] = {"", "Золотая пилюля", "Эффект случайной лошадиной пилюли#Исчезает после нескольких использований"}, -- golden Pill } -EID.descriptions["ru"].CraftingBagContent = "Предметы в мешке:" -EID.descriptions["ru"].CraftingRoomContent = "Предметы в комнате:" +EID.descriptions["ru"].CraftingBagContent = "мешке:" +EID.descriptions["ru"].CraftingRoomContent = "комнате:" EID.descriptions["ru"].CraftingResults = "Результаты:#(Листать: Зажать TAB + Стрелять △/▽)" EID.descriptions["ru"].CraftingBagModError = "!!! {{ColorRed}}ОШИБКА:#{{ColorRed}}Эта функция на данный момент не поддерживается с установленными модами" diff --git a/descriptions/rep/spa.lua b/descriptions/rep/spa.lua index 98b674ad..dde7e9b1 100644 --- a/descriptions/rep/spa.lua +++ b/descriptions/rep/spa.lua @@ -606,7 +606,7 @@ EID.descriptions["spa"].horsepills={ } -EID.descriptions["spa"].CraftingBagContent = "Recolectables en la bolsa:" -EID.descriptions["spa"].CraftingRoomContent = "Recolectables de la habitación:" +EID.descriptions["spa"].CraftingBagContent = "bolsa:" +EID.descriptions["spa"].CraftingRoomContent = "habitación:" EID.descriptions["spa"].CraftingResults = "Resultados:" diff --git a/descriptions/rep/tr_tr.lua b/descriptions/rep/tr_tr.lua index 3b4e4755..5a86cd84 100644 --- a/descriptions/rep/tr_tr.lua +++ b/descriptions/rep/tr_tr.lua @@ -668,8 +668,8 @@ EID.descriptions["tr_tr"].horsepills={ [9999] = {"", "Golden Pill", "Rastgele bir at hapı efekti#Birkaç kullanımdan sonra kendini yok eder"}, -- golden Pill } -EID.descriptions["tr_tr"].CraftingBagContent = "Çantadaki pickuplar:" -EID.descriptions["tr_tr"].CraftingRoomContent = "Odadaki pickuplar:" +EID.descriptions["tr_tr"].CraftingBagContent = "Çantadaki:" +EID.descriptions["tr_tr"].CraftingRoomContent = "Odadaki:" EID.descriptions["tr_tr"].CraftingResults = "Sonuçlar:#(Kaydır: TAB(basılı tut) + Ateş △/▽)" EID.descriptions["tr_tr"].CraftingBagModError = "!!! {{ColorRed}}HATA:#{{ColorRed}}Bu özellik şu anda modlu itemleri desteklemiyor" diff --git a/eid_bagOfCrafting.lua b/eid_bagOfCrafting.lua index 2b602c86..047ec619 100644 --- a/eid_bagOfCrafting.lua +++ b/eid_bagOfCrafting.lua @@ -501,7 +501,8 @@ local randResultCache = {} EID.bagOfCraftingOffset = 0 EID.bagOfCraftingCurPickupCount = -1 -EID.bagOfCraftingLastQuery = {} +EID.bagOfCraftingRoomQueries = {} +EID.bagOfCraftingFloorQuery = {} EID.BagItems = {} EID.icount = 0 @@ -545,6 +546,15 @@ local function detectModdedItems() return false end +local function calcFloorItems() + EID.bagOfCraftingFloorQuery = {} + for _,v in pairs(EID.bagOfCraftingRoomQueries) do + for _,v1 in ipairs(v) do + table.insert(EID.bagOfCraftingFloorQuery, v1) + end + end +end + function EID:handleBagOfCraftingRendering() trackBagHolding() detectBagContentShift() @@ -558,33 +568,36 @@ function EID:handleBagOfCraftingRendering() if detectModdedItems() then return false end + local curRoomIndex = Game():GetLevel():GetCurrentRoomIndex() local results = {} - local floorItems = {} + local roomItems = {} local pickups = Isaac.FindByType(5, -1, -1, true, false) if EID.bagOfCraftingCurPickupCount ~= #pickups then for i, entity in ipairs(pickups) do local craftingIDs = EID:getBagOfCraftingID(entity.Variant, entity.SubType) if craftingIDs ~= nil then for _,v in ipairs(craftingIDs) do - table.insert(floorItems, v) + table.insert(roomItems, v) end end end - EID.bagOfCraftingLastQuery = floorItems + EID.bagOfCraftingRoomQueries[curRoomIndex] = roomItems EID.bagOfCraftingCurPickupCount = #pickups + calcFloorItems() else - floorItems = EID.bagOfCraftingLastQuery + roomItems = EID.bagOfCraftingRoomQueries[curRoomIndex] or {} end local itemQuery = {} - for i, v in ipairs(floorItems) do + for i, v in ipairs(EID.bagOfCraftingFloorQuery) do table.insert(itemQuery, v) end for i, v in ipairs(EID.BagItems) do table.insert(itemQuery, v) end + -- Calculate result from pickups on floor if #itemQuery < 8 then toggleControls(true) @@ -627,16 +640,35 @@ function EID:handleBagOfCraftingRendering() end local customDescObj = EID:getDescriptionObj(5, 100, 710) - local roomDesc = EID:getDescriptionEntry("CraftingRoomContent") - local bagContentDesc = EID:getDescriptionEntry("CraftingBagContent") - local resultDesc = EID:getDescriptionEntry("CraftingResults") - local bagContentResult = "" - if #EID.BagItems >= 8 then - local recipe = EID:calculateBagOfCrafting(EID.BagItems) - bagContentResult = "{{Collectible"..recipe.."}} " + customDescObj.Description = "" + + if #EID.BagItems >0 then + if #EID.BagItems >= 8 then + local recipe = EID:calculateBagOfCrafting(EID.BagItems) + EID:appendToDescription(customDescObj, "{{Collectible"..recipe.."}} ") + end + local bagDesc = EID:getDescriptionEntry("CraftingBagContent").."(Beta)" + EID:appendToDescription(customDescObj, bagDesc..EID:tableToCraftingIconsMerged(EID.BagItems).."#") end - customDescObj.Description = bagContentDesc.." (Beta)#"..bagContentResult..EID:tableToCraftingIconsMerged(EID.BagItems).."#" - customDescObj.Description = customDescObj.Description ..roomDesc.."#"..EID:tableToCraftingIconsMerged(floorItems).."#"..resultDesc + if #roomItems >0 then + if #roomItems == 8 then + local recipe = EID:calculateBagOfCrafting(roomItems) + EID:appendToDescription(customDescObj, "{{Collectible"..recipe.."}} ") + end + local roomDesc = EID:getDescriptionEntry("CraftingRoomContent") + EID:appendToDescription(customDescObj, roomDesc..EID:tableToCraftingIconsMerged(roomItems).."#") + end + if #EID.bagOfCraftingFloorQuery >0 and #roomItems ~= #EID.bagOfCraftingFloorQuery then + if #EID.bagOfCraftingFloorQuery == 8 then + local recipe = EID:calculateBagOfCrafting(EID.bagOfCraftingFloorQuery) + EID:appendToDescription(customDescObj, "{{Collectible"..recipe.."}} ") + end + local floorDesc = EID:getDescriptionEntry("CraftingFloorContent") + EID:appendToDescription(customDescObj, floorDesc..EID:tableToCraftingIconsMerged(EID.bagOfCraftingFloorQuery).."#") + end + + local resultDesc = EID:getDescriptionEntry("CraftingResults") + EID:appendToDescription(customDescObj, resultDesc) if Input.IsActionPressed(ButtonAction.ACTION_MAP, 0) or Input.IsActionPressed(ButtonAction.ACTION_MAP, 1) then if Input.IsActionTriggered(ButtonAction.ACTION_SHOOTDOWN, 0) or Input.IsActionTriggered(ButtonAction.ACTION_SHOOTDOWN, 1) then diff --git a/main.lua b/main.lua index c86fd495..1d3e5690 100644 --- a/main.lua +++ b/main.lua @@ -141,6 +141,10 @@ end -------------------------Handle Sacrifice Room----------------------------- function EID:onNewFloor() EID.sacrificeCounter = {} + if REPENTANCE then + EID.bagOfCraftingRoomQueries = {} + EID.bagOfCraftingFloorQuery = {} + end end EID:AddCallback(ModCallbacks.MC_POST_NEW_LEVEL, EID.onNewFloor) @@ -723,7 +727,9 @@ if EID.MCMLoaded or REPENTANCE then local savedEIDConfig = json.decode(Isaac.LoadModData(EID)) if REPENTANCE and isSave then EID.BagItems = savedEIDConfig["BagContent"] + EID.bagOfCraftingRoomQueries = savedEIDConfig["BagFloorContent"] savedEIDConfig["BagContent"] = nil + savedEIDConfig["BagFloorContent"] = nil else EID.BagItems = {} end @@ -732,7 +738,7 @@ if EID.MCMLoaded or REPENTANCE then if savedEIDConfig.Version == EID.Config.Version then local isDefaultConfig = true for key, value in pairs(EID.Config) do - if type(value) ~= type(EID.DefaultConfig[key]) and key ~= "BagContent" then + if type(value) ~= type(EID.DefaultConfig[key]) and key ~= "BagContent" and key ~= "BagFloorContent" then print("EID Warning! : Config value '"..key.."' has wrong data-type. Resetting it to default...") EID.Config[key] = EID.DefaultConfig[key] end @@ -761,6 +767,7 @@ if EID.MCMLoaded or REPENTANCE then function SaveGame() if REPENTANCE then EID.Config["BagContent"] = EID.BagItems or {} + EID.Config["BagFloorContent"] = EID.bagOfCraftingRoomQueries or {} end EID.SaveData(EID, json.encode(EID.Config)) end