<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.august.games/index.php?action=history&amp;feed=atom&amp;title=Module%3ATalentCalc</id>
	<title>Module:TalentCalc - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.august.games/index.php?action=history&amp;feed=atom&amp;title=Module%3ATalentCalc"/>
	<link rel="alternate" type="text/html" href="https://wiki.august.games/index.php?title=Module:TalentCalc&amp;action=history"/>
	<updated>2026-05-03T00:27:59Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.august.games/index.php?title=Module:TalentCalc&amp;diff=20276&amp;oldid=prev</id>
		<title>Steve: Created page with &quot;local p = {}  -- Data for the tiers, now local to this module. local tiers = {     [&#039;tier1&#039;] = {         { name = &#039;Double&lt;br /&gt;Cast&#039;, file = &#039;Double cast.png&#039;, total = 1 },         { name = &#039;Fluid&lt;br /&gt;Strikes&#039;, file = &#039;Fluid strikes.png&#039;, total = 1 },         { name = &#039;Quick&lt;br /&gt;Shot&#039;, file = &#039;Quick shot.png&#039;, total = 1 },         { name = &#039;[[Talents/PvM_talent_tree...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.august.games/index.php?title=Module:TalentCalc&amp;diff=20276&amp;oldid=prev"/>
		<updated>2025-08-18T22:02:11Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local p = {}  -- Data for the tiers, now local to this module. local tiers = {     [&amp;#039;tier1&amp;#039;] = {         { name = &amp;#039;&lt;a href=&quot;/wiki/Talents/PvM_talent_tree#Tier_1&quot; title=&quot;Talents/PvM talent tree&quot;&gt;Double&amp;lt;br /&amp;gt;Cast&lt;/a&gt;&amp;#039;, file = &amp;#039;Double cast.png&amp;#039;, total = 1 },         { name = &amp;#039;&lt;a href=&quot;/wiki/Talents/PvM_talent_tree#Tier_1&quot; title=&quot;Talents/PvM talent tree&quot;&gt;Fluid&amp;lt;br /&amp;gt;Strikes&lt;/a&gt;&amp;#039;, file = &amp;#039;Fluid strikes.png&amp;#039;, total = 1 },         { name = &amp;#039;&lt;a href=&quot;/wiki/Talents/PvM_talent_tree#Tier_1&quot; title=&quot;Talents/PvM talent tree&quot;&gt;Quick&amp;lt;br /&amp;gt;Shot&lt;/a&gt;&amp;#039;, file = &amp;#039;Quick shot.png&amp;#039;, total = 1 },         { name = &amp;#039;[[Talents/PvM_talent_tree...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Data for the tiers, now local to this module.&lt;br /&gt;
local tiers = {&lt;br /&gt;
    [&amp;#039;tier1&amp;#039;] = {&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_1|Double&amp;lt;br /&amp;gt;Cast]]&amp;#039;, file = &amp;#039;Double cast.png&amp;#039;, total = 1 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_1|Fluid&amp;lt;br /&amp;gt;Strikes]]&amp;#039;, file = &amp;#039;Fluid strikes.png&amp;#039;, total = 1 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_1|Quick&amp;lt;br /&amp;gt;Shot]]&amp;#039;, file = &amp;#039;Quick shot.png&amp;#039;, total = 1 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_1|Boner&amp;lt;br /&amp;gt;Boost]]&amp;#039;, file = &amp;#039;Boner boost.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_1|Deft&amp;lt;br /&amp;gt;Strikes]]&amp;#039;, file = &amp;#039;Deft strikes.png&amp;#039;, total = 5 }&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;#039;tier2&amp;#039;] = {&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Combat&amp;lt;br /&amp;gt;XP]]&amp;#039;, file = &amp;#039;Combat xp.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Menacing&amp;lt;br /&amp;gt;Mage]]&amp;#039;, file = &amp;#039;Menacing mage.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Elementalist]]&amp;#039;, file = &amp;#039;Elementalist.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Feral&amp;lt;br /&amp;gt;fighter]]&amp;#039;, file = &amp;#039;Feral fighter.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Giant&amp;lt;br /&amp;gt;Slayer]]&amp;#039;, file = &amp;#039;Giant Slayer.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Ruthless&amp;lt;br /&amp;gt;Ranger]]&amp;#039;, file = &amp;#039;Ruthless ranger.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Headshot]]&amp;#039;, file = &amp;#039;Headshot.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Bloodworm]]&amp;#039;, file = &amp;#039;Bloodworm.png&amp;#039;, total = 1 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Resilience I]]&amp;#039;, file = &amp;#039;Resilience i.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Heart&amp;lt;br /&amp;gt;Rate]]&amp;#039;, file = &amp;#039;Heart rate.png&amp;#039;, total = 10 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Consistency]]&amp;#039;, file = &amp;#039;Consistency.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Fortification]]&amp;#039;, file = &amp;#039;Fortification.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Antifire]]&amp;#039;, file = &amp;#039;Antifire.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Antipoison]]&amp;#039;, file = &amp;#039;Antipoison.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Devout]]&amp;#039;, file = &amp;#039;Devout.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_2|Renewal]]&amp;#039;, file = &amp;#039;Renewal.png&amp;#039;, total = 5 }&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;#039;tier3&amp;#039;] = {&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_3|Porcupine]]&amp;#039;, file = &amp;#039;Porcupine.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_3|Unnatural&amp;lt;br /&amp;gt;Selection]]&amp;#039;, file = &amp;#039;Unnatural selection.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_3|Treasure&amp;lt;br /&amp;gt;Goblins]]&amp;#039;, file = &amp;#039;Treasure goblins.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_3|Draining&amp;lt;br /&amp;gt;Strikes]]&amp;#039;, file = &amp;#039;Draining strikes.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_3|Exploding&amp;lt;br /&amp;gt;Attacks]]&amp;#039;, file = &amp;#039;Exploding attacks.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_3|Holey&amp;lt;br /&amp;gt;Vestments]]&amp;#039;, file = &amp;#039;Holey vestments.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_3|Bottomless&amp;lt;br /&amp;gt;Quiver]]&amp;#039;, file = &amp;#039;Bottomless quiver.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_3|Runic&amp;lt;br /&amp;gt;Efficiency]]&amp;#039;, file = &amp;#039;Runic efficiency.png&amp;#039;, total = 5 }&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;#039;tier4&amp;#039;] = {&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_4|Sigil of&amp;lt;br /&amp;gt;Finality]]&amp;#039;, file = &amp;#039;Sigil of finality.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_4|Pious&amp;lt;br /&amp;gt;Protectio]]n&amp;#039;, file = &amp;#039;Pious protection.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_4|Aggression]]&amp;#039;, file = &amp;#039;Aggression.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_4|Precision]]&amp;#039;, file = &amp;#039;Precision.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_4|Unholy]]&amp;#039;, file = &amp;#039;Unholy.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_4|Firebender]]&amp;#039;, file = &amp;#039;Firebender.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_4|Tekton\&amp;#039;s&amp;lt;br /&amp;gt;Rage I]]&amp;#039;, file = &amp;#039;Tekton\&amp;#039;s rage i.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_4|Ghommal\&amp;#039;s&amp;lt;br /&amp;gt;Might I]]&amp;#039;, file = &amp;#039;Ghommal\&amp;#039;s might i.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_4|Victory&amp;lt;br /&amp;gt;Rush]]&amp;#039;, file = &amp;#039;Victory rush.png&amp;#039;, total = 5 }&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;#039;tier5&amp;#039;] = {&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_5|Adrenaline&amp;lt;br /&amp;gt;Assault]]&amp;#039;, file = &amp;#039;Adrenaline assault.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_5|Guardian]]&amp;#039;, file = &amp;#039;Guardian.png&amp;#039;, total = 1 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_5|Executioner]]&amp;#039;, file = &amp;#039;Executioner.png&amp;#039;, total = 1 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_5|Berserker]]&amp;#039;, file = &amp;#039;Berserker.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_5|Absolute&amp;lt;br /&amp;gt;Unit]]&amp;#039;, file = &amp;#039;Absolute unit.png&amp;#039;, total = 1 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_5|Resilience II]]&amp;#039;, file = &amp;#039;Resilience ii.png&amp;#039;, total = 5 }&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;#039;tier6&amp;#039;] = {&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_6|Tekton\&amp;#039;s&amp;lt;br /&amp;gt;Rage II]]&amp;#039;, file = &amp;#039;Tekton\&amp;#039;s rage ii.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_6|Ghommal\&amp;#039;s&amp;lt;br /&amp;gt;Might II]]&amp;#039;, file = &amp;#039;Ghommal\&amp;#039;s might ii.png&amp;#039;, total = 5 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_6|Reach&amp;lt;br /&amp;gt;Around]]&amp;#039;, file = &amp;#039;Reach around.png&amp;#039;, total = 4 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_6|Energy&amp;lt;br /&amp;gt;Efficiency]]&amp;#039;, file = &amp;#039;Energy efficiency.png&amp;#039;, total = 7 }&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;#039;keystones&amp;#039;] = {&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_7|Key Stone:&amp;lt;br /&amp;gt;Vanguard]]&amp;#039;, file = &amp;#039;Key stone: vanguard.png&amp;#039;, total = 1 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_7|Key Stone:&amp;lt;br /&amp;gt;Trickster]]&amp;#039;, file = &amp;#039;Key stone: trickster.png&amp;#039;, total = 1 },&lt;br /&gt;
        { name = &amp;#039;[[Talents/PvM_talent_tree#Tier_7|Key Stone:&amp;lt;br /&amp;gt;Battlemage]]&amp;#039;, file = &amp;#039;Key stone: battlemage.png&amp;#039;, total = 1 }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p._main(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local output = {}&lt;br /&gt;
    &lt;br /&gt;
    local tier_order = { &amp;#039;tier1&amp;#039;, &amp;#039;tier2&amp;#039;, &amp;#039;tier3&amp;#039;, &amp;#039;tier4&amp;#039;, &amp;#039;tier5&amp;#039;, &amp;#039;tier6&amp;#039;, &amp;#039;keystones&amp;#039; }&lt;br /&gt;
&lt;br /&gt;
    for _, tier_key in ipairs(tier_order) do&lt;br /&gt;
        local value = args[tier_key]&lt;br /&gt;
        if value then&lt;br /&gt;
            local values = {}&lt;br /&gt;
            for v in value:gmatch(&amp;quot;([^,]+)&amp;quot;) do&lt;br /&gt;
                table.insert(values, tonumber(v))&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            local tier_data = tiers[tier_key]&lt;br /&gt;
            &lt;br /&gt;
            table.insert(output, &amp;#039;=== &amp;#039; .. (tier_key:gsub(&amp;#039;(%a+)(%d+)&amp;#039;, &amp;#039;%1 %2&amp;#039;):gsub(&amp;#039;^%l&amp;#039;, string.upper)) .. &amp;#039; ===&amp;#039;)&lt;br /&gt;
            table.insert(output, &amp;#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 35%;&amp;quot;&amp;#039;)&lt;br /&gt;
            &lt;br /&gt;
            local i = 1&lt;br /&gt;
            while i &amp;lt;= #tier_data do&lt;br /&gt;
                local header_row_parts = {}&lt;br /&gt;
                local data_row_parts = {}&lt;br /&gt;
                local cells_in_row = 0&lt;br /&gt;
                &lt;br /&gt;
                while i &amp;lt;= #tier_data and cells_in_row &amp;lt; 5 do&lt;br /&gt;
                    local item = tier_data[i]&lt;br /&gt;
                    local current = values[i] or 0&lt;br /&gt;
                    local total = item.total&lt;br /&gt;
                    local bgcolor = &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
                    if current == total then&lt;br /&gt;
                        bgcolor = &amp;#039;background-color:#56e156;&amp;#039;&lt;br /&gt;
                    elseif current &amp;gt; 0 then&lt;br /&gt;
                        bgcolor = &amp;#039;background-color:#ffed4c;&amp;#039;&lt;br /&gt;
                    else&lt;br /&gt;
                        bgcolor = &amp;#039;&amp;#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    &lt;br /&gt;
                    table.insert(header_row_parts, &amp;#039;style=&amp;quot;width: 20%;&amp;quot; | [[File:&amp;#039; .. item.file .. &amp;#039;|32px]]&amp;lt;br /&amp;gt;&amp;#039; .. item.name .. &amp;#039;&amp;#039;)&lt;br /&gt;
                    table.insert(data_row_parts, &amp;#039;style=&amp;quot;width: 20%; &amp;#039; .. bgcolor .. &amp;#039;&amp;quot; | &amp;#039; .. current .. &amp;#039;/&amp;#039; .. total .. &amp;#039;&amp;#039;)&lt;br /&gt;
                    &lt;br /&gt;
                    i = i + 1&lt;br /&gt;
                    cells_in_row = cells_in_row + 1&lt;br /&gt;
                end&lt;br /&gt;
                &lt;br /&gt;
                table.insert(output, &amp;#039;|-\n! &amp;#039; .. table.concat(header_row_parts, &amp;#039; !! &amp;#039;))&lt;br /&gt;
                table.insert(output, &amp;#039;|-&amp;#039; .. &amp;#039; style=&amp;quot;text-align:center; height: 40px;&amp;quot;\n| &amp;#039; .. table.concat(data_row_parts, &amp;#039; || &amp;#039;))&lt;br /&gt;
            end&lt;br /&gt;
            table.insert(output, &amp;#039;|}&amp;#039;)&lt;br /&gt;
            table.insert(output, &amp;#039;&amp;#039;) -- Add a blank line for separation&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return table.concat(output, &amp;#039;\n&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Steve</name></author>
	</entry>
</feed>