La documentación para este módulo puede ser creada en Módulo:Otros datos/doc
local p = {}
--[[
{{#invoke:module|p.pasoseclosion|generacion=generación|eclosión=nº de pasos}}
--]]
function p.pasoseclosion( frame )
local ngeneracion = tonumber( frame.args['generación'] or '1' )
local eclosion = frame.args['eclosión'] or ''
local neclosion = tonumber( mw.ustring.gsub( eclosion, '[^0-9]', '' ), 10 )
local nciclos = 0
local npasosmin = 0
local npasosmax = 0
if not neclosion or not ngeneracion then
return ''
end
-- Conversiones
-- Número de ciclos +1 (por ejemplo, 6 en vez de 5)
if neclosion <= 121 and ( neclosion - 1 ) % 5 == 0 then
neclosion = neclosion - 1
end
-- Número hasta 120: Será el número de ciclos, pero debe ser divisible entre 5
if neclosion <= 120 then
if neclosion % 5 == 0 then
nciclos = neclosion
end
elseif neclosion % 256 == 0 then -- 1280, 2560, etc
nciclos = neclosion / 256
elseif neclosion % 255 == 0 and ( ( neclosion / 255 ) - 1 ) % 5 == 0 then -- 1530, 2805, etc
nciclos = ( neclosion / 255 ) - 1
end
if nciclos == 0 then
return '[[Categoría:Plantillas con parámetros incorrectos|Otros datos]]'
end
-- Los valores más grandes son de gen 3, seguidos de 4, 5-6 y 7
npasosmin = nciclos * 256 -- Caso gen 7
if ngeneracion == 4 then
npasosmax = ( nciclos + 1 ) * 255
elseif ngeneracion <= 3 then
npasosmax = ( nciclos + 1 ) * 256
end
-- Si es de la gen 5 a 7 mostrar solo un número
if ngeneracion >= 5 then
return string.format( '%s ciclos: %s', nciclos, nciclos * 256 )
end
return string.format( '%s ciclos: %s - %s', nciclos, npasosmin, npasosmax )
end
-- Para usar desde la consola directamente, pasándole como argumentos los que recibiría la plantilla
function p.console1( generacion, eclosion )
local frame = {
args = { ['generación'] = generacion, ['eclosión'] = eclosion }
}
table.insert(frame.args, '')
return p.pasoseclosion( frame )
end
return p