Module:SkillInfoCard

From Eco - English Wiki
Revision as of 11:50, 22 July 2025 by StalEF (talk | contribs)

Warning about use

To prevent multiple call of data array, you must use the function: local SkillInfoCard = mw.loadData("Module:SkillInfoCard")


local p = {}

local Utils = require('Module:Utils')
local IconUtils = require('Module:IconUtils')
local L = require('Module:Localization')
local Lang = Utils.getLanguageName()

function p.main(frame)
	local PageName = frame.args[1]
	if (Lang == 'English') then SkillName = PageName else SkillName = Utils.SkillSearch(PageName) end
	local SkillData = require( "Module:SkillData" )
    local Skill = SkillData.skills[SkillName]
    local RootSkill = SkillData.skills[Skill.RootSkill]
	local WikiText =''
	
	WikiText =  WikiText .. IconUtils.main{name = Skill.Name[Lang], id = Skill.SkillID , size = 32, style = 1} .. ' '
	if (Skill.IsRoot == 'True') then WikiText =  WikiText .. Skill.Name[Lang] .. ' is [[Skills|Profession]].<br>'   else WikiText =  WikiText .. Skill.Name[Lang] .. ' is [[Skills|Specialty]] related to the profession of [[' .. RootSkill.Name[Lang] ..']].<br>' end
	WikiText =  WikiText .. Skill.Description[Lang] .. '<br>'
	
	if (Skill.IsRoot == 'True') then
		WikiText =  WikiText .. '<h3>Specialties</h3>'
		WikiText =  WikiText .. 'The '.. Skill.Name[Lang] .. ' Profession includes the following Specialties:<br>'
		WikiText =  WikiText .. '<div class="container-fluid" id="icon-grid"><div class="row row-cols-1 row-cols-sm-1 row-cols-md-2 row-cols-lg-2 g-4 py-5">'
		for Sname,Sdata in pairs(SkillData.skills) do
			if Sdata.IsRoot == 'False' and Sdata.RootSkill == SkillName then 
				if (Sdata.Name[Lang] == "") then SpecialtyName = Sdata.Name.English else SpecialtyName = Sdata.Name[Lang] end
				if (Sdata.Description[Lang] == "") then SpecialtyDescription = Sdata.Description.English else SpecialtyDescription = Sdata.Description[Lang] end
				WikiText =  WikiText .. '<div class="col d-flex align-items-start">'
				if (Utils.checkImage(Sdata.SkillID .. '_Icon.png') == "Y") then IconName = Sdata.SkillID else IconName = 'NoItem' end
				WikiText =  WikiText .. '[[file:' .. IconName.. '_Icon.png|64px|link='.. SpecialtyName .. '|class=IconGrid]]'
				WikiText =  WikiText .. '<div><h5 class="fw-bold mb-0 fs-4 text-body-emphasis">[[' .. SpecialtyName .. ']]</h5><p>' .. SpecialtyDescription .. '</p></div>'
				WikiText =  WikiText .. '</div>'
			end
		end
		WikiText =  WikiText .. '</div></div>'
	else
		WikiText =  WikiText .. '<h3>How to learn</h3>'
		WikiText =  WikiText .. '<h3>Benefits and item availability by level:</h3>'
		WikiText =  WikiText .. '<h3>Talents:</h3>'
		local TalentData = require( "Module:TalentData" )
		local TalentList = TalentData.talents
		local TalentThreeCount = 0
		local TalentSixCount = 0
		local TalentsThree = {}
		local TalentsSix = {}
		
		for Tname,Tdata in pairs(TalentList) do
			if (Tdata.SkillID == Skill.SkillID) then 
				if (Tdata.Level == '3') then TalentThreeCount = TalentThreeCount + 1; TalentsThree[TalentThreeCount] = Tname; end
				if (Tdata.Level == '6') then TalentSixCount = TalentSixCount + 1; TalentsSix[TalentSixCount] = Tname; end
			end
		end
		
		WikiText =  WikiText .. '<h4>At 3rd level, the player can choose one of two proposed talents:</h4>'
		WikiText =  WikiText .. '<div class="container-fluid" id="icon-grid"><div class="row row-cols-1 row-cols-sm-1 row-cols-md-2 row-cols-lg-2 g-4 py-4">'
		
		if (TalentList[TalentsThree[1]].Name[Lang] == "") then TalentThreeName = TalentList[TalentsThree[1]].Name.English else TalentThreeName = TalentList[TalentsThree[1]].Name[Lang] end
		if (TalentList[TalentsThree[1]].Description[Lang] == "") then TalentsThreeDescription = TalentList[TalentsThree[1]].Description.English else TalentsThreeDescription = TalentList[TalentsThree[1]].Description[Lang] end
		if (Utils.checkImage(TalentList[TalentsThree[1]].IconName .. '_Icon.png') == "Y") then IconName = TalentList[TalentsThree[1]].IconName else IconName = 'NoItem' end
		WikiText =  WikiText .. '<div class="col d-flex align-items-start">'
		WikiText =  WikiText .. '[[file:' .. IconName.. '_Icon.png|64px|link=|class=IconGrid]]'
		WikiText =  WikiText .. '<div><h5 class="fw-bold mb-0 fs-4 text-body-emphasis">' .. TalentThreeName .. '</h5><p>' .. TalentsThreeDescription .. '</p></div>'
		WikiText =  WikiText .. '</div>'
		
		if (TalentList[TalentsThree[2]].Name[Lang] == "") then TalentThreeName = TalentList[TalentsThree[2]].Name.English else TalentThreeName = TalentList[TalentsThree[2]].Name[Lang] end
		if (TalentList[TalentsThree[2]].Description[Lang] == "") then TalentsThreeDescription = TalentList[TalentsThree[2]].Description.English else TalentsThreeDescription = TalentList[TalentsThree[2]].Description[Lang] end
		if (Utils.checkImage(TalentList[TalentsThree[2]].IconName .. '_Icon.png') == "Y") then IconName = TalentList[TalentsThree[2]].IconName else IconName = 'NoItem' end
		WikiText =  WikiText .. '<div class="col d-flex align-items-start">'
		WikiText =  WikiText .. '[[file:' .. IconName.. '_Icon.png|64px|link=|class=IconGrid]]'
		WikiText =  WikiText .. '<div><h5 class="fw-bold mb-0 fs-4 text-body-emphasis">' .. TalentThreeName .. '</h5><p>' .. TalentsThreeDescription .. '</p></div>'
		WikiText =  WikiText .. '</div>'
		
		WikiText =  WikiText .. '</div></div>'
		WikiText =  WikiText .. '<h4>At 6th level, the player can choose one of two proposed talents:</h4>'
		WikiText =  WikiText .. '<div class="container-fluid" id="icon-grid"><div class="row row-cols-1 row-cols-sm-1 row-cols-md-2 row-cols-lg-2 g-4 py-4">'
		
		if (TalentList[TalentsSix[1]].Name[Lang] == "") then TalentsSixName = TalentList[TalentsSix[1]].Name.English else TalentsSixName = TalentList[TalentsSix[1]].Name[Lang] end
		if (TalentList[TalentsSix[1]].Description[Lang] == "") then TalentsSixDescription = TalentList[TalentsSix[1]].Description.English else TalentsSixDescription = TalentList[TalentsSix[1]].Description[Lang] end
		if (Utils.checkImage(TalentList[TalentsSix[1]].IconName .. '_Icon.png') == "Y") then IconName = TalentList[TalentsSix[1]].IconName else IconName = 'NoItem' end
		WikiText =  WikiText .. '<div class="col d-flex align-items-start">'
		WikiText =  WikiText .. '[[file:' .. IconName.. '_Icon.png|64px|link=|class=IconGrid]]'
		WikiText =  WikiText .. '<div><h5 class="fw-bold mb-0 fs-4 text-body-emphasis">' .. TalentsSixName .. '</h5><p>' .. TalentsSixDescription .. '</p></div>'
		WikiText =  WikiText .. '</div>'
		
		if (TalentList[TalentsSix[2]].Name[Lang] == "") then TalentsSixName = TalentList[TalentsSix[2]].Name.English else TalentsSixName = TalentList[TalentsSix[2]].Name[Lang] end
		if (TalentList[TalentsSix[2]].Description[Lang] == "") then TalentsSixDescription = TalentList[TalentsSix[2]].Description.English else TalentsSixDescription = TalentList[TalentsSix[2]].Description[Lang] end
		if (Utils.checkImage(TalentList[TalentsSix[2]].IconName .. '_Icon.png') == "Y") then IconName = TalentList[TalentsSix[2]].IconName else IconName = 'NoItem' end
		WikiText =  WikiText .. '<div class="col d-flex align-items-start">'
		WikiText =  WikiText .. '[[file:' .. IconName.. '_Icon.png|64px|link=|class=IconGrid]]'
		WikiText =  WikiText .. '<div><h5 class="fw-bold mb-0 fs-4 text-body-emphasis">' .. TalentsSixName .. '</h5><p>' .. TalentsSixDescription .. '</p></div>'
		WikiText =  WikiText .. '</div>'
		
		WikiText =  WikiText .. '</div></div>'
	end
	
	WikiText =  WikiText .. '<h3>How use Icon</h3>'
	WikiText =  WikiText .. '<p>The ' .. Skill.Name[Lang] .. ' icon can be used on any sign that has a text component, including on [[Vehicles]]:</br>'
	WikiText =  WikiText .. 'Icon with background: <icon name="' .. Skill.SkillID .. '"></br>'
	WikiText =  WikiText .. 'Icon withou background: <icon name="' .. Skill.SkillID .. '" type="nobg"></p>'
	
	if (Lang ~= 'English') then WikiText =  WikiText .. '[[en:' .. Skill.Name.English .. ']]' end
	if (Lang ~= 'Russian') then WikiText =  WikiText .. '[[ru:' .. Skill.Name.Russian .. ']]' end
	if (Lang ~= 'German') then WikiText =  WikiText .. '[[de:' .. Skill.Name.German .. ']]' end
	if (Lang ~= 'French') then WikiText =  WikiText .. '[[fr:' .. Skill.Name.French .. ']]' end
	
	return WikiText
end

return p