Editing Module:PlantDetails

From Eco - English Wiki

Your changes will be displayed to readers once an authorized user accepts them. (help)

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
local p = {}
local p = {}


local Utils = require('Module:Utils')
-- 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


function p.listPlants(frame)
    local args = Utils.normaliseArgs(frame)
    return renderPlantList(args.type)
end


function renderPlantList(plantType)
-- Main entry point for the Module
     local plantData = require( "Module:PlantData" )
function p.main()
     local plantList
    -- get args from the Template
     if plantType == 'Tree' then
     local args = norm()
         plantList = plantData.tree_names
      
-- 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
     else
         plantList = plantData.plant_names
         speciesData = require( "Module:TreeData" )
        speciesTable = speciesData.trees[species]
     end
     end
     local plants = ''
 
     for _, plant in ipairs(plantList) do
     -- checks if species can be found in plant data or tree data based on what was requested
         plants = plants.."* [["..plant.."]]\n"
     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
    return plants
end


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


-- Main entry point for the Module
-- Build an Infobox_Plant
function p.main(frame)
-- string used to build the infobox
    -- get args from the Template
     local infobox = '{| class=\"infobox\"\n'
     local args = Utils.normaliseArgs(frame)
      
      
if args.plant == nil or args.plant == '' then
    -- name of the plant/tree
        return '\'plant\' must be specified.'
    infobox = infobox .. '|- style=\"color: white; background-color: dodgerblue; text-align: center;\"\n| colspan=\"2\" | \'\'\'<big>' .. species .. '</big>\'\'\'\n'
     end
     -- the sub heading plant or tree
     -- assign variables for plant
     infobox = infobox .. '|- style=\"text-align: center; color: white; background-color: '
     local plant = args.plant
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 .. '[[Scythe|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'
end
-- Temperature row
    -- 'Agriculture' section header
wikibox = wikibox .. '| rowspan="4" | Temperature Ranges \n'
if
wikibox = wikibox .. '| Ideal Minimum : ' .. plantTable.idealTempMin .. '\n'
-- speciesTable.seedDrop ~= nil or
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'
speciesTable.resourceItem ~= nil or speciesTable.requireHarvestable ~= nil then
wikibox = wikibox .. '|- \n| Ideal Maximum : ' .. plantTable.idealTempMax .. '\n'
infobox = infobox .. '|- style=\"background-color: #4B9130; text-align: center;\"\n| colspan=\"2\" | \'\'\'Agriculture\'\'\'\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'
-- Harvested Tool
wikibox = wikibox .. '|- \n| Extreme Maximum : ' .. plantTable.extremeTempMax .. '\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
-- Moisture row
--Experience Per Harvest
wikibox = wikibox .. '|- \n| rowspan="4" | Moisture Ranges \n'
if speciesTable.experiencePerHarvest ~= nil then
wikibox = wikibox .. '| Ideal Minimum : ' .. plantTable.idealMoistureMin .. '\n'
infobox = infobox .. '|- valign=\"center\"\n| Base Experience Per Harvest:\n| style=\"text-align: right;\" |' .. experiencePerHarvest .. ' \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'
end
wikibox = wikibox .. '|- \n| Ideal Maximum : ' .. plantTable.idealMoistureMax .. '\n'
 
wikibox = wikibox .. '|- \n| Extreme Minimum  : ' .. plantTable.extremeMoistureMin .. '\n'
-- Ideal Growth Rate
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'
if speciesTable.idealGrowthRate ~= nil then
wikibox = wikibox .. '|- \n| Extreme Maximum : ' .. plantTable.extremeMoistureMax .. '\n'
infobox = infobox .. '|- valign=\"center\"\n| Ideal Growth Rate:\n| style=\"text-align: right;\" |' .. idealGrowthRate .. ' \n'
end
-- Salt row
 
