Module:Weapon: Difference between revisions

From Veloren Wiki
Content added Content deleted
No edit summary
(fix get_info)
 
(20 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'})


local p = {}




function round(number, decimals)
p.getWeaponImage = function(frame)
local weapon = frame.args[1]
local power = 10^decimals
return math.floor(number * power) / power
for k, v in pairs(weapons_table) do
end
if v['name'] == weapon then

image = v['name']
function percent(number)
end
return round((number - 1) * 100, 2) .. "%"
end

function choose(var, default)
if var ~= nil then
return var
end
end
return default
image = "veloren_" .. image .. ".png"
return image
end
end


function get_info(weapon_name, field, default)
p.getWeaponName = function(frame)
local weapon = frame.args[1]
for k, v in pairs(weapons_table) do
for k, v in pairs(weapons_table) do
if v['name'] == weapon then
if v['name'] == weapon_name then
return choose(v[field], default)
name = v['name']
end
end
end
end
return name
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
end


p.getWeaponPath = function(frame)
p.getWeaponPath = function(frame)
local weapon = frame.args[1]
local weapon_name = frame.args[1]
local value = get_info(weapon_name, 'path', nil)
for k, v in pairs(weapons_table) do
return value
if v['path'] == weapon then
path = v['path']
end
end
return path
end
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 weapon = frame.args[1]
local name = frame.args[1]
for k, v in pairs(weapons_table) do
for k, v in pairs(weapons_table) do
if v['name'] == weapon then
if v['name'] == name then
image = v['name']
image = name
name = v['name']
path = choose(v['path'], nil)
w_type = v['type']
quality = choose(v['quality'], 'Common')
path = v['path']
desc = choose(v['desc'], nil)
quality = v['quality']
damage = v['damage'] * 10
damage = choose(v['damage'], 0)
speed = v['speed']
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 .. '%'} }
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
Cookies help us deliver our services. By using our services, you agree to our use of cookies.