From 353ce7100e0bca7d7dee03137ec8c9f1c7a5ac89 Mon Sep 17 00:00:00 2001 From: Markus Persson Date: Sun, 3 Mar 2019 16:56:32 +0100 Subject: [PATCH] Add mods from Vixen's Entrapment, Embroidered Gloves - Increased cast speed with curse skills - Added energy shield leech - Updated Ghost Reaver (not 100% done) --- Data/New.lua | 9 +++++++ Modules/CalcDefence-3_0.lua | 23 ++++++++--------- Modules/CalcOffence-3_0.lua | 49 ++++++++++++++++++++++++++++++------ Modules/CalcSections-3_0.lua | 22 ++++++++-------- Modules/CalcSetup.lua | 1 + Modules/ConfigOptions.lua | 3 +++ Modules/ModParser-3_0.lua | 3 +++ 7 files changed, 80 insertions(+), 30 deletions(-) diff --git a/Data/New.lua b/Data/New.lua index de4b967a..05b6a001 100644 --- a/Data/New.lua +++ b/Data/New.lua @@ -81,6 +81,15 @@ Triggers Level 20 Lightning Aegis when Equipped 320% increased Evasion and Energy Shield +47 to maximum Mana 6% increased Movement Speed +]],[[ +Vixen's Entrapment +Embroidered Gloves +Requires Level: 36 ++64 to maximum Energy Shield +You can apply an additional Curse +16% increased Cast Speed with Curse Skills +0.2% of Spell Damage Leeched as Energy Shield for each Curse on Enemy +Trigger Socketed Curse Spells when you cast a Curse ]], } diff --git a/Modules/CalcDefence-3_0.lua b/Modules/CalcDefence-3_0.lua index 34554727..568e6365 100644 --- a/Modules/CalcDefence-3_0.lua +++ b/Modules/CalcDefence-3_0.lua @@ -206,16 +206,7 @@ function calcs.defence(env, actor) output.EnergyShieldRecoveryRateMod = calcLib.mod(modDB, nil, "EnergyShieldRecovery", "EnergyShieldRecoveryRate") -- Leech caps - if modDB:Flag(nil, "GhostReaver") then - output.MaxEnergyShieldLeechRate = output.EnergyShield * calcLib.val(modDB, "MaxLifeLeechRate") / 100 - if breakdown then - breakdown.MaxEnergyShieldLeechRate = { - s_format("%d ^8(maximum energy shield)", output.EnergyShield), - s_format("x %d%% ^8(percentage of life to maximum leech rate)", modDB:Sum("BASE", nil, "MaxLifeLeechRate")), - s_format("= %.1f", output.MaxEnergyShieldLeechRate) - } - end - else + if not modDB:Flag(nil, "GhostReaver") then output.MaxLifeLeechRate = output.Life * calcLib.val(modDB, "MaxLifeLeechRate") / 100 if breakdown then breakdown.MaxLifeLeechRate = { @@ -223,7 +214,7 @@ function calcs.defence(env, actor) s_format("x %d%% ^8(percenage of life to maximum leech rate)", modDB:Sum("BASE", nil, "MaxLifeLeechRate")), s_format("= %.1f", output.MaxLifeLeechRate) } - end + end end output.MaxManaLeechRate = output.Mana * calcLib.val(modDB, "MaxManaLeechRate") / 100 if breakdown then @@ -233,7 +224,15 @@ function calcs.defence(env, actor) s_format("= %.1f", output.MaxManaLeechRate) } end - + output.MaxEnergyShieldLeechRate = output.EnergyShield * calcLib.val(modDB, "MaxEnergyShieldLeechRate") / 100 + if breakdown then + breakdown.MaxEnergyShieldLeechRate = { + s_format("%d ^8(maximum energy shield)", output.EnergyShield), + s_format("x %d%% ^8(percentage of energy shield to maximum leech rate)", modDB:Sum("BASE", nil, "MaxEnergyShieldLeechRate")), + s_format("= %.1f", output.MaxEnergyShieldLeechRate) + } + end + -- Mana, life and energy shield regen if modDB:Flag(nil, "NoManaRegen") then output.ManaRegen = 0 diff --git a/Modules/CalcOffence-3_0.lua b/Modules/CalcOffence-3_0.lua index f4653294..0ac2bc78 100644 --- a/Modules/CalcOffence-3_0.lua +++ b/Modules/CalcOffence-3_0.lua @@ -921,11 +921,14 @@ function calcs.offence(env, actor, activeSkill) output.LifeLeechInstant = 0 output.ManaLeech = 0 output.ManaLeechInstant = 0 + output.EnergyShieldLeech = 0 + output.EnergyShieldLeechInstant = 0 for pass = 1, 2 do -- Pass 1 is critical strike damage, pass 2 is non-critical strike cfg.skillCond["CriticalStrike"] = (pass == 1) local lifeLeechTotal = 0 local manaLeechTotal = 0 + local energyShieldLeechTotal = 0 local noLifeLeech = skillModList:Flag(cfg, "CannotLeechLife") or enemyDB:Flag(nil, "CannotLeechLifeFromSelf") local noManaLeech = skillModList:Flag(cfg, "CannotLeechMana") or enemyDB:Flag(nil, "CannotLeechManaFromSelf") for _, damageType in ipairs(dmgTypeList) do @@ -1023,6 +1026,11 @@ function calcs.offence(env, actor, activeSkill) manaLeechTotal = manaLeechTotal + (min + max) / 2 * manaLeech / 100 end end + + local energyShieldLeech = skillModList:Sum("BASE", cfg, "DamageLeech", "DamageEnergyShieldLeech", damageType.."DamageEnergyShieldLeech", isElemental[damageType] and "ElementalDamageEnergyShieldLeech" or nil) + enemyDB:Sum("BASE", nil, "SelfDamageEnergyShield") / 100 + if energyShieldLeech > 0 then + energyShieldLeechTotal = energyShieldLeechTotal + (min + max) / 2 * energyShieldLeech / 100 + end end else min, max = 0, 0 @@ -1052,6 +1060,9 @@ function calcs.offence(env, actor, activeSkill) if skillData.manaLeechPerUse then manaLeechTotal = manaLeechTotal + skillData.manaLeechPerUse end + if skillData.energyShieldLeechPerUse then + energyShieldLeechTotal = energyShieldLeechTotal + skillData.energyShieldLeechPerUse + end local portion = (pass == 1) and (output.CritChance / 100) or (1 - output.CritChance / 100) if skillModList:Flag(cfg, "InstantLifeLeech") and not skillModList:Flag(nil, "GhostReaver") then output.LifeLeechInstant = output.LifeLeechInstant + lifeLeechTotal * portion @@ -1063,6 +1074,12 @@ function calcs.offence(env, actor, activeSkill) else output.ManaLeech = output.ManaLeech + manaLeechTotal * portion end + if skillModList:Flag(cfg, "InstantEnergyShieldLeech") then + output.EnergyShieldLeechInstant = output.EnergyShieldLeechInstant + energyShieldLeechTotal * portion + else + output.EnergyShieldLeech = output.EnergyShieldLeech + energyShieldLeechTotal * portion + end + end output.TotalMin = totalHitMin output.TotalMax = totalHitMax @@ -1097,7 +1114,9 @@ function calcs.offence(env, actor, activeSkill) output.LifeLeechInstantRate = output.LifeLeechInstant * hitRate output.ManaLeechDuration, output.ManaLeechInstances = getLeechInstances(output.ManaLeech, globalOutput.Mana) output.ManaLeechInstantRate = output.ManaLeechInstant * hitRate - + output.EnergyShieldLeechDuration, output.EnergyShieldLeechInstances = getLeechInstances(output.EnergyShieldLeech, globalOutput.EnergyShield) + output.EnergyShieldLeechInstantRate = output.EnergyShieldLeechInstant * hitRate + -- Calculate gain on hit if skillFlags.mine or skillFlags.trap or skillFlags.totem then output.LifeOnHit = 0 @@ -1149,6 +1168,10 @@ function calcs.offence(env, actor, activeSkill) combineStat("ManaLeechInstances", "DPS") combineStat("ManaLeechInstant", "DPS") combineStat("ManaLeechInstantRate", "DPS") + combineStat("EnergyShieldLeechDuration", "DPS") + combineStat("EnergyShieldLeechInstances", "DPS") + combineStat("EnergyShieldLeechInstant", "DPS") + combineStat("EnergyShieldLeechInstantRate", "DPS") combineStat("LifeOnHit", "DPS") combineStat("LifeOnHitRate", "DPS") combineStat("EnergyShieldOnHit", "DPS") @@ -1197,21 +1220,33 @@ function calcs.offence(env, actor, activeSkill) if skillModList:Flag(nil, "GhostReaver") then output.LifeLeechRate = 0 output.LifeLeechPerHit = 0 - output.EnergyShieldLeechInstanceRate = output.EnergyShield * 0.02 * calcLib.mod(skillModList, skillCfg, "LifeLeechRate") - output.EnergyShieldLeechRate = output.LifeLeechInstantRate * output.EnergyShieldRecoveryMod + m_min(output.LifeLeechInstances * output.EnergyShieldLeechInstanceRate, output.MaxEnergyShieldLeechRate) * output.EnergyShieldRecoveryRateMod - output.EnergyShieldLeechPerHit = output.LifeLeechInstant * output.EnergyShieldRecoveryMod + m_min(output.EnergyShieldLeechInstanceRate, output.MaxEnergyShieldLeechRate) * output.LifeLeechDuration * output.EnergyShieldRecoveryRateMod + + local energyShieldFromLifeInstanceRate = output.EnergyShield * 0.02 * calcLib.mod(skillModList, skillCfg, "LifeLeechRate") + local energyShieldFromLifeLeechRate = output.LifeLeechInstantRate * output.EnergyShieldRecoveryMod + m_min(output.LifeLeechInstances * energyShieldFromLifeInstanceRate, output.MaxEnergyShieldLeechRate) * output.EnergyShieldRecoveryRateMod + local energyShieldFromLifeLeechPerHit = output.LifeLeechInstant * output.EnergyShieldRecoveryMod + m_min(energyShieldFromLifeInstanceRate, output.MaxEnergyShieldLeechRate) * output.LifeLeechDuration * output.EnergyShieldRecoveryRateMod + + local energyShieldInstanceRate = output.EnergyShield * 0.02 * calcLib.mod(skillModList, skillCfg, "EnergyShieldLeechRate") + local energyShieldLeechRate = output.EnergyShieldLeechInstantRate * output.EnergyShieldRecoveryMod + m_min(output.EnergyShieldLeechInstances * energyShieldInstanceRate, output.MaxEnergyShieldLeechRate) * output.EnergyShieldRecoveryRateMod + local energyShieldPerHit = output.EnergyShieldLeechInstant * output.EnergyShieldRecoveryMod + m_min(energyShieldInstanceRate, output.MaxEnergyShieldLeechRate) * output.EnergyShieldLeechDuration * output.EnergyShieldRecoveryRateMod + + output.EnergyShieldLeechInstanceRate = energyShieldFromLifeInstanceRate + energyShieldInstanceRate + output.EnergyShieldLeechRate = energyShieldFromLifeLeechRate + energyShieldLeechRate + output.EnergyShieldLeechPerHit = energyShieldFromLifeLeechPerHit + energyShieldPerHit else output.LifeLeechInstanceRate = output.Life * 0.02 * calcLib.mod(skillModList, skillCfg, "LifeLeechRate") output.LifeLeechRate = output.LifeLeechInstantRate * output.LifeRecoveryMod + m_min(output.LifeLeechInstances * output.LifeLeechInstanceRate, output.MaxLifeLeechRate) * output.LifeRecoveryRateMod output.LifeLeechPerHit = output.LifeLeechInstant * output.LifeRecoveryMod + m_min(output.LifeLeechInstanceRate, output.MaxLifeLeechRate) * output.LifeLeechDuration * output.LifeRecoveryRateMod - output.EnergyShieldLeechRate = 0 - output.EnergyShieldLeechPerHit = 0 + + output.EnergyShieldLeechInstanceRate = output.EnergyShield * 0.02 * calcLib.mod(skillModList, skillCfg, "EnergyShieldLeechRate") + output.EnergyShieldLeechRate = output.EnergyShieldLeechInstantRate * output.EnergyShieldRecoveryMod + m_min(output.EnergyShieldLeechInstances * output.EnergyShieldLeechInstanceRate, output.MaxEnergyShieldLeechRate) * output.EnergyShieldRecoveryRateMod + output.EnergyShieldLeechPerHit = output.EnergyShieldLeechInstant * output.EnergyShieldRecoveryMod + m_min(output.EnergyShieldLeechInstanceRate, output.MaxEnergyShieldLeechRate) * output.EnergyShieldLeechDuration * output.EnergyShieldRecoveryRateMod end do output.ManaLeechInstanceRate = output.Mana * 0.02 * calcLib.mod(skillModList, skillCfg, "ManaLeechRate") output.ManaLeechRate = output.ManaLeechInstantRate * output.ManaRecoveryMod + m_min(output.ManaLeechInstances * output.ManaLeechInstanceRate, output.MaxManaLeechRate) * output.ManaRecoveryRateMod output.ManaLeechPerHit = output.ManaLeechInstant * output.ManaRecoveryMod + m_min(output.ManaLeechInstanceRate, output.MaxManaLeechRate) * output.ManaLeechDuration * output.ManaRecoveryRateMod end + skillFlags.leechES = output.EnergyShieldLeechRate > 0 skillFlags.leechLife = output.LifeLeechRate > 0 skillFlags.leechMana = output.ManaLeechRate > 0 @@ -1229,7 +1264,7 @@ function calcs.offence(env, actor, activeSkill) breakdown.LifeLeech = breakdown.leech(output.LifeLeechInstant, output.LifeLeechInstantRate, output.LifeLeechInstances, output.Life, "LifeLeechRate", output.MaxLifeLeechRate, output.LifeLeechDuration) end if skillFlags.leechES then - breakdown.EnergyShieldLeech = breakdown.leech(output.LifeLeechInstant, output.LifeLeechInstantRate, output.LifeLeechInstances, output.EnergyShield, "LifeLeechRate", output.MaxEnergyShieldLeechRate, output.LifeLeechDuration) + breakdown.EnergyShieldLeech = breakdown.leech(output.EnergyShieldLeechInstant, output.EnergyShieldLeechInstantRate, output.EnergyShieldLeechInstances, output.EnergyShield, "EnergyShieldLeechRate", output.MaxEnergyShieldLeechRate, output.EnergyShieldLeechDuration) end if skillFlags.leechMana then breakdown.ManaLeech = breakdown.leech(output.ManaLeechInstant, output.ManaLeechInstantRate, output.ManaLeechInstances, output.Mana, "ManaLeechRate", output.MaxManaLeechRate, output.ManaLeechDuration) diff --git a/Modules/CalcSections-3_0.lua b/Modules/CalcSections-3_0.lua index f2a7dfd2..d23c4fdc 100644 --- a/Modules/CalcSections-3_0.lua +++ b/Modules/CalcSections-3_0.lua @@ -653,23 +653,23 @@ return { }, }, { label = "ES Leech Cap", flag = "leechES", { format = "{1:output:MaxEnergyShieldLeechRate}", { breakdown = "MaxEnergyShieldLeechRate" }, - { modName = "MaxLifeLeechRate" }, + { modName = "MaxEnergyShieldLeechRate" }, }, }, { label = "ES Leech Rate", flag = "leechES", notFlag = "showAverage", { format = "{1:output:EnergyShieldLeechRate}", { breakdown = "EnergyShieldLeech" }, - { label = "Player modifiers", notFlagList = { "totem", "attack" }, modName = { "DamageLeech", "DamageLifeLeech", "PhysicalDamageLifeLeech", "LightningDamageLifeLeech", "ColdDamageLifeLeech", "FireDamageLifeLeech", "ChaosDamageLifeLeech", "ElementalDamageLifeLeech" }, modType = "BASE", cfg = "skill" }, - { label = "Main Hand", notFlag = "totem", flag = "weapon1Attack", modName = { "DamageLeech", "DamageLifeLeech", "PhysicalDamageLifeLeech", "LightningDamageLifeLeech", "ColdDamageLifeLeech", "FireDamageLifeLeech", "ChaosDamageLifeLeech", "ElementalDamageLifeLeech" }, modType = "BASE", cfg = "weapon1" }, - { label = "Off Hand", notFlag = "totem", flag = "weapon2Attack", modName = { "DamageLeech", "DamageLifeLeech", "PhysicalDamageLifeLeech", "LightningDamageLifeLeech", "ColdDamageLifeLeech", "FireDamageLifeLeech", "ChaosDamageLifeLeech", "ElementalDamageLifeLeech" }, modType = "BASE", cfg = "weapon2" }, - { label = "Totem modifiers", flag = "totem", modName = { "DamageLifeLeechToPlayer" }, modType = "BASE", cfg = "skill" }, - { label = "Enemy modifiers", modName = { "SelfDamageLifeLeech" }, modType = "BASE", enemy = true }, + { label = "Player modifiers", notFlagList = { "totem", "attack" }, modName = { "DamageLeech", "DamageEnergyShieldLeech", "PhysicalDamageEnergyShieldLeech", "LightningDamageEnergyShieldLeech", "ColdDamageEnergyShieldLeech", "FireDamageEnergyShieldLeech", "ChaosDamageEnergyShieldLeech", "ElementalDamageEnergyShieldLeech" }, modType = "BASE", cfg = "skill" }, + { label = "Main Hand", notFlag = "totem", flag = "weapon1Attack", modName = { "DamageLeech", "DamageEnergyShieldLeech", "PhysicalDamageEnergyShieldLeech", "LightningDamageEnergyShieldLeech", "ColdDamageEnergyShieldLeech", "FireDamageEnergyShieldLeech", "ChaosDamageEnergyShieldLeech", "ElementalDamageEnergyShieldLeech" }, modType = "BASE", cfg = "weapon1" }, + { label = "Off Hand", notFlag = "totem", flag = "weapon2Attack", modName = { "DamageLeech", "DamageEnergyShieldLeech", "PhysicalDamageEnergyShieldLeech", "LightningDamageEnergyShieldLeech", "ColdDamageEnergyShieldLeech", "FireDamageEnergyShieldLeech", "ChaosDamageEnergyShieldLeech", "ElementalDamageEnergyShieldLeech" }, modType = "BASE", cfg = "weapon2" }, + { label = "Totem modifiers", flag = "totem", modName = { "DamageEnergyShieldLeechToPlayer" }, modType = "BASE", cfg = "skill" }, + { label = "Enemy modifiers", modName = { "SelfDamageEnergyShieldLeech" }, modType = "BASE", enemy = true }, }, }, { label = "ES Leech per Hit", flagList = { "leechES", "showAverage" }, { format = "{1:output:EnergyShieldLeechPerHit}", { breakdown = "EnergyShieldLeech" }, - { label = "Player modifiers", notFlagList = { "totem", "attack" }, modName = { "DamageLeech", "DamageLifeLeech", "PhysicalDamageLifeLeech", "LightningDamageLifeLeech", "ColdDamageLifeLeech", "FireDamageLifeLeech", "ChaosDamageLifeLeech", "ElementalDamageLifeLeech" }, modType = "BASE", cfg = "skill" }, - { label = "Main Hand", notFlag = "totem", flag = "weapon1Attack", modName = { "DamageLeech", "DamageLifeLeech", "PhysicalDamageLifeLeech", "LightningDamageLifeLeech", "ColdDamageLifeLeech", "FireDamageLifeLeech", "ChaosDamageLifeLeech", "ElementalDamageLifeLeech" }, modType = "BASE", cfg = "weapon1" }, - { label = "Off Hand", notFlag = "totem", flag = "weapon2Attack", modName = { "DamageLeech", "DamageLifeLeech", "PhysicalDamageLifeLeech", "LightningDamageLifeLeech", "ColdDamageLifeLeech", "FireDamageLifeLeech", "ChaosDamageLifeLeech", "ElementalDamageLifeLeech" }, modType = "BASE", cfg = "weapon2" }, - { label = "Totem modifiers", flag = "totem", modName = { "DamageLifeLeechToPlayer" }, modType = "BASE", cfg = "skill" }, - { label = "Enemy modifiers", modName = { "SelfDamageLifeLeech" }, modType = "BASE", enemy = true }, + { label = "Player modifiers", notFlagList = { "totem", "attack" }, modName = { "DamageLeech", "DamageEnergyShieldLeech", "PhysicalDamageEnergyShieldLeech", "LightningDamageEnergyShieldLeech", "ColdDamageEnergyShieldLeech", "FireDamageEnergyShieldLeech", "ChaosDamageEnergyShieldLeech", "ElementalDamageEnergyShieldLeech" }, modType = "BASE", cfg = "skill" }, + { label = "Main Hand", notFlag = "totem", flag = "weapon1Attack", modName = { "DamageLeech", "DamageEnergyShieldLeech", "PhysicalDamageEnergyShieldLeech", "LightningDamageEnergyShieldLeech", "ColdDamageEnergyShieldLeech", "FireDamageEnergyShieldLeech", "ChaosDamageEnergyShieldLeech", "ElementalDamageEnergyShieldLeech" }, modType = "BASE", cfg = "weapon1" }, + { label = "Off Hand", notFlag = "totem", flag = "weapon2Attack", modName = { "DamageLeech", "DamageEnergyShieldLeech", "PhysicalDamageEnergyShieldLeech", "LightningDamageEnergyShieldLeech", "ColdDamageEnergyShieldLeech", "FireDamageEnergyShieldLeech", "ChaosDamageEnergyShieldLeech", "ElementalDamageEnergyShieldLeech" }, modType = "BASE", cfg = "weapon2" }, + { label = "Totem modifiers", flag = "totem", modName = { "DamageEnergyShieldLeechToPlayer" }, modType = "BASE", cfg = "skill" }, + { label = "Enemy modifiers", modName = { "SelfDamageEnergyShieldLeech" }, modType = "BASE", enemy = true }, }, }, { label = "ES Gain Rate", notFlag = "showAverage", haveOutput = "EnergyShieldOnHitRate", { format = "{1:output:EnergyShieldOnHitRate}", { label = "Player modifiers", notFlag = "attack", modName = "EnergyShieldOnHit", modType = "BASE", cfg = "skill" }, diff --git a/Modules/CalcSetup.lua b/Modules/CalcSetup.lua index 789b09ae..554fa3de 100644 --- a/Modules/CalcSetup.lua +++ b/Modules/CalcSetup.lua @@ -27,6 +27,7 @@ function calcs.initModDB(env, modDB) modDB:NewMod("EnduranceChargesMax", "BASE", 3, "Base") modDB:NewMod("MaxLifeLeechRate", "BASE", 20, "Base") modDB:NewMod("MaxManaLeechRate", "BASE", 20, "Base") + modDB:NewMod("MaxEnergyShieldLeechRate", "BASE", 10, "Base") modDB:NewMod("MineLayingTime", "BASE", 0.5, "Base") if env.build.targetVersion == "2_6" then modDB:NewMod("TrapThrowingTime", "BASE", 0.5, "Base") diff --git a/Modules/ConfigOptions.lua b/Modules/ConfigOptions.lua index 7358c1cc..43e91fa7 100644 --- a/Modules/ConfigOptions.lua +++ b/Modules/ConfigOptions.lua @@ -612,6 +612,9 @@ return { { var = "multiplierPoisonOnEnemy", type = "count", label = "# of Poison on Enemy:", implyCond = "Poisoned", apply = function(val, modList, enemyModList) enemyModList:NewMod("Multiplier:PoisonStack", "BASE", val, "Config", { type = "Condition", var = "Effective" }) end }, + { var = "multiplierCurseOnEnemy", type = "count", label = "# of Curses on Enemy:", implyCond = "Cursed", apply = function(val, modList, enemyModList) + enemyModList:NewMod("Multiplier:CurseStack", "BASE", val, "Config", { type = "Condition", var = "Effective" }) + end }, { var = "conditionEnemyMaimed", type = "check", label = "Is the enemy Maimed?", apply = function(val, modList, enemyModList) enemyModList:NewMod("Condition:Maimed", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) end }, diff --git a/Modules/ModParser-3_0.lua b/Modules/ModParser-3_0.lua index bd827024..13bb9fb7 100644 --- a/Modules/ModParser-3_0.lua +++ b/Modules/ModParser-3_0.lua @@ -498,6 +498,7 @@ local modFlagList = { ["for skills used by totems"] = { keywordFlags = KeywordFlag.Totem }, ["of aura skills"] = { tag = { type = "SkillType", skillType = SkillType.Aura } }, ["of curse skills"] = { keywordFlags = KeywordFlag.Curse }, + ["with curse skills"] = { keywordFlags = KeywordFlag.Curse }, ["of herald skills"] = { tag = { type = "SkillType", skillType = SkillType.Herald } }, ["of minion skills"] = { tag = { type = "SkillType", skillType = SkillType.Minion } }, ["for curses"] = { keywordFlags = KeywordFlag.Curse }, @@ -878,6 +879,7 @@ local modTagList = { ["per poison affecting enemy"] = { tag = { type = "Multiplier", actor = "enemy", var = "PoisonStack" } }, ["per poison affecting enemy, up to %+([%d%.]+)%%"] = function(num) return { tag = { type = "Multiplier", actor = "enemy", var = "PoisonStack", limit = num, limitTotal = true } } end, ["for each spider's web on the enemy"] = { tag = { type = "Multiplier", actor = "enemy", var = "Spider's WebStack" } }, + ["for each curse on enemy"] = { tag = { type = "Multiplier", actor = "enemy", var = "CurseStack" } }, } local mod = modLib.createMod @@ -1578,6 +1580,7 @@ local suffixTypes = { ["is leeched as life"] = "LifeLeech", ["leeched as mana"] = "ManaLeech", ["is leeched as mana"] = "ManaLeech", + ["leeched as energy shield"] = "EnergyShieldLeech", } local dmgTypes = { ["physical"] = "Physical",