<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://2012wiki.werdegames.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ASkill</id>
	<title>Module:Skill - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://2012wiki.werdegames.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ASkill"/>
	<link rel="alternate" type="text/html" href="https://2012wiki.werdegames.com/index.php?title=Module:Skill&amp;action=history"/>
	<updated>2026-11-06T12:59:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://2012wiki.werdegames.com/index.php?title=Module:Skill&amp;diff=1332&amp;oldid=prev</id>
		<title>Admin: tools/wiki/push.py</title>
		<link rel="alternate" type="text/html" href="https://2012wiki.werdegames.com/index.php?title=Module:Skill&amp;diff=1332&amp;oldid=prev"/>
		<updated>2026-11-06T03:07:41Z</updated>

		<summary type="html">&lt;p&gt;tools/wiki/push.py&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- The skill infobox and per-level table of Template:Skill.&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- the per-level table&amp;#039;s separator between cells (tools/wiki/gen_skills.py writes it)&lt;br /&gt;
local SEP = &amp;#039;¦&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local function lines(text)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for line in mw.text.gsplit(text or &amp;#039;&amp;#039;, &amp;#039;\n&amp;#039;, true) do&lt;br /&gt;
		line = mw.text.trim(line)&lt;br /&gt;
		if line ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			table.insert(out, line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function cells(line)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for cell in mw.text.gsplit(line, SEP, true) do&lt;br /&gt;
		table.insert(out, mw.text.trim(cell))&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function given(v)&lt;br /&gt;
	return v and mw.text.trim(v) ~= &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;Fire Arrow, Ice Arrow&amp;quot;: a link per skill&lt;br /&gt;
local function links(text)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for name in mw.text.gsplit(text or &amp;#039;&amp;#039;, &amp;#039;,&amp;#039;, true) do&lt;br /&gt;
		name = mw.text.trim(name)&lt;br /&gt;
		if name ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			table.insert(out, &amp;#039;[[&amp;#039; .. name .. &amp;#039;]]&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(out, &amp;#039;, &amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function row(box, label, value)&lt;br /&gt;
	local r = box:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;d2-skill-row&amp;#039;)&lt;br /&gt;
	r:tag(&amp;#039;span&amp;#039;):addClass(&amp;#039;d2-skill-label&amp;#039;):wikitext(label)&lt;br /&gt;
	r:tag(&amp;#039;span&amp;#039;):wikitext(value)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function infobox(a)&lt;br /&gt;
	local box = mw.html.create(&amp;#039;div&amp;#039;):addClass(&amp;#039;d2-skill&amp;#039;)&lt;br /&gt;
	if given(a.image) then&lt;br /&gt;
		box:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;d2-skill-image&amp;#039;):wikitext(&amp;#039;[[File:&amp;#039; .. a.image .. &amp;#039;|link=|alt=]]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	box:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;d2-skill-name&amp;#039;):wikitext(a.name or mw.title.getCurrentTitle().text)&lt;br /&gt;
	if given(a.class) then&lt;br /&gt;
		local where = &amp;#039;[[&amp;#039; .. a.class .. &amp;#039;]]&amp;#039;&lt;br /&gt;
		if given(a.tree) then&lt;br /&gt;
			where = where .. &amp;#039; · &amp;#039; .. a.tree&lt;br /&gt;
		end&lt;br /&gt;
		box:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;d2-skill-class&amp;#039;):wikitext(where)&lt;br /&gt;
	elseif given(a.classes) then&lt;br /&gt;
		box:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;d2-skill-class&amp;#039;):wikitext(&amp;#039;Item skill (&amp;#039; .. a.classes .. &amp;#039;)&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local desc = box:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;d2-skill-desc&amp;#039;)&lt;br /&gt;
	for _, line in ipairs(lines(a.description)) do&lt;br /&gt;
		desc:tag(&amp;#039;div&amp;#039;):wikitext(line)&lt;br /&gt;
	end&lt;br /&gt;
	local facts = box:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;d2-skill-facts&amp;#039;)&lt;br /&gt;
	if given(a.reqlevel) then&lt;br /&gt;
		row(facts, &amp;#039;Required level&amp;#039;, a.reqlevel)&lt;br /&gt;
	end&lt;br /&gt;
	if given(a.prereqs) then&lt;br /&gt;
		row(facts, &amp;#039;Requires&amp;#039;, links(a.prereqs))&lt;br /&gt;
	end&lt;br /&gt;
	if given(a.synergies) then&lt;br /&gt;
		row(facts, &amp;#039;Synergies&amp;#039;, links(a.synergies))&lt;br /&gt;
	end&lt;br /&gt;
	if given(a.maxlvl) then&lt;br /&gt;
		row(facts, &amp;#039;Maximum level&amp;#039;, a.maxlvl)&lt;br /&gt;
	end&lt;br /&gt;
	if given(a.hardcap) then&lt;br /&gt;
		row(facts, &amp;#039;Hard points&amp;#039;, &amp;#039;up to &amp;#039; .. a.hardcap)&lt;br /&gt;
	end&lt;br /&gt;
	local fixed = lines(a.static)&lt;br /&gt;
	local formulas = lines(a.formulas)&lt;br /&gt;
	if #fixed + #formulas &amp;gt; 0 then&lt;br /&gt;
		local block = box:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;d2-skill-lines&amp;#039;)&lt;br /&gt;
		for _, line in ipairs(fixed) do&lt;br /&gt;
			block:tag(&amp;#039;div&amp;#039;):wikitext(line)&lt;br /&gt;
		end&lt;br /&gt;
		for _, line in ipairs(formulas) do&lt;br /&gt;
			block:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;d2-skill-formula&amp;#039;):wikitext(line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return box&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function level_table(a)&lt;br /&gt;
	local columns = cells(a.columns or &amp;#039;&amp;#039;)&lt;br /&gt;
	local rows = lines(a.levels)&lt;br /&gt;
	if #rows == 0 or #columns == 0 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local t = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;wikitable mw-collapsible mw-collapsed d2-skill-levels&amp;#039;)&lt;br /&gt;
	t:tag(&amp;#039;caption&amp;#039;):wikitext(&amp;#039;Values per skill level&amp;#039;)&lt;br /&gt;
	local head = t:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	head:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Level&amp;#039;)&lt;br /&gt;
	for _, c in ipairs(columns) do&lt;br /&gt;
		head:tag(&amp;#039;th&amp;#039;):wikitext(c)&lt;br /&gt;
	end&lt;br /&gt;
	for _, line in ipairs(rows) do&lt;br /&gt;
		local tr = t:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		local v = cells(line)&lt;br /&gt;
		tr:tag(&amp;#039;th&amp;#039;):wikitext(v[1])&lt;br /&gt;
		for i = 1, #columns do&lt;br /&gt;
			tr:tag(&amp;#039;td&amp;#039;):wikitext(v[i + 1] or &amp;#039;&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.skill(frame)&lt;br /&gt;
	local a = frame:getParent().args&lt;br /&gt;
	local out = frame:extensionTag(&amp;#039;templatestyles&amp;#039;, &amp;#039;&amp;#039;, { src = &amp;#039;Template:Skill/styles.css&amp;#039; })&lt;br /&gt;
		.. tostring(infobox(a))&lt;br /&gt;
	local t = level_table(a)&lt;br /&gt;
	if t then&lt;br /&gt;
		out = out .. tostring(t)&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>