ATTENTION! The process of updating WiKi to version Eco 10.x has begun. Those wishing to participate can find out more Information on our ECO Contribution Wiki Discord.
From April 26 to May 12, errors may occur in the Wiki, as we will be carrying out a major update to the information processing modules.

Module:Infobox Plant: Difference between revisions

From Eco - English Wiki
[unchecked revision][checked revision]
No edit summary
No edit summary
 
(27 intermediate revisions by one other user not shown)
Line 67: Line 67:
-- string used to build the infobox
-- string used to build the infobox
     local infobox = '{| class=\"infobox\"\n'
     local infobox = '{| class=\"infobox\"\n'
   
 
     -- name of the plant/tree
     -- name of the plant/tree
     infobox = infobox .. '|- style=\"color: #333333; background-color: #1165AF; text-align: center;\"\n| colspan=\"2\" | \'\'\'<big>' .. species .. '</big>\'\'\'\n'
     infobox = infobox .. '|- style=\"color: white; background-color: #1165AF; text-align: center;\"\n| colspan=\"2\" | \'\'\'<big>' .. species .. '</big>\'\'\'\n'
   
   
     -- the sub heading plant or tree
     -- the sub heading plant or tree
     infobox = infobox .. '|- style=\"text-align: center; color: #333333; background-color: '
     infobox = infobox .. '|- style=\"text-align: center; color: white; background-color: '
if check == 'plant' then
if check == 'plant' then
infobox = infobox .. 'seagreen;\"\n| colspan=\"2\" | \'\'\'Plant\'\'\'[[Category:Plants]]\n'
infobox = infobox .. 'seagreen;\"\n| colspan=\"2\" | \'\'\'Plant\'\'\'[[Category:Plants]]\n'
Line 82: Line 82:
local checkImage = {'_Plant.png','_Plant.jpg','_Plant.jpeg','_Tree.png','_Tree.jpg','_Tree.jpeg'}
local checkImage = {'_Plant.png','_Plant.jpg','_Plant.jpeg','_Tree.png','_Tree.jpg','_Tree.jpeg'}
local image = ''  
local image = ''  
local speciesimagename = string.gsub(species, ' ', '')
local speciesEN = speciesTable.untranslated
local speciesimagename = string.gsub(speciesEN, ' ', '')
for i,v in ipairs(checkImage) do  
for i,v in ipairs(checkImage) do  
Line 91: Line 92:
if table.getn(checkImage) == i then
if table.getn(checkImage) == i then
image = 'NoImage.png'  
image = 'NoImage.png'  
if check == 'Plant' then  
if check == 'plant' then  
image = image .. '|64px|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. speciesimagename .. '_Plant.png|[[Category:Pages_with_missing_plant]]'
image = image .. '|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. speciesimagename .. '_Plant.png|[[Category:Pages_with_missing_plant]]'
end
end
if check == 'Tree' then  
if check == 'tree' then  
image = image .. '|64px|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. speciesimagename .. '_Tree.png|[[Category:Pages_with_missing_tree]]'
image = image .. '|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. speciesimagename .. '_Tree.png|[[Category:Pages_with_missing_tree]]'
end
end
end
end
end
end
   
 
infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | [[File:' .. image .. '|center|border|240px]]\n'
 
infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | [[File:' .. image .. '|center|border|250x250px]]\n'
   
   
-- 'General' section header
-- 'General' section header
infobox = infobox .. '|- style=\"color: #7BC2CE; background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'General\'\'\'\n'
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'General\'\'\'\n'
--Harvestable plant
--Harvestable plant
Line 109: Line 111:
-- speciesTable.seedDrop ~= nil or  
-- speciesTable.seedDrop ~= nil or  
speciesTable.resourceItem ~= nil or speciesTable.requireHarvestable ~= nil then
speciesTable.resourceItem ~= nil or speciesTable.requireHarvestable ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Harvestable:\n| style=\"text-align: right;\" | Yes \n'
infobox = infobox .. '|- valign=\"center\"\n| Harvestable:\n| style=\"text-align: right; padding: 3px;\" | Yes \n'
end
end
--Underwater plant
--Underwater plant
if speciesTable.isWater ~= nil then
if speciesTable.isWater ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Underwater Plant:\n| style=\"text-align: right;\" | Yes \n'
infobox = infobox .. '|- valign=\"center\"\n| Underwater Plant:\n| style=\"text-align: right; padding: 3px;\" | Yes \n'
end
end
--Decorative Plant
--Decorative Plant
if speciesTable.isDecorative ~= nil then
if speciesTable.isDecorative ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Decorative Plant:\n| style=\"text-align: right;\" | Yes \n'
infobox = infobox .. '|- valign=\"center\"\n| Decorative Plant:\n| style=\"text-align: right; padding: 3px;\" | Yes \n'
end
end
--Plant Height
--Plant Height
if speciesTable.height ~= nil then
if speciesTable.height ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Plant Height:\n| style=\"text-align: right;\" | ' .. speciesTable.height .. ' m \n'
infobox = infobox .. '|- valign=\"center\"\n| Plant Height:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.height .. ' m \n'
end
end
Line 131: Line 133:
-- speciesTable.seedDrop ~= nil or  
-- speciesTable.seedDrop ~= nil or  
speciesTable.resourceItem ~= nil or speciesTable.requireHarvestable ~= nil then
speciesTable.resourceItem ~= nil or speciesTable.requireHarvestable ~= nil then
infobox = infobox .. '|- style=\"color: #7BC2CE; background-color: #337AB7; text-align: center;\"\n| colspan=\"2\" | \'\'\'Agriculture\'\'\'\n'
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Agriculture\'\'\'\n'
-- 'Harvesting' sub section header
-- 'Harvesting' sub section header
infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | \'\'Harvesting\'\'\n'
infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | \'\'\'Harvesting\'\'\'\n'
-- Harvested Tool  
-- Harvested Tool  
if speciesTable.harvestTool ~= nil then
if speciesTable.harvestTool ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Harvest Tool:\n| style=\"text-align: right;\" | ' .. speciesTable.harvestTool .. ' \n'
infobox = infobox .. '|- valign=\"center\"\n| Harvest Tool:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.harvestTool .. ' \n'
end
end
-- Harvested Seed
-- Harvested Seed
-- if speciesTable.seedDrop ~= nil and speciesTable.seedMax ~= '0.0' then
-- if speciesTable.seedDrop ~= nil and speciesTable.seedMax ~= '0.0' then
-- infobox = infobox .. '|- valign=\"center\"\n| Harvested Seed:\n| style=\"text-align: right;\" | ' .. speciesTable.seedDrop .. '\n'
-- infobox = infobox .. '|- valign=\"center\"\n| Harvested Seed:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.seedDrop .. '\n'
-- end
-- end
-- Harvested Item
-- Harvested Item
if speciesTable.resourceItem ~= nil then
if speciesTable.resourceItem ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Harvested Item:\n| style=\"text-align: right;\" | ' .. speciesTable.resourceItem .. '\n'
infobox = infobox .. '|- valign=\"center\"\n| Harvested Item:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.resourceItem .. '\n'
end
end
--Plant Calorie Value
--Plant Calorie Value
if speciesTable.calorieValue ~= nil then
if speciesTable.calorieValue ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Plant Calorie Value:\n| style=\"text-align: right;\" |' .. speciesTable.calorieValue .. ' \n'
infobox = infobox .. '|- valign=\"center\"\n| Plant Calorie Value:\n| style=\"text-align: right; padding: 3px;\" |' .. speciesTable.calorieValue .. ' \n'
end
end
--Experience Per Harvest
--XP Per Harvest
if speciesTable.experiencePerHarvest ~= nil then
if speciesTable.experiencePerHarvest ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Base Experience Per Harvest:\n| style=\"text-align: right;\" |' .. speciesTable.experiencePerHarvest .. ' \n'
infobox = infobox .. '|- valign=\"center\"\n| Base XP Per Harvest:\n| style=\"text-align: right; padding: 3px;\" |' .. speciesTable.experiencePerHarvest .. ' \n'
end
end
infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | \'\'Ideal Conditions\'\'\n'
infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | \'\'\'Ideal Conditions\'\'\'\n'
-- Ideal Growth Rate
-- Ideal Growth Rate
if speciesTable.idealGrowthRate ~= nil then
if speciesTable.idealGrowthRate ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Ideal Growth Rate:\n| style=\"text-align: right;\" |' .. speciesTable.idealGrowthRate .. ' \n'
speciesTable.idealGrowthRate = speciesTable.idealGrowthRate*100
infobox = infobox .. '|- valign=\"center\"\n| Ideal Growth Rate:\n| style=\"text-align: right; padding: 3px;\" |' .. speciesTable.idealGrowthRate .. ' % \n'
end
end


