Module:PlantDetails: Difference between revisions

From Eco - English Wiki
[unchecked revision][unchecked revision]
No edit summary
(Remove old data and add new data)
Line 16: Line 16:
     return args
     return args
end
end


-- Main entry point for the Module
-- Main entry point for the Module
function p.main()
function p.main()
    -- get args from the Template
    -- get args from the Template
     local args = norm()
     local args = norm()
      
      
if args.plant == nil or args.plant == '' then
-- create values outside of if statements to ensure they are available to whole function
         return '\'plant\' must be specified.'
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
     end
 
     -- assign variables for plant
    -- From now on using speciesTable."KeyValue" will return the value from that key. for most things a check for species type is not necessary
     local plant = args.plant
 
-- 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: dodgerblue; 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 .. 'limegreen;\"\n| colspan=\"2\" | \'\'\'Plant\'\'\'[[Category:Plants]]\n'
    else
infobox = infobox .. 'olive;\"\n| colspan=\"2\" | \'\'\'Tree\'\'\'[[Category:Trees]]\n'
    end
    
    
    -- load list of recipes
-- Plants Image
    local plantData = require( "Module:PlantData" )
local checkImage = {'_Plant.png','_Plant.jpg','_Plant.jpeg','_Tree.png','_Tree.jpg','_Tree.jpeg'}
    local plantTable = plantData.plants[plant]
local image = ''
    if plantTable == nil then
local speciesimagename = string.gsub(species, ' ', '')
return plant .. ' could not be found in Module:PlantData.'
end   
local wikibox = '=== Plant Properties===\n'
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|240px]]\n'
-- 'General' section header
infobox = infobox .. '|- style=\"background-color: #4B9130; text-align: center;\"\n| colspan=\"2\" | \'\'\'General\'\'\'\n'
if plantTable.isDecorative == 'Decorative' then
--Harvestable plant
wikibox = wikibox .. 'This plant is decorative only. \n'
if  
-- speciesTable.seedDrop ~= nil or
speciesTable.resourceItem ~= nil or speciesTable.requireHarvestable ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Harvestable:\n| style=\"text-align: right;\" | Yes \n'
end
end
if plantTable.isWater == 'Underwater' then
wikibox = wikibox .. 'This plant grows underwater. \n'
--Underwater plant
if speciesTable.isWater ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Underwater Plant:\n| style=\"text-align: right;\" | Yes \n'
end
end
if plantTable.scytheKills =='Yes' then
wikibox = wikibox .. 'Scything this plant will kill it. \n'
--Decorative Plant
if speciesTable.isDecorative ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Decorative Plant:\n| style=\"text-align: right;\" | Yes \n'
end
end
wikibox = wikibox .. '\n===Environmental Conditions===\n'
--Plant Height
wikibox = wikibox .. '{| class=\"wikitable\"\n'
if speciesTable.height ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Harvest Tool Required:\n| style=\"text-align: right;\" | ' .. height .. ' \n'
-- Temperature row
end
wikibox = wikibox .. '| rowspan="4" | Temperature Ranges \n'
wikibox = wikibox .. '| Ideal Minimum : ' .. plantTable.idealTempMin .. '\n'
wikibox = wikibox .. '| rowspan="2" |  Ideal Range: The plant\'s preferred temperature range.  Temperatures in this range won\'t inhibit population growth or reduce yield.\n'
wikibox = wikibox .. '|- \n| Ideal Maximum : ' .. plantTable.idealTempMax .. '\n'
wikibox = wikibox .. '|- \n| Extreme Minimum  : ' .. plantTable.extremeTempMin .. '\n'
wikibox = wikibox .. '| rowspan="2" | Extreme Range : The temperature range that can support this plant (albeit at reduced efficiency if the temperature is not also within the ideal range).  Temperatures outside this range prohibit reproduction entirely and prevent any yield at all. \n'
wikibox = wikibox .. '|- \n| Extreme Maximum : ' .. plantTable.extremeTempMax .. '\n'
-- Moisture row
wikibox = wikibox .. '|- \n| rowspan="4" | Moisture Ranges \n'
wikibox = wikibox .. '| Ideal Minimum : ' .. plantTable.idealMoistureMin .. '\n'
wikibox = wikibox .. '| rowspan="2" |  Ideal Range: The plant\'s preferred moisture range.  Moisture in this range won\'t inhibit population growth or reduce yield.\n'
wikibox = wikibox .. '|- \n| Ideal Maximum : ' .. plantTable.idealMoistureMax .. '\n'
wikibox = wikibox .. '|- \n| Extreme Minimum  : ' .. plantTable.extremeMoistureMin .. '\n'
wikibox = wikibox .. '| rowspan="2" | Extreme Range : The moisture range that can support this plant (albeit at reduced efficiency if the moisture is not also within the ideal range).  Moisture outside this range prohibits reproduction entirely and prevent any yield at all. \n'
wikibox = wikibox .. '|- \n| Extreme Maximum : ' .. plantTable.extremeMoistureMax .. '\n'
-- Salt row
    -- 'Agriculture' section header
