More actions
local weapons_table = mw.text.jsonDecode(mw.getCurrentFrame():expandTemplate{title='User:Horblegorble/Sandbox/Template:Weapons.json'})
local p = {}
function round(number, decimals)
local power = 10 ^ decimals return math.floor(number * power) / power
end
local weapon_found = false local weapon_info = {} local findWeapon = function(page_name) if weapon_found then return end for _, v in pairs(weapons_table) do weapon_found = true if v['name'] == page_name then -- general weapon_info['name' ] = v['name' ] weapon_info['kind' ] = v['kind' ] weapon_info['hands' ] = v['hands' ] weapon_info['desc' ] = v['desc' ] weapon_info['craftable' ] = v['craftable' ] -- displayed stats weapon_info['quality' ] = v['quality' ] weapon_info['power' ] = v['power' ] weapon_info['speed' ] = v['speed' ] weapon_info['poise' ] = v['poise' ] weapon_info['critchance'] = v['critchance'] weapon_info['range' ] = v['range' ] weapon_info['efficiency'] = v['efficiency'] weapon_info['buff' ] = v['buff' ] weapon_info['bufftype' ] = v['bufftype' ] -- detailed stats weapon_info['equiptime' ] = v['equiptime' ] -- assets weapon_info['path' ] = v['path' ] weapon_info['vox' ] = v['vox' ] weapon_info['ron' ] = v['ron' ] weapon_info['manifest' ] = v['manifest' ] break end end end
-- general
p.getWeaponName = function(frame) findWeapon(frame.args[1]) return weapon_info['name'] end
p.getWeaponKind = function(frame) findWeapon(frame.args[1]) return weapon_info['kind'] end
p.getWeaponHands = function(frame) findWeapon(frame.args[1]) return weapon_info['hands'] end
p.getWeaponDesc = function(frame) findWeapon(frame.args[1]) return weapon_info['desc'] end
p.getWeaponCraftable = function(frame) findWeapon(frame.args[1]) return weapon_info['craftable'] end
-- displayed stats
p.getWeaponQuality = function(frame) findWeapon(frame.args[1]) return frame:expandTemplate{ title = weapon_info['quality'] } end
p.getWeaponPower = function(frame) findWeapon(frame.args[1]) return 10 * weapon_info['power'] end
p.getWeaponSpeed = function(frame) findWeapon(frame.args[1]) return weapon_info['speed'] end
p.getWeaponPoise = function(frame) findWeapon(frame.args[1]) return 10 * weapon_info['poise'] end
p.getWeaponCritChance = function(frame) findWeapon(frame.args[1]) return round(weapon_info['critchance'], 2) .. "%" end
p.getWeaponRange = function(frame) findWeapon(frame.args[1]) return weapon_info['range'] end
p.getWeaponEfficiency = function(frame) findWeapon(frame.args[1]) return weapon_info['efficiency'] end
p.getWeaponBuff = function(frame) findWeapon(frame.args[1]) return weapon_info['buff'] end
p.getWeaponBuffType = function(frame) findWeapon(frame.args[1]) return weapon_info['bufftype'] end
-- detailed stats
p.getWeaponEquipTime = function(frame) findWeapon(frame.args[1]) return weapon_info['equiptime'] .. ' seconds' end
-- assets
p.getWeaponPath = function(frame) findWeapon(frame.args[1]) return weapon_info['path'] end
p.getWeaponImage = function(frame) findWeapon(frame.args[1]) return "Veloren_" .. weapon_info['name'] .. ".png" end p.getWeaponVox = function(frame) findWeapon(frame.args[1]) return weapon_info['vox'] end
p.getWeaponRon = function(frame) findWeapon(frame.args[1]) return weapon_info['ron'] end
p.getWeaponManifest = function(frame) findWeapon(frame.args[1]) return weapon_info['manifest'] end
return p