From 86fcbdc7c80ab967dc7e9fcc000c7deeaf02582d Mon Sep 17 00:00:00 2001 From: Peechey <92683202+Peechey@users.noreply.github.com> Date: Mon, 11 May 2026 10:45:08 -0500 Subject: [PATCH 1/2] fix corrupted blood config not showing for the supports add ifGemFamily as a conditional for configOptions test --- spec/System/TestSkills_spec.lua | 17 +++++++++++++++++ src/Classes/ConfigTab.lua | 14 +++++++++++++- src/Data/Skills/sup_str.lua | 6 +++--- src/Export/Skills/sup_str.txt | 6 +++--- src/Modules/ConfigOptions.lua | 8 ++++---- 5 files changed, 40 insertions(+), 11 deletions(-) diff --git a/spec/System/TestSkills_spec.lua b/spec/System/TestSkills_spec.lua index f0c02d4f3c..8f73cba6fd 100644 --- a/spec/System/TestSkills_spec.lua +++ b/spec/System/TestSkills_spec.lua @@ -84,4 +84,21 @@ describe("TestSkills", function() local finalCost = build.calcsTab.mainOutput.ManaCost assert.are.equals(16, round(finalCost)) end) + + it("Test corrupted blood config", function() + build.skillsTab:PasteSocketGroup("Seismic Cry 20/0 1\nCorrupting Cry I 1/0 1") + runCallback("OnFrame") + + local baseCorruptingCryDps = build.calcsTab.mainOutput.CorruptingBloodDPS -- placeholder/input is 10 + + build.configTab.input.conditionCorruptingCryStages = 5 + build.configTab:BuildModList() + runCallback("OnFrame") + assert.True(baseCorruptingCryDps > build.calcsTab.mainOutput.CorruptingBloodDPS) + + build.configTab.input.conditionCorruptingCryStages = 100 -- test limit + build.configTab:BuildModList() + runCallback("OnFrame") + assert.True(baseCorruptingCryDps == build.calcsTab.mainOutput.CorruptingBloodDPS) + end) end) \ No newline at end of file diff --git a/src/Classes/ConfigTab.lua b/src/Classes/ConfigTab.lua index 6c229be4dc..bf9a00569d 100644 --- a/src/Classes/ConfigTab.lua +++ b/src/Classes/ConfigTab.lua @@ -81,7 +81,7 @@ local ConfigTabClass = newClass("ConfigTab", "UndoHandler", "ControlHost", "Cont if not self.toggleConfigs then return false end - if varData.ifOption or varData.ifSkill or varData.ifSkillData or varData.ifSkillFlag or varData.legacy then + if varData.ifOption or varData.ifSkill or varData.ifSkillData or varData.ifSkillFlag or varData.ifGemFamily or varData.legacy then return false end for _, keyword in pairs(excludeKeywords) do @@ -527,6 +527,18 @@ local ConfigTabClass = newClass("ConfigTab", "UndoHandler", "ControlHost", "Cont return false end)) end + if varData.ifGemFamily then + t_insert(shownFuncs, listOrSingleIfOption(varData.ifGemFamily, function(ifOption) + for _, activeSkill in ipairs(self.build.calcsTab.mainEnv.player.activeSkillList) do + for _, support in ipairs(activeSkill.supportList) do + if support.gemData and support.gemData.gemFamily == ifOption then + return true + end + end + end + return false + end)) + end if varData.tooltipFunc then control.tooltipFunc = varData.tooltipFunc diff --git a/src/Data/Skills/sup_str.lua b/src/Data/Skills/sup_str.lua index 4e04c7162d..62b60b0790 100644 --- a/src/Data/Skills/sup_str.lua +++ b/src/Data/Skills/sup_str.lua @@ -1662,7 +1662,7 @@ skills["SupportCorruptingCryPlayer"] = { skill("debuff", true), flag("dotIsCorruptingBlood"), mod("Multiplier:CorruptingCryMaxStages", "BASE", 10), - mod("Damage", "MORE", 100, 0, KeywordFlag.PhysicalDot, { type = "Multiplier", var = "CorruptingCryStageAfterFirst"}), + mod("Damage", "MORE", 100, 0, KeywordFlag.PhysicalDot, { type = "Multiplier", var = "CorruptingCryStageAfterFirst", limit = 9}), }, constantStats = { { "support_corrupting_cry_warcry_applies_x_stacks_of_corrupted_blood", 1 }, @@ -1718,7 +1718,7 @@ skills["SupportCorruptingCryPlayerTwo"] = { skill("debuff", true), flag("dotIsCorruptingBlood"), mod("Multiplier:CorruptingCryMaxStages", "BASE", 10), - mod("Damage", "MORE", 100, 0, KeywordFlag.PhysicalDot, { type = "Multiplier", var = "CorruptingCryStageAfterFirst"}), + mod("Damage", "MORE", 100, 0, KeywordFlag.PhysicalDot, { type = "Multiplier", var = "CorruptingCryStageAfterFirst", limit = 9}), }, constantStats = { { "support_corrupting_cry_warcry_applies_x_stacks_of_corrupted_blood", 1 }, @@ -4968,7 +4968,7 @@ skills["SupportCorruptingCryPlayerThree"] = { skill("debuff", true), flag("dotIsCorruptingBlood"), mod("Multiplier:CorruptingCryMaxStages", "BASE", 10), - mod("Damage", "MORE", 100, 0, KeywordFlag.PhysicalDot, { type = "Multiplier", var = "CorruptingCryStageAfterFirst"}), + mod("Damage", "MORE", 100, 0, KeywordFlag.PhysicalDot, { type = "Multiplier", var = "CorruptingCryStageAfterFirst", limit = 9}), }, constantStats = { { "support_corrupting_cry_warcry_applies_x_stacks_of_corrupted_blood", 5 }, diff --git a/src/Export/Skills/sup_str.txt b/src/Export/Skills/sup_str.txt index 9af608efa4..8884c48660 100644 --- a/src/Export/Skills/sup_str.txt +++ b/src/Export/Skills/sup_str.txt @@ -369,7 +369,7 @@ statMap = { #baseMod skill("debuff", true) #baseMod flag("dotIsCorruptingBlood") #baseMod mod("Multiplier:CorruptingCryMaxStages", "BASE", 10) -#baseMod mod("Damage", "MORE", 100, 0, KeywordFlag.PhysicalDot, { type = "Multiplier", var = "CorruptingCryStageAfterFirst"}) +#baseMod mod("Damage", "MORE", 100, 0, KeywordFlag.PhysicalDot, { type = "Multiplier", var = "CorruptingCryStageAfterFirst", limit = 9}) #mods #skillEnd @@ -394,7 +394,7 @@ statMap = { #baseMod skill("debuff", true) #baseMod flag("dotIsCorruptingBlood") #baseMod mod("Multiplier:CorruptingCryMaxStages", "BASE", 10) -#baseMod mod("Damage", "MORE", 100, 0, KeywordFlag.PhysicalDot, { type = "Multiplier", var = "CorruptingCryStageAfterFirst"}) +#baseMod mod("Damage", "MORE", 100, 0, KeywordFlag.PhysicalDot, { type = "Multiplier", var = "CorruptingCryStageAfterFirst", limit = 9}) #mods #skillEnd @@ -1160,7 +1160,7 @@ statMap = { #baseMod skill("debuff", true) #baseMod flag("dotIsCorruptingBlood") #baseMod mod("Multiplier:CorruptingCryMaxStages", "BASE", 10) -#baseMod mod("Damage", "MORE", 100, 0, KeywordFlag.PhysicalDot, { type = "Multiplier", var = "CorruptingCryStageAfterFirst"}) +#baseMod mod("Damage", "MORE", 100, 0, KeywordFlag.PhysicalDot, { type = "Multiplier", var = "CorruptingCryStageAfterFirst", limit = 9}) #mods #skillEnd diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 721a758769..73977501c6 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -317,11 +317,11 @@ local configSettings = { { var = "conditionShockConsumed", type = "check", label = "Consumed Shock", ifSkill = "Elemental Discharge", apply = function(val, modList, enemyModList) modList:NewMod("Condition:ShockConsumed", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) end }, - { label = "Corrupting Cry:", ifSkill = "Corrupting Cry" }, - { var = "conditionCorruptingCryStages", type = "count", label = "# of Corrupting Cry stacks on enemy", ifSkill = "Corrupting Cry", defaultState = 1, apply = function(val, modList, enemyModList) - -- 10 is the maximum amount of Corrupting Blood Stages. modList does not contain skill base mods at this point so hard coding it here is the cleanest way to handle the cap. + { label = "Corrupting Cry:", ifGemFamily = "Corrupting Cry" }, + { var = "conditionCorruptingCryStages", type = "count", label = "# of Corrupting Cry stacks", ifGemFamily = "Corrupting Cry", defaultPlaceholderState = 10, apply = function(val, modList, enemyModList) -- It's set to 9 here with val -1 to so that it defaults to 1 stage and has max 10 stages. - modList:NewMod("Multiplier:CorruptingCryStageAfterFirst", "BASE", m_min(val-1, 9), "Config", { type = "Condition", var = "Effective" }) + -- set limit in skill multiplier for max stages + modList:NewMod("Multiplier:CorruptingCryStageAfterFirst", "BASE", val-1, "Config", { type = "Condition", var = "Effective" }) end }, { label = "Cruelty:", ifSkill = "Cruelty" }, { var = "overrideCruelty", type = "count", label = "Damage % (if not maximum):", ifSkill = "Cruelty", tooltip = "Cruelty is a buff provided by Cruelty Support which grants\nup to 40% more damage over time to the skills it supports.", apply = function(val, modList, enemyModList) From 2123559f5f088e265dc0fc1a9a83e9bdd948a804 Mon Sep 17 00:00:00 2001 From: Peechey <92683202+Peechey@users.noreply.github.com> Date: Mon, 11 May 2026 11:00:26 -0500 Subject: [PATCH 2/2] update label to corrupted blood --- src/Modules/ConfigOptions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 73977501c6..66ed79e4df 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -318,7 +318,7 @@ local configSettings = { modList:NewMod("Condition:ShockConsumed", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) end }, { label = "Corrupting Cry:", ifGemFamily = "Corrupting Cry" }, - { var = "conditionCorruptingCryStages", type = "count", label = "# of Corrupting Cry stacks", ifGemFamily = "Corrupting Cry", defaultPlaceholderState = 10, apply = function(val, modList, enemyModList) + { var = "conditionCorruptingCryStages", type = "count", label = "# of Corrupted Blood stacks:", ifGemFamily = "Corrupting Cry", defaultPlaceholderState = 10, apply = function(val, modList, enemyModList) -- It's set to 9 here with val -1 to so that it defaults to 1 stage and has max 10 stages. -- set limit in skill multiplier for max stages modList:NewMod("Multiplier:CorruptingCryStageAfterFirst", "BASE", val-1, "Config", { type = "Condition", var = "Effective" })