Module:SkillNav: Difference between revisions
From Elwiki
No edit summary |
Tag: Undo |
||
(47 intermediate revisions by 2 users not shown) | |||
Line 13: | Line 13: | ||
end | end | ||
end | end | ||
local isForceNav = args.forcenav ~= nil; | |||
-- Prepare a table of skill types to display in the navigation. | -- Prepare a table of skill types to display in the navigation. | ||
local skill_types | local skill_types; | ||
if (not isForceNav) then | |||
['name'] = 'Hyper Active', | skill_types = {{ | ||
['name'] = args.l_hyper, -- 'Hyper Active', | |||
['abbr'] = 'HA' | ['abbr'] = 'HA' | ||
}, | }, { | ||
['name'] = args.l_secret, -- 'Secret Art', | |||
['name'] = 'Secret Art', | |||
['abbr'] = 'SeA' | ['abbr'] = 'SeA' | ||
}, | }, { | ||
['name'] = args.l_special, -- 'Special Active', | |||
['name'] = 'Special Active', | |||
['abbr'] = 'SA' | ['abbr'] = 'SA' | ||
}, | }, { | ||
['name'] = args.l_active, -- 'Active', | |||
['name'] = 'Active', | |||
['abbr'] = 'A' | ['abbr'] = 'A' | ||
}, | }, { | ||
['name'] = args.l_mod, -- 'Force Mod', | |||
['name'] = 'Force Mod', | |||
['abbr'] = 'FC' | ['abbr'] = 'FC' | ||
}, | }, { | ||
['name'] = args.l_buff, -- 'Buff', | |||
['name'] = 'Buff', | |||
['abbr'] = 'B' | ['abbr'] = 'B' | ||
}, | }, { | ||
['name'] = args.l_passive, -- 'Passive', | |||
['name'] = 'Passive', | |||
['abbr'] = 'P' | ['abbr'] = 'P' | ||
}, | }, { | ||
['name'] = args.l_demon, -- 'Manic Demon', | |||
['name'] = 'Manic Demon', | |||
['abbr'] = 'MD' | ['abbr'] = 'MD' | ||
}, | }, { | ||
['name'] = '[[File:ForceIcon.png|16px]] ' .. args.l_demon, -- 'Manic Demon', | |||
['name'] = '[[File:ForceIcon.png|16px]] Manic Demon', | |||
['abbr'] = 'MDF' | ['abbr'] = 'MDF' | ||
}, | }, { | ||
['name'] = args.l_master, -- 'Master Skill', | |||
['name'] = 'Master Skill', | |||
['abbr'] = 'MS' | ['abbr'] = 'MS' | ||
}, | }, { | ||
['name'] = args.l_couple, -- 'Couple Skill', | |||
['name'] = 'Couple Skill', | |||
['abbr'] = 'Wed' | ['abbr'] = 'Wed' | ||
}, | }, { | ||
-- Force | ['name'] = args.l_row1, -- 'Row 1', | ||
['abbr'] = 'row1' | |||
['name'] = 'Force Active', | }, { | ||
['name'] = args.l_row2, -- 'Row 2', | |||
['abbr'] = 'row2' | |||
}, { | |||
['name'] = args.l_row3, -- 'Row 3', | |||
['abbr'] = 'row3' | |||
}, { | |||
['name'] = args.l_row4, -- 'Row 4', | |||
['abbr'] = 'row4' | |||
}} | |||
else | |||
-- Force Nav called, change skill types | |||
skill_types = {{ | |||
['name'] = args.l_force_active, -- 'Force Active', | |||
['abbr'] = 'FA3', | ['abbr'] = 'FA3', | ||
['type'] = 'third' | ['type'] = 'third' | ||
}, | }, { | ||
['name'] = args.l_force_passive, -- 'Force Passive', | |||
['name'] = 'Force Passive', | |||
['abbr'] = 'FP3', | ['abbr'] = 'FP3', | ||
['type'] = 'third' | ['type'] = 'third' | ||
}, | }, { | ||
['name'] = args.l_force_active, -- 'Force Active', | |||
['name'] = 'Force Active', | |||
['abbr'] = 'FAM', | ['abbr'] = 'FAM', | ||
['type'] = 'master' | ['type'] = 'master' | ||
}, | }, { | ||
['name'] = args.l_force_passive, -- 'Force Passive', | |||
['name'] = 'Force Passive', | |||
['abbr'] = 'FPM', | ['abbr'] = 'FPM', | ||
['type'] = 'master' | ['type'] = 'master' | ||
} | }} | ||
end | |||
-- For backward compatibility. Do not remove until all pages are changed. | -- For backward compatibility. Do not remove until all pages are changed. | ||
Line 87: | Line 90: | ||
args.name = args.Name; | args.name = args.Name; | ||
end | end | ||
-- Needed this to make a custom toggle. | -- Needed this to make a custom toggle. | ||
local char_name_sanitized = args.name: | local char_name_sanitized = ''; | ||
local char_name = args.name; | |||
if (isForceNav and args.parent_name ~= nil) then | |||
char_name = args.parent_name; | |||
end | |||
for w in char_name:gmatch("%w+") do | |||
char_name_sanitized = char_name_sanitized .. w; | |||
end | |||
if (isForceNav and args.parent_name ~= nil) then | |||
char_name_sanitized = 'ForceSkills-' .. char_name_sanitized; | |||
end | |||
-- Main block | -- Main block | ||
local skill_nav = mw.html.create('div'):addClass('skill-nav'); | local skill_nav = mw.html.create('div'):addClass('skill-nav'); | ||
if ( | if (isForceNav) then | ||
skill_nav:addClass('force-nav'); | skill_nav:addClass('force-nav'); | ||
end | end | ||
Line 98: | Line 112: | ||
-- Header | -- Header | ||
local header = skill_nav:tag('div'):addClass('skill-nav-header'); | local header = skill_nav:tag('div'):addClass('skill-nav-header'); | ||
local colors | local colors; | ||
if (args.color ~= nil) then | if (args.color ~= nil) then | ||
colors = args.color; | colors = args.color; | ||
else | |||
colors = frame:expandTemplate{ | |||
title = 'ColorSel', | |||
args = {'Character', args.char} | |||
}; | |||
end | |||
-- Redirect to language subpages if provided. | |||
local is_localized = args.lang ~= nil; | |||
local lang_suffix = ''; | |||
if (is_localized) then | |||
lang_suffix = '/' .. args.lang; | |||
end | end | ||
if (args. | colors = colors:gsub('#', '#') | ||
header:css('background-color', colors); | |||
if (args.is_guild ~= nil) then | |||
header:css({ | |||
['justify-content'] = 'center', | |||
['background-color'] = colors | |||
}); | |||
end | |||
if (not isForceNav and not args.is_guild) then | |||
header:wikitext(frame:expandTemplate{ | header:wikitext(frame:expandTemplate{ | ||
title = 'Face', | title = 'Face', | ||
Line 113: | Line 147: | ||
args.pic, | args.pic, | ||
link = args.name, | link = args.name, | ||
scale = '0. | lang = lang_suffix, | ||
scale = '0.85' | |||
} | } | ||
}) | }) | ||
end | end | ||
-- Header text with a link | -- Header text with a link | ||
if (args. | if (args.l_name == nil) then | ||
header:tag('span'):wikitext('[[' .. args.name .. ']] - | args.l_name = args.name; | ||
end | |||
local headerText = header:tag('span'):addClass('skill-nav-title'); | |||
if (not isForceNav) then | |||
headerText:wikitext('[[' .. args.name .. lang_suffix .. '|' .. args.l_name .. ']] - ' .. args.l_skills); | |||
else | else | ||
headerText:wikitext(args.name); | |||
end | end | ||
-- Generate the navigation's body | -- Generate the navigation's body | ||
local skill_nav_wrap = skill_nav:tag('div'):addClass('skill-nav-inner-wrap border-color') | local skill_nav_wrap = skill_nav:tag('div'):addClass('skill-nav-inner-wrap border-color') | ||
Line 130: | Line 169: | ||
end | end | ||
-- Make it collapsible if needed. | -- Make it collapsible if needed. | ||
if (args.type ~= nil and string.find(args.type, 'mw%-collapsible') ~= nil) then | if ((args.type ~= nil and string.find(args.type, 'mw%-collapsible') ~= nil) or args.collapsible ~= nil) then | ||
skill_nav_wrap:attr('id', 'mw-customcollapsible-' .. char_name_sanitized); | skill_nav_wrap:attr('id', 'mw-customcollapsible-' .. char_name_sanitized); | ||
header:tag('div'):addClass('mw-customtoggle-' .. char_name_sanitized); | header:tag('div'):addClass('mw-customtoggle-' .. char_name_sanitized); | ||
end | |||
if (args.collapsible ~= nil) then | |||
skill_nav_wrap:addClass('mw-collapsible'); | |||
end | |||
if (args.collapsed ~= nil) then | |||
skill_nav_wrap:addClass('mw-collapsed'); | |||
end | end | ||
Line 141: | Line 186: | ||
local type = v2['type']; | local type = v2['type']; | ||
if (inArgs(abbr)) then | if (inArgs(abbr)) then | ||
-- Syntax: [image.extension]; [name]; [image.extension]; [name]; (...) | |||
local skills = split(args[abbr], ';'); | local skills = split(args[abbr], ';'); | ||
if (abbr == 'Wed') then | if (abbr == 'Wed') then | ||
skills = {' | skills = { | ||
'RelationSkill1.png', 'Extreme Heavenly Love' .. lang_suffix .. '|' .. args.l_couple_skill_name, | |||
'RelationSkill2.png', 'Extreme Heavenly Bond' .. lang_suffix .. '|' .. args.l_soulmate_skill_name | |||
} | |||
end | end | ||
-- Separate syntax for Master Skills: [Stage 1 image]; [Stage 2 image]; [Stage 3 image]; [Stage 4 image]; [skill name]; | -- Separate syntax for Master Skills: [Stage 1 image]; [Stage 2 image]; [Stage 3 image]; [Stage 4 image]; [skill name]; | ||
Line 150: | Line 199: | ||
if (abbr == 'MS') then | if (abbr == 'MS') then | ||
mc_skill_name = skills[5]; | mc_skill_name = skills[5]; | ||
mc_skill_name_head = '<br/>- ' .. | mc_skill_name = mc_skill_name:gsub('ä', 'a'); | ||
local l_mc_skill_name = skills[5]; | |||
if (args.l_mc_skill_name ~= nil and is_localized) then | |||
l_mc_skill_name = args.l_mc_skill_name; | |||
end | |||
mc_skill_name_head = '<br/>- ' .. l_mc_skill_name; | |||
skills[7] = skills[4]; | skills[7] = skills[4]; | ||
skills[5] = skills[3]; | skills[5] = skills[3]; | ||
skills[3] = skills[2]; | skills[3] = skills[2]; | ||
skills[8] = mc_skill_name .. '/Stage 4| | skills[8] = mc_skill_name .. '/Stage 4' .. lang_suffix .. '|' .. args.l_stage .. ' 4'; | ||
skills[6] = mc_skill_name .. '/Stage 3| | skills[6] = mc_skill_name .. '/Stage 3' .. lang_suffix .. '|' .. args.l_stage .. ' 3'; | ||
skills[4] = mc_skill_name .. '/Stage 2| | skills[4] = mc_skill_name .. '/Stage 2' .. lang_suffix .. '|' .. args.l_stage .. ' 2'; | ||
skills[2] = mc_skill_name .. '/Stage 1| | skills[2] = mc_skill_name .. '/Stage 1' .. lang_suffix .. '|' .. args.l_stage .. ' 1'; | ||
end | end | ||
local i = 1; | local i = 1; | ||
Line 166: | Line 220: | ||
'skill-nav-sub-head skill-nav-extra-head border-color tone-7 color-normal-force-link'); | 'skill-nav-sub-head skill-nav-extra-head border-color tone-7 color-normal-force-link'); | ||
if (type == 'third') then | if (type == 'third') then | ||
extra_head:wikitext('[[3rd Jobs| | extra_head:wikitext('[[3rd Jobs' .. lang_suffix .. '|' .. args.l_third_job .. ']]'); | ||
elseif (type == 'master') then | elseif (type == 'master') then | ||
extra_head:wikitext('[[Master Class]]'); | extra_head:wikitext('[[Master Class' .. lang_suffix .. '|' .. args.l_master_class .. ']]'); | ||
end | end | ||
end | end | ||
-- Append header fields on the left. | -- Append header fields on the left. | ||
skill_nav_wrap:tag('div'):addClass('skill-nav-sub-head border-color tone-4'):wikitext(name .. mc_skill_name_head); | skill_nav_wrap:tag('div'):addClass('skill-nav-sub-head border-color tone-4'):wikitext(name .. | ||
mc_skill_name_head); | |||
-- Get localized names | |||
local l_display_names = nil; | |||
if (abbr ~= 'MS' and args['l_' .. abbr] ~= nil) then | |||
l_display_names = split(args['l_' .. abbr], ";"); | |||
end | |||
-- Append skill fields on the right. | -- Append skill fields on the right. | ||
Line 181: | Line 242: | ||
return | return | ||
end | end | ||
-- Fetch skills every 2 table elements, since we don't want doubles. | -- Fetch skills every 2 table elements, since we don't want doubles. | ||
if (i % 2 == 0) then | if (i % 2 == 0) then | ||
-- The display name of skills | |||
local v_display_name = v; | |||
if (is_localized and abbr ~= 'MS' and l_display_names ~= nil) then | |||
v_display_name = l_display_names[i / 2]; | |||
end | |||
-- Remove stuff like (Elesis) or (Elsword) in skill display name | |||
v_display_name = v_display_name:gsub("%s%([%w%s%/]+%)", ""); | |||
-- Append the actual skills. | -- Append the actual skills. | ||
local skill_entry = content:tag('div'):addClass( | local skill_entry = content:tag('div'):addClass( | ||
Line 191: | Line 258: | ||
if (abbr == 'FC' or abbr == 'MDF') then | if (abbr == 'FC' or abbr == 'MDF') then | ||
-- [Mod] case | -- [Mod] case | ||
skill_entry:wikitext('[[' .. v .. '/ModA|' .. v_display_name .. ']]'); | skill_entry:wikitext('[[' .. v .. '/ModA' .. lang_suffix .. '|' .. v_display_name .. ']]'); | ||
skill_icon:wikitext(frame:expandTemplate{ | skill_icon:wikitext(frame:expandTemplate{ | ||
title = 'Force', | title = 'Force', | ||
Line 197: | Line 264: | ||
trim(skills[i - 1]), -- closest smaller odd element will be the icon | trim(skills[i - 1]), -- closest smaller odd element will be the icon | ||
link = v, | link = v, | ||
language = args.lang, | |||
size = '3' | size = '3' | ||
} | } | ||
Line 202: | Line 270: | ||
else | else | ||
-- Normal skill case | -- Normal skill case | ||
if (abbr == 'MS') then | if (abbr == 'MS' or abbr == 'Wed') then | ||
-- Master Skill case | -- Master Skill/Wedding Skill case | ||
skill_entry:wikitext('[[' .. v_display_name .. ']]'); | skill_entry:wikitext('[[' .. v_display_name .. ']]'); | ||
else | else | ||
skill_entry:wikitext('[[' .. v .. '|' .. v_display_name .. ']]'); | skill_entry:wikitext('[[' .. v .. lang_suffix .. '|' .. v_display_name .. ']]'); | ||
end | end | ||
skill_icon:wikitext('[[File:' .. trim(skills[i - 1]) .. '|30px|link= ' .. v .. ']]'); | skill_icon:wikitext('[[File:' .. trim(skills[i - 1]) .. '|30px|link= ' .. v .. lang_suffix .. | ||
']]'); | |||
end | end | ||
end | end | ||
Line 221: | Line 290: | ||
if (args.FS == 'true') then | if (args.FS == 'true') then | ||
force_nav = frame:expandTemplate{ | force_nav = frame:expandTemplate{ | ||
title = 'ForceSkillNav', | title = 'ForceSkillNav' .. lang_suffix, | ||
args = { | args = { | ||
type = 'mw-collapsible mw-collapsed', | |||
char = args. | char = colors, | ||
Color = args.color, | |||
parent_name = args.name | |||
} | } | ||
} | } |
Latest revision as of 01:42, 29 January 2024
Documentation for this module may be created at Module:SkillNav/doc
require('Module:CommonFunctions')
local getArgs = require('Module:Arguments').getArgs
local p = {}
-- Main process
function p.main(frame)
local args = getArgs(frame);
-- Making life easier.
function inArgs(name)
if (inArray(name, args)) then
return true
end
end
local isForceNav = args.forcenav ~= nil;
-- Prepare a table of skill types to display in the navigation.
local skill_types;
if (not isForceNav) then
skill_types = {{
['name'] = args.l_hyper, -- 'Hyper Active',
['abbr'] = 'HA'
}, {
['name'] = args.l_secret, -- 'Secret Art',
['abbr'] = 'SeA'
}, {
['name'] = args.l_special, -- 'Special Active',
['abbr'] = 'SA'
}, {
['name'] = args.l_active, -- 'Active',
['abbr'] = 'A'
}, {
['name'] = args.l_mod, -- 'Force Mod',
['abbr'] = 'FC'
}, {
['name'] = args.l_buff, -- 'Buff',
['abbr'] = 'B'
}, {
['name'] = args.l_passive, -- 'Passive',
['abbr'] = 'P'
}, {
['name'] = args.l_demon, -- 'Manic Demon',
['abbr'] = 'MD'
}, {
['name'] = '[[File:ForceIcon.png|16px]] ' .. args.l_demon, -- 'Manic Demon',
['abbr'] = 'MDF'
}, {
['name'] = args.l_master, -- 'Master Skill',
['abbr'] = 'MS'
}, {
['name'] = args.l_couple, -- 'Couple Skill',
['abbr'] = 'Wed'
}, {
['name'] = args.l_row1, -- 'Row 1',
['abbr'] = 'row1'
}, {
['name'] = args.l_row2, -- 'Row 2',
['abbr'] = 'row2'
}, {
['name'] = args.l_row3, -- 'Row 3',
['abbr'] = 'row3'
}, {
['name'] = args.l_row4, -- 'Row 4',
['abbr'] = 'row4'
}}
else
-- Force Nav called, change skill types
skill_types = {{
['name'] = args.l_force_active, -- 'Force Active',
['abbr'] = 'FA3',
['type'] = 'third'
}, {
['name'] = args.l_force_passive, -- 'Force Passive',
['abbr'] = 'FP3',
['type'] = 'third'
}, {
['name'] = args.l_force_active, -- 'Force Active',
['abbr'] = 'FAM',
['type'] = 'master'
}, {
['name'] = args.l_force_passive, -- 'Force Passive',
['abbr'] = 'FPM',
['type'] = 'master'
}}
end
-- For backward compatibility. Do not remove until all pages are changed.
if (args.name == nil) then
args.name = args.Name;
end
-- Needed this to make a custom toggle.
local char_name_sanitized = '';
local char_name = args.name;
if (isForceNav and args.parent_name ~= nil) then
char_name = args.parent_name;
end
for w in char_name:gmatch("%w+") do
char_name_sanitized = char_name_sanitized .. w;
end
if (isForceNav and args.parent_name ~= nil) then
char_name_sanitized = 'ForceSkills-' .. char_name_sanitized;
end
-- Main block
local skill_nav = mw.html.create('div'):addClass('skill-nav');
if (isForceNav) then
skill_nav:addClass('force-nav');
end
-- Header
local header = skill_nav:tag('div'):addClass('skill-nav-header');
local colors;
if (args.color ~= nil) then
colors = args.color;
else
colors = frame:expandTemplate{
title = 'ColorSel',
args = {'Character', args.char}
};
end
-- Redirect to language subpages if provided.
local is_localized = args.lang ~= nil;
local lang_suffix = '';
if (is_localized) then
lang_suffix = '/' .. args.lang;
end
colors = colors:gsub('#', '#')
header:css('background-color', colors);
if (args.is_guild ~= nil) then
header:css({
['justify-content'] = 'center',
['background-color'] = colors
});
end
if (not isForceNav and not args.is_guild) then
header:wikitext(frame:expandTemplate{
title = 'Face',
args = {
args.char,
args.pic,
link = args.name,
lang = lang_suffix,
scale = '0.85'
}
})
end
-- Header text with a link
if (args.l_name == nil) then
args.l_name = args.name;
end
local headerText = header:tag('span'):addClass('skill-nav-title');
if (not isForceNav) then
headerText:wikitext('[[' .. args.name .. lang_suffix .. '|' .. args.l_name .. ']] - ' .. args.l_skills);
else
headerText:wikitext(args.name);
end
-- Generate the navigation's body
local skill_nav_wrap = skill_nav:tag('div'):addClass('skill-nav-inner-wrap border-color')
if (args.type ~= nil) then
skill_nav_wrap:addClass(args.type);
end
-- Make it collapsible if needed.
if ((args.type ~= nil and string.find(args.type, 'mw%-collapsible') ~= nil) or args.collapsible ~= nil) then
skill_nav_wrap:attr('id', 'mw-customcollapsible-' .. char_name_sanitized);
header:tag('div'):addClass('mw-customtoggle-' .. char_name_sanitized);
end
if (args.collapsible ~= nil) then
skill_nav_wrap:addClass('mw-collapsible');
end
if (args.collapsed ~= nil) then
skill_nav_wrap:addClass('mw-collapsed');
end
-- Generate the navigation's body content.
for k2, v2 in spairs(skill_types) do
local name = v2['name'];
local abbr = v2['abbr'];
local type = v2['type'];
if (inArgs(abbr)) then
-- Syntax: [image.extension]; [name]; [image.extension]; [name]; (...)
local skills = split(args[abbr], ';');
if (abbr == 'Wed') then
skills = {
'RelationSkill1.png', 'Extreme Heavenly Love' .. lang_suffix .. '|' .. args.l_couple_skill_name,
'RelationSkill2.png', 'Extreme Heavenly Bond' .. lang_suffix .. '|' .. args.l_soulmate_skill_name
}
end
-- Separate syntax for Master Skills: [Stage 1 image]; [Stage 2 image]; [Stage 3 image]; [Stage 4 image]; [skill name];
local mc_skill_name = ''
local mc_skill_name_head = ''
if (abbr == 'MS') then
mc_skill_name = skills[5];
mc_skill_name = mc_skill_name:gsub('ä', 'a');
local l_mc_skill_name = skills[5];
if (args.l_mc_skill_name ~= nil and is_localized) then
l_mc_skill_name = args.l_mc_skill_name;
end
mc_skill_name_head = '<br/>- ' .. l_mc_skill_name;
skills[7] = skills[4];
skills[5] = skills[3];
skills[3] = skills[2];
skills[8] = mc_skill_name .. '/Stage 4' .. lang_suffix .. '|' .. args.l_stage .. ' 4';
skills[6] = mc_skill_name .. '/Stage 3' .. lang_suffix .. '|' .. args.l_stage .. ' 3';
skills[4] = mc_skill_name .. '/Stage 2' .. lang_suffix .. '|' .. args.l_stage .. ' 2';
skills[2] = mc_skill_name .. '/Stage 1' .. lang_suffix .. '|' .. args.l_stage .. ' 1';
end
local i = 1;
-- If Force Nav, append an extra header before "Force Active" if needed.
if (abbr == 'FA3' or abbr == 'FAM') then
local extra_head = skill_nav_wrap:tag('div'):addClass(
'skill-nav-sub-head skill-nav-extra-head border-color tone-7 color-normal-force-link');
if (type == 'third') then
extra_head:wikitext('[[3rd Jobs' .. lang_suffix .. '|' .. args.l_third_job .. ']]');
elseif (type == 'master') then
extra_head:wikitext('[[Master Class' .. lang_suffix .. '|' .. args.l_master_class .. ']]');
end
end
-- Append header fields on the left.
skill_nav_wrap:tag('div'):addClass('skill-nav-sub-head border-color tone-4'):wikitext(name ..
mc_skill_name_head);
-- Get localized names
local l_display_names = nil;
if (abbr ~= 'MS' and args['l_' .. abbr] ~= nil) then
l_display_names = split(args['l_' .. abbr], ";");
end
-- Append skill fields on the right.
local content = skill_nav_wrap:tag('div'):addClass('skill-nav-skill-content border-color tone-6');
for k, v in pairs(skills) do
if v == nil then
return
end
-- Fetch skills every 2 table elements, since we don't want doubles.
if (i % 2 == 0) then
-- The display name of skills
local v_display_name = v;
if (is_localized and abbr ~= 'MS' and l_display_names ~= nil) then
v_display_name = l_display_names[i / 2];
end
-- Remove stuff like (Elesis) or (Elsword) in skill display name
v_display_name = v_display_name:gsub("%s%([%w%s%/]+%)", "");
-- Append the actual skills.
local skill_entry = content:tag('div'):addClass(
'skill-nav-skill tone-7-hover color-normal-force-link tone-8-active');
local skill_icon = skill_entry:tag('div'):addClass('skill-nav-image')
if (abbr == 'FC' or abbr == 'MDF') then
-- [Mod] case
skill_entry:wikitext('[[' .. v .. '/ModA' .. lang_suffix .. '|' .. v_display_name .. ']]');
skill_icon:wikitext(frame:expandTemplate{
title = 'Force',
args = {
trim(skills[i - 1]), -- closest smaller odd element will be the icon
link = v,
language = args.lang,
size = '3'
}
});
else
-- Normal skill case
if (abbr == 'MS' or abbr == 'Wed') then
-- Master Skill/Wedding Skill case
skill_entry:wikitext('[[' .. v_display_name .. ']]');
else
skill_entry:wikitext('[[' .. v .. lang_suffix .. '|' .. v_display_name .. ']]');
end
skill_icon:wikitext('[[File:' .. trim(skills[i - 1]) .. '|30px|link= ' .. v .. lang_suffix ..
']]');
end
end
i = i + 1;
end
end
end
-- Append the Force Skill Navigation if needed.
local force_nav = ''
if (args.FS == 'true') then
force_nav = frame:expandTemplate{
title = 'ForceSkillNav' .. lang_suffix,
args = {
type = 'mw-collapsible mw-collapsed',
char = colors,
Color = args.color,
parent_name = args.name
}
}
end
-- Output point
return tostring(skill_nav) .. force_nav;
end
return p