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


-- Build an Infobox_Skill
     -- checks if skills can be found in plant data or tree data based on what was requested
function skillBox( args, skillData)
     if skillTable == {} then
     -- check that all necessary arguments are passed correctly
        if check == 'skill' then
     if args.name == nil or args.name == '' then
            return skills .. ' could not be found in Module:TestSkills.'
        return '\'name\' must be specified.'
        else
            return skills .. ' could not be found in Module:TalentData.'
        end
     end
     end
   
local skill = args.name


local skillimagename = string.gsub(skill, ' ', '')
    -- From now on using skillsTable."KeyValue" will return the value from that key. for most things a check for skills type is not necessary
 
local skillTable = skillData.skills[skill]
-- Build an Infobox_Plant
if skillTable == nil then
-- string used to build the infobox
return skill .. ' could not be found in Module:TSkills.'
end   
    -- 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'
     
    -- Prof,Spec,Skill box
      infobox = infobox .. '|- style=\"text-align: center;color: white; background-color: goldenrod;\"\n| colspan=\"2\"'
    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'
     else
     elseif skillTable.group == 'Talents' then
         infobox = infobox .. '| \'\'\'Skill\'\'\'\n'    
         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, ' ', '')
        -- Skill Icon Image
for i,v in ipairs(checkImage) do
    local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. skillimagename .. '_Icon.png|[[Category:Pages_with_missing_skill_icon]]'
image = skillsimagename .. checkImage[i]
    if mw.title.makeTitle('File', skillimagename .. '_Icon.png').file.exists then
if mw.title.makeTitle('File', image).file.exists then
        image = skillimagename .. '_Icon.png'
break
    elseif mw.title.makeTitle('File', skillimagename .. '_Icon.jpg').file.exists then
end
        image = skillimagename .. '_Icon.jpg'
if table.getn(checkImage) == i then
    end
image = 'NoImage.png'
   
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'
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
  -- 'Related Skills' section header
if check == 'skill' then
    infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Related Skills\'\'\'\n'
  -- '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
-- Professsion  .rootSkill
        infobox = infobox .. '|-\n| Profession:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.rootSkill .. '\n'
if skillTable.rootSkill ~= nil then
    end
infobox = infobox .. '|-\n| Profession:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.rootSkill .. '\n'
end
-- Specialty    .specialitySkill
if skillTable.specialitySkill ~= nil then
-- Specialty    .specialitySkill
        infobox = infobox .. '|-\n| Specialty:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.specialitySkill .. '\n'
if skillTable.specialitySkill ~= nil then
    end
infobox = infobox .. '|-\n| Specialty:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.specialitySkill .. '\n'
end
-- Skills Required .prerequisites
    if skillTable.prerequisites ~= nil then
-- Skills Required .prerequisites
        infobox = infobox .. '|-\n| Skills Required:\n| style=\"text-align: right; padding: 3px;\" |[[ ' .. skillTable.prerequisites .. ']]\n'
if skillTable.prerequisites ~= nil then
    end
infobox = infobox .. '|-\n| Skills Required:\n| style=\"text-align: right; padding: 3px;\" |[[ ' .. skillTable.prerequisites .. ']]\n'
end
-- Leads to  childSkills
    if skillTable.childSkills ~= nil then
-- Leads to  childSkills
        infobox = infobox .. '|-\n| Leads to:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.childSkills .. '\n'
if skillTable.childSkills ~= nil then
    end   
infobox = infobox .. '|-\n| Leads to:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.childSkills .. '\n'
 
end   
  -- 'Skill Information' section header
-- Leads to  childSkills
    infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Skill Information\'\'\'\n'
if skillTable.childSkills ~= nil then
infobox = infobox .. '|-\n| Leads to:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.childSkills .. '\n'
-- maxlevel .maxLevel
end
    if skillTable.maxLevel ~= nil then
        infobox = infobox .. '|-\n| Max Level:\n| style=\"text-align: right; padding: 3px;\" | Level ' .. skillTable.maxLevel .. '\n'
  -- 'Skill Information' section header
    end
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
-- items given .itemsGiven
-- Skill Needed
    if skillTable.itemsGiven ~= nil then
if talentTable.owningSkill ~= nil then
        infobox = infobox .. '|-\n| Items Given:\n| style=\"text-align: right; padding: 3px;\" | ' .. skillTable.itemsGiven .. '\n'
infobox = infobox .. '|-\n| Skill Needed:\n| style=\"text-align: right; padding: 3px;\" | ' .. talentTable.owningSkill .. '\n'
    end
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'
-- 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
-- Main entry point for the Module
function p.SkillMain()
    -- get args from the Template
    local args = norm()
   
    -- get skill data
    local skillData = require( "Module:Skills" )
   
    return skillBox( args, skillData)
   
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