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.

Editing Module:Infobox Animal

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")
 
local Unit = require("Module:Unit")
-- Grabs args from the parent frame
local AnimalUtils = require("Module:UtilsAnimalTables")
-- 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
 


-- Build an Animal Infobox
-- Build an Animal Infobox
function animalBox( args, animalData )
function animalBox( args, animalData )
     -- check that all necessary arguments are passed correctly
     -- check that all necessary arguments are passed correctly
     assert(not Utils.isEmpty(args.name), 'Member \'name\' must be specified for an animal in Module:AnimalData.')
     if args.name == nil or args.name == '' then
        return '\'name\' must be specified.'
    end
      
      
    local animal = args.name
local animal = args.name
    local animalTable = animalData.animals[animal]


     --Check Passes
local animalimagename = string.gsub(animal, ' ', '')
    assert(animalTable ~= nil, mw.ustring.format('Animal \'%s\' could not be found in Module:AnimalData.', animal))
      
 
local animalTable = animalData.animals[animal]
    local animalEN = animalTable.untranslated
if animalTable == nil then
    local animalimagename = string.gsub(animalEN, ' ', '')
return animal .. ' could not be found in Module:AnimalData.'
end
      
      
     -- string used to build the infobox
     -- string used to build the infobox
     local alternateRowColor = ' bgcolor=\"#c3e2ec\"' -- Mixed in 10% Green Blue Crayola from the palette with the table background color.
     local infobox = '{| class=\"infobox\"\n'
    local headerStyle = 'style=\"background-color:#4688C0;text-align:center;\"'
    local valueColumnStyle = 'style=\"text-align:right;padding:0.2em\"'
    local longValueColumnStyle = 'style=\"text-align:right;padding:0.2em;max-width:12em\"'
      
      
    local infobox = '{| class=\"infobox\"\n'
     -- name of the animal
     -- name of the animal
     infobox = infobox .. '|- style=\"color: white; background-color: #1165AF; text-align: center;\"\n| colspan=\"2\" | \'\'\'<big>' .. animal .. '</big>\'\'\'\n'
     infobox = infobox .. '|- style=\"text-color: white; background-color: darkgreen; text-align: center;\"\n| colspan=\"2\" | \'\'\'<big>' .. animal .. '</big>\'\'\'\n'
          
          
     -- Water, Flying or Land Animal
     -- Water, Flying or Land Animal
     infobox = infobox .. '|- style=\"text-align: center; color: white; background-color: '
     infobox = infobox .. '|- style=\"text-align: center; background-color: #517ab2;\"\n| colspan=\"2\"'
     if animalTable.isSwimming == 'Swimming' then
     if animalTable.isSwimming == 'Swimming' then
         infobox = infobox .. '#65a9e6;\"\n| colspan=\"2\" | \'\'\'Water Animal\'\'\'[[Category:Animals]]\n'
         infobox = infobox .. '| \'\'\'Water Animal\'\'\'\n'
     elseif animalTable.isFlying == 'Flying' then
     elseif animalTable.isFlying == 'Flying' then
         infobox = infobox .. '#e3bd27;\"\n| colspan=\"2\" | \'\'\'Flying Animal\'\'\'[[Category:Animals]]\n'
         infobox = infobox .. '| \'\'\'Flying Animal\'\'\'\n'
     else  
     else  
         infobox = infobox .. '#11af53;\"\n| colspan=\"2\" | \'\'\'Land Animal\'\'\'[[Category:Animals]]\n'    
         infobox = infobox .. '| \'\'\'Land Animal\'\'\'\n'    
     end  
     end
 
     -- Animals Icon Image
     -- Animals Icon Image
     local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. animalimagename .. '_Animal.png|[[Category:Pages_with_missing_animal]]'
     local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. animalimagename .. '_Animal.png|[[Category:Pages_with_missing_animal]]'
Line 46: Line 58:
     end
     end
      
      
    infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding:0;\" | [[File:' .. image .. '|center|frameless|250x250px]]\n'
infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | [[File:' .. image .. '|center|border|240px]]\n'
      
      
     -- 'General' section header
     -- 'General' section header
     infobox = infobox .. '|-' .. headerStyle .. '\n| colspan=\"2\" | \'\'\'General\'\'\'\n'
     infobox = infobox .. '|- style=\"background-color: #4B9130; text-align: center;\"\n| colspan=\"2\" | \'\'\'General\'\'\'\n'


    -- Health
-- Health
    if animalTable.health ~= nil then
if animalTable.health ~= nil then
        infobox = infobox .. '|-\n| Health:\n|' .. valueColumnStyle .. '| ' .. animalTable.health .. '\n'
infobox = infobox .. '|-\n| Health:\n| style=\"text-align: right;\" | ' .. animalTable.health .. '\n'
    end  
end
   
    -- Idle Speed
-- Idle Speed
    if animalTable.wanderingSpeed ~= nil then
if animalTable.wanderingSpeed ~= nil then
        infobox = infobox .. '|-' .. alternateRowColor .. '\n| Idle Speed:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.wanderingSpeed, 'm/s') .. '\n'
infobox = infobox .. '|-\n| Idle Speed:\n| style=\"text-align: right;\" | ' .. animalTable.wanderingSpeed .. ' mps\n'
    end      
end
 
