Module:Infobox Skill: Difference between revisions
From Eco - English Wiki
[unchecked revision] | [unchecked revision] |
Testing 9.0 data |
Changing Skill to Talent |
||
Line 17: | Line 17: | ||
end | 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.skills ~= nil then | |||
skills = args.skill | |||
check = 'skill' | |||
elseif args.talents ~= 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:TestSkills" ) | |||
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 | ||
if | return skills .. ' could not be found in Module:TestSkills.' | ||
else | |||
return skills .. ' could not be found in Module:TalentData.' | |||
end | |||
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' | local infobox = '{| class=\"infobox\"\n' | ||
-- name of the skill | -- name of the skill/talent | ||
infobox = infobox .. '|- style=\"color: white; background-color: #1165AF; text-align: center;\"\n| colspan=\"2\" | \'\'\'<big>' .. skill .. '</big>\'\'\'\n' | infobox = infobox .. '|- style=\"color: white; background-color: #1165AF; text-align: center;\"\n| colspan=\"2\" | \'\'\'<big>' .. skill .. '</big>\'\'\'\n' | ||
infobox = infobox .. '|- style=\"text-align: center;color: white; background-color: goldenrod;\"\n| colspan=\"2\"' | |||
if skillTable.root == true then | if skillTable.root == true then | ||
infobox = infobox .. '| \'\'\'Profession\'\'\'\n' | infobox = infobox .. '| \'\'\'Profession\'\'\'[[Category:Profession]]\n' | ||
elseif skillTable.specialty == true then | elseif skillTable.specialty == true then | ||
infobox = infobox .. '| \'\'\'Specialty\'\'\'\n' | infobox = infobox .. '| \'\'\'Specialty\'\'\'[[Category:Specialty]]\n' | ||
elseif skillTable.group == 'Talents' then | |||
infobox = infobox .. '| \'\'\' | infobox = infobox .. '| \'\'\'Talent\'\'\'[[Category:Talent]]\n' | ||
else | |||
infobox = infobox .. '|\n' | |||
end | end | ||
-- Skill or Talent Image | |||
local checkImage = {'_Icon.png','_Icon.jpg'} | |||
local image = '' | |||
local skillsimagename = string.gsub(skills, ' ', '') | |||
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 | |||
infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | | image = image .. '|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. skillsimagename .. '_Icon.png|[[Category:Pages_with_missing_skill]]' | ||
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]]' | |||
end | |||
end | |||
end | |||
infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | [[File:' .. image .. '|center|border|250x250px]]\n' | |||
-- 'Description' section header | -- 'Description' section header | ||
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Description\'\'\'\n' | infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Description\'\'\'\n' | ||
Line 71: | Line 115: | ||
end | end | ||
--SKILL | |||
if check == 'skill' then | |||
-- 'Related Skills' section header | |||
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Related Skills\'\'\'\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 | |||
infobox = infobox .. '|-\n| Leads to:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.childSkills .. '\n' | |||
end | |||
-- Leads to childSkills | |||
if skillTable.childSkills ~= nil then | |||
infobox = infobox .. '|-\n| Leads to:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.childSkills .. '\n' | |||
end | |||
-- 'Skill Information' section header | |||
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Skill Information\'\'\'\n' | |||
-- 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 | |||
-- '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 talentTable.talentType ~= nil then | |||
infobox = infobox .. '|-\n| Talent Type:\n| style=\"text-align: right; padding: 3px;\" | ' .. talentTable.talentType .. '\n' | |||
end | |||
-- Skill Needed | |||
if talentTable.owningSkill ~= nil then | |||
infobox = infobox .. '|-\n| Skill Needed:\n| style=\"text-align: right; padding: 3px;\" | ' .. talentTable.owningSkill .. '\n' | |||
end | |||
-- Talents Active at Level | |||
if talentTable.activeLevel ~= nil then | |||
infobox = infobox .. '|-\n| Active at Level:\n| style=\"text-align: right; padding: 3px;\" | ' .. talentTable.activeLevel .. '\n' | |||
end | |||
end | |||
infobox = infobox .. '|}' | infobox = infobox .. '|}' | ||
Line 125: | Line 194: | ||
return infobox | return infobox | ||
end | end | ||
return p | return p |
Revision as of 14:17, 27 August 2020
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
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.skills ~= nil then
skills = args.skill
check = 'skill'
elseif args.talents ~= 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:TestSkills" )
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:TestSkills.'
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>' .. skill .. '</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 = ''
local skillsimagename = string.gsub(skills, ' ', '')
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]]'
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]]'
end
end
end
infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | [[File:' .. image .. '|center|border|250x250px]]\n'
-- '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
-- 'Related Skills' section header
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Related Skills\'\'\'\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
infobox = infobox .. '|-\n| Leads to:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.childSkills .. '\n'
end
-- Leads to childSkills
if skillTable.childSkills ~= nil then
infobox = infobox .. '|-\n| Leads to:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.childSkills .. '\n'
end
-- 'Skill Information' section header
infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Skill Information\'\'\'\n'
-- 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
-- '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 talentTable.talentType ~= nil then
infobox = infobox .. '|-\n| Talent Type:\n| style=\"text-align: right; padding: 3px;\" | ' .. talentTable.talentType .. '\n'
end
-- Skill Needed
if talentTable.owningSkill ~= nil then
infobox = infobox .. '|-\n| Skill Needed:\n| style=\"text-align: right; padding: 3px;\" | ' .. talentTable.owningSkill .. '\n'
end
-- Talents Active at Level
if talentTable.activeLevel ~= nil then
infobox = infobox .. '|-\n| Active at Level:\n| style=\"text-align: right; padding: 3px;\" | ' .. talentTable.activeLevel .. '\n'
end
end
infobox = infobox .. '|}'
return infobox
end
return p