Módulo:Detalhes de Missão

De RuneScape Wiki
Ir para: navegação, pesquisa

A documentação para este módulo pode ser criada em Módulo:Detalhes de Missão/doc

-- <pre>
-- {{Quest details}}
--

local p = {}
local yesno = require( 'Module:Yesno' )
local onmain = require('Module:Mainonly').on_main()
    
local difficulties = {
    nenhum = 'Nenhum',
    tutorial = '[[Arquivo:Principiante.svg|7px|Tutorial|link=]] Tutorial',
    principiante = '[[Arquivo:Principiante.svg|7px|Principiante|link=]] Principiante',
    ['1'] = '[[Arquivo:Principiante.svg|7px|Principiante|link=]] Principiante',
    intermediario = '[[Arquivo:Intermediário.svg|7px|Intermediário|link=]] Intermediário',
    ['intermediário'] = '[[Arquivo:Intermediário.svg|7px|Intermediário|link=]] Intermediário',
    ['2'] = '[[Arquivo:Intermediário.svg|7px|Intermediário|link=]] Intermediário',
    experiente = '[[Arquivo:Experiente.svg|7px|Experiente|link=]] Experiente',
    ['3'] = '[[Arquivo:Experiente.svg|7px|Experiente|link=]] Experiente',
    mestre = '[[Arquivo:Mestre.svg|7px|Mestre|link=]] Mestre',
    ['4'] = '[[Arquivo:Mestre.svg|7px|Mestre|link=]] Mestre',
    ['grão-mestre'] = '[[Arquivo:Grão-Mestre.svg|7px|Grão-Mestre|link=]] Grão-Mestre',
    ['Grão-Mestre'] = '[[Arquivo:Grão-Mestre.svg|7px|Grão-Mestre|link=]] Grão-Mestre',
    ['5'] = '[[Arquivo:Grão-Mestre.svg|7px|Grão-Mestre|link=]] Grão-Mestre',
    especial = '[[Arquivo:Especial.svg|7px|Especial|link=]] Especial'
}
    
