Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 73: | Linia 73: | ||
return bullet_speed |
return bullet_speed |
||
else |
else |
||
− | return bullet_speed .. "m/s" |
+ | return bullet_speed and bullet_speed .. "m/s" -- Ensure bullet_speed is not nil |
end |
end |
||
end, |
end, |
||
["zasieg"] = function(weapon_name) |
["zasieg"] = function(weapon_name) |
||
− | + | local range = get_weapon_data(weapon_name).zasieg |
|
+ | return range and range .. "m" |
||
end, |
end, |
||
["halasliwosc"] = function(weapon_name) |
["halasliwosc"] = function(weapon_name) |
||
Linia 91: | Linia 92: | ||
end, |
end, |
||
["wielostrzal"] = function(weapon_name) |
["wielostrzal"] = function(weapon_name) |
||
− | local |
+ | local pellet_count = get_weapon_data(weapon_name).wielostrzal |
− | return |
+ | return pellet_count and pellet_count .. " odłamków" -- Ensure pellet_count is not nil |
end, |
end, |
||
["celnosc"] = function(weapon_name) |
["celnosc"] = function(weapon_name) |
||
Linia 104: | Linia 105: | ||
end, |
end, |
||
["magazynek"] = function(weapon_name) |
["magazynek"] = function(weapon_name) |
||
− | + | local mag = get_weapon_data(weapon_name).magazynek |
|
+ | return mag and mag .. " pocisków" -- Ensure mag is not nil |
||
end, |
end, |
||
["maks_amunicja"] = function(weapon_name) |
["maks_amunicja"] = function(weapon_name) |
||
− | + | local max_ammo = get_weapon_data(weapon_name).maks_amunicja |
|
+ | return max_ammo and max_ammo .. " pocisków" -- Ensure max_ammo is not nil |
||
end, |
end, |
||
["przeladowanie"] = function(weapon_name) |
["przeladowanie"] = function(weapon_name) |
||
− | + | local reload = get_weapon_data(weapon_name).przeladowanie |
|
+ | return reload and reload .. "s" -- Ensure reload is not nil |
||
end, |
end, |
||
["normal_obrazenia"] = function(weapon_name) |
["normal_obrazenia"] = function(weapon_name) |
Wersja z 16:12, 8 sie 2018
Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Weapon/opis
--
local weapon_data = mw.loadData("Module:Weapon/data")
local icon = require("Module:I")
local utils = require("Module:Utils")
local module_export = {}
local function get_weapon_data(weapon_name)
return weapon_data["weapons"][weapon_name] or {}
end
local function is_melee(weapon_name)
local weap_data = get_weapon_data(weapon_name)
return weap_data.typ == "Broń Biała Archwing" or weap_data.typ == "Broń Biała"
end
local function get_damage_bias(damage)
local max_damage = 0
local max_damage_type = nil
local total_damage = utils.sum(unpack(damage))
for k, v in damage do
if(max_damage < v) then
max_damage = v
max_damage_type = k
end
end
return max_damage / total_damage, max_damage_type
end
local getters = {
-- Image
["obraz"] = function(weapon_name)
local image = get_weapon_data(weapon_name).obraz
if image ~= nil then
return image
else
return "Panel.png"
end
end,
-- Headers
["normal_attack_header"] = function(weapon_name)
return get_weapon_data(weapon_name)["normal_attack"]["header"]
end,
["secondary_attack_header"] = function(weapon_name)
return get_weapon_data(weapon_name)["secondary_attack"]["header"]
end,
-- Fields
["mistrzostwo"] = function(weapon_name)
local mastery = get_weapon_data(weapon_name).mistrzostwo
if(mastery ~= nil) then
return mastery
else
return 0
end
end,
["kategoria"] = function(weapon_name)
return get_weapon_data(weapon_name).kategoria
end,
["typ"] = function(weapon_name)
return get_weapon_data(weapon_name).typ
end,
["tryb"] = function(weapon_name)
return get_weapon_data(weapon_name).tryb
end,
["typ_amunicji"] = function(weapon_name)
return get_weapon_data(weapon_name).typ_amunicji
end,
["szybkosc_pocisku"] = function(weapon_name)
local bullet_speed = get_weapon_data(weapon_name).normal_attack.szybkosc_pocisku
if(bullet_speed == "Hit-Scan") then
return bullet_speed
else
return bullet_speed and bullet_speed .. "m/s" -- Ensure bullet_speed is not nil
end
end,
["zasieg"] = function(weapon_name)
local range = get_weapon_data(weapon_name).zasieg
return range and range .. "m"
end,
["halasliwosc"] = function(weapon_name)
return get_weapon_data(weapon_name).halasliwosc
end,
["szybkostrzelnosc"] = function(weapon_name)
local weap_data = get_weapon_data(weapon_name)
if(is_melee(weapon_name)) then
return weap_data.normal_attack.szybkostrzelnosc
else
return weap_data.normal_attack.szybkostrzelnosc .. " pocisków na sekundę"
end
end,
["wielostrzal"] = function(weapon_name)
local pellet_count = get_weapon_data(weapon_name).wielostrzal
return pellet_count and pellet_count .. " odłamków" -- Ensure pellet_count is not nil
end,
["celnosc"] = function(weapon_name)
return get_weapon_data(weapon_name).celnosc
end,
["przyblizenie"] = function(weapon_name)
return get_weapon_data(weapon_name).przyblizenie
end,
["rozrzut"] = function(weapon_name)
return get_weapon_data(weapon_name).rozrzut
end,
["magazynek"] = function(weapon_name)
local mag = get_weapon_data(weapon_name).magazynek
return mag and mag .. " pocisków" -- Ensure mag is not nil
end,
["maks_amunicja"] = function(weapon_name)
local max_ammo = get_weapon_data(weapon_name).maks_amunicja
return max_ammo and max_ammo .. " pocisków" -- Ensure max_ammo is not nil
end,
["przeladowanie"] = function(weapon_name)
local reload = get_weapon_data(weapon_name).przeladowanie
return reload and reload .. "s" -- Ensure reload is not nil
end,
["normal_obrazenia"] = function(weapon_name)
local damage = get_weapon_data(weapon_name).normal_attack.normal_obrazenia
local damage_bias, damage_bias_type = get_damage_bias(damage)
return utils.sum(unpack(damage)) .. " (" .. utils.to_percent(damage_bias) .. icon.proc(damage_bias_type) ..")"
end,
["mornal_zywiol"] = function(weapon_name)
return get_weapon_data(weapon_name).normal_attack.zywiol
end,
["normal_zywiol_typ"] = function(weapon_name)
return get_weapon_data(weapon_name).normal_attack.zywiol_typ
end,
}
local function get_value(weapon_name, field_name)
return getters[field_name:lower()](weapon_name)
end
local function get_attack_value(weapon_name, attack_type, field_name)
return getters[attack_type:lower() .. "_" .. field_name:lower()](weapon_name)
end
function module_export.get_value(frame)
-- Unpack params
local weapon_name = frame.args[1]
local field_name = frame.args[2]
local attack_field_name = frame.args[3]
-- Offload work to local func
if(attack_field_name ~= nil and attack_field_name ~= "") then
return get_attack_value(weapon_name, field_name, attack_field_name)
else
return get_value(weapon_name, field_name);
end
end
function module_export.is_melee(frame)
return is_melee(frame.args[1])
end
return module_export