Skip to content
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
1 change: 1 addition & 0 deletions src/Modules/CalcDefence.lua
Original file line number Diff line number Diff line change
Expand Up @@ -608,6 +608,7 @@ function calcs.resistances(actor)


output[elem.."Resist"] = final
output[elem.."ResistMax"] = max
output[elem.."ResistTotal"] = total
output[elem.."ResistOverCap"] = m_max(0, total - max)
output[elem.."ResistOver75"] = m_max(0, final - 75)
Expand Down
13 changes: 11 additions & 2 deletions src/Modules/CalcPerform.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1574,8 +1574,11 @@ function calcs.perform(env, skipEHP)
local flaskTotalRateInc = modDB:Sum("INC", nil, "FlaskRecoveryRate")
local flaskDurInc = modDB:Sum("INC", nil, "FlaskDuration")

-- flask breakdown
if breakdown then
-- flask stats
-- These are plain modifier aggregates rather than per-flask outcomes, so they are calculated
-- unconditionally: node power runs the calculator without a breakdown, and would otherwise
-- read every one of them as zero.
do
local chargesGenerated = modDB:Sum("BASE", nil, "FlaskChargesGenerated")
local usedFlasks = 0
for i, v in pairs(env.flasks) do
Expand All @@ -1591,6 +1594,12 @@ function calcs.perform(env, skipEHP)
local manaChargesGenerated = modDB:Sum("BASE", nil, "ManaFlaskChargesGenerated")