function p.details( frame )
    local _args = frame:getParent().args
    local tbl = mw.html.create( 'table' )
        :addClass( 'questdetails plainlinks' )
        -- @todo replace with CSS
        :attr( 'cellspacing',  '3' )
    local title = mw.uri.fullUrl( mw.title.getCurrentTitle().fullText, { action = 'edit' } )
    local unknown = 'Desconhecido <small>[' .. tostring( title ) .. ' editar]</small>'
    local args = {}
    
    for k, v in pairs(_args) do
        if v ~= '' then
            args[k] = v
        end
    end
        
	local icon = '[[Arquivo:' .. (args['ícone'] or mw.title.getCurrentTitle().text .. ' ícone.png') .. '|50px|right]]'
    local start = args['início'] or unknown
    local membros = yesno( args.membros ) and '[[Arquivo:P2P ícone.png|30px|link=]] Somente para membros' or
        -- check it's actually set to something false-y
        yesno( args.membros ) == false and '[[Arquivo:F2P ícone.png|30px|link=]] Jogadores gratuitos' or unknown
    local dificuldade = difficulties[mw.ustring.lower(args.dificuldade or '')] or unknown
    local length = args['duração'] or unknown
    local reqs = args.requisitos or '* Nenhum'
    local objetos = args.objetos or '* Nenhum'
    local inimigos = args.inimigos or '* Nenhum'
    local checklist = objetos
    if objetos ~= '* Nenhum' then
    	checklist = '<div class="lighttable checklist">\n'..objetos..'</div>' --frame:expandTemplate{ title = 'Checklist', args = { objetos } }
    end
        
    tbl
        :tag( 'tr' )
            :tag( 'th' )
                :addClass( 'questdetails-header' )
                :wikitext( 'Ponto de início' )
                :done()
            :tag( 'td' )
                :addClass( 'questdetails-info' )
                :wikitext( '[[Arquivo:Ícone_de_missão_mapa.png|17px|link=]] ' .. icon .. start )
                :done()
            :done()
        :tag( 'tr' )
            :tag( 'th' )
                :addClass( 'questdetails-header' )
                :wikitext( 'Membros?' )
                :done()
            :tag( 'td' )
                :addClass( 'questdetails-info' )
                :wikitext( membros )
                :done()
            :done()
        :tag( 'tr' )
            :tag( 'th' )
                :addClass( 'questdetails-header' )
                :wikitext( 'Dificuldade Oficial' )
                :done()
            :tag( 'td' )
                :addClass( 'questdetails-info' )
                :wikitext( dificuldade )
                :done()
            :done()
        :tag( 'tr' )
            :tag( 'th' )
                :addClass( 'questdetails-header' )
                :wikitext( 'Duração Oficial' )
                :done()
            :tag( 'td' )
                :addClass( 'questdetails-info' )
                :wikitext( length )
                :done()
            :done()
        :tag( 'tr' )
            :tag( 'th' )
                :addClass( 'questdetails-header' )
                :wikitext( 'Requisitos' )
                :done()
            :tag( 'td' )
                :addClass( 'questdetails-info' )
                :addClass( 'qc-active' )
                :tag( 'i' )
                    :wikitext( 'Requisitos de habilidades não podem ser impulsionados a não ser que estejam marcados com um [B].' )
                    :done()
                :newline():newline()
                :wikitext( reqs )
                :done()
            :done()
        :tag( 'tr' )
            :tag( 'th' )
                :addClass( 'questdetails-header' )
                :wikitext( 'Objetos Necessários' )
                :done()
            :tag( 'td' )
                :addClass( 'questdetails-info' )
                :tag( 'i' )
                    :wikitext( 'Itens do [[porta-ferramentas]] não estão listados a não ser que não funcionem ou não sejam automaticamente adicionados.' )
                    :done()
                :newline():newline()
                :wikitext( checklist )
                :done()
            :done()
    
    if args.recomendado ~= nil and yesno( args.recomendado ) ~= false then
        tbl
            :tag( 'tr' )
                :tag( 'th' )
                    :addClass( 'questdetails-header' )
                    :wikitext( 'Recomendados' )
                    :done()
                :tag( 'td' )
                    :addClass( 'questdetails-info' )
                	:addClass( 'qc-active' )
                    :newline():newline()
                    :wikitext( '<div class="lighttable checklist">\n'..args.recomendado..'</div>') -- frame:expandTemplate{ title = 'Checklist', args = { args.recomendado } } )
                    :done()
                :done()
    end
    
    tbl
        :tag( 'tr' )
            :tag( 'th' )
                :addClass( 'questdetails-header' )
                :wikitext( 'Inimigos' )
                :done()
            :tag( 'td' )
                :addClass( 'questdetails-info' )
                :newline():newline()
                :wikitext( inimigos )
                :done()
            :done()

    return tostring( tbl ) .. smw(frame,_args)
end

function smw(frame,args)
	if not onmain then
		return ''
	end
	-- more to come
	local err = mw.html.create('div')
	err:addClass('hidden'):css('display','none')
	local haserr = false
	local info = ''
	local smwJSON = {
		name = mw.title.getCurrentTitle().text,
		dificuldade = difficulties[mw.ustring.lower(args.dificuldade or '')],
		start = args['início'] or nil,
		length = args['duração'] or nil,
		requisitos = args.requisitos or 'Nenhum',
		objetos = args.objetos or 'Nenhum',
		inimigos = args.inimigos or 'Nenhum',
		membros = yesno(args.membros,false)
	}
	local jsongood, encsmwJSON = pcall(mw.text.jsonEncode, smwJSON)
	
	if jsongood then
		-- for easier debug, please do not remove
		encsmwJSON = mw.text.nowiki(mw.text.killMarkers(encsmwJSON))
		local div = mw.html.create('div')
		div	:addClass('hidden')
			:css('display', 'none')
			:wikitext('[[Quest JSON::'..encsmwJSON..']]')
		info = frame:preprocess(tostring(div))
	else
		haserr = true
		err:wikitext('Error setting SMW JSON, string: ' .. mw.dumpObject(smwJSON))
	end
	if not haserr then
		err = ''
	end
	
	-- Set other smw values
	local smw = {
		['Dificuldade Oficial'] = args.dificuldade or nil,
		['Somente para membros'] = yesno(args.membros,false),
		['Duração Oficial'] = args['duração'] or nil,
	}
	local smwstat = mw.smw.set(smw)
	if not smwstat == true then
		err = err .. ' ' .. smwstat.error
	end
	
	return tostring(info) .. tostring(err)
end

return p