Sem resumo de edição Etiqueta: sourceedit |
Sem resumo de edição Etiqueta: sourceedit |
||
Linha 168: | Linha 168: | ||
elseif race == 'Gaean' or race == 'Gaian' then race = '[[Ring of Gaea|Gaean]]' .. cate1 .. 'Ring of Gaea' .. 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 |
elseif race == 'Messian' then race = '[[Order of Messiah|Messian]]'.. cate1 .. 'Order of Messiah' .. cate2 |
||
− | else race = ' |
+ | else race = ' Race' .. cate1 .. race .. '[[' .. race .. ']]' .. cate2 |
end |
end |
||
if resist then resist = styles['table2h'] .. 'smt1"\n!width=100|Resistances\n|style="background:#000;text-align:left;padding:0 5px"|' .. resist .. '\n|}' |
if resist then resist = styles['table2h'] .. 'smt1"\n!width=100|Resistances\n|style="background:#000;text-align:left;padding:0 5px"|' .. resist .. '\n|}' |
Edição das 20h33min de 2 de abril de 2017
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 Race' .. cate2
elseif race == 'Ghost' then race = '[[Haunt|Ghost]]' .. cate1 .. 'Haunt Race' .. 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 = ' Race' .. 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 .. 'Shin Megami Tensei Bosses' .. cate2 else categoryd = cate1 .. 'Shin Megami Tensei Demons' .. 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 .. 'Persona 4 Personas' .. cate2 .. cate1 .. 'Persona 4 Golden Personas' .. cate2
elseif p4g then result = result .. cate1 .. 'Persona 4 Golden Personas' .. cate2
end
if boss then result = result .. cate1 .. 'Persona 4 Bosses' .. 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 .. 'Persona 4 Shadows' .. 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 .. 'Persona 5 Personas' .. cate2 end
if demon then result = result .. cate1 .. 'Persona 5 Demons' .. cate2 end
if boss then result = result .. cate1 .. 'Persona 5 Bosses' .. cate2 end
return result
end
return p
--[[Category:Skills modules|!]]