wikibox = wikibox .. '|- \n| rowspan="4" | Salt Ranges \n'
if
wikibox = wikibox .. '| Ideal Minimum : ' .. plantTable.idealSaltMin .. '\n'
-- speciesTable.seedDrop ~= nil or
wikibox = wikibox .. '| rowspan="2" |  Ideal Range: The plant\'s preferred sale range.  Salt in this range won\'t inhibit population growth or reduce yield.\n'
speciesTable.resourceItem ~= nil or speciesTable.requireHarvestable ~= nil then
wikibox = wikibox .. '|- \n| Ideal Maximum : ' .. plantTable.idealSaltMax .. '\n'
infobox = infobox .. '|- style=\"background-color: #4B9130; text-align: center;\"\n| colspan=\"2\" | \'\'\'Agriculture\'\'\'\n'
wikibox = wikibox .. '|- \n| Extreme Minimum  : ' .. plantTable.extremeSaltMin .. '\n'
wikibox = wikibox .. '| rowspan="2" | Extreme Range : The salt range that can support this plant (albeit at reduced efficiency if the salt is not also within the ideal range).  Salt outside this range prohibits reproduction entirely and prevent any yield at all. \n'
-- Harvested Tool
wikibox = wikibox .. '|- \n| Extreme Maximum : ' .. plantTable.extremeSaltMax .. '\n'
if speciesTable.harvestTool ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Harvest Tool Required:\n| style=\"text-align: right;\" | ' .. 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;\" | ' .. speciesTable.seedDrop .. '\n'
-- end
-- Harvested Item
if speciesTable.resourceItem ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Harvested Item:\n| style=\"text-align: right;\" | ' .. 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;\" |' .. calorieValue .. ' \n'
end
-- Soil Restrictions
--Experience Per Harvest
wikibox = wikibox .. '|- \n| rowspan="4" | Soil Conditions \n'
if speciesTable.experiencePerHarvest ~= nil then
if plantTable.nitrogenHalfSpeed == nil then
infobox = infobox .. '|- valign=\"center\"\n| Base Experience Per Harvest:\n| style=\"text-align: right;\" |' .. experiencePerHarvest .. ' \n'
wikibox = wikibox .. '| Nitrogen minimum : None \n'
end
else
 
wikibox = wikibox .. '| Nitrogen minimum : ' .. plantTable.nitrogenHalfSpeed .. '\n'
-- Ideal Growth Rate
if speciesTable.idealGrowthRate ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Ideal Growth Rate:\n| style=\"text-align: right;\" |' .. idealGrowthRate .. ' \n'
end
 
-- Ideal Death Rate
if speciesTable.idealDeathRate ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Ideal Death Rate:\n| style=\"text-align: right;\" |' .. idealDeathRate .. ' \n'
end
 
