From 513847e48c22bb6f58658ffd413395cbcba29a83 Mon Sep 17 00:00:00 2001 From: majochem <77203255+majochem@users.noreply.github.com> Date: Mon, 1 Sep 2025 16:19:59 +0200 Subject: [PATCH] Update mod parsing for "+X% of Armour applies..." New passive tree nodes were introduced and wording on some of the existing mods was changed. to now include a "+" or "also" --- src/Data/ModCache.lua | 26 ++++++++++++-------------- src/Modules/ModParser.lua | 6 ++++-- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 0198537b42..1bcf7d48ab 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -145,9 +145,9 @@ c["+10 to Strength and Dexterity"]={{[1]={flags=0,keywordFlags=0,name="Str",type c["+10 to all Attributes"]={{[1]={flags=0,keywordFlags=0,name="Str",type="BASE",value=10},[2]={flags=0,keywordFlags=0,name="Dex",type="BASE",value=10},[3]={flags=0,keywordFlags=0,name="Int",type="BASE",value=10},[4]={flags=0,keywordFlags=0,name="All",type="BASE",value=10}},nil} c["+10 to maximum Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EnergyShield",type="BASE",value=10}},nil} c["+10 to maximum Mana"]={{[1]={flags=0,keywordFlags=0,name="Mana",type="BASE",value=10}},nil} -c["+10% of Armour also applies to Cold Damage"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="BASE",value=10}}," also applies to Cold Damage "} -c["+10% of Armour also applies to Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="BASE",value=10}}," also applies to Fire Damage "} -c["+10% of Armour also applies to Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="BASE",value=10}}," also applies to Lightning Damage "} +c["+10% of Armour also applies to Cold Damage"]={{[1]={flags=0,keywordFlags=0,name="ArmourAppliesToColdDamageTaken",type="BASE",value=10}},nil} +c["+10% of Armour also applies to Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="ArmourAppliesToFireDamageTaken",type="BASE",value=10}},nil} +c["+10% of Armour also applies to Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="ArmourAppliesToLightningDamageTaken",type="BASE",value=10}},nil} c["+10% to Block chance"]={{[1]={flags=0,keywordFlags=0,name="BlockChance",type="BASE",value=10}},nil} c["+10% to Chaos Resistance"]={{[1]={flags=0,keywordFlags=0,name="ChaosResist",type="BASE",value=10}},nil} c["+10% to Chaos Resistance per Socket filled"]={{[1]={[1]={type="Multiplier",var="RunesSocketedIn{SlotName}"},flags=0,keywordFlags=0,name="ChaosResist",type="BASE",value=10}},nil} @@ -214,10 +214,10 @@ c["+15 to all Attributes"]={{[1]={flags=0,keywordFlags=0,name="Str",type="BASE", c["+15 to maximum Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EnergyShield",type="BASE",value=15}},nil} c["+15 to maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type="BASE",value=15}},nil} c["+15 to maximum Mana"]={{[1]={flags=0,keywordFlags=0,name="Mana",type="BASE",value=15}},nil} -c["+15% of Armour also applies to Cold Damage"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="BASE",value=15}}," also applies to Cold Damage "} -c["+15% of Armour also applies to Elemental Damage"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="BASE",value=15}}," also applies to Elemental Damage "} -c["+15% of Armour also applies to Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="BASE",value=15}}," also applies to Fire Damage "} -c["+15% of Armour also applies to Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="BASE",value=15}}," also applies to Lightning Damage "} +c["+15% of Armour also applies to Cold Damage"]={{[1]={flags=0,keywordFlags=0,name="ArmourAppliesToColdDamageTaken",type="BASE",value=15}},nil} +c["+15% of Armour also applies to Elemental Damage"]={{[1]={flags=0,keywordFlags=0,name="ArmourAppliesToFireDamageTaken",type="BASE",value=15},[2]={flags=0,keywordFlags=0,name="ArmourAppliesToColdDamageTaken",type="BASE",value=15},[3]={flags=0,keywordFlags=0,name="ArmourAppliesToLightningDamageTaken",type="BASE",value=15}},nil} +c["+15% of Armour also applies to Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="ArmourAppliesToFireDamageTaken",type="BASE",value=15}},nil} +c["+15% of Armour also applies to Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="ArmourAppliesToLightningDamageTaken",type="BASE",value=15}},nil} c["+15% to Block chance"]={{[1]={flags=0,keywordFlags=0,name="BlockChance",type="BASE",value=15}},nil} c["+15% to Chaos Resistance"]={{[1]={flags=0,keywordFlags=0,name="ChaosResist",type="BASE",value=15}},nil} c["+15% to Cold Resistance"]={{[1]={flags=0,keywordFlags=0,name="ColdResist",type="BASE",value=15}},nil} @@ -642,12 +642,10 @@ c["+30 to maximum Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EnergyShie c["+30 to maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type="BASE",value=30}},nil} c["+30 to maximum Mana"]={{[1]={flags=0,keywordFlags=0,name="Mana",type="BASE",value=30}},nil} c["+30 to maximum Mana per Socket filled"]={{[1]={[1]={type="Multiplier",var="RunesSocketedIn{SlotName}"},flags=0,keywordFlags=0,name="Mana",type="BASE",value=30}},nil} -c["+30% of Armour also applies to Cold Damage"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="BASE",value=30}}," also applies to Cold Damage "} -c["+30% of Armour also applies to Elemental Damage"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="BASE",value=30}}," also applies to Elemental Damage "} -c["+30% of Armour also applies to Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="BASE",value=30}}," also applies to Fire Damage "} -c["+30% of Armour also applies to Fire Damage 30% reduced Magnitude of Ignite on you"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="BASE",value=30}}," also applies to Fire Damage 30% reduced Magnitude of Ignite on you "} -c["+30% of Armour also applies to Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="BASE",value=30}}," also applies to Lightning Damage "} -c["+30% of Armour also applies to Lightning Damage 30% reduced effect of Shock on you"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="BASE",value=30}}," also applies to Lightning Damage 30% reduced effect of Shock on you "} +c["+30% of Armour also applies to Cold Damage"]={{[1]={flags=0,keywordFlags=0,name="ArmourAppliesToColdDamageTaken",type="BASE",value=30}},nil} +c["+30% of Armour also applies to Elemental Damage"]={{[1]={flags=0,keywordFlags=0,name="ArmourAppliesToFireDamageTaken",type="BASE",value=30},[2]={flags=0,keywordFlags=0,name="ArmourAppliesToColdDamageTaken",type="BASE",value=30},[3]={flags=0,keywordFlags=0,name="ArmourAppliesToLightningDamageTaken",type="BASE",value=30}},nil} +c["+30% of Armour also applies to Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="ArmourAppliesToFireDamageTaken",type="BASE",value=30}},nil} +c["+30% of Armour also applies to Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="ArmourAppliesToLightningDamageTaken",type="BASE",value=30}},nil} c["+30% to Cold Resistance"]={{[1]={flags=0,keywordFlags=0,name="ColdResist",type="BASE",value=30}},nil} c["+30% to Critical Damage Bonus"]={{[1]={flags=0,keywordFlags=0,name="CritMultiplier",type="BASE",value=30}},nil} c["+30% to Fire Resistance"]={{[1]={flags=0,keywordFlags=0,name="FireResist",type="BASE",value=30}},nil} @@ -735,7 +733,7 @@ c["+5 to Strength and Intelligence"]={{[1]={flags=0,keywordFlags=0,name="Str",ty c["+5 to all Attributes"]={{[1]={flags=0,keywordFlags=0,name="Str",type="BASE",value=5},[2]={flags=0,keywordFlags=0,name="Dex",type="BASE",value=5},[3]={flags=0,keywordFlags=0,name="Int",type="BASE",value=5},[4]={flags=0,keywordFlags=0,name="All",type="BASE",value=5}},nil} c["+5 to any Attribute"]={{},nil} c["+5 to maximum Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EnergyShield",type="BASE",value=5}},nil} -c["+5% of Armour also applies to Elemental Damage"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="BASE",value=5}}," also applies to Elemental Damage "} +c["+5% of Armour also applies to Elemental Damage"]={{[1]={flags=0,keywordFlags=0,name="ArmourAppliesToFireDamageTaken",type="BASE",value=5},[2]={flags=0,keywordFlags=0,name="ArmourAppliesToColdDamageTaken",type="BASE",value=5},[3]={flags=0,keywordFlags=0,name="ArmourAppliesToLightningDamageTaken",type="BASE",value=5}},nil} c["+5% to Block chance"]={{[1]={flags=0,keywordFlags=0,name="BlockChance",type="BASE",value=5}},nil} c["+5% to Chaos Resistance"]={{[1]={flags=0,keywordFlags=0,name="ChaosResist",type="BASE",value=5}},nil} c["+5% to Cold Resistance"]={{[1]={flags=0,keywordFlags=0,name="ColdResist",type="BASE",value=5}},nil} diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 96f6fb445a..8f312996c6 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2338,13 +2338,15 @@ local specialModList = { mod("ArmourAppliesToColdDamageTaken", "BASE", 100), mod("ArmourAppliesToLightningDamageTaken", "BASE", 100), }, - ["(%d+)%% of armour applies to elemental damage"] = function(num) return { + ["%+?(%d+)%% of armour (a?l?s?o? ?)applies to elemental damage"] = function(num) return { mod("ArmourAppliesToFireDamageTaken", "BASE", num), mod("ArmourAppliesToColdDamageTaken", "BASE", num), mod("ArmourAppliesToLightningDamageTaken", "BASE", num), } end, ["armour also applies to (%a+) damage taken from hits"] = function(_, dmgType) return { mod("ArmourAppliesTo"..firstToUpper(dmgType).."DamageTaken", "BASE", 100) } end, - ["(%d+)%% of armour also applies to (%a+) damage taken from hits"] = function(num, _, dmgType) return { mod("ArmourAppliesTo"..firstToUpper(dmgType).."DamageTaken", "BASE", num) } end, + ["armour also applies to (%a+) damage"] = function(_, dmgType) return { mod("ArmourAppliesTo"..firstToUpper(dmgType).."DamageTaken", "BASE", 100) } end, + ["%+?(%d+)%% of armour also applies to (%a+) damage taken from hits"] = function(num, _, dmgType) return { mod("ArmourAppliesTo"..firstToUpper(dmgType).."DamageTaken", "BASE", num) } end, + ["%+?(%d+)%% of armour also applies to (%a+) damage"] = function(num, _, dmgType) return { mod("ArmourAppliesTo"..firstToUpper(dmgType).."DamageTaken", "BASE", num) } end, ["maximum damage reduction for any damage type is (%d+)%%"] = function(num) return { mod("DamageReductionMax", "MAX", num) } end, ["maximum (%a+) damage reduction is (%d+)%%"] = function(_, dmgType, numStr) return { mod(firstToUpper(dmgType) .. "DamageReductionMax", "MAX", tonumber(numStr)) } end, ["gain additional elemental damage reduction equal to half your chaos resistance"] = {