-- Ideal Death Rate
-- Ideal Death Rate
if speciesTable.idealDeathRate ~= nil then
if speciesTable.idealDeathRate ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Ideal Death Rate:\n| style=\"text-align: right;\" |' .. speciesTable.idealDeathRate .. ' \n'
speciesTable.idealDeathRate = speciesTable.idealDeathRate*100
infobox = infobox .. '|- valign=\"center\"\n| Ideal Death Rate:\n| style=\"text-align: right; padding: 3px;\" |' .. speciesTable.idealDeathRate .. ' % \n'
end
end


-- Ideal Temp
-- Ideal Temp
if speciesTable.idealTempMin ~= nil then
if speciesTable.idealTempMin ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Ideal Temperature Range:\n| style=\"text-align: right;\" | ' .. speciesTable.idealTempMin .. ' -  ' .. speciesTable.idealTempMax .. '\n'
speciesTable.idealTempMin = speciesTable.idealTempMin*40-10
            speciesTable.idealTempMax = speciesTable.idealTempMax*40-10
infobox = infobox .. '|- valign=\"center\"\n| Ideal Temperature Range:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.idealTempMin .. ' -  ' .. speciesTable.idealTempMax .. ' Celsius \n'
end
end
-- Ideal Moisture
-- Ideal Moisture
if speciesTable.idealMoistureMin ~= nil then
if speciesTable.idealMoistureMin ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Ideal Moisture Range:\n| style=\"text-align: right;\" | ' .. speciesTable.idealMoistureMin .. ' -  ' .. speciesTable.idealMoistureMax .. '\n'
speciesTable.idealMoistureMin = speciesTable.idealMoistureMin*100
speciesTable.idealMoistureMax = speciesTable.idealMoistureMax*100
infobox = infobox .. '|- valign=\"center\"\n| Ideal Moisture Range:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.idealMoistureMin .. ' -  ' .. speciesTable.idealMoistureMax .. '\n'
end
end


-- Max Pollution Density
-- Max Pollution Density
if speciesTable.maxPollutionDensity ~= nil then
if speciesTable.maxPollutionDensity ~= nil then
infobox = infobox .. '|- valign=\"center\"\n|Max Pollution Density:\n| style=\"text-align: right;\" |' .. speciesTable.maxPollutionDensity .. ' ppm \n'
speciesTable.maxPollutionDensity = speciesTable.maxPollutionDensity*100
infobox = infobox .. '|- valign=\"center\"\n|Max Ground Pollution:\n| style=\"text-align: right; padding: 3px;\" |' .. speciesTable.maxPollutionDensity .. ' %\n'
end
end


-- Pollution Tolerance
-- Pollution Tolerance
if speciesTable.pollutionTolerance ~= nil then
if speciesTable.pollutionTolerance ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Pollution Tolerance:\n| style=\"text-align: right;\" |' .. speciesTable.pollutionTolerance .. ' ppm \n'
speciesTable.pollutionTolerance = speciesTable.pollutionTolerance*100
infobox = infobox .. '|- valign=\"center\"\n| Pollution Tolerance:\n| style=\"text-align: right; padding: 3px;\" |' .. speciesTable.pollutionTolerance .. ' %\n'
end
end


