From 5667a34b9603287e4e15237346bc3c0f61590860 Mon Sep 17 00:00:00 2001 From: LocalIdentity <31035929+LocalIdentity@users.noreply.github.com> Date: Tue, 3 Sep 2024 22:00:09 +1000 Subject: [PATCH] Fix Frost Blades of Katabasis DoT not scaling with Tinctures and Multistrike (#8281) * 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 * Fix DoT Multi mod not working correctly --------- Co-authored-by: LocalIdentity --- src/Data/Skills/act_dex.lua | 2 ++ src/Export/Skills/act_dex.txt | 3 ++- src/Modules/Build.lua | 4 ++-- src/Modules/CalcActiveSkill.lua | 4 ++-- src/Modules/ModParser.lua | 2 +- 5 files changed, 9 insertions(+), 6 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 diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 12087d2b9d..44e316b72c 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 },