watch for Tainted Cain active items better
This commit is contained in:
1 parent
b5d151a31d
commit
a0151bb472
1 file changed
+37
-8
+37
-8
@@ -1931,7 +1931,7 @@ function EID:evaluateTransformationProgress(transformation)
|
|||||||
EID.TransformationProgress[id][transformation] = EID.TransformationProgress[id][transformation] + collCount
|
EID.TransformationProgress[id][transformation] = EID.TransformationProgress[id][transformation] + collCount
|
||||||
|
|
||||||
-- Undo the Book of Virtues active item getting counted here
|
-- Undo the Book of Virtues active item getting counted here
|
||||||
if tonumber(eSubType) == 584 and player:GetActiveItem() == 584 then
|
if EID.isRepentance and tonumber(eSubType) == 584 and player:GetActiveItem() == 584 then
|
||||||
EID.TransformationProgress[id][transformation] = EID.TransformationProgress[id][transformation] - 1
|
EID.TransformationProgress[id][transformation] = EID.TransformationProgress[id][transformation] - 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -2005,11 +2005,7 @@ function EID:evaluateQueuedItems()
|
|||||||
if player.QueuedItem.Item.Type == ItemType.ITEM_ACTIVE then
|
if player.QueuedItem.Item.Type == ItemType.ITEM_ACTIVE then
|
||||||
-- A new active item was touched; initiate its touch count to 0 for all players
|
-- A new active item was touched; initiate its touch count to 0 for all players
|
||||||
-- (Fixes co-op bugs, compared to only initiating it for the toucher)
|
-- (Fixes co-op bugs, compared to only initiating it for the toucher)
|
||||||
for j = 0, game:GetNumPlayers() - 1 do
|
EID:InitActiveItemInteraction(itemIDStr)
|
||||||
EID:InitItemInteractionIfAbsent(j)
|
|
||||||
EID.PlayerItemInteractions[j].actives[itemIDStr] = EID.PlayerItemInteractions[j].actives[itemIDStr] or 0
|
|
||||||
EID.PlayerItemInteractions[j+666].actives[itemIDStr] = EID.PlayerItemInteractions[j+666].actives[itemIDStr] or 0
|
|
||||||
end
|
|
||||||
|
|
||||||
local activesTable = EID.PlayerItemInteractions[id].actives
|
local activesTable = EID.PlayerItemInteractions[id].actives
|
||||||
EID.ForceRefreshCache = true
|
EID.ForceRefreshCache = true
|
||||||
@@ -2024,7 +2020,6 @@ function EID:evaluateQueuedItems()
|
|||||||
if EID.isRepentance and player:GetPlayerType() == 38 then playerID = playerID + 666 end
|
if EID.isRepentance and player:GetPlayerType() == 38 then playerID = playerID + 666 end
|
||||||
table.insert(EID.RecentlyTouchedItems[playerID], player.QueuedItem.Item.ID)
|
table.insert(EID.RecentlyTouchedItems[playerID], player.QueuedItem.Item.ID)
|
||||||
EID:ResetItemReminderSelectedItems("Passives")
|
EID:ResetItemReminderSelectedItems("Passives")
|
||||||
EID.ItemReminderSelectedItems[#EID.ItemReminderCategories - 1] = 0
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -2047,6 +2042,15 @@ function EID:InitItemInteractionIfAbsent(playerID)
|
|||||||
EID.RecentlyTouchedItems[playerID] = EID.RecentlyTouchedItems[playerID] or {}
|
EID.RecentlyTouchedItems[playerID] = EID.RecentlyTouchedItems[playerID] or {}
|
||||||
EID.RecentlyTouchedItems[playerID+666] = EID.RecentlyTouchedItems[playerID+666] or {}
|
EID.RecentlyTouchedItems[playerID+666] = EID.RecentlyTouchedItems[playerID+666] or {}
|
||||||
end
|
end
|
||||||
|
-- initialize a touched active item to 0 count for all players
|
||||||
|
-- (Fixes co-op bugs, compared to only initiating it for the toucher)
|
||||||
|
function EID:InitActiveItemInteraction(itemIDStr)
|
||||||
|
for playerID = 0, game:GetNumPlayers() - 1 do
|
||||||
|
EID:InitItemInteractionIfAbsent(playerID)
|
||||||
|
EID.PlayerItemInteractions[playerID].actives[itemIDStr] = EID.PlayerItemInteractions[playerID].actives[itemIDStr] or 0
|
||||||
|
EID.PlayerItemInteractions[playerID+666].actives[itemIDStr] = EID.PlayerItemInteractions[playerID+666].actives[itemIDStr] or 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
-- Returns the quality of the described entity
|
-- Returns the quality of the described entity
|
||||||
@@ -2236,6 +2240,20 @@ function EID:GetAllPassiveItems()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
local activeItems = nil -- cache of all active item ids
|
||||||
|
function EID:GetAllActiveItems()
|
||||||
|
if activeItems then
|
||||||
|
return activeItems
|
||||||
|
end
|
||||||
|
activeItems = {}
|
||||||
|
|
||||||
|
for i = 1, EID:GetMaxCollectibleID() do
|
||||||
|
local config = EID.itemConfig:GetCollectible(i)
|
||||||
|
if config ~= nil and (config.Type == ItemType.ITEM_ACTIVE) then
|
||||||
|
table.insert(activeItems, i)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Updates the EID.RecentlyTouchedItems table to include the players currently held passive items
|
-- Updates the EID.RecentlyTouchedItems table to include the players currently held passive items
|
||||||
function EID:UpdateAllPlayerPassiveItems()
|
function EID:UpdateAllPlayerPassiveItems()
|
||||||
@@ -2259,7 +2277,7 @@ function EID:UpdateAllPlayerPassiveItems()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- add items the player did get with non-standard methods (console command, item effects, etc...)
|
-- add items the player did get with non-standard methods (Bag of Crafting, console command, item effects, etc...)
|
||||||
for _, itemID in ipairs(passives) do
|
for _, itemID in ipairs(passives) do
|
||||||
if player:HasCollectible(itemID, true) then
|
if player:HasCollectible(itemID, true) then
|
||||||
local alreadyInList = false
|
local alreadyInList = false
|
||||||
@@ -2275,6 +2293,17 @@ function EID:UpdateAllPlayerPassiveItems()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- super hacky Tainted Cain active items check, mostly for transformation progress
|
||||||
|
-- Only adds up to one copy of any active, I can't think of a good way to recognize a craft of the same active twice. better than nothing
|
||||||
|
if EID.isRepentance and player:GetPlayerType() == 23 then
|
||||||
|
for i = 0, 1 do
|
||||||
|
local itemID = tostring(player:GetActiveItem(i))
|
||||||
|
if itemID ~= "0" then
|
||||||
|
EID:InitActiveItemInteraction(itemID)
|
||||||
|
if EID.PlayerItemInteractions[playerNum].actives[itemID] == 0 then EID.PlayerItemInteractions[playerNum].actives[itemID] = 1 end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
return listUpdatedForPlayers
|
return listUpdatedForPlayers
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in new issue
Block a user