-- Ideal Temp
if speciesTable.idealTempMin ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Ideal Temperature Range:\n| style=\"text-align: right;\" | ' .. speciesTable.idealTempMin .. ' -  ' .. speciesTable.idealTempMax .. '\n'
end
-- Ideal Moisture
if speciesTable.idealMoistureMin ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Ideal Moisture Range:\n| style=\"text-align: right;\" | ' .. speciesTable.idealMoistureMin .. ' -  ' .. speciesTable.idealMoistureMax .. '\n'
end
-- Ground nutrients
if speciesTable.nitrogenHalfSpeed ~= nil or speciesTable.phosphorusHalfSpeed ~= nil or speciesTable.potassiumHalfSpeed ~= nil or speciesTable.soilMoistureHalfSpeed ~= nil then
infobox = infobox .. '|-\n| Minimum Soil Nutrients:\n| style=\"text-align: right;\" | \n'
if speciesTable.nitrogenHalfSpeed ~= nil then
infobox = infobox .. '|- style=\"color: red; valign: center;\"\n| Nitrogen:\n| style=\"text-align: right;\" | ' .. speciesTable.nitrogenHalfSpeed .. '\n'
end
if speciesTable.phosphorusHalfSpeed ~= nil then
infobox = infobox .. '|- style=\"color: darkorange; valign: center;\"\n| Phosphorous:\n| style=\"text-align: right;\" | ' .. speciesTable.phosphorusHalfSpeed .. '\n'
end
if speciesTable.potassiumHalfSpeed ~= nil then
infobox = infobox .. '|- style=\"color: gold; valign: center;\"\n| Potassium:\n| style=\"text-align: right;\" | ' .. speciesTable.potassiumHalfSpeed .. '\n'
end
if speciesTable.soilMoistureHalfSpeed ~= nil then
infobox = infobox .. '|- style=\"color: teal; valign: center;\"\n| Soil Moisture:\n| style=\"text-align: right;\" | ' .. speciesTable.soilMoistureHalfSpeed .. '\n'
end
end
end
end
wikibox = wikibox .. '| rowspan="4" | Any nutirent dropping below its minimum will reduce the growth of the plant to half speed\n'
if plantTable.phosphorusHalfSpeed == nil then
wikibox = wikibox .. '|- \n| Phosphorus minimum : None \n'
else
wikibox = wikibox .. '|- \n| Phosphorus minimum : ' .. plantTable.phosphorusHalfSpeed .. '\n'
end
if plantTable.potassiumHalfSpeed == nil then
wikibox = wikibox .. '|- \n| Potassium minimum : None \n'
else
wikibox = wikibox .. '|- \n| Potassium minimum  : ' .. plantTable.potassiumHalfSpeed .. '\n'
end
if plantTable.soilMoistureHalfSpeed == nil then
wikibox = wikibox .. '|- \n| Soil Moisture minimum : None \n'
else
wikibox = wikibox .. '|- \n| Soil Moisture minimum : ' .. plantTable.soilMoistureHalfSpeed .. '\n'
end
wikibox = wikibox .. '|}\n\n'
wikibox = wikibox .. '===Plant Harvest===\n'
-- 'Other' section header
wikibox = wikibox .. '{| class=\"wikitable\"\n'
infobox = infobox .. '|- style=\"background-color: #4B9130; text-align: center;\"\n| colspan=\"2\" | \'\'\'Polution\'\'\'\n'
-- Growth Details
--Carbon release
wikibox = wikibox .. '|- \n| rowspan="3" | Growth Stages \n'
    if speciesTable.carbonRelease ~= nil then
wikibox = wikibox .. '| Mature in ' .. plantTable.maturity .. ' days\n'
        local absoluteCarbon = string.sub(speciesTable.carbonRelease , 2)
wikibox = wikibox .. '| How many days it takes for this plant to mature \n'
        infobox = infobox .. '|- valign=\"center\"\n| Carbon Absorbed:\n| style=\"text-align: right;\" | ' .. absoluteCarbon .. ' ppm \n'
wikibox = wikibox .. '|- \n| Pickable at ' .. plantTable.pickableAtPercent .. '% growth\n'
    end
wikibox = wikibox .. '| The percent it is possible to pick this plant \n'
if plantTable.killOnHarvest == 'Yes' then
wikibox = wikibox .. '|- \n| Harvesting Kills \n'
wikibox = wikibox .. '| This plant must be replanted from seeds after harvesting \n'
else
wikibox = wikibox .. '|- \n| Returns to ' .. plantTable.postHarvestGrowth .. '% growth\n'
wikibox = wikibox .. '| This plant will return to an immature state on harvesting \n'
end
-- Resource Yields
wikibox = wikibox .. '|- \n| rowspan="3" | Resource Yield \n'
wikibox = wikibox .. '| Minimum yield : ' .. plantTable.resourceMin .. '\n'
wikibox = wikibox .. '| The minimum yield from harvesting this plant at maturity \n'
wikibox = wikibox .. '|- \n| Maximum Yield : ' .. plantTable.resourceMax .. '\n'
wikibox = wikibox .. '| The maximum yield from harvesting this plant at maturity \n'
wikibox = wikibox .. '|- \n| Yield Bonus : ' .. plantTable.resourceBonus .. '% growth\n'
wikibox = wikibox .. '| The growth at which you get a yield bonus from the minimum \n'
wikibox = wikibox .. '|}\n\n'
wikibox = wikibox .. '===Environmental Effects===\n'
wikibox = wikibox .. '{| class=\"wikitable\"\n'
-- Soil Effects
-- Max Pollution Density
wikibox = wikibox .. '| rowspan="4" | Nutrients Depleted \n'
if speciesTable.maxPollutionDensity ~= nil then
if plantTable.nitrogenContent == nil then
infobox = infobox .. '|- valign=\"center\"\n|Max Pollution Density:\n| style=\"text-align: right;\" |' .. maxPollutionDensity .. ' \n'
wikibox = wikibox .. '| Nitrogen absorbed : None \n'
else
wikibox = wikibox .. '| Nitrogen absorbed : ' .. plantTable.nitrogenContent .. '\n'
end
wikibox = wikibox .. '| rowspan="4" | The amount of nutrients an adult plant absorbs from the soil\n'
if plantTable.phosphorusContent == nil then
wikibox = wikibox .. '|- \n| Phosphorus absorbed : None \n'
else
wikibox = wikibox .. '|- \n| Phosphorus absorbed : ' .. plantTable.phosphorusContent .. '\n'
end
end
if plantTable.potassiumContent == nil then
 
