<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.hoodedhorse.com/Corsair_Cove/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=76561197971186856</id>
	<title>Corsair Cove Official Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.hoodedhorse.com/Corsair_Cove/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=76561197971186856"/>
	<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Corsair_Cove/Special:Contributions/76561197971186856"/>
	<updated>2026-09-16T14:34:25Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.5</generator>
	<entry>
		<id>https://wiki.hoodedhorse.com/Corsair_Cove/index.php?title=Module:BuildingTable&amp;diff=1260</id>
		<title>Module:BuildingTable</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Corsair_Cove/index.php?title=Module:BuildingTable&amp;diff=1260"/>
		<updated>2026-08-04T06:38:56Z</updated>

		<summary type="html">&lt;p&gt;76561197971186856: Reverted edit by 76561197971186856 (talk) to last revision by 76561199005532951&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local buildingData = require(&amp;quot;Module:BuildingData&amp;quot;)&lt;br /&gt;
local resourceData = require(&amp;quot;Module:ResourceData&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local function getResourceIcon(resourceName)&lt;br /&gt;
    local data = resourceData[resourceName]&lt;br /&gt;
    if not data then&lt;br /&gt;
        return &amp;quot;T Button SelectionBorder Default.png&amp;quot; -- or some other safe fallback&lt;br /&gt;
    end&lt;br /&gt;
    if not data.icon_file then&lt;br /&gt;
    	return &amp;quot;T Button SelectionBorder Default.png&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return data.icon_file&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function stackFormat(inputs)&lt;br /&gt;
    if not inputs then&lt;br /&gt;
        return &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local parts = {}&lt;br /&gt;
&lt;br /&gt;
    for _, item in ipairs(inputs) do&lt;br /&gt;
        if item.resource ~= &amp;quot;&amp;quot; and (item.qty or 0) &amp;gt; 0 then&lt;br /&gt;
            table.insert(parts, item.qty .. &amp;quot; [[File:&amp;quot; .. getResourceIcon(item.resource) .. &amp;quot;|16px]] &amp;quot; .. &amp;quot;[[&amp;quot; .. item.resource .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if #parts == 0 then&lt;br /&gt;
        return &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(parts, &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.producers(frame)&lt;br /&gt;
    local out = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &#039;{| class=&amp;quot;wikitable sortable&amp;quot;&#039;)&lt;br /&gt;
    table.insert(out, &#039;!class=&amp;quot;unsortable&amp;quot;| Icon !! Name !! Category !! Dedicated Workers !! Product !! Input !! Building Cost&#039;)&lt;br /&gt;
&lt;br /&gt;
    for _, building in pairs(buildingData) do&lt;br /&gt;
        local icon = building.building_icon_filename or &amp;quot;T Button SelectionBorder Default.png&amp;quot;&lt;br /&gt;
		if icon == nil or icon == &amp;quot;&amp;quot; then&lt;br /&gt;
		    icon = &amp;quot;T Button SelectionBorder Default.png&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
        local workers = (building.hands_greenhands or 0) + (building.hands_masterhands or 0)&lt;br /&gt;
&lt;br /&gt;
        if workers &amp;gt; 0 and building.production_output ~= &amp;quot;&amp;quot; and building.production_output ~= nil then&lt;br /&gt;
            local cost = &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
            -- Build construction cost string&lt;br /&gt;
            local parts = {}&lt;br /&gt;
            for _, item in ipairs(building.construction or {}) do&lt;br /&gt;
                if item.qty &amp;gt; 0 and item.resource ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                    table.insert(parts,&lt;br /&gt;
                        string.format(&amp;quot;%d [[%s]]&amp;quot;, item.qty, item.resource))&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            table.insert(out, &amp;quot;|-&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
			local icon2 = getResourceIcon(building.production_output)&lt;br /&gt;
			if icon2 == nil then&lt;br /&gt;
			    error(string.format(&lt;br /&gt;
			        &amp;quot;DEBUG: getResourceIcon returned nil for production_output=%q (building=%s)&amp;quot;,&lt;br /&gt;
			        tostring(building.production_output), tostring(building.name)&lt;br /&gt;
			    ))&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			table.insert(out,&lt;br /&gt;
			    string.format(&lt;br /&gt;
			        &amp;quot;|  &amp;lt;div class=&#039;cc-producer-icon&#039;&amp;gt;[[File:&amp;quot; .. icon .. &amp;quot;|48px]] || [[%s]] || %s || %d [[Pirates|Greenhands]] || %d [[File:&amp;quot; .. icon2 .. &amp;quot;|16px]] [[%s]] || %s || %s&amp;quot;,&lt;br /&gt;
			        building.name,&lt;br /&gt;
			        building.category,&lt;br /&gt;
			        workers,&lt;br /&gt;
			        building.production_output_qty or 0,&lt;br /&gt;
			        building.production_output or &amp;quot;&amp;quot;,&lt;br /&gt;
			        stackFormat(building.production_input) or &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;,&lt;br /&gt;
			        stackFormat(building.construction) or &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
			    )&lt;br /&gt;
			)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &amp;quot;|}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(out, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p.housing(frame)&lt;br /&gt;
    local out = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &#039;{| class=&amp;quot;wikitable sortable&amp;quot;&#039;)&lt;br /&gt;
    table.insert(out, &#039;!class=&amp;quot;unsortable&amp;quot;| Icon !! Name !! Capacity !! Unlock Requirement !! Building Cost&#039;)&lt;br /&gt;
&lt;br /&gt;
    for _, building in pairs(buildingData) do&lt;br /&gt;
        local icon = building.building_icon_filename&lt;br /&gt;
		if icon == nil or icon == &amp;quot;&amp;quot; then&lt;br /&gt;
		    icon = &amp;quot;T ICO resource Hardwood.png&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
        if building.housing &amp;gt; 0 then&lt;br /&gt;
            local cost = &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
            &lt;br /&gt;
	        -- Build construction cost string&lt;br /&gt;
	        local parts = {}&lt;br /&gt;
	        for _, item in ipairs(building.construction or {}) do&lt;br /&gt;
	            if item.qty &amp;gt; 0 and item.resource ~= &amp;quot;&amp;quot; then&lt;br /&gt;
	                table.insert(parts,&lt;br /&gt;
	                    string.format(&amp;quot;%d [[%s]]&amp;quot;, item.qty, item.resource))&lt;br /&gt;
	            end&lt;br /&gt;
	        end&lt;br /&gt;
	&lt;br /&gt;
	        table.insert(out, &amp;quot;|-&amp;quot;)&lt;br /&gt;
	        table.insert(out,&lt;br /&gt;
	            string.format(&lt;br /&gt;
	                &amp;quot;|  {{Producer icon|T ICO resource Hardwood.png |size=lg}} || [[%s]] || %d || %s || %s&amp;quot;,&lt;br /&gt;
	                -- icon,&lt;br /&gt;
	                building.name,&lt;br /&gt;
	                building.housing,&lt;br /&gt;
	                building.unlocked_by_1 or &amp;quot;&amp;quot;,&lt;br /&gt;
	                stackFormat(building.construction) or &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
	            )&lt;br /&gt;
	        )&lt;br /&gt;
	    end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &amp;quot;|}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(out, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.principle(frame)&lt;br /&gt;
    local out = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &#039;{| class=&amp;quot;wikitable sortable&amp;quot;&#039;)&lt;br /&gt;
    table.insert(out, &#039;!class=&amp;quot;unsortable&amp;quot;| Icon !! Name !! Effect !! Unlock Requirement !! Building Cost&#039;)&lt;br /&gt;
&lt;br /&gt;
    for _, building in pairs(buildingData) do&lt;br /&gt;
        local icon = building.building_icon_filename&lt;br /&gt;
		if icon == nil or icon == &amp;quot;&amp;quot; then&lt;br /&gt;
		    icon = &amp;quot;T ICO resource Hardwood.png&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
        if building.category == &amp;quot;Principle&amp;quot; then&lt;br /&gt;
            local cost = &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
            &lt;br /&gt;
	        -- Build construction cost string&lt;br /&gt;
	        local parts = {}&lt;br /&gt;
	        for _, item in ipairs(building.construction or {}) do&lt;br /&gt;
	            if item.qty &amp;gt; 0 and item.resource ~= &amp;quot;&amp;quot; then&lt;br /&gt;
	                table.insert(parts,&lt;br /&gt;
	                    string.format(&amp;quot;%d [[%s]]&amp;quot;, item.qty, item.resource))&lt;br /&gt;
	            end&lt;br /&gt;
	        end&lt;br /&gt;
	&lt;br /&gt;
	        table.insert(out, &amp;quot;|-&amp;quot;)&lt;br /&gt;
	        table.insert(out,&lt;br /&gt;
	            string.format(&lt;br /&gt;
	                &amp;quot;|  {{Producer icon|T ICO resource Hardwood.png |size=lg}} || [[%s]] || %s || %s || %s&amp;quot;,&lt;br /&gt;
	                -- icon,&lt;br /&gt;
	                building.name,&lt;br /&gt;
	                building.description,&lt;br /&gt;
	                building.unlocked_by_1 or &amp;quot;&amp;quot;,&lt;br /&gt;
	                stackFormat(building.construction) or &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
	            )&lt;br /&gt;
	        )&lt;br /&gt;
	    end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &amp;quot;|}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(out, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.community(frame)&lt;br /&gt;
    local out = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &#039;{| class=&amp;quot;wikitable sortable&amp;quot;&#039;)&lt;br /&gt;
    table.insert(out, &amp;quot;!class=&#039;unsortable&#039;| Icon !! Name !! Dedicated Workers&amp;lt;br/&amp;gt;&#039;&#039;Without [[Pirates|Drifters]]&#039;&#039; !! Function !! Resource Input !! Building Cost&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    for _, building in pairs(buildingData) do&lt;br /&gt;
        local icon = building.building_icon_filename&lt;br /&gt;
		if icon == nil or icon == &amp;quot;&amp;quot; then&lt;br /&gt;
		    icon = &amp;quot;T ICO resource Hardwood.png&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
        if building.category == &amp;quot;Community&amp;quot; then&lt;br /&gt;
            local cost = &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
            &lt;br /&gt;
	        -- Build construction cost string&lt;br /&gt;
	        local parts = {}&lt;br /&gt;
	        for _, item in ipairs(building.construction or {}) do&lt;br /&gt;
	            if item.qty &amp;gt; 0 and item.resource ~= &amp;quot;&amp;quot; then&lt;br /&gt;
	                table.insert(parts,&lt;br /&gt;
	                    string.format(&amp;quot;%d [[%s]]&amp;quot;, item.qty, item.resource))&lt;br /&gt;
	            end&lt;br /&gt;
	        end&lt;br /&gt;
	&lt;br /&gt;
	        table.insert(out, &amp;quot;|-&amp;quot;)&lt;br /&gt;
	        table.insert(out,&lt;br /&gt;
	            string.format(&lt;br /&gt;
	                &amp;quot;|  {{Producer icon|T ICO resource Hardwood.png |size=lg}} || [[%s]] || %d [[Pirates|Builders]] || %s || %s || %s&amp;quot;,&lt;br /&gt;
	                -- icon,&lt;br /&gt;
	                building.name,&lt;br /&gt;
	                building.hands_builders,&lt;br /&gt;
	                building.description,&lt;br /&gt;
	                stackFormat(building.community_upkeep) or &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;,&lt;br /&gt;
	                stackFormat(building.construction) or &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
	            )&lt;br /&gt;
	        )&lt;br /&gt;
	    end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &amp;quot;|}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(out, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561197971186856</name></author>
	</entry>
	<entry>
		<id>https://wiki.hoodedhorse.com/Corsair_Cove/index.php?title=Module:BuildingTable&amp;diff=1259</id>
		<title>Module:BuildingTable</title>
		<link rel="alternate" type="text/html" href="https://wiki.hoodedhorse.com/Corsair_Cove/index.php?title=Module:BuildingTable&amp;diff=1259"/>
		<updated>2026-08-04T06:34:57Z</updated>

		<summary type="html">&lt;p&gt;76561197971186856: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local buildingData = require(&amp;quot;Module:BuildingData&amp;quot;)&lt;br /&gt;
local resourceData = require(&amp;quot;Module:ResourceData&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local function getResourceIcon(resourceName)&lt;br /&gt;
    local data = resourceData[resourceName]&lt;br /&gt;
    if not data then&lt;br /&gt;
        return &amp;quot;T Button SelectionBorder Default.png&amp;quot; -- or some other safe fallback&lt;br /&gt;
    end&lt;br /&gt;
    if not data.icon_file then&lt;br /&gt;
    	return &amp;quot;T Button SelectionBorder Default.png&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return data.icon_file&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function stackFormat(inputs)&lt;br /&gt;
    if not inputs then&lt;br /&gt;
        return &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local parts = {}&lt;br /&gt;
&lt;br /&gt;
    for _, item in ipairs(inputs) do&lt;br /&gt;
        if item.resource ~= &amp;quot;&amp;quot; and (item.qty or 0) &amp;gt; 0 then&lt;br /&gt;
            table.insert(parts, item.qty .. &amp;quot; [[File:&amp;quot; .. getResourceIcon(item.resource) .. &amp;quot;|16px]] &amp;quot; .. &amp;quot;[[&amp;quot; .. item.resource .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if #parts == 0 then&lt;br /&gt;
        return &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(parts, &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.producers(frame)&lt;br /&gt;
    local out = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &#039;{| class=&amp;quot;wikitable sortable&amp;quot;&#039;)&lt;br /&gt;
    table.insert(out, &#039;!class=&amp;quot;unsortable&amp;quot;| Icon !! Name !! Category !! Dedicated Workers !! Product !! Input !! Building Cost&#039;)&lt;br /&gt;
&lt;br /&gt;
    for _, building in pairs(buildingData) do&lt;br /&gt;
        local icon = building.building_icon_filename or &amp;quot;T Button SelectionBorder Default.png&amp;quot;&lt;br /&gt;
		if icon == nil or icon == &amp;quot;&amp;quot; then&lt;br /&gt;
		    icon = &amp;quot;T Button SelectionBorder Default.png&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
        local workers = (building.hands_greenhands or 0) + (building.hands_masterhands or 0)&lt;br /&gt;
&lt;br /&gt;
        if workers &amp;gt; 0 and building.production_output ~= &amp;quot;&amp;quot; and building.production_output ~= nil then&lt;br /&gt;
            local cost = &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
            -- Build construction cost string&lt;br /&gt;
            local parts = {}&lt;br /&gt;
            for _, item in ipairs(building.construction or {}) do&lt;br /&gt;
                if item.qty &amp;gt; 0 and item.resource ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                    table.insert(parts,&lt;br /&gt;
                        string.format(&amp;quot;%d [[%s]]&amp;quot;, item.qty, item.resource))&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            table.insert(out, &amp;quot;|-&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
			local icon2 = getResourceIcon(building.production_output)&lt;br /&gt;
			if icon2 == nil then&lt;br /&gt;
			    error(string.format(&lt;br /&gt;
			        &amp;quot;DEBUG: getResourceIcon returned nil for production_output=%q (building=%s)&amp;quot;,&lt;br /&gt;
			        tostring(building.production_output), tostring(building.name)&lt;br /&gt;
			    ))&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			table.insert(out,&lt;br /&gt;
			    string.format(&lt;br /&gt;
			        &amp;quot;|  &amp;lt;div class=&#039;cc-producer-icon&#039;&amp;gt;[[File:&amp;quot; .. icon .. &amp;quot;|48px]] || [[%s]] || %s || %d [[Pirates|Greenhands]] || %d [[File:&amp;quot; .. icon2 .. &amp;quot;|16px]] [[%s]] || %s || %s&amp;quot;,&lt;br /&gt;
			        building.name,&lt;br /&gt;
			        building.category,&lt;br /&gt;
			        workers,&lt;br /&gt;
			        building.production_output_qty or 0,&lt;br /&gt;
			        building.production_output or &amp;quot;&amp;quot;,&lt;br /&gt;
			        stackFormat(building.production_input) or &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;,&lt;br /&gt;
			        stackFormat(building.construction) or &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
			    )&lt;br /&gt;
			)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &amp;quot;|}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(out, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p.housing(frame)&lt;br /&gt;
    local out = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &#039;{| class=&amp;quot;wikitable sortable&amp;quot;&#039;)&lt;br /&gt;
    table.insert(out, &#039;!class=&amp;quot;unsortable&amp;quot;| Icon !! Name !! Capacity !! Unlock Requirement !! Building Cost&#039;)&lt;br /&gt;
&lt;br /&gt;
    for _, building in pairs(buildingData) do&lt;br /&gt;
        local icon = building.building_icon_filename&lt;br /&gt;
		if icon == nil or icon == &amp;quot;&amp;quot; then&lt;br /&gt;
		    icon = &amp;quot;T ICO resource Hardwood.png&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
        if building.housing &amp;gt; 0 then&lt;br /&gt;
            local cost = &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
            &lt;br /&gt;
	        -- Build construction cost string&lt;br /&gt;
	        local parts = {}&lt;br /&gt;
	        for _, item in ipairs(building.construction or {}) do&lt;br /&gt;
	            if item.qty &amp;gt; 0 and item.resource ~= &amp;quot;&amp;quot; then&lt;br /&gt;
	                table.insert(parts,&lt;br /&gt;
	                    string.format(&amp;quot;%d [[%s]]&amp;quot;, item.qty, item.resource))&lt;br /&gt;
	            end&lt;br /&gt;
	        end&lt;br /&gt;
	&lt;br /&gt;
	        table.insert(out, &amp;quot;|-&amp;quot;)&lt;br /&gt;
	        table.insert(out,&lt;br /&gt;
	            string.format(&lt;br /&gt;
	                &amp;quot;|  {{Producer icon|T ICO resource Hardwood.png |size=lg}} || [[%s]] || %d || %s || %s&amp;quot;,&lt;br /&gt;
	                -- icon,&lt;br /&gt;
	                building.name,&lt;br /&gt;
	                building.housing,&lt;br /&gt;
	                building.unlocked_by_1 or &amp;quot;&amp;quot;,&lt;br /&gt;
	                stackFormat(building.construction) or &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
	            )&lt;br /&gt;
	        )&lt;br /&gt;
	    end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &amp;quot;|}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(out, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.principle(frame)&lt;br /&gt;
    local out = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &#039;{| class=&amp;quot;wikitable sortable&amp;quot;&#039;)&lt;br /&gt;
    table.insert(out, &#039;!class=&amp;quot;unsortable&amp;quot;| Icon !! Name !! Effect !! Unlock Requirement !! Building Cost&#039;)&lt;br /&gt;
&lt;br /&gt;
    for _, building in pairs(buildingData) do&lt;br /&gt;
        local icon = building.building_icon_filename&lt;br /&gt;
		if icon == nil or icon == &amp;quot;&amp;quot; then&lt;br /&gt;
		    icon = &amp;quot;T ICO resource Hardwood.png&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
        if building.category == &amp;quot;Principle&amp;quot; then&lt;br /&gt;
            local cost = &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
            &lt;br /&gt;
	        -- Build construction cost string&lt;br /&gt;
	        local parts = {}&lt;br /&gt;
	        for _, item in ipairs(building.construction or {}) do&lt;br /&gt;
	            if item.qty &amp;gt; 0 and item.resource ~= &amp;quot;&amp;quot; then&lt;br /&gt;
	                table.insert(parts,&lt;br /&gt;
	                    string.format(&amp;quot;%d [[%s]]&amp;quot;, item.qty, item.resource))&lt;br /&gt;
	            end&lt;br /&gt;
	        end&lt;br /&gt;
	&lt;br /&gt;
	        table.insert(out, &amp;quot;|-&amp;quot;)&lt;br /&gt;
	        table.insert(out,&lt;br /&gt;
	            string.format(&lt;br /&gt;
	                &amp;quot;|  {{Producer icon|T ICO resource Hardwood.png |size=lg}} || [[%s]] || %s || %s || %s&amp;quot;,&lt;br /&gt;
	                -- icon,&lt;br /&gt;
	                building.name,&lt;br /&gt;
	                building.description,&lt;br /&gt;
	                building.unlocked_by_1 or &amp;quot;&amp;quot;,&lt;br /&gt;
	                stackFormat(building.construction) or &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
	            )&lt;br /&gt;
	        )&lt;br /&gt;
	    end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &amp;quot;|}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(out, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.community(frame)&lt;br /&gt;
    local out = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &#039;{| class=&amp;quot;wikitable sortable&amp;quot;&#039;)&lt;br /&gt;
    table.insert(out, &amp;quot;!class=&#039;unsortable&#039;| Icon !! Name !! Dedicated Workers&amp;lt;br/&amp;gt;&#039;&#039;Without [[Pirates|Drifters]]&#039;&#039; !! Function !! Resource Input !! Building Cost&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    for _, building in pairs(buildingData) do&lt;br /&gt;
        local icon = building.building_icon_filename&lt;br /&gt;
		if icon == nil or icon == &amp;quot;&amp;quot; then&lt;br /&gt;
		    icon = &amp;quot;T ICO resource Hardwood.png&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
        if building.category == &amp;quot;Community&amp;quot; then&lt;br /&gt;
            local cost = &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
            &lt;br /&gt;
	        -- Build construction cost string&lt;br /&gt;
	        local parts = {}&lt;br /&gt;
	        for _, item in ipairs(building.construction or {}) do&lt;br /&gt;
	            if item.qty &amp;gt; 0 and item.resource ~= &amp;quot;&amp;quot; then&lt;br /&gt;
	                table.insert(parts,&lt;br /&gt;
	                    string.format(&amp;quot;%d [[%s]]&amp;quot;, item.qty, item.resource))&lt;br /&gt;
	            end&lt;br /&gt;
	        end&lt;br /&gt;
	&lt;br /&gt;
	        table.insert(out, &amp;quot;|-&amp;quot;)&lt;br /&gt;
	        table.insert(out,&lt;br /&gt;
	            string.format(&lt;br /&gt;
	                &amp;quot;|  {{Producer icon|T ICO resource Hardwood.png |size=lg}} || [[%s]] || %d [[Pirates|Builders]] || %s || %s || %s&amp;quot;,&lt;br /&gt;
	                -- icon,&lt;br /&gt;
	                building.name,&lt;br /&gt;
	                building.hands_builders,&lt;br /&gt;
	                building.description or &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;,&lt;br /&gt;
	                stackFormat(building.community_upkeep) or &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;,&lt;br /&gt;
	                stackFormat(building.construction) or &amp;quot;&#039;&#039;None&#039;&#039;&amp;quot;&lt;br /&gt;
	            )&lt;br /&gt;
	        )&lt;br /&gt;
	    end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(out, &amp;quot;|}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(out, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>76561197971186856</name></author>
	</entry>
</feed>