From Brotato Wiki
Documentation for this module may be created at Module:GetStartingWeaponsTableForCharacter/doc
-- Module:GetStartingWeaponsTableForCharacter
-- Used by: Template:GenerateCharacterStartingWeaponsTable (see for more info)
local p = {}
-- Helper function to split a string by a given delimiter
local function split(inputstr, sep)
if sep == nil then
sep = ","
end
local t = {}
for str in string.gmatch(inputstr, "([^" .. sep .. "]+)") do
table.insert(t, str)
end
return t
end
-- Main function to generate a table of starting weapons
function p.getStartingWeaponsTable(frame)
-- Get the character name from the frame arguments
local characterName = frame.args["name"] or ""
-- Retrieve the startingwpns data from the Character_Data template
local startingWeaponsList = frame:expandTemplate{
title = "Character_Data",
args = {characterName, "startingwpns"}
}
if not startingWeaponsList or startingWeaponsList == "-" then
return "Starting weapons data not found for character: " .. characterName
end
-- Split the starting weapons list into individual items
local weapons = split(startingWeaponsList, ",")
-- Start building the HTML table
local output = "<table><tr>"
-- Create the table cells for each weapon, adding a new row after every 10 items
for i, weapon in ipairs(weapons) do
weapon = mw.text.trim(weapon) -- Trim any whitespace around the weapon name
-- Expand the Iconbox template for each weapon
local iconbox = frame:expandTemplate{
title = "Iconbox",
args = {weapon, size = "60px", maxwidth = "110px", rarity = "auto"}
}
output = output .. "<td>" .. iconbox .. "</td>"
-- Insert a new row after every 10th item
if i % 10 == 0 then
output = output .. "</tr><tr>"
end
end
-- Close the table row and table
output = output .. "</tr></table>"
return output
end
return p