Module:QuestList: Difference between revisions

From Brighter Shores Wiki
Jump to navigation Jump to search
Content added Content deleted
mNo edit summary
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 30: Line 30:
:addClass('wikitable quest-table align-center-2 align-center-3 align-left-4')
:addClass('wikitable quest-table align-center-2 align-center-3 align-left-4')
:css{
:css{
['width'] = '55%'
['width'] = '65%'
}
}
:attr{ cellspacing = '3' }
:attr{ cellspacing = '3' }
Line 68: Line 68:
'?Requirements',
'?Requirements',
'order=asc',
'order=asc',
'sort=Quest type,override_seq,Difficulty'
'sort=Quest type,Episode_nth,Difficulty'
}
}

Latest revision as of 16:59, 18 December 2024

Documentation for this module may be created at Module:QuestList/doc

require('strict')
require('Module:Mw.html extension')
local purge = require('Module:Purge')._purge
local parse = require('Module:Param Parse')

local p = {}

function p.main(frame)
	local args = frame:getParent().args

	-- get all episodes by episode sequence order --
	local episodes = mw.smw.ask{ 
		'[[Category:Episodes]]',
		('[[Name::%s]]'):format( args.episode or '+' ),
		'[[Episode sequence number::+]]',
		'[[Release Date::+]]',
		'?Name#-',
		'?Premium',
		'order=asc',
		'sort=Episode sequence number',
		'link=none',
		'format=plainlist'
	}
	
	local table = mw.html.create('table')
	if (episodes == nil) then
		table:wikitext("No quests available for " .. args.episode .. " " .. purge('source-'..mw.uri.anchorEncode(args.episode), '(update)', 'span'))
	else
		table
			:addClass('wikitable quest-table align-center-2 align-center-3 align-left-4')
			:css{
				['width'] = '65%'
			}
			:attr{ cellspacing = '3' }
			
			for _, episode in ipairs(episodes) do
				table
					:tag('tr')
						:tag('th')
						:attr('colspan', 4)
							:wikitextIf(episode.Premium == true, '[[File:Premium Pass icon.png|16px]] ')
							:wikitext('[[File:'.. episode.Name ..' episode icon.png|16px]] ' .. episode[1])
						:done()
					:done()
					:tag('tr')
						:tag('th')
							:wikitext('Quest')
						:done()
						:tag('th')
							:wikitext('Type')
						:done()
						:tag('th')
							:wikitext('Difficulty')
						:done()
						:tag('th')
							:wikitext('Requirements')
						:done()
					:done()
					
					if ( episode ) then
						-- get all quests for episode --
						local quests = mw.smw.ask{ 
							'[[Category:Quests]]',
							'[[Name::+]]',
							('[[Episode::%s]]'):format( episode.Name ),
							'?Quest type',
							'?Difficulty',
							'?Requirements',
							'order=asc',
							'sort=Quest type,Episode_nth,Difficulty'
						}
						
						if ( quests ) then
							-- get quests for episode --
							for _, quest in ipairs( quests ) do
								table
									:tag('tr')
										:tag('td')
											:wikitext( quest[1] )
										:done()
										:tag('td')
											:css {
												['width'] = '50px'
											}
											:wikitext( quest['Quest type'] )
										:done()
										:tag('td')
											:wikitext( parse.difficulty_func( tostring(quest.Difficulty ) ) )
										:done()
										:tag('td')
											:css {
												['width'] = '55%'
											}
											:tag('div')
												:addClass('lighttable checklist')
												:newline()
												:wikitext( quest.Requirements )
												:newline()
											:done()
										:done()
									:done()
							end
						end
					end
			end
			
			table:done()
	end
	
	return table

end

return p