Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix config tab being 1 change behind enemy level #4624

Merged
Merged
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
10 changes: 10 additions & 0 deletions src/Classes/ConfigTab.lua
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ local ConfigTabClass = newClass("ConfigTab", "UndoHandler", "ControlHost", "Cont

self.input = { }
self.placeholder = { }

self.enemyLevel = 1

self.sectionList = { }
self.varControls = { }
Expand Down Expand Up @@ -439,6 +441,14 @@ function ConfigTabClass:BuildModList()
self.enemyModList = enemyModList
local input = self.input
local placeholder = self.placeholder
--enemy level handled here because it's needed to correctly set boss stats
if input.enemyLevel and input.enemyLevel > 0 then
self.enemyLevel = m_min(data.misc.MaxEnemyLevel, input.enemyLevel)
elseif placeholder.enemyLevel and placeholder.enemyLevel > 0 then
self.enemyLevel = m_min(data.misc.MaxEnemyLevel, placeholder.enemyLevel)
else
self.enemyLevel = m_min(data.misc.MaxEnemyLevel, self.build.characterLevel)
end
for _, varData in ipairs(varList) do
if varData.apply then
if varData.type == "check" then
Expand Down
1 change: 1 addition & 0 deletions src/Modules/Build.lua
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ function buildMode:Init(dbFileName, buildName, buildXML, convertBuild)
end
self.controls.characterLevel = new("EditControl", {"LEFT",self.controls.pointDisplay,"RIGHT"}, 12, 0, 106, 20, "", "Level", "%D", 3, function(buf)
self.characterLevel = m_min(m_max(tonumber(buf) or 1, 1), 100)
self.configTab:BuildModList()
self.modFlag = true
self.buildFlag = true
end)
Expand Down
12 changes: 1 addition & 11 deletions src/Modules/CalcSetup.lua
Original file line number Diff line number Diff line change
Expand Up @@ -290,17 +290,7 @@ function calcs.initEnv(build, mode, override, specEnv)
env.enemyDB = enemyDB
env.itemModDB = new("ModDB")

if env.configInput.enemyLevel then
env.enemyLevel = m_min(data.misc.MaxEnemyLevel, env.configInput.enemyLevel)
elseif env.configPlaceholder["enemyLevel"] then
if env.configInput.enemyIsBoss == "None" or env.configInput.enemyIsBoss == "Boss" then
env.enemyLevel = m_min(data.misc.MaxEnemyLevel, env.build.characterLevel, env.configPlaceholder["enemyLevel"])
else
env.enemyLevel = m_min(data.misc.MaxEnemyLevel, env.configPlaceholder["enemyLevel"])
end
else
env.enemyLevel = m_min(data.misc.MaxEnemyLevel, env.build.characterLevel)
end
env.enemyLevel = build.configTab.enemyLevel or m_min(data.misc.MaxEnemyLevel, build.characterLevel)

-- Create player/enemy actors
env.player = {
Expand Down
36 changes: 18 additions & 18 deletions src/Modules/ConfigOptions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1409,9 +1409,9 @@ Uber Pinnacle Boss adds the following modifiers:
build.configTab.varControls['enemyChaosResist']:SetPlaceholder(defaultResist, true)

local defaultLevel = 83
build.configTab.varControls['enemyLevel']:SetPlaceholder(defaultLevel, true)
if build.calcsTab.mainEnv then
defaultLevel = build.calcsTab.mainEnv.enemyLevel
build.configTab.varControls['enemyLevel']:SetPlaceholder("", true)
if build.configTab.enemyLevel then
defaultLevel = build.configTab.enemyLevel
end

local defaultDamage = round(data.monsterDamageTable[defaultLevel] * 1.5)
Expand All @@ -1438,9 +1438,9 @@ Uber Pinnacle Boss adds the following modifiers:
build.configTab.varControls['enemyChaosResist']:SetPlaceholder(25, true)

local defaultLevel = 83
build.configTab.varControls['enemyLevel']:SetPlaceholder(defaultLevel, true)
if build.calcsTab.mainEnv then
defaultLevel = build.calcsTab.mainEnv.enemyLevel
build.configTab.varControls['enemyLevel']:SetPlaceholder("", true)
if build.configTab.enemyLevel then
defaultLevel = build.configTab.enemyLevel
end

local defaultDamage = round(data.monsterDamageTable[defaultLevel] * 1.5 * data.misc.stdBossDPSMult)
Expand Down Expand Up @@ -1470,8 +1470,8 @@ Uber Pinnacle Boss adds the following modifiers:

local defaultLevel = 84
build.configTab.varControls['enemyLevel']:SetPlaceholder(defaultLevel, true)
if build.calcsTab.mainEnv then
defaultLevel = m_max(build.calcsTab.mainEnv.enemyLevel, defaultLevel)
if build.configTab.enemyLevel then
defaultLevel = m_max(build.configTab.enemyLevel, defaultLevel)
end

local defaultDamage = round(data.monsterDamageTable[defaultLevel] * 1.5 * data.misc.pinnacleBossDPSMult)
Expand Down Expand Up @@ -1501,8 +1501,8 @@ Uber Pinnacle Boss adds the following modifiers:

local defaultLevel = 85
build.configTab.varControls['enemyLevel']:SetPlaceholder(defaultLevel, true)
if build.calcsTab.mainEnv then
defaultLevel = m_max(build.calcsTab.mainEnv.enemyLevel, defaultLevel)
if build.configTab.enemyLevel then
defaultLevel = m_max(build.configTab.enemyLevel, defaultLevel)
end

local defaultDamage = round(data.monsterDamageTable[defaultLevel] * 1.5 * data.misc.uberBossDPSMult)
Expand Down Expand Up @@ -1583,8 +1583,8 @@ Maven Memory Game: Is three separate hits, and has a large DoT effect. Neither
end

if val == "Uber Atziri Flameblast" then
if build.calcsTab.mainEnv then
build.configTab.varControls['enemyFireDamage']:SetPlaceholder(round(data.monsterDamageTable[build.calcsTab.mainEnv.enemyLevel] * data.bossSkills["Uber Atziri Flameblast"].damageMult), true)
if build.configTab.enemyLevel then
build.configTab.varControls['enemyFireDamage']:SetPlaceholder(round(data.monsterDamageTable[build.configTab.enemyLevel] * data.bossSkills["Uber Atziri Flameblast"].damageMult), true)
build.configTab.varControls['enemyDamageType']:SelByValue("Spell", "val")
build.configTab.varControls['enemyDamageType'].enabled = false
build.configTab.input['enemyDamageType'] = "Spell"
Expand All @@ -1594,8 +1594,8 @@ Maven Memory Game: Is three separate hits, and has a large DoT effect. Neither
build.configTab.varControls['enemySpeed']:SetPlaceholder(data.bossSkills["Uber Atziri Flameblast"].speed, true)
build.configTab.varControls['enemyCritChance']:SetPlaceholder(0, true)
elseif val == "Shaper Ball" then
if build.calcsTab.mainEnv then
build.configTab.varControls['enemyColdDamage']:SetPlaceholder(round(data.monsterDamageTable[build.calcsTab.mainEnv.enemyLevel] * data.bossSkills["Shaper Ball"].damageMult), true)
if build.configTab.enemyLevel then
build.configTab.varControls['enemyColdDamage']:SetPlaceholder(round(data.monsterDamageTable[build.configTab.enemyLevel] * data.bossSkills["Shaper Ball"].damageMult), true)
end

build.configTab.varControls['enemyColdPen']:SetPlaceholder(25, true)
Expand All @@ -1604,17 +1604,17 @@ Maven Memory Game: Is three separate hits, and has a large DoT effect. Neither
build.configTab.varControls['enemyDamageType']:SelByValue("SpellProjectile", "val")
build.configTab.input['enemyDamageType'] = "SpellProjectile"
elseif val == "Shaper Slam" then
if build.calcsTab.mainEnv then
build.configTab.varControls['enemyPhysicalDamage']:SetPlaceholder(round(data.monsterDamageTable[build.calcsTab.mainEnv.enemyLevel] * data.bossSkills["Shaper Slam"].damageMult), true)
if build.configTab.enemyLevel then
build.configTab.varControls['enemyPhysicalDamage']:SetPlaceholder(round(data.monsterDamageTable[build.configTab.enemyLevel] * data.bossSkills["Shaper Slam"].damageMult), true)
end
build.configTab.varControls['enemyDamageType'].enabled = false
build.configTab.varControls['enemyDamageType']:SelByValue("Melee", "val")
build.configTab.input['enemyDamageType'] = "Melee"

build.configTab.varControls['enemySpeed']:SetPlaceholder(data.bossSkills["Shaper Slam"].speed, true)
elseif val == "Maven Memory Game" then
if build.calcsTab.mainEnv then
local defaultEleDamage = round(data.monsterDamageTable[build.calcsTab.mainEnv.enemyLevel] * data.bossSkills["Maven Memory Game"].damageMult)
if build.configTab.enemyLevel then
local defaultEleDamage = round(data.monsterDamageTable[build.configTab.enemyLevel] * data.bossSkills["Maven Memory Game"].damageMult)
build.configTab.varControls['enemyLightningDamage']:SetPlaceholder(defaultEleDamage, true)
build.configTab.varControls['enemyColdDamage']:SetPlaceholder(defaultEleDamage, true)
build.configTab.varControls['enemyFireDamage']:SetPlaceholder(defaultEleDamage, true)
Expand Down