Line 1: |
Line 1: |
− | local p = {} | + | local U = require("Module:Core") |
| + | local Ship = require("Module:Ship") |
| + | local Formatting = require("Module:Formatting") |
| + | local dropData = require("Module:Data/ShipDrop") |
| | | |
− | -- This disgusting module for shipdrops made by
| + | local worlds = { |
− | -- Remi_Scarlet
| + | {world = 1, maps = 6}, |
− | -- Please at least give some mention of credit if you want to modify/reuse/whatever. I don't actually care but it'd be nice of you.
| + | {world = 2, maps = 5}, |
− | -- I fucking hate lua.
| + | {world = 3, maps = 5}, |
| + | {world = 7, maps = 5}, |
| + | {world = 4, maps = 5}, |
| + | {world = 5, maps = 5}, |
| + | {world = 6, maps = 5}, |
| + | } |
| | | |
− | function p.formatShipDropTable(tableInfo) | + | local function formatShip(shipName) |
− | local order = {"1","2","3","4","5","6","7"}
| + | local ship = Ship(shipName) |
− | local worldOrder = {"World1", "World2", "World3", "World4", "World5", "World6","World7"}
| + | local shipDropData = dropData[shipName] or {} |
− | local html = ""
| + | local result = { |
− | html = html .. "<tr><td>[[" .. tableInfo["ShipName"] .. "]]</td>" | + | string.format( |
− | local style = {["1"] = 'background-color:#8ac',
| + | [=[<tr><td>[[%s]]</td><td%s>%s</td><td>[[%s]]</td><td>%s</td>]=], |
− | ["2"] = 'background-color:#ace',
| + | shipName, |
− | ["3"] = 'background-color:#0ff',
| + | ship:back() and string.format(' style="background-color:%s;color:black"', Formatting:format_ship_back(ship:back())) or "", |
− | ["4"] = 'background-color:#bbb',
| + | Formatting:format_ship_rarity(ship:back()), |
− | ["5"] = 'background-color:#fc0',
| + | Formatting:format_ship_code(ship:type()), |
− | ["6"] = 'background-color:#ffaaff',
| + | U.pad(ship:id() or "???", 3, "0") |
− | ["7"] = 'background-color:#ff55ff',
| + | ) |
− | ["8"] = 'background-color:#aa00aa; color:#fff'}
| + | } |
− | local rarity = tableInfo["Rarity"]
| + | for _, e in ipairs(worlds) do |
− | html = html .. "<td style=\"" .. style[rarity] .. ";\">" .. rarity .. "</td>" | + | for map = 1, e.maps do |
− | html = html .. "<td>" .. tableInfo["No."] .. "</td>"
| + | local drop = shipDropData[string.format("%d-%d", e.world, map)] |
− | for i,world in pairs(worldOrder) do
| + | table.insert(result, string.format("<td%s>%s</td>", drop and ' style="background-color:#c8e6c9"' or "", drop and Formatting:tooltip2("✔️", drop, "; ") or "")) |
− | html = html .. "<td style='borders:none;background-color: #dddcb1'></td>"
| |
− | for ii,map in pairs(order) do
| |
− | local val = tableInfo[world][map]
| |
− | if val ~= nil then
| |
− | html = html .. "<td style=\"" .. val["style"] .. "\">" .. val["drop"] .. "</td>"
| |
− | end
| |
− | end
| |
| end | | end |
− | html = html .. "<td style='borders:none;background-color: #dddcb1'></td>" | + | end |
− | html = html .. "<td>" .. tableInfo["Remarks"] .. "</td>"
| + | local remark = |
− | html = html .. "</tr>"
| + | ship:buildable() and (ship:buildable_lsc() and "Buildable" or "Buildable (no LSC)") or (ship:buildable_lsc() and "LSC only" or "Unbuildable") |
− | return html
| + | table.insert(result, string.format("<td>%s</td></tr>", remark)) |
| + | return table.concat(result) |
| end | | end |
| | | |
− | function p.returnShipDrop(frame) | + | local function render(frame) |
− | local dropList = require('Module:Data/Drop')
| + | local args = frame.args |
− | | + | local result = {[[<div style="overflow-x:auto"><table class="wikitable sortable" style="text-align:center;width:100%">]]} |
− | -- Lazy. Will modify later to be more like Infobox module
| + | table.insert(result, "<tr>") |
− | -- Please don't shoot me. I want to kill myself at how ugly this is, too. dw.
| + | for _, cell in ipairs({"Ship", "Rarity", "Type", "No."}) do |
− | local html = "<ol><li>Symbols<ul><li>X = Obtainable <b>only</b> in boss nodes.</li><li>O = Obtainable in any node beside the boss node.</li></ul></li><li>Drops were referenced from both [http://wikiwiki.jp/kancolle/?%B4%CF%CC%BC%A5%C9%A5%ED%A5%C3%A5%D7%B5%D5%B0%FA%A4%AD Kancolle Japanese Wikiwiki] and [http://www56.atwiki.jp/kancolle/pages/26.html Kancolle Japanese @WIki].</li><li>Background Coloring<ul><li>Yellow Background means the drop is cited at only one of the sources.</li><li>Green Background means the drop is cited by both sources.</li><li>No Background means ship in question isn't rare enough to warrant color coding (you can add the background yourself if you want).</li></ul></li><li>Unless specified, all ships are obtainable through crafting.<ul><li>Ships that are only craftable through Large Ship Construction (LSC) will have notes to specify (<i>LSC Crafting</i>).</li></ul></li></ol>"
| + | table.insert(result, string.format([[<th rowspan="2">%s</th>]], cell)) |
− | html = html .. '<div style="overflow-x: auto;">'
| + | end |
− | html = html .. '<table class="wikitable sortable" style="text-align: center; width:100%; margin-bottom: 0;">'
| + | for _, e in ipairs(worlds) do |
− | html = html .. '<tr><th colspan="1" rowspan="2" style="width:10%;"> Ship Name</th><th colspan="1" rowspan="2" style="width:2%;"> Rarity</th><th colspan="1" rowspan="2" style="width:3%;"> No.</th><th class="unsortable" colspan="1" rowspan="167" style="background-color: #dddcb1; width:.8%;"></th>'
| + | table.insert(result, string.format([=[<th colspan="%s">[[World %s]]</th>]=], e.maps, e.world)) |
− | html = html .. '<th colspan="6" rowspan="1" style="width:12.5%;"> [[World 1]]</th><th class="unsortable" colspan="1" rowspan="167" style="background-color: #dddcb1; width:.8%;"></th><th colspan="5" rowspan="1" style="width:12.5%;"> [[World 2]]</th><th class="unsortable" colspan="1" rowspan="167" style="background-color: #dddcb1; width:.8%;"></th><th colspan="5" rowspan="1" style="width:12.5%;"> [[World 3]]</th><th class="unsortable" colspan="1" rowspan="167" style="background-color: #dddcb1; width:.8%;"></th><th colspan="5" rowspan="1" style="width:11%;"> [[World 4]]</th><th class="unsortable" colspan="1" rowspan="167" style="background-color: #dddcb1; width:.8%;"></th><th colspan="5" rowspan="1" style="width:12.5%;"> [[World 5]]</th><th class="unsortable" colspan="1" rowspan="167" style="background-color: #dddcb1; width:.8%;"></th><th colspan="5" rowspan="1" style="width:10%;"> [[World 6]]</th><th class="unsortable" colspan="1" rowspan="167" style="background-color: #dddcb1; width:.8%;"></th><th colspan="3" rowspan="1" style="width:10%;"> [[World 7]]</th><th class="unsortable" colspan="1" rowspan="167" style="background-color: #dddcb1; width:.8%;"></th><th colspan="1" rowspan="2" style="width:14%;"> Remarks</th></tr>' | + | end |
− | html = html .. '<tr><th style="width:2.5%;"> [[World_1#Drops | 1]]</th><th style="width:2.5%;"> [[World_1#Drops_2 | 2]]</th><th style="width:2.5%;"> [[World_1#Drops_3 | 3]]</th><th style="width:2.5%;"> [[World_1#Drops_4 | 4]]</th><th style="width:2.5%;"> [[World_1#Drops_5 | 5]]</th><th style="width:2.5%;"> [[World_1#Drops_6 | 6]]</th>'
| + | table.insert(result, [[<th rowspan="2">Remarks</th></tr><tr>]]) |
− | html = html .. '<th style="width:2.5%;"> [[World_2#Drops | 1]]</th><th style="width:2.5%;"> [[World_2#Drops_2 | 2]]</th><th style="width:2.5%;"> [[World_2#Drops_3 | 3]]</th><th style="width:2.5%;"> [[World_2#Drops_4 | 4]]</th><th style="width:2.5%;"> [[World_2#Drops_5 | 5]]</th>'
| + | for _, e in ipairs(worlds) do |
− | html = html .. '<th style="width:2.5%;"> [[World_3#Drops | 1]]</th><th style="width:2.5%;"> [[World_3#Drops_2 | 2]]</th><th style="width:2.5%;"> [[World_3#Drops_3 | 3]]</th><th style="width:2.5%;"> [[World_3#Drops_4 | 4]]</th><th style="width:2.5%;"> [[World_3#Drops_5 | 5]]</th>'
| + | for map = 1, e.maps do |
− | html = html .. '<th style="width:2.5%;"> [[World_4#Drops | 1]]</th><th style="width:2.5%;"> [[World_4#Drops_2 | 2]]</th><th style="width:2.5%;"> [[World_4#Drops_3 | 3]]</th><th style="width:2.5%;"> [[World_4#Drops_4 | 4]]</th><th style="width:2.5%;"> [[World_4#Drops_5 | 5]]</th>'
| + | table.insert(result, string.format([=[<th>[[%s-%s|%s]]</th>]=], e.world, map, map)) |
− | html = html .. '<th style="width:2.5%;"> [[World_5#Drops | 1]]</th><th style="width:2.5%;"> [[World_5#Drops_2 | 2]]</th><th style="width:2.5%;"> [[World_5#Drops_3 | 3]]</th><th style="width:2.5%;"> [[World_5#Drops_4 | 4]]</th><th style="width:2.5%;"> [[World_5#Drops_5 | 5]]</th>' | |
− | html = html .. '<th style="width:2.5%;"> [[World_6#Drops | 1]]</th><th style="width:2.5%;"> [[World_6#Drops_2 | 2]]</th><th style="width:2.5%;"> [[World_6#Drops_3 | 3]]</th><th style="width:2.5%;"> [[World_6#Drops_4 | 4]]</th><th style="width:2.5%;"> [[World_6#Drops_5 | 5]]</th>'
| |
− | html = html .. '<th style="width:2.5%;"> [[World_7#Drops | 1]]</th><th style="width:2.5%;"> [[World_7#Drops_2 | 2]]</th><th style="width:2.5%;"> [[World_7#Drops_3 | 3]]</th></tr>'
| |
− | if frame.args[1] ~= "all" then
| |
− | for i,shipName in pairs(frame.args) do
| |
− | html = html .. p.formatShipDropTable(dropList[shipName])
| |
− | end
| |
− | end
| |
− | if frame.args[1] == "all" then
| |
− | local ordered_keys = {}
| |
− | for k in pairs(dropList) do
| |
− | table.insert(ordered_keys, k)
| |
− | end
| |
− | table.sort(ordered_keys)
| |
− | for i = 1, #ordered_keys do
| |
− | local shipName = ordered_keys[i]
| |
− | --return shipName
| |
− | html = html .. p.formatShipDropTable(dropList[shipName])
| |
− | end
| |
| end | | end |
− | html = html .. "</table>"
| + | end |
− | html = html .. '</div>' | + | table.insert(result, "</tr>") |
− | return html
| + | for _, shipName in ipairs(args[1] == "all" and U.sort(U.keys(dropData)) or args) do |
| + | table.insert(result, formatShip(shipName)) |
| + | end |
| + | table.insert(result, [[</table></div>]]) |
| + | return table.concat(result) |
| end | | end |
| | | |
− | return p | + | return { returnShipDrop = render } |