Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Join the Playtest on Steam Now: SpiritVale

Module:GameInfo/Skills: Difference between revisions

From SpiritVale Wiki
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 _build_level(level_obj)
-- 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 default = _to_int(level_obj.default, 1)
local max = _to_int(level_obj.max, nil)
local max = _to_int(level_obj.max, _to_int(level_obj.base_max, 1))
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


do
-- NOTE: scaling_top.modifier intentionally not rendered (handled elsewhere).
local col = grid:tag("div"):addClass("sv-scaling-col")
local v = col:tag("div"):addClass("sv-scaling-value")
_apply_value(v, scaling.modifier, level)
col:tag("div"):addClass("sv-scaling-label"):wikitext("Modifier")
end


do
do
Line 631: Line 645:
end
end


local level_obj = _safe_tbl(payload.level)
-- Slider default = natural cap (base_max if present; else max)
local default_level = _to_int(level_obj.default, 1)
local default_level, _base_max, max_level = _normalize_level(payload.level)
local max_level = _to_int(level_obj.max, 1)
if max_level < 1 then max_level = 1 end
if default_level < 1 then default_level = 1 end
if default_level > max_level then default_level = max_level end


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(payload.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))