-- Eats
if animalTable.foodSources ~= nil then
infobox = infobox .. '|-\n| Eats:\n| style=\"text-align: right;\" | ' .. animalTable.foodSources .. '\n'
end
-- Climbing
if animalTable.climbHeight ~= nil then
infobox = infobox .. '|-\n| Climb Height:\n| style=\"text-align: right;\" | ' .. animalTable.climbHeight .. ' m \n'
end
-- Carbon Released
if animalTable.carbonRelease ~= nil then
infobox = infobox .. '|-\n| Carbon Released:\n| style=\"text-align: right;\" | ' .. animalTable.carbonRelease .. ' ppm \n'
end


    -- Eats
     if animalTable.foodSources ~= nil then
     -- 'Hunting Infomation' section header
        -- 12em seems to be enough for the other column to scale up to fill the remaining space.
     infobox = infobox .. '|- style=\"background-color: #4B9130; text-align: center;\"\n| colspan=\"2\" | \'\'\'Hunting\'\'\'\n'
        -- With this the longest line "Attack Damage:" fits on one line.
        infobox = infobox .. '|-\n| Eats:\n|' .. longValueColumnStyle .. '| ' .. AnimalUtils.formatFoodSources(animalTable.foodSources) .. '\n'
     end   
   
    -- Climbing
    if animalTable.climbHeight ~= nil then
        infobox = infobox .. '|--' .. alternateRowColor .. '\n| Climb Height:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.climbHeight, 'm') .. '\n'
    end   
   
    -- Carbon Released
    if animalTable.carbonRelease ~= nil then
        infobox = infobox .. '|-\n| Carbon Released:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.carbonRelease, 'ppm') .. '\n'
    end   
   
    -- 'Hunting Information' section header
    infobox = infobox .. '|-' .. headerStyle .. '\n| colspan=\"2\" | \'\'\'Hunting\'\'\'\n'  


    -- Harvest
-- Harvest
    if animalTable.resourceItem ~= nil then
if animalTable.resourceItem ~= nil then
        infobox = infobox .. '|-\n| Harvest Item:\n|' .. valueColumnStyle .. '| ' .. animalTable.resourceItem .. '\n'
infobox = infobox .. '|-\n| Harvest Item:\n| style=\"text-align: right;\" | ' .. animalTable.resourceItem .. '\n'
    end  
end
   
    -- Flees
-- Flees
    infobox = infobox .. '|--' .. alternateRowColor .. '\n| Flees:\n|' .. valueColumnStyle .. '| ' .. Utils.formatNilToYesNo(animalTable.flees) .. '\n'
if animalTable.flees ~= nil then
infobox = infobox .. '|-\n| Flees:\n| style=\"text-align: right;\" | Yes \n'
else
infobox = infobox .. '|-\n| Flees:\n| style=\"text-align: right;\" | No \n'
end


    -- Animals Fear
-- Animals Fear
    if animalTable.fearFactor ~= nil then
if animalTable.fearFactor ~= nil then
        infobox = infobox .. '|-\n| [[Fear Factor]]:\n|' .. valueColumnStyle .. '| ' .. animalTable.fearFactor .. '\n'
infobox = infobox .. '|-\n| [[Fear Factor]]:\n| style=\"text-align: right;\" | ' .. animalTable.fearFactor .. '\n'
    end
end
   
    -- Running Speed
-- Running Speed
    if animalTable.speed ~= nil then
if animalTable.speed ~= nil then
        infobox = infobox .. '|-' .. alternateRowColor .. '\n| Flee Speed:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.speed, 'm/s') .. '\n'
infobox = infobox .. '|-\n| Flee Speed:\n| style=\"text-align: right;\" | ' .. animalTable.speed .. ' mps \n'
    end      
end


    -- Attack Chance
        -- Attack Chance
    if animalTable.chanceToAttack ~= nil then
        if animalTable.chanceToAttack ~= nil then
        infobox = infobox .. '|-\n| Attack Chance:\n|' .. valueColumnStyle .. '| ' .. tonumber(Unit._unit(animalTable.chanceToAttack))*100 .. ' % \n'
            infobox = infobox .. '|-\n| Attack Chance:\n| style=\"text-align: right;\" | ' .. (animalTable.chanceToAttack*100) .. ' % \n'
    end
        end
   
    -- Attack Damage
-- Attack Damage
    if animalTable.damage ~= nil then
if animalTable.damage ~= nil then
        infobox = infobox .. '|-' .. alternateRowColor .. '\n| Attack Damage:\n|' .. valueColumnStyle .. '| ' .. animalTable.damage .. '\n'
infobox = infobox .. '|-\n| Attack Damage:\n| style=\"text-align: right;\" | ' .. animalTable.damage .. '\n'
    end
end
   
    -- Detect Range
-- Detect Range
    if animalTable.detectRange ~= nil then
if animalTable.detectRange ~= nil then
        infobox = infobox .. '|-\n| Detect Range:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.detectRange, 'm') .. '\n'
infobox = infobox .. '|-\n| Detect Range:\n| style=\"text-align: right;\" | ' .. animalTable.detectRange .. ' m \n'
    end
end


    -- Attack Range
-- Attack Range
    if animalTable.attackRange ~= nil then
if animalTable.attackRange ~= nil then
        infobox = infobox .. '|-' .. alternateRowColor .. '\n| Attack Range:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.attackRange, 'm') .. '\n'
infobox = infobox .. '|-\n| Attack Range:\n| style=\"text-align: right;\" | ' .. animalTable.attackRange .. ' m \n'
    end      
end
   
     infobox = infobox .. '|}'
     infobox = infobox .. '|}'
   
     return infobox
     return infobox
end
end


-- Main entry point for the Module
-- Main entry point for the Module
function p.AnimalMain(frame)
function p.AnimalMain()
     -- get args from the Template
     -- get args from the Template
     local args = Utils.normaliseArgs(frame)
     local args = norm()
      
      
     -- get animal data
     -- get animal data
     local animalData = require( 'Module:AnimalData' )
     local animalData = require( "Module:AnimalData" )
      
      
     return animalBox( args, animalData )
     return animalBox( args, animalData )
   
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: