[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 26: | Line 26: | ||
args[link_key] = args[link_key] or args[boss_key] | args[link_key] = args[link_key] or args[boss_key] | ||
args[image_key] = args[image_key] or args[boss_key] .. '.png' | args[image_key] = args[image_key] or args[boss_key] .. '.png' | ||
return args | return args | ||
end | end | ||
Line 36: | Line 36: | ||
local link_key = boss_key .. '_link' | local link_key = boss_key .. '_link' | ||
local image_key = boss_key .. '_image' | local image_key = boss_key .. '_image' | ||
local link = string.format('[[%s|%s]]<br>', args[link_key], args[boss_key]) | 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]) | local image = string.format('[[File:%s|alt=%s]]', args[image_key], args[boss_key]) | ||
return link .. image | return link .. image | ||
end | end | ||
Line 65: | Line 65: | ||
end | end | ||
-- convert metatable props to table props | |||
args.icon = args.icon or args.name .. ' quest icon.png' | args.icon = args.icon or args.name .. ' quest icon.png' | ||
args.required = util.cast.boolean(args.required) | 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 | if args.boss then |
Revision as of 13:41, 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, head, content)
if content == nil then
content = ''
end
tbl
:tag('tr')
:tag('th'):wikitext(head):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