From c4b87b69b6a747772f50dc551af0aa8d16cea082 Mon Sep 17 00:00:00 2001 From: Paliak <91493239+Paliak@users.noreply.github.com> Date: Fri, 1 Dec 2023 07:48:11 +0100 Subject: [PATCH] FIX: order of calcs for afflication charges (#6801) --- src/Modules/CalcOffence.lua | 17 ----------------- src/Modules/CalcPerform.lua | 25 ++++++++++++++++++++----- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 5b9e0865f1..420f73eaeb 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -464,23 +464,6 @@ function calcs.offence(env, actor, activeSkill) skillModList:NewMod("CritMultiplier", "BASE", m_floor(nightbladeMulti * elusiveEffect), "Nightblade") end - -- additional charge based modifiers - if skillModList:Flag(nil, "UseEnduranceCharges") and skillModList:Flag(nil, "EnduranceChargesConvertToBrutalCharges") then - local tripleDmgChancePerEndurance = modDB:Sum("BASE", nil, "PerBrutalTripleDamageChance") - modDB:NewMod("TripleDamageChance", "BASE", tripleDmgChancePerEndurance, { type = "Multiplier", var = "BrutalCharge" } ) - end - if skillModList:Flag(nil, "UseFrenzyCharges") and skillModList:Flag(nil, "FrenzyChargesConvertToAfflictionCharges") then - local dmgPerAffliction = modDB:Sum("BASE", nil, "PerAfflictionAilmentDamage") - local effectPerAffliction = modDB:Sum("BASE", nil, "PerAfflictionNonDamageEffect") - modDB:NewMod("Damage", "MORE", dmgPerAffliction, "Affliction Charges", 0, KeywordFlag.Ailment, { type = "Multiplier", var = "AfflictionCharge" } ) - modDB:NewMod("EnemyChillEffect", "MORE", effectPerAffliction, "Affliction Charges", { type = "Multiplier", var = "AfflictionCharge" } ) - modDB:NewMod("EnemyShockEffect", "MORE", effectPerAffliction, "Affliction Charges", { type = "Multiplier", var = "AfflictionCharge" } ) - modDB:NewMod("EnemyFreezeEffect", "MORE", effectPerAffliction, "Affliction Charges", { type = "Multiplier", var = "AfflictionCharge" } ) - modDB:NewMod("EnemyScorchEffect", "MORE", effectPerAffliction, "Affliction Charges", { type = "Multiplier", var = "AfflictionCharge" } ) - modDB:NewMod("EnemyBrittleEffect", "MORE", effectPerAffliction, "Affliction Charges", { type = "Multiplier", var = "AfflictionCharge" } ) - modDB:NewMod("EnemySapEffect", "MORE", effectPerAffliction, "Affliction Charges", { type = "Multiplier", var = "AfflictionCharge" } ) - end - -- set other limits output.ActiveTrapLimit = skillModList:Sum("BASE", skillCfg, "ActiveTrapLimit") output.ActiveMineLimit = skillModList:Sum("BASE", skillCfg, "ActiveMineLimit") diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 4b79e43bbb..d26939f569 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -847,6 +847,21 @@ local function doActorMisc(env, actor) local max = modDB:Override(nil, "SoulEaterMax") modDB:NewMod("Multiplier:SoulEater", "BASE", 1, "Base", { type = "Multiplier", var = "SoulEaterStack", limit = max }) end + if modDB:Flag(nil, "UseEnduranceCharges") and modDB:Flag(nil, "EnduranceChargesConvertToBrutalCharges") then + local tripleDmgChancePerEndurance = modDB:Sum("BASE", nil, "PerBrutalTripleDamageChance") + modDB:NewMod("TripleDamageChance", "BASE", tripleDmgChancePerEndurance, { type = "Multiplier", var = "BrutalCharge" } ) + end + if modDB:Flag(nil, "UseFrenzyCharges") and modDB:Flag(nil, "FrenzyChargesConvertToAfflictionCharges") then + local dmgPerAffliction = modDB:Sum("BASE", nil, "PerAfflictionAilmentDamage") + local effectPerAffliction = modDB:Sum("BASE", nil, "PerAfflictionNonDamageEffect") + modDB:NewMod("Damage", "MORE", dmgPerAffliction, "Affliction Charges", 0, KeywordFlag.Ailment, { type = "Multiplier", var = "AfflictionCharge" } ) + modDB:NewMod("EnemyChillEffect", "MORE", effectPerAffliction, "Affliction Charges", { type = "Multiplier", var = "AfflictionCharge" } ) + modDB:NewMod("EnemyShockEffect", "MORE", effectPerAffliction, "Affliction Charges", { type = "Multiplier", var = "AfflictionCharge" } ) + modDB:NewMod("EnemyFreezeEffect", "MORE", effectPerAffliction, "Affliction Charges", { type = "Multiplier", var = "AfflictionCharge" } ) + modDB:NewMod("EnemyScorchEffect", "MORE", effectPerAffliction, "Affliction Charges", { type = "Multiplier", var = "AfflictionCharge" } ) + modDB:NewMod("EnemyBrittleEffect", "MORE", effectPerAffliction, "Affliction Charges", { type = "Multiplier", var = "AfflictionCharge" } ) + modDB:NewMod("EnemySapEffect", "MORE", effectPerAffliction, "Affliction Charges", { type = "Multiplier", var = "AfflictionCharge" } ) + end end end @@ -2583,6 +2598,11 @@ function calcs.perform(env, fullDPSSkipEHP) enemyDB:ReplaceMod("Multiplier:ImpaleStacks", "BASE", maxImpaleStacks, "Config", { type = "Condition", var = "Combat" }) end + doActorMisc(env, env.player) + if env.minion then + doActorMisc(env, env.minion) + end + -- Calculate maximum and apply the strongest non-damaging ailments local ailmentData = data.nonDamagingAilment local ailments = { @@ -2742,11 +2762,6 @@ function calcs.perform(env, fullDPSSkipEHP) modDB:AddList(env.weaponModList1) end - -- Process misc buffs/modifiers - doActorMisc(env, env.player) - if env.minion then - doActorMisc(env, env.minion) - end doActorMisc(env, env.enemy) for _, activeSkill in ipairs(env.player.activeSkillList) do