<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ASkillChoice</id>
	<title>Module:SkillChoice - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ASkillChoice"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:SkillChoice&amp;action=history"/>
	<updated>2026-05-05T16:27:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:SkillChoice&amp;diff=35150&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;--Quests are organised by least to most cumulative experience; quests with the same experience rewards are organised alphabetically--  local SCP = require(&#039;Module:SCP&#039;)._main local commas = require(&#039;Module:Addcommas&#039;)._add local p = {}  -- -- Example quest structure -- name - Name of the quest -- requirements - String list of skills required for the quest completion (see other examples for SCP usage) -- rewards - Table of information in the following format: experience g...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:SkillChoice&amp;diff=35150&amp;oldid=prev"/>
		<updated>2024-10-16T23:13:08Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;--Quests are organised by least to most cumulative experience; quests with the same experience rewards are organised alphabetically--  local SCP = require(&amp;#039;Module:SCP&amp;#039;)._main local commas = require(&amp;#039;Module:Addcommas&amp;#039;)._add local p = {}  -- -- Example quest structure -- name - Name of the quest -- requirements - String list of skills required for the quest completion (see other examples for SCP usage) -- rewards - Table of information in the following format: experience g...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--Quests are organised by least to most cumulative experience; quests with the same experience rewards are organised alphabetically--&lt;br /&gt;
&lt;br /&gt;
local SCP = require(&amp;#039;Module:SCP&amp;#039;)._main&lt;br /&gt;
local commas = require(&amp;#039;Module:Addcommas&amp;#039;)._add&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
-- Example quest structure&lt;br /&gt;
-- name - Name of the quest&lt;br /&gt;
-- requirements - String list of skills required for the quest completion (see other examples for SCP usage)&lt;br /&gt;
-- rewards - Table of information in the following format: experience gained, number of times available, (optional) extra text to add to the base (See MM1 for reference)&lt;br /&gt;
-- restrictions - Any restrictions that are imposed for what the user can select (I.E. a skill level requirement or specific skills only)&lt;br /&gt;
-- notes - (optional) A reference note of details relating to a specific experience value gained (See MM1 for reference), generally used alongside the optional text in a reward table&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local questList = {&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;X Marks the Spot&amp;#039;,&lt;br /&gt;
		requirements = &amp;#039;None&amp;#039;,&lt;br /&gt;
		rewards = { 300, 1 },&lt;br /&gt;
		restrictions = &amp;#039;None&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;Client of Kourend&amp;#039;,&lt;br /&gt;
		requirements = &amp;#039;None&amp;#039;,&lt;br /&gt;
		rewards = { 500, 2 },&lt;br /&gt;
		restrictions = &amp;#039;None&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;Fairytale II - Cure a Queen&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s, %s&amp;#039;, SCP(&amp;#039;Farming&amp;#039;, &amp;#039;49&amp;#039;), SCP(&amp;#039;Herblore&amp;#039;, &amp;#039;57&amp;#039;)),&lt;br /&gt;
		rewards = { 2500, 1 },&lt;br /&gt;
		restrictions = 30&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;A Tail of Two Cats&amp;#039;,&lt;br /&gt;
		requirements = &amp;#039;None&amp;#039;,&lt;br /&gt;
		rewards = { 2500, 2 },&lt;br /&gt;
		restrictions = 30&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;The Great Brain Robbery&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s, %s, %s&amp;#039;, SCP(&amp;#039;Crafting&amp;#039;, &amp;#039;16&amp;#039;), SCP(&amp;#039;Construction&amp;#039;, &amp;#039;30&amp;#039;), SCP(&amp;#039;Prayer&amp;#039;, &amp;#039;50&amp;#039;)),&lt;br /&gt;
		rewards = { 5000, 1 },&lt;br /&gt;
		restrictions = 30&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;King\&amp;#039;s Ransom&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s&amp;#039;, SCP(&amp;#039;Defence&amp;#039;, &amp;#039;65&amp;#039;)),&lt;br /&gt;
		rewards = { 5000, 1 },&lt;br /&gt;
		restrictions = 50&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;Darkness of Hallowvale&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s, %s, %s, %s, %s, %s&amp;#039;, SCP(&amp;#039;Construction&amp;#039;, &amp;#039;5&amp;#039;), SCP(&amp;#039;Mining&amp;#039;, &amp;#039;20&amp;#039;), SCP(&amp;#039;Thieving&amp;#039;, &amp;#039;22&amp;#039;), SCP(&amp;#039;Crafting&amp;#039;, &amp;#039;32&amp;#039;), SCP(&amp;#039;Magic&amp;#039;, &amp;#039;33&amp;#039;), SCP(&amp;#039;Strength&amp;#039;, &amp;#039;40&amp;#039;)),&lt;br /&gt;
		rewards = { 2000, 3 },&lt;br /&gt;
		restrictions = 30&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;A Taste of Hope&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s, %s, %s, %s, %s&amp;#039;, SCP(&amp;#039;Crafting&amp;#039;, &amp;#039;48&amp;#039;), SCP(&amp;#039;Herblore&amp;#039;, &amp;#039;40&amp;#039;), SCP(&amp;#039;Attack&amp;#039;, &amp;#039;40&amp;#039;), SCP(&amp;#039;Agility&amp;#039;, &amp;#039;45&amp;#039;), SCP(&amp;#039;Slayer&amp;#039;, &amp;#039;38&amp;#039;)),&lt;br /&gt;
		rewards = { 2500, 3 },&lt;br /&gt;
		restrictions = 35&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;The Tourist Trap&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s, %s&amp;#039;, SCP(&amp;#039;Fletching&amp;#039;, &amp;#039;10&amp;#039;), SCP(&amp;#039;Smithing&amp;#039;, &amp;#039;20&amp;#039;)),&lt;br /&gt;
		rewards = { 4650, 2 },&lt;br /&gt;
		restrictions = &amp;#039;Agility Fletching Smithing Thieving&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;A Kingdom Divided&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s, %s, %s, %s, %s,&amp;lt;br/&amp;gt;%s, %s&amp;#039;, SCP(&amp;#039;Agility&amp;#039;, &amp;#039;54&amp;#039;), SCP(&amp;#039;Thieving&amp;#039;, &amp;#039;52&amp;#039;), SCP(&amp;#039;Woodcutting&amp;#039;, &amp;#039;52&amp;#039;), SCP(&amp;#039;Herblore&amp;#039;, &amp;#039;50&amp;#039;), SCP(&amp;#039;Mining&amp;#039;, &amp;#039;42&amp;#039;), SCP(&amp;#039;Crafting&amp;#039;, &amp;#039;38&amp;#039;), SCP(&amp;#039;Magic&amp;#039;, &amp;#039;35&amp;#039;)),&lt;br /&gt;
		rewards = { 10000, 2 },&lt;br /&gt;
		restrictions = 40&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;In Search of Knowledge&amp;#039;,&lt;br /&gt;
		requirements = &amp;#039;None&amp;#039;,&lt;br /&gt;
		rewards = { 10000, 1 },&lt;br /&gt;
		restrictions = 40,&lt;br /&gt;
		qualifier = &amp;#039;([[Miniquests|miniquest]])&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;Curse of the Empty Lord&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;quot;Some players will need %s&amp;quot;, SCP(&amp;#039;Prayer&amp;#039;, &amp;#039;31&amp;#039;)),&lt;br /&gt;
		rewards = { 10000, 1 },&lt;br /&gt;
		restrictions = 50,&lt;br /&gt;
		qualifier = &amp;#039;([[Miniquests|miniquest]])&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;Shadow of the Storm&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s&amp;#039;, SCP(&amp;#039;Crafting&amp;#039;, &amp;#039;30&amp;#039;)),&lt;br /&gt;
		rewards = { 10000, 1 },&lt;br /&gt;
		restrictions = &amp;#039;Attack Strength Defence Magic Ranged Hitpoints&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;Contact!&amp;#039;,&lt;br /&gt;
		requirements = &amp;#039;None&amp;#039;,&lt;br /&gt;
		rewards = { 7000, 2 },&lt;br /&gt;
		restrictions = &amp;#039;Attack Strength Defence Magic Ranged Hitpoints&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;Dream Mentor&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s, %s, %s, %s, %s,&amp;lt;br/&amp;gt;%s, %s, %s, %s&amp;#039;, SCP(&amp;#039;Agility&amp;#039;, &amp;#039;32&amp;#039;), SCP(&amp;#039;Combat&amp;#039;, &amp;#039;85&amp;#039;), SCP(&amp;#039;Crafting&amp;#039;, &amp;#039;61&amp;#039;), SCP(&amp;#039;Defence&amp;#039;, &amp;#039;40&amp;#039;), SCP(&amp;#039;Firemaking&amp;#039;, &amp;#039;49&amp;#039;), SCP(&amp;#039;Herblore&amp;#039;, &amp;#039;5&amp;#039;), SCP(&amp;#039;Magic&amp;#039;, &amp;#039;65&amp;#039;), SCP(&amp;#039;Mining&amp;#039;, &amp;#039;60&amp;#039;), SCP(&amp;#039;Woodcutting&amp;#039;, &amp;#039;55&amp;#039;)),&lt;br /&gt;
		rewards = { 15000, 1 },&lt;br /&gt;
		restrictions = &amp;#039;Strength Defence Magic Ranged Hitpoints&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;The Fremennik Isles&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s, %s&amp;#039;, SCP(&amp;#039;Construction&amp;#039;, &amp;#039;20&amp;#039;), SCP(&amp;#039;Agility&amp;#039;, &amp;#039;40&amp;#039;)),&lt;br /&gt;
		rewards = { 10000, 2 },&lt;br /&gt;
		restrictions = &amp;#039;Attack Strength Defence Hitpoints&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;A Night at the Theatre&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s recommended&amp;#039;, SCP(&amp;#039;Combat&amp;#039;, &amp;#039;90&amp;#039;)),&lt;br /&gt;
		rewards = { 20000, 4 },&lt;br /&gt;
		restrictions = &amp;#039;Attack Strength Defence Magic Ranged Hitpoints&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;One Small Favour&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s, %s, %s, %s&amp;#039;, SCP(&amp;#039;Agility&amp;#039;, &amp;#039;36&amp;#039;), SCP(&amp;#039;Crafting&amp;#039;, &amp;#039;25&amp;#039;), SCP(&amp;#039;Herblore&amp;#039;, &amp;#039;18&amp;#039;), SCP(&amp;#039;Smithing&amp;#039;, &amp;#039;30&amp;#039;)),&lt;br /&gt;
		rewards = { 10000, 2 },&lt;br /&gt;
		restrictions = 30&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;Recipe for Disaster&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s, %s, %s, %s, %s,&amp;lt;br/&amp;gt;%s, %s, %s, %s, %s,&amp;lt;br/&amp;gt;%s, %s, %s, %s, %s&amp;#039;, SCP(&amp;#039;Quest&amp;#039;, &amp;#039;175&amp;#039;), SCP(&amp;#039;Cooking&amp;#039;, &amp;#039;70&amp;#039;), SCP(&amp;#039;Agility&amp;#039;, &amp;#039;48&amp;#039;), SCP(&amp;#039;Mining&amp;#039;, &amp;#039;50&amp;#039;), SCP(&amp;#039;Fishing&amp;#039;, &amp;#039;53&amp;#039;), SCP(&amp;#039;Thieving&amp;#039;, &amp;#039;53&amp;#039;), SCP(&amp;#039;Herblore&amp;#039;, &amp;#039;25&amp;#039;), SCP(&amp;#039;Magic&amp;#039;, &amp;#039;59&amp;#039;), SCP(&amp;#039;Smithing&amp;#039;, &amp;#039;40&amp;#039;), SCP(&amp;#039;Firemaking&amp;#039;, &amp;#039;50&amp;#039;), SCP(&amp;#039;Ranged&amp;#039;, &amp;#039;40&amp;#039;), SCP(&amp;#039;Crafting&amp;#039;, &amp;#039;40&amp;#039;), SCP(&amp;#039;Fletching&amp;#039;, &amp;#039;10&amp;#039;), SCP(&amp;#039;Slayer&amp;#039;, &amp;#039;10&amp;#039;), SCP(&amp;#039;Woodcutting&amp;#039;, &amp;#039;36&amp;#039;)),&lt;br /&gt;
		rewards = { 20000, 1 },&lt;br /&gt;
		restrictions = 50,&lt;br /&gt;
		qualifier = &amp;#039;([[Recipe for Disaster/Defeating the Culinaromancer|The final battle]])&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;Legends\&amp;#039; Quest&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s, %s, %s, %s, %s, %s,&amp;lt;br/&amp;gt;%s, %s, %s, %s, %s&amp;#039;, SCP(&amp;#039;Quest&amp;#039;, &amp;#039;107&amp;#039;), SCP(&amp;#039;Agility&amp;#039;, &amp;#039;50&amp;#039;), SCP(&amp;#039;Crafting&amp;#039;, &amp;#039;50&amp;#039;), SCP(&amp;#039;Herblore&amp;#039;, &amp;#039;45&amp;#039;), SCP(&amp;#039;Magic&amp;#039;, &amp;#039;56&amp;#039;), SCP(&amp;#039;Mining&amp;#039;, &amp;#039;52&amp;#039;), SCP(&amp;#039;Prayer&amp;#039;, &amp;#039;42&amp;#039;), SCP(&amp;#039;Smithing&amp;#039;, &amp;#039;50&amp;#039;), SCP(&amp;#039;Strength&amp;#039;, &amp;#039;50&amp;#039;), SCP(&amp;#039;Thieving&amp;#039;, &amp;#039;50&amp;#039;), SCP(&amp;#039;Woodcutting&amp;#039;, &amp;#039;50&amp;#039;)),&lt;br /&gt;
		rewards = { 30000, 4 },&lt;br /&gt;
		restrictions = &amp;#039;Attack Strength Defence Magic Hitpoints Prayer &amp;lt;br/&amp;gt; Woodcutting Crafting Smithing Herblore Agility Thieving&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;Monkey Madness I&amp;#039;,&lt;br /&gt;
		requirements = &amp;#039;None&amp;#039;,&lt;br /&gt;
		rewards = { 35000, 1, &amp;#039;&amp;amp; 20,000&amp;#039; },&lt;br /&gt;
		restrictions = &amp;#039;Attack Strength Defence Hitpoints&amp;#039;,&lt;br /&gt;
		notes = &amp;#039;35,000 experience is granted to the chosen pair of skills, and 20,000 is granted to the pair of skills not chosen.&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;Sins of the Father&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s, %s, %s, %s, %s, %s, %s&amp;#039;, SCP(&amp;#039;Woodcutting&amp;#039;, &amp;#039;62&amp;#039;), SCP(&amp;#039;Fletching&amp;#039;, &amp;#039;60&amp;#039;), SCP(&amp;#039;Crafting&amp;#039;, &amp;#039;56&amp;#039;), SCP(&amp;#039;Agility&amp;#039;, &amp;#039;52&amp;#039;), SCP(&amp;#039;Slayer&amp;#039;, &amp;#039;50&amp;#039;), SCP(&amp;#039;Attack&amp;#039;, &amp;#039;50&amp;#039;), SCP(&amp;#039;Magic&amp;#039;, &amp;#039;49&amp;#039;)),&lt;br /&gt;
		rewards = { 15000, 6 },&lt;br /&gt;
		restrictions = 60&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;Dragon Slayer II&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s, %s, %s, %s, %s,&amp;lt;br/&amp;gt;%s, %s, %s, %s&amp;#039;, SCP(&amp;#039;Quest&amp;#039;, &amp;#039;200&amp;#039;), SCP(&amp;#039;Magic&amp;#039;, &amp;#039;75&amp;#039;), SCP(&amp;#039;Smithing&amp;#039;, &amp;#039;70&amp;#039;), SCP(&amp;#039;Mining&amp;#039;, &amp;#039;68&amp;#039;), SCP(&amp;#039;Crafting&amp;#039;, &amp;#039;62&amp;#039;), SCP(&amp;#039;Agility&amp;#039;, &amp;#039;60&amp;#039;), SCP(&amp;#039;Thieving&amp;#039;, &amp;#039;60&amp;#039;), SCP(&amp;#039;Construction&amp;#039;, &amp;#039;50&amp;#039;), SCP(&amp;#039;Hitpoints&amp;#039;, &amp;#039;50&amp;#039;)),&lt;br /&gt;
		rewards = { 25000, 4 },&lt;br /&gt;
		restrictions = &amp;#039;Attack Strength Defence Magic Ranged Hitpoints&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;Into the Tombs&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s recommended&amp;#039;, SCP(&amp;#039;Combat&amp;#039;, &amp;#039;95&amp;#039;)),&lt;br /&gt;
		rewards = { 50000, 1 },&lt;br /&gt;
		restrictions = &amp;#039;Attack Strength Defence Magic Ranged Hitpoints&amp;#039;,&lt;br /&gt;
		qualifier = &amp;#039;([[Miniquests|miniquest]])&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;Monkey Madness II&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s, %s, %s, %s, %s, %s&amp;#039;, SCP(&amp;#039;Slayer&amp;#039;, &amp;#039;69&amp;#039;), SCP(&amp;#039;Crafting&amp;#039;, &amp;#039;70&amp;#039;), SCP(&amp;#039;Hunter&amp;#039;, &amp;#039;60&amp;#039;), SCP(&amp;#039;Agility&amp;#039;, &amp;#039;55&amp;#039;), SCP(&amp;#039;Thieving&amp;#039;, &amp;#039;55&amp;#039;), SCP(&amp;#039;Firemaking&amp;#039;, &amp;#039;60&amp;#039;)),&lt;br /&gt;
		rewards = { 50000, 2 },&lt;br /&gt;
		restrictions = &amp;#039;Attack Strength Defence Magic Ranged Hitpoints&amp;#039;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		name = &amp;#039;Desert Treasure II - The Fallen Empire&amp;#039;,&lt;br /&gt;
		requirements = string.format(&amp;#039;%s, %s, %s, %s, %s, %s&amp;#039;, SCP(&amp;#039;Firemaking&amp;#039;, &amp;#039;75&amp;#039;), SCP(&amp;#039;Magic&amp;#039;, &amp;#039;75&amp;#039;), SCP(&amp;#039;Thieving&amp;#039;, &amp;#039;70&amp;#039;), SCP(&amp;#039;Herblore&amp;#039;, &amp;#039;62&amp;#039;), SCP(&amp;#039;Runecraft&amp;#039;, &amp;#039;60&amp;#039;), SCP(&amp;#039;Construction&amp;#039;, &amp;#039;60&amp;#039;)),&lt;br /&gt;
		rewards = { 100000, 3 },&lt;br /&gt;
		restrictions = &amp;#039;Attack Strength Defence Magic Ranged Hitpoints Prayer&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p.invoke_main(frame)&lt;br /&gt;
	return p.main(frame, frame:getParent().args[1])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame, skill)&lt;br /&gt;
	local totalXp = 0&lt;br /&gt;
	local resultsTable = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
	local header = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		header:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
			:wikitext(&amp;#039;Quest&amp;#039;)&lt;br /&gt;
		:done()&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
			:attr(&amp;#039;data-sort-type&amp;#039;, &amp;#039;number&amp;#039;)&lt;br /&gt;
			:wikitext(&amp;#039;Experience&amp;lt;br/&amp;gt;reward&amp;#039;)&lt;br /&gt;
		:done()&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;unsortable&amp;#039;)&lt;br /&gt;
			:wikitext(&amp;#039;Skills available&amp;#039;)&lt;br /&gt;
		:done()&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;unsortable&amp;#039;)&lt;br /&gt;
			:wikitext(&amp;#039;Skill requirements&amp;#039;)&lt;br /&gt;
		:done()&lt;br /&gt;
	&lt;br /&gt;
	resultsTable:addClass(&amp;#039;wikitable sortable lighttable oqg-table&amp;#039;):css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;)&lt;br /&gt;
		:node(header)&lt;br /&gt;
	:done()&lt;br /&gt;
	&lt;br /&gt;
	for i, v in ipairs(questList) do&lt;br /&gt;
		local skill_restrictions = &amp;#039;&amp;#039;&lt;br /&gt;
		local valid_skill = false&lt;br /&gt;
&lt;br /&gt;
		-- Restrictions --&lt;br /&gt;
		if type(v.restrictions) == &amp;#039;number&amp;#039; then&lt;br /&gt;
			--Skills of certain level are eligible--&lt;br /&gt;
			skill_restrictions = string.format(&amp;#039;Any skill above %s&amp;#039;, v.restrictions)&lt;br /&gt;
			valid_skill = true&lt;br /&gt;
		else &lt;br /&gt;
			for sk in string.gmatch(v.restrictions, &amp;quot;[%a%p]+&amp;quot;) do&lt;br /&gt;
				-- Any skill is eligible -- &lt;br /&gt;
				if sk == &amp;#039;None&amp;#039; then&lt;br /&gt;
					skill_restrictions = &amp;#039;Any&amp;#039;&lt;br /&gt;
					valid_skill = true&lt;br /&gt;
				elseif sk == &amp;#039;&amp;lt;br/&amp;gt;&amp;#039; then&lt;br /&gt;
					skill_restrictions = skill_restrictions .. (sk)&lt;br /&gt;
				-- Specific skills are eligible --&lt;br /&gt;
				else  &lt;br /&gt;
    				skill_restrictions = skill_restrictions .. SCP(sk)&lt;br /&gt;
    				if sk == skill or skill == &amp;#039;Any&amp;#039; then&lt;br /&gt;
    					valid_skill = true&lt;br /&gt;
    				end&lt;br /&gt;
    			end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Only gets quest info if skill is eligible --&lt;br /&gt;
		if valid_skill == true then&lt;br /&gt;
			local quest = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			&lt;br /&gt;
			-- Quest name --&lt;br /&gt;
			if v.qualifier then&lt;br /&gt;
				quest:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:wikitext(string.format(&amp;#039;[[%s]]&amp;lt;br /&amp;gt;%s&amp;#039;, v.name, v.qualifier))&lt;br /&gt;
				:done()	&lt;br /&gt;
			else&lt;br /&gt;
			quest:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:wikitext(string.format(&amp;#039;[[%s]]&amp;#039;, v.name))&lt;br /&gt;
			:done()&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			-- Rewards --&lt;br /&gt;
			if v.notes then &lt;br /&gt;
				local extraReward = v.rewards[3] ~= nil and string.format(&amp;#039; %s&amp;#039;, v.rewards[3]) or &amp;#039;&amp;#039;&lt;br /&gt;
				local reference = frame:extensionTag{ name=&amp;#039;ref&amp;#039;, content = v.notes, args = { group=&amp;#039;sc&amp;#039; } }&lt;br /&gt;
				-- Need preprocess to deal with ref tag in MM1&amp;#039;s v.notes--&lt;br /&gt;
				quest:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:wikitext(commas(v.rewards[1]) .. rewardModifier(v.rewards[2]) .. extraReward .. reference)&lt;br /&gt;
				:done()&lt;br /&gt;
			else&lt;br /&gt;
				quest:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:wikitext(commas(v.rewards[1]) .. rewardModifier(v.rewards[2]))&lt;br /&gt;
				:done()&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			-- Skill restrictions and quest requirements --&lt;br /&gt;
			quest:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:wikitext(skill_restrictions)&lt;br /&gt;
			:done()&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:wikitext(v.requirements)&lt;br /&gt;
			:done()&lt;br /&gt;
				&lt;br /&gt;
			-- Inserts info to table --&lt;br /&gt;
			totalXp = totalXp + (v.rewards[1] * v.rewards[2])&lt;br /&gt;
			resultsTable:node(quest)&lt;br /&gt;
			:done()		&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Inserts total xp --&lt;br /&gt;
	total = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	total:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
			:wikitext(&amp;#039;Total&amp;#039;)&lt;br /&gt;
		:done()&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
			:wikitext(commas(totalXp))&lt;br /&gt;
		:done()&lt;br /&gt;
		:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
			:attr(&amp;#039;colspan&amp;#039;, &amp;#039;2&amp;#039;)&lt;br /&gt;
			:wikitext(&amp;#039;&amp;#039;)&lt;br /&gt;
		:done()&lt;br /&gt;
		&lt;br /&gt;
	resultsTable:node(total)&lt;br /&gt;
	&lt;br /&gt;
	return tostring(resultsTable) .. &amp;#039;\n&amp;#039; .. frame:extensionTag{ name=&amp;#039;references&amp;#039;, args = { group=&amp;#039;sc&amp;#039; } }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function rewardModifier(reward)&lt;br /&gt;
	if reward == 2 then&lt;br /&gt;
		return &amp;#039; twice&amp;#039;&lt;br /&gt;
	elseif reward == 3 then&lt;br /&gt;
		return &amp;#039; three times&amp;#039;&lt;br /&gt;
	elseif reward == 4 then&lt;br /&gt;
		return &amp;#039; four times&amp;#039;&lt;br /&gt;
	elseif reward == 5 then&lt;br /&gt;
		return &amp;#039; five times&amp;#039;&lt;br /&gt;
	elseif reward == 6 then&lt;br /&gt;
		return &amp;#039; six times&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
	&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>