Line 197: Line 207:
infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | \'\'\'Minimum Soil Nutrients\'\'\'\n'
infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | \'\'\'Minimum Soil Nutrients\'\'\'\n'
if speciesTable.nitrogenHalfSpeed ~= nil then
if speciesTable.nitrogenHalfSpeed ~= nil then
infobox = infobox .. '|- style=\"color: red; valign: center;\"\n| Nitrogen:\n| style=\"text-align: right;\" | ' .. speciesTable.nitrogenHalfSpeed .. '\n'
infobox = infobox .. '|- style=\"color: red; valign: center;\"\n| Nitrogen:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.nitrogenHalfSpeed .. '\n'
end
end
if speciesTable.phosphorusHalfSpeed ~= nil then
if speciesTable.phosphorusHalfSpeed ~= nil then
infobox = infobox .. '|- style=\"color: darkorange; valign: center;\"\n| Phosphorous:\n| style=\"text-align: right;\" | ' .. speciesTable.phosphorusHalfSpeed .. '\n'
infobox = infobox .. '|- style=\"color: darkorange; valign: center;\"\n| Phosphorous:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.phosphorusHalfSpeed .. '\n'
end
end
if speciesTable.potassiumHalfSpeed ~= nil then
if speciesTable.potassiumHalfSpeed ~= nil then
infobox = infobox .. '|- style=\"color: limegreen; valign: center;\"\n| Potassium:\n| style=\"text-align: right;\" | ' .. speciesTable.potassiumHalfSpeed .. '\n'
infobox = infobox .. '|- style=\"color: green; valign: center;\"\n| Potassium:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.potassiumHalfSpeed .. '\n'
end
end
if speciesTable.soilMoistureHalfSpeed ~= nil then
if speciesTable.soilMoistureHalfSpeed ~= nil then
infobox = infobox .. '|- style=\"color: dodgerblue; valign: center;\"\n| Soil Moisture:\n| style=\"text-align: right;\" | ' .. speciesTable.soilMoistureHalfSpeed .. '\n'
speciesTable.soilMoistureHalfSpeed = speciesTable.soilMoistureHalfSpeed*100
infobox = infobox .. '|- style=\"color: dodgerblue; valign: center;\"\n| Soil Moisture:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.soilMoistureHalfSpeed .. ' ppm \n'
end
end
end
end
end
end
-- 'Other' section header
-- 'Effects on Environment' section header
infobox = infobox .. '|- style=\"background-color: #337AB7; text-align: center;\"\n| colspan=\"2\" | \'\'\'Effects on Environment\'\'\'\n'
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Effects on Environment\'\'\'\n'
--Carbon release
--Carbon release
     if speciesTable.carbonRelease ~= nil then
     if speciesTable.carbonRelease ~= nil then
         local absoluteCarbon = string.sub(speciesTable.carbonRelease , 2)
         local absoluteCarbon = string.sub(speciesTable.carbonRelease , 2)
         infobox = infobox .. '|- valign=\"center\"\n| Carbon Absorbed:\n| style=\"text-align: right;\" | ' .. absoluteCarbon .. ' ppm \n'
         infobox = infobox .. '|- valign=\"center\"\n| Carbon Absorbed:\n| style=\"text-align: right; padding: 3px;\" | ' .. absoluteCarbon .. ' ppm \n'
     end
     end



Latest revision as of 18:10, 19 February 2022

Documentation[edit source]

This module provides the back end functionality of the Template:Infobox_Plant.

If the template is passed an Infobox will be made using details from the following Modules:


local p = {}

-- Grabs args from the parent frame
-- Trims and parses the args into a table, then returns the table
function norm()
    local origArgs = mw.getCurrentFrame():getParent().args
    local args = {}
    
    for k, v in pairs( origArgs ) do
        v = mw.text.trim( tostring( v ) )
        if v ~= '' then
            args[k] = v
        end
    end
    
    return args
end


-- Main entry point for the Module
function p.main()
     -- get args from the Template
    local args = norm()
    
	-- create values outside of if statements to ensure they are available to whole function
	local species = ''
	local check = ''
	
    -- assign variables for plant or  tree whatever is passed. Plant has priority so if both are passed only plant will continue.
    if args.plant ~= nil then
        species = args.plant
        check = 'plant'
    elseif args.tree ~= nil then
        species = args.tree
        check = 'tree'
    end
   
	-- check to see if species was actually passed in
	if species == '' then
		return 'plant or tree must be specified.'
    end
   
	local speciesData = {}
	local speciesTable = {}
   
    -- checks if plant  and assigns correct modules based on check
    if check == 'plant' then
        speciesData = require( "Module:PlantData" )
        speciesTable = speciesData.plants[species]
    else
        speciesData = require( "Module:TreeData" )
        speciesTable = speciesData.trees[species]
    end

    -- checks if species can be found in plant data or tree data based on what was requested
    if speciesTable == {} then
        if check == 'plant' then
            return species .. ' could not be found in Module:PlantData.'
        else
            return species .. ' could not be found in Module:TreeData.'
        end
    end

    -- From now on using speciesTable."KeyValue" will return the value from that key. for most things a check for species type is not necessary

