From c5360b70493e98fccfddbaf46fb60c4e11aed410 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Sat, 20 Dec 2025 16:27:10 +0100 Subject: [PATCH 1/5] Witchhunter - No Mercy --- src/Data/ModCache.lua | 2 +- src/Modules/ConfigOptions.lua | 5 +++++ src/Modules/ModParser.lua | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index bea812bcb..182044314 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -4697,7 +4697,7 @@ c["Deal 30% of Overkill damage to enemies within 2 metres of the enemy killed"]= c["Deal 4% increased Damage with Hits to Rare or Unique Enemies for each second they've ever been in your Presence, up to a maximum of 200%"]={{[1]={[1]={actor="enemy",limit=200,limitTotal=true,type="Multiplier",var="EnemyPresenceSeconds"},[2]={actor="enemy",type="ActorCondition",var="RareOrUnique"},flags=0,keywordFlags=262144,name="Damage",type="INC",value=4}},nil} c["Deal no Elemental Damage"]={{[1]={flags=0,keywordFlags=0,name="DealNoLightning",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="DealNoCold",type="FLAG",value=true},[3]={flags=0,keywordFlags=0,name="DealNoFire",type="FLAG",value=true}},nil} c["Deal no Non-Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="DealNoPhysical",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="DealNoLightning",type="FLAG",value=true},[3]={flags=0,keywordFlags=0,name="DealNoCold",type="FLAG",value=true},[4]={flags=0,keywordFlags=0,name="DealNoChaos",type="FLAG",value=true}},nil} -c["Deal up to 40% more Damage to Enemies based on their missing Concentration"]={nil,"up to 40% more Damage to Enemies based on their missing Concentration "} +c["Deal up to 40% more Damage to Enemies based on their missing Concentration"]={{[1]={[1]={type="Condition",var="EnemyNoConcentration"},flags=0,keywordFlags=0,name="Damage",type="MORE",value=40},[2]={flags=0,keywordFlags=0,name="EnemyConcentration",type="FLAG",value=true}},nil} c["Deal your Thorns Damage to Enemies you Stun with Melee Attacks"]={nil,"your Thorns Damage to Enemies you Stun with Melee Attacks "} c["Deal your Thorns Damage to Enemies you Stun with Melee Attacks 35 to 53 Physical Thorns damage"]={nil,"your Thorns Damage to Enemies you Stun with Melee Attacks 35 to 53 Physical Thorns damage "} c["Deals 25% of current Mana as Chaos Damage to you when Effect ends"]={nil,"Deals 25% of current Mana as Chaos Damage to you when Effect ends "} diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index f48539bbe..b042c849b 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1822,6 +1822,11 @@ Huge sets the radius to 11. { var = "conditionEnemyCoveredInFrost", type = "check", label = "Is the enemy covered in Frost?", tooltip = "Covered in Frost applies the following to the enemy:\n\t20% increased ^x3F6DB3Cold ^7Damage taken\n\t50% less Critical Strike Chance", apply = function(val, modList, enemyModList) modList:NewMod("CoveredInFrostEffect", "BASE", 20, "Covered in Frost") end }, + + { var = "conditionEnemyConcentration", type = "check", label = "Is the enemy Concentration 0?", ifFlag ="EnemyConcentration", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:EnemyNoConcentration", "FLAG", true, "Config", { type = "Condition", var = "Effective" } ) + end }, + { var = "conditionEnemyHasOpenWeakness", type = "check", label = "Does enemy have Open Weakness?", ifCond = "EnemyHasOpenWeakness", apply = function(val, modList, enemyModList) -- This one means the enemy you're targeting has open weakness modList:NewMod("Condition:EnemyHasOpenWeakness", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 9c5ca0e15..63893a41e 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -3247,6 +3247,11 @@ local specialModList = { mod("PhysicalMax", "BASE", 1, { type = "PercentStat", stat = "LifeCost", percent = num }, { type = "StatThreshold", stat = "LifeUnreserved", thresholdStat = "LifeCost", thresholdPercent = num }), } end, ["gain maximum life instead of maximum energy shield from equipped armour items"] = { flag("ConvertArmourESToLife") }, + -- Mercenary - Witchhunter + ["deal up to (%d+)%% more damage to enemies based on their missing concentration"] = function(num) return { + mod("Damage", "MORE", num, {type = "Condition", var ="EnemyNoConcentration"}), + flag("EnemyConcentration"), + } end, -- Mercenary - Gemling ["attribute requirements of gems can be satisi?fied by your highest attribute"] = { flag("GemAttributeRequirementsSatisfiedByHighestAttribute") }, ["you can use two copies of the same support gem in different skills"] = { mod("MaxSupportGemCopies", "OVERRIDE", 2) }, From b0f7740f2669b5c4250f4945043dfb1f84975281 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Sat, 20 Dec 2025 16:34:33 +0100 Subject: [PATCH 2/5] Ritualist - Corrupted Lifeforce --- src/Data/ModCache.lua | 3 +-- src/Modules/ConfigOptions.lua | 5 +++-- src/Modules/ModParser.lua | 5 +++++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 182044314..1c1ada5da 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -1569,8 +1569,7 @@ c["15% increased maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type=" c["15% increased maximum Mana"]={{[1]={flags=0,keywordFlags=0,name="Mana",type="INC",value=15}},nil} c["15% less maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type="MORE",value=-15}},nil} c["15% less maximum Mana"]={{[1]={flags=0,keywordFlags=0,name="Mana",type="MORE",value=-15}},nil} -c["15% more Damage against Enemies affected by Blood Boils"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="MORE",value=15}}," against Enemies affected by Blood Boils "} -c["15% more Damage against Enemies affected by Blood Boils Grants Skill: Blood Boil"]={{[1]={[1]={includeTransfigured=true,skillName="Blood Boil",type="SkillName"},flags=0,keywordFlags=0,name="Damage",type="MORE",value=15}}," against Enemies affected by Blood Boils Grants Skill:"} +c["15% more Damage against Enemies affected by Blood Boils"]={{[1]={[1]={type="Condition",var="EnemyAffectedByBloodBoils"},flags=0,keywordFlags=0,name="Damage",type="MORE",value=15},[2]={flags=0,keywordFlags=0,name="EnemyBloodBoils",type="FLAG",value=true}},nil} c["15% more Maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type="MORE",value=15}},nil} c["15% of Damage from Hits is taken from your Damageable Companion's Life before you"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="BASE",value=15}}," from Hits is taken from your Damageable Companion's Life before you "} c["15% of Damage taken Recouped as Life"]={{[1]={flags=0,keywordFlags=0,name="LifeRecoup",type="BASE",value=15}},nil} diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index b042c849b..623fbe8b4 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1822,11 +1822,12 @@ Huge sets the radius to 11. { var = "conditionEnemyCoveredInFrost", type = "check", label = "Is the enemy covered in Frost?", tooltip = "Covered in Frost applies the following to the enemy:\n\t20% increased ^x3F6DB3Cold ^7Damage taken\n\t50% less Critical Strike Chance", apply = function(val, modList, enemyModList) modList:NewMod("CoveredInFrostEffect", "BASE", 20, "Covered in Frost") end }, - { var = "conditionEnemyConcentration", type = "check", label = "Is the enemy Concentration 0?", ifFlag ="EnemyConcentration", apply = function(val, modList, enemyModList) modList:NewMod("Condition:EnemyNoConcentration", "FLAG", true, "Config", { type = "Condition", var = "Effective" } ) end }, - + { var = "conditionEnemyBloodBoils", type = "check", label = "Is the enemy affected by Blood Boils?", ifFlag ="EnemyBloodBoils", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:EnemyAffectedByBloodBoils", "FLAG", true, "Config", { type = "Condition", var = "Effective" } ) + end }, { var = "conditionEnemyHasOpenWeakness", type = "check", label = "Does enemy have Open Weakness?", ifCond = "EnemyHasOpenWeakness", apply = function(val, modList, enemyModList) -- This one means the enemy you're targeting has open weakness modList:NewMod("Condition:EnemyHasOpenWeakness", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 63893a41e..a842b4959 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -3273,6 +3273,11 @@ local specialModList = { mod("ManaCost", "MORE", -count, { type = "Condition", var = "MostNumerousBlueSocketedSupports" }) } end, + -- Huntress - Ritualist + ["(%d+)%% more damage against enemies affected by blood boils"] = function(num) return { + mod("Damage", "MORE", num, {type = "Condition", var = "EnemyAffectedByBloodBoils"}), + flag("EnemyBloodBoils"), + } end, -- Monk - Stormweaver ["targets can be affected by two of your shocks at the same time"] = { flag("ShockCanStack"), mod("ShockStacksMax", "OVERRIDE", 2) }, ["targets can be affected by two of your chills at the same time"] = { flag("ChillCanStack"), mod("ChillStacksMax", "OVERRIDE", 2) }, From 440a76a0209b2061bc41430ac999d2908b49a289 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Tue, 13 Jan 2026 08:54:25 +0100 Subject: [PATCH 3/5] Bloodboil review Node now checks if the enemy is a boss or not. --- src/Data/ModCache.lua | 2 +- src/Modules/ConfigOptions.lua | 3 --- src/Modules/ModParser.lua | 3 +-- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 1c1ada5da..9d2013e99 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -1569,7 +1569,7 @@ c["15% increased maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type=" c["15% increased maximum Mana"]={{[1]={flags=0,keywordFlags=0,name="Mana",type="INC",value=15}},nil} c["15% less maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type="MORE",value=-15}},nil} c["15% less maximum Mana"]={{[1]={flags=0,keywordFlags=0,name="Mana",type="MORE",value=-15}},nil} -c["15% more Damage against Enemies affected by Blood Boils"]={{[1]={[1]={type="Condition",var="EnemyAffectedByBloodBoils"},flags=0,keywordFlags=0,name="Damage",type="MORE",value=15},[2]={flags=0,keywordFlags=0,name="EnemyBloodBoils",type="FLAG",value=true}},nil} +c["15% more Damage against Enemies affected by Blood Boils"]={{[1]={[1]={actor="enemy",neg=true,type="ActorCondition",var="Unique"},flags=0,keywordFlags=0,name="Damage",type="MORE",value=15}},nil} c["15% more Maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type="MORE",value=15}},nil} c["15% of Damage from Hits is taken from your Damageable Companion's Life before you"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="BASE",value=15}}," from Hits is taken from your Damageable Companion's Life before you "} c["15% of Damage taken Recouped as Life"]={{[1]={flags=0,keywordFlags=0,name="LifeRecoup",type="BASE",value=15}},nil} diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 623fbe8b4..3802d9987 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1825,9 +1825,6 @@ Huge sets the radius to 11. { var = "conditionEnemyConcentration", type = "check", label = "Is the enemy Concentration 0?", ifFlag ="EnemyConcentration", apply = function(val, modList, enemyModList) modList:NewMod("Condition:EnemyNoConcentration", "FLAG", true, "Config", { type = "Condition", var = "Effective" } ) end }, - { var = "conditionEnemyBloodBoils", type = "check", label = "Is the enemy affected by Blood Boils?", ifFlag ="EnemyBloodBoils", apply = function(val, modList, enemyModList) - modList:NewMod("Condition:EnemyAffectedByBloodBoils", "FLAG", true, "Config", { type = "Condition", var = "Effective" } ) - end }, { var = "conditionEnemyHasOpenWeakness", type = "check", label = "Does enemy have Open Weakness?", ifCond = "EnemyHasOpenWeakness", apply = function(val, modList, enemyModList) -- This one means the enemy you're targeting has open weakness modList:NewMod("Condition:EnemyHasOpenWeakness", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index a842b4959..2989bfc97 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -3275,8 +3275,7 @@ local specialModList = { -- Huntress - Ritualist ["(%d+)%% more damage against enemies affected by blood boils"] = function(num) return { - mod("Damage", "MORE", num, {type = "Condition", var = "EnemyAffectedByBloodBoils"}), - flag("EnemyBloodBoils"), + mod("Damage", "MORE", num, { type = "ActorCondition", actor = "enemy", var = "Unique", neg = true }), } end, -- Monk - Stormweaver ["targets can be affected by two of your shocks at the same time"] = { flag("ShockCanStack"), mod("ShockStacksMax", "OVERRIDE", 2) }, From d6f4b0ccd2359b83b9a639468ee9cc1bcab16e6c Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Tue, 13 Jan 2026 09:44:11 +0100 Subject: [PATCH 4/5] Concentration review Config is now a counter --- src/Data/ModCache.lua | 2 +- src/Modules/ConfigOptions.lua | 8 ++++++-- src/Modules/ModParser.lua | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 9d2013e99..eeb58dc36 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -4696,7 +4696,7 @@ c["Deal 30% of Overkill damage to enemies within 2 metres of the enemy killed"]= c["Deal 4% increased Damage with Hits to Rare or Unique Enemies for each second they've ever been in your Presence, up to a maximum of 200%"]={{[1]={[1]={actor="enemy",limit=200,limitTotal=true,type="Multiplier",var="EnemyPresenceSeconds"},[2]={actor="enemy",type="ActorCondition",var="RareOrUnique"},flags=0,keywordFlags=262144,name="Damage",type="INC",value=4}},nil} c["Deal no Elemental Damage"]={{[1]={flags=0,keywordFlags=0,name="DealNoLightning",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="DealNoCold",type="FLAG",value=true},[3]={flags=0,keywordFlags=0,name="DealNoFire",type="FLAG",value=true}},nil} c["Deal no Non-Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="DealNoPhysical",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="DealNoLightning",type="FLAG",value=true},[3]={flags=0,keywordFlags=0,name="DealNoCold",type="FLAG",value=true},[4]={flags=0,keywordFlags=0,name="DealNoChaos",type="FLAG",value=true}},nil} -c["Deal up to 40% more Damage to Enemies based on their missing Concentration"]={{[1]={[1]={type="Condition",var="EnemyNoConcentration"},flags=0,keywordFlags=0,name="Damage",type="MORE",value=40},[2]={flags=0,keywordFlags=0,name="EnemyConcentration",type="FLAG",value=true}},nil} +c["Deal up to 40% more Damage to Enemies based on their missing Concentration"]={{[1]={flags=0,keywordFlags=0,name="EnemyConcentration",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="Condition:EnemyConcentration",type="FLAG",value=true}},nil} c["Deal your Thorns Damage to Enemies you Stun with Melee Attacks"]={nil,"your Thorns Damage to Enemies you Stun with Melee Attacks "} c["Deal your Thorns Damage to Enemies you Stun with Melee Attacks 35 to 53 Physical Thorns damage"]={nil,"your Thorns Damage to Enemies you Stun with Melee Attacks 35 to 53 Physical Thorns damage "} c["Deals 25% of current Mana as Chaos Damage to you when Effect ends"]={nil,"Deals 25% of current Mana as Chaos Damage to you when Effect ends "} diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 3802d9987..d3de94aca 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1822,8 +1822,12 @@ Huge sets the radius to 11. { var = "conditionEnemyCoveredInFrost", type = "check", label = "Is the enemy covered in Frost?", tooltip = "Covered in Frost applies the following to the enemy:\n\t20% increased ^x3F6DB3Cold ^7Damage taken\n\t50% less Critical Strike Chance", apply = function(val, modList, enemyModList) modList:NewMod("CoveredInFrostEffect", "BASE", 20, "Covered in Frost") end }, - { var = "conditionEnemyConcentration", type = "check", label = "Is the enemy Concentration 0?", ifFlag ="EnemyConcentration", apply = function(val, modList, enemyModList) - modList:NewMod("Condition:EnemyNoConcentration", "FLAG", true, "Config", { type = "Condition", var = "Effective" } ) + { var = "enemyConcentration", type = "count", label = "% Concentration missing", ifFlag ="EnemyConcentration", defaultState = 50, apply = function(val, modList, enemyModList) + if val < 100 then + modList:NewMod("Damage", "MORE", 40 * val/100, "Tree:46535", { type = "Condition", var = "EnemyConcentration"}) + else + modList:NewMod("Damage", "MORE", 40, "Tree:46535", { type = "Condition", var = "EnemyConcentration"}) + end end }, { var = "conditionEnemyHasOpenWeakness", type = "check", label = "Does enemy have Open Weakness?", ifCond = "EnemyHasOpenWeakness", apply = function(val, modList, enemyModList) -- This one means the enemy you're targeting has open weakness diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 2989bfc97..b88af4444 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -3249,8 +3249,8 @@ local specialModList = { ["gain maximum life instead of maximum energy shield from equipped armour items"] = { flag("ConvertArmourESToLife") }, -- Mercenary - Witchhunter ["deal up to (%d+)%% more damage to enemies based on their missing concentration"] = function(num) return { - mod("Damage", "MORE", num, {type = "Condition", var ="EnemyNoConcentration"}), flag("EnemyConcentration"), + flag("Condition:EnemyConcentration") } end, -- Mercenary - Gemling ["attribute requirements of gems can be satisi?fied by your highest attribute"] = { flag("GemAttributeRequirementsSatisfiedByHighestAttribute") }, From 76f7ad9faa6766496c3e9fc0de7ea4f33befd53f Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Tue, 13 Jan 2026 09:46:27 +0100 Subject: [PATCH 5/5] Update ConfigOptions.lua config wording --- 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 d3de94aca..4b2892c84 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1822,7 +1822,7 @@ Huge sets the radius to 11. { var = "conditionEnemyCoveredInFrost", type = "check", label = "Is the enemy covered in Frost?", tooltip = "Covered in Frost applies the following to the enemy:\n\t20% increased ^x3F6DB3Cold ^7Damage taken\n\t50% less Critical Strike Chance", apply = function(val, modList, enemyModList) modList:NewMod("CoveredInFrostEffect", "BASE", 20, "Covered in Frost") end }, - { var = "enemyConcentration", type = "count", label = "% Concentration missing", ifFlag ="EnemyConcentration", defaultState = 50, apply = function(val, modList, enemyModList) + { var = "enemyConcentration", type = "count", label = "% Enemy Concentration missing", ifFlag ="EnemyConcentration", defaultState = 50, apply = function(val, modList, enemyModList) if val < 100 then modList:NewMod("Damage", "MORE", 40 * val/100, "Tree:46535", { type = "Condition", var = "EnemyConcentration"}) else