Module:GameInfo/Skills: Difference between revisions
From SpiritVale Wiki
More actions
No edit summary Tags: Mobile edit Mobile web edit |
No edit summary Tags: Mobile edit Mobile web edit |
||
| Line 355: | Line 355: | ||
end | end | ||
local function | -- Level normalization: | ||
-- - max = absolute cap (incl. gear) if provided, else base_max | |||
-- - base_max = natural cap (no gear) if provided, else max | |||
-- - default = base_max (slider starts at natural cap) | |||
local function _normalize_level(level_obj) | |||
level_obj = _safe_tbl(level_obj) | level_obj = _safe_tbl(level_obj) | ||
local | local max = _to_int(level_obj.max, nil) | ||
local | local base_max = _to_int(level_obj.base_max, nil) | ||
if not max then max = base_max or 1 end | |||
if not base_max then base_max = max end | |||
if max < 1 then max = 1 end | |||
if base_max < 1 then base_max = 1 end | |||
if base_max > max then base_max = max end | |||
local default = base_max | |||
return default, base_max, max | |||
end | |||
local function _build_level(default_level, max_level) | |||
local default = _to_int(default_level, 1) | |||
local max = _to_int(max_level, 1) | |||
if max < 1 then max = 1 end | if max < 1 then max = 1 end | ||
| Line 414: | Line 433: | ||
end | end | ||
-- NOTE: scaling_top.modifier intentionally not rendered (handled elsewhere). | |||
do | do | ||
| Line 631: | Line 645: | ||
end | end | ||
-- Slider default = natural cap (base_max if present; else max) | |||
local default_level | local default_level, _base_max, max_level = _normalize_level(payload.level) | ||
local box = GI.box({ | local box = GI.box({ | ||
| Line 655: | Line 665: | ||
if reqrow then box.top:node(reqrow) end | if reqrow then box.top:node(reqrow) end | ||
local level_panel, actual_default = _build_level( | local level_panel, actual_default = _build_level(default_level, max_level) | ||
box.bottom:node(level_panel) | box.bottom:node(level_panel) | ||
box.bottom:node(_build_scaling_top(payload.scaling_top, actual_default)) | box.bottom:node(_build_scaling_top(payload.scaling_top, actual_default)) | ||