-- Build an Infobox_Plant
	-- string used to build the infobox
    local infobox = '{| class=\"infobox\"\n'
   
    -- name of the plant/tree
    infobox = infobox .. '|- style=\"color: white; background-color: #1165AF; text-align: center;\"\n| colspan=\"2\" | \'\'\'<big>' .. species .. '</big>\'\'\'\n'
 
    -- the sub heading plant or tree
    infobox = infobox .. '|- style=\"text-align: center; color: white; background-color: '	
	if check == 'plant' then
		infobox = infobox .. 'seagreen;\"\n| colspan=\"2\" | \'\'\'Plant\'\'\'[[Category:Plants]]\n'
    else
		infobox = infobox .. 'olivedrab;\"\n| colspan=\"2\" | \'\'\'Tree\'\'\'[[Category:Trees]]\n'
    end 
   
	-- Plants Image
	local checkImage = {'_Plant.png','_Plant.jpg','_Plant.jpeg','_Tree.png','_Tree.jpg','_Tree.jpeg'}
	local image = '' 
	local speciesEN = speciesTable.untranslated
	local speciesimagename = string.gsub(speciesEN, ' ', '')
	
	for i,v in ipairs(checkImage) do 
		image = speciesimagename .. checkImage[i]
		if mw.title.makeTitle('File', image).file.exists then
			break
		end
		if table.getn(checkImage) == i then
			image = 'NoImage.png' 
			if check == 'plant' then 
				image = image .. '|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. speciesimagename .. '_Plant.png|[[Category:Pages_with_missing_plant]]'
			end
			if check == 'tree' then 
				image = image .. '|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. speciesimagename .. '_Tree.png|[[Category:Pages_with_missing_tree]]'
			end				
		end
	end
   
  
	infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | [[File:' .. image .. '|center|border|250x250px]]\n'
 
	-- 'General' section header
	infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'General\'\'\'\n'
	
	--Harvestable plant
	if 
--	speciesTable.seedDrop ~= nil or 
	speciesTable.resourceItem ~= nil or speciesTable.requireHarvestable ~= nil then
		infobox = infobox .. '|- valign=\"center\"\n| Harvestable:\n| style=\"text-align: right; padding: 3px;\" | Yes \n'
	end
	
	--Underwater plant
	if speciesTable.isWater ~= nil then
		infobox = infobox .. '|- valign=\"center\"\n| Underwater Plant:\n| style=\"text-align: right; padding: 3px;\" | Yes \n'	
	end
	
	--Decorative Plant
	if speciesTable.isDecorative ~= nil then
		infobox = infobox .. '|- valign=\"center\"\n| Decorative Plant:\n| style=\"text-align: right; padding: 3px;\" | Yes \n'	
	end
	
	--Plant Height
		if speciesTable.height ~= nil then
		infobox = infobox .. '|- valign=\"center\"\n| Plant Height:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.height .. ' m \n'	
	end	
	
    -- 'Agriculture' section header
	if 
	--	speciesTable.seedDrop ~= nil or 
	speciesTable.resourceItem ~= nil or speciesTable.requireHarvestable ~= nil then
		infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | 	\'\'\'Agriculture\'\'\'\n'	
		
		-- 'Harvesting' sub section header		
		infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | \'\'\'Harvesting\'\'\'\n'	
		
		-- Harvested Tool 
		if speciesTable.harvestTool ~= nil then
			infobox = infobox .. '|- valign=\"center\"\n| Harvest Tool:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.harvestTool .. ' \n'
		end	
	
		-- Harvested Seed