wikibox = wikibox .. '|- \n| Potassium absorbed : None \n'
-- Pollution Tolerance
else
if speciesTable.pollutionTolerance ~= nil then
wikibox = wikibox .. '|- \n| Potassium absorbed  : ' .. plantTable.potassiumContent .. '\n'
infobox = infobox .. '|- valign=\"center\"\n| Pollution Tolerance:\n| style=\"text-align: right;\" |' .. pollutionTolerance .. ' \n'
end
end
if plantTable.soilMoistureContent == nil then
 
wikibox = wikibox .. '|- \n| Soil Moisture absorbed : None \n'
    infobox = infobox .. '|}'
else
wikibox = wikibox .. '|- \n| Soil Moisture absorbed : ' .. plantTable.soilMoistureContent .. '\n'
end
-- Overcrowding Effects
wikibox = wikibox .. '|- \n| rowspan="4" | Space Required \n'
if plantTable.consumedFertileGround == nil then
wikibox = wikibox .. '| Fertile ground occupied : None \n'
else
wikibox = wikibox .. '| Fertile ground occupied : ' .. plantTable.consumedFertileGround .. '\n'
end
wikibox = wikibox .. '| rowspan="4" | The amount of each space occupied by each plant\n'
if plantTable.consumedUnderwaterFertileGround == nil then
wikibox = wikibox .. '|- \n| Underwater fertile ground occupied : None \n'
else
wikibox = wikibox .. '|- \n| Underwater fertile ground occupied : ' .. plantTable.consumedUnderwaterFertileGround .. '\n'
end
if plantTable.consumedShrubSpace == nil then
wikibox = wikibox .. '|- \n| Shrub space occupied : None \n'
else
wikibox = wikibox .. '|- \n| Shrub space occupied : ' .. plantTable.consumedShrubSpace .. '\n'
end
if plantTable.consumedCanopySpace == nil then
wikibox = wikibox .. '|- \n| Canopy space occupied : None \n'
else
wikibox = wikibox .. '|- \n| Canopy space occupied : ' .. plantTable.consumedCanopySpace .. '\n'
end
wikibox = wikibox .. '|}\n\n'
return wikibox
    return infobox
end
end


return p
return p

Revision as of 20:17, 14 August 2020

Documentation

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

If the template is passed, this module creates a table 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: dodgerblue; 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 .. 'limegreen;\"\n| colspan=\"2\" | \'\'\'Plant\'\'\'[[Category:Plants]]\n'
    else
		infobox = infobox .. 'olive;\"\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 speciesimagename = string.gsub(species, ' ', '')
	
	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|240px]]\n'
 
	-- 'General' section header
	infobox = infobox .. '|- style=\"background-color: #4B9130; 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;\" | Yes \n'
	end
	
	--Underwater plant
	if speciesTable.isWater ~= nil then
		infobox = infobox .. '|- valign=\"center\"\n| Underwater Plant:\n| style=\"text-align: right;\" | Yes \n'	
	end
	
	--Decorative Plant
	if speciesTable.isDecorative ~= nil then
		infobox = infobox .. '|- valign=\"center\"\n| Decorative Plant:\n| style=\"text-align: right;\" | Yes \n'	
	end
	
	--Plant Height
		if speciesTable.height ~= nil then
	infobox = infobox .. '|- valign=\"center\"\n| Harvest Tool Required:\n| style=\"text-align: right;\" | ' .. height .. ' \n'
	end		
	
    -- 'Agriculture' section header
	if 
	--	speciesTable.seedDrop ~= nil or 
	speciesTable.resourceItem ~= nil or speciesTable.requireHarvestable ~= nil then
		infobox = infobox .. '|- style=\"background-color: #4B9130; text-align: center;\"\n| colspan=\"2\" | 	\'\'\'Agriculture\'\'\'\n'
		
		-- Harvested Tool 
		if speciesTable.harvestTool ~= nil then
			infobox = infobox .. '|- valign=\"center\"\n| Harvest Tool Required:\n| style=\"text-align: right;\" | ' .. 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;\" | ' .. 		speciesTable.seedDrop .. '\n'	
