warframe

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

---	'''Missions/page''' builds the mission pages.
--
--	@module		Missions
--	@alias		p
--	@author		[[User:Cephalon Scientia|Cephalon Scientia]]
--	@image		
--	@require	[[Module:Missions/infobox]]
--	@require	[[Module:Missions/data]]
--	@require	[[Module:DropTables]]
--	@release	stable
--	<nowiki>
local MissionInfobox = require([[Module:Missions/infobox]])
local MissionData = mw.loadData([[Module:Missions/data]])
local MissionTypesData = MissionData["MissionTypes"]
local DropTable = require([[Module:DropTables]])

return {
---	Builds mission node page.
--	@function		p.buildMissionPage
--	@param			{table} frame Frame object
--	@return			{string} Wikitext result of page
buildMissionPage = function(frame)
	local infobox = MissionInfobox.buildInfobox(frame)
	
	local name = mw.text.decode(frame.args["Name"])
	local missionEntry = MissionData.by.Name[name][1]
	frame.args[1] = missionEntry.DropTableAlias
	
	-- Rare instance of using protected call b/c some missions don't have reward table associated
	-- asserts are in upstream functions to catch missing reward table entries or misnamed reward table aliases
	local success1, rewardTable = pcall(DropTable.getRewardTable, frame)
	local success2, relatedMissionsWithSameRewards = pcall(DropTable.getMissionList, frame)
	
	frame.args[1] = missionEntry.ExtraDropTableAlias
	local success3, extraRewardTable = pcall(DropTable.getRewardTable, frame)
	
	frame.args[1] = missionEntry.CacheDropTableAlias
	local success4, cacheRewardTable = pcall(DropTable.getRewardTable, frame)
	
	local pageTemplate = [=[
%s
'''%s''' is %s [[%s|%s]] [[Mission]] node on [[%s]].
__TOC__
<div style="clear:both;"></div>
==Mission Rewards==
%s
===Similar Missions With Same Reward Pool===
%s

==Extra End-Of-Mission Reward==
%s

==[[Resource Cache]] Rewards==
%s

==Mission Transmissions==
See [[%s]].]=]

	return pageTemplate:format(
			infobox, 
			name, missionEntry.Type:match'^[AEIOUaeiou]' and 'an' or 'a', MissionTypesData[missionEntry.Type].Link, missionEntry.Type, missionEntry.Planet,
			success1 and rewardTable or 'No end-of-mission or rotation reward table associated.',
			success2 and relatedMissionsWithSameRewards or 'N/A',
			success3 and extraRewardTable or 'No extra end-of-mission reward associated.',
			success4 and cacheRewardTable or 'No [[Resource Cache]] reward table associated.',
			missionEntry.Quotes and missionEntry.Quotes or 'No mission transmissions associated.'
		)
end
}