A documentação para este módulo pode ser criada em Módulo:Skills/doc
local getArgs = require('Module:Arguments').getArgs
local getGames = require('Module:Gamedata')
local p = {}
local function makeInvokeFunction(funcName)
-- makes a function that can be returned from #invoke, using
-- [[Module:Arguments]].
return function (frame)
local args = getArgs(frame, {parentOnly = true})
return p[funcName](args)
end
end
local styles = {
['skill'] = '\n|-\n!style="background:#000;color:#fff"|',
['skillc'] = '\n!style="background:#000;color:#fff;"|',
['cost1'] = '\n|style="background:#222"|',
['cost2'] = '\n|style="background:#282828"|',
['effect1'] = '\n|style="background:#222;text-align:left"|',
['effect2'] = '\n|style="background:#282828;text-align:left"|',
['effect1p'] = '\n|colspan=2 style="background:#222;text-align:left"|',
['effect2p'] = '\n|colspan=2 style="background:#282828;text-align:left"|',
['order'] = '\n|style="background:#000;text-align:left"|',
['table2h'] = '\n{|width="100%" class="customtable ',
['statlow'] = '\n|style="background:#000;color:#fff"|',
}
local cate1 = '<span style="display:none"><includeonly>'
if mw.title.getCurrentTitle():inNamespace('') then
cate1 = cate1 .. '[[Category:'
else cate1 = cate1
end
local cate2 = ']]</includeonly></span>'
local noskillcate = cate1 .. 'Articles with unrecognizable skill name for Module:Skills' .. cate2
local noskill1 = '\n|-\n!colspan=3 style="background:#300"|<strong style="color:red;font-size:150%">Invalid skill name of "'
local noskill2 = '". You may correct the skill name or modify [[module:Skills/'
local noskill3 = ']] if needed.</strong>' .. noskillcate
local noskill4 = '\n|-\n!colspan=4 style="background:#300"|<strong style="color:red;font-size:150%">No empty line or skill name is allowed. You should either remove the empty line or add some proper skill name.</strong>' .. noskillcate
p.row = makeInvokeFunction('_row')
function p._row(args)
local row = args[1]
local game = args[2]
local code = args[3]
if not code or code == '' then return '' end
local level = args[4]
if not level then level = '' end
if level == 'innate' or level == 'default' or level == 'Default' then level = 'Innate' end
local data = require('Module:Skills/' .. game)
local skill = data.skills[code]
if not skill then
local alias = data.aliases[code]
if alias then
code = alias
skill = data.skills[code]
else
return noskill1 .. code .. noskill2 .. game .. noskill3
end
end
if skill.name then code = skill.name end
local skillcell = styles['skill'] .. code
local cost = skill.cost
if game == 'SMT3' then
if cost == 'Convo' then
cost = '<abbr title="Active conversational skill without HP or MP cost. Ineffective to Corpus, Haunt, Wilder, Foul, Light-tendency demons, bosses and all enemies in Labyrinth of Amala.">Convo</abbr>'
elseif cost == 'Interrupt' then
cost = '<abbr title="Interruption skill only activates when certain conversational effect triggers.">Interrupt</abbr>'
end
end
local cost1 = '\n||' .. cost
local cost2 = styles['cost2'] .. cost
local effect1 = styles['effect1'] .. skill.effect
local effect2 = styles['effect2'] .. skill.effect
local order = styles['order'] .. skill.cost
local element1, element2
if skill.element then
element1 = '\n||' .. skill.element or ''
element2 = styles['cost2'] .. skill.element or ''
end
local level1, level2
if skill.pre then
level1 = '\n||' .. skill.pre
level2 = styles['cost2'] .. skill.pre
elseif level == '' then
level1 = '\n||'
level2 = styles['cost2']
elseif level then
level1 = '\n||' .. level
level2 = styles['cost2'] .. level
end
local result
if row == 'r01' then
result = skillcell .. effect1 -- Odd number row for enemy whose skill cost is irrelevant.
elseif row == 'r02' then
result = skillcell .. effect2 -- Even number row for enemy whose skill cost is irrelevant.
elseif row == 'r11' then
if game == 'SMT3' and skill.phy then
result = skillcell .. styles['effect1p'] .. skill.effect -- Odd number row for enemy whose physical skills cost no HP.
else result = skillcell .. cost1 .. effect1 -- Odd number row for demon which does not learn new skill on level gain.
end
elseif row == 'r12' then
if game == 'SMT3' and skill.phy then
result = skillcell .. styles['effect2p'] .. skill.effect -- Even number row for enemy whose physical skills cost no HP.
else result = skillcell .. cost2 .. effect2 -- Even number row for demon which does not learn new skill on level gain.
end
elseif row == 'r21' then
result = skillcell .. cost1 .. effect1 .. level1 -- Odd number row for demon/persona which learn new skill on level gain.
elseif row == 'r22' then
result = skillcell .. cost2 .. effect2 .. level2 -- Even number row for demon/persona which learn new skill on level gain.
elseif row == 'r31' then
result = skillcell .. effect1 .. level1 -- Odd number row for guest who learn new skill on level gain.
elseif row == 'r32' then
result = skillcell .. effect2 .. level2 -- Even number row for guest who learn new skill on level gain.
elseif row == 'p12' then
result = styles['skill'] .. level .. styles['skillc'] .. code .. effect1 -- Row for Persona 1 and 2 persona
elseif row == 'rf' then
result = skillcell .. effect1 .. order -- Row for Persona-specific fusion spell.
elseif row == 'dk1' then
result = skillcell .. element1 .. cost1 .. effect1 -- Odd number row for DemiKids stats skill list.
elseif row == 'dk2' then
result = skillcell .. element2 .. cost2 .. effect2 -- Odd number row for DemiKids stats skill list.
elseif row == 'dkc1' then
result = skillcell .. level1 .. element1 .. cost1 .. effect1 -- Odd number row for DemiKids stats combo skill list.
elseif row == 'dkc2' then
result = skillcell .. level2 .. element2 .. cost2 .. effect2 -- Odd number row for DemiKids stats combo skill list.
elseif row == 'dkp' then
result = skillcell .. element2 .. effect2 -- row for DemiKids powers.
else
result = '<strong style="color:red;font-size:150%">Invalid parameter 1 of ' .. '"' .. row .. '".</strong>' .. cate1 .. 'Templates with unrecognizable row value for Module:Skills' .. cate2
end
return result
end
p.SMTstats = makeInvokeFunction('_SMTstats')
function p._SMTstats(args)
local boss = args.Boss
local image = args.Image or ''
local magdrop = args['Mag Drop'] or ''
local race = args.Race or args.Clan or ''
local alignment = args.Alignment or args.Align or ''
local level = args.Level or ''
local hp = args.HP or ''
local mp = args.MP or ''
local noa = args.NOA or args.NOH or ''
local str = args.STR or args.st or ''
local int = args.INT or args['in'] or ''
local mgc = args.MGC or args.ma or ''
local stm = args.STM or args.vi or ''
local agl = args.AGL or args.ag or ''
local lck = args.LCK or args.lu or ''
local atk = args.Atk or ''
local hit = args.Hit or ''
local def = args.Def or ''
local avd = args.Avd or args.Eva or ''
local mpw = args.Mpw or ''
local mef = args.Mef or ''
local drop = args.Drop or ''
local resist = args.Resist or args.Affinity
local skills = args.Skills
if image then image = styles['skill'] .. image elseif image == '' then image = '' end
local magt
if magdrop~='' or boss then magt = '| <abbr title="Magnetite Drop">MAG</abbr>' elseif magdrop == '' or not boss then magt = '<abbr title="Initial money cost for summoning to the battle team.">Cost</abbr>!!<abbr title="Cost Point (Mag Consumption per 10 Steps)">CP</abbr>' end
if race == 'Seraph' then race = '[[Herald|Seraph]]' .. cate1 .. 'Herald Raça' .. cate2
elseif race == 'Ghost' then race = '[[Haunt|Ghost]]' .. cate1 .. 'Haunt Raça' .. cate2
elseif race == 'Gaean' or race == 'Gaian' then race = '[[Ring of Gaea|Gaean]]' .. cate1 .. 'Ring of Gaea' .. cate2
elseif race == 'Messian' then race = '[[Order of Messiah|Messian]]'.. cate1 .. 'Order of Messiah' .. cate2
else race = 'Raça ' .. cate1 .. race .. '[[' .. race .. ']]' .. cate2
end
if resist then resist = styles['table2h'] .. 'smt1"\n!width=100|Resistances\n|style="background:#000;text-align:left;padding:0 5px"|' .. resist .. '\n|}'
else resist = ''
end
local los = ''
for k, v in ipairs(mw.text.split(skills, '\n')) do
local data = require('Module:Skills/SMT1')
local skill = data.skills[v]
if not skill then
local alias = data.aliases[v]
if alias then
v = alias
skill = data.skills[v]
else skill = v
end
end
local skillcell = styles['skill'] .. v
local effect, cost
if skill == '' then
cost = ''
effect = noskill4
elseif skill.effect then
cost = skill.cost
effect = skill.effect
if skill.name then v = skill.name end
else
cost = ''
effect = noskill1 .. skill .. noskill2 .. 'SMT1' .. noskill3
end
if magdrop ~= '' or boss then
if (k % 2 == 0) then
los = los .. skillcell .. styles['effect2'] .. effect
else
los = los .. skillcell .. styles['effect1'] .. effect
end
else
if (k % 2 == 0) then
los = los .. skillcell .. styles['cost2'] .. cost .. styles['effect2'] .. effect
else
los = los .. skillcell .. '\n||' .. cost .. styles['effect1'] .. effect
end
end
end
local categoryd, categorya
if magdrop~='' or boss then categoryd = cate1 .. 'Chefes de Shin Megami Tensei' .. cate2 else categoryd = cate1 .. 'Demônios de Shin Megami Tensei' .. cate2 end
if alignment == 'Law' or alignment == 'Light-Law' or alignment == 'Neutral-Law' or alignment == 'Dark-Law' then categorya = cate1 .. 'Law Demons in Shin Megami Tensei' .. cate2
elseif alignment == 'Neutral' or alignment == 'Light-Neutral' or alignment == 'Neutral-Neutral' or alignment == 'Dark-Neutral' then categorya = cate1 .. 'Neutral Demons in Shin Megami Tensei' .. cate2
elseif alignment == 'Chaos' or alignment == 'Light-Chaos' or alignment == 'Neutral-Chaos' or alignment == 'Dark-Chaos' then categorya = cate1 .. 'Chaos Demons in Shin Megami Tensei' .. cate2
elseif not alignment or alignment == '' or '-' then categorya = ''
end
local costt
if magdrop == '' then
costt = styles['skillc'] .. 'Cost'
elseif magdrop~='' then costt = ''
end
if magdrop ~= '' or boss then
magdrop = tonumber(level) * 20
else magdrop = tonumber(level) * 32 .. styles['statlow'] .. math.floor(tonumber(level) / 2) + 2
end
local skillt
if skills ~= '' then
skillt = '\n!colspan="3"|[[List of Shin Megami Tensei Skills|<span style="color:#fff">List of Skills</span>]]\n|-\n' .. styles['skillc'] .. 'Skill' .. costt .. styles['skillc'] .. 'Effect'
else skillt = ''
end
local result
result = '{|align="center" style="min-width:650px;text-align:center; background: #222222; border:2px solid ' .. getGames.games['smt1'].colorb .. ';border-radius:7px; font-size:75%; font-family:verdana;"\n|-\n|\n{|width=100% cellpadding=0 cellspacing=0\n' .. image .. '\n|' .. styles['table2h'] .. 'smt1"\n![[Raça e Espécies|<span style="color:white">Raça</span>]]\n![[Moralidade|<span style="color:white">Moralidade</span>]]\n!Level\n!HP\n!MP\n!' .. magt .. '\n|-' .. styles['statlow'] .. race .. styles['statlow'] .. alignment .. styles['statlow'] .. level .. styles['statlow'] .. hp .. styles['statlow'] .. mp .. styles['statlow'] .. magdrop .. '\n|}' .. styles['table2h'] .. 'smt1"\n!<abbr title="Número de Golpes">NDG</abbr>\n!Força\n!Inteligência\n!Magia\n!Vitalidade\n!Agilidade\n!Sorte\n|-' .. styles['statlow'] .. noa .. styles['statlow'] .. str .. styles['statlow'] .. int .. styles['statlow'] .. mgc .. styles['statlow'] .. stm .. styles['statlow'] .. agl .. styles['statlow'] .. lck .. '\n|}' .. styles['table2h'] .. 'smt1"\n!Ataque\n!Golpe\n!Defesa\n!Evasão\n!<abbr title="Poder Magia">PoderM</abbr>\n!<abbr title="Efeito Magia">EfeitoM</abbr>\n![[Lista de Itens de Shin Megami Tensei|<span style="color:#fff">Drop</span>]]\n|-' .. styles['statlow'] .. atk .. styles['statlow'] .. hit .. styles['statlow'] .. def .. styles['statlow'] .. avd .. styles['statlow'] .. mpw .. styles['statlow'] .. mef .. styles['statlow'] .. drop .. '\n|}\n|}' .. resist .. styles['table2h'] .. 'smt1"' .. skillt .. los .. '\n|}\n|}' .. categoryd .. categorya
return result
end
p.P4stats = makeInvokeFunction('_P4stats')
function p._P4stats(args)
local boss = args.Boss
local hp = args.HP
local sp = args.SP
local level = args.Level or ''
local arcana = args.Arcana or ''
local strength = args.Strength or args.st or ''
local magic = args.Magic or args.ma or ''
local endurance = args.Endurance or args.en or ''
local agility = args.Agility or args.ag or ''
local luck = args.Luck or args.lu or ''
local resist = args.Resist or args.Resists
local block = args.Block or args.Null or args.Immune
local absorb = args.Absorb or args.Absorbs or args.Drain
local reflect = args.Reflect or args.Reflects or args.Repel
local weak = args.Weak
local phys = args.Phys
local fire = args.Fire
local ice = args.Ice
local elec = args.Lit or args.Elec
local wind = args.Wind
local light = args.Light
local dark = args.Dark
local alm = args.Alm or args.Almighty
local inherit = args.Inherit
local yen = args.Yen
local xp = args.EXP
local p4g = args.P4G
local skills = args.Skills
local result = '{|align="center" style="min-width:650px;text-align:center; background: #222; border:2px solid ' .. getGames.games['p4'].colorb .. '; border-radius:7px; font-size:75%; font-family:verdana;"\n|-\n|' .. styles['table2h'] .. 'p4"\n!Level\n![[Arcana|<span style="color:black">Arcana</span>]]\n'
if hp or mp then
result = result .. '!HP\n!SP'
end
result = result .. '\n!title="Strength"|St\n!title="Magic"|Ma\n!title="Endurance"|En\n!title="Agility"|Ag\n!title="Luck"|Lu\n|-\n' .. styles['statlow'] .. level .. styles['statlow']
if arcana == '' or arcana == '-' or arcana == 'Unclassified' or arcana == 'None'
then result = result .. '-'
else result = result .. '[[' .. arcana .. ' Arcana|' .. arcana .. ']]' .. cate1 .. arcana .. ' Arcana' .. cate2
end
if hp or sp then
result = result .. styles['statlow'] .. hp .. styles['statlow'] .. sp
end
result = result .. styles['statlow'] .. strength .. styles['statlow'] .. magic .. styles['statlow'] .. endurance .. styles['statlow'] .. agility .. styles['statlow'] .. luck .. '\n|}' .. styles['table2h'] .. 'p4"'
if phys or fire or ice or elec or wind or light or dark or alm or xp or yen then
if not phys then phys = '' end
if not fire then fire = '' end
if not ice then ice = '' end
if not elec then elec = '' end
if not wind then wind = '' end
if not light then light = '' end
if not dark then dark = '' end
if not alm then alm = '' end
if not xp then xp = '' end
if not yen then yen = '' end
result = result .. '\n!Phys\n!Fire\n!Ice\n!title="Electricity"|Elec\n!Wind\n!Light\n!Dark\n!Almighty\n!EXP\n!Yen\n|-\n' .. styles['statlow'] .. phys .. styles['statlow'] .. fire .. styles['statlow'] .. ice .. styles['statlow'] .. elec .. styles['statlow'] .. wind .. styles['statlow'] .. light .. styles['statlow'] .. dark .. styles['statlow'] .. alm .. styles['statlow'] .. xp .. styles['statlow'] .. yen
elseif inherit or resist or block or absorb or reflect or weak then
if not inherit then inherit = '-' end
if not resist then resist = '-' end
if not block then block = '-' end
if not absorb then absorb = '-' end
if not reflect then reflect = '-' end
if not weak then weak = '-' else weak = '<span style="color:#f22">' .. weak .. '</span>' end
result = result .. '\n!Inherit\n!Resists\n!Block\n!Absorbs\n!Reflects\n!Weak\n|-\n' .. styles['statlow'] .. inherit .. styles['statlow'] .. resist .. styles['statlow'] .. block .. styles['statlow'] .. absorb .. styles['statlow'] .. reflect .. styles['statlow'] .. weak
end
result = result .. '\n|}'
local data = require('Module:Skills/P4')
if skills then
if hp or sp or boss then
result = result .. styles['table2h'] .. 'p4"\n!colspan="2"|[[List of Persona 4 Skills|<span style="color:black">List of Skills</span>]]' .. styles['skill'] .. 'Skill' .. styles['skillc'] .. 'Effect'
for k, v in ipairs(mw.text.split(skills, '\n')) do
local skill = data.skills[v]
if not skill then
local alias = data.aliases[v]
if alias then
v = alias
skill = data.skills[v]
else skill = v
end
end
local skillcell = styles['skill'] .. v
local effect
if skill == nil then effect = noskill4
elseif skill.effect then
effect = skill.effect
if skill.name then v = skill.name end
else
effect = noskill1 .. skill .. noskill2 .. 'P4' .. noskill3
end
if (k % 2 == 0) then
result = result .. skillcell .. styles['effect2'] .. effect
else
result = result .. skillcell .. styles['effect1'] .. effect
end
end
else
result = result .. styles['table2h'] .. 'p4"\n!colspan="4"|[[List of Persona 4 Skills|<span style="color:black">List of Skills</span>]]' .. styles['skill'] .. 'Skill' .. styles['skillc'] .. 'Cost' .. styles['skillc'] .. 'Effect' .. styles['skillc'] .. 'Level'
for k1, v1 in ipairs(mw.text.split(skills, '\n')) do -- Any entry on new line within "Skills" parameter is treated as new skill name.
for k2, v2 in ipairs(mw.text.split(v1 .. '\\', '\\')) do -- Entry after backslash after skill name is treated as "level" for learning new skill per level gain. Any entry starting from second backslash on the same line is ignored until a new line.
if k2 > 2 then break
elseif (k2 % 2 == 0) then -- this checks even (true) or odd (false) number row.
if v2 == 'innate' or v2 == 'default' or v2 == 'Default'
then v2 = 'Innate'
end
if (k1 % 2 == 0) then
result = result .. styles['cost2'] .. v2 -- "v2" represents "Level" within "Skills" parameter on each new line after the backslash.
else result = result .. styles['cost1'] .. v2
end
else
local skill = data.skills[v2] -- now v2 represents skill name
if not skill then
local alias = data.aliases[v2]
if alias then
v2 = alias
skill = data.skills[v2]
else skill = v2
end
end
local skillcell = styles['skill'] .. v2
if skill == nil then
cost = ''
effect = noskill4
elseif skill.effect then
cost = skill.cost
effect = skill.effect
if skill.name then v2 = skill.name end
else
cost = ''
effect = noskill1 .. skill .. noskill2 .. 'P4' .. noskill3
end
if (k1 % 2 == 0) then
result = result .. skillcell .. styles['cost2'] .. cost .. styles['effect2'] .. effect
else
result = result .. skillcell .. styles['cost1'] .. cost .. styles['effect1'] .. effect
end
end
end
end
end
result = result .. '\n|}'
end
result = result .. '\n|}'
if inherit or resist or block or absorb or reflect or weak then
result = result .. cate1 .. 'Personas de Persona 4' .. cate2 .. cate1 .. 'Personas de Persona 4 Golden' .. cate2
elseif p4g then result = result .. cate1 .. 'Personas de Persona 4 Golden' .. cate2
end
if boss then result = result .. cate1 .. 'Chefes de Persona 4' .. cate2 end
if phys or fire or ice or elec or wind or light or dark or alm or xp or yen then result = result .. cate1 .. 'Shadows de Persona 4' .. cate2 end
return result
end
p.P5stats = makeInvokeFunction('_P5stats')
function p._P5stats(args)
local persona = args.Persona
local demon = args.Demon
local boss = args.Boss
local hp = args.HP
local sp = args.SP
local level = args.Level or ''
local arcana = args.Arcana or ''
local strength = args.Strength or args.st or ''
local magic = args.Magic or args.ma or ''
local endurance = args.Endurance or args.en or ''
local agility = args.Agility or args.ag or ''
local luck = args.Luck or args.lu or ''
local resist = args.Resist or args.Resists
local block = args.Block or args.Null or args.Immune
local absorb = args.Absorb or args.Absorbs or args.Drain
local reflect = args.Reflect or args.Reflects or args.Repel
local weak = args.Weak
local phys = args.Phys
local fire = args.Fire
local ice = args.Ice
local elec = args.Lit or args.Elec
local wind = args.Wind
local light = args.Light
local dark = args.Dark
local alm = args.Alm or args.Almighty
local inherit = args.Inherit
local yen = args.Yen
local xp = args.EXP
local skills = args.Skills
local result = '{|align="center" style="min-width:650px;text-align:center; background: #222; border:2px solid ' .. getGames.games['p5'].colorb .. '; border-radius:7px; font-size:75%; font-family:verdana;"\n|-\n|' .. styles['table2h'] .. 'p5"\n!Level\n![[Arcana|<span style="color:black">Arcana</span>]]\n'
if hp or mp then
result = result .. '!HP\n!SP'
end
result = result .. '\n!title="Strength"|St\n!title="Magic"|Ma\n!title="Endurance"|En\n!title="Agility"|Ag\n!title="Luck"|Lu\n|-\n' .. styles['statlow'] .. level .. styles['statlow']
if arcana == '' or arcana == '-' or arcana == 'Unclassified' or arcana == 'None'
then result = result .. '-'
else result = result .. '[[' .. arcana .. ' Arcana|' .. arcana .. ']]' .. cate1 .. arcana .. ' Arcana' .. cate2
end
if hp or sp then
result = result .. styles['statlow'] .. hp .. styles['statlow'] .. sp
end
result = result .. styles['statlow'] .. strength .. styles['statlow'] .. magic .. styles['statlow'] .. endurance .. styles['statlow'] .. agility .. styles['statlow'] .. luck .. '\n|}' .. styles['table2h'] .. 'p5"'
if phys or fire or ice or elec or wind or light or dark or alm or xp or yen then
if not phys then phys = '' end
if not fire then fire = '' end
if not ice then ice = '' end
if not elec then elec = '' end
if not wind then wind = '' end
if not light then light = '' end
if not dark then dark = '' end
if not alm then alm = '' end
if not xp then xp = '' end
if not yen then yen = '' end
result = result .. '\n!Phys\n!Fire\n!Ice\n!title="Electricity"|Elec\n!Wind\n!Light\n!Dark\n!Almighty\n!EXP\n!Yen\n|-\n' .. styles['statlow'] .. phys .. styles['statlow'] .. fire .. styles['statlow'] .. ice .. styles['statlow'] .. elec .. styles['statlow'] .. wind .. styles['statlow'] .. light .. styles['statlow'] .. dark .. styles['statlow'] .. alm .. styles['statlow'] .. xp .. styles['statlow'] .. yen
elseif inherit or resist or block or absorb or reflect or weak then
if not inherit then inherit = '-' end
if not resist then resist = '-' end
if not block then block = '-' end
if not absorb then absorb = '-' end
if not reflect then reflect = '-' end
if not weak then weak = '-' else weak = '<span style="color:#f22">' .. weak .. '</span>' end
result = result .. '\n!Inherit\n!Resists\n!Block\n!Absorbs\n!Reflects\n!Weak\n|-\n' .. styles['statlow'] .. inherit .. styles['statlow'] .. resist .. styles['statlow'] .. block .. styles['statlow'] .. absorb .. styles['statlow'] .. reflect .. styles['statlow'] .. weak
end
result = result .. '\n|}'
local data = require('Module:Skills/P5')
if skills then
result = result .. styles['table2h'] .. 'p5"\n!colspan="4" style="background: linear-gradient(120deg, ' .. getGames.games['p5'].colorb .. ' 42%, #000 42.1%, #000 43%, #fff 43.1%, #fff 57%, #000 57.1%, #000 58%, ' .. getGames.games['p5'].colorb .. ' 58.1%"|[[List of Persona 5 Skills|<span style="color:black;text-shadow:-3px 3px 3px #0ff">List of Skills</span>]]' .. styles['skill'] .. 'Skill'
if hp or sp or boss or demon then
result = result .. styles['skillc'] .. 'Effect'
for k, v in ipairs(mw.text.split(skills, '\n')) do
local skill = data.skills[v]
if not skill then
local alias = data.aliases[v]
if alias then
v = alias
skill = data.skills[v]
else skill = v
end
end
local skillcell = styles['skill'] .. v
local effect
if skill == nil then effect = noskill4
elseif skill.effect then
effect = skill.effect
if skill.name then v = skill.name end
else
effect = noskill1 .. skill .. noskill2 .. 'P5' .. noskill3
end
if (k % 2 == 0) then
result = result .. skillcell .. styles['effect2'] .. effect
else
result = result .. skillcell .. styles['effect1'] .. effect
end
end
else
result = result .. styles['skillc'] .. 'Cost' .. styles['skillc'] .. 'Effect' .. styles['skillc'] .. 'Level'
for k1, v1 in ipairs(mw.text.split(skills, '\n')) do -- Any entry on new line within "Skills" parameter is treated as new skill name.
for k2, v2 in ipairs(mw.text.split(v1 .. '\\', '\\')) do -- Entry after backslash after skill name is treated as "level" for learning new skill per level gain. Any entry starting from second backslash on the same line is ignored until a new line.
if k2 > 2 then break
elseif (k2 % 2 == 0) then -- this checks even (true) or odd (false) number row.
if v2 == 'innate' or v2 == 'default' or v2 == 'Default'
then v2 = 'Innate'
end
if (k1 % 2 == 0) then
result = result .. styles['cost2'] .. v2 -- "v2" represents "Level" within "Skills" parameter on each new line after the backslash.
else result = result .. styles['cost1'] .. v2
end
else
local skill = data.skills[v2] -- now v2 represents skill name
if not skill then
local alias = data.aliases[v2]
if alias then
v2 = alias
skill = data.skills[v2]
else skill = v2
end
end
local skillcell = styles['skill'] .. v2
if skill == nil then
cost = ''
effect = noskill4
elseif skill.effect then
cost = skill.cost
effect = skill.effect
if skill.name then v2 = skill.name end
else
cost = ''
effect = noskill1 .. skill .. noskill2 .. 'P5' .. noskill3
end
if (k1 % 2 == 0) then
result = result .. skillcell .. styles['cost2'] .. cost .. styles['effect2'] .. effect
else
result = result .. skillcell .. styles['cost1'] .. cost .. styles['effect1'] .. effect
end
end
end
end
end
result = result .. '\n|}'
end
result = result .. '\n|}'
if persona then result = result .. cate1 .. 'Personas de Persona 5' .. cate2 end
if demon then result = result .. cate1 .. 'Demônios de Persona 5' .. cate2 end
if boss then result = result .. cate1 .. 'Chefes de Persona 5' .. cate2 end
return result
end
return p
--[[Category:Skills modules|!]]
O conteúdo da comunidade está disponível sob CC-BY-SA salvo indicação em contrário.