--		if speciesTable.seedDrop ~= nil and speciesTable.seedMax ~= '0.0' then
--		infobox = infobox .. '|- valign=\"center\"\n| Harvested Seed:\n| style=\"text-align: right; padding: 3px;\" | ' .. 		speciesTable.seedDrop .. '\n'	
--		end
		
		-- Harvested Item
		if speciesTable.resourceItem ~= nil then
			infobox = infobox .. '|- valign=\"center\"\n| Harvested Item:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.resourceItem .. '\n'	
		end
	
		--Plant Calorie Value
		if speciesTable.calorieValue ~= nil then
			infobox = infobox .. '|- valign=\"center\"\n| Plant Calorie Value:\n| style=\"text-align: right; padding: 3px;\" |' .. speciesTable.calorieValue .. ' \n'
		end		
	
		--XP Per Harvest
		if speciesTable.experiencePerHarvest ~= nil then
			infobox = infobox .. '|- valign=\"center\"\n| Base XP Per Harvest:\n| style=\"text-align: right; padding: 3px;\" |' .. 	speciesTable.experiencePerHarvest .. ' \n'
		end		
		
		infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | \'\'\'Ideal Conditions\'\'\'\n'
		-- Ideal Growth Rate
		if speciesTable.idealGrowthRate ~= nil then
			speciesTable.idealGrowthRate = speciesTable.idealGrowthRate*100	
			infobox = infobox .. '|- valign=\"center\"\n| Ideal Growth Rate:\n| style=\"text-align: right; padding: 3px;\" |' .. 	speciesTable.idealGrowthRate .. ' % \n'	
		end

		-- Ideal Death Rate
		if speciesTable.idealDeathRate ~= nil then
			speciesTable.idealDeathRate = speciesTable.idealDeathRate*100
			infobox = infobox .. '|- valign=\"center\"\n| Ideal Death Rate:\n| style=\"text-align: right; padding: 3px;\" |' .. 	speciesTable.idealDeathRate .. ' % \n'
		end

		-- Ideal Temp
		if speciesTable.idealTempMin ~= nil then
			speciesTable.idealTempMin = speciesTable.idealTempMin*40-10
            speciesTable.idealTempMax = speciesTable.idealTempMax*40-10
			infobox = infobox .. '|- valign=\"center\"\n| Ideal Temperature Range:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.idealTempMin .. ' -  ' .. speciesTable.idealTempMax .. ' Celsius \n'	
		end
		
		-- Ideal Moisture
		if speciesTable.idealMoistureMin ~= nil then
			speciesTable.idealMoistureMin = speciesTable.idealMoistureMin*100
			speciesTable.idealMoistureMax = speciesTable.idealMoistureMax*100
			infobox = infobox .. '|- valign=\"center\"\n| Ideal Moisture Range:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.idealMoistureMin .. ' -  ' .. speciesTable.idealMoistureMax .. '\n'	
		end

		-- Max Pollution Density
		if speciesTable.maxPollutionDensity ~= nil then
			speciesTable.maxPollutionDensity = speciesTable.maxPollutionDensity*100
			infobox = infobox .. '|- valign=\"center\"\n|Max Ground Pollution:\n| style=\"text-align: right; padding: 3px;\" |' .. 	speciesTable.maxPollutionDensity .. ' %\n'
		end

		-- Pollution Tolerance
		if speciesTable.pollutionTolerance ~= nil then
			speciesTable.pollutionTolerance = speciesTable.pollutionTolerance*100
			infobox = infobox .. '|- valign=\"center\"\n| Pollution Tolerance:\n| style=\"text-align: right; padding: 3px;\" |' .. speciesTable.pollutionTolerance .. ' %\n'
		end

		-- Ground nutrients
		if speciesTable.nitrogenHalfSpeed ~= nil or speciesTable.phosphorusHalfSpeed ~= nil or speciesTable.potassiumHalfSpeed ~= nil or speciesTable.soilMoistureHalfSpeed ~= nil then
			-- 'Minimum Soil Nutrients' Mini section header
			infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | \'\'\'Minimum Soil Nutrients\'\'\'\n'
			if speciesTable.nitrogenHalfSpeed ~= nil then
				infobox = infobox .. '|- style=\"color: red; valign: center;\"\n| Nitrogen:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.nitrogenHalfSpeed .. '\n'
			end
			if speciesTable.phosphorusHalfSpeed ~= nil then
				infobox = infobox .. '|- style=\"color: darkorange; valign: center;\"\n| Phosphorous:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.phosphorusHalfSpeed .. '\n'
			end
			if speciesTable.potassiumHalfSpeed ~= nil then
				infobox = infobox .. '|- style=\"color: green; valign: center;\"\n| Potassium:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.potassiumHalfSpeed .. '\n'
			end
			if speciesTable.soilMoistureHalfSpeed ~= nil then
				speciesTable.soilMoistureHalfSpeed = speciesTable.soilMoistureHalfSpeed*100
				infobox = infobox .. '|- style=\"color: dodgerblue; valign: center;\"\n| Soil Moisture:\n| style=\"text-align: right; padding: 3px;\" | ' .. speciesTable.soilMoistureHalfSpeed .. ' ppm \n'
			end				
		end		
	end
	
	-- 'Effects on Environment' section header
	infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Effects on Environment\'\'\'\n'
	
	--Carbon release
    if speciesTable.carbonRelease ~= nil then
        local absoluteCarbon = string.sub(speciesTable.carbonRelease , 2)
        infobox = infobox .. '|- valign=\"center\"\n| Carbon Absorbed:\n| style=\"text-align: right; padding: 3px;\" | ' .. absoluteCarbon .. ' ppm \n'
    end

    infobox = infobox .. '|}'
	
    return infobox
end

return p