From 6cedeb4a1b2de7a2ba5cf2dca06489a0518f0293 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?wakaba=20=28aka=2E=20=EB=AF=B8=EC=B9=B4=29?= Date: Mon, 20 Jun 2022 14:32:38 +0900 Subject: [PATCH] fix Flip with non 1x1 rooms --- main.lua | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/main.lua b/main.lua index c2be506b..5979b374 100644 --- a/main.lua +++ b/main.lua @@ -186,7 +186,7 @@ EID:AddCallback(ModCallbacks.MC_POST_NEW_LEVEL, EID.onNewFloor) function EID:onSacrificeDamage(_, _, flags, source) if EID.Config["DisplaySacrificeInfo"] and game:GetRoom():GetType() == RoomType.ROOM_SACRIFICE and source.Type == 0 and flags & DamageFlag.DAMAGE_SPIKES == DamageFlag.DAMAGE_SPIKES then - local curRoomIndex = game:GetLevel():GetCurrentRoomIndex() + local curRoomIndex = game:GetLevel():GetCurrentRoomDesc().ListIndex if EID.sacrificeCounter[curRoomIndex] == nil then EID.sacrificeCounter[curRoomIndex] = 1 end @@ -280,7 +280,7 @@ if REPENTANCE then -- (it also watches for item rerolls to fill the new entity's GetData) -- POST_NEW_ROOM then handles putting the result in the entity's GetData local curFrame = Isaac.GetFrameCount() - local curRoomIndex = game:GetLevel():GetCurrentRoomIndex() + local curRoomIndex = game:GetLevel():GetCurrentRoomDesc().ListIndex if curFrame == lastGetItemResult[2] then if initialItemNext then lastGetItemResult[1] = selectedCollectible elseif flipItemNext and lastGetItemResult[1] then @@ -316,7 +316,7 @@ if REPENTANCE then flipItemNext = true lastGetItemResult[4] = entity.InitSeed - local curRoomIndex = game:GetLevel():GetCurrentRoomIndex() + local curRoomIndex = game:GetLevel():GetCurrentRoomDesc().ListIndex local gridPos = game:GetRoom():GetGridIndex(entity.Position) -- Update a Flip item's init seed after D6 rerolls or using Flip (aka Grid Index didn't change, Init Seed did) @@ -343,7 +343,7 @@ if REPENTANCE then -- Only pedestals with indexes that were present at room load can be flip pedestals -- Fixes shop restock machines and Diplopia... mostly. At least while you're in the room. if entity:GetData()["EID_FlipItemID"] and entity.Index > EID.flipMaxIndex then - local curRoomIndex = game:GetLevel():GetCurrentRoomIndex() + local curRoomIndex = game:GetLevel():GetCurrentRoomDesc().ListIndex local gridPos = game:GetRoom():GetGridIndex(entity.Position) local flipEntry = EID.flipItemPositions[curRoomIndex] and EID.flipItemPositions[curRoomIndex][entity.InitSeed] -- only wipe the data if the grid index matches (so Diplopia pedestals don't) @@ -358,7 +358,7 @@ if REPENTANCE then -- also, reload our descriptions due to transformation progress changing upon Flip EID.ForceRefreshCache = true lastFrameGridChecked = Isaac.GetFrameCount() - local curRoomIndex = game:GetLevel():GetCurrentRoomIndex() + local curRoomIndex = game:GetLevel():GetCurrentRoomDesc().ListIndex if EID.flipItemPositions[curRoomIndex] then local pedestals = Isaac.FindByType(5, 100, -1, true, false) for _, pedestal in ipairs(pedestals) do @@ -737,7 +737,7 @@ EID.isDeathCertRoom = false if REPENTANCE then function EID:AssignFlipItems() EID.flipMaxIndex = -1 - local curRoomIndex = game:GetLevel():GetCurrentRoomIndex() + local curRoomIndex = game:GetLevel():GetCurrentRoomDesc().ListIndex if EID.flipItemPositions[curRoomIndex] then local pedestals = Isaac.FindByType(5, 100, -1, true, false) for _, pedestal in ipairs(pedestals) do @@ -766,7 +766,7 @@ end function EID:onNewRoom() EID.RecentlyTouchedItems = {} - local curRoomIndex = game:GetLevel():GetCurrentRoomIndex() + local curRoomIndex = game:GetLevel():GetCurrentRoomDesc().ListIndex preHourglassStatus = {} preHourglassStatus.SacrificeCounter = EID.sacrificeCounter[curRoomIndex] @@ -774,7 +774,7 @@ end EID:AddCallback(ModCallbacks.MC_POST_NEW_ROOM, EID.onNewRoom) function EID:WatchForGlowingHourglass() - local curRoomIndex = game:GetLevel():GetCurrentRoomIndex() + local curRoomIndex = game:GetLevel():GetCurrentRoomDesc().ListIndex EID.sacrificeCounter[curRoomIndex] = preHourglassStatus.SacrificeCounter end EID:AddCallback(ModCallbacks.MC_PRE_USE_ITEM, EID.WatchForGlowingHourglass, CollectibleType.COLLECTIBLE_GLOWING_HOUR_GLASS) @@ -1503,7 +1503,7 @@ local function onRender(t) -- it will be last priority for the main spot if DisplayAllNearby is on and we aren't near them if (#EID.descriptionsToPrint == 0 or playerNearSacrificeSpikes) or EID.Config["DisplayAllNearby"] then if game:GetRoom():GetType() == RoomType.ROOM_SACRIFICE and EID.Config["DisplaySacrificeInfo"] then - local curRoomIndex = game:GetLevel():GetCurrentRoomIndex() + local curRoomIndex = game:GetLevel():GetCurrentRoomDesc().ListIndex local curCounter = EID.sacrificeCounter[curRoomIndex] or 1 local sacrificeDesc = EID:getDescriptionObj(-999, -1, curCounter) EID:addDescriptionToPrint(sacrificeDesc, playerNearSacrificeSpikes and 1 or nil)