Módulo:Ushabti
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('�?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