--		end
		
		-- Harvested Item
		if speciesTable.resourceItem ~= nil then
			infobox = infobox .. '|- valign=\"center\"\n| Harvested Item:\n| style=\"text-align: right;\" | ' .. 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;\" |' .. calorieValue .. ' \n'
		end		
	
		--Experience Per Harvest
		if speciesTable.experiencePerHarvest ~= nil then
			infobox = infobox .. '|- valign=\"center\"\n| Base Experience Per Harvest:\n| style=\"text-align: right;\" |' .. 	experiencePerHarvest .. ' \n'
		end			

		-- Ideal Growth Rate
		if speciesTable.idealGrowthRate ~= nil then
			infobox = infobox .. '|- valign=\"center\"\n| Ideal Growth Rate:\n| style=\"text-align: right;\" |' .. 	idealGrowthRate .. ' \n'	
		end

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

		-- Ideal Temp
		if speciesTable.idealTempMin ~= nil then
			infobox = infobox .. '|- valign=\"center\"\n| Ideal Temperature Range:\n| style=\"text-align: right;\" | ' .. speciesTable.idealTempMin .. ' -  ' .. speciesTable.idealTempMax .. '\n'	
		end
		
		-- Ideal Moisture
		if speciesTable.idealMoistureMin ~= nil then
			infobox = infobox .. '|- valign=\"center\"\n| Ideal Moisture Range:\n| style=\"text-align: right;\" | ' .. speciesTable.idealMoistureMin .. ' -  ' .. speciesTable.idealMoistureMax .. '\n'	
		end
		
		-- Ground nutrients
		if speciesTable.nitrogenHalfSpeed ~= nil or speciesTable.phosphorusHalfSpeed ~= nil or speciesTable.potassiumHalfSpeed ~= nil or speciesTable.soilMoistureHalfSpeed ~= nil then
			infobox = infobox .. '|-\n| Minimum Soil Nutrients:\n| style=\"text-align: right;\" | \n'		
			if speciesTable.nitrogenHalfSpeed ~= nil then
				infobox = infobox .. '|- style=\"color: red; valign: center;\"\n| Nitrogen:\n| style=\"text-align: right;\" | ' .. speciesTable.nitrogenHalfSpeed .. '\n'
			end
			if speciesTable.phosphorusHalfSpeed ~= nil then
				infobox = infobox .. '|- style=\"color: darkorange; valign: center;\"\n| Phosphorous:\n| style=\"text-align: right;\" | ' .. speciesTable.phosphorusHalfSpeed .. '\n'
			end
			if speciesTable.potassiumHalfSpeed ~= nil then
				infobox = infobox .. '|- style=\"color: gold; valign: center;\"\n| Potassium:\n| style=\"text-align: right;\" | ' .. speciesTable.potassiumHalfSpeed .. '\n'
			end
			if speciesTable.soilMoistureHalfSpeed ~= nil then
				infobox = infobox .. '|- style=\"color: teal; valign: center;\"\n| Soil Moisture:\n| style=\"text-align: right;\" | ' .. speciesTable.soilMoistureHalfSpeed .. '\n'
			end				
		end		
	end
	
	-- 'Other' section header
	infobox = infobox .. '|- style=\"background-color: #4B9130; text-align: center;\"\n| colspan=\"2\" | \'\'\'Polution\'\'\'\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;\" | ' .. absoluteCarbon .. ' ppm \n'
    end
	
	-- Max Pollution Density
	if speciesTable.maxPollutionDensity ~= nil then
		infobox = infobox .. '|- valign=\"center\"\n|Max Pollution Density:\n| style=\"text-align: right;\" |' .. 	maxPollutionDensity .. ' \n'
	end

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

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

return p