[dismiss]
The wiki is currently a work in progress. If you'd like to help out, please check the Community Portal and our getting started guide. Also, check out our sister project on poewiki.net.
Module:Quest: Difference between revisions
Jump to navigation
Jump to search
>TheFrz mNo edit summary |
>TheFrz mNo edit summary |
||
Line 45: | Line 45: | ||
----- | ----- | ||
local create_quest_row = function(tbl, | local create_quest_row = function(tbl, header, content) | ||
if content == nil then | if content == nil then | ||
content = '' | content = '' | ||
Line 51: | Line 51: | ||
tbl | tbl | ||
:tag('tr') | :tag('tr') | ||
:tag('th'):wikitext( | :tag('th'):wikitext(header .. ' '):done() | ||
:tag('td'):wikitext(content) | :tag('td'):wikitext(content) | ||
end | end | ||
Line 103: | Line 103: | ||
rtext = 'Yes' | rtext = 'Yes' | ||
end | end | ||
create_quest_row(tbl, 'Required | create_quest_row(tbl, 'Required', rtext) | ||
for _, v in pairs({'Start | for _, v in pairs({'Start', 'Objective', 'Completion'}) do | ||
create_quest_row(tbl, v, args[string.lower(v)]) | create_quest_row(tbl, v, args[string.lower(v)]) | ||
end | end | ||
Line 114: | Line 114: | ||
boss_links[#boss_links + 1] = create_boss_link(args, tostring(i)) .. '<br>' | boss_links[#boss_links + 1] = create_boss_link(args, tostring(i)) .. '<br>' | ||
end | end | ||
create_quest_row(tbl, 'Boss | create_quest_row(tbl, 'Boss', table.concat(boss_links)) | ||
elseif type(args.boss) == 'string' then | elseif type(args.boss) == 'string' then | ||
create_quest_row(tbl, 'Boss | create_quest_row(tbl, 'Boss', create_boss_link(args, '')) | ||
end | end | ||
Revision as of 13:44, 3 January 2017
This module implements {{Quest}}
and {{Quest list}}
The above documentation is transcluded from Module:Quest/doc.
Editors can experiment in this module's sandbox and testcases pages.
Subpages of this module.
Editors can experiment in this module's sandbox and testcases pages.
Subpages of this module.
local getArgs = require('Module:Arguments').getArgs
local util = require('Module:Util')
local p = {}
-----
------------------------------------------------------------------------------------------------------
-- Template: Quest
p.quest = function(frame)
local args = getArgs(frame, {parentFirst = true})
local g_frame = util.misc.get_frame(frame)
-----
local args_format_boss = function(args, key)
local boss_key = 'boss' .. key
local link_key = boss_key .. '_link'
local image_key = boss_key .. '_image'
if args[boss_key] == nil then
error('Multiple bosses, but ' .. boss_key .. ' is empty')
end
args[link_key] = args[link_key] or args[boss_key]
args[image_key] = args[image_key] or args[boss_key] .. '.png'
return args
end
-----
local create_boss_link = function(args, key)
local boss_key = 'boss' .. key
local link_key = boss_key .. '_link'
local image_key = boss_key .. '_image'
local link = string.format('[[%s|%s]]<br>', args[link_key], args[boss_key])
local image = string.format('[[File:%s|alt=%s]]', args[image_key], args[boss_key])
return link .. image
end
-----
local create_quest_row = function(tbl, header, content)
if content == nil then
content = ''
end
tbl
:tag('tr')
:tag('th'):wikitext(header .. ' '):done()
:tag('td'):wikitext(content)
end
-----
--
-- Args
--
if args.name == nil or string.len(args.name) == 0 then
error('Name is required')
end
-- convert metatable props to table props
args.icon = args.icon or args.name .. ' quest icon.png'
args.required = util.cast.boolean(args.required)
args.key_item = args.key_item
args.start = args.start
args.objective = args.objective
args.completion = args.completion
if args.boss then
local n = tonumber(args.boss)
-- The number of bosses were given
if n then
args.boss = n
for i = 1, n do
args = args_format_boss(args, tostring(i))
end
else
args = args_format_boss(args, '')
end
end
--
-- Formatting
--
local tbl = mw.html.create('table')
tbl
:attr('class', 'quest-table')
:tag('tr')
:tag('td')
:attr('class', 'quest-table-iconbox')
:attr('colspan', 2)
:wikitext(string.format('%s<br>[[File:%s|alt=%s]]', args.name, args.icon, args.icon))
local rtext = 'No'
if args.required then
rtext = 'Yes'
end
create_quest_row(tbl, 'Required', rtext)
for _, v in pairs({'Start', 'Objective', 'Completion'}) do
create_quest_row(tbl, v, args[string.lower(v)])
end
if type(args.boss) == 'number' then
local boss_links = {}
for i = 1, args.boss do
boss_links[#boss_links + 1] = create_boss_link(args, tostring(i)) .. '<br>'
end
create_quest_row(tbl, 'Boss', table.concat(boss_links))
elseif type(args.boss) == 'string' then
create_quest_row(tbl, 'Boss', create_boss_link(args, ''))
end
if args.key_item then
create_quest_row(tbl, 'Key Item ', args.key_item)
end
return tostring(tbl)
end
-----
return p