diff --git a/Classes/ItemsTab.lua b/Classes/ItemsTab.lua index 9218ff79..b4cdb436 100644 --- a/Classes/ItemsTab.lua +++ b/Classes/ItemsTab.lua @@ -738,6 +738,9 @@ function ItemsTabClass:AddItemTooltip(item, slot, dbMode) end elseif item.type == "Jewel" then -- Jewel-specific info + if item.limit then + main:AddTooltipLine(16, "^x7F7F7FLimited to: ^7"..item.limit) + end if item.jewelRadiusIndex then main:AddTooltipLine(16, "^x7F7F7FRadius: ^7"..data.jewelRadius[item.jewelRadiusIndex].label) end @@ -754,9 +757,6 @@ function ItemsTabClass:AddItemTooltip(item, slot, dbMode) main:AddTooltipLine(16, "^x7F7F7FAllocated in Radius: "..line) end end - if item.limit then - main:AddTooltipLine(16, "^x7F7F7FLimited to: ^7"..item.limit) - end end main:AddTooltipSeparator(10) diff --git a/Classes/ModDB.lua b/Classes/ModDB.lua index f9202bec..477c6ade 100644 --- a/Classes/ModDB.lua +++ b/Classes/ModDB.lua @@ -206,6 +206,11 @@ function ModDBClass:Sum(modType, cfg, arg1, arg2, arg3, arg4, arg5, arg6, arg7, value = nullValue break end + elseif tag.type == "StatThreshold" then + if (self.stats[tag.stat] or (skillStats and skillStats[tag.stat]) or 0) < tag.threshold then + value = nullValue + break + end elseif tag.type == "SocketedIn" then if tag.slotName ~= slotName or (tag.keyword and (not skillGem or not gemIsType(skillGem, tag.keyword))) then value = nullValue diff --git a/Classes/ModList.lua b/Classes/ModList.lua index 3ebcca96..9c2d50e9 100644 --- a/Classes/ModList.lua +++ b/Classes/ModList.lua @@ -176,6 +176,11 @@ function ModListClass:Sum(modType, cfg, arg1, arg2, arg3, arg4, arg5, arg6, arg7 value = nullValue break end + elseif tag.type == "StatThreshold" then + if (self.stats[tag.stat] or (skillStats and skillStats[tag.stat]) or 0) < tag.threshold then + value = nullValue + break + end elseif tag.type == "SocketedIn" then if tag.slotName ~= slotName or (tag.keyword and (not skillGem or not gemIsType(skillGem, tag.keyword))) then value = nullValue diff --git a/Classes/PassiveTree.lua b/Classes/PassiveTree.lua index 781f7da9..efe158be 100644 --- a/Classes/PassiveTree.lua +++ b/Classes/PassiveTree.lua @@ -287,14 +287,19 @@ local PassiveTreeClass = common.NewClass("PassiveTree", function(self) -- Precalculate the lists of nodes that are within each radius of each socket for nodeId, socket in pairs(sockets) do socket.nodesInRadius = { } + socket.attributesInRadius = { } for radiusIndex, radiusInfo in ipairs(data.jewelRadius) do socket.nodesInRadius[radiusIndex] = { } + socket.attributesInRadius[radiusIndex] = { } local rSq = radiusInfo.rad * radiusInfo.rad for _, node in ipairs(self.nodes) do if node ~= socket then local vX, vY = node.x - socket.x, node.y - socket.y if vX * vX + vY * vY <= rSq then socket.nodesInRadius[radiusIndex][node.id] = node + for _, att in pairs({"Str","Dex","Int"}) do + socket.attributesInRadius[radiusIndex][att] = (socket.attributesInRadius[radiusIndex][att] or 0) + node.modList:Sum("BASE", nil, att) + end end end end diff --git a/Classes/PassiveTreeView.lua b/Classes/PassiveTreeView.lua index 5335c64c..1b04ecea 100644 --- a/Classes/PassiveTreeView.lua +++ b/Classes/PassiveTreeView.lua @@ -520,6 +520,21 @@ function PassiveTreeViewClass:DoesNodeMatchSearchStr(node) end end +function PassiveTreeViewClass:AddNodeName(node) + main:AddTooltipLine(24, "^7"..node.dn..(launch.devMode and IsKeyDown("ALT") and " ["..node.id.."]" or "")) + if node.type == "socket" then + if node.attributesInRadius[2]["Str"] >= 40 then + main:AddTooltipLine(16, "^7Can support "..data.colorCodes.STRENGTH.."Strength ^7threshold jewels") + end + if node.attributesInRadius[2]["Dex"] >= 40 then + main:AddTooltipLine(16, "^7Can support "..data.colorCodes.DEXTERITY.."Dexterity ^7threshold jewels") + end + if node.attributesInRadius[2]["Int"] >= 40 then + main:AddTooltipLine(16, "^7Can support "..data.colorCodes.INTELLIGENCE.."Intelligence ^7threshold jewels") + end + end +end + function PassiveTreeViewClass:AddNodeTooltip(node, build) -- Special case for sockets if node.type == "socket" and node.alloc then @@ -527,7 +542,7 @@ function PassiveTreeViewClass:AddNodeTooltip(node, build) if jewel then build.itemsTab:AddItemTooltip(jewel, { nodeId = node.id }) else - main:AddTooltipLine(24, "^7"..node.dn..(launch.devMode and IsKeyDown("ALT") and " ["..node.id.."]" or "")) + self:AddNodeName(node) end main:AddTooltipSeparator(14) if socket:IsEnabled() then @@ -538,7 +553,7 @@ function PassiveTreeViewClass:AddNodeTooltip(node, build) end -- Node name - main:AddTooltipLine(24, "^7"..node.dn..(launch.devMode and IsKeyDown("ALT") and " ["..node.id.."]" or "")) + self:AddNodeName(node) if launch.devMode and IsKeyDown("ALT") and node.power and node.power.dps then -- Power debugging info main:AddTooltipLine(16, string.format("DPS power: %g Defence power: %g", node.power.dps, node.power.def)) diff --git a/Data/Bases/sword.lua b/Data/Bases/sword.lua index 6e2113c4..d25b5fb5 100644 --- a/Data/Bases/sword.lua +++ b/Data/Bases/sword.lua @@ -333,7 +333,7 @@ itemBases["Dragoon Sword"] = { itemBases["Corroded Blade"] = { type = "Two Handed Sword", implicit = "18% increased Accuracy Rating", - weapon = { PhysicalMin = 7, PhysicalMax = 14, critChanceBase = 5, attackRateBase = 1.35, }, + weapon = { PhysicalMin = 7, PhysicalMax = 13, critChanceBase = 5, attackRateBase = 1.45, }, req = { }, } itemBases["Longsword"] = { @@ -345,7 +345,7 @@ itemBases["Longsword"] = { itemBases["Bastard Sword"] = { type = "Two Handed Sword", implicit = "18% increased Accuracy Rating", - weapon = { PhysicalMin = 15, PhysicalMax = 25, critChanceBase = 5, attackRateBase = 1.35, }, + weapon = { PhysicalMin = 15, PhysicalMax = 25, critChanceBase = 5, attackRateBase = 1.45, }, req = { level = 12, str = 21, dex = 30, }, } itemBases["Two-Handed Sword"] = { @@ -357,7 +357,7 @@ itemBases["Two-Handed Sword"] = { itemBases["Etched Greatsword"] = { type = "Two Handed Sword", implicit = "18% increased Accuracy Rating", - weapon = { PhysicalMin = 22, PhysicalMax = 46, critChanceBase = 5, attackRateBase = 1.35, }, + weapon = { PhysicalMin = 22, PhysicalMax = 46, critChanceBase = 5, attackRateBase = 1.3, }, req = { level = 22, str = 45, dex = 38, }, } itemBases["Ornate Sword"] = { diff --git a/Data/Gems/act_dex.lua b/Data/Gems/act_dex.lua index ba41b9d0..2ffcb57b 100644 --- a/Data/Gems/act_dex.lua +++ b/Data/Gems/act_dex.lua @@ -4218,12 +4218,12 @@ gems["Wild Strike"] = { mod("ProjectileCount", "BASE", 2), --"number_of_additional_projectiles" = 2 --"show_number_of_projectiles" = ? mod("PierceChance", "BASE", 100), --"always_pierce" = ? - mod("PhysicalDamageConvertToFire", "BASE", 60, 0, 0, { type = "SkillPart", skillPart = 1 }), - mod("PhysicalDamageConvertToFire", "BASE", 60, 0, 0, { type = "SkillPart", skillPart = 2 }), - mod("PhysicalDamageConvertToLightning", "BASE", 60, 0, 0, { type = "SkillPart", skillPart = 3 }), - mod("PhysicalDamageConvertToLightning", "BASE", 60, 0, 0, { type = "SkillPart", skillPart = 4 }), - mod("PhysicalDamageConvertToCold", "BASE", 60, 0, 0, { type = "SkillPart", skillPart = 5 }), - mod("PhysicalDamageConvertToCold", "BASE", 60, 0, 0, { type = "SkillPart", skillPart = 6 }), + mod("PhysicalDamageConvertToFire", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 1 }), + mod("PhysicalDamageConvertToFire", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 2 }), + mod("PhysicalDamageConvertToLightning", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 3 }), + mod("PhysicalDamageConvertToLightning", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 4 }), + mod("PhysicalDamageConvertToCold", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 5 }), + mod("PhysicalDamageConvertToCold", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 6 }), }, qualityMods = { mod("ElementalDamage", "INC", 1), --"elemental_damage_+%" = 1 diff --git a/Data/Gems/other.lua b/Data/Gems/other.lua index 2a645ef1..886cdb75 100644 --- a/Data/Gems/other.lua +++ b/Data/Gems/other.lua @@ -143,6 +143,30 @@ gems["Bone Nova"] = { [20] = { }, }, } +gems["Consecrate"] = { + hidden = true, + color = 4, + baseFlags = { + spell = true, + duration = true, + area = true, + }, + skillTypes = { [2] = true, [12] = true, [36] = true, [11] = true, [42] = true, [61] = true, }, + baseMods = { + skill("castTime", 1), + skill("duration", 5), --"base_skill_effect_duration" = 5000 + mod("LifeRegenPercent", "BASE", 4, 0, 0, nil), --"life_regeneration_rate_per_minute_%" = 240 + --"cast_on_crit_%" = 100 + skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [10] = { }, + }, +} gems["Envy"] = { hidden = true, color = 3, @@ -392,3 +416,28 @@ gems["Molten Burst"] = { [16] = { }, }, } +gems["Shock Ground"] = { + hidden = true, + color = 4, + baseFlags = { + spell = true, + area = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [11] = true, [36] = true, [12] = true, [42] = true, [45] = true, [61] = true, [35] = true, }, + baseMods = { + skill("castTime", 1), + --"cast_when_hit_%" = 100 + --"skill_art_variation" = 7 + skill("duration", 5), --"base_skill_effect_duration" = 5000 + skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} diff --git a/Data/New.lua b/Data/New.lua index 0ac75900..bf51e841 100644 --- a/Data/New.lua +++ b/Data/New.lua @@ -16,18 +16,18 @@ Imperial Maul Requires Level 65, 212 Str 20% increased Stun Duration on Enemies Socketed Gems are Supported by Level 20 Endurance Charge on Melee Stun -Adds 63 to 346 Physical Damage +Adds (60–70) to (300–350) Physical Damage +40 to Intelligence 10% increased Physical Damage per Endurance Charge -29% reduced Enemy Stun Threshold with this Weapon +(20–30)% reduced Enemy Stun Threshold with this Weapon ]],[[ Martyr of Innocence Highborn Staff Requires Level 52, 89 Str, 89 Int 18% Chance to Block -15% Chance to Block -Adds 375 to 574 Fire Damage -Adds 142 to 212 Fire Damage to Spells +(12–16)% Chance to Block +Adds (350–400) to (500–600) Fire Damage +Adds (130–150) to (200–250) Fire Damage to Spells 100% increased Fire Damage if you have been Hit Recently Damage Penetrates 15% of Fire Resistance if you have Blocked Recently Immune to Freeze and Chill while Ignited @@ -36,7 +36,7 @@ Grants level 15 Vengeance Skill Garukhan's Flight Stealth Boots Requires Level 62, 117 Dex -115% increased Evasion Rating +(80–120)% increased Evasion Rating 30% increased Movement Speed Immune to Burning Ground, Shocked Ground and Chilled Ground Regenerate 100 Life per second while moving @@ -57,7 +57,7 @@ The Baron Close Helmet Requires Level 26, 58 Str +2 to Level of Socketed Minion Gems -+28 to Strength ++(20–40) to Strength Minions have 20% increase maximum Life Your Strenght is added to your Minions +1 to maximum number of Zombies per 300 Strength @@ -75,7 +75,7 @@ Heavy Belt Requires Level 30 +(25-35) to Strength 5% increased Quantity of Items found -+34% to Cold Resistance ++(30–40)% to Cold Resistance Rampage 1% increased Rarity of Items found per 15 Rampage Kills ]],[[ @@ -102,13 +102,23 @@ You have Onslaught while at maximum Endurance Charges Haemophilia Serpentscale Gauntlets Requires Level 43, 34 Str, 34 Dex -25% increased Damage over Time -+27 to Strength -Attacks have 25% chance to cause Bleeding -31% increased Attack Damage against Bleeding Enemies ++(20–30) to Strength +25% increased Damage over Time +Attacks have 25% chance to cause Bleeding +(25–40)% increased Attack Damage against Bleeding Enemies Bleeding Enemies you Kill Explode, dealing 5% of -their Maximum Life as Physical Damage -25% reduced Bleed Duration +their Maximum Life as Physical Damage +25% reduced Bleed duration +]],[[ +Ryslatha's Coil +Studded Belt +Requires Level: 20 +(20–30)% increased Stun Duration on Enemies ++(20–40) to Strength +Adds 1 to (15–20) Physical Damage to Attacks +Gain 50 Life when you Stun an Enemy +20% less Minimum Physical Attack Damage +20% more Maximum Physical Attack Damage ]], -- Theshold jewels [[ @@ -116,7 +126,7 @@ Fight for Survival Viridian Jewel Limited to: 2 Radius: Medium -11% increased Cold Damage +(10–15)% increased Cold Damage With at least 40 Dexterity in Radius, Frost Blades Melee Damage Penetrates 15% Cold Resistance With at least 40 Dexterity in Radius, Frost Blades has 25% increased Projectile Speed @@ -133,7 +143,7 @@ Frozen Trail Cobalt Jewel Limited to: 2 Radius: Medium -9% increased Projectile Damage +(7–10)% increased Projectile Damage With at least 40 Intelligence in Radius, Frostbolt fires 2 additional Projectiles With at least 40 Intelligence in Radius, Frostbolt Projectiles gain 40% increased Projectile Speed per second @@ -142,7 +152,7 @@ Inevitability Cobalt Jewel Limited to: 2 Radius: Medium -13% increased Fire Damage +(10–15)% increased Fire Damage With at least 40 Intelligence in Radius, Magma Orb fires an additional Projectile With at least 40 Intelligence in Radius, Magma Orb has 10% increased Area of Effect per Chain @@ -151,7 +161,7 @@ Overwhelming Odds Crimson Jewel Limited to: 2 Radius: Medium -11% increased Physical Damage +(10-15)% increased Physical Damage With at least 40 Strength in Radius, Cleave grants Fortify on Hit With at least 40 Strength in Radius, Cleave has 3% increased Area of Effect per Nearby Enemy @@ -160,7 +170,7 @@ Collateral Damage Viridian Jewel Limited to: 2 Radius: Medium -15% increased Physical Damage +(10–15)% increased Physical Damage With at least 40 Dexterity in Radius, Shrapnel Shot has 25% increased Area of Effect With at least 40 Dexterity in Radius, Shrapnel Shot's cone has a 50% chance to deal Double Damage @@ -169,10 +179,63 @@ Might and Influence Viridian Jewel Limited to: 1 Radius: Medium -12% increased Physical Damage +(10–15)% increased Physical Damage With at least 40 Dexterity in Radius, Dual Strike has a 20% chance to deal Double Damage with the Main-Hand Weapon With at least 40 Dexterity in Radius, Dual Strike deals Off-Hand Splash Damage to surrounding targets +]],[[ +First Snow +Cobalt Jewel +Limited to: 2 +Radius: Medium +(7–10)% increased Projectile Damage +With at least 40 Intelligence in Radius, Freezing Pulse fires 2 additional Projectiles +With at least 40 Intelligence in Radius, 25% increased Freezing Pulse Damage if +you've Shattered an Enemy Recently +]],[[ +Ring of Blades +Viridian Jewel +Limited to: 1 +Radius: Medium +(10–15)% increased Physical Damage +With at least 40 Dexterity in Radius, Ethereal Knives fires Projectiles in a Nova +With at least 40 Dexterity in Radius, Ethereal Knives fires 10 additional Projectiles +]],[[ +Sudden Ignition +Viridian Jewel +Limited to: 1 +Radius: Medium +(10–15)% increased Fire Damage +With at least 40 Dexterity in Radius, Burning +Arrow can inflict an additional Ignite on an Enemy +]],[[ +Violent Dead +Cobalt Jewel +Limited to: 2 +Radius: Medium +Minions deal (8–12)% increased Damage +With at least 40 Intelligence in Radius, Raised +Zombies' Slam Attack has 100% increased Cooldown Recovery Speed +With at least 40 Intelligence in Radius, Raised Zombies' Slam +Attack deals 30% increased Damage +]],[[ +Wildfire +Crimson Jewel +Limited to: 2 +Radius: Medium +(10–15)% increased Fire Damage +With at least 40 Strength in Radius, Molten Strike fires 2 additional Projectiles +With at least 40 Strength in Radius, Molten Strike has 25% increased Area of Effect +]],[[ +Winter Burial +Crimson Jewel +Limited to: 2 +Radius: Medium +(10–15)% increased Cold Damage +With at least 40 Strength in Radius, Glacial Hammer deals +Cold-only Splash Damage to surrounding targets +With at least 40 Strength in Radius, 25% of Glacial +Hammer Physical Damage converted to Cold Damage ]], } \ No newline at end of file diff --git a/Data/Uniques/axe.lua b/Data/Uniques/axe.lua index 35257f68..f8b271c8 100644 --- a/Data/Uniques/axe.lua +++ b/Data/Uniques/axe.lua @@ -18,13 +18,19 @@ Adds (5-15) to (20-25) Fire Damage ]],[[ Dyadus Infernal Axe +Variant: Pre 2.6.0 +Variant: Current Requires Level 69, 158 Str, 76 Dex -Adds (170-190) to (200-220) Fire Damage in Main Hand -Adds (170-190) to (200-220) Cold Damage in Off Hand +{variant:1}Adds (170-190) to (200-220) Fire Damage in Main Hand +{variant:2}Adds (255-285) to (300-330) Fire Damage in Main Hand +{variant:1}Adds (170-190) to (200-220) Cold Damage in Off Hand +{variant:2}Adds (255-285) to (300-330) Cold Damage in Off Hand (10-15)% increased Attack Speed -Enemies Chilled by you take 40% increased Burning Damage +{variant:1}Enemies Chilled by you take 40% increased Burning Damage +{variant:2}Enemies Chilled by you take 100% increased Burning Damage 25% Chance to Ignite when in Main Hand -100% increased Chill Duration on Enemies when in Off Hand +{variant:1}100% increased Chill Duration on Enemies when in Off Hand +{variant:2}Chill Enemies for 1 second on Hit with this Weapon when in Off Hand ]],[[ The Gryphon Jade Hatchet diff --git a/Data/Uniques/belt.lua b/Data/Uniques/belt.lua index 068b4821..40c35f0d 100644 --- a/Data/Uniques/belt.lua +++ b/Data/Uniques/belt.lua @@ -157,11 +157,14 @@ Requires Level 50 ]],[[ The Magnate Studded Belt +Variant: Pre 2.6.0 +Variant: Current Requires Level 16 (20-30)% increased Stun Duration on Enemies (25-40)% increased Physical Damage +(40-50) to Strength 50% increased Flask Charges gained +{variant:2}+(20-25)% to all Elemental Resistances with 200 or more Strength ]],[[ Maligaro's Restraint Chain Belt diff --git a/Data/Uniques/claw.lua b/Data/Uniques/claw.lua index c092cee2..8194f54d 100644 --- a/Data/Uniques/claw.lua +++ b/Data/Uniques/claw.lua @@ -55,9 +55,10 @@ Life Leech from Hits with this Weapon applies instantly Cybil's Paw Thresher Claw Variant: Pre 2.0.0 +Variant: Pre 2.6.0 Variant: Current Requires Level 37, 53 Dex, 77 Int -Implicits: 2 +Implicits: 3 {variant:1}+15 Life gained for each Enemy hit by Attacks {variant:2}+21 Life gained for each Enemy hit by Attacks {variant:3}+25 Life gained for each Enemy hit by Attacks @@ -65,7 +66,7 @@ Implicits: 2 +(30-40) to maximum Mana +(5-8) Life gained for each Enemy hit by your Spells {variant:1}6% increased Spell Damage per 5% Block Chance -{variant:2}8% increased Spell Damage per 5% Block Chance +{variant:2,3}8% increased Spell Damage per 5% Block Chance ]],[[ Essentia Sanguis Eye Gouger diff --git a/Data/Uniques/gloves.lua b/Data/Uniques/gloves.lua index e54ac45b..5ba9b478 100644 --- a/Data/Uniques/gloves.lua +++ b/Data/Uniques/gloves.lua @@ -43,12 +43,14 @@ Conduit Meginord's Vise Steel Gauntlets Variant: Pre 1.1.0 +Variant: Pre 2.6.0 Variant: Current Requires Level 35, 52 Str 10% increased Physical Damage +100 to Strength {variant:1}(5-15)% reduced Attack Speed (40-60)% increased Armour +{variant:3}2% of Life Regenerated per second with at least 400 Strength ]],[[ Veruso's Battering Rams Titan Gauntlets diff --git a/Data/Uniques/jewel.lua b/Data/Uniques/jewel.lua index ebb59bfe..a543ce36 100644 --- a/Data/Uniques/jewel.lua +++ b/Data/Uniques/jewel.lua @@ -90,7 +90,7 @@ Dead Reckoning Cobalt Jewel Radius: Medium Minions have +(7-10)% to all Elemental Resistances -With at least 50 Intelligence Allocated in Radius, can summon +With at least 40 Intelligence in Radius, can summon up to 3 Skeleton Mages with Summon Skeletons ]],[[ Efficient Training @@ -183,10 +183,14 @@ also grant an equal chance to gain a Frenzy Charge on Kill ]],[[ Growing Agony Viridian Jewel +Variant: Pre 2.6.0 +Variant: Current +Limited to: 1 Radius: Medium (4-12)% increased Damage over Time -With at least 50 Dexterity Allocated in Radius, +With at least 40 Dexterity in Radius, Viper Strike deals 2% increased Attack Damage for each Poison on the Enemy +{variant:2}With at least 40 Dexterity in Radius, Viper Strike has a 10% chance per Poison on Enemy to grant Unholy Might for 4 seconds on Hit ]],[[ Hair Trigger Viridian Jewel @@ -267,8 +271,8 @@ Pitch Darkness Viridian Jewel Radius: Medium (5-15)% increased Fire Damage -With at least 50 Dexterity Allocated in Radius, Burning Arrow has a 10% chance to spread Burning Ground if it Ignites an Enemy. -With at least 50 Dexterity Allocated in Radius, Burning Arrow has a 10% chance to spread Tar if it does not Ignite an Enemy. +With at least 40 Dexterity in Radius, Burning Arrow has a 10% chance to spread Burning Ground if it Ignites an Enemy. +With at least 40 Dexterity in Radius, Burning Arrow has a 10% chance to spread Tar if it does not Ignite an Enemy. ]],[[ Primordial Eminence Viridian Jewel @@ -310,9 +314,14 @@ Totems Fire 2 additional Projectiles ]],[[ Rapid Expansion Crimson Jewel +Variant: Pre 2.6.0 +Variant: Current +Limited to: 3 Radius: Medium (4-12)% increased Physical Damage -With at least 50 Strength Allocated in radius, Ground Slam has a 20% increased angle +{variant:1}With at least 40 Strength in Radius, Ground Slam has a 20% increased angle +{variant:2}With at least 40 Strength in Radius, Ground Slam has a 35% increased angle +{variant:2}With at least 40 Strength in Radius, Ground Slam has a 25% chance to grant an Endurance Charge when you Stun an Enemy ]],[[ Reckless Defence Cobalt Jewel @@ -341,15 +350,19 @@ also grant an equal chance to gain an Endurance Charge on Kill ]],[[ Rolling Flames Cobalt Jewel +Variant: Pre 2.6.0 +Variant: Current +Limited to: 2 Radius: Medium (5-15)% increased Fire Damage -With at least 50 Intelligence Allocated in Radius, Fireball Projectiles gain Area of Effect Radius as they travel further, up to 50% increased Radius. +{variant:1}With at least 40 Intelligence in Radius, Fireball Projectiles gain Area of Effect Radius as they travel further, up to 50% increased Radius. +{variant:2}With at least 40 Intelligence in Radius, Fireball Projectiles gain Radius as they travel farther, up to +4 Radius ]],[[ Shattered Chains Crimson Jewel Radius: Medium (5-15)% increased Cold Damage -With at least 50 Strength Allocated in Radius, 20% increased Rarity of Items dropped by Enemies Shattered by Glacial Hammer +With at least 40 Strength in Radius, 20% increased Rarity of Items dropped by Enemies Shattered by Glacial Hammer ]],[[ Spire of Stone Crimson Jewel @@ -360,15 +373,20 @@ Totems cannot be Stunned ]],[[ Spirit Guards Viridian Jewel +Variant: Pre 2.6.0 +Variant: Current +Limited to: 2 Radius: Medium Minions deal (8-12)% increased Damage -With 50 Dexterity Allocated in radius, Animate Weapon can Animate up to 4 Ranged Weapons +{variant:1}With at least 40 Dexterity in Radius, Animate Weapon can Animate up to 4 Ranged Weapons +{variant:2}With at least 40 Dexterity in Radius, Animate Weapon can Animate up to 8 Ranged Weapons ]],[[ Spirited Response Cobalt Jewel +Limited to: 2 Radius: Medium (5-10)% increased maximum Mana -With at least 50 Intelligence Allocated in radius, 10% of Damage taken gained as Mana when Hit during Rallying Cry for you and Allies +With at least 40 Intelligence in Radius, 10% of Damage taken gained as Mana when Hit during Rallying Cry for you and Allies ]],[[ Static Electricity Viridian Jewel @@ -378,15 +396,19 @@ Adds 1 to 2 Lightning Damage to Attacks ]],[[ Steel Spirit Viridian Jewel +Variant: Pre 2.6.0 +Variant: Current Radius: Medium (6-10)% increased Projectile Damage -With at least 50 Dexterity Allocated in Radius, each Spectral Throw Projectile gains 4% increased Damage each time it Hits. +{variant:1}With at least 40 Dexterity in Radius, each Spectral Throw Projectile gains 4% increased Damage each time it Hits. +{variant:2}With at least 40 Dexterity in Radius, each Spectral Throw Projectile gains 5% increased Damage each time it Hits. ]],[[ Unending Hunger Cobalt Jewel +Limited to: 2 +Radius: Medium Minions have (5-8)% increased Area of Effect of Area Skills -20% chance for Spectres to gain Soul Eater on Kill for 30 seconds -with 50 Intelligence from Allocated Passives in Radius +With at least 40 Intelligence in Radius, Raised Spectres have a 50% chance to gain Soul Eater for 30 seconds on Kill ]],[[ Unstable Payload Cobalt Jewel @@ -394,27 +416,37 @@ Cobalt Jewel ]],[[ The Vigil Crimson Jewel +Variant: Pre 2.6.0 +Variant: Current +Limited to: 1 Radius: Medium (8-15)% increased Armour -With at least 50 Strength Allocated in Radius, Vigilant Strike also Fortifies Nearby Allies for 3 seconds. +{variant:1}With at least 40 Strength in Radius, Vigilant Strike also Fortifies Nearby Allies for 3 seconds. +{variant:2}With at least 40 Strength in Radius, Vigilant Strike Fortifies you and Nearby Allies for 12 seconds ]],[[ Volley Fire Viridian Jewel +Limited to: 3 Radius: Medium (6-10)% increased Projectile Damage -With at least 50 Dexterity Allocated in radius, Barrage fires an additional 2 projectiles simultaneously on the first and final attacks +With at least 40 Dexterity in Radius, Barrage fires an additional 2 projectiles simultaneously on the first and final attacks ]],[[ Weight of the Empire Crimson Jewel +Limited to: 2 Radius: Medium (4-12)% increased Physical Damage -With at least 50 Strength Allocated in Radius, Heavy Strike has a 10% chance to deal Double Damage. +With at least 40 Strength in Radius, Heavy Strike has a 10% chance to deal Double Damage. ]],[[ Winter's Bounty Cobalt Jewel +Variant: Pre 2.6.0 +Variant: Current +Limited to: 2 Radius: Medium (5-15)% increased Cold Damage -With at least 50 Intelligence Allocated in radius, Cold Snap has a 25% chance to grant a Power Charge on Kill +{variant:1}With at least 40 Intelligence in Radius, Cold Snap has a 25% chance to grant a Power Charge on Kill +{variant:2}With at least 40 Intelligence in Radius, Cold Snap has a 50% chance to grant a Power Charge on Kill ]], -- Jewel: Corrupted [[ diff --git a/Data/Uniques/ring.lua b/Data/Uniques/ring.lua index 6ec1970d..62a28732 100644 --- a/Data/Uniques/ring.lua +++ b/Data/Uniques/ring.lua @@ -173,13 +173,18 @@ Socketed Gems Reserve No Mana ]],[[ Gifts from Above Diamond Ring +Variant: Pre 2.6.0 +Variant: Current League: Anarchy Requires Level 28 (20-30)% increased Global Critical Strike Chance +Cast level 10 Consecrate when you deal a Critical Strike (30-35)% increased Global Critical Strike Chance (10-15)% increased Light Radius -Creates Consecrated Ground on Critical Strike +{variant:1}Creates Consecrated Ground on Critical Strike (40-50)% increased Rarity of Items Dropped by Enemies killed with a Critical Strike +{variant:2}50% increased Damage while on Consecrated Ground +{variant:2}5% additional Block Chance while on Consecrated Ground ]],[[ Heartbound Loop Moonstone Ring diff --git a/Modules/Calcs.lua b/Modules/Calcs.lua index 3d913c93..5506fc67 100644 --- a/Modules/Calcs.lua +++ b/Modules/Calcs.lua @@ -460,7 +460,7 @@ local function buildNodeModList(env, nodeList, finishJewels) if finishJewels then -- Finalise radius jewels for _, rad in pairs(env.radiusJewelList) do - rad.func(nil, modList, rad.data) + rad.func(nil, modList, rad.data, rad.attributes) if env.mode == "MAIN" then if not rad.item.jewelRadiusData then rad.item.jewelRadiusData = { } @@ -741,6 +741,7 @@ local function initEnv(build, mode, override) func = func, item = item, nodeId = slot.nodeId, + attributes = node.attributesInRadius[item.jewelRadiusIndex], data = { } }) end diff --git a/Modules/ModParser.lua b/Modules/ModParser.lua index 1475f985..04d2600c 100644 --- a/Modules/ModParser.lua +++ b/Modules/ModParser.lua @@ -380,6 +380,9 @@ local modTagList = { ["per (%d+) accuracy rating"] = function(num) return { tag = { type = "PerStat", stat = "Accuracy", div = num } } end, ["per (%d+)%% block chance"] = function(num) return { tag = { type = "PerStat", stat = "BlockChance", div = num } } end, ["per (%d+) of the lowest of armour and evasion rating"] = function(num) return { tag = { type = "PerStat", stat = "LowestOfArmourAndEvasion", div = num } } end, + -- Stat conditions + ["with (%d+) or more strength"] = function(num) return { tag = { type = "StatThreshold", stat = "Str", threshold = num } } end, + ["with at least (%d+) strength"] = function(num) return { tag = { type = "StatThreshold", stat = "Str", threshold = num } } end, -- Slot conditions ["when in main hand"] = { tag = { type = "SlotNumber", num = 1 } }, ["when in off hand"] = { tag = { type = "SlotNumber", num = 2 } }, @@ -840,8 +843,17 @@ local function getPerStat(dst, type, flags, stat, factor) end end end +local function getThreshold(attrib, name, type, value, ...) + local mod = mod(name, type, value, "Tree:Jewel", ...) + return function(nodeMods, out, data, attributes) + if not nodeMods and attributes[attrib] >= 40 then + out:AddMod(mod) + end + end +end -- List of radius jewel functions local jewelFuncs = { +-- Conversion jewels ["Strength from Passives in Radius is Transformed to Dexterity"] = getSimpleConv("Str", "Dex", "BASE", 1), ["Dexterity from Passives in Radius is Transformed to Strength"] = getSimpleConv("Dex", "Str", "BASE", 1), ["Strength from Passives in Radius is Transformed to Intelligence"] = getSimpleConv("Str", "Int", "BASE", 1), @@ -882,6 +894,7 @@ local jewelFuncs = { end end end, +-- Per stat jewels ["Adds 1 to maximum Life per 3 Intelligence in Radius"] = getPerStat("Life", "BASE", 0, "Int", 1 / 3), ["Adds 1 to Maximum Life per 3 Intelligence Allocated in Radius"] = getPerStat("Life", "BASE", 0, "Int", 1 / 3), ["1% increased Evasion Rating per 3 Dexterity Allocated in Radius"] = getPerStat("Evasion", "INC", 0, "Dex", 1 / 3), @@ -902,6 +915,20 @@ local jewelFuncs = { ["Passives granting Lightning Resistance or all Elemental Resistances in Radius also grant Chance to Block Spells at 35% of its value"] = getSimpleGain({"LightningResist","ElementalResist"}, "SpellBlockChance", "BASE", 0.35), ["Passives granting Cold Resistance or all Elemental Resistances in Radius also grant Chance to Dodge Attacks at 35% of its value"] = getSimpleGain({"ColdResist","ElementalResist"}, "AttackDodgeChance", "BASE", 0.35), ["Passives granting Fire Resistance or all Elemental Resistances in Radius also grant Chance to Block at 35% of its value"] = getSimpleGain({"FireResist","ElementalResist"}, "BlockChance", "BASE", 0.35), +-- Threshold jewels + ["With at least 40 Dexterity in Radius, Frost Blades Melee Damage Penetrates 15% Cold Resistance"] = getThreshold("Dex", "ColdPenetration", "BASE", 15, ModFlag.Melee, { type = "SkillName", skillName = "Frost Blades" }), + ["With at least 40 Dexterity in Radius, Frost Blades has 25% increased Projectile Speed"] = getThreshold("Dex", "ProjectileSpeed", "INC", 25, { type = "SkillName", skillName = "Frost Blades" }), + ["With at least 40 Dexterity in Radius, Ice Shot has 25% increased Area of Effect"] = getThreshold("Dex", "AreaOfEffect", "INC", 25, { type = "SkillName", skillName = "Ice Shot" }), + ["With at least 40 Dexterity in Radius, Ice Shot has 50% chance of Projectiles Piercing"] = getThreshold("Dex", "PierceChance", "BASE", 50, { type = "SkillName", skillName = "Ice Shot" }), + ["With at least 40 Intelligence in Radius, Frostbolt fires 2 additional Projectiles"] = getThreshold("Int", "ProjectileCount", "BASE", 2, { type = "SkillName", skillName = "Frostbolt" }), + ["With at least 40 Intelligence in Radius, Magma Orb fires an additional Projectile"] = getThreshold("Int", "ProjectileCount", "BASE", 1, { type = "SkillName", skillName = "Magma Orb" }), + ["With at least 40 Dexterity in Radius, Shrapnel Shot has 25% increased Area of Effect"] = getThreshold("Dex", "AreaOfEffect", "INC", 25, { type = "SkillName", skillName = "Shrapnel Shot" }), + ["With at least 40 Intelligence in Radius, Freezing Pulse fires 2 additional Projectiles"] = getThreshold("Int", "ProjectileCount", "BASE", 2, { type = "SkillName", skillName = "Freezing Pulse" }), + ["With at least 40 Dexterity in Radius, Ethereal Knives fires 10 additional Projectiles"] = getThreshold("Dex", "ProjectileCount", "BASE", 10, { type = "SkillName", skillName = "Ethereal Knives" }), + ["With at least 40 Strength in Radius, Molten Strike fires 2 additional Projectiles"] = getThreshold("Str", "ProjectileCount", "BASE", 2, { type = "SkillName", skillName = "Molten Strike" }), + ["With at least 40 Strength in Radius, Molten Strike has 25% increased Area of Effect"] = getThreshold("Str", "AreaOfEffect", "INC", 25, { type = "SkillName", skillName = "Molten Strike" }), + ["With at least 40 Strength in Radius, 25% of Glacial Hammer Physical Damage converted to Cold Damage"] = getThreshold("Str", "PhysicalDamageConvertToCold", "BASE", 25, { type = "SkillName", skillName = "Glacial Hammer" }), + --[""] = getThreshold("", "", "", , { type = "SkillName", skillName = "" }), } -- Scan a line for the earliest and longest match from the pattern list diff --git a/README.md b/README.md index aa68f3ea..a8ae6abf 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,15 @@ Head over to the [Releases](https://github.com/Openarl/PathOfBuilding/releases) ![ss3](https://cloud.githubusercontent.com/assets/19189971/18089780/f0ff234a-6f04-11e6-8c88-6193fe59a5c4.png) ## Changelog +### 1.3.18 - 2017/03/05 + * Added support for threshold jewels: + * Most of the relevant modifiers from threshold jewels should now be supported + * The tooltip for jewel sockets now indicates which types of threshold jewels will work there + * Added and updated many new uniques (shoutout to chuanhsing for the list on PoEDB) + * Applied the remaining balance changes to unique items (including threshold jewels) + * Updated all item bases (thanks Patrick) + * Corrected the conversion on Wild Strike + ### 1.3.17 - 2017/03/04 * Updated skill data to 2.6 * Minor update of the passive tree data; this fixes the Storm Weaver pathing