Модуль:Песочница/Pok: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 2: | Строка 2: | ||
local p = {} | local p = {} | ||
local function formatDamageList(damageTable) | |||
local lines = {} | |||
for dmgType, value in pairs(damageTable) do | |||
table.insert(lines, "<li>{{ColorPalette|Damage|" .. dmgType .. "|" .. value .. "}} {{#invoke:Ftl|main|translation|damage-type-" .. dmgType .. "}}</li>") | |||
end | |||
return table.concat(lines) | |||
end | |||
function p.main(frame) | function p.main(frame) | ||
| Строка 25: | Строка 33: | ||
if mode == "melee" then | if mode == "melee" then | ||
local melee = entry.MeleeWeapon | local melee = entry.MeleeWeapon | ||
if not melee | if not melee or not melee.damage or not melee.damage.types then | ||
return "Нет данных о повреждениях (MeleeWeapon.damage.types) для оружия '" .. tostring(id) .. "'." | return "Нет данных о повреждениях (MeleeWeapon.damage.types) для оружия '" .. tostring(id) .. "'." | ||
end | end | ||
local oneHandDamage = melee.damage.types | |||
local additionalDamage = (entry.IncreaseDamageOnWield and entry.IncreaseDamageOnWield.damage and entry.IncreaseDamageOnWield.damage.types) or | |||
local additionalDamage = | (entry.DamageOtherOnHit and entry.DamageOtherOnHit.damage and entry.DamageOtherOnHit.damage.types) | ||
local | local result = "<ul>" .. formatDamageList(oneHandDamage) | ||
if additionalDamage then | if additionalDamage then | ||
local twoHandDamage = {} | local twoHandDamage = {} | ||
for dmgType, value in pairs(oneHandDamage) do | for dmgType, value in pairs(oneHandDamage) do | ||
twoHandDamage[dmgType] = value | twoHandDamage[dmgType] = value | ||
end | end | ||
for dmgType, addValue in pairs(additionalDamage) do | for dmgType, addValue in pairs(additionalDamage) do | ||
twoHandDamage[dmgType] = (twoHandDamage[dmgType] or 0) + addValue | |||
end | end | ||
result = result .. formatDamageList(twoHandDamage) | |||
end | end | ||
return frame:preprocess( | return frame:preprocess(result .. "</ul>") | ||
elseif mode == "attackRate" then | elseif mode == "attackRate" then | ||
local melee = entry.MeleeWeapon | local melee = entry.MeleeWeapon | ||
| Строка 81: | Строка 61: | ||
end | end | ||
local attackRate = melee.attackRate or 1 | |||
return frame:preprocess("<ul><li>{{ColorPalette|Weapon|attackRate|" .. tostring(attackRate) .. "}}</li></ul>") | |||
else | else | ||
return "Неверный режим: " .. tostring(mode) | return "Неверный режим: " .. tostring(mode) | ||