diff --git a/src/Modules/Build.lua b/src/Modules/Build.lua index 7173c2fb4b..e4eb20cda6 100644 --- a/src/Modules/Build.lua +++ b/src/Modules/Build.lua @@ -1498,7 +1498,7 @@ function buildMode:RefreshSkillSelectControls(controls, mainGroup, suffix) controls.mainSkillPart.selIndex = activeEffect.srcInstance["skillPart"..suffix] or 1 if activeEffect.grantedEffect.parts[controls.mainSkillPart.selIndex].stages then controls.mainSkillStageCount.shown = true - controls.mainSkillStageCount.buf = tostring(activeEffect.srcInstance["skillStageCount"..suffix] or activeEffect.grantedEffect.parts[controls.mainSkillPart.selIndex].stagesMin or 1) + controls.mainSkillStageCount.buf = tostring(activeEffect.srcInstance["skillStageCount"..suffix] or activeSkill.skillData.stagesMax or activeEffect.grantedEffect.parts[controls.mainSkillPart.selIndex].stagesMin or 1) end end if activeSkill.skillFlags.mine then @@ -1507,7 +1507,7 @@ function buildMode:RefreshSkillSelectControls(controls, mainGroup, suffix) end if activeSkill.skillFlags.multiStage and not (activeEffect.grantedEffect.parts and #activeEffect.grantedEffect.parts > 1) then controls.mainSkillStageCount.shown = true - controls.mainSkillStageCount.buf = tostring(activeEffect.srcInstance["skillStageCount"..suffix] or activeSkill.skillData.stagesMin or 1) + controls.mainSkillStageCount.buf = tostring(activeEffect.srcInstance["skillStageCount"..suffix] or activeSkill.skillData.stagesMax or activeSkill.skillData.stagesMin or 1) end if not activeSkill.skillFlags.disable and (activeEffect.grantedEffect.minionList or activeSkill.minionList[1]) then wipeTable(controls.mainSkillMinion.list) diff --git a/src/Modules/CalcActiveSkill.lua b/src/Modules/CalcActiveSkill.lua index 582cd37691..7abd03778a 100644 --- a/src/Modules/CalcActiveSkill.lua +++ b/src/Modules/CalcActiveSkill.lua @@ -615,16 +615,15 @@ function calcs.buildActiveSkillModList(env, activeSkill) end end - if skillModList:Sum("BASE", activeSkill.skillCfg, "Multiplier:"..activeGrantedEffect.name:gsub("%s+", "").."MaxStages") > 0 then + local limit = skillModList:Sum("BASE", activeSkill.skillCfg, "Multiplier:"..activeGrantedEffect.name:gsub("%s+", "").."MaxStages") + activeSkill.skillData.stagesMax = limit > 0 and limit or nil + if limit > 0 then skillFlags.multiStage = true - activeSkill.activeStageCount = m_max((env.mode == "CALCS" and activeEffect.srcInstance.skillStageCountCalcs) or (env.mode ~= "CALCS" and activeEffect.srcInstance.skillStageCount) or 1, 1 + skillModList:Sum("BASE", activeSkill.skillCfg, "Multiplier:"..activeGrantedEffect.name:gsub("%s+", "").."MinimumStage")) - local limit = skillModList:Sum("BASE", activeSkill.skillCfg, "Multiplier:"..activeGrantedEffect.name:gsub("%s+", "").."MaxStages") - if limit > 0 then - if activeSkill.activeStageCount and activeSkill.activeStageCount > 0 then - skillModList:NewMod("Multiplier:"..activeGrantedEffect.name:gsub("%s+", "").."Stage", "BASE", m_min(limit, activeSkill.activeStageCount), "Base") - activeSkill.activeStageCount = (activeSkill.activeStageCount or 0) - 1 - skillModList:NewMod("Multiplier:"..activeGrantedEffect.name:gsub("%s+", "").."StageAfterFirst", "BASE", m_min(limit - 1, activeSkill.activeStageCount), "Base") - end + activeSkill.activeStageCount = m_max((env.mode == "CALCS" and activeEffect.srcInstance.skillStageCountCalcs) or (env.mode ~= "CALCS" and activeEffect.srcInstance.skillStageCount) or activeSkill.skillData.stagesMax or 1, 1 + skillModList:Sum("BASE", activeSkill.skillCfg, "Multiplier:"..activeGrantedEffect.name:gsub("%s+", "").."MinimumStage")) + if activeSkill.activeStageCount and activeSkill.activeStageCount > 0 then + skillModList:NewMod("Multiplier:"..activeGrantedEffect.name:gsub("%s+", "").."Stage", "BASE", m_min(limit, activeSkill.activeStageCount), "Base") + activeSkill.activeStageCount = (activeSkill.activeStageCount or 0) - 1 + skillModList:NewMod("Multiplier:"..activeGrantedEffect.name:gsub("%s+", "").."StageAfterFirst", "BASE", m_min(limit - 1, activeSkill.activeStageCount), "Base") end elseif noPotentialStage and activeEffect.srcInstance and not (activeEffect.gemData and activeEffect.gemData.secondaryGrantedEffect) then activeEffect.srcInstance.skillStageCountCalcs = nil diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index b1ed688536..1c8371ca20 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -1778,6 +1778,7 @@ function calcs.initEnv(build, mode, override, specEnv) activeSkill.skillData.soulPreventionDuration = activeSkill.soulPreventionDuration activeSkill.skillData.totemLevel = skillData.totemLevel activeSkill.skillData.damageEffectiveness = skillData.damageEffectiveness + activeSkill.skillData.stagesMax = skillData.stagesMax activeSkill.skillData.manaReservationPercent = skillData.manaReservationPercent end end