output.FlaskEffect = effectInc
output.FlaskDuration = flaskDurInc
output.FlaskRecoveryRate = flaskTotalRateInc
output.FlaskChargesUsed = modDB:Sum("INC", nil, "FlaskChargesUsed")
output.FlaskChargesGained = modDB:Sum("INC", nil, "FlaskChargesGained")
output.FlaskLifeRecovery = modDB:Sum("INC", nil, "FlaskLifeRecovery")
output.FlaskManaRecovery = modDB:Sum("INC", nil, "FlaskManaRecovery")
output.FlaskChargeGen = totalChargesGenerated
output.LifeFlaskChargeGen = totalChargesGenerated + lifeChargesGenerated
output.ManaFlaskChargeGen = totalChargesGenerated + manaChargesGenerated
Expand Down
53 changes: 53 additions & 0 deletions src/Modules/Data.lua
Original file line number Diff line number Diff line change
Expand Up @@ -128,23 +128,44 @@ data.powerStatList = {
{ stat="WithImpaleDPS", label="Impale + Hit DPS" },
{ stat="AverageDamage", label="Average Hit" },
{ stat="Speed", label="Attack/Cast Speed" },
{ stat="AreaOfEffectMod", label="Area of Effect" },
{ stat="DurationMod", label="Skill Effect Duration" },
{ stat="Cooldown", label="Cooldown Recovery", transform=function(value) return -value end },
{ stat="TotalDot", label="DoT DPS" },
{ stat="BleedDPS", label="Bleed DPS" },
{ stat="BleedDamage", label="Bleed Total Damage" },
{ stat="BleedDuration", label="Bleed Duration" },
{ stat="IgniteDPS", label="Ignite DPS" },
{ stat="IgniteDamage", label="Ignite Total Damage" },
{ stat="IgniteDuration", label="Ignite Duration" },
{ stat="PoisonDPS", label="Poison DPS" },
{ stat="PoisonDamage", label="Poison Total Damage" },
{ stat="PoisonDuration", label="Poison Duration" },
{ stat="Life", label="Life" },
{ stat="LifeRegen", label="Life regen" },
{ stat="LifeLeechRate", label="Life leech" },
{ stat="LifeRecoupRecoveryAvg", label="Life Recoup" },
{ stat="Armour", label="Armour" },
{ stat="Evasion", label="Evasion" },
{ stat="EnergyShield", label="Energy Shield" },
{ stat="EnergyShieldRecoveryCap", label="Recoverable ES" },
{ stat="EnergyShieldRegen", label="Energy Shield regen" },
{ stat="EnergyShieldLeechRate", label="Energy Shield leech" },
{ stat="EnergyShieldRecoupRecoveryAvg", label="Energy Shield Recoup" },
{ stat="Mana", label="Mana" },
{ stat="ManaRegen", label="Mana regen" },
{ stat="ManaLeechRate", label="Mana leech" },
{ stat="ManaRecoupRecoveryAvg", label="Mana Recoup" },
{ stat="ManaCost", label="Mana Cost Efficiency", transform=function(value) return -value end },
{ stat="Ward", label="Ward" },
{ stat="MaximumRage", label="Maximum Rage" },
{ stat="FlaskEffect", label="Flask Effect" },
{ stat="FlaskDuration", label="Flask Effect Duration" },
{ stat="FlaskRecoveryRate", label="Flask Recovery Rate" },
{ stat="FlaskLifeRecovery", label="Flask Life Recovery" },
{ stat="FlaskManaRecovery", label="Flask Mana Recovery" },
{ stat="FlaskChargesGained", label="Flask Charges Gained" },
{ stat="FlaskChargesUsed", label="Flask Charges Used", transform=function(value) return -value end },
{ stat="Str", label="Strength" },
{ stat="Dex", label="Dexterity" },
{ stat="Int", label="Intelligence" },
Expand All @@ -159,12 +180,36 @@ data.powerStatList = {
{ stat="ColdTakenHit", label="Taken Cold dmg", transform=function(value) return -value end },
{ stat="FireTakenHit", label="Taken Fire dmg", transform=function(value) return -value end },
{ stat="ChaosTakenHit", label="Taken Chaos dmg", transform=function(value) return -value end },
{ stat="FireResistMax", label="Maximum Fire Resistance" },
{ stat="ColdResistMax", label="Maximum Cold Resistance" },
{ stat="LightningResistMax", label="Maximum Lightning Resistance" },
{ stat="ChaosResistMax", label="Maximum Chaos Resistance" },
{ stat="CritExtraDamageReduction", label="Reduced Critical Strike Damage Taken" },
{ stat="StunThreshold", label="Stun Threshold" },
{ stat="StunDuration", label="Stun Duration", transform=function(value) return -value end },
{ stat="EnemyStunThresholdMod", label="Enemy Stun Threshold", transform=function(value) return -value end },
{ stat="CritChance", label="Crit Chance" },
{ stat="CritMultiplier", label="Crit Multiplier" },
{ stat="ImpaleChance", label="Impale Chance" },
{ stat="ImpaleStoredDamage", label="Impale Effect" },
{ stat="BleedChance", label="Bleed Chance" },
{ stat="FreezeChance", label="Freeze Chance" },
{ stat="IgniteChance", label="Ignite Chance" },
{ stat="ShockChance", label="Shock Chance" },
{ stat="ChillEffectMod", label="Chill Effect" },
{ stat="ChillDuration", label="Chill Duration" },
{ stat="ShockEffectMod", label="Shock Effect" },
{ stat="ShockDuration", label="Shock Duration" },
{ stat="ScorchEffectMod", label="Scorch Effect" },
{ stat="ScorchDuration", label="Scorch Duration" },
{ stat="BrittleEffectMod", label="Brittle Effect" },
{ stat="BrittleDuration", label="Brittle Duration" },
{ stat="SapEffectMod", label="Sap Effect" },
{ stat="SapDuration", label="Sap Duration" },
{ stat="CurseEffectMod", label="Curse Effect" },
{ stat="CurseEffectOnSelf", label="Curse Effect on You", transform=function(value) return -value end },
{ stat="AuraEffectMod", label="Aura Effect" },
{ stat="ElusiveEffectMod", label="Elusive Effect" },
{ stat="EffectiveMovementSpeedMod", label="Move speed" },
{ stat="LightRadiusMod", label="Light Radius" },
{ stat="BlockChance", label="Block Chance" },
Expand Down Expand Up @@ -214,6 +259,14 @@ local minionNonApplicableStats = {
Spirit = true,
EffectiveLootRarityMod = true,
LightRadiusMod = true,
-- flask stats are only ever written to the player's output
FlaskEffect = true,
FlaskDuration = true,
FlaskRecoveryRate = true,
FlaskLifeRecovery = true,
FlaskManaRecovery = true,
FlaskChargesGained = true,
FlaskChargesUsed = true,
}
for i = 1, #data.powerStatList do
local statEntry = data.powerStatList[i]
Expand Down
Loading