From 9138e249b70b2f32e32e8cede227b3173c53a5b8 Mon Sep 17 00:00:00 2001 From: Alexander Wilson Date: Wed, 22 Apr 2026 21:21:57 -0700 Subject: [PATCH 1/4] Add support for Baryanic Leylines (Disciple of Varashta) Parse "Non-Unique Time-Lost Jewels have X% increased radius" into a NonUniqueTimeLostJewelRadius modifier. When the build has the modifier, non-unique Time-Lost Jewels swap to a precomputed +40% radius tier for the in-radius passive computation and for the socket ring drawn on the tree. Regenerated ModCache.lua accordingly. --- spec/System/TestBaryanicLeylines_spec.lua | 33 +++++++++++++++++++ src/Classes/PassiveTreeView.lua | 40 +++++++++++++++++++++-- src/Data/ModCache.lua | 12 +++---- src/Modules/CalcSetup.lua | 13 ++++++-- src/Modules/Data.lua | 33 +++++++++++++++++++ src/Modules/ModParser.lua | 2 +- 6 files changed, 121 insertions(+), 12 deletions(-) create mode 100644 spec/System/TestBaryanicLeylines_spec.lua diff --git a/spec/System/TestBaryanicLeylines_spec.lua b/spec/System/TestBaryanicLeylines_spec.lua new file mode 100644 index 0000000000..58a66017ae --- /dev/null +++ b/spec/System/TestBaryanicLeylines_spec.lua @@ -0,0 +1,33 @@ +describe("BaryanicLeylines", function() + before_each(function() + newBuild() + end) + + teardown(function() + -- newBuild() takes care of resetting everything in setup() + end) + + it("parses Non-Unique Time-Lost Jewel radius modifier", function() + build.configTab.input.customMods = "\z + Non-Unique Time-Lost Jewels have 40% increased radius\n\z + " + build.configTab:BuildModList() + runCallback("OnFrame") + + assert.are.equals(40, build.calcsTab.mainEnv.modDB:Sum("INC", nil, "NonUniqueTimeLostJewelRadius")) + end) + + it("resolveTimeLostRadiusIndex returns upgraded tier at 40% and falls back otherwise", function() + -- Each base tier (Small..Very Large) maps to a +40% counterpart whose outer + -- radius is base * 1.4 (Small 1000 -> 1400). + assert.are.equals(1400, data.jewelRadius[data.resolveTimeLostRadiusIndex(1, 40)].outer) + assert.are.equals(1610, data.jewelRadius[data.resolveTimeLostRadiusIndex(2, 40)].outer) + assert.are.equals(1820, data.jewelRadius[data.resolveTimeLostRadiusIndex(3, 40)].outer) + assert.are.equals(2100, data.jewelRadius[data.resolveTimeLostRadiusIndex(4, 40)].outer) + + -- No upgrade tier exists below 40%, so the base index is returned unchanged. + assert.are.equals(1, data.resolveTimeLostRadiusIndex(1, 0)) + assert.are.equals(1, data.resolveTimeLostRadiusIndex(1, 39)) + assert.are.equals(1, data.resolveTimeLostRadiusIndex(1, nil)) + end) +end) diff --git a/src/Classes/PassiveTreeView.lua b/src/Classes/PassiveTreeView.lua index 2728b190ef..a6308bc501 100644 --- a/src/Classes/PassiveTreeView.lua +++ b/src/Classes/PassiveTreeView.lua @@ -1222,7 +1222,15 @@ function PassiveTreeViewClass:Draw(build, viewPort, inputEvents) -- Draw ring overlays for jewel sockets local function drawJewelRadius(jewel, scrX, scrY, tint) - local radData = build.data.jewelRadius[jewel.jewelRadiusIndex] + local effectiveRadiusIndex = jewel.jewelRadiusIndex + -- (check for Time-Lost upgrades such as Baryanic Leylines) -- + local effectiveRadiusIndex = jewel.jewelRadiusIndex + if effectiveRadiusIndex and jewel.base and jewel.base.subType == "Radius" + and jewel.rarity ~= "UNIQUE" and jewel.rarity ~= "RELIC" + and build.calcsTab and build.calcsTab.mainEnv and build.calcsTab.mainEnv.modDB then + effectiveRadiusIndex = data.resolveTimeLostRadiusIndex(effectiveRadiusIndex, build.calcsTab.mainEnv.modDB:Sum("INC", nil, "NonUniqueTimeLostJewelRadius")) + end + local radData = build.data.jewelRadius[effectiveRadiusIndex] local outerSize = radData.outer * data.gameConstants["PassiveTreeJewelDistanceMultiplier"] * scale local innerSize = radData.inner * data.gameConstants["PassiveTreeJewelDistanceMultiplier"] * scale * 1.06 SetDrawColor(tint[1], tint[2], tint[3], tint[4]) @@ -1259,6 +1267,7 @@ function PassiveTreeViewClass:Draw(build, viewPort, inputEvents) self:DrawImageRotated(self.jewelShadedInnerRingFlipped, scrX, scrY, innerSize * 2, innerSize * 2, 0.7) end end + SetDrawLayer(nil, 25) for nodeId in pairs(tree.sockets) do local node = spec.nodes[nodeId] @@ -1796,11 +1805,38 @@ function PassiveTreeViewClass:AddNodeTooltip(tooltip, node, build, incSmallPassi -- we only want to run the timeLost function on a node that can could be in a jewel socket radius of up to Large -- essentially trying to avoid calling ProcessStats for a Normal/Notable node that can't possibly be affected -- loops potentially every socket (24) until itemsTab is loaded or a jewel socket is hovered, then it will only loop the allocated sockets + -- Radius indexes to probe: Very Large (4) plus any Time-Lost upgrade tiers (e.g. Baryanic Leylines' + -- "Very Large +40%" at 16) so nodes only reachable via an increased radius still show jewel mods. + local radiusProbeIndexes = { 4 } + if data.nonUniqueTimeLostJewelRadiusUpgrades then + for _, map in pairs(data.nonUniqueTimeLostJewelRadiusUpgrades) do + for _, upgradedIndex in pairs(map) do + local seen = false + for _, existing in ipairs(radiusProbeIndexes) do + if existing == upgradedIndex then + seen = true + break + end + end + if not seen then + t_insert(radiusProbeIndexes, upgradedIndex) + end + end + end + end local function isNodeInARadius(node) local isInRadius = false for id, socket in pairs(build.itemsTab.sockets) do if build.itemsTab.activeSocketList and socket.inactive == false or socket.inactive == nil then - isInRadius = isInRadius or (build.spec.nodes[id] and build.spec.nodes[id].nodesInRadius and build.spec.nodes[id].nodesInRadius[4][node.id] ~= nil) + local socketNode = build.spec.nodes[id] + if socketNode and socketNode.nodesInRadius then + for _, radiusIndex in ipairs(radiusProbeIndexes) do + if socketNode.nodesInRadius[radiusIndex] and socketNode.nodesInRadius[radiusIndex][node.id] ~= nil then + isInRadius = true + break + end + end + end if isInRadius then break end end end diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index e2846de0d0..6b48ab480f 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -6344,15 +6344,15 @@ c["Non-Keystone Passive Skills in Medium Radius of allocated Keystone Passive Sk c["Non-Minion Skills have 50% less Reservation Efficiency"]={{[1]={[1]={neg=true,skillType=6,type="SkillType"},flags=0,keywordFlags=0,name="ReservationEfficiency",type="MORE",value=-50}},nil} c["Non-Unique Life Flasks apply their Effects constantly"]={nil,"Non-Unique Life Flasks apply their Effects constantly "} c["Non-Unique Life Flasks apply their Effects constantly Recovery from Life Flasks cannot be Instant"]={nil,"Non-Unique Life Flasks apply their Effects constantly Recovery from Life Flasks cannot be Instant "} -c["Non-Unique Time-Lost Jewels have 40% increased radius"]={nil,"Non-Unique Time-Lost Jewels have 40% increased radius "} +c["Non-Unique Time-Lost Jewels have 40% increased radius"]={{[1]={flags=0,keywordFlags=0,name="NonUniqueTimeLostJewelRadius",type="INC",value=40}},nil} c["Oasis"]={{[1]={flags=0,keywordFlags=0,name="Keystone",type="LIST",value="Oasis"}},nil} c["Off-hand Hits inflict Runefather's Challenge"]={nil,"Off-hand Hits inflict Runefather's Challenge "} c["Off-hand Hits inflict Runefather's Challenge Inflicts Runefather's Challenge on enemies 6 metres in front of you when raised, no more than once every 2 seconds"]={nil,"Off-hand Hits inflict Runefather's Challenge Inflicts Runefather's Challenge on enemies 6 metres in front of you when raised, no more than once every 2 seconds "} -c["Offering Skills have 15% increased Buff effect"]={{[1]={[1]={skillType=155,type="SkillType"},flags=0,keywordFlags=0,name="BuffEffect",type="INC",value=15}},nil} -c["Offering Skills have 20% increased Area of Effect"]={{[1]={[1]={skillType=155,type="SkillType"},flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=20}},nil} -c["Offering Skills have 20% increased Duration"]={{[1]={[1]={skillType=155,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=20}},nil} -c["Offering Skills have 30% increased Duration"]={{[1]={[1]={skillType=155,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=30}},nil} -c["Offering Skills have 30% reduced Duration"]={{[1]={[1]={skillType=155,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=-30}},nil} +c["Offering Skills have 15% increased Buff effect"]={{[1]={[1]={skillType=154,type="SkillType"},flags=0,keywordFlags=0,name="BuffEffect",type="INC",value=15}},nil} +c["Offering Skills have 20% increased Area of Effect"]={{[1]={[1]={skillType=154,type="SkillType"},flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=20}},nil} +c["Offering Skills have 20% increased Duration"]={{[1]={[1]={skillType=154,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=20}},nil} +c["Offering Skills have 30% increased Duration"]={{[1]={[1]={skillType=154,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=30}},nil} +c["Offering Skills have 30% reduced Duration"]={{[1]={[1]={skillType=154,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=-30}},nil} c["Offerings cannot be damaged if they have been created Recently"]={nil,"Offerings cannot be damaged if they have been created Recently "} c["Offerings created by Culling Enemies have 1% increased Effect per Power of Culled Enemy"]={{[1]={flags=0,keywordFlags=0,name="UnwillingOffering",type="FLAG",value=true},[2]={[1]={skillNameList={[1]="Bone Offering",[2]="Pain Offering",[3]="Soul Offering"},type="SkillName"},flags=0,keywordFlags=0,name="ExtraSkillMod",type="LIST",value={mod={[1]={limit=20,type="Multiplier",var="UnwillingOfferingPower"},flags=0,keywordFlags=0,name="BuffEffect",type="INC",value=1}}}},nil} c["Offerings have 15% increased Maximum Life"]={nil,"Offerings have 15% increased Maximum Life "} diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index be72984edd..dda1190479 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -890,6 +890,13 @@ function calcs.initEnv(build, mode, override, specEnv) end end if item and ( item.jewelRadiusIndex or (override and override.extraJewelFuncs and #override.extraJewelFuncs > 0) ) then + -- Non-unique Time-Lost Jewels use an upgraded radius tier when the build + -- has e.g. Baryanic Leylines allocated. + local effectiveRadiusIndex = item.jewelRadiusIndex + if effectiveRadiusIndex and item.base and item.base.subType == "Radius" + and item.rarity ~= "UNIQUE" and item.rarity ~= "RELIC" then + effectiveRadiusIndex = data.resolveTimeLostRadiusIndex(effectiveRadiusIndex, nodesModsList:Sum("INC", nil, "NonUniqueTimeLostJewelRadius")) + end -- Jewel has a radius, add it to the list local funcList = (item.jewelData and item.jewelData.funcList) or { { type = "Self", func = function(node, out, data) -- Default function just tallies all stats in radius @@ -902,19 +909,19 @@ function calcs.initEnv(build, mode, override, specEnv) for _, func in ipairs(funcList) do local node = env.spec.nodes[slot.nodeId] t_insert(env.radiusJewelList, { - nodes = node.nodesInRadius and node.nodesInRadius[item.jewelRadiusIndex] or { }, + nodes = node.nodesInRadius and node.nodesInRadius[effectiveRadiusIndex] or { }, func = func.func, type = func.type, item = item, nodeId = slot.nodeId, - attributes = node.attributesInRadius and node.attributesInRadius[item.jewelRadiusIndex] or { }, + attributes = node.attributesInRadius and node.attributesInRadius[effectiveRadiusIndex] or { }, data = { }, -- store this to compare with cache later jewelHash = getHashFromString(item.modSource..item.raw) }) if func.type ~= "Self" and node.nodesInRadius then -- Add nearby unallocated nodes to the extra node list - for nodeId, node in pairs(node.nodesInRadius[item.jewelRadiusIndex]) do + for nodeId, node in pairs(node.nodesInRadius[effectiveRadiusIndex]) do if not env.allocNodes[nodeId] then env.extraRadiusNodeList[nodeId] = env.spec.nodes[nodeId] end diff --git a/src/Modules/Data.lua b/src/Modules/Data.lua index 8fc98820d9..31401253d5 100644 --- a/src/Modules/Data.lua +++ b/src/Modules/Data.lua @@ -607,9 +607,42 @@ data.jewelRadii = { { inner = 1400, outer = 1700, col = "^xFFCC00", label = "Variable" }, { inner = 1650, outer = 1950, col = "^xFF6600", label = "Variable" }, { inner = 1800, outer = 2100, col = "^x0099FF", label = "Variable" }, + + -- Baryanic Leylines (Disciple of Varashta): non-unique Time-Lost radius +40% + { inner = 0, outer = 1400, col = "^xBB6600", label = "Small" }, + { inner = 0, outer = 1610, col = "^x66FFCC", label = "Medium" }, + { inner = 0, outer = 1820, col = "^x2222CC", label = "Large" }, + { inner = 0, outer = 2100, col = "^xC100FF", label = "Very Large" }, } } +-- Maps a base Time-Lost Jewel radius index to the upgraded index granted by +-- "Non-Unique Time-Lost Jewels have X% increased radius" effects. Keyed by +-- percentage so additional tiers can be added later. +data.nonUniqueTimeLostJewelRadiusUpgrades = { + [40] = { [1] = 13, [2] = 14, [3] = 15, [4] = 16 }, +} + +-- Returns the radius index that should be used for a non-unique Time-Lost Jewel +-- given the base index and the total "% increased radius" value in effect. +-- Picks the largest supported tier at or below upgradePct; returns baseIndex +-- unchanged when no tier applies. +function data.resolveTimeLostRadiusIndex(baseIndex, upgradePct) + if not baseIndex or not upgradePct or upgradePct <= 0 then + return baseIndex + end + local bestPct + for pct, map in pairs(data.nonUniqueTimeLostJewelRadiusUpgrades) do + if pct <= upgradePct and map[baseIndex] and (not bestPct or pct > bestPct) then + bestPct = pct + end + end + if bestPct then + return data.nonUniqueTimeLostJewelRadiusUpgrades[bestPct][baseIndex] + end + return baseIndex +end + data.jewelRadius = data.setJewelRadiiGlobally(latestTreeVersion) -- Stat descriptions diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index ee818e796d..1a01d47c3c 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -5512,7 +5512,7 @@ local specialModList = { ["only affects passives in massive ring"] = { mod("JewelData", "LIST", { key = "radiusIndex", value = 12 }) }, ["upgrades radius to medium"] = { mod("JewelData", "LIST", { key = "timeLostJewelRadiusOverride", value = 2 })}, ["upgrades radius to large"] = { mod("JewelData", "LIST", { key = "timeLostJewelRadiusOverride", value = 3 })}, - ["upgrades radius to very large"] = { mod("JewelData", "LIST", { key = "timeLostJewelRadiusOverride", value = 4 })}, + ["non%-unique time%-lost jewels have (%d+)%% increased radius"] = function(num) return { mod("NonUniqueTimeLostJewelRadius", "INC", num) } end, ["primordial"] = { mod("Multiplier:PrimordialItem", "BASE", 1) }, ["spectres have a base duration of (%d+) seconds"] = { mod("SkillData", "LIST", { key = "duration", value = 6 }, { type = "SkillName", skillName = "Raise Spectre", includeTransfigured = true }) }, ["flasks applied to you have (%d+)%% increased effect"] = function(num) return { mod("FlaskEffect", "INC", num, { type = "ActorCondition", actor = "player"}) } end, From a71277cdf44df91da7ffb9163e3de0b81f65dc28 Mon Sep 17 00:00:00 2001 From: Alexander Wilson Date: Fri, 8 May 2026 14:18:57 -0700 Subject: [PATCH 2/4] Polish Time-Lost jewel radius tooltip and probe set - Append "(+X% from tree)" to the jewel tooltip Radius line when a build has NonUniqueTimeLostJewelRadius active. - Skip Time-Lost upgrade radius indexes in the AddNodeTooltip probe set unless the build actually has access to them, avoiding unnecessary ProcessStats calls per hover. --- src/Classes/ItemsTab.lua | 11 ++++++++++- src/Classes/PassiveTreeView.lua | 28 ++++++++++++++++------------ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/Classes/ItemsTab.lua b/src/Classes/ItemsTab.lua index d3ffb571c6..833ab501e0 100644 --- a/src/Classes/ItemsTab.lua +++ b/src/Classes/ItemsTab.lua @@ -3460,7 +3460,16 @@ function ItemsTabClass:AddItemTooltip(tooltip, item, slot, dbMode, maxWidth) tooltip:AddLine(fontSizeBig, "^x7F7F7FRequires Class "..(self.build.spec.curClassName == item.classRestriction and colorCodes.POSITIVE or colorCodes.NEGATIVE)..item.classRestriction, "FONTIN SC") end if item.jewelRadiusLabel then - tooltip:AddLine(fontSizeBig, "^x7F7F7FRadius: ^7"..item.jewelRadiusLabel, "FONTIN SC") + local radiusLine = "^x7F7F7FRadius: ^7"..item.jewelRadiusLabel + if item.base and item.base.subType == "Radius" + and item.rarity ~= "UNIQUE" and item.rarity ~= "RELIC" + and self.build.calcsTab and self.build.calcsTab.mainEnv and self.build.calcsTab.mainEnv.modDB then + local upgradePct = self.build.calcsTab.mainEnv.modDB:Sum("INC", nil, "NonUniqueTimeLostJewelRadius") + if upgradePct > 0 then + radiusLine = radiusLine .. " ^x7F7F7F(+"..upgradePct.."% from tree)" + end + end + tooltip:AddLine(fontSizeBig, radiusLine, "FONTIN SC") end if item.jewelRadiusData and slot and item.jewelRadiusData[slot.nodeId] then local radiusData = item.jewelRadiusData[slot.nodeId] diff --git a/src/Classes/PassiveTreeView.lua b/src/Classes/PassiveTreeView.lua index a6308bc501..07ad3b291d 100644 --- a/src/Classes/PassiveTreeView.lua +++ b/src/Classes/PassiveTreeView.lua @@ -1806,20 +1806,24 @@ function PassiveTreeViewClass:AddNodeTooltip(tooltip, node, build, incSmallPassi -- essentially trying to avoid calling ProcessStats for a Normal/Notable node that can't possibly be affected -- loops potentially every socket (24) until itemsTab is loaded or a jewel socket is hovered, then it will only loop the allocated sockets -- Radius indexes to probe: Very Large (4) plus any Time-Lost upgrade tiers (e.g. Baryanic Leylines' - -- "Very Large +40%" at 16) so nodes only reachable via an increased radius still show jewel mods. + -- "Very Large +40%" at 16) that the current build actually has access to. local radiusProbeIndexes = { 4 } - if data.nonUniqueTimeLostJewelRadiusUpgrades then - for _, map in pairs(data.nonUniqueTimeLostJewelRadiusUpgrades) do - for _, upgradedIndex in pairs(map) do - local seen = false - for _, existing in ipairs(radiusProbeIndexes) do - if existing == upgradedIndex then - seen = true - break + local timeLostRadiusUpgrade = build.calcsTab and build.calcsTab.mainEnv and build.calcsTab.mainEnv.modDB + and build.calcsTab.mainEnv.modDB:Sum("INC", nil, "NonUniqueTimeLostJewelRadius") or 0 + if timeLostRadiusUpgrade > 0 and data.nonUniqueTimeLostJewelRadiusUpgrades then + for pct, map in pairs(data.nonUniqueTimeLostJewelRadiusUpgrades) do + if pct <= timeLostRadiusUpgrade then + for _, upgradedIndex in pairs(map) do + local seen = false + for _, existing in ipairs(radiusProbeIndexes) do + if existing == upgradedIndex then + seen = true + break + end + end + if not seen then + t_insert(radiusProbeIndexes, upgradedIndex) end - end - if not seen then - t_insert(radiusProbeIndexes, upgradedIndex) end end end From f595af3b6f32f73eb2876e04a314749bc4e114aa Mon Sep 17 00:00:00 2001 From: Brendan Stassel Date: Fri, 19 Jun 2026 22:16:11 -0400 Subject: [PATCH 3/4] Fix missing ModParser line for Very-large radius jewels --- src/Modules/ModParser.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 1a01d47c3c..35503e6b11 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -5512,6 +5512,7 @@ local specialModList = { ["only affects passives in massive ring"] = { mod("JewelData", "LIST", { key = "radiusIndex", value = 12 }) }, ["upgrades radius to medium"] = { mod("JewelData", "LIST", { key = "timeLostJewelRadiusOverride", value = 2 })}, ["upgrades radius to large"] = { mod("JewelData", "LIST", { key = "timeLostJewelRadiusOverride", value = 3 })}, + ["upgrades radius to very large"] = { mod("JewelData", "LIST", { key = "timeLostJewelRadiusOverride", value = 4 })}, ["non%-unique time%-lost jewels have (%d+)%% increased radius"] = function(num) return { mod("NonUniqueTimeLostJewelRadius", "INC", num) } end, ["primordial"] = { mod("Multiplier:PrimordialItem", "BASE", 1) }, ["spectres have a base duration of (%d+) seconds"] = { mod("SkillData", "LIST", { key = "duration", value = 6 }, { type = "SkillName", skillName = "Raise Spectre", includeTransfigured = true }) }, From 66deb5562928d96ba3e8c6e2a1325430a96b7d7f Mon Sep 17 00:00:00 2001 From: Alex Wilson Date: Sat, 20 Jun 2026 19:43:58 -0700 Subject: [PATCH 4/4] Rebase onto current dev (0.5.3): regen ModCache, drop duplicate local - Regenerated the NonUniqueTimeLostJewelRadius entry in ModCache.lua against 0.5.3 data so it no longer carries the stale Offering SkillType enum from the pre-0.5.3 base. - Removed a duplicate `local effectiveRadiusIndex` declaration (and stray double space) in PassiveTreeView drawJewelRadius. --- src/Classes/PassiveTreeView.lua | 3 +-- src/Data/ModCache.lua | 10 +++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/Classes/PassiveTreeView.lua b/src/Classes/PassiveTreeView.lua index 07ad3b291d..0ef93f3c05 100644 --- a/src/Classes/PassiveTreeView.lua +++ b/src/Classes/PassiveTreeView.lua @@ -1222,10 +1222,9 @@ function PassiveTreeViewClass:Draw(build, viewPort, inputEvents) -- Draw ring overlays for jewel sockets local function drawJewelRadius(jewel, scrX, scrY, tint) - local effectiveRadiusIndex = jewel.jewelRadiusIndex -- (check for Time-Lost upgrades such as Baryanic Leylines) -- local effectiveRadiusIndex = jewel.jewelRadiusIndex - if effectiveRadiusIndex and jewel.base and jewel.base.subType == "Radius" + if effectiveRadiusIndex and jewel.base and jewel.base.subType == "Radius" and jewel.rarity ~= "UNIQUE" and jewel.rarity ~= "RELIC" and build.calcsTab and build.calcsTab.mainEnv and build.calcsTab.mainEnv.modDB then effectiveRadiusIndex = data.resolveTimeLostRadiusIndex(effectiveRadiusIndex, build.calcsTab.mainEnv.modDB:Sum("INC", nil, "NonUniqueTimeLostJewelRadius")) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 6b48ab480f..3c064888f0 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -6348,11 +6348,11 @@ c["Non-Unique Time-Lost Jewels have 40% increased radius"]={{[1]={flags=0,keywor c["Oasis"]={{[1]={flags=0,keywordFlags=0,name="Keystone",type="LIST",value="Oasis"}},nil} c["Off-hand Hits inflict Runefather's Challenge"]={nil,"Off-hand Hits inflict Runefather's Challenge "} c["Off-hand Hits inflict Runefather's Challenge Inflicts Runefather's Challenge on enemies 6 metres in front of you when raised, no more than once every 2 seconds"]={nil,"Off-hand Hits inflict Runefather's Challenge Inflicts Runefather's Challenge on enemies 6 metres in front of you when raised, no more than once every 2 seconds "} -c["Offering Skills have 15% increased Buff effect"]={{[1]={[1]={skillType=154,type="SkillType"},flags=0,keywordFlags=0,name="BuffEffect",type="INC",value=15}},nil} -c["Offering Skills have 20% increased Area of Effect"]={{[1]={[1]={skillType=154,type="SkillType"},flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=20}},nil} -c["Offering Skills have 20% increased Duration"]={{[1]={[1]={skillType=154,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=20}},nil} -c["Offering Skills have 30% increased Duration"]={{[1]={[1]={skillType=154,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=30}},nil} -c["Offering Skills have 30% reduced Duration"]={{[1]={[1]={skillType=154,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=-30}},nil} +c["Offering Skills have 15% increased Buff effect"]={{[1]={[1]={skillType=155,type="SkillType"},flags=0,keywordFlags=0,name="BuffEffect",type="INC",value=15}},nil} +c["Offering Skills have 20% increased Area of Effect"]={{[1]={[1]={skillType=155,type="SkillType"},flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=20}},nil} +c["Offering Skills have 20% increased Duration"]={{[1]={[1]={skillType=155,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=20}},nil} +c["Offering Skills have 30% increased Duration"]={{[1]={[1]={skillType=155,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=30}},nil} +c["Offering Skills have 30% reduced Duration"]={{[1]={[1]={skillType=155,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=-30}},nil} c["Offerings cannot be damaged if they have been created Recently"]={nil,"Offerings cannot be damaged if they have been created Recently "} c["Offerings created by Culling Enemies have 1% increased Effect per Power of Culled Enemy"]={{[1]={flags=0,keywordFlags=0,name="UnwillingOffering",type="FLAG",value=true},[2]={[1]={skillNameList={[1]="Bone Offering",[2]="Pain Offering",[3]="Soul Offering"},type="SkillName"},flags=0,keywordFlags=0,name="ExtraSkillMod",type="LIST",value={mod={[1]={limit=20,type="Multiplier",var="UnwillingOfferingPower"},flags=0,keywordFlags=0,name="BuffEffect",type="INC",value=1}}}},nil} c["Offerings have 15% increased Maximum Life"]={nil,"Offerings have 15% increased Maximum Life "}