diff --git a/Classes/SkillListControl.lua b/Classes/SkillListControl.lua index 9dd88143..a7be4ae6 100644 --- a/Classes/SkillListControl.lua +++ b/Classes/SkillListControl.lua @@ -26,7 +26,16 @@ local SkillListClass = common.NewClass("SkillList", "Control", "ControlHost", fu self.controls.delete.enabled = function() return self.selSkill ~= nil end - self.controls.new = common.New("ButtonControl", {"RIGHT",self.controls.delete,"LEFT"}, -4, 0, 60, 18, "New", function() + self.controls.paste = common.New("ButtonControl", {"RIGHT",self.controls.delete,"LEFT"}, -4, 0, 60, 18, "Paste", function() + self.skillsTab:PasteSkill() + end) + self.controls.copy = common.New("ButtonControl", {"RIGHT",self.controls.paste,"LEFT"}, -4, 0, 60, 18, "Copy", function() + self.skillsTab:CopySkill(self.selSkill) + end) + self.controls.copy.enabled = function() + return self.selSkill ~= nil + end + self.controls.new = common.New("ButtonControl", {"RIGHT",self.controls.copy,"LEFT"}, -4, 0, 60, 18, "New", function() local newSkill = { label = "", active = true, gemList = { } } t_insert(self.skillsTab.list, newSkill) self.selSkill = newSkill @@ -185,18 +194,8 @@ function SkillListClass:OnKeyDown(key, doubleClick) self.selDragActive = false end elseif key == "c" and IsKeyDown("CTRL") then - if self.selSkill then - local skillText = "" - if self.selSkill.label:match("%S") then - skillText = skillText .. "Label: "..self.selSkill.label.."\r\n" - end - if self.selSkill.slot then - skillText = skillText .. "Slot: "..self.selSkill.slot.."\r\n" - end - for _, gem in ipairs(self.selSkill.gemList) do - skillText = skillText .. string.format("%s %d/%d\r\n", gem.nameSpec, gem.level, gem.quality) - end - Copy(skillText) + if self.selSkill then + self.skillsTab:CopySkill(self.selSkill) end elseif #self.skillsTab.list > 0 then if key == "UP" then diff --git a/Classes/SkillsTab.lua b/Classes/SkillsTab.lua index 4699ce32..5aaa1170 100644 --- a/Classes/SkillsTab.lua +++ b/Classes/SkillsTab.lua @@ -118,29 +118,7 @@ function SkillsTabClass:Draw(viewPort, inputEvents) self:Redo() self.build.buildFlag = true elseif event.key == "v" and IsKeyDown("CTRL") then - local skillText = Paste() - if skillText then - local newSkill = { label = "", active = true, gemList = { } } - local label = skillText:match("Label: (%C+)") - if label then - newSkill.label = label - end - local slot = skillText:match("Slot: (%C+)") - if slot then - newSkill.slot = slot - end - for nameSpec, level, quality in skillText:gmatch("([ %a']+) (%d+)/(%d+)") do - t_insert(newSkill.gemList, { nameSpec = nameSpec, level = tonumber(level) or 1, quality = tonumber(quality) or 0 }) - end - if #newSkill.gemList > 0 then - t_insert(self.list, newSkill) - self.controls.skillList.selSkill = newSkill - self.controls.skillList.selIndex = #self.list - self:SetDisplaySkill(newSkill) - self:AddUndoState() - self.build.buildFlag = true - end - end + self:PasteSkill() end end end @@ -153,6 +131,46 @@ function SkillsTabClass:Draw(viewPort, inputEvents) self:DrawControls(viewPort) end +function SkillsTabClass:CopySkill(skill) + local skillText = "" + if skill.label:match("%S") then + skillText = skillText .. "Label: "..skill.label.."\r\n" + end + if skill.slot then + skillText = skillText .. "Slot: "..skill.slot.."\r\n" + end + for _, gem in ipairs(skill.gemList) do + skillText = skillText .. string.format("%s %d/%d\r\n", gem.nameSpec, gem.level, gem.quality) + end + Copy(skillText) +end + +function SkillsTabClass:PasteSkill() + local skillText = Paste() + if skillText then + local newSkill = { label = "", active = true, gemList = { } } + local label = skillText:match("Label: (%C+)") + if label then + newSkill.label = label + end + local slot = skillText:match("Slot: (%C+)") + if slot then + newSkill.slot = slot + end + for nameSpec, level, quality in skillText:gmatch("([ %a']+) (%d+)/(%d+)") do + t_insert(newSkill.gemList, { nameSpec = nameSpec, level = tonumber(level) or 1, quality = tonumber(quality) or 0 }) + end + if #newSkill.gemList > 0 then + t_insert(self.list, newSkill) + self.controls.skillList.selSkill = newSkill + self.controls.skillList.selIndex = #self.list + self:SetDisplaySkill(newSkill) + self:AddUndoState() + self.build.buildFlag = true + end + end +end + -- Create the controls for editing the gem at a given index function SkillsTabClass:CreateGemSlot(index) local slot = { } diff --git a/Data/Gems/act_int.lua b/Data/Gems/act_int.lua index c69adad3..deb1828b 100644 --- a/Data/Gems/act_int.lua +++ b/Data/Gems/act_int.lua @@ -830,7 +830,7 @@ gems["Flame Surge"] = { skill_damageEffectiveness = 1, skill_critChanceBase = 6, CondMod_EnemyBurning_spell_damageMore = 1.5, - fireCannotIgnite = true, + cannotIgnite = true, }, quality = { castSpeedInc = 0.5, diff --git a/Data/Gems/sup_int.lua b/Data/Gems/sup_int.lua index d5d73ee1..f40169c0 100644 --- a/Data/Gems/sup_int.lua +++ b/Data/Gems/sup_int.lua @@ -357,6 +357,10 @@ gems["Elemental Focus"] = { support = true, base = { manaCostMore = 1.3, + cannotShock = true, + cannotChill = true, + cannotFreeze = true, + cannotIgnite = true, }, quality = { elementalInc = 0.5, diff --git a/Data/New.lua b/Data/New.lua index bece473d..0811a34e 100644 --- a/Data/New.lua +++ b/Data/New.lua @@ -74,7 +74,7 @@ The Brass Dome Gladiator Plate Requires Level 65, 177 Str 30% reduced Chance to Block Attacks and Spells -647% increased Armour +(600-650)% increased Armour 10% reduced Movement Speed 50% increased Shock Duration on You Take no Extra Damage from Critical Strikes @@ -226,19 +226,18 @@ Praxis Paua Ring Requires Level 22 +(20–25) to maximum Mana -+(44–48) to maximum Mana -(4.3–5.3) Mana Regenerated per second -−(4–7) to Mana Cost of Skills ++(30–60) to maximum Mana +(3–6) Mana Regenerated per second +−(4–8) to Mana Cost of Skills 8% of Damage taken gained as Mana when Hit ]],[[ Valyrium Moonstone Ring -Unreleased: true Requires Level 38 -+(15 to 25) to maximum Energy Shield -+(10 to 20) to maximum Energy Shield -+(20 to 30)% to Fire Resistance --40% to Cold Resistance ++(15–25) to maximum Energy Shield ++(10–20) to maximum Energy Shield ++(20–30)% to Fire Resistance +−40% to Cold Resistance Stun Threshold is based on Energy Shield instead of Life ]],[[ Shaper's Touch diff --git a/Data/Uniques/amulet.lua b/Data/Uniques/amulet.lua index 10c8a9f3..741917e1 100644 --- a/Data/Uniques/amulet.lua +++ b/Data/Uniques/amulet.lua @@ -34,7 +34,6 @@ You gain 100 Evasion Rating when on Low Life ]],[[ The Ascetic Gold Amulet -League: Prophecy Requires Level 8 (12 to 20)% increased Rarity of Items found (80 to 100)% increased Rarity of Items found with a Normal Item equipped @@ -144,7 +143,6 @@ Cannot be Stunned ]],[[ Hinekora's Sight Onyx Amulet -League: Prophecy Requires Level 20 +(10 to 16) to all Attributes +1000 to Accuracy Rating @@ -164,7 +162,6 @@ Adds 12 to 24 Fire Damage to Attacks ]],[[ Karui Charge Jade Amulet -League: Prophecy Requires Level 24 +(20 to 30) to Dexterity +(20 to 30) to Strength @@ -217,7 +214,6 @@ Corrupted ]],[[ Ngamahu Tiki Coral Amulet -League: Prophecy Requires Level 36 (2 to 4) Life Regenerated per second (50 to 70)% increased Fire Damage diff --git a/Data/Uniques/axe.lua b/Data/Uniques/axe.lua index 16324f83..4a1e2c30 100644 --- a/Data/Uniques/axe.lua +++ b/Data/Uniques/axe.lua @@ -35,7 +35,6 @@ Enemies Chilled by you take 40% increased Burning Damage ]],[[ The Gryphon Jade Hatchet -League: Prophecy One Handed Axe Physical Damage: (49-67 to 103-125) Critical Strike Chance: 5.00% @@ -169,7 +168,6 @@ Causes Bleeding on Hit ]],[[ The Cauteriser Woodsplitter -League: Prophecy Two Handed Axe Physical Damage: (94-118 to 207-250) Critical Strike Chance: 5% diff --git a/Data/Uniques/belt.lua b/Data/Uniques/belt.lua index 1db4e4ec..745f1023 100644 --- a/Data/Uniques/belt.lua +++ b/Data/Uniques/belt.lua @@ -5,7 +5,6 @@ return { [[ Ascent From Flesh Chain Belt -League: Prophecy Requires Level 44 +(9 to 20) to maximum Energy Shield +300 to Evasion Rating diff --git a/Data/Uniques/body.lua b/Data/Uniques/body.lua index d819ea3b..ca3f02d6 100644 --- a/Data/Uniques/body.lua +++ b/Data/Uniques/body.lua @@ -73,7 +73,6 @@ Chaos Damage does not bypass Energy Shield ]],[[ Wall of Brambles Plate Vest -League: Prophecy Armour: 2014 Requires Level 30 Adds 2 to 4 Physical Damage to Attacks @@ -159,7 +158,6 @@ Adds 13 to 24 Cold Damage to Attacks ]],[[ Kintsugi Exquisite Leather -League: Prophecy Evasion: (1004 to 1104) Requires Level 62, 170 Dex (100 to 120)% increased Evasion Rating diff --git a/Data/Uniques/boots.lua b/Data/Uniques/boots.lua index c10d156c..c736eb49 100644 --- a/Data/Uniques/boots.lua +++ b/Data/Uniques/boots.lua @@ -143,7 +143,6 @@ Requires Level 53, 94 Int ]],[[ Shavronne's Gambit Scholar Boots -League: Prophecy Energy Shield: (56 to 67) Requires Level 32, 54 Int +10 to Dexterity diff --git a/Data/Uniques/bow.lua b/Data/Uniques/bow.lua index ff280d8d..6ac52c4e 100644 --- a/Data/Uniques/bow.lua +++ b/Data/Uniques/bow.lua @@ -61,7 +61,6 @@ Adds an additional Arrow ]],[[ Death's Opus Death Bow -League: Prophecy Bow Physical Damage: (60-90 to 166-198) Critical Strike Chance: (6.50 to 7.50)% @@ -92,7 +91,6 @@ Gain 110% of Bow Physical Damage as Extra Damage of an Element ]],[[ Doomfletch's Prism Royal Bow -League: Prophecy Bow Physical Damage: (18-22 to 57-61) Critical Strike Chance: (6.50 to 7.00)% @@ -229,7 +227,6 @@ Skills Chain +1 times ]],[[ Silverbough Crude Bow -League: Prophecy Bow Physical Damage: (36-60 to 113-146) Critical Strike Chance: 5.00% @@ -274,7 +271,6 @@ No Physical Damage ]],[[ The Tempest Long Bow -League: Prophecy Bow Elemental Damage: 1–85 Critical Strike Chance: 6.00% diff --git a/Data/Uniques/gloves.lua b/Data/Uniques/gloves.lua index 9556ccad..141dbbdc 100644 --- a/Data/Uniques/gloves.lua +++ b/Data/Uniques/gloves.lua @@ -77,7 +77,6 @@ Requires Level 47, 68 Str [[ Hrimburn Goathide Gloves -League: Prophecy Evasion: 42 Requires Level 24, 17 Dex +(20 to 30) to Strength @@ -132,7 +131,6 @@ Requires Level 12, 21 Int ]],[[ Grip of the Council Arcanist Gloves -League: Prophecy Energy Shield: 56 Requires Level 60, 95 Int +30 to Strength diff --git a/Data/Uniques/helmet.lua b/Data/Uniques/helmet.lua index 89e56f17..8c05249c 100644 --- a/Data/Uniques/helmet.lua +++ b/Data/Uniques/helmet.lua @@ -18,7 +18,6 @@ Adds 40 to 60 Physical Damage to Attacks ]],[[ Ezomyte Hold Iron Hat -League: Prophecy Armour: (23 to 33) 20% increased Physical Damage +(15 to 25) to Armour @@ -171,7 +170,6 @@ Requires Level 39, 83 Int ]],[[ Martyr's Crown Vine Circlet -League: Prophecy Energy Shield: (267 to 307) Requires Level 52 +(260 to 300) to maximum Energy Shield @@ -261,7 +259,6 @@ Cannot Leech when on Low Life ]],[[ Deidbellow Gilded Sallet -League: Prophecy Armour: (278 to 378) Evasion: 78 Requires Level 33, 38 Str, 38 Dex @@ -437,7 +434,6 @@ Blood Magic ]],[[ Mind of the Council Harlequin Mask -League: Prophecy Evasion: (452 to 493) Energy Shield: (132 to 144) Requires Level 57, 64 Dex, 64 Int diff --git a/Data/Uniques/mace.lua b/Data/Uniques/mace.lua index ff624155..a95a25ee 100644 --- a/Data/Uniques/mace.lua +++ b/Data/Uniques/mace.lua @@ -182,7 +182,6 @@ Socketed Gems are Supported by level 1 Reduced Mana ]],[[ Breath of the Council Carnal Sceptre -League: Prophecy One Handed Mace Physical Damage: (122-139 to 281-320) Critical Strike Chance: 6.00% @@ -423,7 +422,6 @@ Never deal Critical Strikes ]],[[ Hrimnor's Dirge Sledgehammer -League: Prophecy Two Handed Mace Physical Damage: (74-123 to 148-216) Critical Strike Chance: 5.00% diff --git a/Data/Uniques/quiver.lua b/Data/Uniques/quiver.lua index fee9e75b..edf4334b 100644 --- a/Data/Uniques/quiver.lua +++ b/Data/Uniques/quiver.lua @@ -30,7 +30,6 @@ Adds 5 to 10 Fire Damage to Attacks with Bows ]],[[ Cragfall Serrated Arrow Quiver -League: Prophecy Requires Level 5 Adds 1 to 4 Physical Damage to Attacks with Bows (20 to 25)% reduced Enemy Stun Threshold @@ -116,7 +115,6 @@ Requires Level 45 ]],[[ The Signal Fire Fire Arrow Quiver -League: Prophecy Requires Level 24 Adds 4 to 8 Fire Damage to Attacks with Bows 10% increased Attack Speed diff --git a/Data/Uniques/ring.lua b/Data/Uniques/ring.lua index 6634bfaa..5a46f2ce 100644 --- a/Data/Uniques/ring.lua +++ b/Data/Uniques/ring.lua @@ -163,7 +163,6 @@ Variant: Current ]],[[ Kaom's Way Coral Ring -League: Prophecy Requires Level 32 +(20 to 30) to maximum Life +(10 to 20) to Strength @@ -449,7 +448,6 @@ Adds 1 to 3 Chaos Damage to Attacks 10% chance to Cause Monsters to Flee {variant:1}Melee Attacks cause Bleeding {variant:2}(30 to 50)% chance to cause Bleeding on Hit with Melee Attacks -{variant:1}Melee Attacks Poison on Hit -{variant:2}(20 to 40)% chance to Poison on Hit with Melee Attacks +Melee Attacks Poison on Hit ]], } \ No newline at end of file diff --git a/Data/Uniques/shield.lua b/Data/Uniques/shield.lua index c5005118..6faf83f6 100644 --- a/Data/Uniques/shield.lua +++ b/Data/Uniques/shield.lua @@ -129,7 +129,6 @@ Requires Level 16, 44 Dex ]],[[ Kaltensoul Painted Buckler -League: Prophecy Chance to Block: 29% Evasion: (152 to 190) Requires Level 16, 44 Dex @@ -154,7 +153,6 @@ You gain Onslaught for 2 seconds on Killing Taunted Enemies ]],[[ Thirst for Horrors War Buckler -League: Prophecy Chance to Block: 31% Evasion: (164 to 189) Requires Level 32, 74 Dex @@ -330,7 +328,6 @@ Gain (5 to 10)% of Physical Damage as Extra Chaos Damage ]],[[ The Oak Plank Kite Shield -League: Prophecy Chance to Block: 22% Armour: (27 to 33) Energy Shield: (9 to 11) @@ -368,6 +365,7 @@ Chance to Block: 24% Armour: (229 to 254) Energy Shield: (67 to 74) Requires Level 65, 85 Str, 85 Int +Implicits: 2 {variant:1}+16% to all Elemental Resistances {variant:2}+8% to all Elemental Resistances (80 to 100)% increased Armour and Energy Shield diff --git a/Data/Uniques/staff.lua b/Data/Uniques/staff.lua index af96824b..c955741c 100644 --- a/Data/Uniques/staff.lua +++ b/Data/Uniques/staff.lua @@ -159,7 +159,6 @@ Socketed Gems are Supported by level 30 Spell Echo ]],[[ Realm Ender Iron Staff -League: Prophecy Staff Physical Damage: 16–47 Elemental Damage: (10-15 to 20-25), (10-15 to 20-25) diff --git a/Data/Uniques/sword.lua b/Data/Uniques/sword.lua index 02b595a1..9deb8bcb 100644 --- a/Data/Uniques/sword.lua +++ b/Data/Uniques/sword.lua @@ -464,7 +464,6 @@ Minions deal (10 to 15)% increased Damage ]],[[ Queen's Escape Ornate Sword -League: Prophecy Two Handed Sword Physical Damage: 31–52 Critical Strike Chance: 5.00% diff --git a/Data/Uniques/wand.lua b/Data/Uniques/wand.lua index ff6ed519..bff162af 100644 --- a/Data/Uniques/wand.lua +++ b/Data/Uniques/wand.lua @@ -23,7 +23,6 @@ Adds (4-6 to 8-12) Fire Damage to Spells ]],[[ Amplification Rod Spiraled Wand -League: Prophecy Wand Physical Damage: 8–24 Critical Strike Chance: 8.00% diff --git a/Modules/Build.lua b/Modules/Build.lua index b19f9a62..9201c401 100644 --- a/Modules/Build.lua +++ b/Modules/Build.lua @@ -220,10 +220,10 @@ function buildMode:Init(dbFileName, buildName) { mod = "total_dodgeAttacks", label = "Attack Dodge Chance", fmt = "d%%", pc = true }, { mod = "total_dodgeSpells", label = "Spell Dodge Chance", fmt = "d%%", pc = true }, { }, - { mod = "total_fireResist", label = "Fire Resistance", fmt = "d%%" }, - { mod = "total_coldResist", label = "Cold Resistance", fmt = "d%%" }, - { mod = "total_lightningResist", label = "Lightning Resistance", fmt = "d%%" }, - { mod = "total_chaosResist", label = "Chaos Resistance", fmt = "d%%" }, + { mod = "total_fireResist", label = "Fire Resistance", fmt = "d%%", condFunc = function() return true end }, + { mod = "total_coldResist", label = "Cold Resistance", fmt = "d%%", condFunc = function() return true end }, + { mod = "total_lightningResist", label = "Lightning Resistance", fmt = "d%%", condFunc = function() return true end }, + { mod = "total_chaosResist", label = "Chaos Resistance", fmt = "d%%", condFunc = function() return true end }, { mod = "total_fireResistOverCap", label = "Fire Res. Over Max", fmt = "d%%" }, { mod = "total_coldResistOverCap", label = "Cold Res. Over Max", fmt = "d%%" }, { mod = "total_lightningResistOverCap", label = "Lightning Res. Over Max", fmt = "d%%" }, diff --git a/Modules/Calcs.lua b/Modules/Calcs.lua index 4f8d9d6c..fa6cfc47 100644 --- a/Modules/Calcs.lua +++ b/Modules/Calcs.lua @@ -1557,75 +1557,89 @@ local function performCalcs(env, output) -- Calculate ignite chance and damage env.skillFlags.ignite = false if startWatch(env, "ignite", "canDeal", "fire", "cold", "dps_crit", "enemyResist") then - output.ignite_chance = m_min(100, sumMods(modDB, false, "igniteChance")) / 100 - local sourceDmg = 0 - if canDeal.fire and not getMiscVal(modDB, nil, "fireCannotIgnite", false) then - sourceDmg = sourceDmg + output.total_fireAvg - end - if canDeal.cold and getMiscVal(modDB, nil, "coldCanIgnite", false) then - sourceDmg = sourceDmg + output.total_coldAvg - end - if canDeal.fire and output.ignite_chance > 0 and sourceDmg > 0 then - env.skillFlags.dot = true - env.skillFlags.ignite = true - buildSpaceTable(modDB, { - dot = true, - debuff = true, - spell = getMiscVal(modDB, "skill", "dotIsSpell", false), - ignite = true, - projectile = env.skillSpaceFlags.projectile, - aoe = env.skillSpaceFlags.aoe, - totem = env.skillSpaceFlags.totem, - trap = env.skillSpaceFlags.trap, - mine = env.skillSpaceFlags.mine, - }) - local baseVal = sourceDmg * output.total_critEffect * 0.2 - local effMult = 1 - if env.mode_effective then - local taken = getMiscVal(modDB, "effective", "fireTakenInc", 0) + getMiscVal(modDB, "effective", "elementalTakenInc", 0) + getMiscVal(modDB, "effective", "damageTakenInc", 0) + getMiscVal(modDB, "effective", "dotTakenInc", 0) - effMult = (1 - output["enemy_fireResist"] / 100) * (1 + taken / 100) + if getMiscVal(modDB, nil, "cannotIgnite", false) then + output.ignite_chance = 0 + else + output.ignite_chance = m_min(100, sumMods(modDB, false, "igniteChance")) / 100 + local sourceDmg = 0 + if canDeal.fire and not getMiscVal(modDB, nil, "fireCannotIgnite", false) then + sourceDmg = sourceDmg + output.total_fireAvg + end + if canDeal.cold and getMiscVal(modDB, nil, "coldCanIgnite", false) then + sourceDmg = sourceDmg + output.total_coldAvg + end + if canDeal.fire and output.ignite_chance > 0 and sourceDmg > 0 then + env.skillFlags.dot = true + env.skillFlags.ignite = true + buildSpaceTable(modDB, { + dot = true, + debuff = true, + spell = getMiscVal(modDB, "skill", "dotIsSpell", false), + ignite = true, + projectile = env.skillSpaceFlags.projectile, + aoe = env.skillSpaceFlags.aoe, + totem = env.skillSpaceFlags.totem, + trap = env.skillSpaceFlags.trap, + mine = env.skillSpaceFlags.mine, + }) + local baseVal = sourceDmg * output.total_critEffect * 0.2 + local effMult = 1 + if env.mode_effective then + local taken = getMiscVal(modDB, "effective", "fireTakenInc", 0) + getMiscVal(modDB, "effective", "elementalTakenInc", 0) + getMiscVal(modDB, "effective", "damageTakenInc", 0) + getMiscVal(modDB, "effective", "dotTakenInc", 0) + effMult = (1 - output["enemy_fireResist"] / 100) * (1 + taken / 100) + end + output.ignite_dps = baseVal * (1 + sumMods(modDB, false, "damageInc", "fireInc", "elementalInc") / 100) * sumMods(modDB, true, "damageMore", "fireMore", "elementalMore") * effMult + output.ignite_duration = 4 * (1 + getMiscVal(modDB, "ignite", "durationInc", 0) / 100) + buildSpaceTable(modDB, env.skillSpaceFlags) end - output.ignite_dps = baseVal * (1 + sumMods(modDB, false, "damageInc", "fireInc", "elementalInc") / 100) * sumMods(modDB, true, "damageMore", "fireMore", "elementalMore") * effMult - output.ignite_duration = 4 * (1 + getMiscVal(modDB, "ignite", "durationInc", 0) / 100) - buildSpaceTable(modDB, env.skillSpaceFlags) end endWatch(env, "ignite") end -- Calculate shock and freeze chance + duration modifier if startWatch(env, "shock", "canDeal", "lightning", "fire", "chaos") then - output.shock_chance = m_min(100, sumMods(modDB, false, "shockChance")) / 100 - local sourceDmg = 0 - if canDeal.lightning and not getMiscVal(modDB, nil, "lightningCannotShock", false) then - sourceDmg = sourceDmg + output.total_lightningAvg + if getMiscVal(modDB, nil, "cannotShock", false) then + output.shock_chance = 0 + else + output.shock_chance = m_min(100, sumMods(modDB, false, "shockChance")) / 100 + local sourceDmg = 0 + if canDeal.lightning and not getMiscVal(modDB, nil, "lightningCannotShock", false) then + sourceDmg = sourceDmg + output.total_lightningAvg + end + if canDeal.physical and getMiscVal(modDB, nil, "physicalCanShock", false) then + sourceDmg = sourceDmg + output.total_physicalAvg + end + if canDeal.fire and getMiscVal(modDB, nil, "fireCanShock", false) then + sourceDmg = sourceDmg + output.total_fireAvg + end + if canDeal.chaos and getMiscVal(modDB, nil, "chaosCanShock", false) then + sourceDmg = sourceDmg + output.total_chaosAvg + end + if output.shock_chance > 0 and sourceDmg > 0 then + env.skillFlags.shock = true + output.shock_durationMod = 1 + getMiscVal(modDB, "shock", "durationInc", 0) / 100 + end end - if canDeal.physical and getMiscVal(modDB, nil, "physicalCanShock", false) then - sourceDmg = sourceDmg + output.total_physicalAvg - end - if canDeal.fire and getMiscVal(modDB, nil, "fireCanShock", false) then - sourceDmg = sourceDmg + output.total_fireAvg - end - if canDeal.chaos and getMiscVal(modDB, nil, "chaosCanShock", false) then - sourceDmg = sourceDmg + output.total_chaosAvg - end - if output.shock_chance > 0 and sourceDmg > 0 then - env.skillFlags.shock = true - output.shock_durationMod = 1 + getMiscVal(modDB, "shock", "durationInc", 0) / 100 - end + endWatch(env, "shock") end if startWatch(env, "freeze", "canDeal", "cold", "lightning") then - output.freeze_chance = m_min(100, sumMods(modDB, false, "freezeChance")) / 100 - local sourceDmg = 0 - if canDeal.cold and not getMiscVal(modDB, nil, "coldCannotFreeze", false) then - sourceDmg = sourceDmg + output.total_coldAvg - end - if canDeal.lightning and getMiscVal(modDB, nil, "lightningCanFreeze", false) then - sourceDmg = sourceDmg + output.total_lightningAvg - end - if output.freeze_chance > 0 and sourceDmg > 0 then - env.skillFlags.freeze = true - output.freeze_durationMod = 1 + getMiscVal(modDB, "freeze", "durationInc", 0) / 100 + if getMiscVal(modDB, nil, "cannotFreeze", false) then + output.freeze_chance = 0 + else + output.freeze_chance = m_min(100, sumMods(modDB, false, "freezeChance")) / 100 + local sourceDmg = 0 + if canDeal.cold and not getMiscVal(modDB, nil, "coldCannotFreeze", false) then + sourceDmg = sourceDmg + output.total_coldAvg + end + if canDeal.lightning and getMiscVal(modDB, nil, "lightningCanFreeze", false) then + sourceDmg = sourceDmg + output.total_lightningAvg + end + if output.freeze_chance > 0 and sourceDmg > 0 then + env.skillFlags.freeze = true + output.freeze_durationMod = 1 + getMiscVal(modDB, "freeze", "durationInc", 0) / 100 + end end + endWatch(env, "freeze") end -- Calculate combined DPS estimate, including DoTs diff --git a/README.md b/README.md index 248ad1e0..fdca27cc 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,13 @@ 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.0.25 - 2016/09/06 + * More updates to 2.4.0 uniques + * Removed Prophecy league tag from all uniques + * Updated Voidheart to account for the non-nerf (poison chance is still 100%) + * Fixed resistances disappearing from the sidebar when the values are exactly 0 + * Elemental Focus now correctly disables ignite/shock/freeze + ### 1.0.24 - 2016/09/05 * Added/updated more 2.4.0 uniques diff --git a/changelog.txt b/changelog.txt index f281708f..dc2688c9 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,9 @@ +VERSION[1.0.25][2016/09/06] + * More updates to 2.4.0 uniques + * Removed Prophecy league tag from all uniques + * Updated Voidheart to account for the non-nerf (poison chance is still 100%) + * Fixed resistances disappearing from the sidebar when the values are exactly 0 + * Elemental Focus now correctly disables ignite/shock/freeze VERSION[1.0.24][2016/09/05] * Added/updated more 2.4.0 uniques VERSION[1.0.23][2016/09/03] diff --git a/manifest.xml b/manifest.xml index d531c638..f18979c1 100644 --- a/manifest.xml +++ b/manifest.xml @@ -1,13 +1,13 @@ - + - + @@ -29,16 +29,16 @@ - - + + - + - + @@ -47,14 +47,14 @@ - + - + - + @@ -74,24 +74,24 @@ - - - - - - + + + + + + - - + + - - - - - - - + + + + + + +