From 96aeba6e34bf4040e0662bc3849f0a0f83e6ab6d Mon Sep 17 00:00:00 2001 From: madxmike Date: Thu, 13 Feb 2025 22:32:18 -0500 Subject: [PATCH] Add initial implementation of thorns --- src/Classes/SkillsTab.lua | 12 +++++ src/Data/Global.lua | 17 +++---- src/Data/ModCache.lua | 83 +++++++++++++++++---------------- src/Data/Skills/other.lua | 34 +++++++++++++- src/Export/Skills/other.txt | 35 +++++++++++++- src/Modules/CalcActiveSkill.lua | 3 ++ src/Modules/CalcSetup.lua | 37 +++++++++++++++ src/Modules/ModParser.lua | 10 +++- 8 files changed, 179 insertions(+), 52 deletions(-) diff --git a/src/Classes/SkillsTab.lua b/src/Classes/SkillsTab.lua index 5ddbd0a2e9..a023f788cb 100644 --- a/src/Classes/SkillsTab.lua +++ b/src/Classes/SkillsTab.lua @@ -220,6 +220,12 @@ which comes from the following sources:]] label = label .. "\n\t" .. colorCodes[source.rarity or "NORMAL"] .. (source.name or source.dn or "???") end label = label .. "^7\nYou cannot delete this group, but it will disappear if you lose the above sources." + elseif self.displayGroup.thornsSources then + label = [[^7This is a special group created for thorns effect, which comes from the following sources:]] + for _, source in ipairs(self.displayGroup.thornsSources) do + label = label .. "\n\t" .. colorCodes[source.rarity or "NORMAL"] .. (source.name or source.dn or "???") + end + label = label .. "^7\nYou cannot delete this group, but it will disappear if you lose the above sources." else local activeGem = self.displayGroup.gemList[1] local sourceName @@ -1122,6 +1128,12 @@ function SkillsTabClass:AddSocketGroupTooltip(tooltip, socketGroup) end return end + if socketGroup.thornsSources then + for _, source in ipairs(socketGroup.thornsSources) do + tooltip:AddLine(18, "^7Source: " .. colorCodes[source.rarity or "NORMAL"] .. (source.name or source.dn or "???")) + end + return + end if socketGroup.enabled and not socketGroup.slotEnabled then tooltip:AddLine(16, "^7Note: this group is disabled because it is socketed in the inactive weapon set.") end diff --git a/src/Data/Global.lua b/src/Data/Global.lua index 059890f80f..9c6361d2de 100644 --- a/src/Data/Global.lua +++ b/src/Data/Global.lua @@ -266,16 +266,17 @@ KeywordFlag.Spell = 0x00020000 KeywordFlag.Hit = 0x00040000 KeywordFlag.Ailment = 0x00080000 KeywordFlag.Brand = 0x00100000 +KeywordFlag.Thorns = 0x00200000 -- Other effects -KeywordFlag.Poison = 0x00200000 -KeywordFlag.Bleed = 0x00400000 -KeywordFlag.Ignite = 0x00800000 +KeywordFlag.Poison = 0x00400000 +KeywordFlag.Bleed = 0x00800000 +KeywordFlag.Ignite = 0x01000000 -- Damage over Time types -KeywordFlag.PhysicalDot=0x01000000 -KeywordFlag.LightningDot=0x02000000 -KeywordFlag.ColdDot = 0x04000000 -KeywordFlag.FireDot = 0x08000000 -KeywordFlag.ChaosDot = 0x10000000 +KeywordFlag.PhysicalDot=0x02000000 +KeywordFlag.LightningDot=0x04000000 +KeywordFlag.ColdDot = 0x08000000 +KeywordFlag.FireDot = 0x10000000 +KeywordFlag.ChaosDot = 0x20000000 ---The default behavior for KeywordFlags is to match *any* of the specified flags. ---Including the "MatchAll" flag when creating a mod will cause *all* flags to be matched rather than any. KeywordFlag.MatchAll = 0x40000000 diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index d383227d83..363c115a06 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -82,8 +82,7 @@ c["+(9-14)% to Lightning Resistance"]={nil,"+(9-14)% to Lightning Resistance "} c["+0% to Cold Resistance"]={{[1]={flags=0,keywordFlags=0,name="ColdResist",type="BASE",value=0}},nil} c["+0% to Fire Resistance"]={{[1]={flags=0,keywordFlags=0,name="FireResist",type="BASE",value=0}},nil} c["+0% to Lightning Resistance"]={{[1]={flags=0,keywordFlags=0,name="LightningResist",type="BASE",value=0}},nil} -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 "} +c["+0.15% to Thorns Critical Hit Chance"]={{[1]={flags=0,keywordFlags=2097152,name="CritChance",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 "} @@ -244,8 +243,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=2097152,name="CritChance",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} @@ -556,7 +554,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=2097152,name="CritChance",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} @@ -767,10 +765,10 @@ c["10% increased Life and Mana Recovery from Flasks"]={{[1]={flags=0,keywordFlag c["10% increased Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="LightningDamage",type="INC",value=10}},nil} c["10% increased Lightning Exposure Effect"]={{[1]={flags=0,keywordFlags=0,name="LightningExposureEffect",type="INC",value=10}},nil} c["10% increased Magnitude of Ailments you inflict"]={{[1]={flags=0,keywordFlags=0,name="AilmentMagnitude",type="INC",value=10}},nil} -c["10% increased Magnitude of Bleeding you inflict"]={{[1]={flags=0,keywordFlags=4194304,name="AilmentMagnitude",type="INC",value=10}},nil} +c["10% increased Magnitude of Bleeding you inflict"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=10}},nil} c["10% increased Magnitude of Chill you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=10}},nil} -c["10% increased Magnitude of Ignite you inflict"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=10}},nil} -c["10% increased Magnitude of Poison you inflict"]={{[1]={flags=0,keywordFlags=2097152,name="AilmentMagnitude",type="INC",value=10}},nil} +c["10% increased Magnitude of Ignite you inflict"]={{[1]={flags=0,keywordFlags=16777216,name="AilmentMagnitude",type="INC",value=10}},nil} +c["10% increased Magnitude of Poison you inflict"]={{[1]={flags=0,keywordFlags=4194304,name="AilmentMagnitude",type="INC",value=10}},nil} c["10% increased Magnitude of Shock you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=10}},nil} c["10% increased Mana Cost of Skills"]={{[1]={flags=0,keywordFlags=0,name="ManaCost",type="INC",value=10}},nil} c["10% increased Mana Recovery Rate during Effect of any Mana Flask"]={{[1]={[1]={type="Condition",var="UsingManaFlask"},flags=0,keywordFlags=0,name="ManaRecoveryRate",type="INC",value=10}},nil} @@ -801,7 +799,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=2097152,name="Damage",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} @@ -875,12 +873,12 @@ c["100% increased Flask Charges gained"]={{[1]={flags=0,keywordFlags=0,name="Fla c["100% increased Freeze Buildup"]={{}," Freeze Buildup "} c["100% increased Freeze Buildup Enemies Frozen by you take 50% increased Damage"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="INC",value=100}}," Freeze Buildup Enemies Frozen by you take 50% increased "} c["100% increased Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="LightningDamage",type="INC",value=100}},nil} -c["100% increased Magnitude of Ignite you inflict"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=100}},nil} +c["100% increased Magnitude of Ignite you inflict"]={{[1]={flags=0,keywordFlags=16777216,name="AilmentMagnitude",type="INC",value=100}},nil} c["100% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=100}},nil} 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="Empowered"},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=2097152,name="Damage",type="INC",value=100}},nil} c["100% increased amount of Life Leeched"]={{[1]={flags=0,keywordFlags=0,name="MaxLifeLeechRate",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} @@ -929,8 +927,8 @@ c["12% increased Grenade Area of Effect"]={{[1]={[1]={skillType=169,type="SkillT c["12% increased Grenade Damage"]={{[1]={[1]={skillType=169,type="SkillType"},flags=0,keywordFlags=0,name="Damage",type="INC",value=12}},nil} c["12% increased Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="LightningDamage",type="INC",value=12}},nil} c["12% increased Magnitude of Ailments you inflict"]={{[1]={flags=0,keywordFlags=0,name="AilmentMagnitude",type="INC",value=12}},nil} -c["12% increased Magnitude of Ignite you inflict"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=12}},nil} -c["12% increased Magnitude of Poison you inflict"]={{[1]={flags=0,keywordFlags=2097152,name="AilmentMagnitude",type="INC",value=12}},nil} +c["12% increased Magnitude of Ignite you inflict"]={{[1]={flags=0,keywordFlags=16777216,name="AilmentMagnitude",type="INC",value=12}},nil} +c["12% increased Magnitude of Poison you inflict"]={{[1]={flags=0,keywordFlags=4194304,name="AilmentMagnitude",type="INC",value=12}},nil} c["12% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=12}},nil} c["12% increased Melee Damage"]={{[1]={flags=256,keywordFlags=0,name="Damage",type="INC",value=12}},nil} c["12% increased Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="PhysicalDamage",type="INC",value=12}},nil} @@ -967,6 +965,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=2097152,name="PhysicalMin",type="BASE",value="13"},[2]={flags=0,keywordFlags=2097152,name="PhysicalMax",type="BASE",value="23"},[3]={flags=0,keywordFlags=0,name="GrantsThorns",type="FLAG",value=true}},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} @@ -989,8 +988,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=2097152,name="PhysicalMin",type="BASE",value="15"},[2]={flags=0,keywordFlags=2097152,name="PhysicalMax",type="BASE",value="25"},[3]={flags=0,keywordFlags=0,name="GrantsThorns",type="FLAG",value=true}},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"]={{[1]={flags=0,keywordFlags=65536,name="BlindChance",type="BASE",value=15}},nil} @@ -1054,11 +1052,11 @@ c["15% increased Life Regeneration Rate while on Low Life"]={{[1]={[1]={type="Co c["15% increased Life Regeneration Rate while stationary"]={{[1]={[1]={type="Condition",var="Stationary"},flags=0,keywordFlags=0,name="LifeRegen",type="INC",value=15}},nil} c["15% increased Life Regeneration rate"]={{[1]={flags=0,keywordFlags=0,name="LifeRegen",type="INC",value=15}},nil} c["15% increased Life and Mana Recovery from Flasks"]={{[1]={flags=0,keywordFlags=0,name="FlaskLifeRecovery",type="INC",value=15},[2]={flags=0,keywordFlags=0,name="FlaskManaRecovery",type="INC",value=15}},nil} -c["15% increased Magnitude of Bleeding you inflict"]={{[1]={flags=0,keywordFlags=4194304,name="AilmentMagnitude",type="INC",value=15}},nil} -c["15% increased Magnitude of Bleeding you inflict with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=4194304,name="AilmentMagnitude",type="INC",value=15}},nil} +c["15% increased Magnitude of Bleeding you inflict"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=15}},nil} +c["15% increased Magnitude of Bleeding you inflict with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=15}},nil} c["15% increased Magnitude of Chill you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=15}},nil} -c["15% increased Magnitude of Damaging Ailments you inflict with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=14680064,name="AilmentMagnitude",type="INC",value=15}},nil} -c["15% increased Magnitude of Ignite you inflict with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=15}},nil} +c["15% increased Magnitude of Damaging Ailments you inflict with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=29360128,name="AilmentMagnitude",type="INC",value=15}},nil} +c["15% increased Magnitude of Ignite you inflict with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=16777216,name="AilmentMagnitude",type="INC",value=15}},nil} c["15% increased Magnitude of Jagged Ground you create"]={{[1]={flags=0,keywordFlags=0,name="EnemyJaggedGroundMagnitude",type="INC",value=15}},nil} c["15% increased Magnitude of Shock you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=15}},nil} c["15% increased Mana Cost of Skills"]={{[1]={flags=0,keywordFlags=0,name="ManaCost",type="INC",value=15}},nil} @@ -1149,7 +1147,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=2097152,name="Damage",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} @@ -1160,6 +1158,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=2097152,name="PhysicalMin",type="BASE",value="18"},[2]={flags=0,keywordFlags=2097152,name="PhysicalMax",type="BASE",value="28"},[3]={flags=0,keywordFlags=0,name="GrantsThorns",type="FLAG",value=true}},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} @@ -1195,9 +1194,9 @@ c["2% increased maximum Mana"]={{[1]={flags=0,keywordFlags=0,name="Mana",type="I 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=2097152,name="PhysicalMin",type="BASE",value="20"},[2]={flags=0,keywordFlags=2097152,name="PhysicalMax",type="BASE",value="30"},[3]={flags=0,keywordFlags=0,name="GrantsThorns",type="FLAG",value=true}},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 Bleeding to be Aggravated when Inflicted against Enemies on Jagged Ground 40% increased Jagged Ground Duration"]={{[1]={flags=0,keywordFlags=8388608,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 "} c["20% chance for Charms you use to not consume Charges Recover 5% of Mana when a Charm is used"]={{[1]={flags=0,keywordFlags=0,name="FlaskCharges",type="BASE",value=20}}," for Charms you use to not consume Recover 5% of Mana when a Charm is used "} c["20% chance for Energy Shield Recharge to start when you Kill an Enemy"]={{[1]={[1]={type="Condition",var="KilledRecently"},flags=0,keywordFlags=0,name="EnergyShield",type="BASE",value=20}}," for Recharge to start "} @@ -1286,11 +1285,11 @@ c["20% increased Life Regeneration Rate while moving"]={{[1]={[1]={type="Conditi c["20% increased Life Regeneration rate"]={{[1]={flags=0,keywordFlags=0,name="LifeRegen",type="INC",value=20}},nil} c["20% increased Life and Mana Recovery from Flasks"]={{[1]={flags=0,keywordFlags=0,name="FlaskLifeRecovery",type="INC",value=20},[2]={flags=0,keywordFlags=0,name="FlaskManaRecovery",type="INC",value=20}},nil} c["20% increased Light Radius"]={{[1]={flags=0,keywordFlags=0,name="LightRadius",type="INC",value=20}},nil} -c["20% increased Magnitude of Bleeding you inflict"]={{[1]={flags=0,keywordFlags=4194304,name="AilmentMagnitude",type="INC",value=20}},nil} -c["20% increased Magnitude of Damaging Ailments you inflict"]={{[1]={flags=0,keywordFlags=14680064,name="AilmentMagnitude",type="INC",value=20}},nil} -c["20% increased Magnitude of Ignite you inflict"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=20}},nil} +c["20% increased Magnitude of Bleeding you inflict"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=20}},nil} +c["20% increased Magnitude of Damaging Ailments you inflict"]={{[1]={flags=0,keywordFlags=29360128,name="AilmentMagnitude",type="INC",value=20}},nil} +c["20% increased Magnitude of Ignite you inflict"]={{[1]={flags=0,keywordFlags=16777216,name="AilmentMagnitude",type="INC",value=20}},nil} c["20% increased Magnitude of Non-Damaging Ailments you inflict with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=20},[2]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=20},[3]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyFreezeEffect",type="INC",value=20}},nil} -c["20% increased Magnitude of Poison you inflict"]={{[1]={flags=0,keywordFlags=2097152,name="AilmentMagnitude",type="INC",value=20}},nil} +c["20% increased Magnitude of Poison you inflict"]={{[1]={flags=0,keywordFlags=4194304,name="AilmentMagnitude",type="INC",value=20}},nil} c["20% increased Magnitude of Shock you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=20}},nil} c["20% increased Mana Flask Charges gained"]={{[1]={flags=0,keywordFlags=0,name="ManaFlaskChargesGained",type="INC",value=20}},nil} c["20% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=20}},nil} @@ -1354,7 +1353,7 @@ c["20% reduced Critical Damage Bonus"]={{[1]={flags=0,keywordFlags=0,name="CritM c["20% reduced Critical Hit Chance"]={{[1]={flags=0,keywordFlags=0,name="CritChance",type="INC",value=-20}},nil} c["20% reduced Life Regeneration rate"]={{[1]={flags=0,keywordFlags=0,name="LifeRegen",type="INC",value=-20}},nil} c["20% reduced Light Radius"]={{[1]={flags=0,keywordFlags=0,name="LightRadius",type="INC",value=-20}},nil} -c["20% reduced Magnitude of Poison you inflict"]={{[1]={flags=0,keywordFlags=2097152,name="AilmentMagnitude",type="INC",value=-20}},nil} +c["20% reduced Magnitude of Poison you inflict"]={{[1]={flags=0,keywordFlags=4194304,name="AilmentMagnitude",type="INC",value=-20}},nil} c["20% reduced Mana Cost of Skills"]={{[1]={flags=0,keywordFlags=0,name="ManaCost",type="INC",value=-20}},nil} c["20% reduced Mana Regeneration Rate while moving"]={{[1]={[1]={type="Condition",var="Moving"},flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=-20}},nil} c["20% reduced Movement Speed"]={{[1]={flags=0,keywordFlags=0,name="MovementSpeed",type="INC",value=-20}},nil} @@ -1387,9 +1386,9 @@ 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=2097152,name="FireMin",type="BASE",value="25"},[2]={flags=0,keywordFlags=2097152,name="FireMax",type="BASE",value="35"},[3]={flags=0,keywordFlags=0,name="GrantsThorns",type="FLAG",value=true}},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 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=4194304,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 "} c["25% chance for Trigger skills to refund half of Energy Spent"]={{}," for Trigger skills to refund half of Energy Spent "} c["25% chance on Consuming a Shock on an Enemy to reapply it"]={{}," on Consuming a Shock on an Enemy to reapply it "} @@ -1477,8 +1476,8 @@ c["25% increased Light Radius"]={{[1]={flags=0,keywordFlags=0,name="LightRadius" c["25% increased Lightning Damage"]={{[1]={flags=0,keywordFlags=0,name="LightningDamage",type="INC",value=25}},nil} c["25% increased Lightning Exposure Effect"]={{[1]={flags=0,keywordFlags=0,name="LightningExposureEffect",type="INC",value=25}},nil} c["25% increased Magnitude of Chill you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=25}},nil} -c["25% increased Magnitude of Ignite you inflict"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=25}},nil} -c["25% increased Magnitude of Poison you inflict"]={{[1]={flags=0,keywordFlags=2097152,name="AilmentMagnitude",type="INC",value=25}},nil} +c["25% increased Magnitude of Ignite you inflict"]={{[1]={flags=0,keywordFlags=16777216,name="AilmentMagnitude",type="INC",value=25}},nil} +c["25% increased Magnitude of Poison you inflict"]={{[1]={flags=0,keywordFlags=4194304,name="AilmentMagnitude",type="INC",value=25}},nil} c["25% increased Magnitude of Shock you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=25}},nil} c["25% increased Mana Recovery from Flasks"]={{[1]={flags=0,keywordFlags=0,name="FlaskManaRecovery",type="INC",value=25}},nil} c["25% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=25}},nil} @@ -1496,7 +1495,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=2097152,name="CritMultiplier",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} @@ -1544,6 +1543,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=2097152,name="PhysicalMin",type="BASE",value="28"},[2]={flags=0,keywordFlags=2097152,name="PhysicalMax",type="BASE",value="38"},[3]={flags=0,keywordFlags=0,name="GrantsThorns",type="FLAG",value=true}},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} @@ -1581,7 +1581,7 @@ c["3% less Damage taken per Tailwind"]={{[1]={[1]={type="Multiplier",var="Tailwi c["3% more Spell Damage per Power Charge"]={{[1]={[1]={type="Multiplier",var="PowerCharge"},flags=2,keywordFlags=0,name="Damage",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=2097152,name="PhysicalMin",type="BASE",value="30"},[2]={flags=0,keywordFlags=2097152,name="PhysicalMax",type="BASE",value="40"},[3]={flags=0,keywordFlags=0,name="GrantsThorns",type="FLAG",value=true}},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 "} @@ -1662,7 +1662,7 @@ c["30% increased Magnitude of Ailments you inflict"]={{[1]={flags=0,keywordFlags c["30% increased Magnitude of Chill you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=30}},nil} c["30% increased Magnitude of Non-Damaging Ailments you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=30},[2]={flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=30},[3]={flags=0,keywordFlags=0,name="EnemyFreezeEffect",type="INC",value=30}},nil} c["30% increased Magnitude of Non-Damaging Ailments you inflict with Critical Hits"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=30},[2]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=30},[3]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="EnemyFreezeEffect",type="INC",value=30}},nil} -c["30% increased Magnitude of Poison you inflict"]={{[1]={flags=0,keywordFlags=2097152,name="AilmentMagnitude",type="INC",value=30}},nil} +c["30% increased Magnitude of Poison you inflict"]={{[1]={flags=0,keywordFlags=4194304,name="AilmentMagnitude",type="INC",value=30}},nil} c["30% increased Magnitude of Shock you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockMagnitude",type="INC",value=30}},nil} c["30% increased Mana Recovery from Flasks"]={{[1]={flags=0,keywordFlags=0,name="FlaskManaRecovery",type="INC",value=30}},nil} c["30% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=30}},nil} @@ -1760,6 +1760,7 @@ c["37% increased Chaos Damage"]={{[1]={flags=0,keywordFlags=0,name="ChaosDamage" 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=2097152,name="PhysicalMin",type="BASE",value="4"},[2]={flags=0,keywordFlags=2097152,name="PhysicalMax",type="BASE",value="8"},[3]={flags=0,keywordFlags=0,name="GrantsThorns",type="FLAG",value=true}},nil} c["4% chance for Spell Skills to fire 2 additional Projectiles"]={{[1]={flags=2,keywordFlags=0,name="TwoAdditionalProjectilesChance",type="BASE",value=4}},nil} 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} @@ -1858,7 +1859,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=2097152,name="Damage",type="INC",value=40}},nil} c["40% increased Totem Damage"]={{[1]={flags=0,keywordFlags=16384,name="Damage",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} @@ -1890,8 +1891,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=2097152,name="PhysicalMin",type="BASE",value="5"},[2]={flags=0,keywordFlags=2097152,name="PhysicalMax",type="BASE",value="10"},[3]={flags=0,keywordFlags=0,name="GrantsThorns",type="FLAG",value=true}},nil} +c["5 to 9 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=2097152,name="PhysicalMin",type="BASE",value="5"},[2]={flags=0,keywordFlags=2097152,name="PhysicalMax",type="BASE",value="9"},[3]={flags=0,keywordFlags=0,name="GrantsThorns",type="FLAG",value=true}},nil} c["5% Chance to Block Spell Damage"]={{[1]={flags=0,keywordFlags=0,name="SpellBlockChance",type="BASE",value=5}},nil} c["5% additional Physical Damage Reduction while you have at least 150 Devotion"]={{[1]={[1]={stat="Devotion",threshold=150,type="StatThreshold"},flags=0,keywordFlags=0,name="PhysicalDamageReduction",type="BASE",value=5}},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 "} @@ -1989,7 +1990,7 @@ c["50% increased Freeze Buildup 30% increased Chill Duration on Enemies"]={{[1]= c["50% increased Freeze Buildup 30% increased Magnitude of Chill you inflict"]={{[1]={flags=0,keywordFlags=0,name="EnemyChillMagnitude",type="INC",value=50}}," Freeze Buildup 30% increased "} c["50% increased Grenade fuse duration"]={{[1]={[1]={skillType=169,type="SkillType"},flags=0,keywordFlags=0,name="Duration",type="INC",value=50}},nil} c["50% increased Lightning Damage while affected by Herald of Thunder"]={{[1]={[1]={type="Condition",var="AffectedByHeraldofThunder"},flags=0,keywordFlags=0,name="LightningDamage",type="INC",value=50}},nil} -c["50% increased Magnitude of Ignite you inflict"]={{[1]={flags=0,keywordFlags=8388608,name="AilmentMagnitude",type="INC",value=50}},nil} +c["50% increased Magnitude of Ignite you inflict"]={{[1]={flags=0,keywordFlags=16777216,name="AilmentMagnitude",type="INC",value=50}},nil} c["50% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=50}},nil} c["50% increased Mana Regeneration Rate while moving"]={{[1]={[1]={type="Condition",var="Moving"},flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=50}},nil} c["50% increased Mana Regeneration Rate while stationary"]={{[1]={[1]={type="Condition",var="Stationary"},flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=50}},nil} @@ -2040,7 +2041,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=2097152,name="Damage",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="SelfIgniteEffect",type="INC",value=-50}},nil} c["50% reduced effect of Shock on you"]={{[1]={flags=0,keywordFlags=0,name="SelfShockEffect",type="INC",value=-50}},nil} c["500% increased Armour"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="INC",value=500}},nil} @@ -2067,7 +2068,7 @@ c["6% increased Critical Hit Chance"]={{[1]={flags=0,keywordFlags=0,name="CritCh c["6% increased Effect of your Curses"]={{[1]={flags=0,keywordFlags=0,name="CurseEffect",type="INC",value=6}},nil} c["6% increased Fire Damage"]={{[1]={flags=0,keywordFlags=0,name="FireDamage",type="INC",value=6}},nil} c["6% increased Intelligence"]={{[1]={flags=0,keywordFlags=0,name="Int",type="INC",value=6}},nil} -c["6% increased Magnitude of Damaging Ailments you inflict"]={{[1]={flags=0,keywordFlags=14680064,name="AilmentMagnitude",type="INC",value=6}},nil} +c["6% increased Magnitude of Damaging Ailments you inflict"]={{[1]={flags=0,keywordFlags=29360128,name="AilmentMagnitude",type="INC",value=6}},nil} c["6% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="ManaRegen",type="INC",value=6}},nil} c["6% increased Movement Speed while you have an active Charm"]={{[1]={[1]={type="Condition",var="UsingCharm"},flags=0,keywordFlags=0,name="MovementSpeed",type="INC",value=6}},nil} c["6% increased Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="PhysicalDamage",type="INC",value=6}},nil} @@ -2135,7 +2136,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]={[1]={slotName="Weapon 2",type="SlotName"},[2]={type="Condition",var="UsingFocus"},flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=75}},nil} c["75% increased Evasion from Equipped Shield"]={{[1]={[1]={slotName="Weapon 2",type="SlotName"},[2]={type="Condition",var="UsingShield"},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=2097152,name="Damage",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 Block Spell Damage"]={{[1]={flags=0,keywordFlags=0,name="SpellBlockChance",type="BASE",value=8}},nil} diff --git a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua index f6b203a82f..cb65010b8e 100644 --- a/src/Data/Skills/other.lua +++ b/src/Data/Skills/other.lua @@ -3701,4 +3701,36 @@ skills["UniqueBreachLightningBoltPlayer"] = { }, }, } -} \ No newline at end of file +} + skills["ThornsPlayer"] = { + name = "Thorns", + hidden = true, + fromItem = true, + skillTypes = { [SkillType.Damage] = true }, + qualityStats = { + }, + levels = { + [1] = { levelRequirement = 0, }, + }, + statSets = { + [1] = { + label = "Thorns", + incrementalEffectiveness = 0, + statDescriptionScope = "skill_stat_descriptions", + baseFlags = { + thorns = true, + }, + baseMods = { + flag("CannotBleed"), + flag("CannotPoison"), + }, + constantStats = { + }, + stats = { + }, + levels = { + [1] = { }, + }, + }, + } + } diff --git a/src/Export/Skills/other.txt b/src/Export/Skills/other.txt index 51566a9c09..5b655db505 100644 --- a/src/Export/Skills/other.txt +++ b/src/Export/Skills/other.txt @@ -247,4 +247,37 @@ statMap = { #set UniqueBreachLightningBoltPlayer #flags spell area #mods -#skillEnd \ No newline at end of file +#skillEnd + +skills["ThornsPlayer"] = { + name = "Thorns", + hidden = true, + fromItem = true, + skillTypes = { [SkillType.Damage] = true }, + qualityStats = { + }, + levels = { + [1] = { levelRequirement = 0, }, + }, + statSets = { + [1] = { + label = "Thorns", + incrementalEffectiveness = 0, + statDescriptionScope = "skill_stat_descriptions", + baseFlags = { + thorns = true, + }, + baseMods = { + flag("CannotBleed"), + flag("CannotPoison"), + }, + constantStats = { + }, + stats = { + }, + levels = { + [1] = { }, + }, + }, + } +} \ No newline at end of file diff --git a/src/Modules/CalcActiveSkill.lua b/src/Modules/CalcActiveSkill.lua index e22489b0ec..692ae9c0c5 100644 --- a/src/Modules/CalcActiveSkill.lua +++ b/src/Modules/CalcActiveSkill.lua @@ -465,6 +465,9 @@ function calcs.buildActiveSkillModList(env, activeSkill) if skillTypes[SkillType.Spell] and not skillFlags.cast then skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Spell) end + if skillFlags.thorns then + skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Thorns) + end -- Get skill totem ID for totem skills -- This is used to calculate totem life diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index 8cdc448583..c4477f93db 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -183,6 +183,10 @@ function calcs.buildModListForNode(env, node, incSmallPassiveSkill) if modList:Flag(nil, "CanExplode") then t_insert(env.explodeSources, node) end + + if modList:Flag(nil, "GrantsThorns") then + t_insert(env.thornsSources, node) + end for i, mod in ipairs(modList) do local added = false @@ -496,6 +500,7 @@ function calcs.initEnv(build, mode, override, specEnv) env.grantedSkillsNodes = { } env.grantedSkillsItems = { } env.explodeSources = { } + env.thornsSources = { } env.itemWarnings = { } env.flasks = { } env.charms = { } @@ -740,6 +745,9 @@ function calcs.initEnv(build, mode, override, specEnv) if item and item.baseModList and item.baseModList:Flag(nil, "CanExplode") then t_insert(env.explodeSources, item) end + if item and item.baseModList and item.baseModList:Flag(nil, "GrantsThorns") then + t_insert(env.thornsSources, item) + end if slot.weaponSet and slot.weaponSet ~= (build.itemsTab.activeItemSet.useSecondWeaponSet and 2 or 1) then goto continue end @@ -1329,6 +1337,35 @@ function calcs.initEnv(build, mode, override, specEnv) build.skillsTab:ProcessSocketGroup(group) end + if #env.thornsSources ~= 0 then + -- Check if a matching group already exists + local group + for _, socketGroup in pairs(build.skillsTab.socketGroupList) do + if socketGroup.source == "Thorns" then + group = socketGroup + break + end + end + if not group then + -- Create a new group for this skill + group = { label = "Thorns", enabled = true, gemList = { }, source = "Thorns", noSupports = true } + t_insert(build.skillsTab.socketGroupList, group) + end + -- Update the group + group.thornsSources = env.thornsSources + wipeTable(group.gemList) + local activeGemInstance = { + skillId = "ThornsPlayer", + quality = 0, + enabled = true, + level = 1, + triggered = true, + } + t_insert(group.gemList, activeGemInstance) + markList[group] = true + build.skillsTab:ProcessSocketGroup(group) + end + -- Remove any socket groups that no longer have a matching item local i = 1 while build.skillsTab.socketGroupList[i] do diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 8545b279dc..dc1f7ea770 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -662,11 +662,14 @@ local modNameList = { ["cold damage over time multiplier"] = "ColdDotMultiplier", ["chaos damage over time multiplier"] = "ChaosDotMultiplier", ["damage over time multiplier"] = "DotMultiplier", + ["thorns damage"] = { "Damage", keywordFlags = KeywordFlag.Thorns }, -- Crit/accuracy/speed modifiers ["critical hit chance"] = "CritChance", ["attack critical hit chance"] = { "CritChance", flags = ModFlag.Attack }, + ["thorns critical hit chance"] = { "CritChance", keywordFlags = KeywordFlag.Thorns }, ["critical damage bonus"] = "CritMultiplier", ["attack critical damage bonus"] = { "CritMultiplier", flags = ModFlag.Attack }, + ["thorns critical damage bonus"] = { "CritMultiplier", keywordFlags = KeywordFlag.Thorns }, ["critical spell damage bonus"] = { "CritMultiplier", flags = ModFlag.Spell }, ["accuracy"] = "Accuracy", ["accuracy rating"] = "Accuracy", @@ -5319,7 +5322,12 @@ local specialModList = { ["nearby allies have (%d+)%% chance to block attack damage per (%d+) strength you have"] = function(block, _, str) return { mod("ExtraAura", "LIST", { onlyAllies = true, mod = mod("BlockChance", "BASE", block) }, { type = "PerStat", stat = "Str", div = tonumber(str) }), } end, - ["physical damage reduction from armour is based on your combined armour and evasion rating"] = { mod("EvasionAddsToPdr", "FLAG", true) } + ["physical damage reduction from armour is based on your combined armour and evasion rating"] = { mod("EvasionAddsToPdr", "FLAG", true) }, + ["(%d+) to (%d+) (%a+) thorns damage"] = function(_, min, max, damageType) return { + mod(damageType:gsub("^%l", string.upper).."Min", "BASE", min, nil, 0, KeywordFlag.Thorns), + mod(damageType:gsub("^%l", string.upper).."Max", "BASE", max, nil, 0, KeywordFlag.Thorns), + flag("GrantsThorns") + } end, } for _, name in pairs(data.keystones) do specialModList[name:lower()] = { mod("Keystone", "LIST", name) }