feat: synergy notes for owned items (RU, prebuilt from dead-god.ru)
Check Localization / Check Localization process (push) Canceled after 0s
Check Localization / Check Localization process (push) Canceled after 0s
This commit is contained in:
1 parent
88d2ba6154
commit
74fcf726a4
5 files changed
+2715
No files matched your search
@@ -0,0 +1,68 @@
|
||||
-- Personal fork: synergy notes for owned items (Russian).
|
||||
-- Data comes prebuilt from dead_god_items.json, see
|
||||
-- EID-localization-audit/build_synergy_table.py and features/eid_synergy_data.lua.
|
||||
-- When the player owns item A and looks at item B that synergizes with A,
|
||||
-- the relevant note is appended to B's description.
|
||||
|
||||
local MAX_SYNERGY_LINES = 3
|
||||
|
||||
local function synergyTableFor(desc)
|
||||
if EID.SynergyDataRU == nil then return nil end
|
||||
if desc.ObjType ~= EntityType.ENTITY_PICKUP then return nil end
|
||||
if desc.ObjVariant == PickupVariant.PICKUP_COLLECTIBLE then
|
||||
return EID.SynergyDataRU.coll[desc.ObjSubType]
|
||||
elseif desc.ObjVariant == PickupVariant.PICKUP_TRINKET then
|
||||
return EID.SynergyDataRU.trink[desc.ObjSubType]
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
local function anyPartnerOwned(entry)
|
||||
for _, partner in ipairs(entry.partners) do
|
||||
if EID:PlayersHaveCollectible(partner) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local function synergyCondition(desc)
|
||||
if EID:getLanguage() ~= "ru" then return false end
|
||||
if EID.Config["DisplaySynergies"] == false then return false end
|
||||
local list = synergyTableFor(desc)
|
||||
if not list then return false end
|
||||
for _, entry in ipairs(list) do
|
||||
if anyPartnerOwned(entry) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local function synergyCallback(desc)
|
||||
local list = synergyTableFor(desc)
|
||||
if not list then return desc end
|
||||
-- collect (partner, text) pairs for owned partners only
|
||||
local lines = {}
|
||||
for _, entry in ipairs(list) do
|
||||
for _, partner in ipairs(entry.partners) do
|
||||
if EID:PlayersHaveCollectible(partner) then
|
||||
lines[#lines + 1] = { partner = partner, text = entry.text }
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if #lines == 0 then return desc end
|
||||
desc.Description = desc.Description .. "{{CR}}#Синергии:"
|
||||
for i = 1, math.min(#lines, MAX_SYNERGY_LINES) do
|
||||
-- NOTE: {{CollectibleID}} already renders the item's icon AND its name,
|
||||
-- so no explicit name is added here
|
||||
desc.Description = desc.Description .. "#{{Collectible" .. lines[i].partner .. "}}: " .. lines[i].text
|
||||
end
|
||||
if #lines > MAX_SYNERGY_LINES then
|
||||
desc.Description = desc.Description .. "#…и ещё синергий: " .. (#lines - MAX_SYNERGY_LINES)
|
||||
end
|
||||
return desc
|
||||
end
|
||||
|
||||
EID:addDescriptionModifier("EID Personal Synergy Notes", synergyCondition, synergyCallback)
|
||||
Reference in new issue
Block a user