Line 6: |
Line 6: |
| local Tabber = require('Module:Tabber') | | local Tabber = require('Module:Tabber') |
| | | |
− | local format = require('Module:Utils').format | + | local U = require('Module:Core') |
| + | local format = U.format |
| | | |
| local EquipmentInfoKai = BaseData{ | | local EquipmentInfoKai = BaseData{ |
| _template = [[{|class="${table_class}" id="${table_id}" style="border: 1px solid darkgray; width: 380px; background-color: #fafafa;${float}" | | _template = [[{|class="${table_class}" id="${table_id}" style="border: 1px solid darkgray; width: 380px; background-color: #fafafa;${float}" |
| |- | | |- |
− | | colspan="2" style="position: relative; padding: 10px 40px; text-align: center; background-color: ${back};${extra_style};" title="${rarity}" | <div style="position: absolute; right: 5px;">${edit_link}</div> | + | | colspan="2" id="kc-eq-namecard" style="position: relative; padding: 10px 40px; text-align: center; background-color: ${back};${extra_style};" title="${rarity}" | <div id="kc-eq-edit-link" style="position: absolute; right: 5px;">${edit_link}</div> |
− | <div style="font-size: 20px;">'''${name}'''</div><div>${localized_name}</div> | + | <div id="kc-eq-en-name" style="font-size: 20px; margin:0 0 4px 0;">'''${name}'''</div> |
− | <div>'''No.${id} ${japanese_name}'''</div> | + | ${localized_name} |
| + | <div id="kc-eq-jp-entry" style="margin:4px 0 0 0;">'''No.${id} ${japanese_name}'''</div> |
| |- | | |- |
− | | colspan="2" style="text-align: center; background-color: whitesmoke;" | | + | | colspan="2" id="kc-eq-statscard" style="text-align: center; background-color: whitesmoke;" | |
− | <div>${icon} <b>${eq_type}</b>${eq_group}<br /> | + | <div id="kc-eq-category" style="margin:0 0 4px 0;">${icon} <b>${eq_type}</b>${eq_group}</div> |
− | <b>Effects: ${effects}</b>${flight_stats}</div> | + | <div id="kc-eq-effects" style="margin:4px 0;"><b>Effects: ${effects}</b></div> |
− | <p>'''Scrap value: ${scrap}''' (${buildable})</p>${alternative_names}
| + | ${flight_stats} |
− | |-
| + | <div id="kc-eq-scrap" style="margin:4px 0 0 0;">'''Scrap value: ${scrap}''' (${buildable})</div> |
− | | colspan="2" style="text-align: center;" | ${card}
| + | ${alternative_names} |
| |- | | |- |
− | | colspan="2" style="text-align: center; background-color: LightSkyBlue;" | '''Refittable Class''' | + | | colspan="2" id="kc-eq-pictures" style="text-align: center;" | ${card} |
| + | |- |
| + | | colspan="2" id="kc-eq-fits" style="text-align: center; background-color: LightSkyBlue;" | '''Refittable Ship Types''' |
| ${compatibility_details}${bonus_details} | | ${compatibility_details}${bonus_details} |
| |}]], | | |}]], |
− | _bonus_header = [[ | + | _bonus_header = [=[|- |
− | |- | + | | colspan="2" id="kc-eq-bonus" style="text-align: center; background-color: LightSkyBlue;" | '''Bonus'''${category}]=], |
− | | colspan="2" style="text-align: center; background-color: LightSkyBlue;" | '''Bonus''']], | |
| _bonus_row = [=[|- | | _bonus_row = [=[|- |
− | | style="width: 190px; text-align: center;" | [[${ship}]] | + | | style="width: 190px; text-align: center;" | ${text} |
| | style="width: 190px; text-align: center;" | ${stats}]=], | | | style="width: 190px; text-align: center;" | ${stats}]=], |
| --|- | | --|- |
Line 41: |
Line 44: |
| _row_starter = "|-", | | _row_starter = "|-", |
| _compatibility_cell = [[| style="width: 190px; text-align: center; background-color: ${bg_color};" | ${label}]], | | _compatibility_cell = [[| style="width: 190px; text-align: center; background-color: ${bg_color};" | ${label}]], |
− | _localized_name_template = "<p>''${localized_name}''</p>", | + | _lbas_compatibility_row = [=[|- |
− | _flight_stats_template = [[<br/><b>Combat Radius: ${combat_radius}</b> (Deployment Cost: ${deployment_cost})]], | + | | colspan="2" style="text-align: center; background-color: LightSkyBlue;" | '''[[LBAS]] Plane''']=], |
| + | _localized_name_template = [[<div id="kc-eq-local-name" style="margin:4px 0;">${localized_name}</div>]], |
| + | _flight_stats_template = [[<div id="kc-eq-flights"><b>Combat Radius: ${combat_radius}</b> (Deployment Cost: ${deployment_cost})</div>]], |
| _alternative_names_template = [[ | | _alternative_names_template = [[ |
| |- | | |- |
− | | colspan="2" style="text-align: center; padding: 0px;" | <div class="mw-collapsible mw-collapsed" style="background-color: lightgrey; margin: 0px;">''Alternate names''<div class="mw-collapsible-content" style="background-color: whitesmoke;"> | + | | colspan="2" id="kc-eq-altnames" style="text-align: center; padding: 0px;" | <div class="mw-collapsible mw-collapsed" style="background-color: lightgrey; margin: 0px;">''Alternate names''<div class="mw-collapsible-content" style="background-color: whitesmoke;"> |
| ${names} | | ${names} |
| </div></div>]], | | </div></div>]], |
Line 223: |
Line 228: |
| function EquipmentInfoKai:eq_type() | | function EquipmentInfoKai:eq_type() |
| local eq_type = self._equipment:type() | | local eq_type = self._equipment:type() |
− | self._vars.eq_type = Formatting:format_equipment_types(self._equipment) | + | self._vars.eq_type = Formatting:format_equipment_type(self._equipment:type()) |
| local album_type = self._equipment:album_type() | | local album_type = self._equipment:album_type() |
| if album_type then | | if album_type then |
Line 324: |
Line 329: |
| table.insert(result, format{self._compatibility_cell, bg_color = Formatting:format_equipment_compatibility(compatibility), label = ship_label}) | | table.insert(result, format{self._compatibility_cell, bg_color = Formatting:format_equipment_compatibility(compatibility), label = ship_label}) |
| --table.insert(result, format{self._compatibility_cell, bg_color = Formatting:format_equipment_compatibility_color(compatibility), label = ship_label}) | | --table.insert(result, format{self._compatibility_cell, bg_color = Formatting:format_equipment_compatibility_color(compatibility), label = ship_label}) |
| + | end |
| + | if self._equipment:is_lbas_plane() then |
| + | table.insert(result, self._lbas_compatibility_row) |
| end | | end |
| self._vars.compatibility_details = table.concat(result, "\n") | | self._vars.compatibility_details = table.concat(result, "\n") |
| + | end |
| + | |
| + | local function format_bonus_text(desc) |
| + | local with_formats = { |
| + | ["Radar"] = "[[File:Radar.png|link=Radar|Radar with accuracy ≥ 3]]", |
| + | ["SRadar"] = "[[File:Radar.png|link=Radar|Surface Radar with accuracy ≥ 3]]", |
| + | ["ARadar"] = "[[File:Radar.png|link=Radar|Air Radar with accuracy ≥ 3]]", |
| + | ["53Torpedo"] = "[[File:Torpedo.png|link=53cm Twin Torpedo Mount|53cm Twin Torpedo Mount]]", |
| + | ["61Torpedo"] = "[[File:Torpedo.png|link=Category:Equipment fits with 12.7cm Single High-angle Gun Mount (Late Model)|Fits with 61cm Triple Torpedo Mount and 61cm Triple (Oxygen) Torpedo Mount only]]", |
| + | } |
| + | local with = desc._with and with_formats[desc._with] and " " .. with_formats[desc._with] or "" |
| + | local count = desc._count and " " .. Formatting:tooltip("×" .. desc._count, "amount of equipment") or "" |
| + | local text = desc._ship and |
| + | string.format("[[%s]]%s", desc._ship, count) or |
| + | desc._class and |
| + | string.format( |
| + | "[[:Category:%s Class|%s Class]]%s%s", |
| + | desc._class, |
| + | desc._class, |
| + | desc._suffix and " " .. desc._suffix or "", |
| + | count |
| + | ) or |
| + | "??" |
| + | return text, with |
| + | end |
| + | |
| + | local function format_bonus_stat(desc, stat) |
| + | return type(desc[stat]) == "table" and |
| + | Formatting:tooltip(U.isum(desc[stat]), U.ijoin(U.imap(desc[stat], function(e) return "+" .. e end), " ")) or |
| + | desc[stat] or |
| + | false |
| end | | end |
| | | |
| function EquipmentInfoKai:bonus_details() | | function EquipmentInfoKai:bonus_details() |
− | local result = { self._bonus_header } | + | --[=[ |
− | for ship, stats in pairs(self._equipment._bonus or {}) do | + | local result = { format{self._bonus_header, category = U.category("Equipment with stat bonuses") } } |
| + | for _, ship in ipairs(U.isort(U.keys(self._equipment._bonus or {}))) do |
| + | local s = self._equipment._bonus[ship] or {} |
| table.insert(result, format{ | | table.insert(result, format{ |
| self._bonus_row, | | self._bonus_row, |
− | ship = ship, | + | text = string.sub(ship, 1, 1) == "@" and string.sub(ship, 2) or ("[[" .. ship .. "]]"), |
− | stats = Formatting:format_stat_bonuses(stats) | + | stats = Formatting:format_stat_bonuses({ |
| + | firepower = s._firepower or false, |
| + | bombing = s._bombing or false, |
| + | torpedo = s._torpedo or false, |
| + | aa = s._aa or false, |
| + | armor = s._armor or false, |
| + | asw = s._asw or false, |
| + | shelling_accuracy = s._shelling_accuracy or false, |
| + | torpedo_accuracy = s._torpedo_accuracy or false, |
| + | evasion = s._evasion or false, |
| + | los = s._los or false, |
| + | speed = s._speed or false, |
| + | luck = s._luck or false, |
| + | range = s._range or false, |
| + | special = s._special or false, |
| + | }) |
| }) | | }) |
| end | | end |
− | self._vars.bonus_details = #result > 1 and table.concat(result, "\n") or "" | + | local text, with, prevText |
| + | for _, desc in ipairs(self._equipment._bonuses or {}) do |
| + | text, with = format_bonus_text(desc) |
| + | table.insert(result, format{ |
| + | self._bonus_row, |
| + | text = text ~= prevText and text .. with or with, |
| + | stats = Formatting:format_stat_bonuses({ |
| + | firepower = format_bonus_stat(desc, "_firepower"), |
| + | bombing = format_bonus_stat(desc, "_bombing"), |
| + | torpedo = format_bonus_stat(desc, "_torpedo"), |
| + | aa = format_bonus_stat(desc, "_aa"), |
| + | armor = format_bonus_stat(desc, "_armor"), |
| + | asw = format_bonus_stat(desc, "_asw"), |
| + | shelling_accuracy = format_bonus_stat(desc, "_shelling_accuracy"), |
| + | torpedo_accuracy = format_bonus_stat(desc, "_torpedo_accuracy"), |
| + | evasion = format_bonus_stat(desc, "_evasion"), |
| + | los = format_bonus_stat(desc, "_los"), |
| + | speed = format_bonus_stat(desc, "_speed"), |
| + | luck = format_bonus_stat(desc, "_luck"), |
| + | range = format_bonus_stat(desc, "_range"), |
| + | special = format_bonus_stat(desc, "_special"), |
| + | }) |
| + | }) |
| + | prevText = text |
| + | end |
| + | ]=]-- |
| + | self._vars.bonus_details = "" -- #result > 1 and ("\n" .. table.concat(result, "\n")) or "" |
| end | | end |
| | | |
Line 359: |
Line 441: |
| | | |
| function EquipmentInfoKai:create_item() | | function EquipmentInfoKai:create_item() |
− | if self._args.name then | + | self._equipment = Equipment(self._args[1], self._enemy) |
− | self._equipment = Equipment(self._args.name, self._args.model)
| |
− | else
| |
− | self._equipment = Equipment(self._args[1])
| |
− | end
| |
| end | | end |
| | | |