From 37783348578b97a769afa2f5b3a7cd11dd139cb8 Mon Sep 17 00:00:00 2001 From: Wires77 Date: Thu, 6 Aug 2026 16:07:15 -0500 Subject: [PATCH 1/2] Fixes #10157: Fix Scornful Herald not counting buffs as affecting you --- spec/System/TestSkills_spec.lua | 15 +++++++++++++++ src/Modules/CalcPerform.lua | 5 ++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/spec/System/TestSkills_spec.lua b/spec/System/TestSkills_spec.lua index 23b6b864ec..af8896f64c 100644 --- a/spec/System/TestSkills_spec.lua +++ b/spec/System/TestSkills_spec.lua @@ -151,6 +151,21 @@ describe("TestSkills", function() assert.True(preAdrenalineMaxStages < build.calcsTab.mainEnv.player.activeSkillList[1].skillModList:Sum("BASE", nil, "Multiplier:BlightMaxStages")) end) + it("calculates added resistance from heralds even when using scornful herald", function() + build.skillsTab:PasteSocketGroup("Cyclone 20/0 1\n") + build.skillsTab:PasteSocketGroup("Herald of Thunder 20/0 1\nScornful Herald 20/0 1\n") + build.itemsTab:CreateDisplayItemFromRaw([[Circle of Regret + Topaz Ring + {tags:resistance}+(50-60)% to Lightning Resistance while affected by Herald of Thunder + ]]) + build.itemsTab:AddDisplayItem() + + runCallback("OnFrame") + + assert.are.equals(0, build.calcsTab.mainEnv.player.modDB:Sum("BASE", nil, "LightningMin")) + assert.are.equals(-5, build.calcsTab.mainEnv.player.modDB:Sum("BASE", nil, "LightningResist")) + end) + it("calculates Wintertide Brand average damage for attached brands and Wintertide's End", function() local function getAverageDamageMultiplier() for _, mod in ipairs(build.calcsTab.mainEnv.player.mainSkill.skillModList) do diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 6fb9a2f984..904a585971 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -2263,7 +2263,7 @@ function calcs.perform(env, skipEHP) -- Also nothing :/ elseif buff.type == "GlobalDB" then modDB:AddList(buff.modList) -- Allows a skill mod to affect other skills through modDB - elseif buff.type == "Buff" and not skillModList:Flag(skillCfg, "DisableBuff") then + elseif buff.type == "Buff" then if env.mode_buffs and (not activeSkill.skillFlags.totem or buff.allowTotemBuff) then local skillCfg = buff.activeSkillBuff and skillCfg local modStore = buff.activeSkillBuff and skillModList or modDB @@ -2273,6 +2273,9 @@ function calcs.perform(env, skipEHP) local srcList = new("ModList") local inc = modStore:Sum("INC", skillCfg, "BuffEffect", "BuffEffectOnSelf", "BuffEffectOnPlayer") + skillModList:Sum("INC", skillCfg, buff.name:gsub(" ", "").."Effect") local more = modStore:More(skillCfg, "BuffEffect", "BuffEffectOnSelf") + if skillModList:Flag(skillCfg, "DisableBuff") then + more = 0 + end srcList:ScaleAddList(buff.modList, (1 + inc / 100) * more) mergeBuff(srcList, buffs, buff.name) if activeSkill.skillData.thisIsNotABuff then From 77ae6114d85047464617d38b71f239b4be8e1fef Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Fri, 7 Aug 2026 23:52:47 +1000 Subject: [PATCH 2/2] Simpler fix of making it have 100% less buff effect Made it use less buff effect instead so it would show up in a breakdown if we made one in the future --- src/Data/Skills/sup_int.lua | 3 ++- src/Export/Skills/sup_int.txt | 3 ++- src/Modules/CalcPerform.lua | 3 --- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Data/Skills/sup_int.lua b/src/Data/Skills/sup_int.lua index 1d1a3ad039..aedbe089e8 100644 --- a/src/Data/Skills/sup_int.lua +++ b/src/Data/Skills/sup_int.lua @@ -5968,7 +5968,8 @@ skills["SupportScornfulHerald"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["herald_no_buff_effect"] = { - flag("DisableBuff", { type = "SkillType", skillType = SkillType.Herald }), + mod("BuffEffect", "MORE", nil, 0, 0, { type = "SkillType", skillType = SkillType.Herald }), + value = -100, }, }, qualityStats = { diff --git a/src/Export/Skills/sup_int.txt b/src/Export/Skills/sup_int.txt index f69e71fd77..f2c4c31028 100644 --- a/src/Export/Skills/sup_int.txt +++ b/src/Export/Skills/sup_int.txt @@ -828,7 +828,8 @@ local skills, mod, flag, skill = ... #skill SupportScornfulHerald statMap = { ["herald_no_buff_effect"] = { - flag("DisableBuff", { type = "SkillType", skillType = SkillType.Herald }), + mod("BuffEffect", "MORE", nil, 0, 0, { type = "SkillType", skillType = SkillType.Herald }), + value = -100, }, }, #mods diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 904a585971..65b8a15b3e 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -2273,9 +2273,6 @@ function calcs.perform(env, skipEHP) local srcList = new("ModList") local inc = modStore:Sum("INC", skillCfg, "BuffEffect", "BuffEffectOnSelf", "BuffEffectOnPlayer") + skillModList:Sum("INC", skillCfg, buff.name:gsub(" ", "").."Effect") local more = modStore:More(skillCfg, "BuffEffect", "BuffEffectOnSelf") - if skillModList:Flag(skillCfg, "DisableBuff") then - more = 0 - end srcList:ScaleAddList(buff.modList, (1 + inc / 100) * more) mergeBuff(srcList, buffs, buff.name) if activeSkill.skillData.thisIsNotABuff then