wikibox = wikibox .. '|- \n| rowspan="4" | Salt Ranges \n'
-- Ideal Death Rate
wikibox = wikibox .. '| Ideal Minimum : ' .. plantTable.idealSaltMin .. '\n'
if speciesTable.idealDeathRate ~= nil then
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'
infobox = infobox .. '|- valign=\"center\"\n| Ideal Death Rate:\n| style=\"text-align: right;\" |' .. idealDeathRate .. ' \n'
wikibox = wikibox .. '|- \n| Ideal Maximum : ' .. plantTable.idealSaltMax .. '\n'
end
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'
-- Ideal Temp
wikibox = wikibox .. '|- \n| Extreme Maximum : ' .. plantTable.extremeSaltMax .. '\n'
if speciesTable.idealTempMin ~= nil then
infobox = infobox .. '|- valign=\"center\"\n| Ideal Temperature Range:\n| style=\"text-align: right;\" | ' .. speciesTable.idealTempMin .. ' - ' .. speciesTable.idealTempMax .. '\n'
-- Soil Restrictions
end
wikibox = wikibox .. '|- \n| rowspan="4" | Soil Conditions \n'
if plantTable.nitrogenHalfSpeed == nil then
-- Ideal Moisture
wikibox = wikibox .. '| Nitrogen minimum : None \n'
if speciesTable.idealMoistureMin ~= nil then
else
infobox = infobox .. '|- valign=\"center\"\n| Ideal Moisture Range:\n| style=\"text-align: right;\" | ' .. speciesTable.idealMoistureMin .. ' - ' .. speciesTable.idealMoistureMax .. '\n'
wikibox = wikibox .. '| Nitrogen minimum : ' .. plantTable.nitrogenHalfSpeed .. '\n'
end
end
wikibox = wikibox .. '| rowspan="4" | Any nutirent dropping below its minimum will reduce the growth of the plant to half speed\n'
-- Ground nutrients
if plantTable.phosphorusHalfSpeed == nil then
if speciesTable.nitrogenHalfSpeed ~= nil or speciesTable.phosphorusHalfSpeed ~= nil or speciesTable.potassiumHalfSpeed ~= nil or speciesTable.soilMoistureHalfSpeed ~= nil then
wikibox = wikibox .. '|- \n| Phosphorus minimum : None \n'
infobox = infobox .. '|-\n| Minimum Soil Nutrients:\n| style=\"text-align: right;\" | \n'
else
if speciesTable.nitrogenHalfSpeed ~= nil then
wikibox = wikibox .. '|- \n| Phosphorus minimum : ' .. plantTable.phosphorusHalfSpeed .. '\n'
infobox = infobox .. '|- style=\"color: red; valign: center;\"\n| Nitrogen:\n| style=\"text-align: right;\" | ' .. speciesTable.nitrogenHalfSpeed .. '\n'
end
end
if plantTable.potassiumHalfSpeed == nil then
if speciesTable.phosphorusHalfSpeed ~= nil then
wikibox = wikibox .. '|- \n| Potassium minimum : None \n'
infobox = infobox .. '|- style=\"color: darkorange; valign: center;\"\n| Phosphorous:\n| style=\"text-align: right;\" | ' .. speciesTable.phosphorusHalfSpeed .. '\n'
else
end
wikibox = wikibox .. '|- \n| Potassium minimum  : ' .. plantTable.potassiumHalfSpeed .. '\n'
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
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
-- Max Pollution Density
wikibox = wikibox .. '|- \n| rowspan="3" | Resource Yield \n'
if speciesTable.maxPollutionDensity ~= nil then
wikibox = wikibox .. '| Minimum yield : ' .. plantTable.resourceMin .. '\n'
infobox = infobox .. '|- valign=\"center\"\n|Max Pollution Density:\n| style=\"text-align: right;\" |' .. maxPollutionDensity .. ' \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
wikibox = wikibox .. '| rowspan="4" | Nutrients Depleted \n'
if plantTable.nitrogenContent == nil then
wikibox = wikibox .. '| Nitrogen absorbed : None \n'
else
wikibox = wikibox .. '| Nitrogen absorbed : ' .. plantTable.nitrogenContent .. '\n'
end
end
wikibox = wikibox .. '| rowspan="4" | The amount of nutrients an adult plant absorbs from the soil\n'
 
if plantTable.phosphorusContent == nil then
-- Pollution Tolerance
wikibox = wikibox .. '|- \n| Phosphorus absorbed : None \n'
if speciesTable.pollutionTolerance ~= nil then
else
infobox = infobox .. '|- valign=\"center\"\n| Pollution Tolerance:\n| style=\"text-align: right;\" |' .. pollutionTolerance .. ' \n'
wikibox = wikibox .. '|- \n| Phosphorus absorbed : ' .. plantTable.phosphorusContent .. '\n'
end
end
 
if plantTable.potassiumContent == nil then
    infobox = infobox .. '|}'
wikibox = wikibox .. '|- \n| Potassium absorbed : None \n'
else
wikibox = wikibox .. '|- \n| Potassium absorbed  : ' .. plantTable.potassiumContent .. '\n'
end
if plantTable.soilMoistureContent == nil then
wikibox = wikibox .. '|- \n| Soil Moisture absorbed : None \n'
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
Please note that all contributions to Eco - English Wiki are considered to be released under the CC BY-NC-SA 4.0 (see Eco:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)

Template used on this page: