Skip to content

Commit 9cb617e

Browse files
committed
refactor handle slow magnitude and slow effect
1 parent 9661541 commit 9cb617e

File tree

2 files changed

+23
-12
lines changed

2 files changed

+23
-12
lines changed

src/Modules/CalcPerform.lua

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -757,15 +757,27 @@ local function applySlowMagnitude(env)
757757
end
758758

759759
if enemyDB:Flag(nil, "Condition:Slowed") then
760-
local slowMagnitude = modDB:Sum("INC", nil, "EnemySlowMagnitude") / 100
761-
if slowMagnitude > 0 then
762-
enemyDB:ScaleAddMod(modLib.createMod("TemporalChainsActionSpeed", "INC", enemyDB:Sum("INC", nil, "TemporalChainsActionSpeed"), "Slow Magnitude"), slowMagnitude)
763-
enemyDB:ScaleAddMod(modLib.createMod("ApexOfMomentSlow", "INC", enemyDB:Sum("INC", nil, "ApexOfMomentSlow"), "Slow Magnitude"), slowMagnitude)
760+
local slowMagnitude = modDB:Sum("INC", nil, "EnemySlowMagnitude")
761+
local lessSlow = enemyDB:More("MORE", nil, "Slow", "Less Slow")
762+
slowMagnitude = slowMagnitude * lessSlow / 100
763+
764+
-- magic 34% in my current build
765+
-- rare 28% in my current build
766+
-- unique 20% in my current build
767+
for _, value in ipairs(enemyDB:Tabulate("INC", nil, "TemporalChainsActionSpeed", "ApexOfMomentSlow")) do
768+
local mod = value.mod
769+
if lessSlow ~= 0 then
770+
enemyDB:ReplaceMod(mod.name, mod.type, mod.value * lessSlow, mod.source, mod.flags, mod.keywordFlags, unpack(mod))
771+
end
772+
773+
enemyDB:ScaleAddMod(modLib.createMod(value.mod.name, value.mod.type, value.mod.value, "Slow Magnitude"), slowMagnitude)
774+
775+
ConPrintTable(value, false)
764776
end
765777
end
766778
end
767779

768-
function calcs.actionSpeedMod(actor)
780+
function calcs.actionSpeedMod(actor)
769781
local modDB = actor.modDB
770782
local minimumActionSpeed = modDB:Max(nil, "MinimumActionSpeed") or 0
771783
local maximumActionSpeedReduction = modDB:Max(nil, "MaximumActionSpeedReduction")
@@ -781,8 +793,7 @@ function calcs.actionSpeedMod(actor)
781793
slowEffectsSum = modDB:Sum("INC", nil, "ApexOfMomentSlow", "TemporalChainsActionSpeed")
782794
end
783795

784-
-- local slowMultiplier = (1 + tempChains / 100) * (1 + apexOfMoment / 100) * (1 + modDB:Sum("INC", nil, "ActionSpeed", "Chill") / 100) * modDB:More(nil, "ActionSpeed", "Less Slow")
785-
local slowMultiplier = (1 + slowEffectsSum / 100) * (1 + modDB:Sum("INC", nil, "ActionSpeed", "Chill") / 100) * modDB:More(nil, "ActionSpeed", "Less Slow")
796+
local slowMultiplier = (1 + slowEffectsSum / 100) * (1 + modDB:Sum("INC", nil, "ActionSpeed", "Chill") / 100)
786797
local slowEffect = (1 - slowMultiplier) * 100
787798

788799
local actionSpeedMod = 1 + (-slowEffect + actionSpeedSum) / 100

src/Modules/ConfigOptions.lua

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1737,11 +1737,11 @@ Huge sets the radius to 11.
17371737
end },
17381738
{ var = "conditionEnemyMagic", type = "check", label = s_format("Is the enemy %sMagic?", colorCodes.MAGIC), tooltip = "", apply = function(val, modList, enemyModList)
17391739
enemyModList:NewMod("Condition:Magic", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
1740-
enemyModList:NewMod("ActionSpeed", "MORE", 15, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
1740+
enemyModList:NewMod("Slow", "MORE", -15, "Less Slow", { type = "Condition", var = "Effective" })
17411741
end },
17421742
{ var = "conditionEnemyRare", type = "check", label = s_format("Is the enemy %sRare?", colorCodes.RARE), tooltip = "", apply = function(val, modList, enemyModList)
17431743
enemyModList:NewMod("Condition:Rare", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
1744-
enemyModList:NewMod("ActionSpeed", "MORE", 30, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
1744+
enemyModList:NewMod("Slow", "MORE", -30, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
17451745
end },
17461746
{ var = "enemyIsBoss", type = "list", label = "Is the enemy a Boss?", defaultIndex = 3, tooltip = data.enemyIsBossTooltip, list = {{val="None",label="No"},{val="Boss",label="Standard Boss"},{val="Pinnacle",label="Guardian/Pinnacle Boss"},{val="Uber",label="Uber Pinnacle Boss"}}, apply = function(val, modList, enemyModList, build)
17471747
-- These defaults are here so that the placeholders get reset correctly
@@ -1780,7 +1780,7 @@ Huge sets the radius to 11.
17801780
elseif val == "Boss" then
17811781
enemyModList:NewMod("Condition:Unique", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
17821782
enemyModList:NewMod("Condition:RareOrUnique", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
1783-
enemyModList:NewMod("ActionSpeed", "MORE", 50, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
1783+
enemyModList:NewMod("Slow", "MORE", -50, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
17841784
enemyModList:NewMod("AilmentThreshold", "MORE", 488, "Boss")
17851785
modList:NewMod("WarcryPower", "BASE", 20, "Boss")
17861786
modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss")
@@ -1817,7 +1817,7 @@ Huge sets the radius to 11.
18171817
enemyModList:NewMod("Condition:Unique", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
18181818
enemyModList:NewMod("Condition:RareOrUnique", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
18191819
enemyModList:NewMod("Condition:PinnacleBoss", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
1820-
enemyModList:NewMod("ActionSpeed", "MORE", 50, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
1820+
enemyModList:NewMod("Slow", "MORE", -50, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
18211821
enemyModList:NewMod("AilmentThreshold", "MORE", 404, "Boss")
18221822
modList:NewMod("WarcryPower", "BASE", 20, "Boss")
18231823
modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss")
@@ -1851,7 +1851,7 @@ Huge sets the radius to 11.
18511851
elseif val == "Uber" then
18521852
enemyModList:NewMod("Condition:RareOrUnique", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
18531853
enemyModList:NewMod("Condition:PinnacleBoss", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
1854-
enemyModList:NewMod("ActionSpeed", "MORE", 50, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
1854+
enemyModList:NewMod("Slow", "MORE", -50, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
18551855
enemyModList:NewMod("DamageTaken", "MORE", -70, "Boss")
18561856
enemyModList:NewMod("AilmentThreshold", "MORE", 404, "Boss")
18571857
modList:NewMod("WarcryPower", "BASE", 20, "Boss")

0 commit comments

Comments
 (0)