From 138f0f4989dcb22b397170b7049919e8a85e29b2 Mon Sep 17 00:00:00 2001 From: LocalIdentity <31035929+LocalIdentity@users.noreply.github.com> Date: Wed, 6 Dec 2023 08:23:49 +1100 Subject: [PATCH 1/5] Fix Ball Lightning quality stat (#6923) Co-authored-by: LocalIdentity --- src/Data/Skills/act_int.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Data/Skills/act_int.lua b/src/Data/Skills/act_int.lua index dff8b73b76..091c433261 100644 --- a/src/Data/Skills/act_int.lua +++ b/src/Data/Skills/act_int.lua @@ -724,7 +724,7 @@ skills["BallLightning"] = { }, qualityStats = { Default = { - { "lightning_damage_+%", 1 }, + { "active_skill_base_radius_+", 0.1 }, }, Alternate1 = { { "base_cast_speed_+%", 0.5 }, From 3589276d3a9a3df2f47c738b99956bb5e4e5c26b Mon Sep 17 00:00:00 2001 From: LocalIdentity <31035929+LocalIdentity@users.noreply.github.com> Date: Wed, 6 Dec 2023 08:23:56 +1100 Subject: [PATCH 2/5] Clean up Divine Ire mods (#6922) Co-authored-by: LocalIdentity --- src/Data/Skills/act_int.lua | 8 +------- src/Export/Skills/act_int.txt | 8 +------- src/Modules/ConfigOptions.lua | 7 ------- 3 files changed, 2 insertions(+), 21 deletions(-) diff --git a/src/Data/Skills/act_int.lua b/src/Data/Skills/act_int.lua index 091c433261..38ad115030 100644 --- a/src/Data/Skills/act_int.lua +++ b/src/Data/Skills/act_int.lua @@ -2778,9 +2778,7 @@ skills["DivineTempest"] = { castTime = 0.22, preDamageFunc = function(activeSkill, output) if activeSkill.skillPart == 2 then - local skillCfg = activeSkill.skillCfg - local skillModList = activeSkill.skillModList - activeSkill.skillData.hitTimeMultiplier = math.max(skillModList:Sum("BASE", skillCfg, "Multiplier:DivineIreStage") / (1 + skillModList:Sum("BASE", skillCfg, "Multiplier:DivineIreUniqueEnemyCount") + skillModList:Sum("BASE", skillCfg, "NormalEnemyHitMultiplier") * skillModList:Sum("BASE", skillCfg, "Multiplier:DivineIreNormalEnemyCount")), 1) + activeSkill.skillData.hitTimeMultiplier = activeSkill.skillModList:Sum("BASE", activeSkill.skillCfg, "Multiplier:DivineIreStage") end end, parts = { @@ -2805,10 +2803,6 @@ skills["DivineTempest"] = { ["divine_tempest_ailment_damage_+%_final_per_stage"] = { mod("Damage", "MORE", nil, 0, KeywordFlag.Ailment, { type = "Multiplier", var = "DivineIreStageAfterFirst" }), }, - ["divine_tempest_stage_on_hitting_normal_magic_%_chance"] = { - mod("NormalEnemyHitMultiplier", "BASE", nil), - div = 100 - }, }, baseFlags = { spell = true, diff --git a/src/Export/Skills/act_int.txt b/src/Export/Skills/act_int.txt index e7f7abd2fc..ae65853f42 100644 --- a/src/Export/Skills/act_int.txt +++ b/src/Export/Skills/act_int.txt @@ -632,9 +632,7 @@ local skills, mod, flag, skill = ... #flags spell area preDamageFunc = function(activeSkill, output) if activeSkill.skillPart == 2 then - local skillCfg = activeSkill.skillCfg - local skillModList = activeSkill.skillModList - activeSkill.skillData.hitTimeMultiplier = math.max(skillModList:Sum("BASE", skillCfg, "Multiplier:DivineIreStage") / (1 + skillModList:Sum("BASE", skillCfg, "Multiplier:DivineIreUniqueEnemyCount") + skillModList:Sum("BASE", skillCfg, "NormalEnemyHitMultiplier") * skillModList:Sum("BASE", skillCfg, "Multiplier:DivineIreNormalEnemyCount")), 1) + activeSkill.skillData.hitTimeMultiplier = activeSkill.skillModList:Sum("BASE", activeSkill.skillCfg, "Multiplier:DivineIreStage") end end, parts = { @@ -659,10 +657,6 @@ local skills, mod, flag, skill = ... ["divine_tempest_ailment_damage_+%_final_per_stage"] = { mod("Damage", "MORE", nil, 0, KeywordFlag.Ailment, { type = "Multiplier", var = "DivineIreStageAfterFirst" }), }, - ["divine_tempest_stage_on_hitting_normal_magic_%_chance"] = { - mod("NormalEnemyHitMultiplier", "BASE", nil), - div = 100 - }, }, #baseMod mod("Multiplier:DivineIreMaxStages", "BASE", 10, 0, 0, { type = "SkillPart", skillPart = 2 }) #baseMod skill("radius", 38) diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index d8689e8e47..a3f6b8d82c 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -335,13 +335,6 @@ return { { var = "darkPactSkeletonLife", type = "count", label = "Skeleton ^xE05030Life:", ifSkill = "Dark Pact", tooltip = "Sets the maximum ^xE05030Life ^7of the Skeleton that is being targeted.", apply = function(val, modList, enemyModList) modList:NewMod("SkillData", "LIST", { key = "skeletonLife", value = val }, "Config", { type = "SkillName", skillName = "Dark Pact" }) end }, - { label = "Divine Ire:", ifSkill = "Divine Ire" }, - { var = "divineIreNormalEnemy", type = "count", label = "Normal Enemies in AoE:", tooltip = "# of Normal Enemies in Divine Ire's Channel radius", ifSkill = "Divine Ire", apply = function(val, modList, enemyModList) - modList:NewMod("Multiplier:DivineIreNormalEnemyCount", "BASE", val, "Config") - end }, - { var = "divineIreUniqueEnemy", type = "count", label = "Unique Enemies in AoE:", tooltip = "# of Unique Enemies in Divine Ire's Channel radius", ifSkill = "Divine Ire", apply = function(val, modList, enemyModList) - modList:NewMod("Multiplier:DivineIreUniqueEnemyCount", "BASE", val, "Config") - end }, { label = "Doom Blast:", ifSkill = "Doom Blast" }, { var = "doomBlastSource", type = "list", label = "Doom Blast Trigger Source:", ifSkill = "Doom Blast", list = {{val="expiration",label="Curse Expiration"},{val="replacement",label="Curse Replacement"},{val="vixen",label="Vixen's Curse"}}, defaultIndex = 3, apply = function(val, modList, enemyModList) if val == "vixen" then From 267a8a9c630f5c9f63efb78e4445e0af4712e2cf Mon Sep 17 00:00:00 2001 From: LocalIdentity <31035929+LocalIdentity@users.noreply.github.com> Date: Wed, 6 Dec 2023 08:24:03 +1100 Subject: [PATCH 3/5] Fix Tailwind not applying (#6919) The block was moved in #6801 and this caused the code to not run in time Co-authored-by: LocalIdentity --- src/Modules/CalcPerform.lua | 133 ++++++++++++++++++------------------ 1 file changed, 67 insertions(+), 66 deletions(-) diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index c361e4e416..a394815a06 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -2682,6 +2682,73 @@ function calcs.perform(env, fullDPSSkipEHP) enemyDB:ReplaceMod("Multiplier:ImpaleStacks", "BASE", maxImpaleStacks, "Config", { type = "Condition", var = "Combat" }) end + -- Check for extra auras + buffExports["Aura"]["extraAura"] = { effectMult = 1, modList = new("ModList") } + for _, value in ipairs(modDB:List(nil, "ExtraAura")) do + local modList = { value.mod } + if not value.onlyAllies then + local inc = modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") + local more = modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf") + modDB:ScaleAddList(modList, (1 + inc / 100) * more) + if not value.notBuff then + modDB.multipliers["BuffOnSelf"] = (modDB.multipliers["BuffOnSelf"] or 0) + 1 + end + end + if not modDB:Flag(nil, "SelfAurasCannotAffectAllies") then + if env.minion then + local inc = env.minion.modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") + local more = env.minion.modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf") + env.minion.modDB:ScaleAddList(modList, (1 + inc / 100) * more) + end + buffExports["Aura"]["extraAura"].modList:AddMod(value.mod) + local totemModBlacklist = value.mod.name and (value.mod.name == "Speed" or value.mod.name == "CritMultiplier" or value.mod.name == "CritChance") + if env.player.mainSkill.skillFlags.totem and not totemModBlacklist then + local totemMod = copyTable(value.mod) + local totemModName, matches = totemMod.name:gsub("Condition:", "Condition:Totem") + if matches < 1 then + totemModName = "Totem" .. totemMod.name + end + totemMod.name = totemModName + modDB:AddMod(totemMod) + end + end + end + if allyBuffs["extraAura"] then + for _, buff in pairs(allyBuffs["extraAura"]) do + local modList = buff.modList + local inc = modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") + local more = modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf") + modDB:ScaleAddList(modList, (1 + inc / 100) * more) + if env.minion then + local inc = env.minion.modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") + local more = env.minion.modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf") + env.minion.modDB:ScaleAddList(modList, (1 + inc / 100) * more) + end + end + end + + -- Check for modifiers to apply to actors affected by player auras or curses + for _, value in ipairs(modDB:List(nil, "AffectedByAuraMod")) do + for actor in pairs(affectedByAura) do + actor.modDB:AddMod(value.mod) + end + end + + -- Merge keystones again to catch any that were added by buffs + mergeKeystones(env) + + -- Special handling for Dancing Dervish + if modDB:Flag(nil, "DisableWeapons") then + env.player.weaponData1 = copyTable(env.data.unarmedWeaponData[env.classId]) + modDB.conditions["Unarmed"] = true + if not env.player.Gloves or env.player.Gloves == None then + modDB.conditions["Unencumbered"] = true + end + elseif env.weaponModList1 then + modDB:AddList(env.weaponModList1) + end + + -- Process misc buffs/modifiers doActorMisc(env, env.player) if env.minion then doActorMisc(env, env.minion) @@ -2780,72 +2847,6 @@ function calcs.perform(env, fullDPSSkipEHP) enemyDB:NewMod("Multiplier:ShockEffect", "BASE", output["CurrentShock"] - shockEffectMultiplier, "") end - -- Check for extra auras - buffExports["Aura"]["extraAura"] = { effectMult = 1, modList = new("ModList") } - for _, value in ipairs(modDB:List(nil, "ExtraAura")) do - local modList = { value.mod } - if not value.onlyAllies then - local inc = modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") - local more = modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf") - modDB:ScaleAddList(modList, (1 + inc / 100) * more) - if not value.notBuff then - modDB.multipliers["BuffOnSelf"] = (modDB.multipliers["BuffOnSelf"] or 0) + 1 - end - end - if not modDB:Flag(nil, "SelfAurasCannotAffectAllies") then - if env.minion then - local inc = env.minion.modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") - local more = env.minion.modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf") - env.minion.modDB:ScaleAddList(modList, (1 + inc / 100) * more) - end - buffExports["Aura"]["extraAura"].modList:AddMod(value.mod) - local totemModBlacklist = value.mod.name and (value.mod.name == "Speed" or value.mod.name == "CritMultiplier" or value.mod.name == "CritChance") - if env.player.mainSkill.skillFlags.totem and not totemModBlacklist then - local totemMod = copyTable(value.mod) - local totemModName, matches = totemMod.name:gsub("Condition:", "Condition:Totem") - if matches < 1 then - totemModName = "Totem" .. totemMod.name - end - totemMod.name = totemModName - modDB:AddMod(totemMod) - end - end - end - if allyBuffs["extraAura"] then - for _, buff in pairs(allyBuffs["extraAura"]) do - local modList = buff.modList - local inc = modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") - local more = modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf") - modDB:ScaleAddList(modList, (1 + inc / 100) * more) - if env.minion then - local inc = env.minion.modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") - local more = env.minion.modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf") - env.minion.modDB:ScaleAddList(modList, (1 + inc / 100) * more) - end - end - end - - -- Check for modifiers to apply to actors affected by player auras or curses - for _, value in ipairs(modDB:List(nil, "AffectedByAuraMod")) do - for actor in pairs(affectedByAura) do - actor.modDB:AddMod(value.mod) - end - end - - -- Merge keystones again to catch any that were added by buffs - mergeKeystones(env) - - -- Special handling for Dancing Dervish - if modDB:Flag(nil, "DisableWeapons") then - env.player.weaponData1 = copyTable(env.data.unarmedWeaponData[env.classId]) - modDB.conditions["Unarmed"] = true - if not env.player.Gloves or env.player.Gloves == None then - modDB.conditions["Unencumbered"] = true - end - elseif env.weaponModList1 then - modDB:AddList(env.weaponModList1) - end - doActorMisc(env, env.enemy) for _, activeSkill in ipairs(env.player.activeSkillList) do From afdd7ccb0c2d11a5197db22798782edc69a1f586 Mon Sep 17 00:00:00 2001 From: LocalIdentity <31035929+LocalIdentity@users.noreply.github.com> Date: Wed, 6 Dec 2023 08:24:14 +1100 Subject: [PATCH 4/5] Fix Blade Vortex gaining damage from Unleash (#6921) Co-authored-by: LocalIdentity --- src/Data/SkillStatMap.lua | 3 +++ src/Modules/CalcOffence.lua | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index 9be94c5416..7152969bd2 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -290,6 +290,9 @@ return { skill("castTimeOverride", nil), div = 1000, }, +["skill_cannot_gain_repeat_bonuses"] = { + flag("NoRepeatBonuses"), +}, -- -- Defensive modifiers diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 9e0d452ae2..3b52609de5 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -807,7 +807,7 @@ function calcs.offence(env, actor, activeSkill) end end end - if skillModList:Flag(nil, "HasSeals") and activeSkill.skillTypes[SkillType.CanRapidFire] then + if skillModList:Flag(nil, "HasSeals") and activeSkill.skillTypes[SkillType.CanRapidFire] and not skillModList:Flag(nil, "NoRepeatBonuses") then -- Applies DPS multiplier based on seals count output.SealCooldown = skillModList:Sum("BASE", skillCfg, "SealGainFrequency") / calcLib.mod(skillModList, skillCfg, "SealGainFrequency") output.SealMax = skillModList:Sum("BASE", skillCfg, "SealCount") @@ -3165,7 +3165,7 @@ function calcs.offence(env, actor, activeSkill) end output.AverageDamage = output.AverageHit * output.HitChance / 100 globalOutput.AverageBurstHits = output.AverageBurstHits or 1 - local repeatPenalty = skillModList:Flag(nil, "HasSeals") and activeSkill.skillTypes[SkillType.CanRapidFire] and calcLib.mod(skillModList, skillCfg, "SealRepeatPenalty") or 1 + local repeatPenalty = skillModList:Flag(nil, "HasSeals") and activeSkill.skillTypes[SkillType.CanRapidFire] and not skillModList:Flag(nil, "NoRepeatBonuses") and calcLib.mod(skillModList, skillCfg, "SealRepeatPenalty") or 1 globalOutput.AverageBurstDamage = output.AverageDamage + output.AverageDamage * (globalOutput.AverageBurstHits - 1) * repeatPenalty or 0 globalOutput.ShowBurst = globalOutput.AverageBurstHits > 1 output.TotalDPS = output.AverageDamage * (globalOutput.HitSpeed or globalOutput.Speed) * skillData.dpsMultiplier * quantityMultiplier From 4a896e0bd7f4da83dabc699e4d79c6f94fd49b17 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 08:30:46 +1100 Subject: [PATCH 5/5] Release 2.35.2 (#6924) * Prepare release 2.35.2 * Fix changelogs --------- Co-authored-by: LocalIdentity Co-authored-by: LocalIdentity --- CHANGELOG.md | 17 +++++++++++++++++ changelog.txt | 11 +++++++++++ 2 files changed, 28 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c33421752..ba0ecb667e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [v2.35.2](https://github.com/PathOfBuildingCommunity/PathOfBuilding/tree/v2.35.2) (2023/12/06) + +[Full Changelog](https://github.com/PathOfBuildingCommunity/PathOfBuilding/compare/v2.35.1...v2.35.2) + + + +## What's Changed +### Fixed Bugs +- Fix Blade Vortex gaining damage from Unleash [\#6921](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/6921) ([LocalIdentity](https://github.com/LocalIdentity)) +- Fix Tailwind not applying [\#6919](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/6919) ([LocalIdentity](https://github.com/LocalIdentity)) + +### Accuracy Improvements +- Fix Ball Lightning quality stat [\#6923](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/6923) ([LocalIdentity](https://github.com/LocalIdentity)) +- Remove dead Divine Ire mods [\#6922](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/6922) ([LocalIdentity](https://github.com/LocalIdentity)) + + + ## [v2.35.0](https://github.com/PathOfBuildingCommunity/PathOfBuilding/tree/v2.35.0) (2023/12/06) [Full Changelog](https://github.com/PathOfBuildingCommunity/PathOfBuilding/compare/v2.34.1...v2.35.0) diff --git a/changelog.txt b/changelog.txt index 118c58e08c..0e6a80fa22 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,14 @@ +VERSION[2.35.2][2023/12/06] + +--- Fixed Bugs --- +* Fix Blade Vortex gaining damage from Unleash (LocalIdentity) +* Fix Tailwind not applying (LocalIdentity) + +--- Accuracy Improvements --- +* Fix Ball Lightning quality stat (LocalIdentity) +* Remove dead Divine Ire mods (LocalIdentity) + + VERSION[2.35.0][2023/12/06] --- New to Path of Building ---