- Welcome to the Kancolle Wiki!
- If you have any questions regarding site content, account registration, etc., please visit the KanColle Wiki Discord
Difference between revisions of "Module:ListOfSortable"
Jump to navigation
Jump to search
Line 44: | Line 44: | ||
for k, v in pairs(notes) do | for k, v in pairs(notes) do | ||
− | table.insert(result, v) | + | table.insert(result, string.format(template.item, v)) |
end | end | ||
for k, v in pairs(coloring) do | for k, v in pairs(coloring) do | ||
− | table.insert(result, v) | + | table.insert(result, string.format(template.item, v)) |
end | end | ||
Line 66: | Line 66: | ||
local function test() | local function test() | ||
mw.log(generateTable("Destroyer", {"B Kai", "D Kai", "Mk.II", "Zwei"}, | mw.log(generateTable("Destroyer", {"B Kai", "D Kai", "Mk.II", "Zwei"}, | ||
− | {" | + | {"Mikazuki/Kai_notes = Can equip [[Daihatsu Landing Craft|Daihatsu]]", |
− | " | + | "Mutsuki/Kai Ni_notes = 2nd remodel. Can equip [[Daihatsu Landing Craft|Daihatsu]]", |
− | " | + | "Kisaragi/Kai Ni_notes = 2nd remodel. Can equip [[Daihatsu Landing Craft|Daihatsu]]", |
− | " | + | "Satsuki/Kai Ni_notes = 2nd remodel. Can equip [[Daihatsu Landing Craft|Daihatsu]] & [[Special Type 2 Amphibious Landing Craft|Type 2 Landing Craft]]", |
− | " | + | "Fumizuki/Kai Ni_notes = 2nd remodel. Can equip [[Daihatsu Landing Craft|Daihatsu]] & [[Special Type 2 Amphibious Landing Craft|Type 2 Landing Craft]]"}, |
− | {" | + | {"remodel_level_good = 20", |
− | " | + | "remodel_level_outstanding = 15", |
− | " | + | "remodel_level_operator = <", |
− | " | + | "firepower_good = 56", |
− | " | + | "firepower_outstanding = 61", |
− | " | + | "torpedo_good = 83", |
− | " | + | "torpedo_outstanding = 89", |
− | " | + | "night_battle = true", |
− | " | + | "night_battle_good = 140", |
− | " | + | "night_battle_outstanding = 150", |
− | " | + | "aa_good = 64", |
− | " | + | "aa_outstanding = 74", |
− | " | + | "asw_good = 67", |
− | " | + | "asw_outstanding = 73", |
− | " | + | "los_good = 42", |
− | " | + | "los_outstanding = 49", |
− | " | + | "hp_good = 34", |
− | " | + | "hp_outstanding = 36", |
− | " | + | "armor_good = 50", |
− | " | + | "armor_outstanding = 58", |
− | " | + | "evasion_good = 92", |
− | " | + | "evasion_outstanding = 98", |
− | " | + | "aircraft_good = 1", |
− | " | + | "aircraft_outstanding = 1", |
− | " | + | "aircraft_slot_good = 1", |
− | " | + | "luck_good = 19", |
− | " | + | "luck_outstanding = 30", |
− | " | + | "luck_max_good = 80", |
− | " | + | "fuel_operator=<", |
− | " | + | "ammo_good = 20", |
− | " | + | "ammo_outstanding = 20", |
− | " | + | "ammo_operator = <", |
− | " | + | "reference_type = 2"})) |
end | end | ||
Revision as of 20:08, 6 September 2022
Documentation for this module may be created at Module:ListOfSortable/doc
---
-- Automates generation of sortable table by designated class by looking at all ships within Module:Data/Ship
--
-- TODO: Get stats from Module:Data/Ship instead of relying on Module:ELiteShipsKai to retrieve from Module:Data/Ships/<ShipName>
-- TODO: Automate coloring without Module:EliteShipsKai
local U = require('Module:Core')
local template = {
footer = "}}",
header = [[{{EliteShipsKaiSortable]],
item = [=[|%s]=],
}
local function generateTable(shipClass, remodelSuffix, notes, coloring, ...)
local shipClass = shipClass or frame.args[1] or "??"
local success, data = U.loadData("Data/Ship")
if not success then return "No data for ships: " .. shipClass end
local result = { string.format(template.header) }
local suffix = {}
local index = 1
for k, v in pairs(remodelSuffix) do
suffix[index] = v
index = index + 1
end
for k, v in pairs(data) do
if v.type == shipClass and v.remodellv ~= '' then
local name = v.name[3]
local success = 0
for k, v in pairs(remodelSuffix) do
if success == 0 then
name,success = name:gsub("." .. v, "/" .. v)
end
end
if success == 0 then
name,success = name:gsub(".Kai", "/Kai")
end
table.insert(result, string.format(template.item, name))
end
end
for k, v in pairs(notes) do
table.insert(result, string.format(template.item, v))
end
for k, v in pairs(coloring) do
table.insert(result, string.format(template.item, v))
end
table.insert(result, template.footer)
return table.concat(result, "\n")
end
local function render(frame)
local shipClass = U.split(frame.args[1], ',')
local remodelSuffix = U.split(frame.args[2], ',')
local notes = U.split(frame.args[3], ',')
local coloring = U.split(frame.args[4], ',')
return generateTable(shipClass, remodelSuffix, notes, coloring)
end
local function test()
mw.log(generateTable("Destroyer", {"B Kai", "D Kai", "Mk.II", "Zwei"},
{"Mikazuki/Kai_notes = Can equip [[Daihatsu Landing Craft|Daihatsu]]",
"Mutsuki/Kai Ni_notes = 2nd remodel. Can equip [[Daihatsu Landing Craft|Daihatsu]]",
"Kisaragi/Kai Ni_notes = 2nd remodel. Can equip [[Daihatsu Landing Craft|Daihatsu]]",
"Satsuki/Kai Ni_notes = 2nd remodel. Can equip [[Daihatsu Landing Craft|Daihatsu]] & [[Special Type 2 Amphibious Landing Craft|Type 2 Landing Craft]]",
"Fumizuki/Kai Ni_notes = 2nd remodel. Can equip [[Daihatsu Landing Craft|Daihatsu]] & [[Special Type 2 Amphibious Landing Craft|Type 2 Landing Craft]]"},
{"remodel_level_good = 20",
"remodel_level_outstanding = 15",
"remodel_level_operator = <",
"firepower_good = 56",
"firepower_outstanding = 61",
"torpedo_good = 83",
"torpedo_outstanding = 89",
"night_battle = true",
"night_battle_good = 140",
"night_battle_outstanding = 150",
"aa_good = 64",
"aa_outstanding = 74",
"asw_good = 67",
"asw_outstanding = 73",
"los_good = 42",
"los_outstanding = 49",
"hp_good = 34",
"hp_outstanding = 36",
"armor_good = 50",
"armor_outstanding = 58",
"evasion_good = 92",
"evasion_outstanding = 98",
"aircraft_good = 1",
"aircraft_outstanding = 1",
"aircraft_slot_good = 1",
"luck_good = 19",
"luck_outstanding = 30",
"luck_max_good = 80",
"fuel_operator=<",
"ammo_good = 20",
"ammo_outstanding = 20",
"ammo_operator = <",
"reference_type = 2"}))
end
return { render = render, test = test }
-- TEST: p.test()