3 files changed
+53
-48
No files matched your search
+3
-1
@@ -508,7 +508,9 @@ function EID:hasDescription(entity)
|
|||||||
isAllowed = isAllowed or (entity.Variant == PickupVariant.PICKUP_TRINKET and EID.Config["DisplayTrinketInfo"])
|
isAllowed = isAllowed or (entity.Variant == PickupVariant.PICKUP_TRINKET and EID.Config["DisplayTrinketInfo"])
|
||||||
isAllowed = isAllowed or (entity.Variant == PickupVariant.PICKUP_TAROTCARD and EID.Config["DisplayCardInfo"])
|
isAllowed = isAllowed or (entity.Variant == PickupVariant.PICKUP_TAROTCARD and EID.Config["DisplayCardInfo"])
|
||||||
isAllowed = isAllowed or (entity.Variant == PickupVariant.PICKUP_PILL and EID.Config["DisplayPillInfo"])
|
isAllowed = isAllowed or (entity.Variant == PickupVariant.PICKUP_PILL and EID.Config["DisplayPillInfo"])
|
||||||
return isAllowed and (entity.SubType > 0 or EID:getEntityData(entity, "EID_FlipItemID"))
|
return isAllowed and (entity.SubType > 0 or
|
||||||
|
-- For Flip descriptions, allow 5.100.0 pedestals to have descriptions under VERY specific criteria!
|
||||||
|
(REPENTANCE and EID:getEntityData(entity, "EID_FlipItemID") and EID:PlayersHaveCollectible(CollectibleType.COLLECTIBLE_FLIP)))
|
||||||
end
|
end
|
||||||
if entity.Type == 6 and entity.Variant == 16 and EID.Config["DisplayCraneInfo"] and REPENTANCE then
|
if entity.Type == 6 and entity.Variant == 16 and EID.Config["DisplayCraneInfo"] and REPENTANCE then
|
||||||
isAllowed = not entity:GetSprite():IsPlaying("Broken") and not entity:GetSprite():IsPlaying("Prize") and EID.CraneItemType[tostring(entity.InitSeed)]
|
isAllowed = not entity:GetSprite():IsPlaying("Broken") and not entity:GetSprite():IsPlaying("Prize") and EID.CraneItemType[tostring(entity.InitSeed)]
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ local function entityToName(e, plural)
|
|||||||
local name = localizedNames[e] or EID.XMLEntityNames[e] or localizedNames[eWithZero] or EID.XMLEntityNames[eWithZero] or e
|
local name = localizedNames[e] or EID.XMLEntityNames[e] or localizedNames[eWithZero] or EID.XMLEntityNames[eWithZero] or e
|
||||||
|
|
||||||
--print out entities with no name yet
|
--print out entities with no name yet
|
||||||
if name == e then print("No name found for " .. e .. " (could be modded)")
|
if name == e then Isaac.DebugString("No name found for " .. e .. " (could be modded)")
|
||||||
elseif plural then name = name .. localizedNames["pluralize"] end
|
elseif plural then name = name .. localizedNames["pluralize"] end
|
||||||
|
|
||||||
return name
|
return name
|
||||||
|
|||||||
@@ -244,13 +244,26 @@ local initialItemNext = false
|
|||||||
local flipItemNext = false
|
local flipItemNext = false
|
||||||
if REPENTANCE then
|
if REPENTANCE then
|
||||||
EID.flipItemPositions = {}
|
EID.flipItemPositions = {}
|
||||||
local lastGetItemResult = {nil, nil, nil} -- itemID, Frame, gridIndex
|
|
||||||
|
local lastGetItemResult = {nil, nil, nil, nil} -- itemID, Frame, gridIndex, InitSeed
|
||||||
|
|
||||||
function EID:postGetCollectible(selectedCollectible, itemPoolType, decrease, seed)
|
function EID:postGetCollectible(selectedCollectible, itemPoolType, decrease, seed)
|
||||||
|
-- Handle Crane Game
|
||||||
|
if itemPoolType == ItemPoolType.POOL_CRANE_GAME then
|
||||||
|
for _, crane in ipairs(Isaac.FindByType(6, 16, -1, true, false)) do
|
||||||
|
if not crane:GetSprite():IsPlaying("Broken") then
|
||||||
|
if not EID.CraneItemType[tostring(crane.InitSeed)] then
|
||||||
|
EID.CraneItemType[tostring(crane.InitSeed)] = selectedCollectible
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Handle Flip item
|
-- Handle Flip item
|
||||||
-- PRE_ROOM_ENTITY_SPAWN sets us up to watch for the first POST_GET_COLLECTIBLE for this pedestal
|
-- PRE_ROOM_ENTITY_SPAWN sets us up to watch for the first POST_GET_COLLECTIBLE for this pedestal
|
||||||
-- (Tainted Isaac and Glitched Crown cause additional calls that have to be ignored)
|
-- (Tainted Isaac and Glitched Crown cause additional calls that have to be ignored)
|
||||||
-- POST_PICKUP_INIT occurs right before the Flip item is decided, so it sets us up to watch for the Flip item
|
-- POST_PICKUP_INIT occurs right before the Flip item is decided, so it sets us up to watch for the Flip item
|
||||||
|
-- (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
|
-- POST_NEW_ROOM then handles putting the result in the entity's GetData
|
||||||
local curFrame = Isaac.GetFrameCount()
|
local curFrame = Isaac.GetFrameCount()
|
||||||
local curRoomIndex = game:GetLevel():GetCurrentRoomIndex()
|
local curRoomIndex = game:GetLevel():GetCurrentRoomIndex()
|
||||||
@@ -260,33 +273,7 @@ if REPENTANCE then
|
|||||||
if EID.flipItemPositions[curRoomIndex] == nil then
|
if EID.flipItemPositions[curRoomIndex] == nil then
|
||||||
EID.flipItemPositions[curRoomIndex] = {}
|
EID.flipItemPositions[curRoomIndex] = {}
|
||||||
end
|
end
|
||||||
EID.flipItemPositions[curRoomIndex][lastGetItemResult[3]] = selectedCollectible
|
EID.flipItemPositions[curRoomIndex][lastGetItemResult[4]] = {selectedCollectible, lastGetItemResult[3]}
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Check if Flip item pedestals have moved (restock/Greed shops)
|
|
||||||
-- BUG if you leave the room before the new shop item spawns??
|
|
||||||
if EID.flipItemPositions[curRoomIndex] then
|
|
||||||
local pedestals = Isaac.FindByType(5, 100, -1, true, false)
|
|
||||||
for _, pedestal in ipairs(pedestals) do
|
|
||||||
local gridPos = game:GetRoom():GetGridIndex(pedestal.Position)
|
|
||||||
local oldGridPos = pedestal:GetData()["EID_FlipItemPedestalGrid"]
|
|
||||||
if EID.flipItemPositions[curRoomIndex][oldGridPos] and gridPos ~= oldGridPos then
|
|
||||||
EID.flipItemPositions[curRoomIndex][oldGridPos] = nil
|
|
||||||
EID.flipItemPositions[curRoomIndex][gridPos] = gridPos
|
|
||||||
pedestal:GetData()["EID_FlipItemPedestalGrid"] = gridPos
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Handle Crane Game
|
|
||||||
if itemPoolType == ItemPoolType.POOL_CRANE_GAME then
|
|
||||||
for _, crane in ipairs(Isaac.FindByType(6, 16, -1, true, false)) do
|
|
||||||
if not crane:GetSprite():IsPlaying("Broken") then
|
|
||||||
if not EID.CraneItemType[tostring(crane.InitSeed)] then
|
|
||||||
EID.CraneItemType[tostring(crane.InitSeed)] = selectedCollectible
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -299,7 +286,7 @@ if REPENTANCE then
|
|||||||
function EID:preRoomEntitySpawn(entityType, variant, subtype, gridIndex, seed)
|
function EID:preRoomEntitySpawn(entityType, variant, subtype, gridIndex, seed)
|
||||||
flipItemNext = false
|
flipItemNext = false
|
||||||
if entityType == 5 and (variant == 100 or variant == 150) then
|
if entityType == 5 and (variant == 100 or variant == 150) then
|
||||||
lastGetItemResult = {nil, Isaac.GetFrameCount(), gridIndex}
|
lastGetItemResult = {nil, Isaac.GetFrameCount(), gridIndex, nil}
|
||||||
initialItemNext = true
|
initialItemNext = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -307,32 +294,51 @@ if REPENTANCE then
|
|||||||
|
|
||||||
function EID:postPickupInit(entity)
|
function EID:postPickupInit(entity)
|
||||||
flipItemNext = true
|
flipItemNext = true
|
||||||
|
lastGetItemResult[4] = entity.InitSeed
|
||||||
|
|
||||||
-- Keep the Flip item the same for pedestal rerolls
|
|
||||||
local curRoomIndex = game:GetLevel():GetCurrentRoomIndex()
|
local curRoomIndex = game:GetLevel():GetCurrentRoomIndex()
|
||||||
local gridPos = game:GetRoom():GetGridIndex(entity.Position)
|
local gridPos = game:GetRoom():GetGridIndex(entity.Position)
|
||||||
local flipEntry = EID.flipItemPositions[curRoomIndex] and EID.flipItemPositions[curRoomIndex][gridPos]
|
|
||||||
if flipEntry then entity:GetData()["EID_FlipItemID"] = flipEntry end
|
-- Update a Flip item's init seed after D6 rerolls or using Flip (aka Grid Index didn't change, Init Seed did)
|
||||||
|
if EID.flipItemPositions[curRoomIndex] and not EID.flipItemPositions[curRoomIndex][entity.InitSeed] then
|
||||||
|
-- Fix pedestal grid indexes (fixes bugs with restock shops, hopefully it isn't laggy)
|
||||||
|
EID:CheckFlipGridIndexes()
|
||||||
|
for k,v in pairs(EID.flipItemPositions[curRoomIndex]) do
|
||||||
|
if v[2] == gridPos then
|
||||||
|
EID.flipItemPositions[curRoomIndex][entity.InitSeed] = v
|
||||||
|
EID.flipItemPositions[curRoomIndex][k] = nil
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- Give this new entity its Flip Item data if possible
|
||||||
|
local flipEntry = EID.flipItemPositions[curRoomIndex] and EID.flipItemPositions[curRoomIndex][entity.InitSeed]
|
||||||
|
if flipEntry then
|
||||||
|
entity:GetData()["EID_FlipItemID"] = flipEntry[1]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
EID:AddCallback(ModCallbacks.MC_POST_PICKUP_INIT, EID.postPickupInit, PickupVariant.PICKUP_COLLECTIBLE)
|
EID:AddCallback(ModCallbacks.MC_POST_PICKUP_INIT, EID.postPickupInit, PickupVariant.PICKUP_COLLECTIBLE)
|
||||||
|
|
||||||
function EID:preUseFlip(_)
|
-- Before using Flip, swap all flippable pedestal's current item with the flip one (also, fix grid index if needed)
|
||||||
|
function EID:CheckFlipGridIndexes(collectibleType)
|
||||||
local curRoomIndex = game:GetLevel():GetCurrentRoomIndex()
|
local curRoomIndex = game:GetLevel():GetCurrentRoomIndex()
|
||||||
if EID.flipItemPositions[curRoomIndex] then
|
if EID.flipItemPositions[curRoomIndex] then
|
||||||
local pedestals = Isaac.FindByType(5, 100, -1, true, false)
|
local pedestals = Isaac.FindByType(5, 100, -1, true, false)
|
||||||
for _, pedestal in ipairs(pedestals) do
|
for _, pedestal in ipairs(pedestals) do
|
||||||
local gridPos = game:GetRoom():GetGridIndex(pedestal.Position)
|
local flipEntry = EID.flipItemPositions[curRoomIndex][pedestal.InitSeed]
|
||||||
if EID.flipItemPositions[curRoomIndex][gridPos] then
|
if flipEntry then
|
||||||
-- don't swap a flip shadow with an empty pedestal!
|
local gridPos = game:GetRoom():GetGridIndex(pedestal.Position)
|
||||||
if pedestal.SubType == 0 then EID.flipItemPositions[curRoomIndex][gridPos] = nil
|
flipEntry[2] = gridPos
|
||||||
else EID.flipItemPositions[curRoomIndex][gridPos] = pedestal.SubType end
|
if collectibleType == CollectibleType.COLLECTIBLE_FLIP then
|
||||||
--postPickupInit will take care of assigning it to the entity's data
|
-- don't swap a flip shadow with an empty pedestal!
|
||||||
|
if pedestal.SubType == 0 then flipEntry = nil
|
||||||
|
else flipEntry[1] = pedestal.SubType end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
EID:AddCallback(ModCallbacks.MC_PRE_USE_ITEM, EID.preUseFlip, CollectibleType.COLLECTIBLE_FLIP)
|
EID:AddCallback(ModCallbacks.MC_PRE_USE_ITEM, EID.CheckFlipGridIndexes, CollectibleType.COLLECTIBLE_FLIP)
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
@@ -514,12 +520,9 @@ if REPENTANCE then
|
|||||||
if EID:PlayersHaveCollectible(CollectibleType.COLLECTIBLE_FLIP) and EID.flipItemPositions[curRoomIndex] then
|
if EID:PlayersHaveCollectible(CollectibleType.COLLECTIBLE_FLIP) and EID.flipItemPositions[curRoomIndex] then
|
||||||
local pedestals = Isaac.FindByType(5, 100, -1, true, false)
|
local pedestals = Isaac.FindByType(5, 100, -1, true, false)
|
||||||
for _, pedestal in ipairs(pedestals) do
|
for _, pedestal in ipairs(pedestals) do
|
||||||
local gridPos = game:GetRoom():GetGridIndex(pedestal.Position)
|
local flipEntry = EID.flipItemPositions[curRoomIndex][pedestal.InitSeed]
|
||||||
local flipEntry = EID.flipItemPositions[curRoomIndex][gridPos]
|
|
||||||
if flipEntry then
|
if flipEntry then
|
||||||
pedestal:GetData()["EID_FlipItemID"] = flipEntry
|
pedestal:GetData()["EID_FlipItemID"] = flipEntry[1]
|
||||||
pedestal:GetData()["EID_FlipItemPedestalIndex"] = pedestal.Index
|
|
||||||
pedestal:GetData()["EID_FlipItemPedestalGrid"] = gridPos
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in new issue
Block a user