Module:Weapon: Difference between revisions

From Veloren Wiki
Content added Content deleted
No edit summary
No edit summary
Line 35: Line 35:
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 then
poise = (v['poise']-1) * 10
if v['poise'] == nil then v['poise'] = 1 end
poise = (v['poise']-1) * 100
end
end
end
end
Line 43: Line 44:
p.getWeaponRange = function(frame)
p.getWeaponRange = function(frame)
local weapon = frame.args[1]
local weapon = frame.args[1]
local range = 0
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 then
if v['range'] ~= nil then range = (v['range']-1) * 10 end
if v['range'] == nil then v['range'] = 1 end
range = (v['range']-1) * 100
end
end
end
end
Line 54: Line 55:
p.getWeaponEnergy = function(frame)
p.getWeaponEnergy = function(frame)
local weapon = frame.args[1]
local weapon = frame.args[1]
local energy = 0
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 then
if v['energy'] ~= nil then energy = (v['energy']-1) * 10 end
if v['energy'] == nil then v['energy'] = 1 end
energy = (v['energy']-1) * 100
end
end
end
end
Line 65: Line 66:
p.getWeaponBuff = function(frame)
p.getWeaponBuff = function(frame)
local weapon = frame.args[1]
local weapon = frame.args[1]
local buff = 0
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 then
if v['buff'] ~= nil then buff = (v['buff']-1) * 10 end
if v['buff'] == nil then v['buff'] = 1 end
buff = (v['buff']-1) * 100
end
end
end
end
Line 78: Line 79:
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 then
if v['critchance'] == nil then v['critchance'] = 0 end
critchance = v['critchance'] * 100
critchance = v['critchance'] * 100
end
end
Line 128: Line 130:
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 then
if v['power'] == nil then v['power'] = 0 end
damage = v['power'] * 10
damage = v['power'] * 10
end
end
Line 138: Line 141:
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 then
speed = (v['speed']-1)*10
if v['speed'] == nil then v['speed'] = 1 end
speed = (v['speed']-1)*100
end
end
end
end
Line 175: Line 179:
quality = quality,
quality = quality,
rating = rating,
rating = rating,
poise = (poise-1)*10 .. '%',
poise = (poise-1)*100 .. '%',
speed = (speed-1)*10 .. '%',
speed = (speed-1)*100 .. '%',
critchance = critchance*10 .. '%',
critchance = critchance*10 .. '%',
range = (range-1)*10 .. '%',
range = (range-1)*100 .. '%',
energy = (energy-1)*10 .. '%',
energy = (energy-1)*100 .. '%',
buff = (buff-1)*10 .. '%',
buff = (buff-1)*100 .. '%',
} }
} }
return txt
return txt

Revision as of 23:30, 14 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'})

local p = {}

function round(number, decimals)
    local power = 10^decimals
    return math.floor(number * power) / power
end


p.getWeaponImage = function(frame)
	local weapon = frame.args[1]
	for k, v in pairs(weapons_table) do
		if v['name'] == weapon then
			image = v['name']
		end
	end
	image = "Veloren_" .. image .. ".png"
	return image
end


p.getWeaponRating = function(frame)
	local weapon = frame.args[1]
	for k, v in pairs(weapons_table) do
		if v['name'] == weapon then
			rating = v['rating']
		end
	end
	return round(rating, 2) * 10
end

p.getWeaponPoise = function(frame)
	local weapon = frame.args[1]
	for k, v in pairs(weapons_table) do
		if v['name'] == weapon then
			if v['poise'] == nil then v['poise'] = 1 end
			poise = (v['poise']-1) * 100
		end
	end
	return round(poise, 2) .. "%"
end

p.getWeaponRange = function(frame)
	local weapon = frame.args[1]
	for k, v in pairs(weapons_table) do
		if v['name'] == weapon then
			if v['range'] == nil then v['range'] = 1 end
			range = (v['range']-1) * 100
		end
	end
	return round(range, 2) .. "%"
end

p.getWeaponEnergy = function(frame)
	local weapon = frame.args[1]
	for k, v in pairs(weapons_table) do
		if v['name'] == weapon then
			if v['energy'] == nil then v['energy'] = 1 end
			energy = (v['energy']-1) * 100
		end
	end
	return round(energy, 2) .. "%"
end

p.getWeaponBuff = function(frame)
	local weapon = frame.args[1]
	for k, v in pairs(weapons_table) do
		if v['name'] == weapon then
			if v['buff'] == nil then v['buff'] = 1 end
			buff = (v['buff']-1) * 100
		end
	end
	return round(buff, 2) .. "%"
end

p.getWeaponCritChance = function(frame)
	local weapon = frame.args[1]
	for k, v in pairs(weapons_table) do
		if v['name'] == weapon then
			if v['critchance'] == nil then v['critchance'] = 0 end
			critchance = v['critchance'] * 100
		end
	end
	return round(critchance, 2) .. "%"
end

p.getWeaponName = function(frame)
	local weapon = frame.args[1]
	for k, v in pairs(weapons_table) do
		if v['name'] == weapon then
			name = v['name']
		end
	end
	return name
end

p.getWeaponPath = function(frame)
	local weapon = frame.args[1]
	for k, v in pairs(weapons_table) do
		if v['name'] == weapon then
			path = v['path']
		end
	end
	return path
end

p.getWeaponQuality = function(frame)
	local weapon = frame.args[1]
	for k, v in pairs(weapons_table) do
		if v['name'] == weapon then
			quality = v['quality']
		end
	end
	return frame:expandTemplate{ title = quality }
end

p.getWeaponDesc = function(frame)
	local weapon = frame.args[1]
	for k, v in pairs(weapons_table) do
		if v['name'] == weapon then
			desc = v['desc']
		end
	end
	return desc
end

p.getWeaponDamage = function(frame)
	local weapon = frame.args[1]
	for k, v in pairs(weapons_table) do
		if v['name'] == weapon then
			if v['power'] == nil then v['power'] = 0 end
			damage = v['power'] * 10
		end
	end
	return damage
end

p.getWeaponSpeed = function(frame)
	local weapon = frame.args[1]
	for k, v in pairs(weapons_table) do
		if v['name'] == weapon then
			if v['speed'] == nil then v['speed'] = 1 end
			speed = (v['speed']-1)*100
		end
	end
	return round(speed, 2) .. "%"
end

p.getWeapon = function(frame)
	local weapon = frame.args[1]
	for k, v in pairs(weapons_table) do
		if v['name'] == weapon then
			image = v['name']
			name = v['name']
			w_type = v['type']
			path = v['path']
			quality = v['quality']
			damage = v['damage'] * 10
			rating = v['rating']
			poise = v['poise']
			speed = v['speed']
			critchance = v['critchance']
			desc = v['desc']
			
			range = 1
			energy = 1
			buff = 1
			if v['range'] ~= nil then range = v['range'] end
			if v['energy'] ~= nil then energy = v['energy'] end
			if v['buff'] ~= nil then buff = v['buff'] end
		end
	end
	txt = frame:expandTemplate{ title = 'Infobox weapon', args = {
		image = image .. '.png',
		title = name,
		description = desc,
		power = damage,
		quality = quality,
		rating = rating,
		poise = (poise-1)*100 .. '%',
		speed = (speed-1)*100 .. '%',
		critchance = critchance*10 .. '%',
		range = (range-1)*100 .. '%',
		energy = (energy-1)*100 .. '%',
		buff = (buff-1)*100 .. '%',
	} }
	return txt
end

return p
Cookies help us deliver our services. By using our services, you agree to our use of cookies.