From d72c394893f8efd538a389f00439048340450dc9 Mon Sep 17 00:00:00 2001 From: Nostrademous Date: Sat, 25 Jan 2025 16:29:34 -0500 Subject: [PATCH 1/4] WIP --- src/Data/Global.lua | 1 + src/Data/ModCache.lua | 41 ++++++++-------- src/Modules/CalcSections.lua | 91 ++++++++++++++++++++++++++++++++++++ src/Modules/ModParser.lua | 8 ++++ 4 files changed, 121 insertions(+), 20 deletions(-) diff --git a/src/Data/Global.lua b/src/Data/Global.lua index 059890f80f..c0e6f6d352 100644 --- a/src/Data/Global.lua +++ b/src/Data/Global.lua @@ -23,6 +23,7 @@ colorCodes = { COLD = "^x3F6DB3", LIGHTNING = "^xADAA47", CHAOS = "^xD02090", + THORNS = "^x00CB3A", POSITIVE = "^x33FF77", NEGATIVE = "^xDD0022", HIGHLIGHT ="^xFF0000", diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 30d5b7fbe6..6ae81a3f55 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -1,5 +1,4 @@ -local c=...c["+0.15% to Thorns Critical Hit Chance"]={{[1]={flags=0,keywordFlags=0,name="CritChance",type="BASE",value=0.15}}," Thorns "} -c["+0.15% to Thorns Critical Hit Chance +25% to Thorns Critical Hit Chance"]={{[1]={flags=0,keywordFlags=0,name="CritChance",type="BASE",value=0.15}}," Thorns +25% to Thorns Critical Hit Chance "} +local c=...c["+0.15% to Thorns Critical Hit Chance"]={{[1]={flags=0,keywordFlags=0,name="ThornsCritChance",type="BASE",value=0.15}},nil} c["+1 Charm Slot"]={{[1]={flags=0,keywordFlags=0,name="CharmLimit",type="BASE",value=1}},nil} c["+1 metre to Dodge Roll distance"]={{}," metre to Dodge Roll distance "} c["+1 metre to Dodge Roll distance 50% increased Evasion Rating if you've Dodge Rolled Recently"]={{[1]={[1]={type="Condition",var="DodgeRolledRecently"},flags=0,keywordFlags=0,name="Evasion",type="BASE",value=1}}," metre to Dodge Roll distance 50% increased "} @@ -148,8 +147,7 @@ c["+25% to Critical Damage Bonus against Stunned Enemies"]={{[1]={[1]={actor="en c["+25% to Fire Resistance"]={{[1]={flags=0,keywordFlags=0,name="FireResist",type="BASE",value=25}},nil} c["+25% to Fire Resistance while on Low Life"]={{[1]={[1]={type="Condition",var="LowLife"},flags=0,keywordFlags=0,name="FireResist",type="BASE",value=25}},nil} c["+25% to Lightning Resistance"]={{[1]={flags=0,keywordFlags=0,name="LightningResist",type="BASE",value=25}},nil} -c["+25% to Thorns Critical Hit Chance"]={{[1]={flags=0,keywordFlags=0,name="CritChance",type="BASE",value=25}}," Thorns "} -c["+25% to Thorns Critical Hit Chance 15 to 25 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="CritChance",type="BASE",value=25}}," Thorns 15 to 25 Physical Thorns damage "} +c["+25% to Thorns Critical Hit Chance"]={{[1]={flags=0,keywordFlags=0,name="ThornsCritChance",type="BASE",value=25}},nil} c["+250 to Accuracy against Bleeding Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Bleeding"},flags=0,keywordFlags=0,name="AccuracyVsEnemy",type="BASE",value=250}},nil} c["+250 to Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="BASE",value=250}},nil} c["+2500 to Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="BASE",value=2500}},nil} @@ -459,7 +457,7 @@ c["+5% to Lightning Resistance"]={{[1]={flags=0,keywordFlags=0,name="LightningRe c["+5% to Maximum Cold Resistance"]={{[1]={flags=0,keywordFlags=0,name="ColdResistMax",type="BASE",value=5}},nil} c["+5% to Maximum Fire Resistance"]={{[1]={flags=0,keywordFlags=0,name="FireResistMax",type="BASE",value=5}},nil} c["+5% to Maximum Lightning Resistance"]={{[1]={flags=0,keywordFlags=0,name="LightningResistMax",type="BASE",value=5}},nil} -c["+5% to Thorns Critical Hit Chance"]={{[1]={flags=0,keywordFlags=0,name="CritChance",type="BASE",value=5}}," Thorns "} +c["+5% to Thorns Critical Hit Chance"]={{[1]={flags=0,keywordFlags=0,name="ThornsCritChance",type="BASE",value=5}},nil} c["+5% to all Elemental Resistances"]={{[1]={flags=0,keywordFlags=0,name="ElementalResist",type="BASE",value=5}},nil} c["+5% to all Maximum Elemental Resistances"]={{[1]={flags=0,keywordFlags=0,name="ElementalResistMax",type="BASE",value=5}},nil} c["+5% to maximum Block chance"]={{[1]={flags=0,keywordFlags=0,name="BlockChanceMax",type="BASE",value=5}},nil} @@ -552,8 +550,8 @@ c["0% to Cold Resistance"]={{[1]={flags=0,keywordFlags=0,name="ColdResist",type= c["0% to Fire Resistance"]={{[1]={flags=0,keywordFlags=0,name="FireResist",type="BASE",value=0}},"% to "} c["0% to Lightning Resistance"]={{[1]={flags=0,keywordFlags=0,name="LightningResist",type="BASE",value=0}},"% to "} c["0.1 Life Regeneration per second"]={{[1]={flags=0,keywordFlags=0,name="LifeRegen",type="BASE",value=0.1}},nil} +c["0.5% of Life Regenerated per second per Fragile Regrowth"]={{[1]={[1]={type="Multiplier",var="FragileRegrowthCount"},flags=0,keywordFlags=0,name="Life",type="BASE",value=0.5}}," Regenerated per second "} c["0.5% of Life Regenerated per second per Fragile Regrowth 10% increased Mana Regeneration Rate per Fragile Regrowth"]={{[1]={[1]={type="Multiplier",var="FragileRegrowthCount"},[2]={type="Multiplier",var="FragileRegrowthCount"},flags=0,keywordFlags=0,name="Life",type="BASE",value=0.5}}," Regenerated per second 10% increased Mana Regeneration Rate "} -c["0.500000% of Life Regenerated per second per Fragile Regrowth"]={{[1]={[1]={type="Multiplier",var="FragileRegrowthCount"},flags=0,keywordFlags=0,name="Life",type="BASE",value=0.5}}," Regenerated per second "} c["1% increased Attack Damage per 75 Armour or Evasion Rating on Shield"]={{[1]={[1]={div=75,statList={[1]="ArmourOnWeapon 2",[2]="EvasionOnWeapon 2"},type="PerStat"},flags=1,keywordFlags=0,name="Damage",type="INC",value=1}},nil} c["1% increased Attack Speed per 15 Dexterity"]={{[1]={[1]={div=15,stat="Dex",type="PerStat"},flags=1,keywordFlags=0,name="Speed",type="INC",value=1}},nil} c["1% increased Attack Speed per 250 Accuracy Rating"]={{[1]={[1]={div=250,stat="Accuracy",type="PerStat"},flags=1,keywordFlags=0,name="Speed",type="INC",value=1}},nil} @@ -690,7 +688,7 @@ c["10% increased Stun Buildup 16% increased Melee Damage"]={{[1]={flags=256,keyw c["10% increased Stun Buildup 16% increased Melee Damage +10 to Strength"]={{[1]={flags=256,keywordFlags=0,name="Damage",type="INC",value=10}}," Stun Buildup 16% increased +10 to Strength "} c["10% increased Stun Buildup Damage Penetrates 5% Fire Resistance"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="INC",value=10}}," Stun Buildup Penetrates 5% Fire Resistance "} c["10% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=10}},nil} -c["10% increased Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="INC",value=10}}," Thorns "} +c["10% increased Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsDamage",type="INC",value=10}},nil} c["10% increased Trap Damage"]={{[1]={flags=0,keywordFlags=4096,name="Damage",type="INC",value=10}},nil} c["10% increased Warcry Cooldown Recovery Rate"]={{[1]={flags=0,keywordFlags=4,name="CooldownRecovery",type="INC",value=10}},nil} c["10% increased Weapon Damage per 5 Strength"]={{[1]={[1]={div=5,stat="Str",type="PerStat"},flags=8192,keywordFlags=0,name="Damage",type="INC",value=10}},nil} @@ -761,7 +759,7 @@ c["100% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="M c["100% increased Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="PhysicalDamage",type="INC",value=100}},nil} c["100% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type="INC",value=100}},nil} c["100% increased Stun Threshold during Empowered Attacks"]={{[1]={[1]={type="Condition",var="SkillEmpowered"},flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=100}},nil} -c["100% increased Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="INC",value=100}}," Thorns "} +c["100% increased Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsDamage",type="INC",value=100}},nil} c["100% increased amount of Life Leeched"]={{[1]={flags=0,keywordFlags=0,name="LifeLeech",type="INC",value=100}},nil} c["100% increased chance to Ignite"]={{[1]={flags=0,keywordFlags=0,name="EnemyIgniteChance",type="INC",value=100}},nil} c["100% of Cold Damage Converted to Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="ColdDamageConvertToLightning",type="BASE",value=100}},nil} @@ -848,6 +846,7 @@ c["125% increased Charges per use"]={{[1]={flags=0,keywordFlags=0,name="FlaskCha c["125% increased Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=125}},nil} c["125% increased Evasion Rating"]={{[1]={flags=0,keywordFlags=0,name="Evasion",type="INC",value=125}},nil} c["125% increased Evasion and Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EvasionAndEnergyShield",type="INC",value=125}},nil} +c["13 to 23 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsPhysicalMin",type="BASE",value=13},[2]={flags=0,keywordFlags=0,name="ThornsPhysicalMax",type="BASE",value=23}},nil} c["13% chance to Gain 50% of Damage with Hits as Extra Chaos Damage"]={{[1]={flags=4,keywordFlags=0,name="DamageGainAsChaos",type="BASE",value=6.5}},nil} c["13% increased Attack Speed"]={{[1]={flags=1,keywordFlags=0,name="Speed",type="INC",value=13}},nil} c["13% increased Cast Speed"]={{[1]={flags=16,keywordFlags=0,name="Speed",type="INC",value=13}},nil} @@ -870,8 +869,7 @@ c["140% increased Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EnergyShie c["140% increased Evasion Rating"]={{[1]={flags=0,keywordFlags=0,name="Evasion",type="INC",value=140}},nil} c["140% increased Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="PhysicalDamage",type="INC",value=140}},nil} c["15 Life Regeneration per second"]={{[1]={flags=0,keywordFlags=0,name="LifeRegen",type="BASE",value=15}},nil} -c["15 to 25 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="BASE",value=15}}," to 25 Physical Thorns "} -c["15 to 25 Physical Thorns damage Thorns damage is triggered by all Hits"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="BASE",value=15}}," to 25 Physical Thorns Thorns damage is triggered by all Hits "} +c["15 to 25 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsPhysicalMin",type="BASE",value=15},[2]={flags=0,keywordFlags=0,name="ThornsPhysicalMax",type="BASE",value=25}},nil} c["15% additional Physical Damage Reduction"]={{[1]={flags=0,keywordFlags=0,name="PhysicalDamageReduction",type="BASE",value=15}},nil} c["15% chance for Crossbow Attacks to not consume a bolt"]={{}," for Attacks to not consume a bolt "} c["15% chance to Blind Enemies on Hit with Attacks"]={{}," to Blind Enemies with Attacks "} @@ -1023,7 +1021,7 @@ c["16% increased Range"]={{[1]={flags=0,keywordFlags=0,name="WeaponRange",type=" c["16% increased Rarity of Items found"]={{[1]={flags=0,keywordFlags=0,name="LootRarity",type="INC",value=16}},nil} c["16% increased Skill Effect Duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type="INC",value=16}},nil} c["16% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type="INC",value=16}},nil} -c["16% increased Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="INC",value=16}}," Thorns "} +c["16% increased Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsDamage",type="INC",value=16}},nil} c["16% increased Totem Damage"]={{[1]={flags=0,keywordFlags=16384,name="Damage",type="INC",value=16}},nil} c["16% increased Totem Life"]={{[1]={flags=0,keywordFlags=0,name="TotemLife",type="INC",value=16}},nil} c["16% increased Warcry Speed"]={{[1]={flags=0,keywordFlags=4,name="WarcrySpeed",type="INC",value=16}},nil} @@ -1034,6 +1032,7 @@ c["160% increased Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="Physical c["175% increased Armour"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="INC",value=175}},nil} c["175% increased Armour and Evasion"]={{[1]={flags=0,keywordFlags=0,name="ArmourAndEvasion",type="INC",value=175}},nil} c["175% increased Evasion and Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EvasionAndEnergyShield",type="INC",value=175}},nil} +c["18 to 28 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsPhysicalMin",type="BASE",value=18},[2]={flags=0,keywordFlags=0,name="ThornsPhysicalMax",type="BASE",value=28}},nil} c["18% increased Armour"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="INC",value=18}},nil} c["18% increased Attack Speed"]={{[1]={flags=1,keywordFlags=0,name="Speed",type="INC",value=18}},nil} c["18% increased Chaos Damage"]={{[1]={flags=0,keywordFlags=0,name="ChaosDamage",type="INC",value=18}},nil} @@ -1066,7 +1065,7 @@ c["2% increased Spirit per socketed Grand Spectrum"]={{[1]={[1]={type="Multiplie c["2% to Maximum Fire Resistance for each 40% Uncapped Fire Resistance"]={{[1]={[1]={div=40,stat="FireResistTotal",type="PerStat"},flags=0,keywordFlags=0,name="FireResistMax",type="BASE",value=2}},nil} c["20 Life Regeneration per second"]={{[1]={flags=0,keywordFlags=0,name="LifeRegen",type="BASE",value=20}},nil} c["20 Passive Skill Points become Weapon Set Skill Points"]={{[1]={flags=0,keywordFlags=0,name="PassivePointsToWeaponSetPoints",type="BASE",value=20}},nil} -c["20 to 30 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="BASE",value=20}}," to 30 Physical Thorns "} +c["20 to 30 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsPhysicalMin",type="BASE",value=20},[2]={flags=0,keywordFlags=0,name="ThornsPhysicalMax",type="BASE",value=30}},nil} c["20% chance for Bleeding to be Aggravated when Inflicted against Enemies on Jagged Ground"]={{}," to be Aggravated when Inflicted against Enemies on Jagged Ground "} c["20% chance for Bleeding to be Aggravated when Inflicted against Enemies on Jagged Ground 40% increased Jagged Ground Duration"]={{[1]={flags=0,keywordFlags=4194304,name="Duration",type="BASE",value=20}}," to be Aggravated when Inflicted against Enemies on Jagged Ground 40% increased Jagged Ground "} c["20% chance for Charms you use to not consume Charges"]={{[1]={flags=0,keywordFlags=0,name="FlaskCharges",type="BASE",value=20}}," for Charms you use to not consume "} @@ -1251,7 +1250,7 @@ c["24% increased Warcry Speed"]={{[1]={flags=0,keywordFlags=4,name="WarcrySpeed" c["24% increased maximum Energy Shield"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=24}},nil} c["24% reduced Slowing Potency of Debuffs on You"]={{}," Slowing Potency of Debuffs on You "} c["25 Life Regeneration per second"]={{[1]={flags=0,keywordFlags=0,name="LifeRegen",type="BASE",value=25}},nil} -c["25 to 35 Fire Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="BASE",value=25}}," to 35 Fire Thorns "} +c["25 to 35 Fire Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsFireMin",type="BASE",value=25},[2]={flags=0,keywordFlags=0,name="ThornsFireMax",type="BASE",value=35}},nil} c["25% chance for Attacks to Maim on Hit against Poisoned Enemies"]={{}," to Maim on Hit "} c["25% chance for Attacks to Maim on Hit against Poisoned Enemies 25% increased Magnitude of Poison you inflict"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Poisoned"},flags=1,keywordFlags=2097152,name="AilmentMagnitude",type="BASE",value=25}}," to Maim on Hit 25% increased "} c["25% chance for Projectiles to Pierce Enemies within 3m distance of you"]={{[1]={flags=0,keywordFlags=0,name="ProjectileCount",type="BASE",value=25}}," for to Pierce Enemies within 3m distance of you "} @@ -1359,7 +1358,7 @@ c["25% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type c["25% increased Spell Damage while on Full Energy Shield"]={{[1]={[1]={type="Condition",var="FullEnergyShield"},flags=2,keywordFlags=0,name="Damage",type="INC",value=25}},nil} c["25% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=25}},nil} c["25% increased Stun Threshold while on Full Life"]={{[1]={[1]={type="Condition",var="FullLife"},flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=25}},nil} -c["25% increased Thorns Critical Damage Bonus"]={{[1]={flags=0,keywordFlags=0,name="CritMultiplier",type="INC",value=25}}," Thorns "} +c["25% increased Thorns Critical Damage Bonus"]={{[1]={flags=0,keywordFlags=0,name="ThornsCritMultiplier",type="INC",value=25}},nil} c["25% increased Totem Placement speed"]={{[1]={flags=0,keywordFlags=0,name="TotemPlacementSpeed",type="INC",value=25}},nil} c["25% increased Trap Damage"]={{[1]={flags=0,keywordFlags=4096,name="Damage",type="INC",value=25}},nil} c["25% increased Warcry Cooldown Recovery Rate"]={{[1]={flags=0,keywordFlags=4,name="CooldownRecovery",type="INC",value=25}},nil} @@ -1406,6 +1405,7 @@ c["250% increased Duration"]={{[1]={flags=0,keywordFlags=0,name="Duration",type= c["250% increased bonuses gained from Equipped Quiver"]={{[1]={flags=0,keywordFlags=0,name="EffectOfBonusesFromQuiver",type="INC",value=250}},nil} c["250% of Melee Physical Damage taken reflected to Attacker"]={{[1]={flags=256,keywordFlags=0,name="PhysicalDamage",type="BASE",value=250}}," taken reflected to Attacker "} c["250% of Melee Physical Damage taken reflected to Attacker Regenerate 5% of Life per second while Surrounded"]={{[1]={[1]={type="Condition",var="Surrounded"},flags=256,keywordFlags=0,name="PhysicalDamage",type="BASE",value=250}}," taken reflected to Attacker Regenerate 5% of Life per second "} +c["28 to 38 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsPhysicalMin",type="BASE",value=28},[2]={flags=0,keywordFlags=0,name="ThornsPhysicalMax",type="BASE",value=38}},nil} c["28% increased maximum Energy Shield"]={{[1]={[1]={type="Global"},flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=28}},nil} c["29% increased Chaos Damage"]={{[1]={flags=0,keywordFlags=0,name="ChaosDamage",type="INC",value=29}},nil} c["3 Life Regeneration per second"]={{[1]={flags=0,keywordFlags=0,name="LifeRegen",type="BASE",value=3}},nil} @@ -1441,7 +1441,7 @@ c["3% increased maximum Life, Mana and Energy Shield"]={{[1]={flags=0,keywordFla c["3% less Damage taken per Tailwind"]={{[1]={[1]={type="Multiplier",var="Tailwind"},flags=0,keywordFlags=0,name="DamageTaken",type="MORE",value=-3}},nil} c["3% of Damage Taken Recouped as Life, Mana and Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="LifeRecoup",type="BASE",value=3},[2]={flags=0,keywordFlags=0,name="EnergyShieldRecoup",type="BASE",value=3},[3]={flags=0,keywordFlags=0,name="ManaRecoup",type="BASE",value=3}},nil} c["3% of Damage taken Recouped as Life"]={{[1]={flags=0,keywordFlags=0,name="LifeRecoup",type="BASE",value=3}},nil} -c["30 to 40 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="BASE",value=30}}," to 40 Physical Thorns "} +c["30 to 40 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsPhysicalMin",type="BASE",value=30},[2]={flags=0,keywordFlags=0,name="ThornsPhysicalMax",type="BASE",value=40}},nil} c["30% chance that if you would gain Frenzy Charges, you instead gain up to your maximum number of Frenzy Charges"]={{[1]={flags=0,keywordFlags=0,name="FlaskCharges",type="BASE",value=30}}," that if you would gain Frenzy , you instead gain up to your maximum number of Frenzy Charges "} c["30% chance to Pierce an Enemy"]={{}," to Pierce an Enemy "} c["30% chance to Pierce an Enemy Projectiles have 10% chance to Chain an additional time from terrain"]={{[1]={flags=0,keywordFlags=0,name="ProjectileCount",type="BASE",value=30}}," to Pierce an Enemy have 10% chance to Chain an additional time from terrain "} @@ -1617,6 +1617,7 @@ c["36% increased Damage if you've dealt a Critical Hit in the past 8 seconds"]={ c["38% increased Armour"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="INC",value=38}},nil} c["4 Life Regeneration per second"]={{[1]={flags=0,keywordFlags=0,name="LifeRegen",type="BASE",value=4}},nil} c["4 Passive Skill Points become Weapon Set Skill Points"]={{[1]={flags=0,keywordFlags=0,name="PassivePointsToWeaponSetPoints",type="BASE",value=4}},nil} +c["4 to 8 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsPhysicalMin",type="BASE",value=4},[2]={flags=0,keywordFlags=0,name="ThornsPhysicalMax",type="BASE",value=8}},nil} c["4% chance for Spell Skills to fire 2 additional Projectiles"]={{[1]={flags=2,keywordFlags=0,name="ProjectileCount",type="BASE",value=4}}," for Skills to fire 2 additional "} c["4% increased Attack Speed"]={{[1]={flags=1,keywordFlags=0,name="Speed",type="INC",value=4}},nil} c["4% increased Attack Speed while a Rare or Unique Enemy is in your Presence"]={{[1]={[1]={actor="enemy",type="ActorCondition",varList={[1]="NearbyRareOrUniqueEnemy",[2]="RareOrUnique"}},flags=1,keywordFlags=0,name="Speed",type="INC",value=4}},nil} @@ -1710,7 +1711,7 @@ c["40% increased Spell Damage"]={{[1]={flags=2,keywordFlags=0,name="Damage",type c["40% increased Spirit"]={{[1]={flags=0,keywordFlags=0,name="Spirit",type="INC",value=40}},nil} c["40% increased Stun Recovery"]={{[1]={flags=0,keywordFlags=0,name="StunRecovery",type="INC",value=40}},nil} c["40% increased Stun Threshold"]={{[1]={flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=40}},nil} -c["40% increased Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="INC",value=40}}," Thorns "} +c["40% increased Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsDamage",type="INC",value=40}},nil} c["40% increased chance to Ignite"]={{[1]={flags=0,keywordFlags=0,name="EnemyIgniteChance",type="INC",value=40}},nil} c["40% increased chance to Shock"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockChance",type="INC",value=40}},nil} c["40% increased effect of Arcane Surge on you"]={{[1]={flags=0,keywordFlags=0,name="ArcaneSurgeEffect",type="INC",value=40}},nil} @@ -1739,8 +1740,8 @@ c["45% increased Evasion and Energy Shield"]={{[1]={flags=0,keywordFlags=0,name= c["45% increased Rarity of Items found"]={{[1]={flags=0,keywordFlags=0,name="LootRarity",type="INC",value=45}},nil} c["450% increased Armour"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="INC",value=450}},nil} c["5 Life Regeneration per second"]={{[1]={flags=0,keywordFlags=0,name="LifeRegen",type="BASE",value=5}},nil} -c["5 to 10 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="BASE",value=5}}," to 10 Physical Thorns "} -c["5 to 10 Physical Thorns damage Pain Attunement"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="BASE",value=5}}," to 10 Physical Thorns Pain Attunement "} +c["5 to 10 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsPhysicalMin",type="BASE",value=5},[2]={flags=0,keywordFlags=0,name="ThornsPhysicalMax",type="BASE",value=10}},nil} +c["5 to 9 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsPhysicalMin",type="BASE",value=5},[2]={flags=0,keywordFlags=0,name="ThornsPhysicalMax",type="BASE",value=9}},nil} c["5% chance that if you would gain Endurance Charges, you instead gain up to maximum Endurance Charges"]={{[1]={flags=0,keywordFlags=0,name="FlaskCharges",type="BASE",value=5}}," that if you would gain Endurance , you instead gain up to maximum Endurance Charges "} c["5% chance that if you would gain Endurance Charges, you instead gain up to maximum Endurance Charges +1 to Maximum Endurance Charges"]={{[1]={flags=0,keywordFlags=0,name="FlaskCharges",type="BASE",value=5}}," that if you would gain Endurance , you instead gain up to maximum Endurance Charges +1 to Maximum Endurance Charges "} c["5% chance that if you would gain Frenzy Charges, you instead gain up to your maximum number of Frenzy Charges"]={{[1]={flags=0,keywordFlags=0,name="FlaskCharges",type="BASE",value=5}}," that if you would gain Frenzy , you instead gain up to your maximum number of Frenzy Charges "} @@ -1883,7 +1884,7 @@ c["50% reduced Ignite Duration on you"]={{[1]={flags=0,keywordFlags=0,name="Self c["50% reduced Presence Area of Effect"]={{[1]={flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=-50}}," Presence "} c["50% reduced Shock duration on you"]={{[1]={flags=0,keywordFlags=0,name="SelfShockDuration",type="INC",value=-50}},nil} c["50% reduced Slowing Potency of Debuffs on You"]={{}," Slowing Potency of Debuffs on You "} -c["50% reduced Slowing Potency of Debuffs on You 20 to 30 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="INC",value=-50}}," Slowing Potency of Debuffs on You 20 to 30 Physical Thorns "} +c["50% reduced Slowing Potency of Debuffs on You 20 to 30 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsDamage",type="INC",value=-50}}," Slowing Potency of Debuffs on You 20 to 30 Physical "} c["50% reduced effect of Ignite on you"]={{[1]={flags=0,keywordFlags=0,name="LocalEffect",type="INC",value=-50}}," of Ignite on you "} c["50% reduced effect of Ignite on you 50% reduced effect of Shock on you"]={{[1]={flags=0,keywordFlags=0,name="LocalEffect",type="INC",value=-50}}," of Ignite on you 50% reduced effect of Shock on you "} c["50% reduced effect of Shock on you"]={{[1]={flags=0,keywordFlags=0,name="SelfShockEffect",type="INC",value=-50}},nil} @@ -1980,7 +1981,7 @@ c["75% increased Arrow Speed"]={{[1]={flags=131072,keywordFlags=0,name="Projecti c["75% increased Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=75}},nil} c["75% increased Energy Shield from Equipped Focus"]={{[1]={flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=75}}," from Equipped Focus "} c["75% increased Evasion from Equipped Shield"]={{[1]={[1]={slotName="Weapon 2",type="SlotName"},flags=0,keywordFlags=0,name="Evasion",type="INC",value=75}},nil} -c["75% increased Thorns damage if you've Blocked Recently"]={{[1]={[1]={type="Condition",var="BlockedRecently"},flags=0,keywordFlags=0,name="Damage",type="INC",value=75}}," Thorns "} +c["75% increased Thorns damage if you've Blocked Recently"]={{[1]={[1]={type="Condition",var="BlockedRecently"},flags=0,keywordFlags=0,name="ThornsDamage",type="INC",value=75}},nil} c["75% of Damage Converted to Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="DamageConvertToFire",type="BASE",value=75}},nil} c["8 Life Regeneration per second"]={{[1]={flags=0,keywordFlags=0,name="LifeRegen",type="BASE",value=8}},nil} c["8% chance to Aftershock for Slam Skills you use with Maces"]={{}," to Aftershock for Slam Skills you use "} diff --git a/src/Modules/CalcSections.lua b/src/Modules/CalcSections.lua index 25b10630b5..3c37be009c 100644 --- a/src/Modules/CalcSections.lua +++ b/src/Modules/CalcSections.lua @@ -1375,6 +1375,97 @@ return { { label = "Enemy ES Recovery", haveOutput = "EnemyEnergyShieldRegen", { format = "{0:output:EnemyEnergyShieldRegen}%", { modName = "EnergyShieldRegen", modType = "INC", enemy = true }, }, }, } } } }, +{ 3 , "ThornsDamage", 1, colorCodes.THORNS, {{ defaultCollapsed = false, label = "Thorns Damage", data = { + colWidth = 95, + { + { format = "All Types:", }, + { format = "Physical:" }, + { format = colorCodes.LIGHTNING.."Lightning:" }, + { format = colorCodes.COLD.."Cold:" }, + { format = colorCodes.FIRE.."Fire:" }, + { format = colorCodes.CHAOS.."Chaos:" }, + }, + { label = "Added Min", + { }, + { format = "{0:mod:1,2}", + { label = "Player modifiers", modName = "ThornsPhysicalMin", modType = "BASE", cfg = "skill" }, + { label = "Enemy modifiers", modName = "SelfThornsPhysicalMin", modType = "BASE", enemy = true, cfg = "skill" }, + }, + { format = "{0:mod:1,2}", + { label = "Player modifiers", modName = "ThornsLightningMin", modType = "BASE", cfg = "skill" }, + { label = "Enemy modifiers", modName = "SelfThornsLightningMin", modType = "BASE", enemy = true, cfg = "skill" }, + }, + { format = "{0:mod:1,2}", + { label = "Player modifiers", modName = "ThornsColdMin", modType = "BASE", cfg = "skill" }, + { label = "Enemy modifiers", modName = "SelfThornsColdMin", modType = "BASE", enemy = true, cfg = "skill" }, + }, + { format = "{0:mod:1,2}", + { label = "Player modifiers", modName = "ThornsFireMin", modType = "BASE", cfg = "skill" }, + { label = "Enemy modifiers", modName = "SelfThornsFireMin", modType = "BASE", enemy = true, cfg = "skill" }, + }, + { format = "{0:mod:1,2}", + { label = "Player modifiers", modName = "ThornsChaosMin", modType = "BASE", cfg = "skill" }, + { label = "Enemy modifiers", modName = "SelfThornsChaosMin", modType = "BASE", enemy = true, cfg = "skill" }, + }, + }, + { label = "Added Max", + { }, + { format = "{0:mod:1,2}", + { label = "Player modifiers", modName = "ThornsPhysicalMax", modType = "BASE", cfg = "skill" }, + { label = "Enemy modifiers", modName = "SelfThornsPhysicalMax", modType = "BASE", enemy = true, cfg = "skill" }, + }, + { format = "{0:mod:1,2}", + { label = "Player modifiers", modName = "ThornsLightningMax", modType = "BASE", cfg = "skill" }, + { label = "Enemy modifiers", modName = "SelfThornsLightningMax", modType = "BASE", enemy = true, cfg = "skill" }, + }, + { format = "{0:mod:1,2}", + { label = "Player modifiers", modName = "ThornsColdMax", modType = "BASE", cfg = "skill" }, + { label = "Enemy modifiers", modName = "SelfThornsColdMax", modType = "BASE", enemy = true, cfg = "skill" }, + }, + { format = "{0:mod:1,2}", + { label = "Player modifiers", modName = "ThornsFireMax", modType = "BASE", cfg = "skill" }, + { label = "Enemy modifiers", modName = "SelfThornsFireMax", modType = "BASE", enemy = true, cfg = "skill" }, + }, + { format = "{0:mod:1,2}", + { label = "Player modifiers", modName = "ThornsChaosMax", modType = "BASE", cfg = "skill" }, + { label = "Enemy modifiers", modName = "SelfThornsChaosMax", modType = "BASE", enemy = true, cfg = "skill" }, + }, + }, + -- Thorns Damage + { label = "Total Increased", + { format = "{0:mod:1}%", { modName = "ThornsDamage", modType = "INC", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = "ThornsPhysicalDamage", modType = "INC", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = { "ThornsLightningDamage", "ThornsElementalDamage" }, modType = "INC", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = { "ThornsColdDamage", "ThornsElementalDamage" }, modType = "INC", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = { "ThornsFireDamage", "ThornsElementalDamage" }, modType = "INC", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = "ThornsChaosDamage", modType = "INC", cfg = "skill" }, }, + }, + { label = "Total More", + { format = "{0:mod:1}%", { modName = "ThornsDamage", modType = "MORE", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = "ThornsPhysicalDamage", modType = "MORE", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = { "ThornsLightningDamage", "ThornsElementalDamage" }, modType = "MORE", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = { "ThornsColdDamage", "ThornsElementalDamage" }, modType = "MORE", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = { "ThornsFireDamage", "ThornsElementalDamage" }, modType = "MORE", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = "ThornsChaosDamage", modType = "MORE", cfg = "skill" }, }, + }, + { label = "Total Crit Chance", + { format = "{0:mod:1}%", { modName = "ThornsCritChance", modType = "BASE", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = "ThornsPhysicalCritChance", modType = "BASE", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = { "ThornsLightningCritChance", "ThornsElementalCritChance" }, modType = "BASE", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = { "ThornsColdCritChance", "ThornsElementalCritChance" }, modType = "BASE", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = { "ThornsFireCritChance", "ThornsElementalCritChance" }, modType = "BASE", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = "ThornsChaosCritChance", modType = "BASE", cfg = "skill" }, }, + }, + { label = "Total Crit Multiplier", + { format = "{0:mod:1}%", { modName = "ThornsCritMultiplier", modType = "INC", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = "ThornsPhysicalCritMultiplier", modType = "INC", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = { "ThornsLightningCritMultiplier", "ThornsElementalCritMultiplier" }, modType = "INC", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = { "ThornsColdCritMultiplier", "ThornsElementalCritMultiplier" }, modType = "INC", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = { "ThornsFireCritMultiplier", "ThornsElementalCritMultiplier" }, modType = "INC", cfg = "skill" }, }, + { format = "{0:mod:1}%", { modName = "ThornsChaosCritMultiplier", modType = "INC", cfg = "skill" }, }, + }, +} } +} }, -- attributes/resists { 1, "Attributes", 2, colorCodes.NORMAL, {{ defaultCollapsed = false, label = "Attributes", data = { extra = colorCodes.STRENGTH.."{0:output:Str}^7, "..colorCodes.DEXTERITY.."{0:output:Dex}^7, "..colorCodes.INTELLIGENCE.."{0:output:Int}^7", diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 3c615b1f70..ef501adbac 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -116,6 +116,7 @@ local formList = { ["(%d+)%-(%d+) added (%a+) damage"] = "DMG", ["(%d+) to (%d+) additional (%a+) damage"] = "DMG", ["(%d+)%-(%d+) additional (%a+) damage"] = "DMG", + ["^(%d+) to (%d+) (%a+) thorns damage"] = "THORNS_DMG", ["^(%d+) to (%d+) (%a+) damage"] = "DMG", ["adds (%d+) to (%d+) (%a+) damage"] = "DMG", ["adds (%d+)%-(%d+) (%a+) damage"] = "DMG", @@ -634,6 +635,7 @@ local modNameList = { ["chaos damage"] = "ChaosDamage", ["non-chaos damage"] = "NonChaosDamage", ["elemental damage"] = "ElementalDamage", + ["thorns damage"] = "ThornsDamage", -- Other damage forms ["attack damage"] = { "Damage", flags = ModFlag.Attack }, ["attack physical damage"] = { "PhysicalDamage", flags = ModFlag.Attack }, @@ -674,8 +676,10 @@ local modNameList = { ["damage over time multiplier"] = "DotMultiplier", -- Crit/accuracy/speed modifiers ["critical hit chance"] = "CritChance", + ["thorns critical hit chance"] = "ThornsCritChance", ["attack critical hit chance"] = { "CritChance", flags = ModFlag.Attack }, ["critical damage bonus"] = "CritMultiplier", + ["thorns critical damage bonus"] = "ThornsCritMultiplier", ["attack critical damage bonus"] = { "CritMultiplier", flags = ModFlag.Attack }, ["critical spell damage bonus"] = { "CritMultiplier", flags = ModFlag.Spell }, ["accuracy"] = "Accuracy", @@ -6066,6 +6070,10 @@ local function parseMod(line, order) end modValue = { tonumber(formCap[1]), tonumber(formCap[2]) } modName = { damageType.."Min", damageType.."Max" } + elseif modForm == "THORNS_DMG" then + local damageType = "Thorns" .. dmgTypes[formCap[3]] + modValue = { tonumber(formCap[1]), tonumber(formCap[2]) } + modName = { damageType.."Min", damageType.."Max" } elseif modForm == "DMGATTACKS" then local damageType = dmgTypes[formCap[3]] if not damageType then From 2230a88fb36e11ebbf6a6a36a28183610353cbf8 Mon Sep 17 00:00:00 2001 From: Nostrademous Date: Sat, 25 Jan 2025 16:45:35 -0500 Subject: [PATCH 2/4] support for Spiked Armour --- src/Data/ModCache.lua | 2 +- src/Modules/ModParser.lua | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 6ae81a3f55..e5413af4a5 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -2525,7 +2525,7 @@ c["Gain Infernal Flame instead of spending Mana for Skill costs"]={nil,"Infernal c["Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum"]={nil,"Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum "} c["Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame"]={nil,"Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame "} c["Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame 10% of Infernal Flame lost per second if none was gained in the past 2 seconds"]={nil,"Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame 10% of Infernal Flame lost per second if none was gained in the past 2 seconds "} -c["Gain Physical Thorns damage equal to 2% of Armour from equipped Body Armour"]={nil,"Physical Thorns damage equal to 2% of Armour from equipped Body Armour "} +c["Gain Physical Thorns damage equal to 2% of Armour from equipped Body Armour"]={{[1]={[1]={div=50,stat="ArmourOnBody Armour",type="PerStat"},flags=0,keywordFlags=0,name="ThornsPhysicalMin",type="BASE",value=1},[2]={[1]={div=50,stat="ArmourOnBody Armour",type="PerStat"},flags=0,keywordFlags=0,name="ThornsPhysicalMax",type="BASE",value=1}},nil} c["Gain Power Charges instead of Frenzy Charges"]={nil,"Power Charges instead of Frenzy Charges "} c["Gain Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges"]={nil,"Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges "} c["Gain Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges Gain Endurance Charges instead of Power Charges"]={nil,"Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges Gain Endurance Charges instead of Power Charges "} diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index ef501adbac..110713f863 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -4326,6 +4326,10 @@ local specialModList = { ["ignore all movement penalties from armour"] = { flag("Condition:IgnoreMovementPenalties") }, ["gain armour equal to your reserved mana"] = { mod("Armour", "BASE", 1, { type = "PerStat", stat = "ManaReserved", div = 1 }) }, ["gain ward instead of (%d+)%% of armour and evasion rating from equipped body armour"] = function(num) return {flag("ConvertBodyArmourArmourEvasionToWard"), mod("BodyArmourArmourEvasionToWardPercent", "BASE", num)} end, + ["gain physical thorns damage equal to (%d+)%% of armour from equipped body armour"] = function(num) return { + mod("ThornsPhysicalMin", "BASE", 1, { type = "PerStat", stat = "ArmourOnBody Armour", div = 100 / num }), + mod("ThornsPhysicalMax", "BASE", 1, { type = "PerStat", stat = "ArmourOnBody Armour", div = 100 / num }), + } end, ["(%d+)%% increased armour per (%d+) reserved mana"] = function(num, _, mana) return { mod("Armour", "INC", num, { type = "PerStat", stat = "ManaReserved", div = tonumber(mana) }) } end, ["cannot be stunned"] = { flag("StunImmune"), }, ["cannot be stunned while bleeding"] = { flag("StunImmune", { type = "Condition", var = "Bleeding" }), }, From 3e59b0a926389a352214d945865119ae7986fed8 Mon Sep 17 00:00:00 2001 From: Nostrademous Date: Sat, 25 Jan 2025 16:52:40 -0500 Subject: [PATCH 3/4] fixed to use PercentStat --- src/Data/ModCache.lua | 2 +- src/Modules/ModParser.lua | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index e5413af4a5..0770cb6613 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -2525,7 +2525,7 @@ c["Gain Infernal Flame instead of spending Mana for Skill costs"]={nil,"Infernal c["Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum"]={nil,"Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum "} c["Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame"]={nil,"Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame "} c["Gain Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame 10% of Infernal Flame lost per second if none was gained in the past 2 seconds"]={nil,"Infernal Flame instead of spending Mana for Skill costs Take maximum Life and Energy Shield as Fire Damage when Infernal Flame reaches maximum Lose all Infernal Flame on reaching maximum Infernal Flame 10% of Infernal Flame lost per second if none was gained in the past 2 seconds "} -c["Gain Physical Thorns damage equal to 2% of Armour from equipped Body Armour"]={{[1]={[1]={div=50,stat="ArmourOnBody Armour",type="PerStat"},flags=0,keywordFlags=0,name="ThornsPhysicalMin",type="BASE",value=1},[2]={[1]={div=50,stat="ArmourOnBody Armour",type="PerStat"},flags=0,keywordFlags=0,name="ThornsPhysicalMax",type="BASE",value=1}},nil} +c["Gain Physical Thorns damage equal to 2% of Armour from equipped Body Armour"]={{[1]={[1]={percent=2,stat="ArmourOnBody Armour",type="PercentStat"},flags=0,keywordFlags=0,name="ThornsPhysicalMin",type="BASE",value=1},[2]={[1]={percent=2,stat="ArmourOnBody Armour",type="PercentStat"},flags=0,keywordFlags=0,name="ThornsPhysicalMax",type="BASE",value=1}},nil} c["Gain Power Charges instead of Frenzy Charges"]={nil,"Power Charges instead of Frenzy Charges "} c["Gain Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges"]={nil,"Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges "} c["Gain Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges Gain Endurance Charges instead of Power Charges"]={nil,"Power Charges instead of Frenzy Charges Gain Frenzy Charges instead of Endurance Charges Gain Endurance Charges instead of Power Charges "} diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 110713f863..714fe525c0 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -4327,8 +4327,8 @@ local specialModList = { ["gain armour equal to your reserved mana"] = { mod("Armour", "BASE", 1, { type = "PerStat", stat = "ManaReserved", div = 1 }) }, ["gain ward instead of (%d+)%% of armour and evasion rating from equipped body armour"] = function(num) return {flag("ConvertBodyArmourArmourEvasionToWard"), mod("BodyArmourArmourEvasionToWardPercent", "BASE", num)} end, ["gain physical thorns damage equal to (%d+)%% of armour from equipped body armour"] = function(num) return { - mod("ThornsPhysicalMin", "BASE", 1, { type = "PerStat", stat = "ArmourOnBody Armour", div = 100 / num }), - mod("ThornsPhysicalMax", "BASE", 1, { type = "PerStat", stat = "ArmourOnBody Armour", div = 100 / num }), + mod("ThornsPhysicalMin", "BASE", 1, { type = "PercentStat", stat = "ArmourOnBody Armour", percent = num }), + mod("ThornsPhysicalMax", "BASE", 1, { type = "PercentStat", stat = "ArmourOnBody Armour", percent = num }), } end, ["(%d+)%% increased armour per (%d+) reserved mana"] = function(num, _, mana) return { mod("Armour", "INC", num, { type = "PerStat", stat = "ManaReserved", div = tonumber(mana) }) } end, ["cannot be stunned"] = { flag("StunImmune"), }, From 363fe514d49d9adf65dd56fae9dd8d039b7a672f Mon Sep 17 00:00:00 2001 From: Nostrademous Date: Sun, 26 Jan 2025 11:02:51 -0500 Subject: [PATCH 4/4] support for Scavenged Plating --- src/Data/Skills/act_str.lua | 6 ++++++ src/Export/Skills/act_str.txt | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/Data/Skills/act_str.lua b/src/Data/Skills/act_str.lua index 3a5f5cbc34..e9c134d247 100644 --- a/src/Data/Skills/act_str.lua +++ b/src/Data/Skills/act_str.lua @@ -10475,6 +10475,12 @@ skills["ScavengedPlatingPlayer"] = { ["scavenged_plating_maximum_stacks_display"] = { mod("Multiplier:ScavengedPlatingStacksLimit", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Scavenged Plating"}), }, + ["scavenged_plating_thorns_minimum_physical_damage"] = { + mod("ThornsPhysicalMin", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Scavenged Plating" }, { type = "Multiplier", var = "ScavengedPlatingStacks", limitVar = "ScavengedPlatingStacksLimit" }), + }, + ["scavenged_plating_thorns_maximum_physical_damage"] = { + mod("ThornsPhysicalMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Scavenged Plating" }, { type = "Multiplier", var = "ScavengedPlatingStacks", limitVar = "ScavengedPlatingStacksLimit" }), + }, }, baseFlags = { duration = true, diff --git a/src/Export/Skills/act_str.txt b/src/Export/Skills/act_str.txt index 6a14d6c3de..cf9c1cb2fa 100644 --- a/src/Export/Skills/act_str.txt +++ b/src/Export/Skills/act_str.txt @@ -627,6 +627,12 @@ statMap = { ["scavenged_plating_maximum_stacks_display"] = { mod("Multiplier:ScavengedPlatingStacksLimit", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Scavenged Plating"}), }, + ["scavenged_plating_thorns_minimum_physical_damage"] = { + mod("ThornsPhysicalMin", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Scavenged Plating" }, { type = "Multiplier", var = "ScavengedPlatingStacks", limitVar = "ScavengedPlatingStacksLimit" }), + }, + ["scavenged_plating_thorns_maximum_physical_damage"] = { + mod("ThornsPhysicalMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Scavenged Plating" }, { type = "Multiplier", var = "ScavengedPlatingStacks", limitVar = "ScavengedPlatingStacksLimit" }), + }, }, #mods #skillEnd