From a3536ac8556e1d2a967919028113802148579767 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Mon, 2 Sep 2024 08:27:08 +1000 Subject: [PATCH 1/2] Fix Frost Blades of Katabasis DoT not scaling with some mods The DoT portion of the skill was not scaling with the `(70-100)% increased Elemental Damage with Melee Weapons` mod on Tinctures. It was also not scaling with the repeat damage on Multistrike. I tested it in game and the repeat damage definitely applies to the DoT component. The PR removes the skill hit tag from the DoT component so it doesn't incorrectly show hit damage and stats It also removes crit chance from showing up unless a skill part has a hit component --- src/Data/Skills/act_dex.lua | 2 ++ src/Export/Skills/act_dex.txt | 3 ++- src/Modules/Build.lua | 4 ++-- src/Modules/CalcActiveSkill.lua | 4 ++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Data/Skills/act_dex.lua b/src/Data/Skills/act_dex.lua index 83461ef798..45de635fab 100644 --- a/src/Data/Skills/act_dex.lua +++ b/src/Data/Skills/act_dex.lua @@ -7924,6 +7924,7 @@ skills["FrostBladesAltX"] = { { name = "Ground DoT", attack = false, + hit = false, melee = false, projectile = false, area = true, @@ -7940,6 +7941,7 @@ skills["FrostBladesAltX"] = { melee = true, projectile = true, area = true, + dotFromAttack = true, }, baseMods = { skill("dotIsArea", true, { type = "SkillPart", skillPart = 2 }), diff --git a/src/Export/Skills/act_dex.txt b/src/Export/Skills/act_dex.txt index c6d9ec3650..9098f37122 100644 --- a/src/Export/Skills/act_dex.txt +++ b/src/Export/Skills/act_dex.txt @@ -1626,7 +1626,7 @@ local skills, mod, flag, skill = ... #mods #skill FrostBladesAltX -#flags attack melee projectile area +#flags attack melee projectile area dotFromAttack parts = { { name = "Melee Hit", @@ -1638,6 +1638,7 @@ local skills, mod, flag, skill = ... { name = "Ground DoT", attack = false, + hit = false, melee = false, projectile = false, area = true, diff --git a/src/Modules/Build.lua b/src/Modules/Build.lua index dd7fde4696..cf0a143713 100644 --- a/src/Modules/Build.lua +++ b/src/Modules/Build.lua @@ -383,8 +383,8 @@ function buildMode:Init(dbFileName, buildName, buildXML, convertBuild, importLin { stat = "TrapThrowCount", label = "Avg. Traps per Throw", fmt = ".2f"}, { stat = "MineThrowCount", label = "Avg. Mines per Throw", fmt = ".2f"}, { stat = "TotemPlacementTime", label = "Totem Placement Time", fmt = ".2fs", compPercent = true, lowerIsBetter = true, condFunc = function(v,o) return not o.TriggerTime end }, - { stat = "PreEffectiveCritChance", label = "Crit Chance", fmt = ".2f%%" }, - { stat = "CritChance", label = "Effective Crit Chance", fmt = ".2f%%", condFunc = function(v,o) return v ~= o.PreEffectiveCritChance end }, + { stat = "PreEffectiveCritChance", label = "Crit Chance", fmt = ".2f%%", flag = "hit" }, + { stat = "CritChance", label = "Effective Crit Chance", fmt = ".2f%%", flag = "hit", condFunc = function(v,o) return v ~= o.PreEffectiveCritChance end }, { stat = "CritMultiplier", label = "Crit Multiplier", fmt = "d%%", pc = true, condFunc = function(v,o) return (o.CritChance or 0) > 0 end }, { stat = "HitChance", label = "Hit Chance", fmt = ".0f%%", flag = "attack" }, { stat = "HitChance", label = "Hit Chance", fmt = ".0f%%", condFunc = function(v,o) return o.enemyHasSpellBlock end }, diff --git a/src/Modules/CalcActiveSkill.lua b/src/Modules/CalcActiveSkill.lua index 33133057f5..251d2f9661 100644 --- a/src/Modules/CalcActiveSkill.lua +++ b/src/Modules/CalcActiveSkill.lua @@ -279,7 +279,7 @@ function calcs.buildActiveSkillModList(env, activeSkill) weapon1Flags, weapon1Info = ModFlag[env.data.weaponTypeInfo["None"].flag], env.data.weaponTypeInfo["None"] end if weapon1Flags then - if skillFlags.attack then + if skillFlags.attack or skillFlags.dotFromAttack then activeSkill.weapon1Flags = weapon1Flags skillFlags.weapon1Attack = true if weapon1Info.melee and skillFlags.melee then @@ -296,7 +296,7 @@ function calcs.buildActiveSkillModList(env, activeSkill) if not skillTypes[SkillType.MainHandOnly] and not skillFlags.forceMainHand then local weapon2Flags, weapon2Info = getWeaponFlags(env, activeSkill.actor.weaponData2, weaponTypes) if weapon2Flags then - if skillFlags.attack then + if skillFlags.attack or skillFlags.dotFromAttack then activeSkill.weapon2Flags = weapon2Flags skillFlags.weapon2Attack = true end From 46aea1ca1350e2bef5127d212d1279c28123edfe Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Tue, 3 Sep 2024 11:33:29 +1000 Subject: [PATCH 2/2] Fix DoT Multi mod not working correctly --- src/Modules/ModParser.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 771331ee9d..0bd687cfbf 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -855,7 +855,7 @@ local modFlagList = { ["to unarmed attacks"] = { flags = bor(ModFlag.Unarmed, ModFlag.Hit) }, ["to unarmed melee hits"] = { flags = bor(ModFlag.Unarmed, ModFlag.Melee, ModFlag.Hit) }, ["with melee weapons"] = { flags = ModFlag.WeaponMelee }, - ["with melee weapon attacks"] = { flags = bor(ModFlag.WeaponMelee, ModFlag.Hit) }, + ["with melee weapon attacks"] = { flags = ModFlag.WeaponMelee }, --Tincture mod doesn't care about it being a Hit ["from melee weapons"] = { flags = ModFlag.WeaponMelee }, ["from melee weapon attacks"] = { flags = bor(ModFlag.WeaponMelee, ModFlag.Hit) }, ["melee weapon"] = { flags = ModFlag.WeaponMelee },