Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert sidebar poison to split posion dps again #8254

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Modules/Build.lua
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,7 @@ function buildMode:Init(dbFileName, buildName, buildXML, convertBuild, importLin
{ stat = "MirageBurningGroundDPS", label = "Mirage Burning Ground DPS", fmt = ".1f", compPercent = true, condFunc = function(v,o) return v ~= o.BurningGroundDPS end, warnFunc = function(v,o) return v >= data.misc.DotDpsCap and "Mirage Burning Ground DPS exceeds in game limit" end },
{ stat = "WithIgniteDPS", label = "Total DPS inc. Ignite", fmt = ".1f", compPercent = true, flag = "notAverage", condFunc = function(v,o) return v ~= o.TotalDPS and (o.TotalDot or 0) == 0 and (o.PoisonDPS or 0) == 0 and (o.ImpaleDPS or 0) == 0 and (o.BleedDPS or 0) == 0 end },
{ stat = "WithIgniteAverageDamage", label = "Average Dmg. inc. Ignite", fmt = ".1f", compPercent = true },
{ stat = "PoisonDPS", label = "Poison DPS", fmt = ".1f", compPercent = true, warnFunc = function(v) return v >= data.misc.DotDpsCap and "Poison DPS exceeds in game limit" end },
{ stat = "PoisonDPS", label = "Single Poison DPS", fmt = ".1f", compPercent = true, warnFunc = function(v) return v >= data.misc.DotDpsCap and "Poison DPS exceeds in game limit" end },
{ stat = "CausticGroundDPS", label = "Caustic Ground DPS", fmt = ".1f", compPercent = true, warnFunc = function(v,o) return v >= data.misc.DotDpsCap and "Caustic Ground DPS exceeds in game limit" end },
{ stat = "MirageCausticGroundDPS", label = "Mirage Caustic Ground DPS", fmt = ".1f", compPercent = true, condFunc = function(v,o) return v ~= o.CausticGroundDPS end, warnFunc = function(v,o) return v >= data.misc.DotDpsCap and "Mirage Caustic Ground DPS exceeds in game limit" end },
{ stat = "PoisonDamage", label = "Total Damage per Poison", fmt = ".1f", compPercent = true },
Expand Down
47 changes: 30 additions & 17 deletions src/Modules/CalcOffence.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4235,15 +4235,14 @@ function calcs.offence(env, actor, activeSkill)
end
globalOutput.PoisonStacks = PoisonStacks
local effectMod = calcLib.mod(skillModList, dotCfg, "AilmentEffect")
local singlePoisonDps = m_min(baseVal * effectMod * rateMod * effMult, data.misc.DotDpsCap)
local PoisonDPSUncapped = singlePoisonDps * PoisonStacks
local PoisonDPSCapped = m_min(PoisonDPSUncapped, data.misc.DotDpsCap)
output.PoisonDamage = singlePoisonDps * globalOutput.PoisonDuration
local MinPoisonDPSUncapped = baseMinVal * effectMod * rateMod * effMult * PoisonStacks
local singlePoisonDPSUncapped = m_min(baseVal * effectMod * rateMod * effMult, data.misc.DotDpsCap)
local singlePoisonDPSCapped = m_min(singlePoisonDPSUncapped, data.misc.DotDpsCap)
output.PoisonDPS = singlePoisonDPSCapped
output.PoisonDamage = singlePoisonDPSCapped * globalOutput.PoisonDuration
local MinPoisonDPSUncapped = baseMinVal * effectMod * rateMod * effMult
local MinPoisonDPSCapped = m_min(MinPoisonDPSUncapped, data.misc.DotDpsCap)
local MaxPoisonDPSUncapped = baseMaxVal * effectMod * rateMod * effMult * PoisonStacks
local MaxPoisonDPSUncapped = baseMaxVal * effectMod * rateMod * effMult
local MaxPoisonDPSCapped = m_min(MaxPoisonDPSUncapped, data.misc.DotDpsCap)
output.PoisonDPS = PoisonDPSCapped
local groundMult = m_max(skillModList:Max(nil, "PoisonDpsAsCausticGround") or 0, enemyDB:Max(nil, "PoisonDpsAsCausticGround") or 0)
if groundMult > 0 then
local CausticGroundDPSUncapped = baseVal * effectMod * rateMod * effMult * groundMult / 100
Expand All @@ -4259,11 +4258,15 @@ function calcs.offence(env, actor, activeSkill)
}
end
end
local PoisonDPSUncapped
local PoisonDPSCapped
if skillData.showAverage then
output.TotalPoisonAverageDamage = output.PoisonDamage
output.TotalPoisonDPS = output.PoisonDPS
else
output.TotalPoisonDPS = m_min(PoisonDPSCapped, data.misc.DotDpsCap)
PoisonDPSUncapped = singlePoisonDPSCapped * PoisonStacks
PoisonDPSCapped = m_min(PoisonDPSUncapped, data.misc.DotDpsCap)
output.TotalPoisonDPS = PoisonDPSCapped
end
if breakdown then
if output.CritPoisonDotMulti and (output.CritPoisonDotMulti ~= output.PoisonDotMulti) then
Expand All @@ -4281,7 +4284,7 @@ function calcs.offence(env, actor, activeSkill)
t_insert(breakdown.PoisonDPS, s_format("= %.1f", baseVal, 1))
t_insert(breakdown.PoisonDPS, "")
t_insert(breakdown.PoisonDPS, "Poison DPS:")
if baseVal ~= PoisonDPSUncapped then
if baseVal ~= singlePoisonDPSUncapped then
t_insert(breakdown.PoisonDPS, s_format("%.1f ^8(base damage per second)", baseVal))
end
if effectMod ~= 1 then
Expand All @@ -4293,13 +4296,10 @@ function calcs.offence(env, actor, activeSkill)
if effMult ~= 1 then
t_insert(breakdown.PoisonDPS, s_format("x %.3f ^8(effective DPS modifier from enemy debuffs)", effMult))
end
if PoisonStacks ~= 1 then
t_insert(breakdown.PoisonDPS, s_format("x %.2f ^8(poison stacks)", PoisonStacks))
end
if output.PoisonDPS ~= PoisonDPSUncapped then
t_insert(breakdown.PoisonDPS, s_format("= %.1f ^8(Uncapped raw Poison DPS)", PoisonDPSUncapped))
t_insert(breakdown.PoisonDPS, s_format("^8(Raw Poison DPS is "..colorCodes.NEGATIVE.."overcapped ^8by^7 %.0f ^8:^7 %.1f%%^8)", PoisonDPSUncapped - PoisonDPSCapped, (PoisonDPSUncapped - PoisonDPSCapped) / PoisonDPSCapped * 100))
t_insert(breakdown.PoisonDPS, s_format("= %d ^8(Capped Poison DPS)", PoisonDPSCapped))
if output.PoisonDPS ~= singlePoisonDPSUncapped then
t_insert(breakdown.PoisonDPS, s_format("= %.1f ^8(Uncapped raw Poison DPS)", singlePoisonDPSUncapped))
t_insert(breakdown.PoisonDPS, s_format("^8(Raw Poison DPS is "..colorCodes.NEGATIVE.."overcapped ^8by^7 %.0f ^8:^7 %.1f%%^8)", singlePoisonDPSUncapped - singlePoisonDPSCapped, (singlePoisonDPSUncapped - singlePoisonDPSCapped) / singlePoisonDPSCapped * 100))
t_insert(breakdown.PoisonDPS, s_format("= %d ^8(Capped Poison DPS)", singlePoisonDPSCapped))
else
t_insert(breakdown.PoisonDPS, s_format("= %.1f ^8per second", output.PoisonDPS))
end
Expand All @@ -4320,6 +4320,19 @@ function calcs.offence(env, actor, activeSkill)
if MaxPoisonDPSCapped ~= MaxPoisonDPSUncapped or MinPoisonDPSCapped ~= MinPoisonDPSUncapped then
t_insert(breakdown.PoisonDPS, s_format("%.0f to %.0f ^8(Capped Poison DPS Range)", MinPoisonDPSCapped, MaxPoisonDPSCapped))
end
if not skillData.showAverage and PoisonStacks ~= 1 then
breakdown.TotalPoisonDPS = {
s_format("%.1f ^8single poison damage per second", singlePoisonDPSCapped),
s_format("x %.2f ^8(poison stacks)", PoisonStacks),
}
if output.TotalPoisonDPS ~= PoisonDPSUncapped then
t_insert(breakdown.TotalPoisonDPS, s_format("= %.1f ^8(Uncapped raw Poison DPS)", PoisonDPSUncapped))
t_insert(breakdown.TotalPoisonDPS, s_format("^8(Raw Poison DPS is "..colorCodes.NEGATIVE.."overcapped ^8by^7 %.0f ^8:^7 %.1f%%^8)", PoisonDPSUncapped - PoisonDPSCapped, (PoisonDPSUncapped - PoisonDPSCapped) / PoisonDPSCapped * 100))
t_insert(breakdown.TotalPoisonDPS, s_format("= %d ^8(Capped Poison DPS)", PoisonDPSCapped))
else
t_insert(breakdown.TotalPoisonDPS, s_format("= %.1f ^8per second", PoisonDPSCapped))
end
end
if globalOutput.PoisonDuration ~= 2 then
globalBreakdown.PoisonDuration = {
s_format("%.2fs ^8(base duration)", durationBase)
Expand All @@ -4339,7 +4352,7 @@ function calcs.offence(env, actor, activeSkill)
if isAttack then
t_insert(breakdown.PoisonDamage, pass.label..":")
end
t_insert(breakdown.PoisonDamage, s_format("%.1f ^8(damage per second)", singlePoisonDps))
t_insert(breakdown.PoisonDamage, s_format("%.1f ^8(damage per second)", singlePoisonDPSCapped))
t_insert(breakdown.PoisonDamage, s_format("x %.2fs ^8(poison duration)", globalOutput.PoisonDuration))
t_insert(breakdown.PoisonDamage, s_format("= %.1f ^8damage per poison stack", output.PoisonDamage))
end
Expand Down
11 changes: 8 additions & 3 deletions src/Modules/CalcSections.lua
Original file line number Diff line number Diff line change
Expand Up @@ -929,9 +929,14 @@ return {
{ label = "Enemy modifiers", modName = { "SelfPoisonDuration", "SelfAilmentDuration", "SelfPoisonFaster" }, enemy = true },
}, },
{ label = "Dmg. per Poison", { format = "{1:output:PoisonDamage}",
{ breakdown = "MainHand.PoisonDamage" },
{ breakdown = "OffHand.PoisonDamage" },
{ breakdown = "PoisonDamage" },
{ breakdown = "MainHand.PoisonDamage" },
{ breakdown = "OffHand.PoisonDamage" },
{ breakdown = "PoisonDamage" },
}, },
{ label = "Total Poison DPS", { format = "{1:output:TotalPoisonDPS}",
{ breakdown = "MainHand.TotalPoisonDPS" },
{ breakdown = "OffHand.TotalPoisonDPS" },
{ breakdown = "TotalPoisonDPS" },
}, },
} }
} },
Expand Down
Loading