Please note that some information on this wiki is still based on the demo version.
If you notice any errors, feel free to correct them.

Module:MonsterOnDay: Difference between revisions

From Super Fantasy Kingdom Official Wiki
wgg>Cadaei
args handling
wgg>Cadaei
args fix, curse index fix
Line 11: Line 11:
function p.calculate(f)
function p.calculate(f)
local args = f:getParent().args
local args = f:getParent().args
local rank = tonumber(args['1'])
local rank = tonumber(args[1])
if rank == nil then
if rank == nil then
return (args['1'] or 'nil') .. ' is not a valid number for a appearance rank'
return (args[1] or 'nil') .. ' is not a valid number for a appearance rank'
end
end
Line 20: Line 20:
local dayRows = {}
local dayRows = {}
for curse,_ in ipairs(displayDaysForCurse) do
for _,curse in ipairs(displayDaysForCurse) do
local dayForCurse = rank - curse
local dayForCurse = rank - curse
-- bosses appear on day 7 and 14, the monster day then is one day later
-- bosses appear on day 7 and 14, the monster day then is one day later
Line 27: Line 27:
if dayForCurse < 1 then dayForCurse = '-' end
if dayForCurse < 1 then dayForCurse = '-' end
table.insert(dayRows, '<tr><td>[[File:Curse.png|16x16px|link=Curse]] [[Curse|C'..curse..']]</td><td>'..dayForCurse..'</td></tr>')
table.insert(dayRows, '<tr><td>[[File:Curse.png|16x16px|link=Curse]] [[Curse|C'..curse..']]</td><td class="right">'..dayForCurse..'</td></tr>')
end
end
return '<table class=plaintable">'..table(concat, '')..'</table'
return '<table class=plaintable">'..table.concat(dayRows, '')..'</table'
end
end


return p
return p

Revision as of 13:36, 11 November 2023

Calculates on which days a monster appears first when the monster appearing rank is given (the day on the first appearance on curse 0 ignoring offsets by bosses) depending on on the curse level and the fixed boss days.

  • When a monster on curse 0 appears first on day 1 the rank is 1
  • When a monster on curse 0 appears first on day 8 the rank is 7 because the boss on day 7 is fixed without rank
{{MonsterOnDay|9}}
</table
C010
C19
C28
C36
C45
C54
-- calculates on which days a monster appears first
-- when the monster appearing rank is given (the day on the first appearance on curse 0 ignoring offsets by bosses)
-- depending on
-- on the curse level and
-- the fixed boss days
-- e.g. when a monster on curse 0 appears first on day 1 the rank is 1
-- e.g. when a monster on curse 0 appears first on day 8 the rank is 7 because the boss on day 7 is fixed without rank

local p = {}

function p.calculate(f)
	local args = f:getParent().args
	local rank = tonumber(args[1])
	if rank == nil then
		return (args[1] or 'nil') .. ' is not a valid number for a appearance rank'
	end
	
	local displayDaysForCurse = {0, 1, 2, 3, 4, 5}
	
	local dayRows = {}
	
	for _,curse in ipairs(displayDaysForCurse) do
		local dayForCurse = rank - curse
		-- bosses appear on day 7 and 14, the monster day then is one day later
		if dayForCurse >= 7 then dayForCurse = dayForCurse + 1 end
		if dayForCurse >= 14 then dayForCurse = dayForCurse + 1 end
		if dayForCurse < 1 then dayForCurse = '-' end
		
		table.insert(dayRows, '<tr><td>[[File:Curse.png|16x16px|link=Curse]] [[Curse|C'..curse..']]</td><td class="right">'..dayForCurse..'</td></tr>')
	end
	
	return '<table class=plaintable">'..table.concat(dayRows, '')..'</table'
end

return p