Module:Infobox Skill
From Eco - English Wiki
Documentation[edit source]
This module provides the back end functionality of the Template:Infobox_Skill.
If the template is passed an Infobox will be made using details from the following Modules:
Credit[edit source]
Original Infobox (now known as Infobox_Item) created by Pradoxzon was then edited by Nesphit and TreeNuts0. Fyre (FishAus) and Scotty (ZeelNightwolf) further edited the Infobox_Item. They then duplicated and used as a base for Infobox_Skill, Infobox_Plant, and Infobox_Animal.
-- Credit: Original Infobox (now known as Infobox_Item) created by Pradoxzon was then edited by Nesphit and TreeNuts0. Fyre (FishAus) and Scotty (ZeelNightwolf) further edited the Infobox_Item. They then duplicated and used as a base for Infobox_Skill, Infobox_Plant, and Infobox_Animal. 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.SkillMain() -- get args from the Template local args = norm() -- create values outside of if statements to ensure they are available to whole function local skills = '' local check = '' -- assign variables for skill or talent whatever is passed. Skill has priority so if both are passed only skill will continue. if args.skill ~= nil then skills = args.skill check = 'skill' elseif args.talent ~= nil then skills = args.talent check = 'talent' end -- check to see if skills was actually passed in if skills == '' then return 'skill or talent must be specified.' end local skillData = {} local skillTable = {} -- checks if skill and assigns correct modules based on check if check == 'skill' then skillData = require( "Module:Skills" ) skillTable = skillData.skills[skills] else skillData = require( "Module:TalentData" ) skillTable = skillData.talents[skills] end -- checks if skills can be found in plant data or tree data based on what was requested if skillTable == {} then if check == 'skill' then return skills .. ' could not be found in Module:Skills.' else return skills .. ' could not be found in Module:TalentData.' end end -- From now on using skillsTable."KeyValue" will return the value from that key. for most things a check for skills type is not necessary -- Build an Infobox_Plant -- string used to build the infobox local infobox = '{| class=\"infobox\"\n' -- name of the skill/talent infobox = infobox .. '|- style=\"color: white; background-color: #1165AF; text-align: center;\"\n| colspan=\"2\" | \'\'\'<big>' .. skills .. '</big>\'\'\'\n' infobox = infobox .. '|- style=\"text-align: center;color: white; background-color: goldenrod;\"\n| colspan=\"2\"' if skillTable.root == true then infobox = infobox .. '| \'\'\'Profession\'\'\'[[Category:Profession]]\n' elseif skillTable.specialty == true then infobox = infobox .. '| \'\'\'Specialty\'\'\'[[Category:Specialty]]\n' elseif skillTable.group == 'Talents' then infobox = infobox .. '| \'\'\'Talent\'\'\'[[Category:Talent]]\n' else infobox = infobox .. '|\n' end -- Skill or Talent Image local checkImage = {'_Icon.png','_Icon.jpg'} local image = '' if skillTable.skillID ~= nil then skillId = skillTable.skillID skillEN = string.sub (skillId, 1, -6) skillsimagename = string.gsub(skillEN, ' ', '') elseif skillTable.untranslated ~= nil then talentEN = skillTable.untranslated skillsimagename = string.gsub(talentEN, ' ', '') end for i,v in ipairs(checkImage) do image = skillsimagename .. checkImage[i] if mw.title.makeTitle('File', image).file.exists then break end if table.getn(checkImage) == i then image = 'NoImage.png' if check == 'skill' then image = image .. '|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. skillsimagename .. '_Icon.png|[[Category:Pages_with_missing_skill_Icon]]' end if check == 'talent' then image = image .. '|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. skillsimagename .. '_Icon.png|[[Category:Pages_with_missing_talent_Icon]]' end end end if check == 'skill' then infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | <div class="iconContainer"><div class="iconStack">[[File:' .. image .. '|frameless|class=iconOrange]]</div><div class=iconBorder style=\"position:absolute;\"></div></div> \n' elseif check == 'talent' then infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | <div class="iconContainer"><div class="iconStack">[[File:' .. image .. '|frameless|class=iconBrown]]</div><div class=iconBorder style=\"position:absolute;\"></div></div> \n' else infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | <div class="iconContainer"><div class="iconStack">[[File:' .. image .. '|frameless|class=iconBlue]]</div><div class=iconBorder style=\"position:absolute;\"></div></div> \n' end -- 'Description' section header infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Description\'\'\'\n' if skillTable.description == nil then infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | \'\'\'None\'\'\'\n' elseif skillTable.description == '' then infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | \'\'\'None\'\'\'\n' else infobox = infobox .. '|- style=\"text-align: center;\"\n| colspan=\"2\" | ' .. skillTable.description .. '\n' end --SKILL if check == 'skill' then -- 'Skill Information' section header infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Skill Information\'\'\'\n' -- Professsion .rootSkill if skillTable.rootSkill ~= nil then infobox = infobox .. '|-\n| Profession:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.rootSkill .. '\n' end -- Specialty .specialitySkill if skillTable.specialitySkill ~= nil then infobox = infobox .. '|-\n| Specialty:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.specialitySkill .. '\n' end -- Skills Required .prerequisites if skillTable.prerequisites ~= nil then infobox = infobox .. '|-\n| Skills Required:\n| style=\"text-align: right; padding: 3px;\" |[[ ' .. skillTable.prerequisites .. ']]\n' end -- Leads to childSkills if skillTable.childSkills ~= nil then for i,v in pairs(skillTable.childSkills) do infobox = infobox .. '|-\n| Leads to:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.childSkills[i] .. '</br>\n' end end -- maxlevel .maxLevel if skillTable.maxLevel ~= nil then infobox = infobox .. '|-\n| Max Level:\n| style=\"text-align: right; padding: 3px;\" | Level ' .. skillTable.maxLevel .. '\n' end -- items given .itemsGiven if skillTable.itemsGiven ~= nil then infobox = infobox .. '|-\n| Items Given:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.itemsGiven .. '\n' end -- Related Talents if skillTable.talents ~= nil then local listTalents3 = '' local listTalents6 = '' local talent3 = skillTable.talents.level3 local talent6 = skillTable.talents.level6 -- for each item in the listTalents3 (b is position, c is value) for b,c in ipairs(talent3) do --if not these tags listed here if c ~='[[]]' then -- add the tag to the list listTalents3 = listTalents3 .. c end -- if not the last item in the list if (c ~= talent3[#talent3]) then -- add a comma listTalents3 = listTalents3 .. ', </br>' end end -- for each item in the listTalents6 (e is position, d is value) for e,d in ipairs(talent6) do --if not these tags listed here if d ~='[[]]' then -- add the tag to the list listTalents6 = listTalents6 .. d end -- if not the last item in the list if (d ~= talent6[#talent6]) then -- add a comma listTalents6 = listTalents6 .. ', </br>' end end -- 'Talent Information' section header infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Talent Information\'\'\'\n' infobox = infobox .. '|- style=\"border-bottom: solid #7BC2CE;\"\n| Level 3 Talents:\n| style=\"text-align: right; padding: 3px;\" | ' .. listTalents3 .. ' \n' infobox = infobox .. '|-\n| Level 6 Talents:\n| style=\"text-align: right; padding: 3px;\" | ' .. listTalents6 .. ' \n' end -- 'IDs' section header infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'IDs\'\'\'\n' -- skill id (type) infobox = infobox .. '|- valign=\"center\"\n| Item ID:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.skillID .. '\n' -- id number (type id) infobox = infobox .. '|- valign=\"center\"\n| ID Number:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.skillIDNum .. '\n' end --TALENT if check == 'talent' then -- 'Talent Information' section header infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Talent Information\'\'\'\n' -- Talent Type if skillTable.talentType ~= nil then infobox = infobox .. '|-\n| Talent Type:\n| style=\"text-align: right; padding: 3px;\" |[[' .. skillTable.talentType .. ']]\n' end -- Skill Needed if skillTable.owningSkill ~= nil then infobox = infobox .. '|-\n| Skill Needed:\n| style=\"text-align: right; padding: 3px;\" |[[' .. skillTable.owningSkill .. ']]\n' end -- Talents Active at Level if skillTable.activeLevel ~= nil then infobox = infobox .. '|-\n| Active at Level:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.activeLevel .. '\n' end end infobox = infobox .. '|}' return infobox end return p