Skip to content

Commit dec9ba6

Browse files
committed
add support for low tolerance
1 parent dd240b9 commit dec9ba6

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

src/Modules/CalcOffence.lua

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3170,6 +3170,19 @@ function calcs.offence(env, actor, activeSkill)
31703170
breakdown.PoisonFire = { damageTypes = { } }
31713171
breakdown.PoisonChaos = { damageTypes = { } }
31723172
end
3173+
local rateMod = calcLib.mod(skillModList, cfg, "PoisonFaster") + enemyDB:Sum("INC", nil, "SelfPoisonFaster") / 100
3174+
local durationBase
3175+
if skillData.poisonDurationIsSkillDuration then
3176+
durationBase = skillData.duration
3177+
else
3178+
durationBase = data.misc.PoisonDurationBase
3179+
end
3180+
local durationMod = calcLib.mod(skillModList, dotCfg, "EnemyPoisonDuration", "SkillAndDamagingAilmentDuration", skillData.poisonIsSkillEffect and "Duration" or nil) * calcLib.mod(enemyDB, nil, "SelfPoisonDuration")
3181+
globalOutput.PoisonDuration = durationBase * durationMod / rateMod * debuffDurationMult
3182+
local PoisonStacks = globalOutput.PoisonDuration * (globalOutput.HitSpeed or globalOutput.Speed) * (skillData.dpsMultiplier or 1) * (skillData.stackMultiplier or 1) * quantityMultiplier
3183+
if PoisonStacks < 1 and (env.configInput.multiplierPoisonOnEnemy or 0) <= 1 then
3184+
skillModList:NewMod("Condition:SinglePoison", "FLAG", true, "poison")
3185+
end
31733186
for sub_pass = 1, 2 do
31743187
if skillModList:Flag(dotCfg, "AilmentsAreNeverFromCrit") or sub_pass == 1 then
31753188
dotCfg.skillCond["CriticalStrike"] = false
@@ -3249,22 +3262,13 @@ function calcs.offence(env, actor, activeSkill)
32493262
end
32503263
end
32513264
local effectMod = calcLib.mod(skillModList, dotCfg, "AilmentEffect")
3252-
local rateMod = calcLib.mod(skillModList, cfg, "PoisonFaster") + enemyDB:Sum("INC", nil, "SelfPoisonFaster") / 100
32533265
output.PoisonDPS = baseVal * effectMod * rateMod * effMult
3254-
local durationBase
3255-
if skillData.poisonDurationIsSkillDuration then
3256-
durationBase = skillData.duration
3257-
else
3258-
durationBase = data.misc.PoisonDurationBase
3259-
end
3260-
local durationMod = calcLib.mod(skillModList, dotCfg, "EnemyPoisonDuration", "SkillAndDamagingAilmentDuration", skillData.poisonIsSkillEffect and "Duration" or nil) * calcLib.mod(enemyDB, nil, "SelfPoisonDuration")
3261-
globalOutput.PoisonDuration = durationBase * durationMod / rateMod * debuffDurationMult
32623266
output.PoisonDamage = output.PoisonDPS * globalOutput.PoisonDuration
32633267
if skillData.showAverage then
32643268
output.TotalPoisonAverageDamage = output.HitChance / 100 * output.PoisonChance / 100 * output.PoisonDamage
32653269
output.TotalPoisonDPS = output.PoisonDPS
32663270
else
3267-
output.TotalPoisonStacks = output.HitChance / 100 * output.PoisonChance / 100 * globalOutput.PoisonDuration * (globalOutput.HitSpeed or globalOutput.Speed) * (skillData.dpsMultiplier or 1) * (skillData.stackMultiplier or 1) * quantityMultiplier
3271+
output.TotalPoisonStacks = output.HitChance / 100 * output.PoisonChance / 100 * PoisonStacks
32683272
output.TotalPoisonDPS = output.PoisonDPS * output.TotalPoisonStacks
32693273
end
32703274
if breakdown then

src/Modules/ModParser.lua

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2524,6 +2524,9 @@ local specialModList = {
25242524
["(%d+)%% chance for poisons inflicted with this weapon to deal (%d+)%% more damage"] = function(num, _, more) return {
25252525
mod("Damage", "MORE", tonumber(more) * num / 100, nil, 0, KeywordFlag.Poison, { type = "Condition", var = "{Hand}Attack" }, { type = "SkillType", skillType = SkillType.Attack }),
25262526
} end,
2527+
["poisons you inflict on non%-poisoned enemies deal (%d+)%% increased damage"] = function(num) return {
2528+
mod("Damage", "INC", num, nil, 0, KeywordFlag.Poison, { type = "Condition", var = "SinglePoison" })
2529+
} end,
25272530
["poisons on you expire (%d+)%% slower"] = function(num) return { mod("SelfPoisonDebuffExpirationRate", "BASE", -num)} end,
25282531
-- Suppression
25292532
["your chance to suppressed spell damage is lucky"] = { flag("SpellSuppressionChanceIsLucky") },

0 commit comments

Comments
 (0)