Content added Content deleted
No edit summary Tag: Reverted |
(fix get_info) |
||
(37 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
local weapons_table = mw.text.jsonDecode(mw.getCurrentFrame():expandTemplate{title='Template:Weapons.json'}) |
local weapons_table = mw.text.jsonDecode(mw.getCurrentFrame():expandTemplate{title='Template:Weapons.json'}) |
||
function round(number, decimals) |
|||
local power = 10^decimals |
|||
return math.floor(number * power) / power |
|||
end |
|||
function percent(number) |
|||
return round((number - 1) * 100, 2) .. "%" |
|||
end |
|||
function choose(var, default) |
|||
if var ~= nil then |
|||
return var |
|||
end |
|||
return default |
|||
end |
|||
function get_info(weapon_name, field, default) |
|||
for k, v in pairs(weapons_table) do |
|||
if v['name'] == weapon_name then |
|||
return choose(v[field], default) |
|||
end |
|||
end |
|||
return default |
|||
end |
|||
local p = {} |
local p = {} |
||
p.getWeaponImage = function(frame) |
|||
local weapon_name = frame.args[1] |
|||
return "Veloren_" .. weapon_name .. ".png" |
|||
end |
|||
p.getWeaponName = function(frame) |
|||
local weapon_name = frame.args[1] |
|||
return weapon_name |
|||
end |
|||
p.getWeaponPath = function(frame) |
|||
local weapon_name = frame.args[1] |
|||
local value = get_info(weapon_name, 'path', nil) |
|||
return value |
|||
end |
|||
p.getWeaponQuality = function(frame) |
|||
local weapon_name = frame.args[1] |
|||
local value = get_info(weapon_name, 'quality', 'Common') |
|||
return frame:expandTemplate{ title = value } |
|||
end |
|||
p.getWeaponDesc = function(frame) |
|||
local weapon_name = frame.args[1] |
|||
local value = get_info(weapon_name, 'desc', nil) |
|||
return value |
|||
end |
|||
p.getWeaponDamage = function(frame) |
|||
local weapon_name = frame.args[1] |
|||
local value = get_info(weapon_name, 'power', 0) |
|||
return value * 10 |
|||
end |
|||
p.getWeaponRating = function(frame) |
|||
local weapon_name = frame.args[1] |
|||
local value = get_info(weapon_name, 'rating', 0) |
|||
return round(value, 2) * 10 |
|||
end |
|||
p.getWeaponCritChance = function(frame) |
|||
local weapon_name = frame.args[1] |
|||
local value = get_info(weapon_name, 'critchance', 0) |
|||
return round(value * 100, 2) .. "%" |
|||
end |
|||
p.getWeaponSpeed = function(frame) |
|||
local weapon_name = frame.args[1] |
|||
local value = get_info(weapon_name, 'speed', 1) |
|||
return percent(value) |
|||
end |
|||
p.getWeaponPoise = function(frame) |
|||
local weapon_name = frame.args[1] |
|||
local poise = get_info(weapon_name, 'poise', 1) |
|||
return percent(poise) |
|||
end |
|||
p.getWeaponRange = function(frame) |
|||
local weapon_name = frame.args[1] |
|||
local value = get_info(weapon_name, 'range', 1) |
|||
return percent(value) |
|||
end |
|||
p.getWeaponEnergy = function(frame) |
|||
local weapon_name = frame.args[1] |
|||
local value = get_info(weapon_name, 'energy', 1) |
|||
return percent(value) |
|||
end |
|||
p.getWeaponBuff = function(frame) |
|||
local weapon_name = frame.args[1] |
|||
local value = get_info(weapon_name, 'buff', 1) |
|||
return percent(value) |
|||
end |
|||
p.getWeapon = function(frame) |
p.getWeapon = function(frame) |
||
local |
local name = frame.args[1] |
||
for k, v in pairs(weapons_table) do |
for k, v in pairs(weapons_table) do |
||
if v['name'] == |
if v['name'] == name then |
||
image = |
image = name |
||
path = choose(v['path'], nil) |
|||
quality = choose(v['quality'], 'Common') |
|||
desc = choose(v['desc'], nil) |
|||
quality = v['quality'] |
|||
damage = v['damage'] |
damage = choose(v['damage'], 0) |
||
rating = choose(v['rating'], 0) |
|||
critchance = v['critchance'] |
critchance = choose(v['critchance'], 0) |
||
desc = v['desc'] |
|||
poise = choose(v['poise'], 1) |
|||
speed = choose(v['speed'], 1) |
|||
range = choose(v['range'], 1) |
|||
energy = choose(v['energy'], 1) |
|||
buff = choose(v['buff'], 1) |
|||
end |
end |
||
end |
end |
||
txt = frame:expandTemplate{ title = 'Infobox weapon', args = { image = image .. '.png', title = name, description = desc, power = damage, quality = quality, speed = speed, critchance = critchance .. '%', path = path} } |
|||
txt = frame:expandTemplate{ title = 'Infobox weapon', args = { |
|||
image = image .. '.png', |
|||
title = name, |
|||
description = desc, |
|||
quality = quality, |
|||
power = damage*10, |
|||
rating = rating, |
|||
critchance = critchance*10 .. '%', |
|||
poise = percent(poise), |
|||
speed = percent(speed), |
|||
range = percent(range), |
|||
energy = percent(energy), |
|||
buff = percent(buff), |
|||
} } |
|||
return txt |
return txt |
||
end |
end |
Latest revision as of 01:49, 15 September 2022
Documentation for this module may be created at Module:Weapon/doc
local weapons_table = mw.text.jsonDecode(mw.getCurrentFrame():expandTemplate{title='Template:Weapons.json'})
function round(number, decimals)
local power = 10^decimals
return math.floor(number * power) / power
end
function percent(number)
return round((number - 1) * 100, 2) .. "%"
end
function choose(var, default)
if var ~= nil then
return var
end
return default
end
function get_info(weapon_name, field, default)
for k, v in pairs(weapons_table) do
if v['name'] == weapon_name then
return choose(v[field], default)
end
end
return default
end
local p = {}
p.getWeaponImage = function(frame)
local weapon_name = frame.args[1]
return "Veloren_" .. weapon_name .. ".png"
end
p.getWeaponName = function(frame)
local weapon_name = frame.args[1]
return weapon_name
end
p.getWeaponPath = function(frame)
local weapon_name = frame.args[1]
local value = get_info(weapon_name, 'path', nil)
return value
end
p.getWeaponQuality = function(frame)
local weapon_name = frame.args[1]
local value = get_info(weapon_name, 'quality', 'Common')
return frame:expandTemplate{ title = value }
end
p.getWeaponDesc = function(frame)
local weapon_name = frame.args[1]
local value = get_info(weapon_name, 'desc', nil)
return value
end
p.getWeaponDamage = function(frame)
local weapon_name = frame.args[1]
local value = get_info(weapon_name, 'power', 0)
return value * 10
end
p.getWeaponRating = function(frame)
local weapon_name = frame.args[1]
local value = get_info(weapon_name, 'rating', 0)
return round(value, 2) * 10
end
p.getWeaponCritChance = function(frame)
local weapon_name = frame.args[1]
local value = get_info(weapon_name, 'critchance', 0)
return round(value * 100, 2) .. "%"
end
p.getWeaponSpeed = function(frame)
local weapon_name = frame.args[1]
local value = get_info(weapon_name, 'speed', 1)
return percent(value)
end
p.getWeaponPoise = function(frame)
local weapon_name = frame.args[1]
local poise = get_info(weapon_name, 'poise', 1)
return percent(poise)
end
p.getWeaponRange = function(frame)
local weapon_name = frame.args[1]
local value = get_info(weapon_name, 'range', 1)
return percent(value)
end
p.getWeaponEnergy = function(frame)
local weapon_name = frame.args[1]
local value = get_info(weapon_name, 'energy', 1)
return percent(value)
end
p.getWeaponBuff = function(frame)
local weapon_name = frame.args[1]
local value = get_info(weapon_name, 'buff', 1)
return percent(value)
end
p.getWeapon = function(frame)
local name = frame.args[1]
for k, v in pairs(weapons_table) do
if v['name'] == name then
image = name
path = choose(v['path'], nil)
quality = choose(v['quality'], 'Common')
desc = choose(v['desc'], nil)
damage = choose(v['damage'], 0)
rating = choose(v['rating'], 0)
critchance = choose(v['critchance'], 0)
poise = choose(v['poise'], 1)
speed = choose(v['speed'], 1)
range = choose(v['range'], 1)
energy = choose(v['energy'], 1)
buff = choose(v['buff'], 1)
end
end
txt = frame:expandTemplate{ title = 'Infobox weapon', args = {
image = image .. '.png',
title = name,
description = desc,
quality = quality,
power = damage*10,
rating = rating,
critchance = critchance*10 .. '%',
poise = percent(poise),
speed = percent(speed),
range = percent(range),
energy = percent(energy),
buff = percent(buff),
} }
return txt
end
return p