Skip to content

Commit 7c33cd3

Browse files
committed
refactor handle slow magnitude and slow effect
1 parent 7d35225 commit 7c33cd3

File tree

2 files changed

+23
-11
lines changed

2 files changed

+23
-11
lines changed

src/Modules/CalcPerform.lua

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -760,15 +760,27 @@ local function applySlowMagnitude(env)
760760
end
761761

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

771-
function calcs.actionSpeedMod(actor)
783+
function calcs.actionSpeedMod(actor)
772784
local modDB = actor.modDB
773785
local minimumActionSpeed = modDB:Max(nil, "MinimumActionSpeed") or 0
774786
local maximumActionSpeedReduction = modDB:Max(nil, "MaximumActionSpeedReduction")
@@ -777,7 +789,7 @@ function calcs.actionSpeedMod(actor)
777789
local tempChains = modDB:Sum("INC", nil, "TemporalChainsActionSpeed")
778790
local chill = modDB:Sum("INC", nil, "ActionSpeed", "Chill")
779791

780-
local slowMultiplier = (1 + tempChains / 100) * (1 + apexOfMoment / 100) * (1 + chill / 100) * modDB:More(nil, "ActionSpeed", "Less Slow")
792+
local slowMultiplier = (1 + tempChains / 100) * (1 + apexOfMoment / 100) * (1 + chill / 100)
781793
local slowEffect = (1 - slowMultiplier) * 100
782794

783795
local actionSpeedMod = 1 + (-slowEffect + modDB:Sum("INC", nil, "ActionSpeed")) / 100

src/Modules/ConfigOptions.lua

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1715,11 +1715,11 @@ Huge sets the radius to 11.
17151715
end },
17161716
{ var = "conditionEnemyMagic", type = "check", label = s_format("Is the enemy %sMagic?", colorCodes.MAGIC), tooltip = "", apply = function(val, modList, enemyModList)
17171717
enemyModList:NewMod("Condition:Magic", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
1718-
enemyModList:NewMod("ActionSpeed", "MORE", 15, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
1718+
enemyModList:NewMod("Slow", "MORE", -15, "Less Slow", { type = "Condition", var = "Effective" })
17191719
end },
17201720
{ var = "conditionEnemyRare", type = "check", label = s_format("Is the enemy %sRare?", colorCodes.RARE), tooltip = "", apply = function(val, modList, enemyModList)
17211721
enemyModList:NewMod("Condition:Rare", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
1722-
enemyModList:NewMod("ActionSpeed", "MORE", 30, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
1722+
enemyModList:NewMod("Slow", "MORE", -30, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
17231723
end },
17241724
{ 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)
17251725
-- These defaults are here so that the placeholders get reset correctly
@@ -1758,7 +1758,7 @@ Huge sets the radius to 11.
17581758
elseif val == "Boss" then
17591759
enemyModList:NewMod("Condition:Unique", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
17601760
enemyModList:NewMod("Condition:RareOrUnique", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
1761-
enemyModList:NewMod("ActionSpeed", "MORE", 50, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
1761+
enemyModList:NewMod("Slow", "MORE", -50, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
17621762
enemyModList:NewMod("AilmentThreshold", "MORE", 488, "Boss")
17631763
modList:NewMod("WarcryPower", "BASE", 20, "Boss")
17641764
modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss")
@@ -1795,7 +1795,7 @@ Huge sets the radius to 11.
17951795
enemyModList:NewMod("Condition:Unique", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
17961796
enemyModList:NewMod("Condition:RareOrUnique", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
17971797
enemyModList:NewMod("Condition:PinnacleBoss", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
1798-
enemyModList:NewMod("ActionSpeed", "MORE", 50, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
1798+
enemyModList:NewMod("Slow", "MORE", -50, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
17991799
enemyModList:NewMod("AilmentThreshold", "MORE", 404, "Boss")
18001800
modList:NewMod("WarcryPower", "BASE", 20, "Boss")
18011801
modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss")
@@ -1829,7 +1829,7 @@ Huge sets the radius to 11.
18291829
elseif val == "Uber" then
18301830
enemyModList:NewMod("Condition:RareOrUnique", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
18311831
enemyModList:NewMod("Condition:PinnacleBoss", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
1832-
enemyModList:NewMod("ActionSpeed", "MORE", 50, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
1832+
enemyModList:NewMod("Slow", "MORE", -50, "Less Slow", { type = "Condition", var = "Effective" }, { type = "Condition", var = "Slowed" })
18331833
enemyModList:NewMod("DamageTaken", "MORE", -70, "Boss")
18341834
enemyModList:NewMod("AilmentThreshold", "MORE", 404, "Boss")
18351835
modList:NewMod("WarcryPower", "BASE", 20, "Boss")

0 commit comments

Comments
 (0)