diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index bc3fb4fef..10c3bf9ae 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -877,11 +877,9 @@ c["10% chance for Attack Hits to apply ten Incision"]={{[1]={flags=0,keywordFlag c["10% chance for Enemies you Kill to Explode, dealing 100%"]={{}," for Enemies you Kill to Explode, dealing 100% "} c["10% chance for Enemies you Kill to Explode, dealing 100% of their maximum Life as Physical Damage"]={{[1]={flags=0,keywordFlags=0,name="ExplodeMod",type="LIST",value={amount=100,keyOfScaledMod="chance",type="Physical",value=10}},[2]={flags=0,keywordFlags=0,name="CanExplode",type="FLAG",value=true}},nil} c["10% chance for Flasks you use to not consume Charges"]={{[1]={flags=0,keywordFlags=0,name="FlaskChanceNotConsumeCharges",type="BASE",value=10}},nil} -c["10% chance for Mace Slam Skills you use yourself to cause Aftershocks"]={{}," for Mace Slam Skills you use yourself to cause Aftershocks "} -c["10% chance for Mace Slam Skills you use yourself to cause Aftershocks 10% chance for Mace Strike Skills you use yourself to cause Aftershocks, dealing"]={{}," for Mace Slam Skills you use yourself to cause Aftershocks 10% chance forSkills you use yourself to cause Aftershocks, dealing "} -c["10% chance for Mace Slam Skills you use yourself to cause Aftershocks 10% chance for Mace Strike Skills you use yourself to cause Aftershocks, dealing the same damage to enemies within 1.8 metres"]={{[1]={[1]={includeTransfigured=true,skillName="Mace Strike",type="SkillName"},flags=0,keywordFlags=0,name="Damage",type="BASE",value=10}}," for Mace Slam Skills you use yourself to cause Aftershocks 10% chance forSkills you use yourself to cause Aftershocks, dealing the same to enemies within 1.8 metres "} -c["10% chance for Mace Strike Skills you use yourself to cause Aftershocks, dealing"]={{}," forSkills you use yourself to cause Aftershocks, dealing "} -c["10% chance for Mace Strike Skills you use yourself to cause Aftershocks, dealing the same damage to enemies within 1.8 metres"]={{[1]={[1]={includeTransfigured=true,skillName="Mace Strike",type="SkillName"},flags=0,keywordFlags=0,name="Damage",type="BASE",value=10}}," forSkills you use yourself to cause Aftershocks, dealing the same to enemies within 1.8 metres "} +c["10% chance for Mace Slam Skills you use yourself to cause Aftershocks"]={{[1]={[1]={type="Condition",var="UsingMace"},[2]={skillType=92,type="SkillType"},[3]={neg=true,skillType=95,type="SkillType"},[4]={neg=true,skillType=37,type="SkillType"},[5]={neg=true,skillType=33,type="SkillType"},flags=0,keywordFlags=0,name="AftershockChance",type="BASE",value=10}},nil} +c["10% chance for Mace Strike Skills you use yourself to cause Aftershocks, dealing"]={{[1]={[1]={neg=true,skillType=95,type="SkillType"},[2]={neg=true,skillType=37,type="SkillType"},[3]={neg=true,skillType=33,type="SkillType"},[4]={includeTransfigured=true,skillName="Mace Strike",type="SkillName"},flags=0,keywordFlags=0,name="AftershockChance",type="BASE",value=10}}," forSkills , dealing "} +c["10% chance for Mace Strike Skills you use yourself to cause Aftershocks, dealing the same damage to enemies within 1.8 metres"]={{[1]={[1]={type="Condition",var="UsingMace"},[2]={skillType=21,type="SkillType"},flags=0,keywordFlags=0,name="AftershockChance",type="BASE",value=10}},nil} c["10% chance to Aggravate Bleeding on targets you Hit with Attacks"]={{}," to Aggravate Bleeding on targets you Hit "} c["10% chance to Aggravate Bleeding on targets you Hit with Attacks 8% 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=65536,name="Speed",type="BASE",value=10}}," to Aggravate Bleeding on targets you Hit 8% increased "} c["10% chance to Blind Enemies on Hit with Attacks"]={{[1]={flags=0,keywordFlags=65536,name="BlindChance",type="BASE",value=10}},nil} @@ -1867,7 +1865,7 @@ c["25% chance for Attacks to Maim on Hit against Poisoned Enemies"]={{}," to Ma 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 Lightning Damage with Hits to be Lucky"]={{[1]={flags=0,keywordFlags=0,name="LightningLuckyHitsChance",type="BASE",value=25}},nil} 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 Slam Skills you use yourself to cause Aftershocks"]={{}," for Slam Skills you use yourself to cause Aftershocks "} +c["25% chance for Slam Skills you use yourself to cause Aftershocks"]={{[1]={[1]={skillType=92,type="SkillType"},[2]={neg=true,skillType=95,type="SkillType"},[3]={neg=true,skillType=37,type="SkillType"},[4]={neg=true,skillType=33,type="SkillType"},flags=0,keywordFlags=0,name="AftershockChance",type="BASE",value=25}},nil} 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 "} c["25% chance on Shocking Enemies to created Shocked Ground"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="OnShockedGround"},flags=0,keywordFlags=0,name="ShockBase",type="BASE",value=20}},nil} @@ -2541,7 +2539,7 @@ c["5 to 10 Physical Thorns damage"]={{[1]={flags=0,keywordFlags=0,name="ThornsDa c["5 to 10 Physical Thorns damage Pain Attunement"]={{[1]={flags=0,keywordFlags=0,name="ThornsDamage",type="BASE",value=5}}," to 10 Physical Pain Attunement "} c["5% Chance to build an additional Combo on Hit"]={{}," to build an additional Combo "} 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 for Slam Skills you use yourself to cause Aftershocks"]={{}," for Slam Skills you use yourself to cause Aftershocks "} +c["5% chance for Slam Skills you use yourself to cause Aftershocks"]={{[1]={[1]={skillType=92,type="SkillType"},[2]={neg=true,skillType=95,type="SkillType"},[3]={neg=true,skillType=37,type="SkillType"},[4]={neg=true,skillType=33,type="SkillType"},flags=0,keywordFlags=0,name="AftershockChance",type="BASE",value=5}},nil} c["5% chance to Blind Enemies on Hit"]={{[1]={flags=0,keywordFlags=0,name="BlindChance",type="BASE",value=5}},nil} c["5% chance to Blind Enemies on Hit with Attacks"]={{[1]={flags=0,keywordFlags=65536,name="BlindChance",type="BASE",value=5}},nil} c["5% chance to Daze on Hit"]={{[1]={flags=4,keywordFlags=0,name="DazeChance",type="BASE",value=5}},nil} @@ -2898,7 +2896,7 @@ c["75% increased Thorns damage if you've Blocked Recently"]={{[1]={[1]={type="Co c["75% increased chance to Shock"]={{[1]={flags=0,keywordFlags=0,name="EnemyShockChance",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 for Mace Slam Skills you use yourself to cause Aftershocks"]={{}," for Mace Slam Skills you use yourself to cause Aftershocks "} +c["8% chance for Mace Slam Skills you use yourself to cause Aftershocks"]={{[1]={[1]={type="Condition",var="UsingMace"},[2]={skillType=92,type="SkillType"},[3]={neg=true,skillType=95,type="SkillType"},[4]={neg=true,skillType=37,type="SkillType"},[5]={neg=true,skillType=33,type="SkillType"},flags=0,keywordFlags=0,name="AftershockChance",type="BASE",value=8}},nil} c["8% chance to Blind Enemies on Hit with Attacks"]={{[1]={flags=0,keywordFlags=65536,name="BlindChance",type="BASE",value=8}},nil} c["8% chance to Poison on Hit"]={{[1]={flags=0,keywordFlags=0,name="PoisonChance",type="BASE",value=8}},nil} c["8% faster start of Energy Shield Recharge"]={{[1]={flags=0,keywordFlags=0,name="EnergyShieldRechargeFaster",type="INC",value=8}},nil} @@ -5440,7 +5438,7 @@ c["Skills have a 5% chance to not consume Glory"]={nil,"a 5% chance to not consu c["Skills reserve 50% less Spirit"]={{[1]={flags=0,keywordFlags=0,name="SpiritReserved",type="MORE",value=-50}},nil} c["Skills used by Totems have 30% more Skill Speed"]={{[1]={flags=0,keywordFlags=16384,name="Speed",type="MORE",value=30},[2]={flags=0,keywordFlags=16384,name="WarcrySpeed",type="MORE",value=30},[3]={flags=0,keywordFlags=16384,name="TotemPlacementSpeed",type="MORE",value=30}},nil} c["Slam Skills have 8% increased Area of Effect"]={{[1]={[1]={skillType=92,type="SkillType"},flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=8}},nil} -c["Slam Skills you use yourself cause Aftershocks"]={nil,"Slam Skills you use yourself cause Aftershocks "} +c["Slam Skills you use yourself cause Aftershocks"]={{[1]={[1]={skillType=92,type="SkillType"},[2]={neg=true,skillType=95,type="SkillType"},[3]={neg=true,skillType=37,type="SkillType"},[4]={neg=true,skillType=33,type="SkillType"},flags=0,keywordFlags=0,name="AftershockChance",type="BASE",value=100}},nil} c["Sorcery Ward recovers 50% faster"]={nil,"recovers 50% faster "} c["Soul Eater"]={{[1]={flags=0,keywordFlags=0,name="Condition:CanHaveSoulEater",type="FLAG",value=true}},nil} c["Spell Skills have 10% reduced Area of Effect"]={{[1]={flags=0,keywordFlags=131072,name="AreaOfEffect",type="INC",value=-10}},nil} @@ -5682,7 +5680,6 @@ c["additional Elemental Infusion of the same type"]={nil,"additional Elemental I c["for 4 seconds, every 0.25 seconds while raised"]={nil,"for 4 seconds, every 0.25 seconds while raised "} c["gain 6 Cold Surges or 6 Fire Surges"]={{}," Cold Surges or 6 Fire Surges "} c["the enemy's Power for 6 seconds, up to a total of 500"]={nil,"the enemy's Power for 6 seconds, up to a total of 500 "} -c["the same damage to enemies within 1.8 metres"]={nil,"the same damage to enemies within 1.8 metres "} c["until you take no Damage to Life for 5 seconds"]={nil,"until you take no Damage to Life for 5 seconds "} c["your Ailments on them"]={nil,"your Ailments on them "} c["your Ailments on them 30% reduced Duration of Ignite, Shock and Chill on Enemies"]={nil,"your Ailments on them 30% reduced Duration of Ignite, Shock and Chill on Enemies "} diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index 45a733611..2f7880f69 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -2408,6 +2408,9 @@ return { ["slam_aftershock_chance_%"] = { mod("AftershockChance", "BASE", nil) }, +["chance_to_aftershock_+%_per_250_ms_attack_time"] = { + mod("AftershockChanceQuarterSecond", "BASE", nil) +}, -- Curse ["curse_effect_+%"] = { mod("CurseEffect", "INC", nil), diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 72619e29e..8df297beb 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -2925,6 +2925,13 @@ function calcs.offence(env, actor, activeSkill) end end + if (skillModList:Sum("BASE", skillCfg, "AftershockChance", "AftershockChanceQuarterSecond") or 0) > 0 then + local aftershockChance = skillModList:Sum("BASE", skillCfg, "AftershockChance") + local inc = (skillModList:Sum("BASE", skillCfg, "AftershockChanceQuarterSecond") or 0) * m_floor(1 / output.Speed) / 0.25 + aftershockChance = aftershockChance * (1 + inc / 100) + skillModList:NewMod("DPS", "MORE", aftershockChance, "Aftershock Chance") + end + -- Grab quantity multiplier local quantityMultiplier = m_max(activeSkill.skillModList:Sum("BASE", activeSkill.skillCfg, "QuantityMultiplier"), 1) if quantityMultiplier > 1 then diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 0cbc2aa55..a87fed19c 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -870,6 +870,7 @@ local modNameList = { ["penalty to accuracy rating at range"] = "AccuracyPenalty", ["when you reload a crossbow to be immediate"] = "InstantReloadChance", ["to not expend ammunition"] = "ChanceToNotConsumeAmmo", + ["to cause aftershocks"] = "AftershockChance", -- Flask and Charm modifiers ["effect"] = "LocalEffect", ["effect of flasks"] = "FlaskEffect", @@ -1587,6 +1588,9 @@ local modTagList = { ["for each remaining chain"] = { tag = { type = "PerStat", stat = "ChainRemaining" } }, ["for each enemy pierced"] = { tag = { type = "PerStat", stat = "PiercedCount" } }, ["for each time they've pierced"] = { tag = { type = "PerStat", stat = "PiercedCount" } }, + ["for slam skills"] = { tag = { type = "SkillType", skillType = SkillType.Slam } }, + ["for mace slam skills"] = { tagList = { { type = "Condition", var = "UsingMace" }, { type = "SkillType", skillType = SkillType.Slam } }}, + ["you use yourself"] = { tagList = { { type = "SkillType", skillType = SkillType.UsedByTotem, neg = true }, { type = "SkillType", skillType = SkillType.Triggered, neg = true }, { type = "SkillType", skillType = SkillType.Trapped, neg = true } }}, -- Stat conditions ["with (%d+) or more strength"] = function(num) return { tag = { type = "StatThreshold", stat = "Str", threshold = num } } end, ["with at least (%d+) strength"] = function(num) return { tag = { type = "StatThreshold", stat = "Str", threshold = num } } end, @@ -5080,6 +5084,11 @@ local specialModList = { -- MultiplierThreshold is on RageStacks because Rage is only set in CalcPerform if Condition:CanGainRage is true, Bear's Girdle does not flag CanGainRage mod("EnemyModifier", "LIST", { mod = flag("Condition:Intimidated") }, { type = "MultiplierThreshold", var = "RageStack", threshold = 1 }) }, + ["(%d+)%% chance for mace strike skills you use yourself to cause aftershocks, dealing the same damage to enemies within ([%d%.]+) metres"] = function (num, _) return { + mod("AftershockChance", "BASE", num, + { type = "Condition", var = "UsingMace" }, + { type = "SkillType", skillType = SkillType.MeleeSingleTarget } ) + } end, -- Flasks ["flasks do not apply to you"] = { flag("FlasksDoNotApplyToPlayer") }, ["flasks apply to your zombies and spectres"] = { flag("FlasksApplyToMinion", { type = "SkillName", skillNameList = { "Raise Zombie", "Raise Spectre" }, includeTransfigured = true }) }, @@ -5703,6 +5712,9 @@ local specialModList = { } end, ["(%d+)%% reduced movement speed penalty from using skills while moving"] = function(num) return { mod("MovementSpeedPenalty", "INC", -num) } end, ["(%d+)%% less movement speed penalty from using skills while moving"] = function(num) return { mod("MovementSpeedPenalty", "MORE", -num) } end, + ["slam skills you use yourself cause aftershocks"] = { + mod("AftershockChance", "BASE", 100, { type = "SkillType", skillType = SkillType.Slam }, { type = "SkillType", skillType = SkillType.UsedByTotem, neg = true }, { type = "SkillType", skillType = SkillType.Triggered, neg = true }, { type = "SkillType", skillType = SkillType.Trapped, neg = true }) + }, -- Conditional Player Quantity / Rarity ["(%d+)%% increased quantity of items dropped by slain normal enemies"] = function(num) return { mod("LootQuantityNormalEnemies", "INC", num) } end, ["(%d+)%% increased rarity of items dropped by slain magic enemies"] = function(num) return { mod("LootRarityMagicEnemies", "INC", num) } end,