Changes

no edit summary
Line 29: Line 29:  
| colspan="2" style="text-align: center; background-color: LightSkyBlue;" | '''Bonus''']],
 
| 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 326: Line 326:  
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]",
 +
    }
 +
    local with = desc._with and with_formats[desc._with] and " " .. with_formats[desc._with] or ""
 +
    if desc._ship then
 +
        return string.format(
 +
            "[[%s]]%s",
 +
            desc._ship,
 +
            with
 +
        )
 +
    end
 +
    if desc._class then
 +
        return string.format(
 +
            "[[:Category:%s Class|%s Class]]%s%s",
 +
            desc._class,
 +
            desc._class,
 +
            desc._suffix and " " .. desc._suffix or "",
 +
            with
 +
        )
 +
    end
 +
    return "??"
 +
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
   Line 334: Line 365:  
         table.insert(result, format{
 
         table.insert(result, format{
 
             self._bonus_row,
 
             self._bonus_row,
             ship = string.sub(ship, 1, 1) == "@" and string.sub(ship, 2) or ("[[" .. ship .. "]]"),
+
             text = string.sub(ship, 1, 1) == "@" and string.sub(ship, 2) or ("[[" .. ship .. "]]"),
 
             stats = Formatting:format_stat_bonuses({
 
             stats = Formatting:format_stat_bonuses({
 
        firepower = s._firepower or false,
 
        firepower = s._firepower or false,
Line 350: Line 381:  
        range = s._range or false,
 
        range = s._range or false,
 
        special = s._special or false,
 
        special = s._special or false,
 +
        })
 +
        })
 +
    end
 +
    for _, desc in ipairs(self._equipment._bonuses or {}) do
 +
        table.insert(result, format{
 +
            self._bonus_row,
 +
            text = format_bonus_text(desc),
 +
            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"),
 
        })
 
        })
 
         })
 
         })
cssedit, gkautomate
6,926

edits