From 5c8ed70649179fa93c6b2291d51e3c8c9642a91e Mon Sep 17 00:00:00 2001 From: Paliak <91493239+Paliak@users.noreply.github.com> Date: Sat, 28 Feb 2026 16:56:06 +0100 Subject: [PATCH 01/11] FEAT: add Screams of the desiccated --- src/Data/Uniques/Special/New.lua | 26 +++++++++++++++++++++++++- src/Modules/ModParser.lua | 12 ++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/Data/Uniques/Special/New.lua b/src/Data/Uniques/Special/New.lua index 02981a857d..3060fcc656 100644 --- a/src/Data/Uniques/Special/New.lua +++ b/src/Data/Uniques/Special/New.lua @@ -314,6 +314,30 @@ Implicits: 1 {tags:attack}(10-20)% chance to Impale Enemies on Hit with Attacks (40-25)% reduced Impale Duration {tags:attack}(40-60)% chance on Melee Hit for the Strongest Impale on target to last for 1 additional Hit -]] +]], +[[ +Screams of the desiccated +Leather Belt +LevelReq: 56 +Implicits: 1 +{tags:life}+(25-40) to maximum Life +You have Diamond Shrine Buff while affected by no Flasks +You have Resistance Shrine Buff while affected by no Flasks ++30 to Intelligence ++28% to Chaos Resistance +]], +[[ +The Sands of Time +Tyrant's Sekhem +Requires Level 58, 99 Str, 99 Int +Implicits: 1 +26% increased Elemental Damage +Trigger level 20 Suspend in Time on Casting a Spell +60% increased Spell Damage +65% increased Mana Regeneration Rate +10% increased Cooldown Recovery Rate +10% increased Cast Speed for each different Non-Instant Spell you've Cast Recently +>>>>>>> 591237ef1 (fixup) +]] } \ No newline at end of file diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index fd91130b3e..fe3c8e6ed3 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -842,6 +842,7 @@ local modNameList = { ["lesser massive shrine buff"] = "Condition:LesserMassiveShrine", ["diamond shrine buff"] = "Condition:DiamondShrine", ["massive shrine buff"] = "Condition:MassiveShrine", + ["resistance shrine buff"] = "Condition:ResistanceShrine" } -- List of modifier flags @@ -1825,6 +1826,8 @@ local modTagList = { { type = "StatThreshold", stat = "LifeReserved", threshold = 1}, { type = "StatThreshold", stat = "ManaReserved", threshold = 1} } }, ["if you've shattered an enemy recently"] = { tag = { type = "Condition", var = "ShatteredEnemyRecently" } }, + ["while affected by no flasks?"] = { tag = { type = "Condition", var = "UsingFlask", neg = true } }, + ["while affected by flasks?"] = { tag = { type = "Condition", var = "UsingFlask" } }, -- Enemy status conditions ["at close range"] = { tag = { type = "Condition", var = "AtCloseRange" } }, ["not at close range"] = { tag = { type = "Condition", var = "AtCloseRange", neg = true } }, @@ -5690,7 +5693,12 @@ local flagTypes = { ["hindered,? with (%d+)%% reduced movement speed"] = "Condition:Hindered", ["unnerved"] = "Condition:Unnerved", ["malediction"] = "HasMalediction", - ["debilitated"] = "Condition:Debilitated" + ["debilitated"] = "Condition:Debilitated", + ["lesser brutal shrine buff"] = "Condition:LesserBrutalShrine", + ["lesser massive shrine buff"] = "Condition:LesserMassiveShrine", + ["diamond shrine buff"] = "Condition:DiamondShrine", + ["massive shrine buff"] = "Condition:MassiveShrine", + ["resistance shrine buff"] = "Condition:ResistanceShrine" } -- Build active skill name lookup @@ -6292,7 +6300,6 @@ local function parseMod(line, order) end end end - -- Scan for modifier name and skill name local modName if order == 2 and not skillTag then @@ -6449,6 +6456,7 @@ local function parseMod(line, order) modExtraTags[1] = { tag = { type = "Multiplier", var = modNameString .. "Doubled", globalLimit = 100, globalLimitKey = modNameString .. "DoubledLimit" }} end end + if not modName then return { }, line end From 32f5b2adf5f174fcba72b09c479e1ab593a7aa5b Mon Sep 17 00:00:00 2001 From: Paliak <91493239+Paliak@users.noreply.github.com> Date: Sat, 28 Feb 2026 17:11:09 +0100 Subject: [PATCH 02/11] FEAT: add The Sands of Time trigger requires gem export --- src/Data/Uniques/Special/New.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Data/Uniques/Special/New.lua b/src/Data/Uniques/Special/New.lua index 3060fcc656..32cdb6b572 100644 --- a/src/Data/Uniques/Special/New.lua +++ b/src/Data/Uniques/Special/New.lua @@ -338,6 +338,9 @@ Trigger level 20 Suspend in Time on Casting a Spell 65% increased Mana Regeneration Rate 10% increased Cooldown Recovery Rate 10% increased Cast Speed for each different Non-Instant Spell you've Cast Recently +<<<<<<< HEAD >>>>>>> 591237ef1 (fixup) +======= +>>>>>>> b69d06763 (FEAT: add The Sands of Time) ]] } \ No newline at end of file From 78a8db30bf9124adc7cf75708a314a7fd3c1a775 Mon Sep 17 00:00:00 2001 From: Paliak <91493239+Paliak@users.noreply.github.com> Date: Sat, 28 Feb 2026 20:09:58 +0100 Subject: [PATCH 03/11] FEAT: add Khatal's Geyser --- src/Data/Uniques/Special/New.lua | 17 +++++++++++++---- src/Modules/CalcPerform.lua | 1 + src/Modules/ModParser.lua | 1 + 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/Data/Uniques/Special/New.lua b/src/Data/Uniques/Special/New.lua index 32cdb6b572..b39d15387f 100644 --- a/src/Data/Uniques/Special/New.lua +++ b/src/Data/Uniques/Special/New.lua @@ -338,9 +338,18 @@ Trigger level 20 Suspend in Time on Casting a Spell 65% increased Mana Regeneration Rate 10% increased Cooldown Recovery Rate 10% increased Cast Speed for each different Non-Instant Spell you've Cast Recently -<<<<<<< HEAD ->>>>>>> 591237ef1 (fixup) -======= ->>>>>>> b69d06763 (FEAT: add The Sands of Time) +]], +[[ +Khatal's Geyser +Lapis Amulet +LevelReq: 56 +Implicits: 1 +{tags:jewellery_attribute}+(20-30) to Intelligence +Can't use Life Flasks ++65 to maximum Mana +Increases and Reductions to Effect of Flasks applied to you also applies to Effect of Arcane Surge on you at 210% of their value +You have Arcane Surge during Effect of any Mana Flask +Mana Flask Effects are not removed when Unreserved Mana is Filled +Mana Flask Effects do not Queue ]] } \ No newline at end of file diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 05b2d161b5..2d34c9d890 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -667,6 +667,7 @@ local function doActorMisc(env, actor) if modDB.conditions["AffectedByArcaneSurge"] or modDB:Flag(nil, "Condition:ArcaneSurge") then modDB.conditions["AffectedByArcaneSurge"] = true local effect = 1 + modDB:Sum("INC", nil, "ArcaneSurgeEffect", "BuffEffectOnSelf") / 100 + effect = effect + modDB:Sum("INC", { actor = "player" }, "FlaskEffect") / 100 * modDB:Sum("BASE", nil, "FlaskEffectToArcaneSurgeEffect") / 100 modDB:NewMod("ManaRegen", "INC", (modDB:Max(nil, "ArcaneSurgeManaRegen") or 30) * effect, "Arcane Surge") local arcaneSurgeCastSpeed = (modDB:Max(nil, "ArcaneSurgeCastSpeed") or 20) * effect modDB:NewMod("Speed", "INC", arcaneSurgeCastSpeed, "Arcane Surge", ModFlag.Cast) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index fe3c8e6ed3..eb0207d251 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2278,6 +2278,7 @@ local specialModList = { } end, ["life recovery from flasks also applies to energy shield"] = { flag("LifeFlaskAppliesToEnergyShield") }, ["increase to cast speed from arcane surge also applies to movement speed"] = { flag("ArcaneSurgeCastSpeedToMovementSpeed") }, + ["increases and reductions to effect of flasks applied to you also applies to effect of arcane surge on you at (%d+)%% of their value"] = function(num) return { mod("FlaskEffectToArcaneSurgeEffect", "BASE", num) } end, ["non%-instant mana recovery from flasks is also recovered as life"] = { flag("ManaFlaskAppliesToLife") }, ["life leech effects recover energy shield instead while on full life"] = { flag("ImmortalAmbition", { type = "Condition", var = "FullLife" }, { type = "Condition", var = "LeechingLife" }) }, ["shepherd of souls"] = { From d79f9e5f931e73972934db60e8639a6f2c5b8322 Mon Sep 17 00:00:00 2001 From: Paliak <91493239+Paliak@users.noreply.github.com> Date: Sat, 28 Feb 2026 20:36:28 +0100 Subject: [PATCH 04/11] FEAT: move 3.27 uniques to dedicated .lua files --- src/Data/Uniques/Special/New.lua | 312 ------------------------------- src/Data/Uniques/amulet.lua | 30 ++- src/Data/Uniques/axe.lua | 11 ++ src/Data/Uniques/body.lua | 11 ++ src/Data/Uniques/bow.lua | 15 ++ src/Data/Uniques/dagger.lua | 14 ++ src/Data/Uniques/flask.lua | 12 ++ src/Data/Uniques/gloves.lua | 25 +++ src/Data/Uniques/helmet.lua | 23 +++ src/Data/Uniques/mace.lua | 12 ++ src/Data/Uniques/ring.lua | 120 +++++++++++- src/Data/Uniques/shield.lua | 26 +++ src/Data/Uniques/staff.lua | 17 +- src/Data/Uniques/sword.lua | 15 ++ src/Data/Uniques/wand.lua | 15 +- 15 files changed, 342 insertions(+), 316 deletions(-) diff --git a/src/Data/Uniques/Special/New.lua b/src/Data/Uniques/Special/New.lua index b39d15387f..7674490db6 100644 --- a/src/Data/Uniques/Special/New.lua +++ b/src/Data/Uniques/Special/New.lua @@ -4,318 +4,6 @@ data.uniques.new = { -- New -[[ -Bitter Instinct -Spiny Round Shield -Source: Drops from unique{Uber Incarnation of Neglect} in normal{Moment of Loneliness} -Requires Level 68, 85 Str, 85 Dex -Implicits: 1 -60% increased Block Recovery -(170-250)% increased Armour and Evasion -Reflects (200-300) Physical Damage to Melee Attackers -Retaliation Skills deal (50-100)% increased Damage -Damaging Retaliation Skills become Usable every 4 seconds -Retaliation Skills become Usable for (50-100)% longer -]],[[ -Bonemeld -Marble Amulet -Source: Drops from unique{Incarnation of Dread} in normal{Moment of Reverence} -Requires Level 74 -Implicits: 1 -{tags:life}Regenerate (1.2-1.6)% of Life per second -{tags:jewellery_attribute}+(10-20) to all Attributes -+(1-2) to Level of all Minion Skill Gems -{tags:jewellery_resistance}-2% to all Resistances per Minion from your Non-Vaal Skills -{tags:jewellery_defense}(3-4)% increased Defences per Minion from your Non-Vaal Skills -{tags:jewellery_resistance}Minions gain added Resistances equal to 50% of your Resistances -]],[[ -Cowards' Wail -Ezomyte Tower Shield -Requires Level 64, 159 Str -Implicits: 1 -+(30-40) to maximum Life -(120-240)% increased Armour -+(5-10)% Chance to Block -Totems which would be killed by Enemies become Spectral Totems for 8 seconds instead -Skills used by Spectral Totems deal (40-50)% less Damage -Maximum (3-5) Spectral Totems -Unwavering Stance -]],[[ -Festering Resentment -Demon Dagger -Source: Drops from unique{Uber Incarnation of Neglect} in normal{Moment of Loneliness} -Requires Level 68, 76 Dex, 149 Int -Implicits: 1 -40% increased Global Critical Strike Chance -Trigger a Socketed Spell when you Block, with a 0.25 second Cooldown -+(30-45)% Chance to Block Spell Damage while in Off Hand -(100-150)% increased Spell Damage -(100-150)% increased Damage with Poison -Triggered Spells Poison on Hit -All Damage with Triggered Spells can Poison -]],[[ -Hand of the Lords -Carnal Mitts -Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} -Requires Level 68, 195 Dex, 195 Int -You cannot Cast Socketed Hex Curse Skills -Inflict Socketed Hexes on Enemies that trigger your Traps -Grants Level 30 Will of the Lords Skill -400% increased Attribute Requirements -(120-160)% increased Evasion and Energy Shield -(6-12)% increased Trap Throwing Speed -Can have up to (3-5) additional Traps placed at a time -]],[[ -Haunting Memories -Turquoise Amulet -Source: Drops from unique{Uber Incarnation of Neglect} in normal{Moment of Loneliness} -Requires Level 16 -Implicits: 1 -{tags:jewellery_attribute}+(16-24) to Dexterity and Intelligence -+(6-10)% chance to Suppress Spell Damage -(50-100)% of Suppressed Spell Damage taken bypasses Energy Shield -(50-100)% of Suppressed Spell Damage taken Recouped as Energy Shield -{tags:jewellery_attribute}+(20-30) to Dexterity and Intelligence -{tags:jewellery_defense}+(40-60) to maximum Energy Shield -{tags:life}+(40-60) to maximum Life -]],[[ -Jiquani's Potential -Imperial Staff -Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} -Requires Level 66, 113 Str, 113 Dex -Implicits: 1 -+25% Chance to Block Spell Damage while wielding a Staff -(1-7)% increased Intelligence -(-17-17)% increased maximum Life -+(-1-1) to Level of all Spell Skill Gems -31% increased Cost of Skills -1 to (31-53) Spell Lightning Damage per 10 Intelligence -Blood Magic -]],[[ -Lost Unity -Formless Ring -Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} -Requires Level 42 -Implicits: 1 -{tags:jewellery_defense}(5-7)% increased Global Defences -Grants Level 30 Herald of the Hive Skill -{tags:jewellery_resistance}+(10–20)% to all Elemental Resistances -{tags:jewellery_resistance}+(23–37)% to Chaos Resistance -]],[[ -Refuge in Isolation -Paladin Crown -Source: Drops from unique{Uber Incarnation of Neglect} in normal{Moment of Loneliness} -Requires Level 78, 116 Str, 116 Int -(350-650)% increased Armour -(-50--40)% to all Elemental Resistances -+(13-29)% to Chaos Resistance -(15-30)% of Elemental Damage from Hits taken as Physical Damage -Physical Damage of Enemies Hitting you is Unlucky -]],[[ -Rigwald's Hunt -General's Brigandine -Requires Level 66, 103 Str, 103 Dex -(160-200)% increased Armour and Evasion -Minions have (20-30)% increased Movement Speed -Minions have 1% chance to deal Double Damage per Fortification on you -(30-40)% increased Fortification Duration -Minions have (6-12)% increased Attack Speed -Increases and Reductions to Minion Maximum Life also apply to you at 15% of their value -]],[[ -The Caged Mammoth -Antique Gauntlets -Source: Drops from unique{Uber Incarnation of Fear} in normal{Moment of Trauma} -Requires Level 64, 58 Str -Adds (6-10) to (16-22) Physical Damage to Attacks -(8-16)% increased Attack Speed -(80-120)% increased Armour -Lose (1-3) Rage per second -5% less Damage taken per 5 Rage, up to a maximum of 30% -Maximum Rage is Halved -]],[[ -The Golden Charlatan -Lion Sword -Source: Drops from unique{Uber Incarnation of Dread} in normal{Moment of Reverence} -Requires Level 65, 104 Str, 122 Dex -Implicits: 1 -+50 to Strength and Dexterity -+200 Intelligence Requirement -(200-300)% increased Physical Damage -(10-16)% increased Attack Speed -(100-200)% increased Critical Strike Chance -Critical Strikes with this Weapon do not deal extra Damage -Gain a random Shrine Buff for 30 seconds when you Kill a Rare or Unique Enemy -+1 to maximum Mana per 2 Intelligence -]],[[ -The Grey Wind -Spectral Axe -Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} -Requires Level 33, 85 Str, 37 Dex -(30-50)% increased Fire Damage -Attacks with this Weapon have Added Fire Damage equal to (8-12)% of Player's Maximum Life -Each Rage also grants +2% to Fire Damage Over Time Multiplier -Nearby Enemies have Fire Exposure while at maximum Rage -+(-5-5) to Maximum Rage -]],[[ -The Hallowed Monarch -Faithful Helmet -Source: Drops from unique{Uber Incarnation of Dread} in normal{Moment of Reverence} -Requires Level 73, 101 Str, 101 Int -(150-230)% increased Armour -+(25-35)% to all Elemental Resistances -50% increased Light Radius -Link Skills can target Damageable Minions -Your Linked Minions take (75-65)% less Damage -On Killing a Rare monster, a random Linked Minion gains its Modifiers for 60 seconds -]],[[ -The Monastery Bell -Dream Mace -Requires Level 32, 107 Str -Implicits: 1 -10% reduced Enemy Stun Threshold -(50-75)% increased Physical Damage -Adds (5-9) to (13-18) Physical Damage -(6-10)% increased Attack Speed -Chance to Block is Unlucky -Count as Blocking Attack Damage from the first target Hit with each Shield Attack -]],[[ -The Sundered Will -Fugitive Ring -Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} -Requires Level 42 -Implicits: 2 -Cannot roll Modifiers of Non-Chaos Damage Types -{tags:jewellery_resistance}+2% to maximum Chaos Resistance -{tags:jewellery_attribute}+(7-13) to all Attributes -{tags:chaos_damage}Adds (7-11) to (17-23) Chaos Damage -{tags:jewellery_resistance}+(13-29)% to Chaos Resistance -(20-30)% increased Area of Effect of Aura Skills -(20-35)% reduced Reservation Efficiency of Skills -Increases and Reductions to Chaos Damage also apply to Effect of Auras from Chaos Skills at (10–15)% of their value, up to a maximum of 150% -]],[[ -The Unseen Hue -Opal Ring -Source: Drops from unique{Uber Incarnation of Dread} in normal{Moment of Reverence} -Requires Level 80 -Variant: Scorch -Variant: Brittle -Variant: Sap -Implicits: 1 -{tags:elemental_damage}(15-25)% increased Elemental Damage -{tags:jewellery_resistance}+(5-30)% to Fire Resistance -{tags:jewellery_resistance}+(5-30)% to Cold Resistance -{tags:jewellery_resistance}+(5-30)% to Lightning Resistance -{tags:caster,attack,speed}(6-12)% increased Attack and Cast Speed -(10-20)% increased Effect of Non-Damaging Ailments -{variant:1}Hits with Prismatic Skills always Scorch -{variant:2}Hits with Prismatic Skills always inflict Brittle -{variant:3}Hits with Prismatic Skills always Sap -]],[[ -The Will of Esh -Synaptic Ring -Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} -Requires Level 42 -Implicits: 2 -Cannot roll Modifiers of Non-Lightning Damage Types -{tags:jewellery_resistance}+2% to maximum Lightning Resistance -{tags:jewellery_attribute}+(15-25) to Intelligence -{tags:elemental_damage}Adds (1-2) to (43-56) Lightning Damage -{tags:jewellery_resistance}+(20-30)% to Lightning Resistance -(20-30)% increased Area of Effect of Aura Skills -(20-35)% reduced Reservation Efficiency of Skills -Increases and Reductions to Lightning Damage also apply to Effect of Auras from Lightning Skills at (10-15)% of their value, up to a maximum of 150% -]],[[ -The Will of Tul -Cryonic Ring -Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} -Requires Level 42 -Implicits: 2 -Cannot roll Modifiers of Non-Cold Damage Types -{tags:jewellery_resistance}+2% to maximum Cold Resistance -{tags:jewellery_attribute}+(15-25) to Dexterity -{tags:elemental_damage}Adds (8-12) to (18-26) Cold Damage -{tags:jewellery_resistance}+(20-30)% to Cold Resistance -(20-30)% increased Area of Effect of Aura Skills -(20-35)% reduced Reservation Efficiency of Skills -Increases and Reductions to Cold Damage also apply to Effect of Auras from Cold Skills at (10-15)% of their value, up to a maximum of 150% -]],[[ -The Will of Uul-Netol -Organic Ring -Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} -Requires Level 42 -Implicits: 2 -Cannot roll Modifiers of Non-Physical Damage Types -3% additional Physical Damage Reduction -{tags:jewellery_attribute}+(15-25) to Strength -Adds (8-12) to (14-20) Physical Damage -{tags:jewellery_defense}(20-30)% increased Armour -(20-30)% increased Area of Effect of Aura Skills -(20-35)% reduced Reservation Efficiency of Skills -Increases and Reductions to Physical Damage also apply to Effect of Auras from Physical Skills at (10-15)% of their value, up to a maximum of 150% -]],[[ -The Will of Xoph -Enthalpic Ring -Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} -Requires Level 42 -Implicits: 2 -Cannot roll Modifiers of Non-Fire Damage Types -{tags:jewellery_resistance}+2% to maximum Fire Resistance -{tags:jewellery_attribute}+(15-25) to Strength -{tags:elemental_damage}Adds (10-14) to (26-34) Fire Damage -{tags:jewellery_resistance}+(20-30)% to Fire Resistance -(20-30)% increased Area of Effect of Aura Skills -(20-35)% reduced Reservation Efficiency of Skills -Increases and Reductions to Fire Damage also apply to Effect of Auras from Fire Skills at (10-15)% of their value, up to a maximum of 150% -]],[[ -Unlight Extant -Sage Wand -Requires Level 30, 119 Int -Implicits: 1 -(17-21)% increased Spell Damage -(31-43)% increased Chaos Damage -(7-13)% increased Cast Speed -+1 to Level of all Chaos Spell Skill Gems -Chaos Skills inflict up to 15 Withered Debuffs on Hit for (5-7) seconds -Cannot Inflict Wither on targets that are not on Full Life -]],[[ -Wellwater Phylactery -Colossal Mana Flask -Source: Drops from unique{Uber Incarnation of Dread} in normal{Moment of Reverence} -Requires Level 64 -(200-300)% increased Charges per use -(150-200)% increased Amount Recovered -(60-40)% less Duration -Removes (10-15)% of Life when Used -Starts Energy Shield Recharge when Used -Energy Shield Recharge is not delayed by Damage during Effect -]],[[ -Wing of the Wyvern -Imperial Bow -Source: Drops from unique{Uber Incarnation of Fear} in normal{Moment of Trauma} -Requires Level 66, 212 Dex -Implicits: 1 -(20-24)% increased Elemental Damage with Attack Skills -Trigger a Socketed Spell when a Hit from this -Weapon Freezes a Target, with a 0.25 second Cooldown -Adds (164-204) to (250-300) Cold Damage -Adds (163-199) to (241-293) Chaos Damage -(20-30)% increased Attack Speed -Your Chaos Damage can Freeze -Battlemage -]],[[ -Woespike -Steel Ring -Source: Drops from unique{Incarnation of Fear} in normal{Moment of Trauma} -Requires Level 80 -Implicits: 1 -{tags:attack,physical_damage}Adds (3-4) to (10-14) Physical Damage to Attacks -{tags:jewellery_attribute}+(25-40) to Strength and Dexterity -{tags:attack,physical_damage}Adds (8-12) to (18-24) Physical Damage to Attacks -{tags:attack}(10-20)% chance to Impale Enemies on Hit with Attacks -(40-25)% reduced Impale Duration -{tags:attack}(40-60)% chance on Melee Hit for the Strongest Impale on target to last for 1 additional Hit -]], - [[ Screams of the desiccated Leather Belt diff --git a/src/Data/Uniques/amulet.lua b/src/Data/Uniques/amulet.lua index af2da0b5be..81b6e2a842 100644 --- a/src/Data/Uniques/amulet.lua +++ b/src/Data/Uniques/amulet.lua @@ -1362,4 +1362,32 @@ Implicits: 1 {variant:2}{tags:jewellery_defense}+(50-100) to maximum Energy Shield {tags:mana}(40-60)% reduced maximum Mana Skills Cost Energy Shield instead of Mana or Life -]],} +]], +[[ +Bonemeld +Marble Amulet +Source: Drops from unique{Incarnation of Dread} in normal{Moment of Reverence} +Requires Level 74 +Implicits: 1 +{tags:life}Regenerate (1.2-1.6)% of Life per second +{tags:jewellery_attribute}+(10-20) to all Attributes ++(1-2) to Level of all Minion Skill Gems +{tags:jewellery_resistance}-2% to all Resistances per Minion from your Non-Vaal Skills +{tags:jewellery_defense}(3-4)% increased Defences per Minion from your Non-Vaal Skills +{tags:jewellery_resistance}Minions gain added Resistances equal to 50% of your Resistances +]], +[[ +Haunting Memories +Turquoise Amulet +Source: Drops from unique{Uber Incarnation of Neglect} in normal{Moment of Loneliness} +Requires Level 64 +Implicits: 1 +{tags:jewellery_attribute}+(16-24) to Dexterity and Intelligence ++(6-10)% chance to Suppress Spell Damage +(50-100)% of Suppressed Spell Damage taken bypasses Energy Shield +(50-100)% of Suppressed Spell Damage taken Recouped as Energy Shield +{tags:jewellery_attribute}+(20-30) to Dexterity and Intelligence +{tags:jewellery_defense}+(40-60) to maximum Energy Shield +{tags:life}+(40-60) to maximum Life +]], +} diff --git a/src/Data/Uniques/axe.lua b/src/Data/Uniques/axe.lua index 411fea6e03..6420f43a06 100644 --- a/src/Data/Uniques/axe.lua +++ b/src/Data/Uniques/axe.lua @@ -182,6 +182,17 @@ Trigger Level 20 Starfall on Melee Critical Strike (10-20)% increased Area of Effect Gain (40-60)% of Weapon Physical Damage as Extra Damage of a Random Element ]], +[[ +The Grey Wind +Spectral Axe +Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} +Requires Level 33, 85 Str, 37 Dex +(30-50)% increased Fire Damage +Attacks with this Weapon have Added Fire Damage equal to (8-12)% of Player's Maximum Life +Each Rage also grants +2% to Fire Damage Over Time Multiplier +Nearby Enemies have Fire Exposure while at maximum Rage ++(-5-5) to Maximum Rage +]], -- Weapon: Two Handed Axe [[ Atziri's Disfavour diff --git a/src/Data/Uniques/body.lua b/src/Data/Uniques/body.lua index 49ba60cc13..7b2ab285cb 100644 --- a/src/Data/Uniques/body.lua +++ b/src/Data/Uniques/body.lua @@ -916,6 +916,17 @@ Implicits: 0 20% chance to Poison on Hit with Attacks Cannot be Poisoned ]], +[[ +Rigwald's Hunt +General's Brigandine +Requires Level 66, 103 Str, 103 Dex +(160-200)% increased Armour and Evasion +Minions have (20-30)% increased Movement Speed +Minions have 1% chance to deal Double Damage per Fortification on you +(30-40)% increased Fortification Duration +Minions have (6-12)% increased Attack Speed +Increases and Reductions to Minion Maximum Life also apply to you at 15% of their value +]], -- Body: Armour/Energy Shield [[ Ambu's Charge diff --git a/src/Data/Uniques/bow.lua b/src/Data/Uniques/bow.lua index 329452da41..d76ddf3903 100644 --- a/src/Data/Uniques/bow.lua +++ b/src/Data/Uniques/bow.lua @@ -627,4 +627,19 @@ Requires Level 64, 185 Dex {variant:2}Ignites your Skills cause spread to other Enemies within 1.5 metres Recover (40-60) Life when you Ignite an Enemy ]], +[[ +Wing of the Wyvern +Imperial Bow +Source: Drops from unique{Uber Incarnation of Fear} in normal{Moment of Trauma} +Requires Level 66, 212 Dex +Implicits: 1 +(20-24)% increased Elemental Damage with Attack Skills +Trigger a Socketed Spell when a Hit from this +Weapon Freezes a Target, with a 0.25 second Cooldown +Adds (164-204) to (250-300) Cold Damage +Adds (163-199) to (241-293) Chaos Damage +(20-30)% increased Attack Speed +Your Chaos Damage can Freeze +Battlemage +]], } diff --git a/src/Data/Uniques/dagger.lua b/src/Data/Uniques/dagger.lua index 130855f45b..5219f27a2f 100644 --- a/src/Data/Uniques/dagger.lua +++ b/src/Data/Uniques/dagger.lua @@ -334,4 +334,18 @@ Implicits: 1 100% increased Critical Strike Chance against Enemies on Full Life 1% of Attack Damage Leeched as Life on Critical Strike ]], +[[ +Festering Resentment +Demon Dagger +Source: Drops from unique{Uber Incarnation of Neglect} in normal{Moment of Loneliness} +Requires Level 68, 76 Dex, 149 Int +Implicits: 1 +40% increased Global Critical Strike Chance +Trigger a Socketed Spell when you Block, with a 0.25 second Cooldown ++(30-45)% Chance to Block Spell Damage while in Off Hand +(100-150)% increased Spell Damage +(100-150)% increased Damage with Poison +Triggered Spells Poison on Hit +All Damage with Triggered Spells can Poison +]], } diff --git a/src/Data/Uniques/flask.lua b/src/Data/Uniques/flask.lua index 6987729216..d93ca26cd8 100644 --- a/src/Data/Uniques/flask.lua +++ b/src/Data/Uniques/flask.lua @@ -67,6 +67,18 @@ League: Perandus {variant:1}Grants Last Breath when you Use a Skill during Effect, for 800% of Mana Cost {variant:2}Grants Last Breath when you Use a Skill during Effect, for (450-600)% of Mana Cost ]], +[[ +Wellwater Phylactery +Colossal Mana Flask +Source: Drops from unique{Uber Incarnation of Dread} in normal{Moment of Reverence} +Requires Level 64 +(200-300)% increased Charges per use +(150-200)% increased Amount Recovered +(60-40)% less Duration +Removes (10-15)% of Life when Used +Starts Energy Shield Recharge when Used +Energy Shield Recharge is not delayed by Damage during Effect +]], -- Flask: Hybrid [[ Divination Distillate diff --git a/src/Data/Uniques/gloves.lua b/src/Data/Uniques/gloves.lua index 7bcdf492c1..fcbdc49609 100644 --- a/src/Data/Uniques/gloves.lua +++ b/src/Data/Uniques/gloves.lua @@ -201,6 +201,18 @@ Requires Level 47, 68 Str 10% chance to Knock Enemies Back on hit (30-50)% increased Projectile Damage ]], +[[ +The Caged Mammoth +Antique Gauntlets +Source: Drops from unique{Uber Incarnation of Fear} in normal{Moment of Trauma} +Requires Level 64, 58 Str +Adds (6-10) to (16-22) Physical Damage to Attacks +(8-16)% increased Attack Speed +(80-120)% increased Armour +Lose (1-3) Rage per second +5% less Damage taken per 5 Rage, up to a maximum of 30% +Maximum Rage is Halved +]], -- Gloves: Evasion [[ Great Old One's Tentacles @@ -299,6 +311,19 @@ Adds (6-10) to (33-38) Lightning Damage Critical Strikes do not inherently apply non-Damaging Ailments Inflict non-Damaging Ailments as though dealing (100-200)% more Damage ]], +[[ +Hand of the Lords +Carnal Mitts +Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} +Requires Level 68, 195 Dex, 195 Int +You cannot Cast Socketed Hex Curse Skills +Inflict Socketed Hexes on Enemies that trigger your Traps +Grants Level 30 Will of the Lords Skill +400% increased Attribute Requirements +(120-160)% increased Evasion and Energy Shield +(6-12)% increased Trap Throwing Speed +Can have up to (3-5) additional Traps placed at a time +]], -- Gloves: Energy Shield [[ Allelopathy diff --git a/src/Data/Uniques/helmet.lua b/src/Data/Uniques/helmet.lua index 139abb30d6..e58499ed44 100644 --- a/src/Data/Uniques/helmet.lua +++ b/src/Data/Uniques/helmet.lua @@ -173,6 +173,29 @@ Non-instant Warcries ignore their Cooldown when used Warcries cost +15% of Life Warcry Skills have (15-25)% increased Area of Effect ]], +[[ +Refuge in Isolation +Paladin Crown +Source: Drops from unique{Uber Incarnation of Neglect} in normal{Moment of Loneliness} +Requires Level 78, 116 Str, 116 Int +(350-650)% increased Armour +(-50--40)% to all Elemental Resistances ++(13-29)% to Chaos Resistance +(15-30)% of Elemental Damage from Hits taken as Physical Damage +Physical Damage of Enemies Hitting you is Unlucky +]], +[[ +The Hallowed Monarch +Faithful Helmet +Source: Drops from unique{Uber Incarnation of Dread} in normal{Moment of Reverence} +Requires Level 73, 101 Str, 101 Int +(150-230)% increased Armour ++(25-35)% to all Elemental Resistances +50% increased Light Radius +Link Skills can target Damageable Minions +Your Linked Minions take (75-65)% less Damage +On Killing a Rare monster, a random Linked Minion gains its Modifiers for 60 seconds +]], -- Helmet: Evasion [[ Alpha's Howl diff --git a/src/Data/Uniques/mace.lua b/src/Data/Uniques/mace.lua index 93e3ba9700..ff5126c1e2 100644 --- a/src/Data/Uniques/mace.lua +++ b/src/Data/Uniques/mace.lua @@ -231,6 +231,18 @@ Adds 5 to 8 Physical Damage per Endurance Charge {variant:1}400 Fire Damage taken per second per Endurance Charge if you've been Hit Recently {variant:2}200 Fire Damage taken per second per Endurance Charge if you've been Hit Recently ]], +[[ +The Monastery Bell +Dream Mace +Requires Level 32, 107 Str +Implicits: 1 +10% reduced Enemy Stun Threshold +(50-75)% increased Physical Damage +Adds (5-9) to (13-18) Physical Damage +(6-10)% increased Attack Speed +Chance to Block is Unlucky +Count as Blocking Attack Damage from the first target Hit with each Shield Attack +]], -- Weapon: Sceptre [[ Augyre diff --git a/src/Data/Uniques/ring.lua b/src/Data/Uniques/ring.lua index 8072d99069..c569f348d9 100644 --- a/src/Data/Uniques/ring.lua +++ b/src/Data/Uniques/ring.lua @@ -1645,4 +1645,122 @@ An Enemy Writhing Worm spawns every 2 seconds {tags:caster}20% chance to Trigger Socketed Spell on Kill, with a 0.5 second Cooldown {tags:life}Lose (10-20) Life per Enemy Killed {tags:mana}Gain (5-10) Mana per Enemy Killed -]],} +]], +[[ +Lost Unity +Formless Ring +Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} +Requires Level 42 +Implicits: 1 +{tags:jewellery_defense}(5-7)% increased Global Defences +Grants Level 30 Herald of the Hive Skill +{tags:jewellery_resistance}+(10–20)% to all Elemental Resistances +{tags:jewellery_resistance}+(23–37)% to Chaos Resistance +]], +[[ +The Sundered Will +Fugitive Ring +Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} +Requires Level 42 +Implicits: 2 +Cannot roll Modifiers of Non-Chaos Damage Types +{tags:jewellery_resistance}+2% to maximum Chaos Resistance +{tags:jewellery_attribute}+(7-13) to all Attributes +{tags:chaos_damage}Adds (7-11) to (17-23) Chaos Damage +{tags:jewellery_resistance}+(13-29)% to Chaos Resistance +(20-30)% increased Area of Effect of Aura Skills +(20-35)% reduced Reservation Efficiency of Skills +Increases and Reductions to Chaos Damage also apply to Effect of Auras from Chaos Skills at (10–15)% of their value, up to a maximum of 150% +]], +[[ +The Unseen Hue +Opal Ring +Source: Drops from unique{Uber Incarnation of Dread} in normal{Moment of Reverence} +Requires Level 80 +Variant: Scorch +Variant: Brittle +Variant: Sap +Implicits: 1 +{tags:elemental_damage}(15-25)% increased Elemental Damage +{tags:jewellery_resistance}+(5-30)% to Fire Resistance +{tags:jewellery_resistance}+(5-30)% to Cold Resistance +{tags:jewellery_resistance}+(5-30)% to Lightning Resistance +{tags:caster,attack,speed}(6-12)% increased Attack and Cast Speed +(10-20)% increased Effect of Non-Damaging Ailments +{variant:1}Hits with Prismatic Skills always Scorch +{variant:2}Hits with Prismatic Skills always inflict Brittle +{variant:3}Hits with Prismatic Skills always Sap +]],[[ +The Will of Esh +Synaptic Ring +Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} +Requires Level 42 +Implicits: 2 +Cannot roll Modifiers of Non-Lightning Damage Types +{tags:jewellery_resistance}+2% to maximum Lightning Resistance +{tags:jewellery_attribute}+(15-25) to Intelligence +{tags:elemental_damage}Adds (1-2) to (43-56) Lightning Damage +{tags:jewellery_resistance}+(20-30)% to Lightning Resistance +(20-30)% increased Area of Effect of Aura Skills +(20-35)% reduced Reservation Efficiency of Skills +Increases and Reductions to Lightning Damage also apply to Effect of Auras from Lightning Skills at (10-15)% of their value, up to a maximum of 150% +]], +[[ +The Will of Tul +Cryonic Ring +Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} +Requires Level 42 +Implicits: 2 +Cannot roll Modifiers of Non-Cold Damage Types +{tags:jewellery_resistance}+2% to maximum Cold Resistance +{tags:jewellery_attribute}+(15-25) to Dexterity +{tags:elemental_damage}Adds (8-12) to (18-26) Cold Damage +{tags:jewellery_resistance}+(20-30)% to Cold Resistance +(20-30)% increased Area of Effect of Aura Skills +(20-35)% reduced Reservation Efficiency of Skills +Increases and Reductions to Cold Damage also apply to Effect of Auras from Cold Skills at (10-15)% of their value, up to a maximum of 150% +]], +[[ +The Will of Uul-Netol +Organic Ring +Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} +Requires Level 42 +Implicits: 2 +Cannot roll Modifiers of Non-Physical Damage Types +3% additional Physical Damage Reduction +{tags:jewellery_attribute}+(15-25) to Strength +Adds (8-12) to (14-20) Physical Damage +{tags:jewellery_defense}(20-30)% increased Armour +(20-30)% increased Area of Effect of Aura Skills +(20-35)% reduced Reservation Efficiency of Skills +Increases and Reductions to Physical Damage also apply to Effect of Auras from Physical Skills at (10-15)% of their value, up to a maximum of 150% +]], +[[ +The Will of Xoph +Enthalpic Ring +Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} +Requires Level 42 +Implicits: 2 +Cannot roll Modifiers of Non-Fire Damage Types +{tags:jewellery_resistance}+2% to maximum Fire Resistance +{tags:jewellery_attribute}+(15-25) to Strength +{tags:elemental_damage}Adds (10-14) to (26-34) Fire Damage +{tags:jewellery_resistance}+(20-30)% to Fire Resistance +(20-30)% increased Area of Effect of Aura Skills +(20-35)% reduced Reservation Efficiency of Skills +Increases and Reductions to Fire Damage also apply to Effect of Auras from Fire Skills at (10-15)% of their value, up to a maximum of 150% +]], +[[ +Woespike +Steel Ring +Source: Drops from unique{Incarnation of Fear} in normal{Moment of Trauma} +Requires Level 80 +Implicits: 1 +{tags:attack,physical_damage}Adds (3-4) to (10-14) Physical Damage to Attacks +{tags:jewellery_attribute}+(25-40) to Strength and Dexterity +{tags:attack,physical_damage}Adds (8-12) to (18-24) Physical Damage to Attacks +{tags:attack}(10-20)% chance to Impale Enemies on Hit with Attacks +(40-25)% reduced Impale Duration +{tags:attack}(40-60)% chance on Melee Hit for the Strongest Impale on target to last for 1 additional Hit +]], +} diff --git a/src/Data/Uniques/shield.lua b/src/Data/Uniques/shield.lua index 34c69cb003..775d68b6cd 100644 --- a/src/Data/Uniques/shield.lua +++ b/src/Data/Uniques/shield.lua @@ -424,6 +424,19 @@ Implicits: 1 {variant:4}Reflects 1000 to 10000 Physical Damage to Attackers on Block {variant:2,3}10% of Damage you Reflect to Enemies when Hit is gained as Life ]], +[[ +Cowards' Wail +Ezomyte Tower Shield +Requires Level 64, 159 Str +Implicits: 1 ++(30-40) to maximum Life +(120-240)% increased Armour ++(5-10)% Chance to Block +Totems which would be killed by Enemies become Spectral Totems for 8 seconds instead +Skills used by Spectral Totems deal (40-50)% less Damage +Maximum (3-5) Spectral Totems +Unwavering Stance +]], -- Shield: Energy Shield [[ Apep's Slumber @@ -868,6 +881,19 @@ Implicits: 1 {variant:1}Curse Skills have 25% increased Skill Effect Duration {variant:2}Curse Skills have 100% increased Skill Effect Duration ]], +[[ +Bitter Instinct +Spiny Round Shield +Source: Drops from unique{Uber Incarnation of Neglect} in normal{Moment of Loneliness} +Requires Level 68, 85 Str, 85 Dex +Implicits: 1 +60% increased Block Recovery +(170-250)% increased Armour and Evasion +Reflects (200-300) Physical Damage to Melee Attackers +Retaliation Skills deal (50-100)% increased Damage +Damaging Retaliation Skills become Usable every 4 seconds +Retaliation Skills become Usable for (50-100)% longer +]], -- Shield: Armour/Energy Shield [[ Aegis Aurora diff --git a/src/Data/Uniques/staff.lua b/src/Data/Uniques/staff.lua index ef21219737..f6be83a811 100644 --- a/src/Data/Uniques/staff.lua +++ b/src/Data/Uniques/staff.lua @@ -737,4 +737,19 @@ Gain 1 Remembrance when you spend a total of 200 Energy Shield with no Shaper Memory Summoned Maximum 10 Remembrance Eldritch Battery -]],} +]], +[[ +Jiquani's Potential +Imperial Staff +Source: Drops from unique{It That Was Esh} and unique{It That Was Tul} in normal{Hive Colony} +Requires Level 66, 113 Str, 113 Dex +Implicits: 1 ++25% Chance to Block Spell Damage while wielding a Staff +(1-7)% increased Intelligence +(-17-17)% increased maximum Life ++(-1-1) to Level of all Spell Skill Gems +31% increased Cost of Skills +1 to (31-53) Spell Lightning Damage per 10 Intelligence +Blood Magic +]], +} diff --git a/src/Data/Uniques/sword.lua b/src/Data/Uniques/sword.lua index 576d683713..5c61379b44 100644 --- a/src/Data/Uniques/sword.lua +++ b/src/Data/Uniques/sword.lua @@ -1011,4 +1011,19 @@ Your Elemental Damage can Shock 20% increased Area of Effect for Attacks Deal no Non-Elemental Damage ]], +[[ +The Golden Charlatan +Lion Sword +Source: Drops from unique{Uber Incarnation of Dread} in normal{Moment of Reverence} +Requires Level 65, 104 Str, 122 Dex +Implicits: 1 ++50 to Strength and Dexterity ++200 Intelligence Requirement +(200-300)% increased Physical Damage +(10-16)% increased Attack Speed +(100-200)% increased Critical Strike Chance +Critical Strikes with this Weapon do not deal extra Damage +Gain a random Shrine Buff for 30 seconds when you Kill a Rare or Unique Enemy ++1 to maximum Mana per 2 Intelligence +]], } diff --git a/src/Data/Uniques/wand.lua b/src/Data/Uniques/wand.lua index ffe49a0e48..b313b11246 100644 --- a/src/Data/Uniques/wand.lua +++ b/src/Data/Uniques/wand.lua @@ -463,4 +463,17 @@ Skills fire (2-3) additional Projectiles (10-20)% increased Projectile Speed (30-50)% increased Projectile Damage Projectiles cannot continue after colliding with targets -]],} +]], +[[ +Unlight Extant +Sage Wand +Requires Level 30, 119 Int +Implicits: 1 +(17-21)% increased Spell Damage +(31-43)% increased Chaos Damage +(7-13)% increased Cast Speed ++1 to Level of all Chaos Spell Skill Gems +Chaos Skills inflict up to 15 Withered Debuffs on Hit for (5-7) seconds +Cannot Inflict Wither on targets that are not on Full Life +]], +} From a780bad9bb0f5747c01257152fbdf831f42e33c1 Mon Sep 17 00:00:00 2001 From: Paliak <91493239+Paliak@users.noreply.github.com> Date: Sat, 28 Feb 2026 23:47:47 +0100 Subject: [PATCH 05/11] FEAT: add parsing for while at minimum X charges --- src/Modules/ModParser.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index eb0207d251..558fdf8513 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -1594,6 +1594,9 @@ local modTagList = { ["while at maximum frenzy charges"] = { tag = { type = "StatThreshold", stat = "FrenzyCharges", thresholdStat = "FrenzyChargesMax" } }, ["while on full frenzy charges"] = { tag = { type = "StatThreshold", stat = "FrenzyCharges", thresholdStat = "FrenzyChargesMax" } }, ["while at maximum endurance charges"] = { tag = { type = "StatThreshold", stat = "EnduranceCharges", thresholdStat = "EnduranceChargesMax" } }, + ["while at minimum endurance charges"] = { tag = { type = "StatThreshold", stat = "EnduranceCharges", thresholdStat = "EnduranceChargesMin", upper = true } }, + ["while at minimum power charges"] = { tag = { type = "StatThreshold", stat = "PowerCharges", thresholdStat = "PowerChargesMin", upper = true } }, + ["while at minimum frenzy charges"] = { tag = { type = "StatThreshold", stat = "FrenzyCharges", thresholdStat = "FrenzyChargesMin", upper = true } }, ["while at maximum rage"] = { tag = { type = "Condition", var = "HaveMaximumRage" } }, ["while at maximum fortification"] = { tag = { type = "Condition", var = "HaveMaximumFortification" } }, ["while you have at least (%d+) crab barriers"] = function(num) return { tag = { type = "StatThreshold", stat = "CrabBarriers", threshold = num } } end, From 841428fe679257920ed560286d41331763f2d6be Mon Sep 17 00:00:00 2001 From: Paliak <91493239+Paliak@users.noreply.github.com> Date: Sun, 1 Mar 2026 00:10:19 +0100 Subject: [PATCH 06/11] FEAT: add support for Arcane Surge also grants 15% increased Life Regeneration Rate to you --- src/Modules/CalcPerform.lua | 8 +++++++- src/Modules/ModParser.lua | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 2d34c9d890..0ea1370b49 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -675,7 +675,13 @@ local function doActorMisc(env, actor) modDB:NewMod("MovementSpeed", "INC", arcaneSurgeCastSpeed, "Arcane Surge") end local arcaneSurgeDamage = modDB:Max(nil, "ArcaneSurgeDamage") or 0 - if arcaneSurgeDamage ~= 0 then modDB:NewMod("Damage", "MORE", arcaneSurgeDamage * effect, "Arcane Surge", ModFlag.Spell) end + if arcaneSurgeDamage ~= 0 then + modDB:NewMod("Damage", "MORE", arcaneSurgeDamage * effect, "Arcane Surge", ModFlag.Spell) + end + local arcaneSurgeLifeRegen = modDB:Sum("BASE", nil, "ArcaneSurgeAlsoLifeRegen") + if arcaneSurgeLifeRegen > 0 then + modDB:NewMod("LifeRegen", "INC", arcaneSurgeLifeRegen * effect, "Arcane Surge") + end end if modDB:Flag(nil, "Fanaticism") and actor.mainSkill and actor.mainSkill.skillFlags.selfCast then local effect = m_floor(75 * (1 + modDB:Sum("INC", nil, "BuffEffectOnSelf") / 100)) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 558fdf8513..bf82332f76 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2281,6 +2281,7 @@ local specialModList = { } end, ["life recovery from flasks also applies to energy shield"] = { flag("LifeFlaskAppliesToEnergyShield") }, ["increase to cast speed from arcane surge also applies to movement speed"] = { flag("ArcaneSurgeCastSpeedToMovementSpeed") }, + ["arcane surge also grants (%d+)%% increased life regeneration rate to you"] = function(num) return { mod("ArcaneSurgeAlsoLifeRegen", "BASE", num) } end, ["increases and reductions to effect of flasks applied to you also applies to effect of arcane surge on you at (%d+)%% of their value"] = function(num) return { mod("FlaskEffectToArcaneSurgeEffect", "BASE", num) } end, ["non%-instant mana recovery from flasks is also recovered as life"] = { flag("ManaFlaskAppliesToLife") }, ["life leech effects recover energy shield instead while on full life"] = { flag("ImmortalAmbition", { type = "Condition", var = "FullLife" }, { type = "Condition", var = "LeechingLife" }) }, From 025a7302f79c8877102a83cefec19f15ce8a130a Mon Sep 17 00:00:00 2001 From: Paliak <91493239+Paliak@users.noreply.github.com> Date: Mon, 2 Mar 2026 08:17:27 +0100 Subject: [PATCH 07/11] CHORE: update modcache --- src/Data/ModCache.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index db0c8df48f..e1d2cb93ef 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -853,6 +853,7 @@ c["+28 to all Attributes"]={{[1]={flags=0,keywordFlags=0,name="Str",type="BASE", c["+28 to maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type="BASE",value=28}},nil} c["+28 to maximum Mana"]={{[1]={flags=0,keywordFlags=0,name="Mana",type="BASE",value=28}},nil} c["+28% to Chaos Damage over Time Multiplier"]={{[1]={flags=0,keywordFlags=0,name="ChaosDotMultiplier",type="BASE",value=28}},nil} +c["+28% to Chaos Resistance"]={{[1]={flags=0,keywordFlags=0,name="ChaosResist",type="BASE",value=28}},nil} c["+28% to Cold Damage over Time Multiplier"]={{[1]={flags=0,keywordFlags=0,name="ColdDotMultiplier",type="BASE",value=28}},nil} c["+28% to Cold Resistance"]={{[1]={flags=0,keywordFlags=0,name="ColdResist",type="BASE",value=28}},nil} c["+28% to Fire Damage over Time Multiplier"]={{[1]={flags=0,keywordFlags=0,name="FireDotMultiplier",type="BASE",value=28}},nil} @@ -2499,11 +2500,13 @@ c["10% increased Brand Damage"]={{[1]={flags=0,keywordFlags=1048576,name="Damage c["10% increased Burning Damage for each time you have Shocked a Non-Shocked Enemy Recently, up to a maximum of 120%"]={{[1]={[1]={limit=120,limitTotal=true,type="Multiplier",var="ShockedNonShockedEnemyRecently"},flags=0,keywordFlags=134217728,name="FireDamage",type="INC",value=10}},nil} c["10% increased Cast Speed"]={{[1]={flags=16,keywordFlags=0,name="Speed",type="INC",value=10}},nil} c["10% increased Cast Speed during Effect"]={{[1]={[1]={type="Condition",var="UsingFlask"},flags=16,keywordFlags=0,name="Speed",type="INC",value=10}},nil} +c["10% increased Cast Speed for each different Non-Instant Spell you've Cast Recently"]={{[1]={[1]={type="Multiplier",var="NonInstantSpellCastRecently"},flags=16,keywordFlags=0,name="Speed",type="INC",value=10}},nil} c["10% increased Cast Speed if you've dealt a Critical Strike Recently"]={{[1]={[1]={type="Condition",var="CritRecently"},flags=16,keywordFlags=0,name="Speed",type="INC",value=10}},nil} c["10% increased Cast Speed while Dual Wielding"]={{[1]={[1]={type="Condition",var="DualWielding"},flags=16,keywordFlags=0,name="Speed",type="INC",value=10}},nil} c["10% increased Chaos Damage"]={{[1]={flags=0,keywordFlags=0,name="ChaosDamage",type="INC",value=10}},nil} c["10% increased Cold Damage"]={{[1]={flags=0,keywordFlags=0,name="ColdDamage",type="INC",value=10}},nil} c["10% increased Cold Damage taken"]={{[1]={flags=0,keywordFlags=0,name="ColdDamageTaken",type="INC",value=10}},nil} +c["10% increased Cooldown Recovery Rate"]={{[1]={flags=0,keywordFlags=0,name="CooldownRecovery",type="INC",value=10}},nil} c["10% increased Cooldown Recovery Rate for Stance Skills"]={{[1]={[1]={skillType=104,type="SkillType"},flags=0,keywordFlags=0,name="CooldownRecovery",type="INC",value=10}},nil} c["10% increased Cooldown Recovery Rate for throwing Traps"]={{[1]={flags=0,keywordFlags=4096,name="CooldownRecovery",type="INC",value=10}},nil} c["10% increased Cooldown Recovery of Travel Skills per Frenzy Charge"]={{[1]={[1]={skillType=90,type="SkillType"},[2]={type="Multiplier",var="FrenzyCharge"},flags=0,keywordFlags=0,name="CooldownRecovery",type="INC",value=10}},nil} @@ -7862,6 +7865,8 @@ c["Can't use Belts"]={{[1]={[1]={slotName="Belt",type="DisablesItem"},flags=0,ke c["Can't use Chest armour"]={{[1]={[1]={slotName="Body Armour",type="DisablesItem"},flags=0,keywordFlags=0,name="CanNotUseItem",type="Flag",value=1}},nil} c["Can't use Flask in Fifth Slot"]={{[1]={[1]={excludeItemType="Tincture",slotName="Flask 5",type="DisablesItem"},flags=0,keywordFlags=0,name="CanNotUseItem",type="Flag",value=1}},nil} c["Can't use Helmets"]={{[1]={[1]={slotName="Helmet",type="DisablesItem"},flags=0,keywordFlags=0,name="CanNotUseItem",type="Flag",value=1}},nil} +c["Can't use Life Flasks"]={nil,"Can't use Life Flasks "} +c["Can't use Life Flasks +65 to maximum Mana"]={nil,"Can't use Life Flasks +65 to maximum Mana "} c["Can't use other Rings"]={{[1]={[1]={slotName="Ring 2",type="DisablesItem"},[2]={num=1,type="SlotNumber"},flags=0,keywordFlags=0,name="CanNotUseItem",type="Flag",value=1},[2]={[1]={slotName="Ring 1",type="DisablesItem"},[2]={num=2,type="SlotNumber"},flags=0,keywordFlags=0,name="CanNotUseItem",type="Flag",value=1}},nil} c["Cannot Be Slowed to Below Base Speed"]={{[1]={[1]={effectType="Global",type="GlobalEffect",unscalable=true},flags=0,keywordFlags=0,name="MinimumActionSpeed",type="MAX",value=100}},nil} c["Cannot Be Stunned while you have Energy Shield"]={{[1]={[1]={type="Condition",var="HaveEnergyShield"},flags=0,keywordFlags=0,name="StunImmune",type="FLAG",value=true}},nil} @@ -9401,6 +9406,7 @@ c["Increases and Reductions to Chaos Damage also apply to Effect of Auras from C c["Increases and Reductions to Chaos Damage also apply to Effect of Auras from Chaos Skills at 15% of their value, up to a maximum of 150%"]={{[1]={flags=0,keywordFlags=0,name="ChaosDamageAppliesToChaosAuraEffect",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="ImprovedChaosDamageAppliesToChaosAuraEffect",type="BASE",value=15},[3]={flags=0,keywordFlags=0,name="ChaosDamageAppliesToChaosAuraEffectLimit",type="MAX",value=150}},nil} c["Increases and Reductions to Cold Damage also apply to Effect of Auras from Cold Skills at 13% of their value, up to a maximum of 150%"]={{[1]={flags=0,keywordFlags=0,name="ColdDamageAppliesToColdAuraEffect",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="ImprovedColdDamageAppliesToColdAuraEffect",type="BASE",value=13},[3]={flags=0,keywordFlags=0,name="ColdDamageAppliesToColdAuraEffectLimit",type="MAX",value=150}},nil} c["Increases and Reductions to Cold Damage also apply to Effect of Auras from Cold Skills at 15% of their value, up to a maximum of 150%"]={{[1]={flags=0,keywordFlags=0,name="ColdDamageAppliesToColdAuraEffect",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="ImprovedColdDamageAppliesToColdAuraEffect",type="BASE",value=15},[3]={flags=0,keywordFlags=0,name="ColdDamageAppliesToColdAuraEffectLimit",type="MAX",value=150}},nil} +c["Increases and Reductions to Effect of Flasks applied to you also applies to Effect of Arcane Surge on you at 210% of their value"]={{[1]={flags=0,keywordFlags=0,name="FlaskEffectToArcaneSurgeEffect",type="BASE",value=210}},nil} c["Increases and Reductions to Fire Damage also apply to Effect of Auras from Fire Skills at 13% of their value, up to a maximum of 150%"]={{[1]={flags=0,keywordFlags=0,name="FireDamageAppliesToFireAuraEffect",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="ImprovedFireDamageAppliesToFireAuraEffect",type="BASE",value=13},[3]={flags=0,keywordFlags=0,name="FireDamageAppliesToFireAuraEffectLimit",type="MAX",value=150}},nil} c["Increases and Reductions to Fire Damage also apply to Effect of Auras from Fire Skills at 15% of their value, up to a maximum of 150%"]={{[1]={flags=0,keywordFlags=0,name="FireDamageAppliesToFireAuraEffect",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="ImprovedFireDamageAppliesToFireAuraEffect",type="BASE",value=15},[3]={flags=0,keywordFlags=0,name="FireDamageAppliesToFireAuraEffectLimit",type="MAX",value=150}},nil} c["Increases and Reductions to Light Radius also apply to Accuracy"]={{[1]={flags=0,keywordFlags=0,name="LightRadiusAppliesToAccuracy",type="FLAG",value=true}},nil} @@ -9667,6 +9673,9 @@ c["Magic Utility Flasks applied to you have 30% increased Effect"]={{[1]={[1]={a c["Malevolence has 50% increased Mana Reservation Efficiency"]={{[1]={[1]={includeTransfigured=true,skillName="Malevolence",type="SkillName"},flags=0,keywordFlags=0,name="ManaReservationEfficiency",type="INC",value=50}},nil} c["Malevolence has 60% increased Aura Effect"]={{[1]={[1]={includeTransfigured=true,skillName="Malevolence",type="SkillName"},flags=0,keywordFlags=0,name="AuraEffect",type="INC",value=60}},nil} c["Malevolence has no Reservation"]={{[1]={[1]={skillId="Malevolence",type="SkillId"},[2]={neg=true,skillType=119,type="SkillType"},flags=0,keywordFlags=0,name="SkillData",type="LIST",value={key="manaReservationFlat",value=0}},[2]={[1]={skillId="Malevolence",type="SkillId"},[2]={neg=true,skillType=119,type="SkillType"},flags=0,keywordFlags=0,name="SkillData",type="LIST",value={key="lifeReservationFlat",value=0}},[3]={[1]={skillId="Malevolence",type="SkillId"},[2]={neg=true,skillType=119,type="SkillType"},flags=0,keywordFlags=0,name="SkillData",type="LIST",value={key="manaReservationPercent",value=0}},[4]={[1]={skillId="Malevolence",type="SkillId"},[2]={neg=true,skillType=119,type="SkillType"},flags=0,keywordFlags=0,name="SkillData",type="LIST",value={key="lifeReservationPercent",value=0}}},nil} +c["Mana Flask Effects are not removed when Unreserved Mana is Filled"]={nil,"Mana Flask Effects are not removed when Unreserved Mana is Filled "} +c["Mana Flask Effects are not removed when Unreserved Mana is Filled Mana Flask Effects do not Queue"]={nil,"Mana Flask Effects are not removed when Unreserved Mana is Filled Mana Flask Effects do not Queue "} +c["Mana Flask Effects do not Queue"]={nil,"Mana Flask Effects do not Queue "} c["Mana Flasks gain 1 Charge every 3 seconds"]={{[1]={flags=0,keywordFlags=0,name="ManaFlaskChargesGenerated",type="BASE",value=0.33333333333333}},nil} c["Mana Flasks gain 2 Charges every 3 seconds"]={{[1]={flags=0,keywordFlags=0,name="ManaFlaskChargesGenerated",type="BASE",value=0.66666666666667}},nil} c["Mana Flasks gain 2 charges every 3 seconds"]={{[1]={flags=0,keywordFlags=0,name="ManaFlaskChargesGenerated",type="BASE",value=0.66666666666667}},nil} @@ -12090,6 +12099,8 @@ c["Trigger level 1 Summon Spirit of Maata Skill when you reach Low Life while a c["Trigger level 1 Summon Spirit of Rakiata Skill on Critical Strike against Marked Unique Enemy"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="TriggerSummonedAncestorRakiata",triggered=true}},[2]={[1]={skillId="TriggerSummonedAncestorRakiata",type="SkillId"},flags=0,keywordFlags=0,name="ExtraSkillMod",type="LIST",value={mod={flags=0,keywordFlags=0,name="SkillData",type="LIST",value={key="triggerOnCrit",value=true}}}}},nil} c["Trigger level 1 Summon Spirit of Tawhanuku Skill when Energy Shield Recharge starts while a Unique Enemy is in your Presence"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="TriggerSummonedAncestorTawhanuku",triggered=true}}},nil} c["Trigger level 1 Summon Spirit of Utula Skill on taking a Savage Hit from a Unique Enemy"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="TriggerSummonedAncestorUtula",triggered=true}}},nil} +c["Trigger level 20 Suspend in Time on Casting a Spell"]={nil,"Trigger level 20 Suspend in Time on Casting a Spell "} +c["Trigger level 20 Suspend in Time on Casting a Spell 60% increased Spell Damage"]={nil,"Trigger level 20 Suspend in Time on Casting a Spell 60% increased Spell Damage "} c["Triggered Spells Poison on Hit"]={{[1]={[1]={skillType=41,type="SkillType"},flags=0,keywordFlags=131072,name="PoisonChance",type="BASE",value=100}},nil} c["Triggers Level 15 Manifest Dancing Dervishes on Rampage"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=15,skillId="ManifestDancingDervishes",triggered=true}}},nil} c["Triggers Level 20 Blinding Aura when Equipped"]={{},nil} @@ -12500,12 +12511,14 @@ c["You gain Phasing for 3 seconds on using a Vaal Skill You gain Phasing for 10 c["You gain an Endurance Charge on Kill"]={nil,"an Endurance Charge "} c["You gain an Endurance Charge on Kill You gain Onslaught for 1 seconds per Endurance Charge when Hit"]={{[1]={[1]={type="Condition",var="KilledRecently"},flags=0,keywordFlags=0,name="Condition:Onslaught",type="FLAG",value=true}},"an Endurance Charge You gain per Endurance Charge when Hit "} c["You grant 6 Frenzy Charges to allies on Death"]={nil,"You grant 6 Frenzy Charges to allies on Death "} +c["You have Arcane Surge during Effect of any Mana Flask"]={{[1]={[1]={type="Condition",var="UsingManaFlask"},flags=0,keywordFlags=0,name="Condition:ArcaneSurge",type="FLAG",value=true}},nil} c["You have Consecrated Ground around you while"]={nil,"Consecrated Ground around you while "} c["You have Consecrated Ground around you while stationary"]={{[1]={[1]={type="Condition",var="Stationary"},flags=0,keywordFlags=0,name="Condition:OnConsecratedGround",type="FLAG",value=true}},nil} c["You have Consecrated Ground around you while stationary if Strength is your highest Attribute"]={{[1]={[1]={type="Condition",var="StrHighestAttribute"},[2]={type="Condition",var="Stationary"},flags=0,keywordFlags=0,name="Condition:OnConsecratedGround",type="FLAG",value=true}},nil} c["You have Crimson Dance if you have dealt a Critical Strike Recently"]={{[1]={[1]={type="Condition",var="CritRecently"},flags=0,keywordFlags=0,name="Keystone",type="LIST",value="Crimson Dance"}},nil} c["You have Crimson Dance while you have Cat's Stealth"]={{[1]={[1]={type="Condition",var="AffectedByCat'sStealth"},flags=0,keywordFlags=0,name="Keystone",type="LIST",value="Crimson Dance"}},nil} c["You have Culling Strike against Cursed Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Cursed"},flags=0,keywordFlags=0,name="CullPercent",type="MAX",value=10}},nil} +c["You have Diamond Shrine Buff while affected by no Flasks"]={{[1]={[1]={neg=true,type="Condition",var="UsingFlask"},flags=0,keywordFlags=0,name="Condition:DiamondShrine",type="FLAG",value=true}},nil} c["You have Elemental Conflux if the stars are aligned"]={{[1]={[1]={type="Condition",var="StarsAreAligned"},flags=0,keywordFlags=0,name="PhysicalCanChill",type="FLAG",value=true},[2]={[1]={type="Condition",var="StarsAreAligned"},flags=0,keywordFlags=0,name="LightningCanChill",type="FLAG",value=true},[3]={[1]={type="Condition",var="StarsAreAligned"},flags=0,keywordFlags=0,name="FireCanChill",type="FLAG",value=true},[4]={[1]={type="Condition",var="StarsAreAligned"},flags=0,keywordFlags=0,name="ChaosCanChill",type="FLAG",value=true},[5]={[1]={type="Condition",var="StarsAreAligned"},flags=0,keywordFlags=0,name="EnemyShockChance",type="BASE",value=100},[6]={[1]={type="Condition",var="StarsAreAligned"},flags=0,keywordFlags=0,name="PhysicalCanShock",type="FLAG",value=true},[7]={[1]={type="Condition",var="StarsAreAligned"},flags=0,keywordFlags=0,name="ColdCanShock",type="FLAG",value=true},[8]={[1]={type="Condition",var="StarsAreAligned"},flags=0,keywordFlags=0,name="FireCanShock",type="FLAG",value=true},[9]={[1]={type="Condition",var="StarsAreAligned"},flags=0,keywordFlags=0,name="ChaosCanShock",type="FLAG",value=true},[10]={[1]={type="Condition",var="StarsAreAligned"},flags=0,keywordFlags=0,name="EnemyIgniteChance",type="BASE",value=100},[11]={[1]={type="Condition",var="StarsAreAligned"},flags=0,keywordFlags=0,name="PhysicalCanIgnite",type="FLAG",value=true},[12]={[1]={type="Condition",var="StarsAreAligned"},flags=0,keywordFlags=0,name="LightningCanIgnite",type="FLAG",value=true},[13]={[1]={type="Condition",var="StarsAreAligned"},flags=0,keywordFlags=0,name="ColdCanIgnite",type="FLAG",value=true},[14]={[1]={type="Condition",var="StarsAreAligned"},flags=0,keywordFlags=0,name="ChaosCanIgnite",type="FLAG",value=true}},nil} c["You have Everlasting Sacrifice if at least 6 Corrupted Items are Equipped"]={{[1]={[1]={threshold=6,type="MultiplierThreshold",var="CorruptedItem"},flags=0,keywordFlags=0,name="Condition:EverlastingSacrifice",type="FLAG",value=true}},nil} c["You have Far Shot while you do not have Iron Reflexes"]={{[1]={[1]={neg=true,type="Condition",var="HaveIronReflexes"},flags=0,keywordFlags=0,name="FarShot",type="FLAG",value=true}},nil} @@ -12530,6 +12543,7 @@ c["You have Phasing if you've Killed Recently"]={{[1]={[1]={type="Condition",var c["You have Phasing while affected by Haste"]={{[1]={[1]={type="Condition",var="AffectedByHaste"},flags=0,keywordFlags=0,name="Condition:Phasing",type="FLAG",value=true}},nil} c["You have Phasing while on Low Life"]={{[1]={[1]={type="Condition",var="LowLife"},flags=0,keywordFlags=0,name="Condition:Phasing",type="FLAG",value=true}},nil} c["You have Phasing while you have Cat's Stealth"]={{[1]={[1]={type="Condition",var="AffectedByCat'sStealth"},flags=0,keywordFlags=0,name="Condition:Phasing",type="FLAG",value=true}},nil} +c["You have Resistance Shrine Buff while affected by no Flasks"]={{[1]={[1]={neg=true,type="Condition",var="UsingFlask"},flags=0,keywordFlags=0,name="Condition:ResistanceShrine",type="FLAG",value=true}},nil} c["You have Resolute Technique while you do not have Elemental Overload"]={{[1]={[1]={neg=true,type="Condition",var="HaveElementalOverload"},flags=0,keywordFlags=0,name="Keystone",type="LIST",value="Resolute Technique"}},nil} c["You have Sacrifice of Blood if at least 8 Corrupted Items are Equipped"]={nil,"Sacrifice of Blood if at least 8 Corrupted Items are Equipped "} c["You have Scorching Conflux, Brittle Conflux and Sapping Conflux while your two highest Attributes are equal"]={{[1]={[1]={type="Condition",var="TwoHighestAttributesEqual"},flags=0,keywordFlags=0,name="EnemyScorchChance",type="BASE",value=100},[2]={[1]={type="Condition",var="TwoHighestAttributesEqual"},flags=0,keywordFlags=0,name="EnemyBrittleChance",type="BASE",value=100},[3]={[1]={type="Condition",var="TwoHighestAttributesEqual"},flags=0,keywordFlags=0,name="EnemySapChance",type="BASE",value=100},[4]={[1]={type="Condition",var="TwoHighestAttributesEqual"},flags=0,keywordFlags=0,name="PhysicalCanScorch",type="FLAG",value=true},[5]={[1]={type="Condition",var="TwoHighestAttributesEqual"},flags=0,keywordFlags=0,name="LightningCanScorch",type="FLAG",value=true},[6]={[1]={type="Condition",var="TwoHighestAttributesEqual"},flags=0,keywordFlags=0,name="ColdCanScorch",type="FLAG",value=true},[7]={[1]={type="Condition",var="TwoHighestAttributesEqual"},flags=0,keywordFlags=0,name="ChaosCanScorch",type="FLAG",value=true},[8]={[1]={type="Condition",var="TwoHighestAttributesEqual"},flags=0,keywordFlags=0,name="PhysicalCanBrittle",type="FLAG",value=true},[9]={[1]={type="Condition",var="TwoHighestAttributesEqual"},flags=0,keywordFlags=0,name="LightningCanBrittle",type="FLAG",value=true},[10]={[1]={type="Condition",var="TwoHighestAttributesEqual"},flags=0,keywordFlags=0,name="FireCanBrittle",type="FLAG",value=true},[11]={[1]={type="Condition",var="TwoHighestAttributesEqual"},flags=0,keywordFlags=0,name="ChaosCanBrittle",type="FLAG",value=true},[12]={[1]={type="Condition",var="TwoHighestAttributesEqual"},flags=0,keywordFlags=0,name="PhysicalCanSap",type="FLAG",value=true},[13]={[1]={type="Condition",var="TwoHighestAttributesEqual"},flags=0,keywordFlags=0,name="ColdCanSap",type="FLAG",value=true},[14]={[1]={type="Condition",var="TwoHighestAttributesEqual"},flags=0,keywordFlags=0,name="FireCanSap",type="FLAG",value=true},[15]={[1]={type="Condition",var="TwoHighestAttributesEqual"},flags=0,keywordFlags=0,name="ChaosCanSap",type="FLAG",value=true}},nil} From 09cb8a916cc31c155d39f6f03ad390f59667ad62 Mon Sep 17 00:00:00 2001 From: Paliak <91493239+Paliak@users.noreply.github.com> Date: Mon, 2 Mar 2026 18:21:23 +0100 Subject: [PATCH 08/11] FEAT: add Replica Gifts from Above --- src/Data/ModCache.lua | 9 +++++++-- src/Data/Uniques/Special/New.lua | 12 ++++++++++++ src/Modules/CalcTriggers.lua | 7 +++++++ src/Modules/ModParser.lua | 1 + 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index e1d2cb93ef..9abf270f92 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -3153,6 +3153,7 @@ c["14% increased Damage with One Handed Weapons"]={{[1]={flags=268435460,keyword c["14% increased Elemental Damage"]={{[1]={flags=0,keywordFlags=0,name="ElementalDamage",type="INC",value=14}},nil} c["14% increased Evasion Rating"]={{[1]={flags=0,keywordFlags=0,name="Evasion",type="INC",value=14}},nil} c["14% increased Evasion Rating and Armour"]={{[1]={flags=0,keywordFlags=0,name="ArmourAndEvasion",type="INC",value=14}},nil} +c["14% increased Light Radius"]={{[1]={flags=0,keywordFlags=0,name="LightRadius",type="INC",value=14}},nil} c["14% increased Mine Damage"]={{[1]={flags=0,keywordFlags=8192,name="Damage",type="INC",value=14}},nil} c["14% increased Physical Attack Damage while holding a Shield"]={{[1]={[1]={type="Condition",varList={[1]="UsingShield"}},flags=1,keywordFlags=0,name="PhysicalDamage",type="INC",value=14}},nil} c["14% increased Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="PhysicalDamage",type="INC",value=14}},nil} @@ -5020,6 +5021,7 @@ c["300% increased Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="Physical c["305% increased Armour, Evasion and Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="Defences",type="INC",value=305}},nil} c["31% increased Cast Speed"]={{[1]={flags=16,keywordFlags=0,name="Speed",type="INC",value=31}},nil} c["31% increased Cost of Skills"]={{[1]={flags=0,keywordFlags=0,name="Cost",type="INC",value=31}},nil} +c["31% increased Global Critical Strike Chance"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="CritChance",type="INC",value=31}},nil} c["31% increased Light Radius"]={{[1]={flags=0,keywordFlags=0,name="LightRadius",type="INC",value=31}},nil} c["31% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type="INC",value=31}},nil} c["310% increased Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="PhysicalDamage",type="INC",value=310}},nil} @@ -5482,6 +5484,7 @@ c["45% increased Global Damage"]={{[1]={[1]={type="Global"},flags=0,keywordFlags c["45% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=45}},nil} c["45% increased Physical Damage taken"]={{[1]={flags=0,keywordFlags=0,name="PhysicalDamageTaken",type="INC",value=45}},nil} c["45% increased Projectile Attack Damage while you have at least 200 Dexterity"]={{[1]={[1]={stat="Dex",threshold=200,type="StatThreshold"},flags=1025,keywordFlags=0,name="Damage",type="INC",value=45}},nil} +c["45% increased Rarity of Items Dropped by Enemies killed with a Critical Strike"]={{[1]={[1]={type="Condition",var="CritRecently"},[2]={type="Condition",var="KilledRecently"},flags=0,keywordFlags=0,name="LootRarity",type="INC",value=45}},nil} c["45% increased Rarity of Items found"]={{[1]={flags=0,keywordFlags=0,name="LootRarity",type="INC",value=45}},nil} c["45% increased Skill Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=45}},nil} c["45% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type="INC",value=45}},nil} @@ -5500,6 +5503,7 @@ c["47% chance to Blind Enemies on hit 264% increased Physical Damage"]={{[1]={fl c["47% chance to Impale Enemies on Hit with Attacks"]={{[1]={flags=0,keywordFlags=65536,name="ImpaleChance",type="BASE",value=47}},nil} c["47% chance to Poison on Hit"]={{[1]={flags=0,keywordFlags=0,name="PoisonChance",type="BASE",value=47}},nil} c["47% chance to cause Bleeding on Hit"]={{[1]={flags=0,keywordFlags=0,name="BleedChance",type="BASE",value=47}},nil} +c["47% increased Rarity of Items Dropped by Enemies killed with a Critical Strike"]={{[1]={[1]={type="Condition",var="CritRecently"},[2]={type="Condition",var="KilledRecently"},flags=0,keywordFlags=0,name="LootRarity",type="INC",value=47}},nil} c["475% increased Evasion Rating"]={{[1]={flags=0,keywordFlags=0,name="Evasion",type="INC",value=475}},nil} c["48 Life gained when you Block"]={{[1]={flags=0,keywordFlags=0,name="LifeOnBlock",type="BASE",value=48}},nil} c["48% increased Cooldown Recovery Rate of Movement Skills"]={{[1]={flags=0,keywordFlags=8,name="CooldownRecovery",type="INC",value=48}},nil} @@ -5810,8 +5814,7 @@ c["50% increased Projectile Speed"]={{[1]={flags=0,keywordFlags=0,name="Projecti c["50% increased Projectile Speed while wielding a Dagger"]={{[1]={[1]={type="Condition",var="UsingDagger"},flags=0,keywordFlags=0,name="ProjectileSpeed",type="INC",value=50}},nil} c["50% increased Quantity of Items Dropped by Slain Normal Enemies"]={{[1]={flags=0,keywordFlags=0,name="LootQuantityNormalEnemies",type="INC",value=50}},nil} c["50% increased Rage Effect"]={{[1]={flags=0,keywordFlags=0,name="RageEffect",type="INC",value=50}},nil} -c["50% increased Rarity of Items Dropped by Enemies killed with a Critical Strike"]={{[1]={flags=0,keywordFlags=0,name="LootRarity",type="INC",value=50}}," by Enemies killed with a Critical Strike "} -c["50% increased Rarity of Items Dropped by Enemies killed with a Critical Strike 50% increased Damage while on Consecrated Ground"]={{[1]={[1]={type="Condition",var="OnConsecratedGround"},flags=0,keywordFlags=0,name="LootRarity",type="INC",value=50}}," by Enemies killed with a Critical Strike 50% increased Damage "} +c["50% increased Rarity of Items Dropped by Enemies killed with a Critical Strike"]={{[1]={[1]={type="Condition",var="CritRecently"},[2]={type="Condition",var="KilledRecently"},flags=0,keywordFlags=0,name="LootRarity",type="INC",value=50}},nil} c["50% increased Rarity of Items Dropped by Slain Shocked enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Shocked"},flags=0,keywordFlags=0,name="LootRarity",type="INC",value=50}},nil} c["50% increased Rarity of Items found"]={{[1]={flags=0,keywordFlags=0,name="LootRarity",type="INC",value=50}},nil} c["50% increased Rarity of Items found during Effect"]={{[1]={[1]={type="Condition",var="UsingFlask"},flags=0,keywordFlags=0,name="LootRarity",type="INC",value=50}},nil} @@ -9435,6 +9438,7 @@ c["Inflict Decay on Enemies you Curse with Hex Skills, dealing 700 Chaos Damage c["Inflict Fire Exposure on Hit if you've cast Flammability in the past 10 seconds"]={{[1]={[1]={type="Condition",var="SelfCastFlammability"},[2]={type="Condition",var="Effective"},flags=4,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="FireExposure",type="BASE",value=-10}}}},nil} c["Inflict Fire, Cold and Lightning Exposure on Enemies when you Suppress their Spell Damage"]={{[1]={[1]={type="Condition",var="Effective"},[2]={type="Condition",var="SuppressedRecently"},flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="FireExposure",type="BASE",value=-10}}},[2]={[1]={type="Condition",var="Effective"},[2]={type="Condition",var="SuppressedRecently"},flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="ColdExposure",type="BASE",value=-10}}},[3]={[1]={type="Condition",var="Effective"},[2]={type="Condition",var="SuppressedRecently"},flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="LightningExposure",type="BASE",value=-10}}}},nil} c["Inflict Fire, Cold and Lightning Exposure on nearby Enemies when used"]={{[1]={[1]={type="Condition",var="Effective"},[2]={type="Condition",var="UsingFlask"},flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="FireExposure",type="BASE",value=-10}}},[2]={[1]={type="Condition",var="Effective"},[2]={type="Condition",var="UsingFlask"},flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="ColdExposure",type="BASE",value=-10}}},[3]={[1]={type="Condition",var="Effective"},[2]={type="Condition",var="UsingFlask"},flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="LightningExposure",type="BASE",value=-10}}}},nil} +c["Inflict Hallowing Flame on Hit while on Consecrated Ground"]={nil,"Inflict Hallowing Flame on Hit while on Consecrated Ground "} c["Inflict Lightning Exposure on Hit if you've cast Conductivity in the past 10 seconds"]={{[1]={[1]={type="Condition",var="SelfCastConductivity"},[2]={type="Condition",var="Effective"},flags=4,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="LightningExposure",type="BASE",value=-10}}}},nil} c["Inflict Withered for 2 seconds on Hit if you've cast Despair in the past 10 seconds"]={{[1]={[1]={type="Condition",var="SelfCastDespair"},flags=0,keywordFlags=0,name="Condition:CanWither",type="FLAG",value=true}},nil} c["Inflict Withered for 2 seconds on Hit with this Weapon"]={{[1]={flags=0,keywordFlags=0,name="Condition:CanWither",type="FLAG",value=true}},nil} @@ -12099,6 +12103,7 @@ c["Trigger level 1 Summon Spirit of Maata Skill when you reach Low Life while a c["Trigger level 1 Summon Spirit of Rakiata Skill on Critical Strike against Marked Unique Enemy"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="TriggerSummonedAncestorRakiata",triggered=true}},[2]={[1]={skillId="TriggerSummonedAncestorRakiata",type="SkillId"},flags=0,keywordFlags=0,name="ExtraSkillMod",type="LIST",value={mod={flags=0,keywordFlags=0,name="SkillData",type="LIST",value={key="triggerOnCrit",value=true}}}}},nil} c["Trigger level 1 Summon Spirit of Tawhanuku Skill when Energy Shield Recharge starts while a Unique Enemy is in your Presence"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="TriggerSummonedAncestorTawhanuku",triggered=true}}},nil} c["Trigger level 1 Summon Spirit of Utula Skill on taking a Savage Hit from a Unique Enemy"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="TriggerSummonedAncestorUtula",triggered=true}}},nil} +c["Trigger level 10 Consecrate when you deal a Critical Strike"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=10,skillId="TriggeredConsecrate",triggered=true}}},nil} c["Trigger level 20 Suspend in Time on Casting a Spell"]={nil,"Trigger level 20 Suspend in Time on Casting a Spell "} c["Trigger level 20 Suspend in Time on Casting a Spell 60% increased Spell Damage"]={nil,"Trigger level 20 Suspend in Time on Casting a Spell 60% increased Spell Damage "} c["Triggered Spells Poison on Hit"]={{[1]={[1]={skillType=41,type="SkillType"},flags=0,keywordFlags=131072,name="PoisonChance",type="BASE",value=100}},nil} diff --git a/src/Data/Uniques/Special/New.lua b/src/Data/Uniques/Special/New.lua index 7674490db6..099d50aa75 100644 --- a/src/Data/Uniques/Special/New.lua +++ b/src/Data/Uniques/Special/New.lua @@ -39,5 +39,17 @@ Increases and Reductions to Effect of Flasks applied to you also applies to Effe You have Arcane Surge during Effect of any Mana Flask Mana Flask Effects are not removed when Unreserved Mana is Filled Mana Flask Effects do not Queue +]], +[[ +Replica Gifts from Above +Diamond Ring +Requires Level 28 +Implicits: 1 +{tags:critical}(20-30)% increased Global Critical Strike Chance +Trigger level 10 Consecrate when you deal a Critical Strike +31% increased Global Critical Strike Chance +14% increased Light Radius +47% increased Rarity of Items Dropped by Enemies killed with a Critical Strike +Inflict Hallowing Flame on Hit while on Consecrated Ground ]] } \ No newline at end of file diff --git a/src/Modules/CalcTriggers.lua b/src/Modules/CalcTriggers.lua index 58bf6e6fa7..910ee1b8af 100644 --- a/src/Modules/CalcTriggers.lua +++ b/src/Modules/CalcTriggers.lua @@ -1485,6 +1485,13 @@ local configTable = { return skill.skillData.triggeredBySettlersEnchantTrigger and slotMatch(env, skill) end} end, + ["replica gifts from above"] = function() + return { + triggerSkillCond = function(env, skill) + return not skill.skillTypes[SkillType.SummonsTotem] and skill.skillTypes[SkillType.Attack] + end + } + end, } -- Find unique item trigger name diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index bf82332f76..917579cddf 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -1258,6 +1258,7 @@ local modTagList = { [" on critical strike"] = { tag = { type = "Condition", var = "CriticalStrike" } }, ["from critical strikes"] = { tag = { type = "Condition", var = "CriticalStrike" } }, ["with critical strikes"] = { tag = { type = "Condition", var = "CriticalStrike" } }, + ["by enemies killed with a critical strike"] = { tagList = { { type = "Condition", var = "CritRecently" }, { type = "Condition", var = "KilledRecently" } } }, ["while affected by auras you cast"] = { tag = { type = "Condition", var = "AffectedByAura" } }, ["for you and nearby allies"] = { newAura = true }, ["to you and allies"] = { newAura = true }, From aa9b60b2079ec9c762f539410cfa1454bcf657a1 Mon Sep 17 00:00:00 2001 From: Paliak <91493239+Paliak@users.noreply.github.com> Date: Mon, 2 Mar 2026 19:00:54 +0100 Subject: [PATCH 09/11] FEAT: add Khatal's Weeping --- src/Data/ModCache.lua | 6 ++++++ src/Data/Uniques/Special/New.lua | 12 ++++++++++++ src/Modules/ConfigOptions.lua | 3 +++ src/Modules/ModParser.lua | 4 ++++ 4 files changed, 25 insertions(+) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 9abf270f92..b0c07bb3be 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -1750,6 +1750,7 @@ c["+88 to maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type="BASE",v c["+88% to Cold Resistance when Socketed with a Green Gem"]={{[1]={[1]={keyword="dexterity",slotName="{SlotName}",sockets={[1]=1},type="SocketedIn"},flags=0,keywordFlags=0,name="SocketProperty",type="LIST",value={value={flags=0,keywordFlags=0,name="ColdResist",type="BASE",value=88}}}},nil} c["+88% to Fire Resistance when Socketed with a Red Gem"]={{[1]={[1]={keyword="strength",slotName="{SlotName}",sockets={[1]=1},type="SocketedIn"},flags=0,keywordFlags=0,name="SocketProperty",type="LIST",value={value={flags=0,keywordFlags=0,name="FireResist",type="BASE",value=88}}}},nil} c["+88% to Lightning Resistance when Socketed with a Blue Gem"]={{[1]={[1]={keyword="intelligence",slotName="{SlotName}",sockets={[1]=1},type="SocketedIn"},flags=0,keywordFlags=0,name="SocketProperty",type="LIST",value={value={flags=0,keywordFlags=0,name="LightningResist",type="BASE",value=88}}}},nil} +c["+89 to maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type="BASE",value=89}},nil} c["+9 to maximum Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EnergyShield",type="BASE",value=9}},nil} c["+9% Chance to Block Spell Damage"]={{[1]={flags=0,keywordFlags=0,name="SpellBlockChance",type="BASE",value=9}},nil} c["+9% to Chaos Resistance"]={{[1]={flags=0,keywordFlags=0,name="ChaosResist",type="BASE",value=9}},nil} @@ -7870,6 +7871,8 @@ c["Can't use Flask in Fifth Slot"]={{[1]={[1]={excludeItemType="Tincture",slotNa c["Can't use Helmets"]={{[1]={[1]={slotName="Helmet",type="DisablesItem"},flags=0,keywordFlags=0,name="CanNotUseItem",type="Flag",value=1}},nil} c["Can't use Life Flasks"]={nil,"Can't use Life Flasks "} c["Can't use Life Flasks +65 to maximum Mana"]={nil,"Can't use Life Flasks +65 to maximum Mana "} +c["Can't use Mana Flasks"]={nil,"Can't use Mana Flasks "} +c["Can't use Mana Flasks On non-channelling Attack, set a Life Flask with greater than 50% of maximum Charges remaining to 50%"]={nil,"Can't use Mana Flasks On non-channelling Attack, set a Life Flask with greater than 50% of maximum Charges remaining to 50% "} c["Can't use other Rings"]={{[1]={[1]={slotName="Ring 2",type="DisablesItem"},[2]={num=1,type="SlotNumber"},flags=0,keywordFlags=0,name="CanNotUseItem",type="Flag",value=1},[2]={[1]={slotName="Ring 1",type="DisablesItem"},[2]={num=2,type="SlotNumber"},flags=0,keywordFlags=0,name="CanNotUseItem",type="Flag",value=1}},nil} c["Cannot Be Slowed to Below Base Speed"]={{[1]={[1]={effectType="Global",type="GlobalEffect",unscalable=true},flags=0,keywordFlags=0,name="MinimumActionSpeed",type="MAX",value=100}},nil} c["Cannot Be Stunned while you have Energy Shield"]={{[1]={[1]={type="Condition",var="HaveEnergyShield"},flags=0,keywordFlags=0,name="StunImmune",type="FLAG",value=true}},nil} @@ -10192,6 +10195,8 @@ c["Offerings Kill affected Damagable targets when Offering Duration expires"]={n c["On Killing a Poisoned Enemy, nearby Enemies are Poisoned"]={nil,"On Killing a Poisoned Enemy, nearby Enemies are Poisoned "} c["On Killing a Poisoned Enemy, nearby Enemies are Poisoned and nearby Allies Regenerate 200 Life per second"]={nil,"On Killing a Poisoned Enemy, nearby Enemies are Poisoned and nearby Allies Regenerate 200 Life per second "} c["On Killing a Rare monster, a random Linked Minion gains its Modifiers for 60 seconds"]={nil,"On Killing a Rare monster, a random Linked Minion gains its Modifiers for 60 seconds "} +c["On non-channelling Attack, set a Life Flask with greater than 50% of maximum Charges remaining to 50%"]={nil,"On non-channelling Attack, set a Life Flask with greater than 50% of maximum Charges remaining to 50% "} +c["On non-channelling Attack, set a Life Flask with greater than 50% of maximum Charges remaining to 50% For each Charge removed this way, that Attack gains +2% to Damage over time Multiplier"]={{[1]={[1]={type="Multiplier",var="KhatalsFlaskChargesRemoved"},[2]={neg=true,skillType=57,type="SkillType"},flags=0,keywordFlags=0,name="DotMultiplier",type="BASE",value=2}},nil} c["Only affects Passives in Large Ring"]={{[1]={flags=0,keywordFlags=0,name="JewelData",type="LIST",value={key="radiusIndex",value=8}}},nil} c["Only affects Passives in Massive Ring"]={{[1]={flags=0,keywordFlags=0,name="JewelData",type="LIST",value={key="radiusIndex",value=10}}},nil} c["Only affects Passives in Medium Ring"]={{[1]={flags=0,keywordFlags=0,name="JewelData",type="LIST",value={key="radiusIndex",value=7}}},nil} @@ -12262,6 +12267,7 @@ c["While affected by Glorious Madness, inflict Mania on nearby Enemies every sec c["While at Maximum Frenzy Charges, Attacks Poison Enemies"]={{[1]={[1]={stat="FrenzyCharges",thresholdStat="FrenzyChargesMax",type="StatThreshold"},flags=1,keywordFlags=0,name="PoisonChance",type="BASE",value=100}},nil} c["While in Her Embrace, take 0.5% of your total Maximum Life and Energy Shield as Fire Damage per second per Level"]={{[1]={[1]={percent=0.5,stat="Life",type="PercentStat"},[2]={type="Multiplier",var="Level"},[3]={type="Condition",var="HerEmbrace"},flags=0,keywordFlags=0,name="FireDegen",type="BASE",value=1},[2]={[1]={percent=0.5,stat="EnergyShield",type="PercentStat"},[2]={type="Multiplier",var="Level"},[3]={type="Condition",var="HerEmbrace"},flags=0,keywordFlags=0,name="FireDegen",type="BASE",value=1}},nil} c["While not on Full Life, Sacrifice 20% of Mana per Second to Recover that much Life"]={{[1]={[1]={neg=true,type="Condition",var="FullLife"},flags=0,keywordFlags=0,name="ManaDegenPercent",type="BASE",value=20},[2]={[1]={percent=20,stat="Mana",type="PercentStat"},[2]={neg=true,type="Condition",var="FullLife"},flags=0,keywordFlags=0,name="LifeRecovery",type="BASE",value=1}},nil} +c["While on Low Life, Life Flasks gain 4 Charges every 3 seconds"]={{[1]={[1]={type="Condition",var="LowLife"},flags=0,keywordFlags=0,name="LifeFlaskChargesGenerated",type="BASE",value=1.3333333333333}},nil} c["While there are at least five nearby Allies, you and nearby Allies have Onslaught"]={{[1]={[1]={threshold=5,type="MultiplierThreshold",var="NearbyAlly"},flags=0,keywordFlags=0,name="ExtraAura",type="LIST",value={mod={flags=0,keywordFlags=0,name="Onslaught",type="FLAG",value=true}}}},nil} c["While your Passive Skill Tree connects to a class' starting location, you gain:"]={{},nil} c["Wicked Ward"]={{[1]={flags=0,keywordFlags=0,name="Keystone",type="LIST",value="Wicked Ward"}},nil} diff --git a/src/Data/Uniques/Special/New.lua b/src/Data/Uniques/Special/New.lua index 099d50aa75..cda2408751 100644 --- a/src/Data/Uniques/Special/New.lua +++ b/src/Data/Uniques/Special/New.lua @@ -51,5 +51,17 @@ Trigger level 10 Consecrate when you deal a Critical Strike 14% increased Light Radius 47% increased Rarity of Items Dropped by Enemies killed with a Critical Strike Inflict Hallowing Flame on Hit while on Consecrated Ground +]], +[[ +Khatal's Weeping +Lapis Amulet +LevelReq: 56 +Implicits: 1 +{tags:jewellery_attribute}+(20-30) to Intelligence ++89 to maximum Life +Can't use Mana Flasks +On non-channelling Attack, set a Life Flask with greater than 50% of maximum Charges remaining to 50% +For each Charge removed this way, that Attack gains +2% to Damage over time Multiplier +While on Low Life, Life Flasks gain 4 Charges every 3 seconds ]] } \ No newline at end of file diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index feac95a2b0..5d0403c40e 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1889,6 +1889,9 @@ Huge sets the radius to 11. { var = "conditionEnemyLightningResZero", type = "check", label = "Enemy hit you with ^xADAA47Light. Damage^7?", ifFlag = "Condition:HaveTrickstersSmile", tooltip = "This option sets whether or not the enemy has hit you with ^xADAA47Lightning Damage^7 in the last 4 seconds.", apply = function(val, modList, enemyModList) enemyModList:NewMod("LightningResist", "OVERRIDE", 0, "Config", { type = "Condition", var = "Effective"}, { type = "ActorCondition", actor = "enemy", var = "HaveTrickstersSmile" }) end }, + { var = "multiplierKhatalsFlaskChargesRemoved", type = "count", label = "Khatal's Weeping # of Flask Charges removed:", ifMult = "KhatalsFlaskChargesRemoved", apply = function(val, modList, enemyModList) + modList:NewMod("Multiplier:KhatalsFlaskChargesRemoved", "BASE", val, "Config", { type = "Condition", var = "Effective" }) + end }, { var = "maniaDebuffsCount", type = "countAllowZero", label = "# of Mania Stacks", ifFlag = "Condition:CanInflictMania", defaultState = 15, tooltip = "Mania Stacks apply:\n\t4% inc Damage Taken per stack\n\t2% reduced Action Speed per stack\n\t10% reduced ^xE05030Life ^7and ^x88FFFFEnergy Shield ^7Recovery Rate per stack", apply = function(val, modList, enemyModList) val = m_min(val, 15) enemyModList:NewMod("DamageTaken", "INC", val * 4, val.." Mania Stacks", { type = "GlobalEffect", effectType = "Debuff" }, { type = "Condition", var = "AfflictedByMania" }) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 917579cddf..edc2a46561 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -3340,6 +3340,7 @@ local specialModList = { ["gain a flask charge when you deal a critical strike"] = { mod("FlaskChargeOnCritChance", "BASE", 100) }, ["gain a flask charge when you deal a critical strike while affected by precision"] = { mod("FlaskChargeOnCritChance", "BASE", 100, { type = "Condition", var = "AffectedByPrecision" }) }, ["gain a flask charge when you deal a critical strike while at maximum frenzy charges"] = { mod("FlaskChargeOnCritChance", "BASE", 100, { type = "StatThreshold", stat = "FrenzyCharges", thresholdStat = "FrenzyChargesMax" }) }, + ["on non%-channelling attack, set a life flask with greater than %d+%% of maximum charges remaining to %d+%% for each charge removed this way, that attack gains %+(%d+)%% to damage over time multiplier"] = function(num) return{ mod("DotMultiplier", "BASE", num, { type = "Multiplier", var = "KhatalsFlaskChargesRemoved" }, { type = "SkillType", skillType = SkillType.Channel, neg = true }) } end, ["enemies poisoned by you cannot deal critical strikes"] = { mod("EnemyModifier", "LIST", { mod = flag("NeverCrit", { type = "Condition", var = "Poisoned" }) }), mod("EnemyModifier", "LIST", { mod = flag("Condition:NeverCrit", { type = "Condition", var = "Poisoned" })}) }, ["marked enemy cannot deal critical strikes"] = { mod("EnemyModifier", "LIST", { mod = flag("NeverCrit", { type = "Condition", var = "Marked" }) }), mod("EnemyModifier", "LIST", { mod = flag("Condition:NeverCrit", { type = "Condition", var = "Marked" })}) }, ["marked enemy cannot evade attacks"] = { mod("EnemyModifier", "LIST", { mod = flag("CannotEvade", { type = "Condition", var = "Marked" }) }) }, @@ -4868,6 +4869,9 @@ local specialModList = { ["life flasks gain (%d+) charges? every (%d+) seconds"] = function(num, _, div) return { mod("LifeFlaskChargesGenerated", "BASE", num / div) } end, + ["while on low life, life flasks gain (%d+) charges? every (%d+) seconds"] = function(num, _, div) return { + mod("LifeFlaskChargesGenerated", "BASE", num / div, { type = "Condition", var = "LowLife" }) + } end, ["mana flasks gain (%d+) charges? every (%d+) seconds"] = function(num, _, div) return { mod("ManaFlaskChargesGenerated", "BASE", num / div) } end, From 0981c41bc6f01977d53575bcbfc5e439293e3e6b Mon Sep 17 00:00:00 2001 From: Paliak <91493239+Paliak@users.noreply.github.com> Date: Mon, 2 Mar 2026 19:15:39 +0100 Subject: [PATCH 10/11] FEAT: add parsing for 'effect of marks' style mods --- src/Modules/ModParser.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index edc2a46561..d4043f4902 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -428,6 +428,7 @@ local modNameList = { ["curse effect"] = "CurseEffect", ["effect of curses applied by bane"] = { "CurseEffect", tag = { type = "Condition", var = "AppliedByBane" } }, ["effect of your marks"] = { "CurseEffect", tag = { type = "SkillType", skillType = SkillType.Mark } }, + ["effect of marks"] = { "CurseEffect", tag = { type = "SkillType", skillType = SkillType.Mark } }, ["effect of arcane surge on you"] = "ArcaneSurgeEffect", ["curse duration"] = { "Duration", keywordFlags = KeywordFlag.Curse }, ["hex duration"] = { "Duration", tag = { type = "SkillType", skillType = SkillType.Hex } }, From 9c711e0a5c7023150428a1394e86147e68570854 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Fri, 6 Mar 2026 06:02:06 +1100 Subject: [PATCH 11/11] Khatals Blessing Change mod to be auto calced from highest flask charge life flask Also only applies when you have a life flask and if it's an attack --- src/Data/ModCache.lua | 2 +- src/Modules/CalcOffence.lua | 1 + src/Modules/CalcSetup.lua | 4 ++++ src/Modules/ConfigOptions.lua | 3 --- src/Modules/ModParser.lua | 4 +++- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index b0c07bb3be..abc036f5a7 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -10196,7 +10196,7 @@ c["On Killing a Poisoned Enemy, nearby Enemies are Poisoned"]={nil,"On Killing a c["On Killing a Poisoned Enemy, nearby Enemies are Poisoned and nearby Allies Regenerate 200 Life per second"]={nil,"On Killing a Poisoned Enemy, nearby Enemies are Poisoned and nearby Allies Regenerate 200 Life per second "} c["On Killing a Rare monster, a random Linked Minion gains its Modifiers for 60 seconds"]={nil,"On Killing a Rare monster, a random Linked Minion gains its Modifiers for 60 seconds "} c["On non-channelling Attack, set a Life Flask with greater than 50% of maximum Charges remaining to 50%"]={nil,"On non-channelling Attack, set a Life Flask with greater than 50% of maximum Charges remaining to 50% "} -c["On non-channelling Attack, set a Life Flask with greater than 50% of maximum Charges remaining to 50% For each Charge removed this way, that Attack gains +2% to Damage over time Multiplier"]={{[1]={[1]={type="Multiplier",var="KhatalsFlaskChargesRemoved"},[2]={neg=true,skillType=57,type="SkillType"},flags=0,keywordFlags=0,name="DotMultiplier",type="BASE",value=2}},nil} +c["On non-channelling Attack, set a Life Flask with greater than 50% of maximum Charges remaining to 50% For each Charge removed this way, that Attack gains +2% to Damage over time Multiplier"]={{[1]={[1]={floor=true,percent=50,stat="LifeFlaskCharges",type="PercentStat"},[2]={neg=true,skillType=57,type="SkillType"},[3]={skillType=1,type="SkillType"},flags=0,keywordFlags=0,name="DotMultiplier",type="BASE",value=2}},nil} c["Only affects Passives in Large Ring"]={{[1]={flags=0,keywordFlags=0,name="JewelData",type="LIST",value={key="radiusIndex",value=8}}},nil} c["Only affects Passives in Massive Ring"]={{[1]={flags=0,keywordFlags=0,name="JewelData",type="LIST",value={key="radiusIndex",value=10}}},nil} c["Only affects Passives in Medium Ring"]={{[1]={flags=0,keywordFlags=0,name="JewelData",type="LIST",value={key="radiusIndex",value=7}}},nil} diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index c89a4200fd..210386225d 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -526,6 +526,7 @@ function calcs.offence(env, actor, activeSkill) -- set flask scaling output.LifeFlaskRecovery = env.itemModDB.multipliers["LifeFlaskRecovery"] + output.LifeFlaskCharges = env.itemModDB.multipliers["LifeFlaskCharges"] if modDB.conditions["AffectedByEnergyBlade"] then local dmgMod = calcLib.mod(skillModList, skillCfg, "EnergyBladeDamage") diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index e33109c645..7232c2c130 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -871,9 +871,13 @@ function calcs.initEnv(build, mode, override, specEnv) end if item.base.subType == "Life" then local highestLifeRecovery = env.itemModDB.multipliers["LifeFlaskRecovery"] or 0 + local highestCharges = env.itemModDB.multipliers["LifeFlaskCharges"] or 0 if item.flaskData.lifeTotal > highestLifeRecovery then env.itemModDB.multipliers["LifeFlaskRecovery"] = item.flaskData.lifeTotal end + if item.flaskData.chargesMax > highestCharges then + env.itemModDB.multipliers["LifeFlaskCharges"] = item.flaskData.chargesMax + end end item = nil elseif item and item.type == "Tincture" then diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 5d0403c40e..feac95a2b0 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1889,9 +1889,6 @@ Huge sets the radius to 11. { var = "conditionEnemyLightningResZero", type = "check", label = "Enemy hit you with ^xADAA47Light. Damage^7?", ifFlag = "Condition:HaveTrickstersSmile", tooltip = "This option sets whether or not the enemy has hit you with ^xADAA47Lightning Damage^7 in the last 4 seconds.", apply = function(val, modList, enemyModList) enemyModList:NewMod("LightningResist", "OVERRIDE", 0, "Config", { type = "Condition", var = "Effective"}, { type = "ActorCondition", actor = "enemy", var = "HaveTrickstersSmile" }) end }, - { var = "multiplierKhatalsFlaskChargesRemoved", type = "count", label = "Khatal's Weeping # of Flask Charges removed:", ifMult = "KhatalsFlaskChargesRemoved", apply = function(val, modList, enemyModList) - modList:NewMod("Multiplier:KhatalsFlaskChargesRemoved", "BASE", val, "Config", { type = "Condition", var = "Effective" }) - end }, { var = "maniaDebuffsCount", type = "countAllowZero", label = "# of Mania Stacks", ifFlag = "Condition:CanInflictMania", defaultState = 15, tooltip = "Mania Stacks apply:\n\t4% inc Damage Taken per stack\n\t2% reduced Action Speed per stack\n\t10% reduced ^xE05030Life ^7and ^x88FFFFEnergy Shield ^7Recovery Rate per stack", apply = function(val, modList, enemyModList) val = m_min(val, 15) enemyModList:NewMod("DamageTaken", "INC", val * 4, val.." Mania Stacks", { type = "GlobalEffect", effectType = "Debuff" }, { type = "Condition", var = "AfflictedByMania" }) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index d4043f4902..086574fccb 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -3341,7 +3341,9 @@ local specialModList = { ["gain a flask charge when you deal a critical strike"] = { mod("FlaskChargeOnCritChance", "BASE", 100) }, ["gain a flask charge when you deal a critical strike while affected by precision"] = { mod("FlaskChargeOnCritChance", "BASE", 100, { type = "Condition", var = "AffectedByPrecision" }) }, ["gain a flask charge when you deal a critical strike while at maximum frenzy charges"] = { mod("FlaskChargeOnCritChance", "BASE", 100, { type = "StatThreshold", stat = "FrenzyCharges", thresholdStat = "FrenzyChargesMax" }) }, - ["on non%-channelling attack, set a life flask with greater than %d+%% of maximum charges remaining to %d+%% for each charge removed this way, that attack gains %+(%d+)%% to damage over time multiplier"] = function(num) return{ mod("DotMultiplier", "BASE", num, { type = "Multiplier", var = "KhatalsFlaskChargesRemoved" }, { type = "SkillType", skillType = SkillType.Channel, neg = true }) } end, + ["on non%-channelling attack, set a life flask with greater than %d+%% of maximum charges remaining to (%d+)%% for each charge removed this way, that attack gains %+(%d+)%% to damage over time multiplier"] = function(chargesConsumedPercent, _, damage) return { + mod("DotMultiplier", "BASE", tonumber(damage), { type = "PercentStat", stat = "LifeFlaskCharges", percent = 100 - chargesConsumedPercent, floor = true }, { type = "SkillType", skillType = SkillType.Channel, neg = true }, { type = "SkillType", skillType = SkillType.Attack }) + } end, ["enemies poisoned by you cannot deal critical strikes"] = { mod("EnemyModifier", "LIST", { mod = flag("NeverCrit", { type = "Condition", var = "Poisoned" }) }), mod("EnemyModifier", "LIST", { mod = flag("Condition:NeverCrit", { type = "Condition", var = "Poisoned" })}) }, ["marked enemy cannot deal critical strikes"] = { mod("EnemyModifier", "LIST", { mod = flag("NeverCrit", { type = "Condition", var = "Marked" }) }), mod("EnemyModifier", "LIST", { mod = flag("Condition:NeverCrit", { type = "Condition", var = "Marked" })}) }, ["marked enemy cannot evade attacks"] = { mod("EnemyModifier", "LIST", { mod = flag("CannotEvade", { type = "Condition", var = "Marked" }) }) },