-- 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)