Module:Lamp calculator

This is the current revision of this page, as edited by Alex (talk | contribs) at 00:24, 16 October 2024 (Created page with "local p = {} local experience = require('Module:Experience') local paramTest = require('Module:Paramtest') local scaledExperience = require('Module:ScaledExperience') local scp = require('Module:SCP')._main local addCommas = require('Module:Addcommas')._add function p.buildTable(skill, itemData) local ret = '' for i, itemTable in ipairs(itemData) do local tabl = mw.html.create('table'):addClass('wikitable'):done() tabl:tag('tr'):tag('th'):wikitext('[[File:'.. it..."). The present address (URL) is a permanent link to this version.

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Module documentation
This documentation is transcluded from Template:No documentation/doc. [edit] [history] [purge]
This module does not have any documentation. Please consider adding documentation at Module:Lamp calculator/doc. [edit]
Module:Lamp calculator's function main is invoked by Calculator:Genie lamps and Books of knowledge/Template.
Module:Lamp calculator requires Module:Addcommas.
Module:Lamp calculator requires Module:Experience.
Module:Lamp calculator requires Module:Paramtest.
Module:Lamp calculator requires Module:SCP.
Module:Lamp calculator requires Module:ScaledExperience.

local p = {}

local experience = require('Module:Experience')
local paramTest = require('Module:Paramtest')
local scaledExperience = require('Module:ScaledExperience')
local scp = require('Module:SCP')._main
local addCommas = require('Module:Addcommas')._add

function p.buildTable(skill, itemData)
	local ret = ''

	for i, itemTable in ipairs(itemData) do
		local tabl = mw.html.create('table'):addClass('wikitable'):done()
		tabl:tag('tr'):tag('th'):wikitext('[[File:'.. itemTable.file .. '|link=' .. itemTable.link .. ']] [[' .. itemTable.link .. '|' .. itemTable.name .. ']] required:'):attr('colspan', 2):done()
		:tag('td'):wikitext(addCommas(itemTable.data.endActions)):attr('colspan', 2):done()
		
		tabl:tag('tr'):tag('th'):wikitext(scp(skill, nil, 'yes')):done()
		:tag('th'):wikitext('Start'):done()
		:tag('th'):wikitext('End'):done()
		:tag('th'):wikitext('Earned'):done()
		
		tabl:tag('tr'):tag('th'):wikitext('Experience'):done()
		:tag('td'):wikitext(addCommas(itemTable.data.startingExp)):done()
		:tag('td'):wikitext(addCommas(itemTable.data.endExp)):done()
		:tag('td'):wikitext(addCommas(itemTable.data.endExp - itemTable.data.startingExp)):done()
		
		tabl:tag('tr'):tag('th'):wikitext('Level'):done()
		:tag('td'):wikitext(itemTable.data.startingLevel):done()
		:tag('td'):wikitext(itemTable.data.endLevel):done()
		:tag('td'):wikitext(itemTable.data.endLevel - itemTable.data.startingLevel):done()
		
		ret = ret .. tostring(tabl)
	end
	
	return tostring(ret)
end

function p._main(args)
	local skill = args.skill
	local inputType, currentLevel, currentExperience = args.inputType, tonumber(args.currentLevel), tonumber(args.currentExperience)
	local targetType, targetLevel, targetExperience = args.targetType, tonumber(args.targetLevel), tonumber(args.targetExperience)
	local leagueMultiplier = args.leagueMultiplier or 1
	
	-- Get the currentExperience at the current level
	if(inputType == 'Level') then
		currentExperience = experience.xp_at_level_unr({args = {currentLevel}})
	end
	
	-- Get the targetExperience at the target level
	if(targetType == 'Level') then
		targetExperience = experience.xp_at_level_unr({args = {targetLevel}})
	end

	-- Lamp multiplier: 10, Book multiplier: 15
	local lampData = scaledExperience.xp_to_xp_actions(currentExperience, targetExperience, (10 * leagueMultiplier))
	local bookData = scaledExperience.xp_to_xp_actions(currentExperience, targetExperience, (15 * leagueMultiplier))
	
	-- ['data'] is a table of 5 values endExp, endActions, endLevel, startingExp, startingLevel
	itemData = {
		{
			['name'] = 'Lamps',
			['link'] = 'Lamp',
			['file'] = 'Lamp.png',
			['data'] = lampData,
		},
		{
			['name'] = 'Books',
			['link'] = 'Book_of_knowledge',
			['file'] = 'Book_of_knowledge.png',
			['data'] = bookData,
		}
	}
	
	return p.buildTable(skill, itemData)
end

function p.main(frame)
	--mw.logObject(frame)
	local args = frame:getParent().args
	return p._main(args)
end

return p