From f80e748cee412f7823ccf5d4598ed6323eff1875 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Wed, 17 Dec 2025 23:41:45 +0100 Subject: [PATCH 1/7] added Unwavering Stance --- src/Data/ModCache.lua | 37 ++++++++++++++++++++++--------------- src/Modules/ModParser.lua | 1 + 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 6c5bc04c9..149d68682 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -1147,6 +1147,7 @@ c["10% increased maximum Energy Shield if you've consumed a Power Charge Recentl c["10% increased maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type="INC",value=10}},nil} c["10% increased maximum Mana"]={{[1]={flags=0,keywordFlags=0,name="Mana",type="INC",value=10}},nil} c["10% increased total Power counted by Warcries"]={{[1]={flags=0,keywordFlags=0,name="WarcryPower",type="INC",value=10}},nil} +c["10% less Damage taken of each Elemental Damage Type per matching Adaptation"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=-10}}," of each Elemental Damage Type per matching Adaptation "} c["10% less Elemental Damage taken"]={{[1]={flags=0,keywordFlags=0,name="ElementalDamageTaken",type="MORE",value=-10}},nil} c["10% less Movement and Skill Speed per Dodge Roll in the past 20 seconds"]={{[1]={flags=0,keywordFlags=0,name="Speed",type="MORE",value=-10},[2]={flags=0,keywordFlags=0,name="WarcrySpeed",type="MORE",value=-10},[3]={flags=0,keywordFlags=0,name="TotemPlacementSpeed",type="MORE",value=-10}}," Movement and per Dodge Roll in the past 20 seconds "} c["10% more Maximum Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="MaxLightningDamage",type="MORE",value=10}},nil} @@ -3317,7 +3318,7 @@ c["Abyssal Wasting you inflict has Infinite Duration"]={nil,"Abyssal Wasting you c["Abyssal Wasting you inflict has Infinite Duration Abyssal Wasting also applies % to Fire Resistance"]={nil,"Abyssal Wasting you inflict has Infinite Duration Abyssal Wasting also applies % to Fire Resistance "} c["Accuracy Rating is Doubled"]={{[1]={[1]={globalLimit=100,globalLimitKey="AccuracyDoubledLimit",type="Multiplier",var="AccuracyDoubled"},flags=0,keywordFlags=0,name="Accuracy",type="MORE",value=100},[2]={flags=0,keywordFlags=0,name="Multiplier:AccuracyDoubled",type="OVERRIDE",value=1}},nil} c["Adapt to the highest Elemental Damage Type of each Hit you take"]={nil,"Adapt to the highest Elemental Damage Type of each Hit you take "} -c["Adapt to the highest Elemental Damage Type of each Hit you take Each Adaptation grants 10% less Damage taken of that Adaptation's type"]={nil,"Adapt to the highest Elemental Damage Type of each Hit you take Each Adaptation grants 10% less Damage taken of that Adaptation's type "} +c["Adapt to the highest Elemental Damage Type of each Hit you take 10% less Damage taken of each Elemental Damage Type per matching Adaptation"]={nil,"Adapt to the highest Elemental Damage Type of each Hit you take 10% less Damage taken of each Elemental Damage Type per matching Adaptation "} c["Adaptations have a duration of 5 seconds"]={nil,"Adaptations have a duration of 5 seconds "} c["Adaptations have a duration of 5 seconds Double Adaptation Effect"]={{[1]={[1]={globalLimit=100,globalLimitKey="DurationDoubledLimit",type="Multiplier",var="DurationDoubled"},flags=0,keywordFlags=0,name="Duration",type="MORE",value=100},[2]={flags=0,keywordFlags=0,name="Multiplier:DurationDoubled",type="OVERRIDE",value=1}},"Adaptations have a of 5 seconds Adaptation Effect "} c["Adds 1 to 10 Lightning Damage to Attacks per 20 Intelligence"]={{[1]={[1]={div=20,stat="Int",type="PerStat"},flags=0,keywordFlags=65536,name="LightningMin",type="BASE",value=1},[2]={[1]={div=20,stat="Int",type="PerStat"},flags=0,keywordFlags=65536,name="LightningMax",type="BASE",value=10}},nil} @@ -4536,8 +4537,7 @@ c["Cannot be Critically Hit while Parrying"]={nil,"Cannot be Critically Hit whil c["Cannot be Heavy Stunned while Sprinting"]={nil,"Cannot be Heavy Stunned while Sprinting "} c["Cannot be Heavy Stunned while Sprinting 50% less Movement Speed Penalty from using Skills while moving"]={nil,"Cannot be Heavy Stunned while Sprinting 50% less Movement Speed Penalty from using Skills while moving "} c["Cannot be Ignited"]={{[1]={flags=0,keywordFlags=0,name="IgniteImmune",type="FLAG",value=true}},nil} -c["Cannot be Light Stunned"]={nil,"Cannot be Light Stunned "} -c["Cannot be Light Stunned Cannot Dodge Roll or Sprint"]={nil,"Cannot be Light Stunned Cannot Dodge Roll or Sprint "} +c["Cannot be Light Stunned"]={{[1]={flags=0,keywordFlags=0,name="StunImmune",type="FLAG",value=true}},nil} c["Cannot be Light Stunned if you haven't been Hit Recently"]={nil,"Cannot be Light Stunned if you haven't been Hit Recently "} c["Cannot be Poisoned"]={{[1]={flags=0,keywordFlags=0,name="PoisonImmune",type="FLAG",value=true}},nil} c["Cannot be Shocked"]={{[1]={flags=0,keywordFlags=0,name="ShockImmune",type="FLAG",value=true}},nil} @@ -4609,12 +4609,12 @@ c["Consuming Glory grants you 3% increased Attack damage per Glory consumed for c["Converts all Energy Shield to Mana"]={{[1]={flags=0,keywordFlags=0,name="EnergyShieldConvertToMana",type="BASE",value=100}},nil} c["Converts all Evasion Rating to Armour"]={{[1]={flags=0,keywordFlags=0,name="IronReflexes",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="EvasionConvertToArmour",type="BASE",value=100}},nil} c["Corrupted Blood cannot be inflicted on you"]={{[1]={flags=0,keywordFlags=0,name="CorruptedBloodImmune",type="FLAG",value=true}},nil} -c["Create Cold Infusion Remnants instead of Fire Infusion Remnants"]={nil,"Create Cold Infusion Remnants instead of Fire Infusion Remnants "} -c["Create Cold Infusion Remnants instead of Fire Infusion Remnants Create Fire Infusion Remnants instead of Lightning Infusion Remnants"]={nil,"Create Cold Infusion Remnants instead of Fire Infusion Remnants Create Fire Infusion Remnants instead of Lightning Infusion Remnants "} -c["Create Cold Infusion Remnants instead of Fire Infusion Remnants Create Fire Infusion Remnants instead of Lightning Infusion Remnants Create Lightning Infusion Remnants instead of Cold Infusion Remnants"]={nil,"Create Cold Infusion Remnants instead of Fire Infusion Remnants Create Fire Infusion Remnants instead of Lightning Infusion Remnants Create Lightning Infusion Remnants instead of Cold Infusion Remnants "} -c["Create Fire Infusion Remnants instead of Lightning Infusion Remnants"]={nil,"Create Fire Infusion Remnants instead of Lightning Infusion Remnants "} -c["Create Fire Infusion Remnants instead of Lightning Infusion Remnants Create Lightning Infusion Remnants instead of Cold Infusion Remnants"]={nil,"Create Fire Infusion Remnants instead of Lightning Infusion Remnants Create Lightning Infusion Remnants instead of Cold Infusion Remnants "} -c["Create Lightning Infusion Remnants instead of Cold Infusion Remnants"]={nil,"Create Lightning Infusion Remnants instead of Cold Infusion Remnants "} +c["Create Cold Infusion Remnants instead of Lightning"]={nil,"Create Cold Infusion Remnants instead of Lightning "} +c["Create Cold Infusion Remnants instead of Lightning Create Fire Infusion Remnants instead of Cold"]={nil,"Create Cold Infusion Remnants instead of Lightning Create Fire Infusion Remnants instead of Cold "} +c["Create Fire Infusion Remnants instead of Cold"]={nil,"Create Fire Infusion Remnants instead of Cold "} +c["Create Lightning Infusion Remnants instead of Fire"]={nil,"Create Lightning Infusion Remnants instead of Fire "} +c["Create Lightning Infusion Remnants instead of Fire Create Cold Infusion Remnants instead of Lightning"]={nil,"Create Lightning Infusion Remnants instead of Fire Create Cold Infusion Remnants instead of Lightning "} +c["Create Lightning Infusion Remnants instead of Fire Create Cold Infusion Remnants instead of Lightning Create Fire Infusion Remnants instead of Cold"]={nil,"Create Lightning Infusion Remnants instead of Fire Create Cold Infusion Remnants instead of Lightning Create Fire Infusion Remnants instead of Cold "} c["Creates Consecrated Ground on use"]={{},nil} c["Creates Ignited Ground for 4 seconds when used, Igniting enemies as though dealing Fire damage equal to 500% of your maximum Life"]={nil,"Creates Ignited Ground for 4 seconds when used, Igniting enemies as though dealing Fire damage equal to 500% of your maximum Life "} c["Critical Hits Ignore Enemy Monster Lightning Resistance"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="IgnoreLightningResistance",type="FLAG",value=true}},nil} @@ -4754,7 +4754,6 @@ c["Double the number of your Poisons that targets can be affected by at the same c["Doubles Mana Costs"]={{[1]={flags=0,keywordFlags=0,name="ManaCost",type="MORE",value=100}},nil} c["Drop Ignited Ground while moving, which lasts 8 seconds and Ignites as though dealing Fire Damage equal to 10% of your maximum Life"]={nil,"Drop Ignited Ground while moving, which lasts 8 seconds and Ignites as though dealing Fire Damage equal to 10% of your maximum Life "} c["Drop Shocked Ground while moving, lasting 8 seconds"]={nil,"Drop Shocked Ground while moving, lasting 8 seconds "} -c["Each Adaptation grants 10% less Damage taken of that Adaptation's type"]={nil,"Each Adaptation grants 10% less Damage taken of that Adaptation's type "} c["Each Arrow fired is a Crescendo, Splinter, Reversing, Diamond, Covetous, or Blunt Arrow"]={nil,"Each Arrow fired is a Crescendo, Splinter, Reversing, Diamond, Covetous, or Blunt Arrow "} c["Each Totem applies 2% increased Damage taken to Enemies in their Presence"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={[1]={type="Multiplier",var="TotemsSummoned"},flags=0,keywordFlags=0,name="DamageTaken",type="INC",value=2}}}},nil} c["Effect is not removed when Unreserved Life is Filled"]={nil,"Effect is not removed when Unreserved Life is Filled "} @@ -5154,17 +5153,18 @@ c["Grants Skill: Bleeding Concoction"]={{[1]={flags=0,keywordFlags=0,name="Extra c["Grants Skill: Blood Boil"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="BloodBoilPlayer"}}},nil} c["Grants Skill: Called Shots"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="MetaDeadeyeMarksPlayer"}}},nil} c["Grants Skill: Cast on Block"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="MetaCastOnBlockPlayer"}}},nil} -c["Grants Skill: Command: {0} "]={nil,"Grants Skill: Command: {0} "} c["Grants Skill: Demon Form"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="DemonFormPlayer"}}},nil} c["Grants Skill: Elemental Expression"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="ElementalExpressionTriggeredPlayer"}}},nil} c["Grants Skill: Elemental Storm"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="ElementalStormPlayer"}}},nil} c["Grants Skill: Elemental Surge"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="AmazonTriggerElementalSurgePlayer"}}},nil} c["Grants Skill: Encase in Jade"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="EncaseInJadePlayer"}}},nil} c["Grants Skill: Explosive Concoction"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="ExplosiveConcoctionPlayer"}}},nil} -c["Grants Skill: Fire Spell on Melee Hit"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="MetaCastFireSpellOnHitPlayer"}}},nil} +c["Grants Skill: Fire Spell on Hit"]={nil,nil} c["Grants Skill: Fulminating Concoction"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="FulminatingConcoctionPlayer"}}},nil} c["Grants Skill: Inevitable Agony"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="InevitableAgonyPlayer"}}},nil} c["Grants Skill: Into the Breach"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="IntoTheBreachPlayer"}}},nil} +c["Grants Skill: Kelari's Deception"]={nil,nil} +c["Grants Skill: Kelari's Judgment"]={nil,nil} c["Grants Skill: Kelari's Malediction"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="CorpseBeetlesPlayer"}}},nil} c["Grants Skill: Kelari, the Tainted Sands"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="SummonSandDjinnPlayer"}}},nil} c["Grants Skill: Level 11 Black Powder Blitz"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=11,skillId="BlackPowderBlitzReservationPlayer"}}},nil} @@ -5264,10 +5264,16 @@ c["Grants Skill: Manifest Weapon"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkil c["Grants Skill: Meditate"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="MeditatePlayer"}}},nil} c["Grants Skill: Mirage Deadeye"]={nil,nil} c["Grants Skill: Moment of Vulnerability"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="MomentOfVulnerabilityPlayer"}}},nil} +c["Grants Skill: Navira's Fracturing"]={nil,nil} +c["Grants Skill: Navira's Oasis"]={nil,nil} +c["Grants Skill: Navira's Well"]={nil,nil} c["Grants Skill: Navira, the Last Mirage"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="SummonWaterDjinnPlayer"}}},nil} c["Grants Skill: Parry"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="ParryPlayer"}}},nil} c["Grants Skill: Raise Shield"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="ShieldBlockPlayer"}}},nil} c["Grants Skill: Ritual Sacrifice"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="RitualSacrificePlayer"}}},nil} +c["Grants Skill: Ruzhan's Fury"]={nil,nil} +c["Grants Skill: Ruzhan's Reckoning"]={nil,nil} +c["Grants Skill: Ruzhan's Trap"]={nil,nil} c["Grants Skill: Ruzhan, the Blazing Sword"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="SummonFireDjinnPlayer"}}},nil} c["Grants Skill: Shattering Concoction"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="ShatteringConcoctionPlayer"}}},nil} c["Grants Skill: Sorcery Ward"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="SorceryWardPlayer"}}},nil} @@ -5330,6 +5336,7 @@ c["If you would gain a Charge, Allies in your Presence gain that Charge instead" c["Ignite inflicted with Fire Spells deals Chaos Damage instead of Fire Damage"]={{[1]={[1]={skillType=2,type="SkillType"},[2]={skillType=28,type="SkillType"},flags=0,keywordFlags=0,name="IgniteToChaos",type="FLAG",value=true},[2]={[1]={skillType=2,type="SkillType"},[2]={skillType=28,type="SkillType"},flags=0,keywordFlags=0,name="SkillData",type="LIST",value={key="IgniteToChaos",value=true}}},nil} c["Ignites you cause are reflected back to you"]={nil,"Ignites you cause are reflected back to you "} c["Ignites you cause are reflected back to you 40% reduced Magnitude of Ignite on you"]={nil,"Ignites you cause are reflected back to you 40% reduced Magnitude of Ignite on you "} +c["Ignites you inflict deal Damage 10% faster"]={{[1]={flags=0,keywordFlags=0,name="IgniteFaster",type="INC",value=10}},nil} c["Ignites you inflict deal Damage 15% faster"]={{[1]={flags=0,keywordFlags=0,name="IgniteFaster",type="INC",value=15}},nil} c["Ignites you inflict deal Damage 18% faster"]={{[1]={flags=0,keywordFlags=0,name="IgniteFaster",type="INC",value=18}},nil} c["Ignites you inflict deal Damage 4% faster"]={{[1]={flags=0,keywordFlags=0,name="IgniteFaster",type="INC",value=4}},nil} @@ -5927,10 +5934,10 @@ c["Sacrifice 15% of Life to gain that much Energy Shield when you Cast a Spell"] c["Sacrifice 20% of Mana and they Leech that Mana"]={{[1]={[1]={includeTransfigured=true,skillName="Sacrifice",type="SkillName"},flags=0,keywordFlags=0,name="Mana",type="BASE",value=20}}," and they Leech that Mana "} c["Sacrifice 300 Life to not consume the last bolt when firing"]={{[1]={[1]={includeTransfigured=true,skillName="Sacrifice",type="SkillName"},flags=0,keywordFlags=0,name="Life",type="BASE",value=300}}," to not consume the last bolt when firing "} c["Sacrifice 5% of maximum Energy Shield when you Cast a Spell"]={{[1]={[1]={includeTransfigured=true,skillName="Sacrifice",type="SkillName"},flags=2,keywordFlags=0,name="EnergyShield",type="BASE",value=5}}," when you Cast a "} -c["Sacrifice 5% of maximum Energy Shield when you Cast a Spell Spells for which this Sacrifice was fully made deal 5% more Damage"]={{[1]={[1]={includeTransfigured=true,skillName="Sacrifice",type="SkillName"},flags=2,keywordFlags=0,name="EnergyShield",type="BASE",value=5}}," when you Cast a Spells for which this Sacrifice was fully made deal 5% more Damage "} +c["Sacrifice 5% of maximum Energy Shield when you Cast a Spell Spells for which this Sacrifice was fully made deal 30% more Damage"]={{[1]={[1]={includeTransfigured=true,skillName="Sacrifice",type="SkillName"},flags=2,keywordFlags=0,name="EnergyShield",type="BASE",value=5}}," when you Cast a Spells for which this Sacrifice was fully made deal 30% more Damage "} c["Sacrificing Energy Shield does not interrupt Recharge"]={nil,"Sacrificing Energy Shield does not interrupt Recharge "} c["Sacrificing Energy Shield does not interrupt Recharge Sacrifice 5% of maximum Energy Shield when you Cast a Spell"]={nil,"Sacrificing Energy Shield does not interrupt Recharge Sacrifice 5% of maximum Energy Shield when you Cast a Spell "} -c["Sacrificing Energy Shield does not interrupt Recharge Sacrifice 5% of maximum Energy Shield when you Cast a Spell Spells for which this Sacrifice was fully made deal 5% more Damage"]={nil,"Sacrificing Energy Shield does not interrupt Recharge Sacrifice 5% of maximum Energy Shield when you Cast a Spell Spells for which this Sacrifice was fully made deal 5% more Damage "} +c["Sacrificing Energy Shield does not interrupt Recharge Sacrifice 5% of maximum Energy Shield when you Cast a Spell Spells for which this Sacrifice was fully made deal 30% more Damage"]={nil,"Sacrificing Energy Shield does not interrupt Recharge Sacrifice 5% of maximum Energy Shield when you Cast a Spell Spells for which this Sacrifice was fully made deal 30% more Damage "} c["Shapeshift Skills have 15% increased Skill Effect Duration"]={{[1]={[1]={skillType=156,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=15}},nil} c["Shapeshift Skills have 30% increased Skill Effect Duration"]={{[1]={[1]={skillType=156,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=30}},nil} c["Share Charges with Allies in your Presence"]={nil,"Share Charges with "} @@ -5989,7 +5996,7 @@ c["Spells Gain 5% of Damage as extra Chaos Damage"]={nil,"Spells Gain 5% of Dama c["Spells consume a Power Charge if able to deal 40% more Damage"]={nil,"Spells consume a Power Charge if able to deal 40% more Damage "} c["Spells fire 4 additional Projectiles"]={{[1]={flags=2,keywordFlags=0,name="ProjectileCount",type="BASE",value=4}},nil} c["Spells fire Projectiles in a circle"]={nil,"Projectiles in a circle "} -c["Spells for which this Sacrifice was fully made deal 5% more Damage"]={nil,"Spells for which this Sacrifice was fully made deal 5% more Damage "} +c["Spells for which this Sacrifice was fully made deal 30% more Damage"]={nil,"Spells for which this Sacrifice was fully made deal 30% more Damage "} c["Spells have a 25% chance to inflict Withered for 4 seconds on Hit"]={{}," to inflict Withered "} c["Storm and Plant Spells:"]={nil,"Storm and Plant Spells: "} c["Storm and Plant Spells: deal 50% more damage"]={nil,"Storm and Plant Spells: deal 50% more damage "} diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 798df8c08..c7a599511 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2590,6 +2590,7 @@ local specialModList = { } end, ["brands have (%d+)%% increased area of effect if (%d+)%% of attached duration expired"] = function(num) return { mod("AreaOfEffect", "INC", num, { type = "Condition", var = "BrandLastHalf" }, { type = "SkillType", skillType = SkillType.Brand }) } end, ["corrupted blood cannot be inflicted on you"] = { flag("CorruptedBloodImmune") }, + ["cannot be light stunned"] = {flag("StunImmune")}, ["you cannot be hindered"] = { flag("HinderImmune") }, ["you cannot be maimed"] = { flag("MaimImmune") }, ["you cannot be impaled"] = { flag("ImpaleImmune") }, From e07b4cac9700e0a436333a7af42675b1688ec558 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Wed, 17 Dec 2025 23:53:40 +0100 Subject: [PATCH 2/7] added bulwark with config option --- src/Data/ModCache.lua | 2 +- src/Modules/ConfigOptions.lua | 4 ++++ src/Modules/ModParser.lua | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 149d68682..c1c155ad2 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -6016,7 +6016,7 @@ c["Successfully Parrying a Projectile Hit grants 40% increased Damage to your ne c["Take 100 Chaos damage per second per Endurance Charge"]={{[1]={[1]={type="Multiplier",var="EnduranceCharge"},flags=0,keywordFlags=0,name="ChaosDegen",type="BASE",value=100}},nil} c["Take 100 Fire Damage when you Ignite an Enemy"]={{[1]={flags=0,keywordFlags=0,name="EyeOfInnocenceSelfDamage",type="LIST",value={baseDamage=100,damageType="fire"}}},nil} c["Take 100% of Mana Costs you pay for Skills as Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="ManaCostAsPhysical",type="BASE",value=100}}," s you pay for Skills "} -c["Take 30% less Damage from Hits while Dodge Rolling"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=-30}}," from Hits while Dodge Rolling "} +c["Take 30% less Damage from Hits while Dodge Rolling"]={{[1]={[1]={type="Condition",var="InDodgeRoll"},flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=-30}},nil} c["Take 30% more Damage from Hits"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=30}}," from Hits "} c["Take 30% more Damage from Hits Take 40% less Damage from Hits"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=30}}," from Hits Take 40% less Damage from Hits "} c["Take 30% more Damage over time"]={{[1]={flags=8,keywordFlags=0,name="DamageTaken",type="MORE",value=30}},nil} diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index f48539bbe..f602aa34b 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1209,6 +1209,10 @@ Huge sets the radius to 11. { var = "conditionInfusionConsumedRecently", type = "check", label = "Infusion consumed recently?", apply = function(val, modList, enemyModList) modList:NewMod("Condition:InfusionConsumedRecently", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) end }, + { var = "conditionDodeRolling", type = "check", label = "Are you in dodge roll?", ifCond="InDodgeRoll", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:InDodgeRoll", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "conditionBeenHitRecently", type = "check", label = "Have you been Hit Recently?", ifCond = "BeenHitRecently", apply = function(val, modList, enemyModList) modList:NewMod("Condition:BeenHitRecently", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) end }, diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index c7a599511..2b8fcc71c 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -1118,6 +1118,7 @@ local modFlagList = { ["with command skills"] = { tag = { type = "Condition", var = "CommandableSkill" } }, ["for command skills"] = { tag = { type = "Condition", var = "CommandableSkill" } }, ["while shapeshifted"] = { tag = { type = "SkillType", skillType = SkillType.Shapeshift } }, + ["from hits while dodge rolling"] = { tag = { type = "Condition", var = "InDodgeRoll" } }, ["with plant skills"] = { tag = { type = "SkillType", skillType = SkillType.Plant } }, ["minion"] = { addToMinion = true }, ["zombie"] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Raise Zombie", includeTransfigured = true } }, From 200e4bd93036da07c4dff5683be67e075a9f6e06 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Thu, 18 Dec 2025 16:33:03 +0100 Subject: [PATCH 3/7] fixed bulwark and added interaction wit unwavering stance --- src/Data/ModCache.lua | 2 +- src/Modules/ModParser.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index c1c155ad2..12acebf76 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -6016,7 +6016,7 @@ c["Successfully Parrying a Projectile Hit grants 40% increased Damage to your ne c["Take 100 Chaos damage per second per Endurance Charge"]={{[1]={[1]={type="Multiplier",var="EnduranceCharge"},flags=0,keywordFlags=0,name="ChaosDegen",type="BASE",value=100}},nil} c["Take 100 Fire Damage when you Ignite an Enemy"]={{[1]={flags=0,keywordFlags=0,name="EyeOfInnocenceSelfDamage",type="LIST",value={baseDamage=100,damageType="fire"}}},nil} c["Take 100% of Mana Costs you pay for Skills as Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="ManaCostAsPhysical",type="BASE",value=100}}," s you pay for Skills "} -c["Take 30% less Damage from Hits while Dodge Rolling"]={{[1]={[1]={type="Condition",var="InDodgeRoll"},flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=-30}},nil} +c["Take 30% less Damage from Hits while Dodge Rolling"]={{[1]={[1]={type="Coniditon",var="InDodgeRoll"},[2]={neg=true,type="Condition",var="CannotDodgeRoll"},flags=0,keywordFlags=0,name="DamageTakenWhenHit",type="MORE",value=-30}},nil} c["Take 30% more Damage from Hits"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=30}}," from Hits "} c["Take 30% more Damage from Hits Take 40% less Damage from Hits"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=30}}," from Hits Take 40% less Damage from Hits "} c["Take 30% more Damage over time"]={{[1]={flags=8,keywordFlags=0,name="DamageTaken",type="MORE",value=30}},nil} diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 2b8fcc71c..4e91d1990 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -1118,7 +1118,6 @@ local modFlagList = { ["with command skills"] = { tag = { type = "Condition", var = "CommandableSkill" } }, ["for command skills"] = { tag = { type = "Condition", var = "CommandableSkill" } }, ["while shapeshifted"] = { tag = { type = "SkillType", skillType = SkillType.Shapeshift } }, - ["from hits while dodge rolling"] = { tag = { type = "Condition", var = "InDodgeRoll" } }, ["with plant skills"] = { tag = { type = "SkillType", skillType = SkillType.Plant } }, ["minion"] = { addToMinion = true }, ["zombie"] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Raise Zombie", includeTransfigured = true } }, @@ -2269,6 +2268,7 @@ local specialModList = { return explodeFunc(chance, amount, type) end, -- Keystones + ["take (%d+)%% less damage from hits while dodge rolling"] = function(num) return {mod("DamageTakenWhenHit", "MORE", -num, {type = "Coniditon", var ="InDodgeRoll"}, {type = "Condition", var="CannotDodgeRoll", neg=true})} end, ["(%d+)%% more skill speed while off hand is empty and you have a one%-handed martial weapon equipped in your main hand"] = function(num) return { mod("Speed", "MORE", num, {type = "Condition", var = "UsingOneHandedWeapon"}, {type = "Condition", var = "OffHandIsEmpty"}), mod("WarcrySpeed", "MORE", num, {type = "Condition", var = "UsingOneHandedWeapon"}, {type = "Condition", var = "OffHandIsEmpty"}), From 3d1b03935c83e80d7985d736e2483be68bc38865 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Thu, 18 Dec 2025 17:39:32 +0100 Subject: [PATCH 4/7] fixed config for "in dodge roll" --- src/Data/ModCache.lua | 14 ++++++-------- src/Modules/ConfigOptions.lua | 4 ++-- src/Modules/ModParser.lua | 4 ++-- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 12acebf76..7ea71a09b 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -1575,7 +1575,7 @@ c["15% less maximum Mana"]={{[1]={flags=0,keywordFlags=0,name="Mana",type="MORE" 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 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 from Hits is taken from your Damageable Companion's Life before you"]={{[1]={flags=0,keywordFlags=0,name="DamageTakenWhenHit",type="BASE",value=15}}," 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} c["15% of Damage taken from Deflected Hits Recouped as Life"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="BASE",value=15}}," from Deflected Hits Recouped as Life "} c["15% of Elemental Damage taken Recouped as Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="LightningEnergyShieldRecoup",type="BASE",value=15},[2]={flags=0,keywordFlags=0,name="ColdEnergyShieldRecoup",type="BASE",value=15},[3]={flags=0,keywordFlags=0,name="FireEnergyShieldRecoup",type="BASE",value=15}},nil} @@ -2829,8 +2829,8 @@ c["5% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThresho c["5% increased Stun Threshold per 25 Tribute"]={{[1]={[1]={actor="parent",div=25,stat="Tribute",type="PerStat"},flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=5}},nil} c["5% increased effect of Archon Buffs on you"]={{[1]={flags=0,keywordFlags=0,name="LocalEffect",type="INC",value=5}}," of Archon Buffs on you "} c["5% increased total Power counted by Warcries"]={{[1]={flags=0,keywordFlags=0,name="WarcryPower",type="INC",value=5}},nil} -c["5% of Damage from Hits is taken from your Damageable Companion's Life before you"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="BASE",value=5}}," from Hits is taken from your Damageable Companion's Life before you "} -c["5% of Damage from Hits is taken from your Damageable Companion's Life before you 20% increased Defences while your Companion is in your Presence"]={{[1]={[1]={type="Condition",var="CompanionInPresence"},flags=0,keywordFlags=0,name="Damage",type="BASE",value=5}}," from Hits is taken from your Damageable Companion's Life before you 20% increased Defences "} +c["5% of Damage from Hits is taken from your Damageable Companion's Life before you"]={{[1]={flags=0,keywordFlags=0,name="DamageTakenWhenHit",type="BASE",value=5}}," is taken from your Damageable Companion's Life before you "} +c["5% of Damage from Hits is taken from your Damageable Companion's Life before you 20% increased Defences while your Companion is in your Presence"]={{[1]={[1]={type="Condition",var="CompanionInPresence"},flags=0,keywordFlags=0,name="DamageTakenWhenHit",type="BASE",value=5}}," is taken from your Damageable Companion's Life before you 20% increased Defences "} c["5% of Damage taken Recouped as Life"]={{[1]={flags=0,keywordFlags=0,name="LifeRecoup",type="BASE",value=5}},nil} c["5% of Damage taken bypasses Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="PhysicalEnergyShieldBypass",type="BASE",value=5},[2]={flags=0,keywordFlags=0,name="LightningEnergyShieldBypass",type="BASE",value=5},[3]={flags=0,keywordFlags=0,name="ColdEnergyShieldBypass",type="BASE",value=5},[4]={flags=0,keywordFlags=0,name="FireEnergyShieldBypass",type="BASE",value=5},[5]={flags=0,keywordFlags=0,name="ChaosEnergyShieldBypass",type="BASE",value=5}},nil} c["5% of Maximum Life Converted to Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="LifeConvertToEnergyShield",type="BASE",value=5}},nil} @@ -6016,12 +6016,10 @@ c["Successfully Parrying a Projectile Hit grants 40% increased Damage to your ne c["Take 100 Chaos damage per second per Endurance Charge"]={{[1]={[1]={type="Multiplier",var="EnduranceCharge"},flags=0,keywordFlags=0,name="ChaosDegen",type="BASE",value=100}},nil} c["Take 100 Fire Damage when you Ignite an Enemy"]={{[1]={flags=0,keywordFlags=0,name="EyeOfInnocenceSelfDamage",type="LIST",value={baseDamage=100,damageType="fire"}}},nil} c["Take 100% of Mana Costs you pay for Skills as Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="ManaCostAsPhysical",type="BASE",value=100}}," s you pay for Skills "} -c["Take 30% less Damage from Hits while Dodge Rolling"]={{[1]={[1]={type="Coniditon",var="InDodgeRoll"},[2]={neg=true,type="Condition",var="CannotDodgeRoll"},flags=0,keywordFlags=0,name="DamageTakenWhenHit",type="MORE",value=-30}},nil} -c["Take 30% more Damage from Hits"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=30}}," from Hits "} -c["Take 30% more Damage from Hits Take 40% less Damage from Hits"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=30}}," from Hits Take 40% less Damage from Hits "} +c["Take 30% less Damage from Hits while Dodge Rolling"]={{[1]={[1]={type="Condition",var="InDodgeRoll"},flags=0,keywordFlags=0,name="DamageTakenWhenHit",type="MORE",value=-30}},nil} +c["Take 30% more Damage from Hits"]={{[1]={flags=0,keywordFlags=0,name="DamageTakenWhenHitTaken",type="MORE",value=30}},nil} c["Take 30% more Damage over time"]={{[1]={flags=8,keywordFlags=0,name="DamageTaken",type="MORE",value=30}},nil} -c["Take 40% less Damage from Hits"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=-40}}," from Hits "} -c["Take 40% less Damage from Hits Take 30% more Damage over time"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=-40}}," from Hits Take 30% more Damage over time "} +c["Take 40% less Damage from Hits"]={{[1]={flags=0,keywordFlags=0,name="DamageTakenWhenHitTaken",type="MORE",value=-40}},nil} c["Take 40% less Damage over time"]={{[1]={flags=8,keywordFlags=0,name="DamageTaken",type="MORE",value=-40}},nil} c["Take 50% less Damage over Time if you've started taking Damage over Time in the past second"]={{[1]={flags=8,keywordFlags=0,name="DamageTaken",type="MORE",value=-50}}," if you've started taking Damage over Time in the past second "} c["Take 50% less Damage over Time if you've started taking Damage over Time in the past second Take 50% more Damage over Time if you haven't started taking Damage over Time in the past second"]={{[1]={flags=8,keywordFlags=0,name="DamageTaken",type="MORE",value=-50}}," if you've started taking Damage over Time in the past second Take 50% more Damage over Time if you haven't started taking Damage over Time in the past second "} diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index f602aa34b..61ff3a8bc 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1209,8 +1209,8 @@ Huge sets the radius to 11. { var = "conditionInfusionConsumedRecently", type = "check", label = "Infusion consumed recently?", apply = function(val, modList, enemyModList) modList:NewMod("Condition:InfusionConsumedRecently", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) end }, - { var = "conditionDodeRolling", type = "check", label = "Are you in dodge roll?", ifCond="InDodgeRoll", apply = function(val, modList, enemyModList) - modList:NewMod("Condition:InDodgeRoll", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + { var = "conditionInDodgeRoll", type = "check", label = "Are you in dodge roll?", ifCond="InDodgeRoll", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:InDodgeRoll", "FLAG", true, "Config", { type = "Condition", var = "Combat"}, {type = "Condition", var ="CannotDodgeRoll", neg = true}) end }, { var = "conditionBeenHitRecently", type = "check", label = "Have you been Hit Recently?", ifCond = "BeenHitRecently", apply = function(val, modList, enemyModList) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 4e91d1990..9c2451c83 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -286,7 +286,6 @@ local modNameList = { -- Damage taken ["damage taken"] = "DamageTaken", ["damage taken when hit"] = "DamageTakenWhenHit", - ["damage taken from hits"] = "DamageTakenWhenHit", ["damage over time taken"] = "DamageTakenOverTime", ["damage taken from damage over time"] = "DamageTakenOverTime", ["attack damage taken"] = "AttackDamageTaken", @@ -687,6 +686,7 @@ local modNameList = { ["exposure effect"] = { "FireExposureEffect", "ColdExposureEffect", "LightningExposureEffect" }, -- Basic damage types ["damage"] = "Damage", + ["damage from hits"] = "DamageTakenWhenHit", ["physical damage"] = "PhysicalDamage", ["lightning damage"] = "LightningDamage", ["cold damage"] = "ColdDamage", @@ -2268,7 +2268,7 @@ local specialModList = { return explodeFunc(chance, amount, type) end, -- Keystones - ["take (%d+)%% less damage from hits while dodge rolling"] = function(num) return {mod("DamageTakenWhenHit", "MORE", -num, {type = "Coniditon", var ="InDodgeRoll"}, {type = "Condition", var="CannotDodgeRoll", neg=true})} end, + ["take (%d+)%% less damage from hits while dodge rolling"] = function(num) return{mod("DamageTakenWhenHit", "MORE", -num, {type = "Condition", var = "InDodgeRoll"})} end, ["(%d+)%% more skill speed while off hand is empty and you have a one%-handed martial weapon equipped in your main hand"] = function(num) return { mod("Speed", "MORE", num, {type = "Condition", var = "UsingOneHandedWeapon"}, {type = "Condition", var = "OffHandIsEmpty"}), mod("WarcrySpeed", "MORE", num, {type = "Condition", var = "UsingOneHandedWeapon"}, {type = "Condition", var = "OffHandIsEmpty"}), From 3432703b1011e49d1e419a6d65f5b8ad3018ca03 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Thu, 18 Dec 2025 17:42:33 +0100 Subject: [PATCH 5/7] parse "dodge roll cannot avoid damage" --- src/Data/ModCache.lua | 3 +-- src/Modules/ModParser.lua | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 7ea71a09b..74cab2ce9 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -4744,8 +4744,7 @@ c["Detonator skills have 8% increased Area of Effect"]={{[1]={[1]={skillType=241 c["Detonator skills have 80% reduced damage"]={{[1]={[1]={skillType=241,type="SkillType"},flags=0,keywordFlags=0,name="Damage",type="INC",value=-80}},nil} c["Dodge Roll avoids all Hits"]={nil,"Dodge Roll avoids all Hits "} c["Dodge Roll avoids all Hits 10% less Movement and Skill Speed per Dodge Roll in the past 20 seconds"]={nil,"Dodge Roll avoids all Hits 10% less Movement and Skill Speed per Dodge Roll in the past 20 seconds "} -c["Dodge Roll cannot Avoid Damage"]={nil,"Dodge Roll cannot Avoid Damage "} -c["Dodge Roll cannot Avoid Damage Take 30% less Damage from Hits while Dodge Rolling"]={nil,"Dodge Roll cannot Avoid Damage Take 30% less Damage from Hits while Dodge Rolling "} +c["Dodge Roll cannot Avoid Damage"]={{},nil} c["Dodge Roll passes through Enemies"]={nil,"Dodge Roll passes through Enemies "} c["Double Activation Delay of Curses"]={{[1]={flags=0,keywordFlags=0,name="CurseDelay",type="MORE",value=100}},nil} c["Double Adaptation Effect"]={{[1]={[1]={globalLimit=100,globalLimitKey="LocalEffectDoubledLimit",type="Multiplier",var="LocalEffectDoubled"},flags=0,keywordFlags=0,name="LocalEffect",type="MORE",value=100},[2]={flags=0,keywordFlags=0,name="Multiplier:LocalEffectDoubled",type="OVERRIDE",value=1}}," Adaptation "} diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 9c2451c83..deb28222e 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2268,6 +2268,7 @@ local specialModList = { return explodeFunc(chance, amount, type) end, -- Keystones + ["dodge roll cannot avoid damage"] = {}, ["take (%d+)%% less damage from hits while dodge rolling"] = function(num) return{mod("DamageTakenWhenHit", "MORE", -num, {type = "Condition", var = "InDodgeRoll"})} end, ["(%d+)%% more skill speed while off hand is empty and you have a one%-handed martial weapon equipped in your main hand"] = function(num) return { mod("Speed", "MORE", num, {type = "Condition", var = "UsingOneHandedWeapon"}, {type = "Condition", var = "OffHandIsEmpty"}), From 96dd38fe96e6d7d55b028b0688c229771f911010 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Fri, 19 Dec 2025 18:46:47 +0100 Subject: [PATCH 6/7] Bestial Rage, Primal Hunger, Night's Bite --- src/Data/ModCache.lua | 8 ++++---- src/Modules/CalcPerform.lua | 6 +++++- src/Modules/ModParser.lua | 3 +++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 74cab2ce9..b4875c7ea 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -4870,7 +4870,7 @@ c["Evasion Rating from Equipped Helmet, Gloves and Boots is doubled"]={{[1]={[1] c["Evasion Rating is doubled if you have not been Hit Recently"]={{[1]={[1]={neg=true,type="Condition",var="BeenHitRecently"},[2]={globalLimit=100,globalLimitKey="EvasionDoubledLimit",type="Multiplier",var="EvasionDoubled"},flags=0,keywordFlags=0,name="Evasion",type="MORE",value=100},[2]={[1]={neg=true,type="Condition",var="BeenHitRecently"},flags=0,keywordFlags=0,name="Multiplier:EvasionDoubled",type="OVERRIDE",value=1}},nil} c["Evasion Rating is increased by Uncapped Lightning Resistance"]={nil,"Evasion Rating is increased by Uncapped Lightning Resistance "} c["Everlasting Sacrifice"]={{[1]={flags=0,keywordFlags=0,name="Condition:EverlastingSacrifice",type="FLAG",value=true}},nil} -c["Every 10 Rage also grants 12% increased Physical Damage"]={nil,"Every 10 Rage also grants 12% increased Physical Damage "} +c["Every 10 Rage also grants 12% increased Physical Damage"]={{[1]={[1]={div=10,stat="Rage",type="PerStat"},flags=0,keywordFlags=0,name="PhysicalDamage",type="INC",value=12}},nil} c["Every 10 seconds, gain a random non-damaging Shrine buff for 20 seconds"]={nil,"Every 10 seconds, gain a random non-damaging Shrine buff for 20 seconds "} c["Every 2 Rage also grants 1% more Spell damage"]={{[1]={[1]={div=2,type="Multiplier",var="RageEffect"},flags=2,keywordFlags=0,name="Damage",type="MORE",value=1}},nil} c["Every 3 seconds during Effect, deal 100% of Mana spent in those seconds as Chaos Damage to Enemies within 3 metres"]={nil,"Every 3 seconds during Effect, deal 100% of Mana spent in those seconds as Chaos Damage to Enemies within 3 metres "} @@ -5664,7 +5664,7 @@ c["No Inherent loss of Rage during effect"]={nil,"No Inherent loss of Rage durin c["No Inherent loss of Rage during effect 50% increased Duration"]={nil,"No Inherent loss of Rage during effect 50% increased Duration "} c["No Movement Speed Penalty while Shield is Raised"]={nil,"No Movement Speed Penalty while Shield is Raised "} c["No Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="WeaponData",type="LIST",value={key="PhysicalMin"}},[2]={flags=0,keywordFlags=0,name="WeaponData",type="LIST",value={key="PhysicalMax"}},[3]={flags=0,keywordFlags=0,name="WeaponData",type="LIST",value={key="PhysicalDPS"}}},nil} -c["No Rage effect"]={nil,"No Rage effect "} +c["No Rage effect"]={{[1]={flags=0,keywordFlags=0,name="Condition:NoRageEffect",type="FLAG",value=true}},nil} c["No inherent Mana Regeneration"]={{[1]={flags=0,keywordFlags=0,name="Condition:NoInherentManaRegen",type="FLAG",value=true}},nil} c["Non-Channelling Spells cost an additional 6% of your maximum Life"]={{[1]={[1]={floor=true,percent=6,stat="Life",type="PercentStat"},[2]={neg=true,skillType=48,type="SkillType"},flags=0,keywordFlags=131072,name="LifeCostBase",type="BASE",value=1}},nil} c["Non-Channelling Spells deal 10% increased Damage per 100 maximum Life"]={{[1]={[1]={neg=true,skillType=48,type="SkillType"},[2]={div=100,stat="Life",type="PerStat"},flags=2,keywordFlags=0,name="Damage",type="INC",value=10}},nil} @@ -5990,8 +5990,8 @@ c["Spells Cast by Totems have 3% increased Cast Speed per Summoned Totem"]={{[1] c["Spells Cast by Totems have 4% increased Cast Speed"]={{[1]={flags=18,keywordFlags=16384,name="Speed",type="INC",value=4}},nil} c["Spells Cast by Totems have 5% increased Cast Speed"]={{[1]={flags=18,keywordFlags=16384,name="Speed",type="INC",value=5}},nil} c["Spells Cast by Totems have 6% increased Cast Speed"]={{[1]={flags=18,keywordFlags=16384,name="Speed",type="INC",value=6}},nil} -c["Spells Gain 12% of Damage as extra Chaos Damage"]={nil,"Spells Gain 12% of Damage as extra Chaos Damage "} -c["Spells Gain 5% of Damage as extra Chaos Damage"]={nil,"Spells Gain 5% of Damage as extra Chaos Damage "} +c["Spells Gain 12% of Damage as extra Chaos Damage"]={{[1]={[1]={skillType=2,type="SkillType"},flags=0,keywordFlags=0,name="NonChaosDamageGainAsChaos",type="BASE",value=12}},nil} +c["Spells Gain 5% of Damage as extra Chaos Damage"]={{[1]={[1]={skillType=2,type="SkillType"},flags=0,keywordFlags=0,name="NonChaosDamageGainAsChaos",type="BASE",value=5}},nil} c["Spells consume a Power Charge if able to deal 40% more Damage"]={nil,"Spells consume a Power Charge if able to deal 40% more Damage "} c["Spells fire 4 additional Projectiles"]={{[1]={flags=2,keywordFlags=0,name="ProjectileCount",type="BASE",value=4}},nil} c["Spells fire Projectiles in a circle"]={nil,"Projectiles in a circle "} diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index fc2cb2c32..8325bed33 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -643,7 +643,11 @@ local function doActorMisc(env, actor) local minStacks = m_min(modDB:Sum("BASE", nil, "MinimumRage"), maxStacks) local rageConfig = modDB:Sum("BASE", nil, "Multiplier:RageStack") local stacks = m_max(m_min(rageConfig, maxStacks), (minStacks > 0 and minStacks) or 0) - output.RageEffect = m_floor(stacks * calcLib.mod(modDB, nil, "RageEffect")) + if modDB:Flag(nil, "Condition:NoRageEffect") then + output.RageEffect = 0 + else + output.RageEffect = m_floor(stacks * calcLib.mod(modDB, nil, "RageEffect")) + end modDB:NewMod("Multiplier:RageEffect", "BASE", output.RageEffect, "Base") output.Rage = stacks output.MaximumRage = maxStacks diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index deb28222e..97620a43f 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2268,6 +2268,7 @@ local specialModList = { return explodeFunc(chance, amount, type) end, -- Keystones + ["no rage effect"] = { flag("Condition:NoRageEffect") }, ["dodge roll cannot avoid damage"] = {}, ["take (%d+)%% less damage from hits while dodge rolling"] = function(num) return{mod("DamageTakenWhenHit", "MORE", -num, {type = "Condition", var = "InDodgeRoll"})} end, ["(%d+)%% more skill speed while off hand is empty and you have a one%-handed martial weapon equipped in your main hand"] = function(num) return { @@ -4666,6 +4667,7 @@ local specialModList = { ["arrows that pierce deal (%d+)%% increased damage"] = function(num) return { mod("Damage", "INC", num, nil, bor(ModFlag.Attack, ModFlag.Projectile), { type = "StatThreshold", stat = "PierceCount", threshold = 1 }) } end, ["projectiles gain (%d+)%% of non%-chaos damage as extra chaos damage per chain"] = function(num) return { mod("NonChaosDamageGainAsChaos", "BASE", num, nil, ModFlag.Projectile, { type = "PerStat", stat = "Chain" }) } end, ["projectiles that have chained gain (%d+)%% of non%-chaos damage as extra chaos damage"] = function(num) return { mod("NonChaosDamageGainAsChaos", "BASE", num, nil, ModFlag.Projectile, { type = "StatThreshold", stat = "Chain", threshold = 1 }) } end, + ["spells gain (%d+)%% of damage as extra chaos damage"] = function(num) return { mod("NonChaosDamageGainAsChaos", "BASE", num, { type = "SkillType", skillType = SkillType.Spell}) } end, ["left ring slot: projectiles from spells cannot chain"] = { flag("CannotChain", nil, bor(ModFlag.Spell, ModFlag.Projectile), { type = "SlotNumber", num = 1 }) }, ["left ring slot: projectiles from spells fork"] = { flag("ForkOnce", nil, bor(ModFlag.Spell, ModFlag.Projectile), { type = "SlotNumber", num = 1 }), mod("ForkCountMax", "BASE", 1, nil, bor(ModFlag.Spell, ModFlag.Projectile), { type = "SlotNumber", num = 1 }) }, ["left ring slot: your chilling skitterbot's aura applies socketed h?e?x? ?curse instead"] = { flag("SkitterbotsCannotChill", { type = "SlotNumber", num = 1 }) }, @@ -5586,6 +5588,7 @@ local specialModList = { } end, ["when you lose temporal chains you gain maximum rage"] = { flag("Condition:CanGainRage") }, ["with a murderous eye jewel socketed, melee attacks grant (%d+) rage on hit, no more than once every second"] = { flag("Condition:CanGainRage", { type = "Condition", var = "HaveMurderousEyeJewelIn{SlotName}" }) }, + ["every (%d+) rage also grants (%d+)%% increased physical damage"] = function(div, _, num) return { mod("PhysicalDamage", "INC", tonumber(num), { type = "PerStat", stat = "Rage", div = div } ) } end, ["gain %d+ rage after spending a total of %d+ mana"] = { flag("Condition:CanGainRage") }, ["rage grants cast speed instead of attack speed"] = { flag("Condition:RageCastSpeed") }, ["rage grants spell damage instead of attack damage"] = { flag("Condition:RageSpellDamage") }, From 2e0c3331c4509ecb3058f3d826eef6d9b401e35c Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Sat, 20 Dec 2025 09:57:40 +0100 Subject: [PATCH 7/7] review --- src/Data/ModCache.lua | 4 ++-- src/Modules/ModParser.lua | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index b4875c7ea..4a3f456f3 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -5990,8 +5990,8 @@ c["Spells Cast by Totems have 3% increased Cast Speed per Summoned Totem"]={{[1] c["Spells Cast by Totems have 4% increased Cast Speed"]={{[1]={flags=18,keywordFlags=16384,name="Speed",type="INC",value=4}},nil} c["Spells Cast by Totems have 5% increased Cast Speed"]={{[1]={flags=18,keywordFlags=16384,name="Speed",type="INC",value=5}},nil} c["Spells Cast by Totems have 6% increased Cast Speed"]={{[1]={flags=18,keywordFlags=16384,name="Speed",type="INC",value=6}},nil} -c["Spells Gain 12% of Damage as extra Chaos Damage"]={{[1]={[1]={skillType=2,type="SkillType"},flags=0,keywordFlags=0,name="NonChaosDamageGainAsChaos",type="BASE",value=12}},nil} -c["Spells Gain 5% of Damage as extra Chaos Damage"]={{[1]={[1]={skillType=2,type="SkillType"},flags=0,keywordFlags=0,name="NonChaosDamageGainAsChaos",type="BASE",value=5}},nil} +c["Spells Gain 12% of Damage as extra Chaos Damage"]={{[1]={flags=2,keywordFlags=0,name="DamageGainAsChaos",type="BASE",value=12}},nil} +c["Spells Gain 5% of Damage as extra Chaos Damage"]={{[1]={flags=2,keywordFlags=0,name="DamageGainAsChaos",type="BASE",value=5}},nil} c["Spells consume a Power Charge if able to deal 40% more Damage"]={nil,"Spells consume a Power Charge if able to deal 40% more Damage "} c["Spells fire 4 additional Projectiles"]={{[1]={flags=2,keywordFlags=0,name="ProjectileCount",type="BASE",value=4}},nil} c["Spells fire Projectiles in a circle"]={nil,"Projectiles in a circle "} diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 97620a43f..535611de2 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -1248,7 +1248,7 @@ local preFlagList = { ["^attacks using your weapons [ghd][ae][iva][eln] "] = { flags = ModFlag.Attack, tag = { type = "SkillType", skillType = SkillType.NonWeaponAttack, neg = true }}, ["^attacks used by ballistas [hd][ae][va][el] "] = { flags = ModFlag.Attack, keywordFlags = KeywordFlag.Totem, tag = { type = "Condition", var = "BallistaSkill" } }, ["^attack skills [hd][ae][va][el] "] = { keywordFlags = KeywordFlag.Attack }, - ["^spells [hdf][aei][var][el] a? ?"] = { flags = ModFlag.Spell }, + ["^spells [hgdf][aei][ivar][nel] a? ?"] = { flags = ModFlag.Spell }, ["^spell skills [hd][ae][va][el] "] = { keywordFlags = KeywordFlag.Spell }, ["^offering skills [hd][ae][va][el] "] = { tag = { type = "SkillType", skillType = SkillType.Offering } }, ["^projectile attack skills [hd][ae][va][el] "] = { tag = { type = "SkillType", skillType = SkillType.RangedAttack } }, @@ -4667,7 +4667,6 @@ local specialModList = { ["arrows that pierce deal (%d+)%% increased damage"] = function(num) return { mod("Damage", "INC", num, nil, bor(ModFlag.Attack, ModFlag.Projectile), { type = "StatThreshold", stat = "PierceCount", threshold = 1 }) } end, ["projectiles gain (%d+)%% of non%-chaos damage as extra chaos damage per chain"] = function(num) return { mod("NonChaosDamageGainAsChaos", "BASE", num, nil, ModFlag.Projectile, { type = "PerStat", stat = "Chain" }) } end, ["projectiles that have chained gain (%d+)%% of non%-chaos damage as extra chaos damage"] = function(num) return { mod("NonChaosDamageGainAsChaos", "BASE", num, nil, ModFlag.Projectile, { type = "StatThreshold", stat = "Chain", threshold = 1 }) } end, - ["spells gain (%d+)%% of damage as extra chaos damage"] = function(num) return { mod("NonChaosDamageGainAsChaos", "BASE", num, { type = "SkillType", skillType = SkillType.Spell}) } end, ["left ring slot: projectiles from spells cannot chain"] = { flag("CannotChain", nil, bor(ModFlag.Spell, ModFlag.Projectile), { type = "SlotNumber", num = 1 }) }, ["left ring slot: projectiles from spells fork"] = { flag("ForkOnce", nil, bor(ModFlag.Spell, ModFlag.Projectile), { type = "SlotNumber", num = 1 }), mod("ForkCountMax", "BASE", 1, nil, bor(ModFlag.Spell, ModFlag.Projectile), { type = "SlotNumber", num = 1 }) }, ["left ring slot: your chilling skitterbot's aura applies socketed h?e?x? ?curse instead"] = { flag("SkitterbotsCannotChill", { type = "SlotNumber", num = 1 }) },