Módulo:Ushabti

De RuneScape Wiki
Ir para: navegação, pesquisa
Documentação do módulo
Esta documentação é transcluída de Predefinição:Sem documentação/doc. [editar] [atualizar]
Este módulo não possui nenhuma documentação. Por favor, considere adicionar uma documentação em Módulo:Ushabti/doc. [editar]
Módulo:Ushabti's a função list é invocada por Predefinição:Calculadora Ushabti.
Módulo:Ushabti's a função main é invocada por Predefinição:Ushabti calc.
Módulo:Ushabti requer Módulo:Yesno.
Módulo:Ushabti carrega dados de Módulo:Ushabti/data.

local data = mw.loadData('Módulo:Ushabti/data')
local yn = require('Módulo:Yesno')
local lang = mw.getContentLanguage()
local p = {}

function p.main(frame)
	return p._main(frame:getParent().args)
end

function p._main(args)
	local player_level = math.floor(tonumber(args.level) or 1)
	local _monster_name = args.monstername or ''
	_monster_name = _monster_name:gsub('&', "&"):gsub('&#0?39;', "'")
	local monster_name
	local monster_data = data[_monster_name]
	local monster_level
	if monster_data then
		monster_level = monster_data[1]
		monster_name = monster_data.name or _monster_name.."'s"
	else
		monster_name = 'Monstro'
		monster_level = math.floor(tonumber(args.monster) or 1)
	end
	local on_task_raw = yn(args.task)
	local on_task = player_level >= 120 or on_task_raw
	local corrupted_helm = yn(args.helm)
	local cursed_ushabti = yn(args.cursed)
	local summer_weekend = yn(args.summer)
	
	local buffs = {string.format("* Seu nível de Extermínio: %s; Nível de Extermínio de %s: %s; Diferença de níveis: %s", player_level, monster_name, monster_level,player_level-monster_level)}
	if monster_data then
		if monster_data.fake then
			table.insert(buffs, "** Este monstro usa um nível diferente (dado acima) para o requisito normal ao calcular a chance de captura de alma")
		end
	else
		table.insert(buffs, "** Usando o nível personalizado de extermínio de monstros fornecidos")
	end
		
	
	local chance
	if player_level < monster_level then
		chance = 1000
	else 
		chance = math.pow(player_level - monster_level, 2) * 5
	end
	
	chance = math.max(1000, chance)
	table.insert(buffs, '* Alvo base: '..chance)
	
	if on_task then
		if player_level >= 120 then
			table.insert(buffs, '* Com nível 120 de Extermínio, então conta como em tarefa: o alvo não é alterado')
		else
			table.insert(buffs, '* Você está em tarefa: o alvo não é alterado')
		end
		if corrupted_helm then
			chance = math.floor(chance * 1.05)
			table.insert(buffs, '* Você está na tarefa com um elmo do exterminador corrompido: o alvo está agora '..chance)
		end
	else
		chance = math.max(1000, math.floor(chance/2))
		table.insert(buffs, '* Você não está na tarefa e não possuí nível 120 de Extermínio: o alvo está agora '..chance)
	end
	
	if cursed_ushabti then
		chance = math.floor(chance * 1.5)
		table.insert(buffs, '* Você está usando um ushabti amaldiçoado: o alvo é agora '..chance)
	end
	
	if summer_weekend then
		chance = math.floor(chance * 1.1)
		table.insert(buffs, '* Você está matando durante o Fim de Semana Festivo: o alvo é agora '..chance)
	end
	
	table.insert(buffs, '* Depois de todas as verificações, a meta final é '..chance)
	
	
	return string.format('Sua chance de obter essa alma é de %s/500,000 (%s%%, %s1/%s) com os seguintes benefícios:\n%s', lang:formatNum(chance), 100*chance/500000, (500000/chance == math.floor(500000/chance) and '' or '≈'), math.floor(500000/chance), table.concat(buffs, '\n'))
end

function p.list()
	local l = {}
	for k,v in pairs(data) do
		table.insert(l, k)
	end
	table.sort(l)
	return table.concat(l, ',')
end

return p