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:GameSkills: Difference between revisions

From SpiritVale Wiki
No edit summary
No edit summary
Line 6: Line 6:
--  - Adds .sv-skill-card + data-max-level / data-level hooks for JS
--  - Adds .sv-skill-card + data-max-level / data-level hooks for JS
--  - Replaces large Lv1/Lv2/... lists with data-series dynamic spans
--  - Replaces large Lv1/Lv2/... lists with data-series dynamic spans
--  - NEW: Removes "General" + "Type" section bars and merges Level Select + Type into one unified top band
--  - Removes "General" + "Type" section bars and merges Level Select + Type into one unified top band
--         (Level Select on the left; Type/Element/Target/Cast Type list on the right)
--   (Level Select on the left; Type/Element/Target/Cast Type list on the right)
--  - NEW (list-mode): Wraps all skills in ONE wrapper panel and each skill in a stable .sv-skill-item
--    so CSS dividers work reliably under Citizen/table wrappers.
--
--
-- Requires the JS you installed in MediaWiki:Common.js.
-- Requires the JS you installed in MediaWiki:Common.js.
-- Uses the Common.css classes you added:
-- Uses Common.css classes:
--  .sv-topband-cell, .sv-topband-table, .sv-type-table, .sv-level-ui, .sv-level-title, .sv-level-label, .sv-level-slider
--  .sv-topband-cell, .sv-topband-table, .sv-type-table, .sv-level-ui, .sv-level-title, .sv-level-label, .sv-level-slider
--  .sv-skill-collection, .sv-skill-item


local GameData = require("Module:GameData")
local GameData = require("Module:GameData")
Line 339: Line 342:


if baseText and baseN ~= nil then
if baseText and baseN ~= nil then
-- numeric base: show total
local total = baseN + perPart
local total = baseN + perPart
table.insert(series, string.format("%s%% %s", fmtNum(total), basis))
table.insert(series, string.format("%s%% %s", fmtNum(total), basis))
elseif baseText then
elseif baseText then
-- nonnumeric base: can't total, show additive
table.insert(series, string.format("%s + %s%% %s", baseText, fmtNum(perPart), basis))
table.insert(series, string.format("%s + %s%% %s", baseText, fmtNum(perPart), basis))
else
else
-- no base: show perPart only
table.insert(series, string.format("%s%% %s", fmtNum(perPart), basis))
table.insert(series, string.format("%s%% %s", fmtNum(perPart), basis))
end
end
Line 819: Line 819:
wrap:addClass("sv-level-ui")
wrap:addClass("sv-level-ui")


-- Title (matches Common.css)
wrap:tag("div")
wrap:tag("div")
:addClass("sv-level-title")
:addClass("sv-level-title")
:wikitext("Level Select")
:wikitext("Level Select")


-- Label line
wrap:tag("div")
wrap:tag("div")
:addClass("sv-level-label")
:addClass("sv-level-label")
:wikitext("Level <span class=\"sv-level-num\">" .. tostring(level) .. "</span> / " .. tostring(maxLevel))
:wikitext("Level <span class=\"sv-level-num\">" .. tostring(level) .. "</span> / " .. tostring(maxLevel))


-- Slider placeholder (JS will insert the input)
wrap:tag("div"):addClass("sv-level-slider")
wrap:tag("div"):addClass("sv-level-slider")


Line 884: Line 881:
cell:addClass("sv-topband-cell")
cell:addClass("sv-topband-cell")


-- Nested table (this is what your new CSS targets)
-- Nested table (what Common.css targets)
local inner = cell:tag("table")
local inner = cell:tag("table")
inner:addClass("sv-topband-table")
inner:addClass("sv-topband-table")
Line 960: Line 957:


------------------------------------------------------------------
------------------------------------------------------------------
-- Users (kept as rows; hidden on lists or skill page)
-- Users (kept as rows; caller decides show/hide)
------------------------------------------------------------------
------------------------------------------------------------------
if showUsers then
if showUsers then
Line 1,126: Line 1,123:
end
end


-- ONE wrapper panel (table-like list mode)
local root = mw.html.create("div")
local root = mw.html.create("div")
    root:addClass("sv-skill-collection")     -- NEW: unified wrapper panel
root:addClass("sv-skill-collection")
    root:addClass("spiritvale-skill-list")   -- keep if other CSS references it
root:addClass("spiritvale-skill-list") -- keep for compatibility / other CSS


    for _, rec in ipairs(matches) do
for _, rec in ipairs(matches) do
root:wikitext(buildInfobox(rec, { showUsers = false, inList = true }))
-- Stable per-skill wrapper so dividers work even under Citizen wrappers
    end
local item = root:tag("div"):addClass("sv-skill-item")
 
item:wikitext(buildInfobox(rec, { showUsers = false, inList = true }))
    return tostring(root)
end


return tostring(root)
end
end