Join our Discord Server
Join the official community
           Join the Discord →
Human Rights
Support Human Rights
           Learn More →
Despera
Check out the Despera & Yotsuba Fan Project
           See Project →
Support Us
Support the wiki directly
About Page
Please check The Codex:About page to see what to do to help.
           See About page

Module:SMTSkills

From The Codex
Jump to navigationJump to search


local getArgs = require('Module:Arguments').getArgs local getGames = require('Module:SMTGameData')

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"|',
   ['skill2'] = '\n|-\n!style="background:#000;color:#fff" ',
   ['skill3'] = '\n!style="background:#000;color:#fff;',
   ['skill3m'] = '\n!style="background:transparent"|',
   ['cost1'] = '\n|style="background:#222"|',
   ['cost2'] = '\n|style="background:#282828"|',
   ['cost3'] = '\n|style="background:#222" ',
   ['effect1'] = '\n|style="background:#222;text-align:left;padding-left:5px"|',
   ['effect2'] = '\n|style="background:#282828;text-align:left;padding-left:5px"|',
   ['effect1p'] = '\n|colspan=2 style="background:#222;text-align:left;padding-left:5px"|',
   ['effect2p'] = '\n|colspan=2 style="background:#282828;text-align:left;padding-left:5px"|',
   ['order'] = '\n|style="background:#000;color:#fff;text-align:left;padding-left:5px"|',
   ['order2'] = '\n|-\n|style="background:#000;color:#fff;text-align:left;padding-left:5px"|',
   ['table2h'] = '\n{|width="100%" class="customtable ',
   ['table2'] = '\n{|width="100%" class="customtable"',
   ['table2b'] = '\n{|cellpadding=0 cellspacing=0 style="width:100%;background:transparent" ',
   ['statlow'] = '\n|style="background:#000;color:#fff"|',
   ['statlow2'] = '\n|style="background:#fff;color:#000"|',
   ['statlow3'] = '\n|style="background:#000;',
   ['quote'] = '\n|-\n|style="background:#000;color:#fff;text-align:center;border-radius:3.5px;',
   }

local function frac(numerator,denominator)

   return '' .. numerator .. '' .. denominator .. ''

end

local function resoutput(v,denominator,game)

   if not denominator then denominator = 8 end
   if v == 'dr' or v == 'ab' then
       v = 'color:lime" title="Drain"|Dr'
   elseif v == '.5dr' or v == '.5ab' or v == '50dr' or v == '50ab' or v == 'dr50' or v == 'ab50' then
       v = 'color:lime" title="50% Drain"|½Dr'
   elseif v == '2dr' or v == '2ab' then
       v = 'color:lime" title="Double Drain"|Dr'
   elseif v == 'rp' or v == 'rf' then
       v = 'color:cyan" title="Reflect"|Rf'
   elseif v == '.5rp' or v == '.5rf' or v == '50rp' or v == '50rf' or v == 'rp50' or v == 'rf50' then
       v = 'color:cyan" title="50% Reflect"|½Rf'
   elseif v == '1.5rp' or v == '1.5rf' or v == '150rp' or v == '150rf' or v == 'rp150' or v == 'rf150' then
       v = 'color:cyan" title="150% Reflect"|1.5×Rf'
   elseif v == '2rp' or v == '2rf' then
       v = 'color:cyan" title="Double Reflect"|Rf'
   elseif tonumber(v) == 0 then
       v = 'color:white" title="Null"|Nu'
   elseif tonumber(v) == 1 then
       v = '" title="Normal"| -'
   elseif tonumber(v) < 1 then
       v = 'color:teal"  title="Resist"|' .. frac((tonumber(v) * denominator),denominator)
   elseif tonumber(v) > 2 then
       v = 'color:red" title="Weak"|' .. v .. '×'
   elseif tonumber(v) > 1.3 then
       if game == 'smt1' or game == 'smt2' or game == 'smtif' then
           v = 'color:orange" title="Vulnerable"|' .. v .. '×'
       else
           v = 'color:red" title="Weak"|' .. v .. '×'
       end
   elseif tonumber(v) > 1.1 then
           v = 'color:orange" title="Vulnerable"|' .. v .. '×'
   end
   return styles.statlow3 .. v

end

local function outputResAsPercent(v)

   if type(v) == "number" then
       local result = string.format("%3d%%", v*100)
       
       if v == 0 then
           v = 'font-weight:bold"|Null'
       elseif v <= 1 then
           v = 'color:#669c92"|' .. result
       elseif v > 1 then
           v = 'color:#e32636"|' .. result
       end
   elseif v == "dr" then
       v = 'color:pink;font-weight:bold"|Drain'
   elseif v == "rf" then
       v = 'color:cyan;font-weight:bold"|Repel'
   else
       v = 'color:#e32636"|100%'
   end
   
   return styles.statlow3 .. v

end

local function rarityCategory(rarity, gamen)

   if string.find(rarity, "★") ~= nil then
       local rarityNumber = math.floor(#rarity/3)
       if rarityNumber > 0 then
           return string.format(, rarityNumber, gamen)
       else
           return 
       end
   else
       return string.format(, rarity, gamen)
   end

end

local function createEquipTable(base)

   local equiptable = {
       ["sword"] = "=",
       ["gun"] = "-",
       ["ammo"] = "-",
       ["accessory"] = "-",
       ["head"] = "-",
       ["body"] = "-",
       ["arms"] = "-",
       ["legs"] = "-"
   }
   
   local basetable = mw.text.split(base, "\n")
   
   for k, v in ipairs(basetable) do
       local kvPair = mx.text.split(v, "\\")
       local key = string.lower(kvPair[1])
       
       if equiptable[key] ~= nil then
           equiptable[key] = kvPair[2]
       end
   end
   
   return equiptable

end

local function cate(catename)

   if mw.title.getCurrentTitle():inNamespace() then
       return 
   else
       return 
   end

end

local function noskill(skill,gamed)

   local result = '\n|-\n!colspan=5 style="background:#300;width:600px"|'
   if skill and gamed then
       result = result .. 'Invalid skill name of "' .. skill .. '". You may correct the skill name or modify module:Skills/' .. gamed .. ' if needed'
   else
       result = result .. 'No empty line or empty skill name is allowed. You should either remove the empty line or add some proper skill name'
   end
   return result .. '.' .. cate('Articles with unrecognizable skill name for Module:Skills') .. '\n|-style="display:none"\n'

end

local function wikitext(text)

   return mw.getCurrentFrame():preprocess(text)

end

local race_names = { --Gods

   ['Deity'] = { 'Deity', 'Demon God', },
   ['Megami'] = { 'Megami', 'Goddess', },
   ['Amatsu'] = { 'Amatsu', 'Heavenly God', 'Tenjin', },
   ['Enigma'] = { 'Enigma', },
   ['Entity'] = { 'Entity', 'Geist', },
   ['Godly'] = { 'Godly', 'Godly Spirit', },
   ['Soshin'] = { 'Soshin', },
   ['Chaos'] = { 'Chaos', linkdab=true, },

--Guardians

   ['Tenma'] = { 'Tenma', },
   ['Fury'] = { 'Fury', 'Destroyer', 'Omega', linkdab=true, },
   ['Lady'] = { 'Lady', 'Earth Mother', },
   ['Kunitsu'] = { 'Kunitsu', 'Nation Ruler', 'Chigi', },
   ['Kishin'] = { 'Kishin', 'Guardian', },
   ['Vile'] = { 'Vile', },
   ['Reaper'] = { 'Reaper', linkdab=true, },
   ['Shinshou'] = { 'Shinshou', },
   ['Wargod'] = { 'Wargod', },
   ['Zealot'] = { 'Zealot', linkdab=true, },

--Aerials

   ['Herald'] = { 'Herald', 'Seraph', 'Hallel', },
   ['Divine'] = { 'Divine', },
   ['Fallen'] = { 'Fallen', 'Fallen Angel', 'Futenshi', },

--Birds

   ['Avian'] = { 'Avian', },
   ['Flight'] = { 'Flight', 'Wild Bird', },
   ['Raptor'] = { 'Raptor', },

--Dragons

   ['Dragon'] = { 'Dragon', 'Dragon God', },
   ['Snake'] = { 'Snake', 'Dragon King', },
   ['Drake'] = { 'Drake', 'Evil Dragon', },
   ['Hiryu'] = { 'Hiryu', },

--Beasts

   ['Avatar'] = { 'Avatar', 'Godly Beast', },
   ['Holy'] = { 'Holy', 'Holy Beast', },
   ['Beast'] = { 'Beast', linkdab=true, },
   ['Wilder'] = { 'Wilder', },
   ['UMA'] = { 'UMA', },
   ['Kaijuu'] = { 'Kaijuu', },

--Onis

   ['Touki'] = { 'Touki', },
   ['Brute'] = { 'Brute', },
   ['Jirae'] = { 'Jirae', 'Earth Spirit', },
   ['Femme'] = { 'Femme', 'Joma', },
   ['Jaki'] = { 'Jaki', 'Evil Demon', },
   ['Akuma'] = { 'Akuma', },
   ['Shinoma'] = { 'Shinoma', },
   ['Henii'] = { 'Henii', catename=false, },

--Magicas

   ['Tyrant'] = { 'Tyrant', 'Demon Lord', },
   ['Genma'] = { 'Genma', 'Demigod', },
   ['Fairy'] = { 'Fairy', },
   ['Yoma'] = { 'Yoma', },
   ['Night'] = { 'Night', 'Nocturne', },
   ['Shin Akuma'] = { 'Shin Akuma', },

--Vegetations

   ['Tree'] = { 'Tree', },
   ['Wood'] = { 'Wood', },
   ['Jusei'] = { 'Jusei', },

--Elementals

   ['Element'] = { 'Element', 'Prime', linkdab=true, },
   ['Mitama'] = { 'Mitama', },

--Evil Spirits

   ['Haunt'] = { 'Haunt', },
   ['Spirit'] = { 'Spirit', 'Jarei', },
   ['Undead'] = { 'Undead', 'Grave' },

--Humans

   ['Human'] = { 'Human', },
   ['Gaean'] = { 'Gaean', 'Gaian', link='Ring of Gaea', catename='Ring of Gaea', },
   ['Messian'] = { 'Messian', link='Order of Messiah', catename='Order of Messiah', },
   ['Summoner'] = { 'Summoner', link='Devil Summoner (race)', },
   ['Kyojin'] = { 'Kyojin', },
   ['Shinja'] = { 'Ishtar Shinja', 'Bael Shinja', },
   ['Meta'] = { 'Meta', },
   ['Ranger'] = { 'Ranger', },
   ['Hero'] = { 'Hero', },
   ['General'] = { 'General', },
   ['Therian'] = { 'Therian', },
   ['Foreigner'] = { 'Foreigner', },
   ['Fiend'] = { 'Fiend', },

--Fouls

   ['Foul'] = { 'Foul', },
   ['Vermin'] = { 'Vermin', },
   ['Demonoid'] = { 'Demonoid', },
   ['Rumor'] = { 'Rumor', },
   ['Karma'] = { 'Karma', link='Karma (race)', },

--Machine

   ['Machine'] = { 'Machine', 'Device' },
   ['Virus'] = { 'Virus', exclusive='#Virus and Vaccine', },
   ['Vaccine'] = { 'Vaccine', exclusive='#Virus and Vaccine', },

--Unclassified

   ['Zoma'] = { 'Zoma', },
   ['Fake'] = { 'Fake', },
   ['Famed'] = { 'Famed', },
   ['Suiyou'] = { 'Suiyou', },
   ['Nymph'] = { 'Nymph', },
   ['Food'] = { 'Food', },

--Enemy-exclusive

   ['Horde'] = { 'Horde', catename=false, },
   ['Yuiitsukami'] = { 'Yuiitsukami', exclusive='Yuiitsukami / Kami', catename=false, },
   ['Kami'] = { 'Kami', exclusive='Yuiitsukami / Kami', catename=false, },
   ['Himitsu'] = { 'Himitsu', exclusive='Himitsu', catename=false, },
   ['Teacher'] = { 'Teacher', exclusive='Kyoushi and Kaizou Kyoushi', catename=false, },
   ['Demon God Emperor'] = { 'Demon God Emperor', 'Majinou', 'Majin Ou', 'Majinō', 'Majinnou', 'Majinnō', exclusive='Majinou / Demon God Emperor', catename=false, },
   ['Boutoko'] = { 'Boutoko', exclusive='Boutoko / Violent Guy', catename=false, },
   ['Corpus'] = { 'Corpus', link='Manikin', catename=false, },
   ['Zoa'] = { 'Zoa', exclusive='Bunrei / Zoa', },
   ['Light'] = { 'Light', exclusive='Mujinkou / Light', catename=false, },
   ['Devil'] = { 'Devil', exclusive='Daimaou / Devil', catename=false, },
   ['Archaic'] = { 'Archaic', exclusive='Archaic', catename=false, },
   ['King'] = { 'King', exclusive='King', catename=false, },
   ['Koki'] = { 'Koki', exclusive='Koki', catename=false, },
   ['Great'] = { 'Great', exclusive='Great', catename=false, },
   ['Awake'] = { 'Awake', exclusive='Awake and Soil', catename=false, },
   ['Soil'] = { 'Soil', exclusive='Awake and Soil', catename=false, },
   ['Judge'] = { 'Judge', exclusive='Judge and Pillar', catename=false, },
   ['Pillar'] = { 'Pillar', exclusive='Judge and Pillar', catename=false, },
   ['Mother'] = { 'Mother', exclusive='Mother and Empty', catename=false, },
   ['Empty'] = { 'Empty', exclusive='Mother and Empty', catename=false, },
   ['Onmyo'] = { 'Onmyo', exclusive='Onmyo', catename=false, },
   ['God'] = { 'God', exclusive='Bonten / God', catename=false, },
   ['Bel'] = { 'Bel', link='King of Bel', catename=false, },
   ['Star'] = { 'Star', link='Septentriones', },
   ['Energy'] = { 'Energy', exclusive='Jiryuu / Energy', catename=false, },
   ['King Abaddon'] = { 'King Abaddon', catename=false, },
   ['Fukoshi'] = { 'Fukoshi', catename=false, },
   ['Locust'] = { 'Locust', 'Soldier Bug', link='Soldier Bug', catename=false, },
   ['Tokyogami'] = { 'Tokyogami', exclusive='Tokyogami', catename=false, },
   ['Rebel God'] = { 'Rebel God', exclusive='Rebel God', catename=false, },

}

local function getRace(race,game,abbr)

   local result
   if not race or race ==  or race == '-' or race == 'Unclassified' or race == 'None' or race == 'none' then result = '-'
   elseif game == 'ddsaga1' or game == 'ddsaga2' then
       if race == 'Deity' then result = '' .. race .. ''
       elseif race == 'Evil' or race == 'Icon' then result = '' .. race .. ''
       elseif race == 'Fiend' or race == 'Nether'  then result = '' .. race .. ''
       elseif race == 'Aerial' then result = '' .. race .. ''
       elseif race == 'Aerial2' then result = 'Aerial'
       elseif race == 'Dragon' then result = '' .. race .. ''
       elseif race == 'Demon' or race == 'Brute' then result = '' .. race .. ''
       elseif race == 'Beast' then result = '' .. race .. ''
       elseif race == 'Device' then result = '' .. race .. ''
       elseif race == 'Light' then result = '' .. race .. ''
       else result = race
       end
   elseif game == 'raidou1' or game == 'raidou2' then
       if race == 'Element' then result = 'Element' .. cate('Element Race')
       elseif race == 'Spirit' then result = 'Spirit' .. cate('Mitama Race')
       elseif race == 'Destroyer' or race == 'King Abaddon' or race == 'Fukoshi' or race == 'Locust' or race == 'Tokyogami' or race == 'Rebel God' then result = '' .. race ..''
       elseif race == 'Fiend' then result = 'Fiend' .. cate('Fiend Race')
       elseif race == 'Pyro' or race == 'Frost' or race == 'Volt' or race == 'Wind' or race == 'Fury' or race == 'Pagan' or race == 'Skill' or race == 'Evil' then result = '' .. race .. '' .. cate(race .. ' Order')
       else result = race
       end
   elseif race == 'Therian' then
       if game == 'mt1' then result = 'Therian' .. cate('Yoma Race')
       else result = 'Therian' .. cate('Therian Race')
       end
   elseif race == 'Ghost' then
       if game == 'sh' or game == 'smtds' then
           result = 'Ghost' .. cate('Ghost Race')
       else result = 'Ghost' .. cate('Haunt Race')
       end
   elseif race == 'Cyber' then
       if game == 'smt4' then
           result = 'Cyber' .. cate('Machine Race')
       else result = 'Cyber'
       end
   elseif race == 'Star 2' then
       result = 'Star' .. cate('Star Race')
   end
   for k, v in pairs(race_names) do
       for _, name in ipairs(v) do
           if race == name then
               if abbr then
                   abbr = '' .. name .. ''
               else abbr = name
               end
               if v.exclusive then
                   result = '' .. abbr .. ''
               elseif v.linkdab then
                   result = '' .. abbr .. ''
               elseif v.link then
                   result = '' .. abbr .. ''
               else
                   result = '' .. abbr .. ''
               end
               if v.catename==false then
               elseif v.catename then
                   result = result .. cate(v.catename)
               else
                   result = result .. cate(k .. ' Race')
               end
           end
       end
   end
   if not result then return race end
   return result

end

local function aligncat(align,gamen)

   local result
   if align == 'Law' or align == 'Light-Law' or align == 'Neutral-Law' or align == 'Dark-Law' then
       result = cate('Law Demons in ' .. gamen)
   elseif align == 'Neutral' or align == 'Light-Neutral' or align == 'Neutral-Neutral' or align == 'Dark-Neutral' then
       result = cate('Neutral Demons in ' .. gamen)
   elseif align == 'Chaos' or align == 'Light-Chaos' or align == 'Neutral-Chaos' or align == 'Dark-Chaos' then
       result = cate('Chaos Demons in ' .. gamen)
   elseif string.lower(align) == "unknown" then
       result = cate('Unknown Demons in ' .. gamen)
   else
       result = 
   end
   return result

end

local function alignnocat(align,nocat,gamen)

   local result
   if nocat then
       result = 
   elseif align == 'Law' or align == 'Light-Law' or align == 'Neutral-Law' or align == 'Dark-Law' then
       result = cate('Law Demons in ' .. gamen)
   elseif align == 'Neutral' or align == 'Light-Neutral' or align == 'Neutral-Neutral' or align == 'Dark-Neutral' then
       result = cate('Neutral Demons in ' .. gamen)
   elseif align == 'Chaos' or align == 'Light-Chaos' or align == 'Neutral-Chaos' or align == 'Dark-Chaos' then
       result = cate('Chaos Demons in ' .. gamen)
   elseif string.lower(align) == "unknown" then
       result = cate('UNKNOWN Demons in ' .. gamen)
   else
       result = 
   end
   return result

end

local function bossdemonnocat(boss,nocat,gamen)

   local result
   if boss then
       result = cate(gamen .. ' Bosses')
   elseif nocat then
       result = 
   else result = cate(gamen .. ' Demons')
   end
   return result

end

local function bossdemoncat(boss,gamen)

   local result
   if boss then
       result = cate(gamen .. ' Bosses')
   else result = cate(gamen .. ' Demons')
   end
   return result

end

local function getArcana(arcana,game,gamen)

   local result
   if not arcana or arcana ==  or arcana == '-' or arcana == 'Unclassified' or arcana == 'None' or arcana == 'none'
       then result = '-'
   elseif arcana == 'Coin' or arcana == 'Coins' then result = 'Coin' .. cate('Coin Arcana')
   elseif arcana == 'Pentacle' then result = 'Pentacle' .. cate('Coin Arcana')
   elseif arcana == 'Sword' or arcana == 'Swords' then result = 'Sword' .. cate('Sword Arcana')
   elseif arcana == 'Cup' or arcana == 'Cups' then result = 'Cup' .. cate('Cup Arcana')
   elseif arcana == 'Wand' or arcana == 'Wands' then result = 'Wand' .. cate('Wand Arcana')
   elseif arcana == 'Rod' then result = 'Rod' .. cate('Wand Arcana')
   elseif arcana == 'Rumor' then result = 'Rumor *' .. cate('Rumor Demon')
   elseif arcana == 'Taurus' or arcana == 'Aquarius' or arcana == 'Leo' or arcana == 'Scorpio' or arcana == 'Masquerade' then
       result = '' .. arcana .. '' .. cate('Masked Circle')
   elseif arcana == 'Reich' then result = '' .. arcana .. ''
   elseif arcana == 'Grave' or arcana == 'Zonbie' or arcana == 'Zombie' then result = '' .. arcana .. '' .. cate('Undead Race')
   elseif arcana == 'Human' then result = 'Human' .. cate('Human Race')
   elseif arcana == 'Machine' then result = 'Machine' .. cate('Machine Race')
   else result = '' .. arcana .. '' .. cate(arcana .. ' Arcana')
   end
   return result

end

local function bar(color,stat,ratio,cap,stat2,old,new) -- ratio is the length (in pixel) of each point. Cap times ratio equals max length of the stat bar.

   local stat_st, stat_width
   if stat == 'i' then
       stat = 'i'
   elseif not tonumber(stat) then
       stat_st = '--'
       stat = 0
       stat_width = 0
   elseif stat2 then
       stat_st = '' .. stat2 .. ''
   else stat_st = stat
   end
   if stat == 'i' then
   elseif tonumber(stat) > cap then
       stat_width = cap * ratio
       color = '#aaf'
   elseif stat_width ~= 0 then
       stat_width = tonumber(stat) * ratio
   end
       inherit = 'Inherit'
   if tostring(stat_st) == '+0' then stat_st = '--' end
   if stat == 'i' then
       return '--\n|Inherit\n|-'
   elseif stat2 then

return stat_st .. '\n|style="border-radius:10px;background-color:#000;background:linear-gradient(90deg, #2c2a46, #000);width:' .. cap * ratio + 3 .. 'px"|

\n|-' else return stat_st .. '\n|style="border-radius:10px;background-color:#000;background:linear-gradient(90deg, #2c2a46, #000);width:' .. cap * ratio + 3 .. 'px"|

\n|-'

   end

end

local function get_prop(args)

   local prop = {}
   for k, v in pairs(require('Module:SMT_Property_names')) do
       for _, name in ipairs(v) do
           if args[name] then
               prop[k] = args[name]
               break
           end
       end
       prop[k] = prop[k] or v.default
   end
   return prop

end

p.SMTStats = makeInvokeFunction('_SMTStats')

function p._SMTStats(args)

   local game = args[1] or args.game or args.Game or 
   game = game:lower()
   if game == 'mt' then game = 'mt1' end
   if game == 'kmt' then game = 'kmt1' end
   if game == 'smt' then game = 'smt1' end
   if game == 'smtii' then game = 'smt2' end
   if game == 'if' or game == 'if...' then game = 'smtif' end
   if game == 'smtn' or game == 'smt3n' then game = 'smt3' end
   if game == 'smtiv' then game = 'smt4' end
   if game == 'imagine' or game == 'smti' then game = 'smtim' end
   if game == 'gmt' or game == 'smti' then game = 'giten' end
   if game == 'lb' then game = 'lb1' end
   if game == 'majin' or game == 'mjt' then game = 'majin1' end
   if game == 'majin2sn' or game == 'mt2sn' then game = 'majin2' end
   if game == 'dssh' then game = 'sh' end
   if game == 'dsrksa' then game = 'raidou1' end
   if game == 'dsrkka' then game = 'raidou2' end
   if game == 'desu' or game == 'smtdesur' or game == 'desur' then game = 'desu1' end
   if game == 'smtdesur2' or game == 'desur2' then game = 'desu2' end
   if args.HazamaCh then game = 'smtifhc' end
   if args.FES then game = 'p3f' end
   if args.P3P then game = 'p3p' end
   if args.P4G then game = 'p4g' end
   if args.P5R then game = 'p5r' end
   if args.P5S then game = 'p5s' end
   if args.BR or args.RB then game = 'desu2rb' end
   if args.DC then game = '20xxdc' end
   if args.TMSFE then game = 'tmsfe' end
   local gameg -- Game general style
   if getGames.games[game].fallback then
       gameg = getGames.games[game].fallback -- e.g. 'p3f' and 'p3p' will fall back to 'p3' if applicable.
       else gameg = game
   end
   local gamen = getGames.games[game].name -- Full game name
   local gamegn = getGames.games[gameg].name -- e.g. 'Persona 3 FES' will fall back to 'Persona 3' if applicable.
   local gamed
   if gameg == 'mt1' or gameg == 'mt2' then
       gamed = 'KMT'
   elseif gameg == 'smtif' then
       gamed = 'if...'
   elseif gameg == 'raidou1' then
       gamed = 'DSRKSA'
   elseif gameg == 'raidou2' then
       gamed = 'DSRKKA'
   elseif gameg == 'childps' then
       gamed = 'CHILDRED'
   elseif gameg == 'childlight' then
       gamed = 'DMK'
   elseif gameg then
       gamed = gameg:upper()
   end
   local data
   if not (gameg == 'smt9' or gameg == '20xx' or game == 'lb3' or game == 'lbs' or game == 'ronde' or game == 'cs') then
       data = require('Module:Skills/' .. gamed)
   end
   local prop = get_prop(args)
   if gameg == 'smt3' then getGames.games[gameg].colorbg = getGames.games[gameg].colorbg2 end
   styles.h = '\n!style="background: ' .. getGames.games[gameg].colorbg .. ';color: ' .. getGames.games[gameg].font .. '" '
   styles.spanc = ''
   if not getGames.games[gameg].statt then getGames.games[gameg].statt = '#529488' end
   styles.barh = '\n|style="color:' .. getGames.games[gameg].statt .. '" '
   styles.bart11 = '\n|rowspan=2 style="padding:0" width='
   styles.bart12 = '|\n{|cellspacing=2 cellpadding=0 style="background:transparent;font-size:11px;font-family:monospace;letter-spacing:-1px;line-height:'
   styles.bard = '\n|style="text-align:right;padding:0 3px" '
   styles.bard1 = styles.bard .. 'width=12px|'
   styles.bard2 = styles.bard .. 'width=17px|'
   local result = '{|align="center" style="min-width:650px;text-align:center; background: #222; border:2px solid ' .. getGames.games[gameg].colorb .. '; border-radius:10px; font-size:75%; font-family:verdana;"\n|-\n|' .. styles.table2b
   if gameg == 'sh2' then result = '{|align="center" style="min-width:650px;text-align:center; background: #222; border:2px solid ' .. getGames.games[gameg].colorbg .. '; border-radius:10px; font-size:75%; font-family:verdana;"\n|-\n|' .. styles.table2b end
   if getGames.games[gameg].statb == nil then
       styles.barc = 'orange'
   else
       styles.barc = getGames.games[gameg].statb
   end
   if prop.image then
       result = result .. '\n!style="width:20px;border:#333 solid 2px;border-radius:7px;background:'
       if game == 'smt1' then result = result .. '#637373'
       elseif gameg == 'smtif' then result = result .. '#3018b8'
       elseif game == 'majin2' then result = result .. '#31315a'
       elseif gameg == 'p1' or gameg == 'p2is' or gameg == 'p2ep' or (gameg == 'p3' or gameg == 'p3re') or gameg == 'dcbrb' or gameg == 'dcbrp' or gameg == 'dcwb' or gameg == 'childred' or gameg == 'childps' or gameg == 'childwhite' or gameg == 'childfire' or gameg == 'childlight' then result = result .. 'transparent'
       else result = result .. '#000'
       end
       result = result .. '"|' .. prop.image
   end
   result = result .. '\n|'
   if prop.location then prop.location = '' .. prop.location .. '' else prop.location =  end
   if game == 'mt1' then
       if not prop.hp then prop.hp =  end
       if not prop.xp then prop.xp =  end
       if not prop.cp then prop.cp =  end
       if not prop.mag then prop.mag =  end
       if not prop.yen then prop.yen =  end
       if (prop.xp ~=  and prop.mag ~= ) then
           result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|EXP' .. styles.h .. '|' .. styles.spanc .. 'Macca' .. styles.h .. '|' .. styles.spanc .. 'MAG\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.xp .. styles.statlow .. prop.yen .. styles.statlow .. prop.mag .. '\n|}'
       elseif (prop.mp ~=  and prop.cp ~= ) then
              result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h .. 'title="Cost Point - MAG Cost per 10 steps"|CP' .. styles.h .. '|' .. styles.spanc .. 'Macca\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow  .. prop.cp .. styles.statlow .. prop.yen .. '\n|}'
       end
       result = result .. styles.table2 .. styles.h .. '|Strength' .. styles.h .. '|Intelligence' .. styles.h .. '|Hit' .. styles.h .. '|Agility' .. styles.h .. '|Defense' .. styles.h .. '|' .. styles.spanc .. 'Location\n|-' .. styles.statlow .. prop.str .. styles.statlow .. prop.int .. styles.statlow .. prop.hit .. prop.luc .. styles.statlow .. prop.agl .. styles.statlow .. prop.def .. prop.vit .. styles.statlow .. prop.location .. '\n|}' .. bossdemoncat(prop.boss,gamen)
   end
   if game == 'mt2' then
       if not prop.hp then prop.hp =  end
       if not prop.mp then prop.mp =  end
       if not prop.cp then prop.cp =  end
       if not prop.mag then prop.mag =  end
       if not prop.yen then prop.yen =  end
       if not prop.normal then prop.normal =  end
       result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h ..  'title="Cost Point - MAG Cost per 10 Steps"|CP\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.cp .. '\n|}'
       result = result .. styles.table2 .. styles.h .. 'title="Number appearing in battle"|Formations' .. styles.h .. '|' .. styles.spanc .. 'MAG' .. styles.h .. '|' .. styles.spanc .. 'Macca' .. styles.h .. '|' .. styles.spanc .. 'Item Drops\n|-' .. styles.statlow .. prop.formation .. styles.statlow .. prop.mag .. styles.statlow .. prop.yen .. styles.statlow .. prop.normal .. '\n|}'
       result = result .. styles.table2 .. styles.h .. '|Stamina' .. styles.h .. '|Intelligence' .. styles.h .. '|Attack' .. styles.h .. '|Agility' .. styles.h .. '|Luck' .. styles.h .. '|Defense\n|-' .. styles.statlow .. prop.vit .. styles.statlow .. prop.int .. styles.statlow .. prop.atk .. styles.statlow .. prop.agl .. styles.statlow .. prop.luc .. styles.statlow .. prop.def .. '\n|}' .. bossdemoncat(prop.boss,gamen)
   end
   if game == 'kmt1' or game == 'kmt2' then
       if not prop.hp then prop.hp =  end
       if not prop.mp then prop.mp =  end
       if prop.noa ==  then prop.noa = '1' end
       if not prop.cp then prop.cp =  end
       if not prop.mag then prop.mag =  end
       if not prop.xp then prop.xp =  end
       if not prop.yen then prop.yen =  end
       if not prop.normal then prop.normal =  end
       result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h .. 'title="Vitality"|VIT' .. styles.h .. 'title="Intellect"|INT' .. styles.h .. 'title="Strength"|STR' .. styles.h .. 'title="Speed"|SPD' .. styles.h .. 'title="Luck"|LUC' .. styles.h .. 'title="Defense"|DEF\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.vit .. styles.statlow .. prop.int .. styles.statlow .. prop.str .. styles.statlow .. prop.agl .. styles.statlow .. prop.luc .. styles.statlow .. prop.def .. '\n|}' .. bossdemoncat(prop.boss,gamen)
       result = result .. styles.table2 .. styles.h .. 'title="Cost Point - MAG Cost per 10 steps"|CP' .. styles.h .. 'title="Number of Attacks"|NOA' .. styles.h .. '|EXP' .. styles.h .. '|' .. styles.spanc .. 'Macca' .. styles.h .. 'title="Magnetite dropped"|' .. styles.spanc .. 'MAG' .. styles.h
       if game == 'kmt1' then result = result .. '|' .. styles.spanc .. 'Location'
       elseif game == 'kmt2' then result = result .. '|' .. styles.spanc .. 'Item Drops'
       end
       result = result .. '\n|-' .. styles.statlow .. prop.cp .. styles.statlow .. prop.noa .. styles.statlow .. prop.xp .. styles.statlow .. prop.yen .. styles.statlow .. prop.mag .. styles.statlow
       if game == 'kmt1' then result = result .. prop.location .. '\n|}'
       elseif game == 'kmt2' then result = result .. prop.normal .. '\n|}'
       end
   end
   if gameg == 'smt1' or gameg == 'smt2' or gameg == 'smtif' or gameg == '20xx' then
       if not prop.hp then prop.hp = '?' end
       if not prop.mp then prop.mp = '?' end
       if not prop.cp then prop.cp =  end
       if not prop.mag then prop.mag =  end
       result = result .. styles.table2b .. '\n|' ..  styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|' .. styles.spanc .. 'Alignment' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.alignment .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. '\n|}'
       result = result .. styles.table2 .. styles.h
       if prop.boss or prop.enemy then result = result .. '|' .. styles.spanc .. 'MAG'
       else result = result .. 'title="Cost Point - MAG Cost per 10 steps"|CP'
       end
       result = result .. styles.h .. 'title="Number of Attacks"|NOA' .. styles.h .. 'title="Physical Attack Power"|ATK' .. styles.h .. 'title="Physical Attack Accuracy"|ACC' .. styles.h .. 'title="Defenses"|DEF' .. styles.h .. 'title="Evasion"|EVA' .. styles.h .. 'title="Magical Attack Power"|M.ATK' .. styles.h .. 'title="Magical Hit-rate"|M.EFC'
       result = result .. '\n|-' .. styles.statlow .. prop.mag .. prop.cp .. styles.statlow .. prop.noa .. styles.statlow .. prop.atk .. styles.statlow .. prop.hit .. styles.statlow .. prop.def .. styles.statlow .. prop.avd .. styles.statlow .. prop.mpw .. styles.statlow .. prop.mef .. '\n|}\n|}' .. styles.bart11 .. '200px' .. styles.bart12 .. '1.4"' .. styles.barh .. 'title="Strength"|St' .. styles.bard1 .. bar(styles.barc,prop.str,4,40) .. styles.barh .. 'title="Intelligence"|In' .. styles.bard1 .. bar(styles.barc,prop.int,4,40) .. styles.barh .. 'title="Magic"|Ma' .. styles.bard1 .. bar(styles.barc,prop.magic,4,40) .. styles.barh .. 'title="Vitality"|Vi' .. styles.bard1 .. bar(styles.barc,prop.vit,4,40) .. styles.barh .. 'title="Agility"|Ag' .. styles.bard1 .. bar(styles.barc,prop.agl,4,40) .. styles.barh .. 'title="Luck"|Lu' .. styles.bard1 .. bar(styles.barc,prop.luc,4,40) .. '\n|}' .. bossdemonnocat(prop.boss,prop.nocat,gamen)
       if game == 'smtifhc' or gameg == '20xx' then else result = result .. alignnocat(prop.alignment,prop.nocat,gamen) end
   end
   if gameg == 'smt9' then
       local magCostLabel = 'title="Cost Point - MAG Cost per 10 steps"|CP'
       local capbuilddestroy = styles.h .. '|Capacity' .. styles.h .. '|Build Speed' .. styles.h .. 'title="Destruction Speed"|Dest. Speed\n|-'
       if not prop.hp then prop.hp = '?' end
       if not prop.mp then prop.mp = '?' end
       if not prop.cp then prop.cp =  end
       if not prop.mag then prop.mag =  end
       if not prop.capacity then prop.capacity =  end
       if not prop.buildspeed then prop.buildspeed =  end
       if not prop.destroyspeed then prop.destroyspeed =  end
       
       result = result .. styles.table2b .. '\n|' ..  styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|' .. styles.spanc .. 'Alignment' .. styles.h .. '|Level\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.alignment .. styles.statlow .. prop.level .. '\n|}'
       if prop.boss or prop.enemy then 
           magCostLabel = '|' .. styles.spanc .. 'MAG'
           capbuilddestroy = '\n|-'
       end
       result = result .. styles.table2 .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h .. magCostLabel .. capbuilddestroy .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.mag .. prop.cp
       if prop.boss or prop.enemy then
           result = result .. '\n|}'
       else
           result = result .. styles.statlow .. prop.capacity .. styles.statlow .. prop.buildspeed .. styles.statlow .. prop.destroyspeed .. '\n|}'
       end
       result = result .. styles.table2 .. styles.h .. 'title="Physical Attack Power"|ATK' .. styles.h .. 'title="Physical Attack Accuracy"|ACC' .. styles.h .. 'title="Number of Attacks"|NOA' .. styles.h .. 'title="Physical Defense"|DEF' .. styles.h .. 'title="Evasion"|EVA' .. styles.h .. 'title="Magical Attack Power"|M.ATK' .. styles.h .. 'title="Magical Hit-rate"|M.EFC' .. styles.h .. 'title="Magical Defense"|M.DEF\n|-' .. styles.statlow .. prop.atk .. styles.statlow .. prop.hit .. styles.statlow .. prop.noa .. styles.statlow .. prop.def .. styles.statlow .. prop.avd .. styles.statlow .. prop.mpw .. styles.statlow .. prop.mef .. styles.statlow .. prop.mdef .. '\n|}\n|}' .. styles.bart11 .. '200px' .. styles.bart12 .. '1.4"' .. styles.barh .. 'title="Strength"|St' .. styles.bard1 .. bar(styles.barc,prop.str,4,40) .. styles.barh .. 'title="Intelligence"|In' .. styles.bard1 .. bar(styles.barc,prop.int,4,40) .. styles.barh .. 'title="Magic"|Ma' .. styles.bard1 .. bar(styles.barc,prop.magic,4,40) .. styles.barh .. 'title="Vitality"|Vi' .. styles.bard1 .. bar(styles.barc,prop.vit,4,40) .. styles.barh .. 'title="Agility"|Ag' .. styles.bard1 .. bar(styles.barc,prop.agl,4,40) .. styles.barh .. 'title="Luck"|Lu' .. styles.bard1 .. bar(styles.barc,prop.luc,4,40) .. '\n|}' .. bossdemonnocat(prop.boss,prop.nocat,gamen) .. alignnocat(prop.alignment,prop.nocat,gamen)
   end
   if gameg == 'smt3' then
       if not prop.hp then prop.hp = '?' end
       if not prop.mp then prop.mp = '?' end
       result = result .. styles.table2 .. styles.h
       if prop.element then
           result = result .. '|Element' .. styles.h .. '|Wild Effects' .. cate('Magatama')
           styles.barc = getGames.games[gameg].statb2
       else
           result = result .. '|Race' .. bossdemoncat(prop.boss,gamen) .. styles.h .. 'width=9%|Level' .. styles.h .. 'width=9%|HP' .. styles.h .. 'width=9%|MP'
       end
       result = result .. styles.bart11 .. '319px' .. styles.bart12 .. '0.8"' .. styles.barh .. '|Strength' .. styles.bard2 .. bar(styles.barc,prop.str,6,40) .. styles.barh .. '|Magic' .. styles.bard2 .. bar(styles.barc,prop.magic,6,40) .. styles.barh .. '|Vitality' .. styles.bard2 .. bar(styles.barc,prop.vit,6,40) .. styles.barh .. '|Agility' .. styles.bard2 .. bar(styles.barc,prop.agl,6,40) .. styles.barh .. '|Luck' .. styles.bard2 .. bar(styles.barc,prop.luc,6,40) .. '\n|}\n|-' .. styles.statlow
       if prop.element then
           result = result .. prop.element .. styles.statlow .. prop.wild
       else

result = result .. getRace(prop.race,gameg) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. '

' .. styles.statlow .. prop.mp .. '

'

       end
       result = result .. '\n|}'
   end
   if gameg == 'smtim' then
       if not prop.hp then prop.hp = '?' end
       if not prop.mp then prop.mp = '?' end
       result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|' .. styles.spanc .. 'Alignment' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h .. '|Growth' .. styles.h .. '|Inherit' .. styles.h .. 'title="Strength"|St' .. styles.h .. 'title="Magic"|Ma' .. styles.h .. 'title="Vitality"|Vi' .. styles.h .. 'title="Intelligence"|In' .. styles.h .. 'title="Speed"|Sp' .. styles.h .. 'title="Luck"|Lu'
       result = result .. '\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.alignment .. aligncat(prop.alignment,gamen) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.growth .. styles.statlow .. prop.inherit .. styles.statlow .. prop.str .. styles.statlow .. prop.magic .. styles.statlow .. prop.vit .. styles.statlow .. prop.int .. styles.statlow .. prop.agl .. styles.statlow .. prop.luc .. '\n|}'
       result = result .. styles.table2 .. styles.h .. '|Force Slot' .. styles.h .. 'title="Close Range"|Close' .. styles.h .. 'title="Long Range"|Long' .. styles.h .. '|Spell' .. styles.h .. '|Support' .. styles.h .. 'title="Physical Defense"|P.Def' .. styles.h .. 'title="Magical Defense"|M.Def' .. styles.h .. '|Critical' .. styles.h .. 'title="Critical Defense"|Crt.Def\n|-'
       result = result .. styles.statlow .. prop.forceslot .. styles.statlow .. prop.closerange .. styles.statlow .. prop.longrange .. styles.statlow .. prop.spell .. styles.statlow .. prop.support .. styles.statlow .. prop.def .. styles.statlow .. prop.mdef .. styles.statlow .. prop.critical .. styles.statlow .. prop.critdef .. '\n|}' .. bossdemoncat(prop.boss,gamen)
   end
   if gameg == 'smtsj' then
       if not prop.hp then prop.hp = '?' end
       if prop.boss then prop.mp = '∞' elseif not prop.mp then prop.mp = '?' end

result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|' .. styles.spanc .. 'Alignment' .. styles.h .. '|Level' .. styles.h .. 'width=7%|HP' .. styles.h .. 'width=7%|MP' .. styles.bart11 .. '274px' .. styles.bart12 .. '0.8"' .. styles.barh .. '|Strength' .. styles.bard1 .. bar(styles.barc,prop.str,2,99) .. styles.barh .. '|Magic' .. styles.bard1 .. bar(styles.barc,prop.magic,2,99) .. styles.barh .. '|Vitality' .. styles.bard1 .. bar(styles.barc,prop.vit,2,99) .. styles.barh .. '|Agility' .. styles.bard1 .. bar(styles.barc,prop.agl,2,99) .. styles.barh .. '|Luck' .. styles.bard1 .. bar(styles.barc,prop.luc,2,99) .. '\n|}\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.alignment .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. '

' .. styles.statlow .. prop.mp .. '

' .. '\n|}' .. bossdemoncat(prop.boss,gamen) .. aligncat(prop.alignment,gamen)

   end
   if gameg == 'smt4' or gameg == 'smt4a' then
       if not prop.hp then prop.hp = '?' end
       if prop.boss then prop.mp = '∞' elseif not prop.mp then prop.mp = '?' end
       styles.h = '\n!style="color:' .. getGames.games[gameg].colorbg2 .. ';background:#000" '
       result = result .. styles.table2 .. styles.h .. '|Race' .. styles.h .. 'width=45px|Level' .. styles.h .. 'width=45px|HP' .. styles.h .. 'width=45px|MP' .. styles.bart11 .. '387px' .. styles.bart12 .. '0.8"' .. styles.barh .. '|Strength' .. styles.bard2 .. bar(styles.barc,prop.str,1.5,200) .. styles.barh .. '|Dexterity' .. styles.bard2 .. bar(styles.barc,prop.dex,1.5,200) .. styles.barh .. '|Magic' .. styles.bard2 .. bar(styles.barc,prop.magic,1.5,200) .. styles.barh .. '|Agility' .. styles.bard2 .. bar(styles.barc,prop.agl,1.5,200) .. styles.barh .. '|Luck' .. styles.bard2 .. bar(styles.barc,prop.luc,1.5,200) .. '\n|}\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. '\n|}' .. bossdemoncat(prop.boss,gamen)
       if not prop.phys then prop.phys = '-' end
       if not prop.gun then prop.gun = '-' end
       if not prop.fire then prop.fire = '-' end
       if not prop.ice then prop.ice = '-' end
       if not prop.elec then prop.elec = '-' end
       if not prop.force then prop.force = '-' end
       if not prop.expel then prop.expel = '-' end
       if not prop.curse then prop.curse = '-' end
       styles.h = '\n!style="background:' .. getGames.games[gameg].colorbg2
       local statlow = '\n|style="background:' .. getGames.games[gameg].colorbg2
       if gameg == 'smt4a' then
           styles.h = styles.h .. ';color:#fff" '
           statlow = statlow .. ';color:#fff"|'
       elseif gameg == 'smt4' then
           styles.h = styles.h .. ';color:#000" '
           statlow = statlow .. ';color:#000"|'
       end
       result = result .. styles.table2 .. styles.h .. 'width=12.5% title="Physical"|Physical Phys' .. styles.h .. 'width=12.5% title="Gun"|Gun Gun' .. styles.h .. 'width=12.5% title="Fire"|Fire Fire' .. styles.h .. 'width=12.5% title="Ice"|Ice Ice' .. styles.h .. 'width=12.5% title="Electricity"|Electricity Elec' .. styles.h .. 'width=12.5% title="Force"|Force Force' .. styles.h .. 'width=12.5% title="Light"|Light Light' .. styles.h .. 'width=12.5% title="Dark"|Dark Dark\n|-\n' .. statlow .. prop.phys .. statlow .. prop.gun .. statlow .. prop.fire .. statlow .. prop.ice .. statlow .. prop.elec .. statlow .. prop.force .. statlow .. prop.expel .. statlow .. prop.curse .. '\n|}'
       styles.h = '\n!style="background: ' .. getGames.games[gameg].colorbg .. ';color: ' .. getGames.games[gameg].font .. '" '
       result = result .. styles.table2 .. styles.h .. 'width=130px title="All enemies and guest allies are immune to '.."'Lost'"..' ailment"|'
       if prop.almres ~=  then result = result .. 'Other' else result = result .. 'Ailment' end
       result = result .. ' Resistance' .. styles.order .. prop.almres .. prop.res .. '\n|}' .. styles.table2 .. styles.h .. 'width=100px|Normal Attack' .. styles.order .. prop.noa
       if prop.turnicon then result = result .. styles.h .. 'width=70px|' .. styles.spanc .. 'Turn Icon' .. styles.order .. prop.turnicon end
       result = result .. '\n|}'
       if prop.requiredquest or prop.relatedquest or prop.normal then
           result = result .. styles.table2
           if prop.requiredquest then
               result = result .. styles.h .. 'width=100px|' .. styles.spanc .. 'Required quest' .. styles.order .. prop.requiredquest
           elseif prop.relatedquest then
               result = result .. styles.h .. 'width=100px|' .. styles.spanc .. 'Related quest' .. styles.order .. prop.relatedquest
           end
           if prop.normal then result = result .. styles.h .. 'width=70px|' .. styles.spanc .. 'Drop' .. styles.order .. prop.normal end
           result = result .. '\n|}'
       end
       if prop.evolvef or prop.evolvet then
           result = result .. styles.table2
           if prop.evolvef then result = result .. styles.h .. 'width=100px|' .. styles.spanc .. 'Evolved from' .. styles.order .. prop.evolvef .. ' (' .. prop.evolvefl .. ')' end
           if prop.evolvet then result = result .. styles.h .. 'width=100px|' .. styles.spanc .. 'Evolves into' .. styles.order .. prop.evolvet .. ' (' .. prop.evolvetl .. ')' end
           result = result .. '\n|}'
       end
       if prop.specialty then
           result = result .. styles.table2 .. styles.h .. 'width=100px|Skill Affinities' .. styles.order
           prop.specialty = mw.text.split(prop.specialty, '\n')
           for k1, v1 in ipairs(prop.specialty) do
               for k2, v2 in ipairs(mw.text.split(v1 .. '\\', '\\')) do
                   if k2 > 2 then break
                   elseif (k2 % 2 == 1) then -- skill type
                       prop.skilltypes = {
                           ['phys'] = 'Physical Physical',
                           ['gun'] = 'Gun Gun',
                           ['fire'] = 'Fire Fire',
                           ['ice'] = 'Ice Ice',
                           ['elec'] = 'Electricity Electricity',
                           ['force'] = 'Force Force',
                           ['light'] = 'Light Light',
                           ['dark'] = 'Dark Dark',
                           ['almighty'] = 'Almighty Almighty',
                           ['ailment'] = 'Ailment Ailment',
                           ['heal'] = 'Healing Healing',
                           ['support'] = 'Support Support',
                       }
                       result = result .. '' .. prop.skilltypes[v2:lower()]
                   elseif (k2 % 2 == 0) then -- modifier
                       if string.sub(v2,1,1) == '+' then
                           result = result .. ' ' .. v2 .. ''
                       else
                           result = result .. ' ' .. v2 .. ''
                       end
                       if next(prop.specialty,k1) then -- add dot separator if it's not the last entry
                           result = result .. ' · '
                           if k1 == 6 then
                               result = result .. '
' end end end end end result = result .. '\n|}' end end if gameg == 'smt5' then if not prop.hp then prop.hp = '?' end if prop.boss then prop.mp = '∞' elseif not prop.mp then prop.mp = '?' end styles.h = '\n!style="color:' .. getGames.games[gameg].colorbg2 .. ';background:#000" ' result = result .. styles.table2 .. styles.h .. '|Race' .. styles.h .. 'width=45px|Level' .. styles.h .. 'width=45px|HP' .. styles.h .. 'width=45px|MP' .. styles.bart11 .. '324px' .. styles.bart12 .. '0.8"' .. styles.barh .. '|Strength' .. styles.bard2 .. bar(styles.barc,prop.str,2.4,100) .. styles.barh .. '|Vitality' .. styles.bard2 .. bar(styles.barc,prop.vit,2.4,100) .. styles.barh .. '|Magic' .. styles.bard2 .. bar(styles.barc,prop.magic,2.4,100) .. styles.barh .. '|Agility' .. styles.bard2 .. bar(styles.barc,prop.agl,2.4,100) .. styles.barh .. '|Luck' .. styles.bard2 .. bar(styles.barc,prop.luc,2.4,100) .. '\n|}\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. '\n|}' .. bossdemoncat(prop.boss,gamen) .. aligncat(prop.alignment,gamen) if not prop.phys then prop.phys = '-' end if not prop.fire then prop.fire = '-' end if not prop.ice then prop.ice = '-' end if not prop.elec then prop.elec = '-' end if not prop.force then prop.force = '-' end if not prop.expel then prop.expel = '-' end if not prop.curse then prop.curse = '-' end styles.h = '\n!style="background:' .. getGames.games[gameg].colorbg2 .. ';color:#fff" ' local statlow = '\n|style="background:' .. getGames.games[gameg].colorbg2 .. ';color:#fff"|' result = result .. styles.table2 .. styles.h .. 'width=14.8% title="Physical"|Physical Phys' .. styles.h .. 'width=14.2% title="Fire"|Fire Fire' .. styles.h .. 'width=14.2% title="Ice"|Ice Ice' .. styles.h .. 'width=14.2% title="Electricity"|Electricity Elec' .. styles.h .. 'width=14.2% title="Force"|Force Force' .. styles.h .. 'width=14.2% title="Light"|Light Light' .. styles.h .. 'width=14.2% title="Dark"|Dark Dark\n|-\n' .. statlow .. prop.phys .. statlow .. prop.fire .. statlow .. prop.ice .. statlow .. prop.elec .. statlow .. prop.force .. statlow .. prop.expel .. statlow .. prop.curse .. '\n|}' styles.h = '\n!style="background: ' .. getGames.games[gameg].colorbg .. ';color: ' .. getGames.games[gameg].font .. '" ' result = result .. styles.table2 .. styles.h .. 'width=130px title="All enemies and guest allies are immune to '.."'Lost'"..' ailment"|' if prop.almres ~= then result = result .. 'Other' else result = result .. 'Ailment' end result = result .. ' Resistance' .. styles.order .. prop.almres .. prop.res .. '\n|}' if prop.turnicon then result = result .. styles.table2 .. styles.h .. 'width=70px|' .. styles.spanc .. 'Turn Icon' .. styles.order .. prop.turnicon .. '\n|}' end if prop.requiredquest or prop.relatedquest or prop.normal then result = result .. styles.table2 if prop.requiredquest then result = result .. styles.h .. 'width=100px|' .. styles.spanc .. 'Required quest' .. styles.order .. prop.requiredquest elseif prop.relatedquest then result = result .. styles.h .. 'width=100px|' .. styles.spanc .. 'Related quest' .. styles.order .. prop.relatedquest end if prop.normal then result = result .. styles.h .. 'width=70px|' .. styles.spanc .. 'Drop' .. styles.order .. prop.normal end result = result .. '\n|}' end if prop.specialty then styles.h = '\n!style="background:' .. getGames.games[gameg].colorbg2 .. ';color:#fff" ' result = result .. styles.table2h .. '"' .. styles.h .. 'colspan=4|' .. styles.spanc .. 'Skill Potential' prop.specialty = mw.text.split(prop.specialty, '\n') prop.skilltypes = { ['phys'] = '-', ['fire'] = '-', ['ice'] = '-', ['elec'] = '-', ['force'] = '-', ['light'] = '-', ['dark'] = '-', ['almighty'] = '-', ['ailment'] = '-', ['heal'] = '-', ['support'] = '-', } local restemp for k1, v1 in ipairs(prop.specialty) do for k2, v2 in ipairs(mw.text.split(v1 .. '\\', '\\')) do if k2 > 2 then break elseif (k2 % 2 == 1) then -- skill type restemp = v2:lower() elseif (k2 % 2 == 0) then -- modifier if string.sub(v2,1,1) == '+' then prop.skilltypes[restemp] = ' ' .. v2 .. '' else prop.skilltypes[restemp] = ' ' .. v2 .. '' end end end end result = result .. styles.table2 .. styles.cost3 .. 'width=10% title="Physical"|Physical
Phys' .. styles.cost3 .. 'width=9% title="Fire"|Fire
Fire' .. styles.cost3 .. 'width=9% title="Ice"|Ice
Ice' .. styles.cost3 .. 'width=9% title="Electricity"|Electricity
Elec' .. styles.cost3 .. 'width=9% title="Force"|Force
Force' .. styles.cost3 .. 'width=9% title="Light"|Light
Light' .. styles.cost3 .. 'width=9% title="Dark"|Dark
Dark' .. styles.cost3 .. 'width=9% title="Almighty"|Almighty
Almi.' .. styles.cost3 .. 'width=9% title="Ailment"|Ailment
Ailm.' .. styles.cost3 .. 'width=9% title="Healing"|Healing
Heal.' .. styles.cost3 .. 'width=9% title="Support"|Support
Supp.\n|-\n' .. styles.cost3 .. 'width=9%|' .. prop.skilltypes['phys'] .. styles.cost3 .. 'width=9%|' .. prop.skilltypes['fire'] .. styles.cost3 .. 'width=9%|' .. prop.skilltypes['ice'] .. styles.cost3 .. 'width=9%|' .. prop.skilltypes['elec'] .. styles.cost3 .. 'width=9%|' .. prop.skilltypes['force'] .. styles.cost3 .. 'width=9%|' .. prop.skilltypes['light'] .. styles.cost3 .. 'width=9%|' .. prop.skilltypes['dark'] .. styles.cost3 .. 'width=9%|' .. prop.skilltypes['almighty'] .. styles.cost3 .. 'width=9%|' .. prop.skilltypes['ailment'] .. styles.cost3 .. 'width=9%|' .. prop.skilltypes['heal'] .. styles.cost3 .. 'width=9%|' .. prop.skilltypes['support'] .. '\n|}' .. '\n|}' end end if gameg == 'ldx2' then if not prop.hp then prop.hp = '?' end if not prop.rarity then prop.rarity = string.rep("★", math.ceil((tonumber(prop.level) + 1) / 20)) end
       styles.h = '\n!style="color:' .. getGames.games[gameg].colorbg .. ';background:#000" '
       result = result .. styles.table2 .. styles.h .. '|Race' .. styles.h .. 'width=45px|Rarity' .. styles.h .. '"width=45px|Grade' .. styles.h .. 'width=45px|HP' .. styles.bart11 .. '324px' .. styles.bart12 .. '0.8"' .. '\n|+6★ Stats' .. styles.barh .. '|Strength' .. styles.bard2 .. bar(styles.barc,prop.str,1,255) .. styles.barh .. '|Magic' .. styles.bard2 .. bar(styles.barc,prop.magic,1,255) .. styles.barh .. '|Vitality' .. styles.bard2 .. bar(styles.barc,prop.vit,1,255) .. styles.barh .. '|Agility' .. styles.bard2 .. bar(styles.barc,prop.agl,1,255) .. styles.barh .. '|Luck' .. styles.bard2 .. bar(styles.barc,prop.luc,1,255) .. '\n|}\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.rarity .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. '\n|}' .. bossdemoncat(prop.boss,gamen) .. rarityCategory(prop.rarity, gamen)
       if not prop.seealso then prop.seealso = mw.title.getCurrentTitle().text end
       result = result .. styles.table2 .. styles.h .. 'title="Physical Attack"|Phys ATK' .. styles.h .. 'title="Physical Defense"|Phys DEF' .. styles.h .. 'title="Magical Attack"|Mag ATK' .. styles.h .. 'title="Magical Defense"|Mag DEF' .. styles.h .. '|See Also' .. '\n|-' .. styles.statlow .. prop.atk .. styles.statlow .. prop.def .. styles.statlow .. prop.matk .. styles.statlow .. prop.mdef .. styles.statlow .. '.. string.gsub(prop.seealso, ' ', '_') .. '\n|}'
       if not prop.phys then prop.phys = '-' end
       if not prop.fire then prop.fire = '-' end
       if not prop.ice then prop.ice = '-' end
       if not prop.elec then prop.elec = '-' end
       if not prop.force then prop.force = '-' end
       if not prop.expel then prop.expel = '-' end
       if not prop.dark then prop.dark = '-' end
       styles.h = '\n!style="background:' .. getGames.games[gameg].colorbg .. ';color:#fff" '
       local statlow = '\n|style="background:' .. getGames.games[gameg].colorbg .. ';color:#fff"|'
       result = result .. styles.table2 .. styles.h .. 'width=14.8% title="Physical"|Physical Phys' .. styles.h .. 'width=14.2% title="Fire"|Fire Fire' .. styles.h .. 'width=14.2% title="Ice"|Ice Ice' .. styles.h .. 'width=14.2% title="Electricity"|Electricity Elec' .. styles.h .. 'width=14.2% title="Force"|Force Force' .. styles.h .. 'width=14.2% title="Light"|Light Light' .. styles.h .. 'width=14.2% title="Dark"|Dark Dark\n|-\n' .. statlow .. prop.phys .. statlow .. prop.fire .. statlow .. prop.ice .. statlow .. prop.elec .. statlow .. prop.force .. statlow .. prop.expel .. statlow .. prop.dark .. '\n|}'
   end
   if gameg == 'lb1' or gameg == 'lb2' or gameg == 'lb3' or gameg == 'lbs' then
       if not prop.hp then prop.hp = '?' end
       if not prop.mp then prop.mp = '?' end
       if gameg == 'lb1' and prop.atk ==  then prop.atk = '1' end
       result = result .. styles.table2 .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP'
       if gameg == 'lb1' then result = result .. styles.h .. 'title="Number of Attacks"|NOA' .. styles.h .. 'title="Defense"|DEF'
           else result = result .. styles.h .. 'title="Attack Power"|ATK' .. styles.h .. 'title="Defense"|DEF' end
       result = result .. styles.h .. 'title="Strength"|STR' .. styles.h .. 'title="Intelligence"|INT' .. styles.h .. 'title="Endurance"|END' .. styles.h .. 'title="Speed"|SPD' .. styles.h .. 'title="Luck"|LUC\n|-' .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.atk .. styles.statlow .. prop.def .. styles.statlow .. prop.str .. styles.statlow .. prop.int .. styles.statlow .. prop.vit .. styles.statlow .. prop.agl .. styles.statlow .. prop.luc .. '\n|}' .. bossdemoncat(prop.boss,gamen)
       if prop.resist or prop.extra then
           result = result .. styles.table2
           if prop.resist then result = result .. styles.h .. '|Resistances' .. styles.order .. prop.resist end
           if prop.extra then result = result .. styles.h .. '|Special' .. styles.order .. prop.extra end
           result = result .. '\n|}'
       end
       if prop.equip ~=  or prop.card then
           if prop.equip == 'Pteros' or prop.equip == 'pteros' or prop.equip == 'Bird' then prop.equip = 'Claws'
           elseif prop.equip == 'Kobold' or prop.equip == 'kobold' or prop.equip == 'Jaki' then prop.equip = 'Claws, Hammers, Tornado, Axes, Shields'
           elseif prop.equip == 'Dwarf' or prop.equip == 'dwarf' or prop.equip == 'Jirae' then prop.equip = 'Claws, Swords, Armour, Shields'
           elseif prop.equip == 'Pixie' or prop.equip == 'pixie' or prop.equip == 'Fairy' then prop.equip = 'Claws, Hammers, Shurikens, Tornado, Axes, Swords, Armour, Shields'
           else
               if gameg == 'lb2' then prop.equip = 'None' end
           end
           result = result .. styles.table2
           if prop.equip ~=  then result = result .. styles.h .. 'width=70|' .. styles.spanc .. 'Equipment' .. styles.order .. prop.equip end
           if prop.card then result = result .. styles.h .. 'width=100|Card Location' .. styles.order .. prop.card end
           result = result .. '\n|}'
       end
   end
   if gameg == 'ab' then
       if not prop.hp then prop.hp = '?' end
       if not prop.mp then prop.mp = '?' end
       result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|Rank' .. styles.h .. '|HP' .. styles.h .. '|PP' .. styles.h .. '|Move' .. styles.h .. '|Power' .. styles.h .. 'title="Defensive Power"|Might' .. styles.h .. '|Magic' .. styles.h .. '|Speed' .. styles.h .. '|Luck\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.move .. styles.statlow .. prop.power .. styles.statlow .. prop.might .. styles.statlow .. prop.magic .. styles.statlow .. prop.agl .. styles.statlow .. prop.luc .. '\n|}' .. bossdemoncat(prop.boss,gamen)
       if prop.weapon ~=  then
           result = result .. styles.table2 .. styles.h .. 'width=80px|' .. styles.spanc .. 'Weapon' .. styles.effect1 .. prop.weapon .. '\n|}'
       end
       if prop.tech then
           prop.techc = data.skills[prop.tech]
           if not prop.techc then
               alias = data.aliases[prop.tech]
               if alias then
                   prop.tech = alias
                   prop.techc = data.skills[prop.tech]
               else prop.techc.effect = noskill(prop.tech,gamed)
               end
           end
           result = result .. styles.table2 .. styles.h .. 'colspan=5|' .. styles.spanc .. 'Technique' .. styles.skill .. 'Technique' .. styles.skillc .. 'Cost' .. styles.skillc .. 'Range' .. styles.skillc .. 'Target' .. styles.skillc .. 'Description' .. styles.skill .. prop.tech .. styles.cost1 .. prop.techc.cost .. styles.cost1 .. prop.techc.range .. styles.cost1 .. prop.techc.target .. styles.effect1 .. prop.techc.effect .. '\n|}'
       end
   end
   if gameg == 'majin1' or gameg == 'majin2' or gameg == 'ronde' then
       if not prop.hp then prop.hp = '?' end
       if not prop.mp then prop.mp = '?' end
       if not prop.cp then prop.cp =  end
       if not prop.mag then prop.mag =  end
       result = result .. bossdemoncat(prop.boss,gamen) .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h .. '|Mv Range' .. styles.h .. '|Mv Type' .. styles.h
       if gameg == 'majin1' then result = result .. '|Atk Type' .. styles.h .. 'title="Cost Point - MAG cost per 10 steps"|CP'
       elseif gameg == 'majin2' then result = result .. '|Atk Range' .. styles.h .. '|' .. styles.spanc .. 'MAG'
       elseif gameg == 'ronde' then result = result .. '|Atk Range' .. styles.h .. '|Arcana'
       end
       result = result .. '\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.move .. styles.statlow .. prop.movetype .. styles.statlow .. prop.noa .. styles.statlow
       if gameg == 'ronde' then result = result .. prop.arcana .. '\n|}'
       else result = result .. prop.cp .. prop.mag .. '\n|}'
       end
       if gameg == 'majin1' then
           result = result .. styles.table2 .. styles.h .. '|Strength' .. styles.h .. '|Magic' .. styles.h .. '|Technique' .. styles.h .. '|Defense' .. styles.h .. '|Agility' .. styles.h .. '|Luck\n|-' .. styles.statlow .. prop.str .. styles.statlow .. prop.magic .. styles.statlow .. prop.dex .. styles.statlow .. prop.def .. styles.statlow .. prop.agl .. styles.statlow .. prop.luc .. '\n|}'
       else
           result = result .. styles.table2 .. styles.h .. 'title="Strength"|St' .. styles.h .. 'title="Magic|Ma' .. styles.h .. 'title="Intelligence"|In' .. styles.h .. 'title="Agility"|Ag' .. styles.h .. 'title="Luck|Lu' .. styles.h .. 'title="Attack Power"|Atk' .. styles.h .. 'title="Physical Defense"|P.Def' .. styles.h
           if gameg == 'majin2' then
               result = result .. 'title="Magical Attack Power"|M.Atk' .. styles.h .. 'title="Magical Defense"|M.Def' .. styles.h .. 'title="Hit-rate"|Hit' .. styles.h .. 'title="Evasion"|Eva' .. styles.h .. 'title="Critical Rate"|Crt\n|-'
           else
               result = result .. 'title="Magical Defense"|M.Def\n|-'
           end
           result = result .. styles.statlow .. prop.str .. styles.statlow .. prop.magic .. styles.statlow .. prop.int .. styles.statlow .. prop.agl .. styles.statlow .. prop.luc .. styles.statlow .. prop.atk .. styles.statlow .. prop.def .. styles.statlow
           if gameg == 'majin2' then
               result = result .. prop.matk .. styles.statlow .. prop.mdef .. styles.statlow .. prop.hit .. styles.statlow .. prop.avd .. styles.statlow .. prop.critical .. '\n|}'
           else result = result .. prop.mdef .. '\n|}'
           end
       end
       if gameg == 'ronde' then
           if not prop.askills then prop.askills = '-' end
           result = result .. styles.table2 .. styles.h .. 'width=100px|Equipment' .. styles.order .. prop.equip .. styles.h .. 'width=100px|Item' .. styles.order .. prop.askills .. '\n|}'
       end
   end
   if gameg == 'smtds' or gameg == 'sh' then
       if not prop.hp then prop.hp = '?' end
       if not prop.mp then prop.mp = '?' end
       if not prop.cp then prop.cp =  end
       if not prop.mag then prop.mag =  end
       result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h .. 'title="Strength"|St' .. styles.h .. 'title="Intelligence"|In' .. styles.h .. 'title="Magic"|Ma' .. styles.h
       if gameg == 'smtds' then result = result .. 'title="Vitality"|Vi' .. styles.h end
       if gameg == 'sh' then result = result .. 'title="Endurance"|En' .. styles.h end
       result = result .. 'title="Agility"|Ag' .. styles.h .. 'title="Luck"|Lu'
       result = result .. '\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.str .. styles.statlow .. prop.int .. styles.statlow .. prop.magic .. styles.statlow
       result = result .. prop.vit .. styles.statlow
       result = result .. prop.agl .. styles.statlow .. prop.luc
       result = result .. '\n|}' .. styles.table2 .. styles.h
       if not (prop.boss or prop.enemy) then result = result .. 'title="Cost Point - Magnetite cost per 10 steps"|CP' .. styles.h end
       if gameg == 'smtds' then result = result .. 'title="Number of Attacks"|NOA' .. styles.h
       elseif gameg == 'sh' and not (prop.boss or prop.enemy) then result = result .. '|MAG Summon' .. styles.h
       end
       if not prop.traits or prop.traits ==  or prop.traits == '-' or prop.traits == '--' or prop.boss or prop.enemy then
       else result = result .. '|' .. styles.spanc .. 'Personality' .. styles.h
       end
       result = result .. 'title="Physical Attack Power"|P.ATK' .. styles.h .. 'title="Physical Attack Hit-rate"|P.HIT' .. styles.h .. 'title="Base Defenses"|B.DEF' .. styles.h .. 'title="Avoidance"|AVD' .. styles.h .. 'title="Magical Power"|M.ATK' .. styles.h
       if gameg == 'smtds' then result = result .. 'title="Magical Defense"|M.DEF'
       elseif gameg == 'sh' then result = result .. 'title="Magical Hit-rate"|M.HIT'
       end
       result = result .. '\n|-' .. styles.statlow
       if not (prop.boss or prop.enemy) then result = result .. prop.mag .. prop.cp .. styles.statlow end
       if gameg == 'smtds' then result = result .. prop.noa .. styles.statlow
       elseif gameg == 'sh' and not (prop.boss or prop.enemy) then result = result .. prop.summoncost .. styles.statlow
       end
       if not prop.traits or prop.traits ==  or prop.traits == '-' or prop.traits == '--' then
       else result = result .. prop.traits .. styles.statlow
       end
       result = result .. prop.atk .. styles.statlow .. prop.hit .. styles.statlow .. prop.def .. styles.statlow .. prop.avd .. styles.statlow .. prop.matk .. styles.statlow
       if gameg == 'smtds' then result = result .. prop.mdef
       elseif gameg == 'sh' then result = result .. prop.mef
       end
       result = result .. bossdemoncat(prop.boss,gamen) .. '\n|}'
   end
   
   if gameg == 'sh2' then
       if not prop.hp then prop.hp = '?' end
       if prop.boss then prop.mp = '∞' elseif not prop.mp then prop.mp = '?' end
       styles.h = '\n!style="color:' .. getGames.games[gameg].colorbg2 .. ';background:#000" '
       result = result .. styles.table2 .. styles.h .. '|Race' .. styles.h .. 'width=45px|Level' .. styles.h .. 'width=45px|HP' .. styles.h .. 'width=45px|MP' .. styles.bart11 .. '324px' .. styles.bart12 .. '0.8"' .. styles.barh .. '|Strength' .. styles.bard2 .. bar(styles.barc,prop.str,2.4,100) .. styles.barh .. '|Intelligence' .. styles.bard2 .. bar(styles.barc,prop.int,2.4,100) .. styles.barh .. '|Vitality' .. styles.bard2 .. bar(styles.barc,prop.vit,2.4,100) .. styles.barh .. '|Agility' .. styles.bard2 .. bar(styles.barc,prop.agl,2.4,100) .. styles.barh .. '|Luck' .. styles.bard2 .. bar(styles.barc,prop.luc,2.4,100) .. '\n|}\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. '\n|}' .. bossdemoncat(prop.boss,gamen) .. aligncat(prop.alignment,gamen)
       if not prop.phys then prop.phys = '-' end
       if not prop.gun then prop.gun = '-' end
       if not prop.fire then prop.fire = '-' end
       if not prop.ice then prop.ice = '-' end
       if not prop.elec then prop.elec = '-' end
       if not prop.force then prop.force = '-' end
       if not prop.ruin then prop.ruin = '-' end
       if not prop.alm then prop.alm = '-' end
       styles.h = '\n!style="background:#000;color:#fff" '
       local statlow = '\n|style="background:#000;color:#fff"|'
       result = result .. styles.table2 .. styles.h .. 'width=12.5% title="Physical"|Physical Phys' .. styles.h .. 'width=12.5% title="Gunfire"|Gun Gun.' .. styles.h .. 'width=12.5% title="Fire"|Fire Fire' .. styles.h .. 'width=12.5% title="Ice"|Ice Ice' .. styles.h .. 'width=12.5% title="Electricity"|Electricity Elec' .. styles.h .. 'width=12.5% title="Force"|Force Force' .. styles.h .. 'width=12.5% title="Ruin"|Ruin Ruin' .. styles.h .. 'width=12.5% title="Almighty"|Almighty Almi.\n|-\n' .. statlow .. prop.phys .. statlow .. prop.gun .. statlow .. prop.fire .. statlow .. prop.ice .. statlow .. prop.elec .. statlow .. prop.force .. statlow .. prop.ruin .. statlow .. prop.alm .. '\n|}'
       styles.h = '\n!style="background: ' .. getGames.games[gameg].colorbg .. ';color: ' .. getGames.games[gameg].font .. '" '
       if prop.gift then result = result .. styles.table2 .. styles.h .. 'width=70px|' .. styles.spanc .. 'Gift' .. styles.order .. prop.gift .. '\n|}' end
   end
   if gameg == 'raidou1' or gameg == 'raidou2' then
       if prop.str ==  then prop.str = '-' end
       if prop.magic ==  then prop.magic = '-' end
       if prop.vit ==  then prop.vit = '-' end
       if prop.luc ==  then prop.luc = '-' end
       if not prop.condition then prop.condition = '-' end
       if not prop.convo then prop.convo = '-' end
       if not prop.investigate then prop.investigate = '-' end
       if not prop.drop then prop.drop = '-' end
       if not prop.recruit then prop.recruit = '?' elseif prop.boss then prop.recruit = 'No' end
       if not prop.resist then prop.resist = '-' end
       if not prop.block then prop.block = '-' end
       if not prop.absorb then prop.absorb = '-' end
       if not prop.reflect then prop.reflect = '-' end
       if not prop.weak then prop.weak = '-' else
           if gameg == 'raidou1' then
               prop.weak = '' .. prop.weak .. ''
           else prop.weak = '' .. prop.weak .. ''
           end
       end
       if not prop.frail then prop.frail = '-' else prop.frail = '' .. prop.frail .. '' end
       result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Order' .. styles.h .. '|Level' .. styles.h .. '|HP'
       if gameg == 'raidou1' then result = result .. styles.h .. '|MP' end
       result = result .. styles.h .. 'title="Strength"|St' .. styles.h .. 'title="Magic"|Ma' .. styles.h .. 'title="Vitality"|Vi' .. styles.h .. 'title="Luck"|Lu' .. styles.h
       if prop.boss then
           result = result .. '|Item drop'
       else
           if gameg == 'raidou1' then
               result = result .. '|MAG Cost'
           else
               result = result .. 'title="Conversation skill of the demon"|Conversation'
           end
       end
       if prop.boss == nil then
           result = result .. styles.h .. 'title="Demon' .. "'s" .. ' Investigation Skill"|Investigation'
       end
       result = result .. '\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp
       if gameg == 'raidou1' then result = result .. styles.statlow .. prop.mp end
       result = result .. styles.statlow .. prop.str .. styles.statlow .. prop.magic .. styles.statlow .. prop.vit .. styles.statlow .. prop.luc .. styles.statlow
       if prop.boss then
           result = result .. prop.drop
       else
           if gameg == 'raidou1' then
               result = result .. prop.condition
           else
               result = result .. prop.convo
           end
       end
       if prop.boss == nil then
           result = result .. styles.statlow .. prop.investigate
       end
       result = result .. '\n|}' .. styles.table2
       if gameg == 'raidou1' then result = result .. styles.h .. 'title="Whether the demon can be subdued as ally or not."|Confinable' end
       result = result .. styles.h .. '|Reflects' .. styles.h .. '|Absorbs' .. styles.h .. '|Block' .. styles.h .. '|Resists' .. styles.h
       if gameg == 'raidou2' then result = result .. 'title="Unit takes extra damage without being staggered."|Weak' .. styles.h .. 'title="Unit will be staggered by the said element(s). Whether the element does extra damage or not varies."|Frail\n|-' else result = result .. '|Weak\n|-' .. styles.statlow .. prop.recruit end
       result = result .. styles.statlow .. prop.reflect .. styles.statlow .. prop.absorb .. styles.statlow .. prop.block .. styles.statlow .. prop.resist .. styles.statlow .. prop.weak
       if gameg == 'raidou2' then result = result .. styles.statlow .. prop.frail end
       result = result .. '\n|}' .. bossdemoncat(prop.boss,gamen)
   end
   if gameg == 'giten' then
       if not prop.condition then prop.condition =  end
       if not prop.equiptype then prop.equiptype = '?' end
       result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|Alignment' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h .. 'title="Cost Point. Magnetite per 10 steps"|CP' .. styles.h .. '|' .. styles.spanc .. 'Equip Type\n|-' .. styles.statlow .. getRace(prop.race,gameg) ..  styles.statlow .. prop.alignment .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.condition .. styles.statlow .. prop.equiptype ..'\n|}'
       result = result .. styles.table2 .. styles.h .. '|Intuition' .. styles.h .. '|Will Power' .. styles.h .. '|Magic' .. styles.h .. '|Intelligence' .. styles.h .. '|Divine Protection\n|-' .. styles.statlow .. prop.itin ..  styles.statlow .. prop.wllpow .. styles.statlow .. prop.magic .. styles.statlow .. prop.int .. styles.statlow .. prop.dvnprt .. '\n|}'
       result = result .. styles.table2 .. styles.h .. '|Strength' .. styles.h .. '|Stamina' .. styles.h .. '|Agility' .. styles.h .. '|Dexterity' .. styles.h .. '|Charm\n|-' .. styles.statlow .. prop.str ..  styles.statlow .. prop.vit .. styles.statlow .. prop.agl .. styles.statlow .. prop.dex .. styles.statlow .. prop.chm .. '\n|}' .. aligncat(prop.alignment,gamen) .. bossdemoncat(prop.boss,gamegn)
   end
   if gameg == 'p1' then
       if prop.vit2 then
           prop.p1vi = '|Vitality' .. styles.bard2 .. bar(styles.barc,prop.vit,2.4,99,prop.vit2,'PSX version','PSP version')
       else prop.p1vi = '|Vitality' .. styles.bard2 .. bar(styles.barc,prop.vit,2.4,99)
       end
       if prop.dex2 then
           prop.p1dx = '|Dexterity' .. styles.bard2 .. bar(styles.barc,prop.dex,2.4,99,prop.dex2,'PSX version','PSP version')
       else prop.p1dx = '|Dexterity' .. styles.bard2 .. bar(styles.barc,prop.dex,2.4,99)
       end
       if prop.boss or prop.enemy or prop.hp then
           if prop.order2 then
               prop.p1order = getRace(prop.race,gameg,'PSX version') .. ' / ' .. getRace(prop.order2,gameg,'PSP version')
               else prop.p1order = getRace(prop.race,gameg)
           end
           if not prop.etype then prop.etype =  end
           if not prop.element then prop.element =  end
           if not prop.hp then prop.hp =  end
           if not prop.mp then prop.mp =  end
           result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Order' .. styles.h .. '|Type' .. styles.h .. '|Subtype' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|SP'
           if prop.normal then result = result .. styles.h .. '|' .. styles.spanc .. 'Drops' end
           result = result .. '\n|-' .. styles.statlow .. prop.p1order .. styles.statlow .. prop.etype .. styles.statlow .. prop.element .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp
           if prop.normal then result = result .. styles.statlow .. prop.normal end
           result = result .. '\n|}' .. bossdemoncat(prop.boss,gamen)
           if prop.matk ==  and prop.mdef ==  and prop.str ==  and prop.vit ==  and prop.dex ==  and prop.agl ==  and prop.luc ==  then
           else
               result = result .. styles.table2 .. styles.h .. 'title="Magical Power"|MAtk' .. styles.h .. 'title="Magical Defense"|MDef' .. styles.bart11 .. '324px' .. styles.bart12 .. '0.8"' .. styles.barh .. '|Strength' .. styles.bard2 .. bar(styles.barc,prop.str,2.4,99) .. styles.barh .. prop.p1vi .. styles.barh .. prop.p1dx .. styles.barh .. '|Agility' .. styles.bard2 .. bar(styles.barc,prop.agl,2.4,99) .. styles.barh .. '|Luck' .. styles.bard2 .. bar(styles.barc,prop.luc,2.4,99) .. '\n|}\n|-' .. styles.statlow .. prop.matk .. styles.statlow .. prop.mdef .. '\n|}'
           end
           if prop.traits or prop.convo then
               result = result .. styles.table2
               if prop.traits then result = result .. styles.h .. 'width=50px|' .. styles.spanc .. 'Traits' .. styles.order .. prop.traits end
               if prop.convo then result = result .. styles.h .. 'width=50px|' .. styles.spanc .. 'Ptalk' .. styles.order .. prop.convo end
               result = result .. '\n|}'
           end
       else
           if not prop.etype then prop.etype =  end
           if not prop.element then prop.element =  end
           if not prop.mp then prop.mp =  end
           result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Arcana' .. styles.h .. '|Type' .. styles.h .. '|Subtype' .. styles.h .. '|Level' .. styles.h .. '|SP cost'
           if prop.totem then result = result .. styles.h .. '|' .. styles.spanc .. 'Totem' end
           if prop.preturn then result = result .. styles.h .. '|' .. styles.spanc .. 'Returns ' .. styles.spanc .. '°' end
           result = result .. '\n|-' .. styles.statlow .. getArcana(prop.arcana,gameg,gamen) .. styles.statlow .. prop.etype .. styles.statlow .. prop.element .. styles.statlow .. prop.level .. styles.statlow .. prop.mp
           if prop.totem then result = result .. styles.statlow .. prop.totem end
           if prop.preturn then result = result .. styles.statlow .. prop.preturn end
           result = result .. '\n|}' .. styles.table2 .. styles.h .. 'title="Magical Power"|MAtk' .. styles.h .. 'title="Magical Defense"|MDef' .. styles.bart11 .. '324px' .. styles.bart12 .. '0.8"' .. styles.barh .. '|Strength' .. styles.bard2 .. bar(styles.barc,prop.str,2.4,99) .. styles.barh .. '|Vitality' .. styles.bard2 .. bar(styles.barc,prop.vit,2.4,99) .. styles.barh .. prop.p1dx .. styles.barh .. '|Agility' .. styles.bard2 .. bar(styles.barc,prop.agl,2.4,99) .. styles.barh .. '|Luck' .. styles.bard2 .. bar(styles.barc,prop.luc,2.4,99) .. '\n|}\n|-' .. styles.statlow .. prop.matk .. styles.statlow .. prop.mdef .. '\n|}'
           if args.Affinity or prop.convo then
               result = result .. styles.table2
                   if args.Affinity then result = result .. styles.h .. 'width=60px title="Characters with ' .. "'Best'" .. ' Affinity"|' .. styles.spanc .. 'Affinity' .. styles.order .. args.Affinity end
                   if prop.convo then result = result .. styles.h .. 'width=50px|' .. styles.spanc .. 'Ptalk' .. styles.order .. prop.convo end
               result = result .. '\n|}' .. cate(gamen .. ' Personas')
           end
       end
   end
   if (gameg == 'p2is' or gameg == 'p2ep' or gameg == 'p5' or gameg == 'p5r' or gameg == 'p5s') and prop.quote then
       result = result .. styles.table2b .. styles.quote .. 'font-style:italic"|' .. string.gsub(prop.quote, '!!', '‼') .. '\n|}'
   end -- replace exclamation mark otherwise it will be interpreted as wiki table seperator.
   if gameg == 'p2is' or gameg == 'p2ep' then
       result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Arcana'
       if prop.enemy or prop.boss or prop.hp then
           if prop.etype then result = result .. styles.h .. '|Type' end
           result = result .. styles.h .. '|Level'
           if prop.hp then result = result .. styles.h .. '|HP' end
           if prop.normal then result = result .. styles.h .. '|' .. styles.spanc .. 'Normal Drop' end
           if prop.rare then result = result .. styles.h .. 'style="background:#8E283D"|Rare Drop' end
           result = result .. '\n|-' .. styles.statlow .. getArcana(prop.arcana,gameg,gamen)
           if prop.etype then result = result .. styles.statlow .. prop.etype end
           result = result .. styles.statlow .. prop.level
           if prop.hp then result = result .. styles.statlow .. prop.hp end
           if prop.normal then result = result .. styles.statlow .. prop.normal end
           if prop.rare then result = result .. styles.statlow .. prop.rare end
           result = result .. bossdemoncat(prop.boss,gamen)
       else
           if not prop.etype then prop.etype =  end
           if not prop.mp then prop.mp =  end
           if not prop.bonus then prop.bonus =  end
           if not prop.preturn then prop.preturn =  end
           result = result .. styles.h .. '|Type' .. styles.h .. '|Level' .. styles.h .. '|SP cost' .. styles.h .. 'title="Extra stats that are conferred upon every level up with the Persona equipped"|Bonus' .. styles.h .. '|' .. styles.spanc .. 'Returns ' .. '' .. styles.spanc .. '°' .. '\n|-' .. styles.statlow .. getArcana(prop.arcana,gameg,gamen) .. styles.statlow .. prop.etype .. styles.statlow .. prop.level .. styles.statlow .. prop.mp .. styles.statlow .. prop.bonus .. styles.statlow .. prop.preturn .. cate(gamegn .. ' Personas')
       end
       result = result .. '\n|}'
   end
   if (gameg == 'p3' or gameg == 'p3re') or gameg == 'p4' or gameg == 'p5'  or gameg == 'p5r' or gameg == 'p5s' then
       result = result .. styles.table2
       if gameg == 'p5' and (prop.arcana == nil or prop.arcana == "" or prop.arcana == "-") then
       else result = result ..  styles.h .. '|' .. styles.spanc .. 'Arcana'
       end
       result = result .. styles.h .. 'width="50px"|' .. styles.spanc .. 'Level'
       if prop.hp then result = result .. styles.h .. 'width="40px"|HP' end
       if prop.mp then result = result .. styles.h .. 'width="40px"|SP' end
       if prop.maxhp then result = result .. styles.h .. 'width="40px"|HP' end
       if prop.maxmp then result = result .. styles.h .. 'width="40px"|SP' end
       if gameg == 'p5s' and prop.stagger then result = result .. styles.h .. '|Stagger Gauge' end
       if prop.traits then result = result .. styles.h .. '|Type' end
       result = result .. styles.bart11 .. '324px' .. styles.bart12 .. '0.8"' .. styles.barh .. '|Strength' .. styles.bard2 .. bar(styles.barc,prop.str,2.4,99) .. styles.barh .. '|Magic' .. styles.bard2 .. bar(styles.barc,prop.magic,2.4,99) .. styles.barh .. '|Endurance' .. styles.bard2 .. bar(styles.barc,prop.vit,2.4,99) .. styles.barh .. '|Agility' .. styles.bard2 .. bar(styles.barc,prop.agl,2.4,99) .. styles.barh .. '|Luck' .. styles.bard2 .. bar(styles.barc,prop.luc,2.4,99) .. '\n|}\n|-'
       if gameg == 'p5' and (prop.arcana == nil or prop.arcana == "" or prop.arcana == "-") then
       else result = result .. styles.statlow .. getArcana(prop.arcana,gameg,gamegn)
       end
       result = result .. styles.statlow .. prop.level

if prop.hp then result = result .. styles.statlow .. prop.hp .. '

' end if prop.mp then result = result .. styles.statlow .. prop.mp .. '

' end if prop.maxhp then result = result .. styles.statlow .. prop.maxhp .. '

' end if prop.maxmp then result = result .. styles.statlow .. prop.maxmp .. '

' end

       if gameg == 'p5s' and prop.stagger then result = result .. styles.statlow .. prop.stagger end
       if prop.traits then result = result .. styles.statlow .. prop.traits end
       result = result .. '\n|}'
       if (gameg == 'p3' or gameg == 'p3re') then
           if prop.hp then
               if prop.boss then
                   if game == 'p3p' then
                       result = result .. cate('Persona 3 Portable Bosses')
                   elseif game == 'p3f' then
                       result = result .. cate(gamegn .. ' Bosses')
                   else result = result .. cate(gamegn .. ' Bosses') .. cate('Persona 3 Portable Bosses')
                   end
               else result = result .. cate(gamegn .. ' Shadows')
               end
           else
               if game == 'p3p' or game == 'p3f' then
                   result = result .. cate('Persona 3 FES Personas') .. cate('Persona 3 Portable Personas')
               else result = result .. cate(gamegn .. ' Personas') .. cate('Persona 3 FES Personas') .. cate('Persona 3 Portable Personas')
               end
           end
       end
       if gameg == 'p4' then
           if prop.hp then
               if prop.boss then
                   if prop.vanilla then
                       result = result .. cate(gamen .. ' Bosses')
                   elseif game == 'p4g' then
                       result = result .. cate(gamen .. ' Bosses')
                   else result = result .. cate(gamegn .. ' Bosses') .. cate('Persona 4 Golden Bosses')
                   end
               else
                   if prop.vanilla then
                       result = result .. cate(gamen .. ' Shadows')
                   elseif game == 'p4g' then
                       result = result .. cate(gamen .. ' Shadows')
                   else result = result .. cate(gamegn .. ' Shadows') .. cate('Persona 4 Golden Shadows')
                   end
               end
           else
               if game == 'p4g' then
                   result = result .. cate(gamen .. ' Personas')
               else result = result .. cate(gamegn .. ' Personas') .. cate('Persona 4 Golden Personas')
               end
           end
       end
       if gameg == 'p5' or gameg == 'p5r' or gameg == 'p5s' then
           if prop.hp then
               if prop.boss then
                   result = result .. cate(gamen .. ' Bosses')
               elseif prop.shadow then
                   result = result .. cate(gamen .. ' Shadows')
               else
                   result = result .. cate(gamen .. ' Enemies')
               end
           else
               result = result .. cate(gamen .. ' Personas')
           end
       end
   end
   if gameg == 'pq' or gameg == 'pq2' then
       if not prop.arcana then
           if not prop.drop1 then prop.drop1 = '-' end
           if not prop.drop2 then prop.drop2 = '-' end
           if not prop.drop3 then prop.drop3 = '-' end
           result = result .. styles.table2 .. styles.h .. 'width=12%|Level' .. styles.h .. 'width=12%|HP' .. styles.h .. 'width=12%|Attack' .. styles.h .. 'width=12%|Defense'
           result = result .. styles.bart11 .. '324px' .. styles.bart12 .. '0.8"' .. styles.barh .. '|Strength' .. styles.bard2 .. bar(styles.barc,prop.str,2.4,99) .. styles.barh .. '|Magic' .. styles.bard2 .. bar(styles.barc,prop.magic,2.4,99) .. styles.barh .. '|Endurance' .. styles.bard2 .. bar(styles.barc,prop.vit,2.4,99) .. styles.barh .. '|Agility' .. styles.bard2 .. bar(styles.barc,prop.agl,2.4,99) .. styles.barh .. '|Luck' .. styles.bard2 .. bar(styles.barc,prop.luc,2.4,99) .. '\n|}\n|-' .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.atk .. styles.statlow .. prop.def .. '\n|}'
           result = result .. styles.table2 .. styles.h .. 'width=16%|Exp' .. styles.h .. 'width=28%|Drop 1' .. styles.h .. 'width=28%|Drop 2' .. styles.h
           if prop.dropc and prop.condition then result = result .. 'width=28%|Conditional' else result = result .. 'width=28%|Drop 3' end
           result = result .. '\n|-\n' .. styles.statlow .. prop.xp .. styles.statlow .. prop.drop1 .. styles.statlow .. prop.drop2 .. styles.statlow
           if prop.dropc and prop.condition then result = result .. '' .. prop.dropc .. ''
           else result = result .. prop.drop3 end
           if prop.boss then
               result = result .. cate(gamegn .. ' Bosses')
           else result = result .. cate(gamegn .. ' Shadows')
           end
       elseif prop.hp or prop.mp then -- sub-persona
           if not prop.inherit then prop.inherit = '-' end
           if not prop.card then prop.card = '-' end
           if not prop.fragment then prop.fragment = '-' end
           if gameg == 'pq' then
               result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Arcana' .. styles.h .. 'width=10%|Level' .. styles.h .. 'title="HP bonus. Replenishes after battle." width=10%|HP +' .. styles.h .. 'title="SP bonus. Replenishes after battle." width=10%|SP +' .. styles.h .. '|Inherit' .. styles.h .. '|' .. styles.spanc .. 'Extract' .. styles.h .. '|' .. styles.spanc .. 'Fragment\n|-\n'
               result = result .. styles.statlow .. getArcana(prop.arcana,gameg,gamen) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.inherit .. styles.statlow .. prop.card .. styles.statlow .. prop.fragment .. cate(gamegn .. ' Personas')
           else
               result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Arcana' .. styles.h .. 'width=10%|Level' .. styles.h .. 'title="HP bonus. Replenishes after battle." width=10%|HP +' .. styles.h .. 'title="SP bonus. Replenishes after battle." width=10%|SP +' .. styles.h .. '|Type' .. styles.h .. '|' .. styles.spanc .. 'Extract\n|-\n'
               result = result .. styles.statlow .. getArcana(prop.arcana,gameg,gamen) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.inherit .. styles.statlow .. prop.card .. cate(gamegn .. ' Personas')
           end
       else -- main persona
           result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Arcana' .. styles.h .. 'width=10%|Level'
           result = result .. styles.bart11 .. '324px' .. styles.bart12 .. '0.8"' .. styles.barh .. '|Strength' .. styles.bard2 .. bar(styles.barc,prop.str,2.4,99) .. styles.barh .. '|Magic' .. styles.bard2 .. bar(styles.barc,prop.magic,2.4,99) .. styles.barh .. '|Endurance' .. styles.bard2 .. bar(styles.barc,prop.vit,2.4,99) .. styles.barh .. '|Agility' .. styles.bard2 .. bar(styles.barc,prop.agl,2.4,99) .. styles.barh .. '|Luck' .. styles.bard2 .. bar(styles.barc,prop.luc,2.4,99) .. '\n|}\n|-' .. styles.statlow .. getArcana(prop.arcana,gameg,gamegn) .. styles.statlow .. prop.level
           if not prop.nocat then result = result .. cate(gamegn .. ' Personas') end
       end
       result = result .. '\n|}'
   end
   if gameg == 'cs' then
       if not prop.mp then prop.mp = '?' end
       if not prop.mp then prop.mp = '?' end
       result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h .. 'title="Strength"|St' .. styles.h .. 'title="Endurance"|En' .. styles.h .. 'title="Magic"|Ma' .. styles.h .. 'title="Agility"|Ag\n|-\n' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.str .. styles.statlow .. prop.def .. styles.statlow .. prop.magic .. styles.statlow .. prop.agl .. '\n|}' .. cate(getGames.games[gameg].name2 .. ' Demons')
   end
   if gameg == 'ddsaga1' or gameg == 'ddsaga2' then
       if gameg == 'ddsaga2' and prop.boss then prop.mp = '∞' elseif not prop.mp then prop.mp = '?' end
       if not prop.normal then prop.normal = '-' end
       result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h .. '|Drops\n|-\n' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.normal .. '\n|}' .. bossdemoncat(prop.boss,gamen)
   end
   if gameg == 'desu1' or gameg == 'desu2' then

result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. 'width=10%|Level' .. styles.h .. 'width=10%|HP' .. styles.h .. 'width=10%|MP' .. styles.bart11 .. '315px' .. styles.bart12 .. '1"' .. styles.barh .. '|Strength' .. styles.bard1 .. bar(styles.barc,prop.str,6,40) .. styles.barh .. '|Magic' .. styles.bard1 .. bar(styles.barc,prop.magic,6,40) .. styles.barh .. '|Vitality' .. styles.bard1 .. bar(styles.barc,prop.vit,6,40) .. styles.barh .. '|Agility' .. styles.bard1 .. bar(styles.barc,prop.agl,6,40) .. '\n|}\n|-' .. styles.statlow .. getRace(prop.race,gameg) .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. '

' .. styles.statlow .. prop.mp .. '

\n|}'

       if prop.boss then
           if gameg == 'desu1' and game ~= 'desu1oc' then
               result = result .. cate(gamegn .. ' Bosses') .. cate('Devil Survivor Overclocked Bosses')
           elseif gameg == 'desu2' and game ~= 'desu2rb' then
               result = result .. cate(gamegn .. ' Bosses') .. cate('Devil Survivor 2 Record Breaker Bosses')
           else result = result .. cate(gamen .. ' Bosses')
           end
       else
           if prop.race == 'Human' or prop.race == '???' or prop.race == 'Foreigner' then
               if gameg == 'desu1' and game ~= 'desu1oc' then
                   result = result .. cate(gamegn .. ' Characters') .. cate('Devil Survivor Overclocked Characters')
               elseif gameg == 'desu2' and game ~= 'desu2rb' then
                   result = result .. cate(gamegn .. ' Characters') .. cate('Devil Survivor 2 Record Breaker Characters')
                   else result = result .. cate(gamegn .. ' Characters')
               end
           elseif gameg == 'desu1' and game ~= 'desu1oc' then
               result = result .. cate(gamegn .. ' Demons') .. cate('Devil Survivor Overclocked Demons')
           elseif gameg == 'desu2' and game ~= 'desu2rb' then
               result = result .. cate(gamegn .. ' Demons') .. cate('Devil Survivor 2 Record Breaker Demons')
           else result = result .. cate(gamen .. ' Demons')
           end
       end
   end
   if gameg == 'dcbrb' then
       if not prop.xp then prop.xp =  end
       if not prop.etype then prop.etype =  end
       result = result .. styles.table2 .. styles.h .. '|Class' .. styles.h .. '|Type' .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h .. '|Exp\n|-' .. styles.statlow .. prop.class .. styles.statlow .. prop.etype .. styles.statlow .. prop.race .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.xp .. '\n|}'
       result = result .. styles.table2 .. styles.h .. 'width=16.67% |Attack' .. styles.h .. 'width=16.67% |Guard' .. styles.h .. 'width=16.67% |Magic' .. styles.h .. 'width=16.67% |M Guard' .. styles.h .. 'width=16.67% |Speed' .. styles.h .. 'width=16.67% |Luck\n|-\n' .. styles.statlow .. prop.atk .. styles.statlow .. prop.def .. styles.statlow .. prop.magic .. styles.statlow .. prop.res .. styles.statlow .. prop.agl .. styles.statlow .. prop.luc .. '\n|}'
       if prop.boss or race == 'Boss' then
               result = result .. cate(gamen .. ' Bosses')
       else
           if game == 'dcbrp' then
               result = result .. cate('Devil Children PS demons')
           elseif game == 'dcwb' then
               result = result .. cate(gamen .. ' Demons')
           elseif gameg == 'dcbrb' then
               result = result .. cate(getGames.games[gameg].name1 .. ' Demons') .. cate(getGames.games[gameg].name2 .. ' Demons')
           end
       end
       result = result .. cate(prop.race .. ' Race')
   end
   if gameg == 'childred' or gameg == 'childps' or gameg == 'childwhite' or gameg == 'childfire' then
       if not prop.xp then prop.xp =  end
       if not prop.etype then prop.etype =  end
       result = result .. styles.table2 .. styles.h .. '|Class' .. styles.h .. '|Type' .. styles.h .. '|' .. styles.spanc .. 'Race' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h .. '|Exp\n|-' .. styles.statlow .. prop.class .. styles.statlow .. prop.etype .. styles.statlow .. prop.race .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.xp .. '\n|}'
       result = result .. styles.table2 .. styles.h .. 'width=16.67% |Attack' .. styles.h .. 'width=16.67% |Guard' .. styles.h .. 'width=16.67% |Magic' .. styles.h .. 'width=16.67% |M Guard' .. styles.h .. 'width=16.67% |Speed' .. styles.h .. 'width=16.67% |Luck\n|-\n' .. styles.statlow .. prop.atk .. styles.statlow .. prop.def .. styles.statlow .. prop.magic .. styles.statlow .. prop.res .. styles.statlow .. prop.agl .. styles.statlow .. prop.luc .. '\n|}'
   end
   if gameg == 'childlight' then
       if not prop.xp then prop.xp =  end
       result = result .. styles.table2 .. styles.h .. '|Class' .. styles.h .. '|Element' .. styles.h .. '|' .. styles.spanc .. 'Type' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h .. '|Exp\n|-' .. styles.statlow .. prop.class .. styles.statlow .. prop.etype .. styles.statlow .. prop.race .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. styles.statlow .. prop.xp .. '\n|}'
       result = result .. styles.table2 .. styles.h .. 'width=16.67% title="Attack Power"|ATK' .. styles.h .. 'width=16.67% title="Defense"|DEF' .. styles.h .. 'width=16.67% title="Magic"|MGC' .. styles.h .. 'width=16.67% title="Resistance"|RES' .. styles.h .. 'width=16.67% title="Speed"|SPD' .. styles.h .. 'width=16.67% title="Luck"|LCK\n|-\n' .. styles.statlow .. prop.atk .. styles.statlow .. prop.def .. styles.statlow .. prop.magic .. styles.statlow .. prop.res .. styles.statlow .. prop.agl .. styles.statlow .. prop.luc .. '\n|}'
       if prop.boss or race == 'Boss' then
           if gameg == 'childlight' then
               result = result .. cate(getGames.games[gameg].name3 .. ' Bosses')
           else
               result = result .. cate(gamen .. ' Bosses')
           end
       else
           if game == 'childblack' or gameg == 'childps' then
               result = result .. cate('Devil Children PS demons')
           elseif gameg == 'childwhite' then
               result = result .. cate(gamen .. ' Demons')
           elseif gameg == 'childred' then
               result = result .. cate(getGames.games[gameg].name1 .. ' Demons') .. cate(getGames.games[gameg].name2 .. ' Demons')
           elseif gameg == 'childfire' then
               result = result .. cate(getGames.games[gameg].name1 .. ' Demons') .. cate(getGames.games[gameg].name2 .. ' Demons')
           elseif gameg == 'childlight' then
               result = result .. cate(getGames.games[gameg].name1 .. ' Demons') .. cate(getGames.games[gameg].name2 .. ' Demons')
           end
       end
       result = result .. cate(prop.race .. ' Type')
   end
   if gameg == 'childmessiah' then
       if not prop.number then prop.number = '-' end
       if not prop.element then prop.element = '-' end
       if not prop.weak then prop.weak = '-' end
       if not prop.race then prop.race = '-' end
       if not prop.level then prop.level = '-' end
       if not prop.hp then prop.hp = '-' end
       if not prop.mp then prop.mp = '-' end
       if not prop.call then prop.call = '-' end
       if not prop.spell then
           prop.spell = '-'
       else
           if not data.skills[prop.spell] then
               prop.spell = prop.spell
           else
               prop.spell = '' .. prop.spell .. ''
           end
       end
       if not prop.spell then prop.spell = prop.spell end
       result = result .. styles.table2 .. styles.h .. '|Number' .. styles.h .. '|Element' .. styles.h .. '|Weakness' .. styles.h .. '|Type' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP\n|-' .. styles.statlow .. prop.number .. styles.statlow .. prop.element .. styles.statlow .. prop.weak .. styles.statlow .. prop.race .. styles.statlow .. prop.level .. styles.statlow .. prop.hp .. styles.statlow .. prop.mp .. '\n|}'
       result = result .. styles.table2 .. styles.h .. 'title="Attack"|ATK' .. styles.h .. 'title="Magic"|MGC' .. styles.h .. 'title="Defense"|DEF' .. styles.h .. 'title="Resistance"|RES' .. styles.h .. 'title="Speed"|SPD' .. styles.h .. '|Quick' .. styles.h .. '|Call' .. styles.h .. '|Spell\n|-' .. styles.statlow .. prop.atk .. styles.statlow .. prop.magic .. styles.statlow .. prop.def .. styles.statlow .. prop.res .. styles.statlow .. prop.agl .. styles.statlow .. prop.quick .. styles.statlow .. prop.call .. styles.statlow .. prop.spell .. '\n|}' .. cate(prop.race .. ' Type') .. bossdemoncat(prop.boss,getGames.games[game].name2)
   end
   if gameg == 'smtsj' then
       if not prop.noa then prop.noa = '-' end
       if not prop.phys then prop.phys = '-' end
       if not prop.gun then prop.gun = '-' end
       if not prop.fire then prop.fire = '-' end
       if not prop.ice then prop.ice = '-' end
       if not prop.elec then prop.elec = '-' end
       if not prop.wind then prop.wind = '-' end
       if not prop.expel then prop.expel = '-' end
       if not prop.curse then prop.curse = '-' end
       if not prop.alm then prop.alm = '-' end
       if not prop.poison then prop.poison = '-' end
       if not prop.paralyze then prop.paralyze = '-' end
       if not prop.stone then prop.stone = '-' end
       if not prop.strain then prop.strain = '-' end
       if not prop.sleep then prop.sleep = '-' end
       if not prop.charm then prop.charm = '-' end
       if not prop.mute then prop.mute = '-' end
       if not prop.fear then prop.fear = '-' end
       if not prop.bomb then prop.bomb = '-' end
       if not prop.rage then prop.rage = '-' end
       result = result .. styles.table2 .. styles.h .. '|Attack Type' .. styles.h .. 'width=7% title="Physical"|Physical' .. styles.h .. 'width=7% title="Gun"|Gun' .. styles.h .. 'width=7% title="Fire"|Fire' .. styles.h .. 'width=7% title="Ice"|Ice' .. styles.h .. 'width=7% title="Electricity"|Electricity' .. styles.h .. 'width=7% title="Wind"|Wind' .. styles.h .. 'width=7% title="Expel"|Expel' .. styles.h .. 'width=7% title="Curse"|Curse' .. styles.h .. 'width=7% title="Almighty"|Almighty\n|-\n'
       result = result .. styles.statlow .. prop.noa .. styles.statlow .. prop.phys .. styles.statlow .. prop.gun .. styles.statlow .. prop.fire .. styles.statlow .. prop.ice .. styles.statlow .. prop.elec .. styles.statlow .. prop.wind .. styles.statlow .. prop.expel .. styles.statlow .. prop.curse .. styles.statlow .. prop.alm .. '\n|}'
       result = result .. styles.table2 .. styles.h .. 'width=10%|Poison' .. styles.h .. 'width=10%|Paralyze' .. styles.h .. 'width=10%|Stone' .. styles.h .. 'width=10%|Strain' .. styles.h .. 'width=10%|Sleep' .. styles.h .. 'width=10%|Charm' .. styles.h .. 'width=10%|Mute' .. styles.h .. 'width=10%|Fear' .. styles.h .. 'width=10%|Bomb' .. styles.h .. 'width=10%|Rage\n|-\n'
       result = result .. styles.statlow .. prop.poison .. styles.statlow .. prop.paralyze .. styles.statlow .. prop.stone .. styles.statlow .. prop.strain .. styles.statlow .. prop.sleep .. styles.statlow .. prop.charm .. styles.statlow .. prop.mute .. styles.statlow .. prop.fear .. styles.statlow .. prop.bomb .. styles.statlow .. prop.rage .. '\n|}'
   end
   if gameg == 'desu1' or gameg == 'desu2' then
       if not prop.racial then prop.racial = '-' end
       if not prop.phys then prop.phys = '-' end
       if not prop.fire then prop.fire = '-' end
       if not prop.ice then prop.ice = '-' end
       if not prop.elec then prop.elec = '-' end
       if not prop.force then prop.force = '-' end
       if not prop.mystic then prop.mystic = '-' end
       result = result .. styles.table2 .. styles.h .. '|' .. styles.spanc .. 'Racial / ' .. styles.spanc .. 'Auto Skill' .. styles.h .. 'width=12% title="Physical"|Physical Phys' .. styles.h .. 'width=12% title="Fire"|Fire Fire' .. styles.h .. 'width=12% title="Ice"|Ice Ice' .. styles.h .. 'width=12% title="Electricity"|Electricity Elec' .. styles.h .. 'width=12% title="Force"|Force Force' .. styles.h .. 'width=12% title='
       if gameg == 'desu1' then
           result = result .. '"Mystic"|Mystic Mystic'
       elseif gameg == 'desu2' then
           result = result .. '"Curse"|Curse Curse'
       end
       result = result .. '\n|-\n' .. styles.statlow .. prop.racial .. styles.statlow .. prop.phys .. styles.statlow .. prop.fire .. styles.statlow .. prop.ice .. styles.statlow .. prop.elec .. styles.statlow .. prop.force .. styles.statlow .. prop.mystic .. '\n|}'
   end
   if gameg == 'ronde' or (gameg == 'p3' or gameg == 'p3re') or gameg == 'p4' or gameg == 'p5' or gameg == 'p5r' or gameg == 'p5s' then
       if prop.sword or prop.strike or prop.pierce or prop.phys or prop.fire or prop.ice or prop.elec or prop.wind or prop.expel or prop.dark or prop.alm or prop.xp or prop.yen then
       result = result .. styles.table2
           if not prop.sword then prop.sword = '-' end
           if not prop.strike then prop.strike = '-' end
           if not prop.pierce then prop.pierce = '-' end
           if not prop.phys then prop.phys = '-' end
           if not prop.gun then prop.gun = '-' end
           if not prop.fire then prop.fire = '-' end
           if not prop.ice then prop.ice = '-' end
           if not prop.elec then prop.elec = '-' end
           if not prop.wind then prop.wind = '-' end
           if not prop.psy then prop.psy = '-' end
           if not prop.nuclear then prop.nuclear = '-' end
           if not prop.expel then prop.expel = '-' end
           if not prop.dark then prop.dark = '-' end
           if not prop.alm then prop.alm = '-' end
           if gameg == 'ronde' then result = result .. styles.h .. 'width=11%|' .. styles.spanc .. 'Slash' .. styles.h .. 'width=11%|' .. styles.spanc .. 'Strike' .. styles.h .. 'width=11%|' .. styles.spanc .. 'Ranged' .. styles.h .. 'width=11%|' .. styles.spanc .. 'Fire' .. styles.h .. 'width=11%|' .. styles.spanc .. 'Ice' .. styles.h .. 'title="Electricity" width=11%|' .. styles.spanc .. 'Elec' .. styles.h .. 'width=11%|' .. styles.spanc .. 'Light' .. styles.h .. 'width=11%|' .. styles.spanc .. 'Dark' .. styles.h .. 'title="Almighty" width=12%|' .. styles.spanc .. 'Almi' .. '\n|-\n'
           elseif (gameg == 'p3' or gameg == 'p3re') then result = result .. styles.h .. 'width=10%|' .. styles.spanc .. 'Slash' .. styles.h .. 'width=10%|' .. styles.spanc .. 'Strike' .. styles.h .. 'width=10%|' .. styles.spanc .. 'Pierce' .. styles.h .. 'width=10%|' .. styles.spanc .. 'Fire' .. styles.h .. 'width=10%|' .. styles.spanc .. 'Ice' .. styles.h .. 'title="Electricity" width=10%|' .. styles.spanc .. 'Elec' .. styles.h .. 'width=10%|' .. styles.spanc .. 'Wind' .. styles.h .. 'width=10%|' .. styles.spanc .. 'Light' .. styles.h .. 'width=10%|' .. styles.spanc .. 'Dark' .. styles.h .. 'title="Almighty" width=10%|' .. styles.spanc .. 'Almi' .. '\n|-\n'
           elseif gameg == 'p4' then result = result .. styles.h .. 'title="Physical" width=14%|' .. styles.spanc .. 'Phys' .. styles.h .. 'width=12%|' .. styles.spanc .. 'Fire' .. styles.h .. 'width=12%|' .. styles.spanc .. 'Ice' .. styles.h .. 'title="Electricity" width=12%|' .. styles.spanc .. 'Elec' .. styles.h .. 'width=12%|' .. styles.spanc .. 'Wind' .. styles.h .. 'width=12%|' .. styles.spanc .. 'Light' .. styles.h .. 'width=12%|' .. styles.spanc .. 'Dark' .. styles.h .. 'title="Almighty" width=14%|' .. styles.spanc .. 'Almi' .. '\n|-\n'
           elseif gameg == 'p5' or gameg == 'p5r' or gameg == 'p5s' then result = result .. styles.h .. 'title="Physical" width=9%|' .. styles.spanc .. 'Phys' .. styles.h .. 'width=9%|' .. styles.spanc .. 'Gun' .. styles.h .. 'width=9%|' .. styles.spanc .. 'Fire' .. styles.h .. 'width=9%|' .. styles.spanc .. 'Ice' .. styles.h .. 'title="Electricity" width=9%|' .. styles.spanc .. 'Elec' .. styles.h .. 'width=9%|' .. styles.spanc .. 'Wind' .. styles.h .. 'title="Psychokinesis" widht=9%|' .. styles.spanc .. 'Psy' .. styles.h .. 'title="Nuclear" width=9%|' .. styles.spanc .. 'Nuke' .. styles.h .. 'width=9%|' .. styles.spanc .. 'Bless' .. styles.h .. 'width=9%|' .. styles.spanc .. 'Curse' .. styles.h .. 'title="Almighty" width=10%|' .. styles.spanc .. 'Almi' .. '\n|-\n'
           end
           if gameg == 'ronde' or (gameg == 'p3' or gameg == 'p3re') then result = result .. styles.statlow .. prop.sword .. styles.statlow .. prop.strike .. styles.statlow .. prop.pierce
           elseif gameg == 'p4' then result = result .. styles.statlow .. prop.phys
           elseif gameg == 'p5' or gameg == 'p5r' or gameg == 'p5s' then result = result .. styles.statlow .. prop.phys .. styles.statlow .. prop.gun
           end
           result = result .. styles.statlow .. prop.fire .. styles.statlow .. prop.ice .. styles.statlow .. prop.elec
           if (gameg == 'p3' or gameg == 'p3re') or gameg == 'p4' or gameg == 'p5'  or gameg == 'p5r' or gameg == 'p5s' then result = result .. styles.statlow .. prop.wind end
           if gameg == 'p5' or gameg == 'p5r' or gameg == 'p5s' then result = result .. styles.statlow .. prop.psy .. styles.statlow .. prop.nuclear end
           result = result .. styles.statlow .. prop.expel .. styles.statlow .. prop.dark .. styles.statlow .. prop.alm
           result = result .. '\n|}'
       elseif prop.inherit or prop.resist or prop.block or prop.absorb or prop.reflect or prop.weak then
           result = result .. styles.table2
           if not prop.inherit then prop.inherit = '-' end
           if not prop.resist then prop.resist = '-' end
           if not prop.block then prop.block = '-' end
           if not prop.absorb then prop.absorb = '-' end
           if not prop.reflect then prop.reflect = '-' end
           if not prop.weak then prop.weak = '-' else prop.weak = '' .. prop.weak .. '' end
           result = result .. styles.h .. '|' .. styles.spanc .. 'Inherit' .. styles.h .. '|Reflects' .. styles.h .. '|Absorbs' .. styles.h .. '|Block' .. styles.h .. '|Resists' .. styles.h .. '|Weak\n|-\n' .. styles.statlow .. prop.inherit .. styles.statlow .. prop.reflect .. styles.statlow .. prop.absorb .. styles.statlow .. prop.block .. styles.statlow .. prop.resist .. styles.statlow .. prop.weak .. '\n|}'
       end
   end
   if (gameg == 'p2is' or gameg == 'p2ep') and (prop.exclusive or prop.traits or prop.convo) then
       result = result .. styles.table2
       if prop.exclusive then
           result = result .. styles.h .. 'width=90px|Exclusive to' .. styles.order .. prop.exclusive
       end
       if prop.traits then
           result = result .. styles.h .. 'width=50px|' .. styles.spanc .. 'Traits' .. styles.order .. prop.traits
       end
       if prop.convo then
           result = result .. styles.h .. 'width=50px|' .. styles.spanc .. 'Ptalk' .. styles.order .. prop.convo
       end
       result = result .. '\n|}'
   end
   if (gameg == 'p2is' or gameg == 'p2ep') and prop.profile then
       result = result .. styles.table2b .. styles.quote .. '"|' .. string.gsub(prop.profile, '!!', '‼') .. '\n|}'
   end
   if (gameg == 'p3' or gameg == 'p3re') and (prop.card or prop.preturn or prop.normal) then
       result = result .. styles.table2
       if prop.card then
           result = result .. styles.h .. 'width=100px|' .. styles.spanc .. 'Skill Card' .. styles.order .. '' .. prop.card .. ''
       end
       if prop.preturn then
           result = result .. styles.h .. 'width=100px|' .. styles.spanc .. 'Heart Item' .. styles.order .. prop.preturn
       end
       if prop.normal then
           result = result .. styles.h .. 'width=100px|' .. styles.spanc .. 'Battle Drop' .. styles.order .. prop.normal
       end
       result = result .. '\n|}'
   end
   if gameg == 'p3re' and prop.theurgia then
       result = result .. styles.table2
       result = result .. styles.h .. 'width=100px|' .. styles.spanc .. 'Gauge Condition' .. styles.order .. prop.theurgia
       result = result .. '\n|}'
   end
   if gameg == 'p3re' and prop.ptraits then
       if string.find(prop.ptraits, '\n') then
           local pt_cnt = 0
           for k in string.gmatch(prop.ptraits, '\n') do pt_cnt = pt_cnt + 1 end
           result = result .. styles.table2
           result = result .. styles.h .. 'width=100px rowspan="' .. (pt_cnt+1) .. '"|' .. styles.spanc .. 'Characteristics' .. styles.order
           for k, v in ipairs(mw.text.split(prop.ptraits, '\n')) do
               if k > 1 then result = result .. styles.order2 end
               local traitLine = mw.text.split(v, '\\'), traitName, traitType
               if #traitLine > 1 then
                   traitName = traitLine[1]
                   traitType = traitLine[2]
               else
                   traitName = v
                   traitType = nil
               end
               local traitEffect = data.theurgies[traitName]
               
               if not traitEffect then result = result .. 'Invalid Theurgy name of "' .. traitName .. '". You may correct the Theurgy name or modify Module:Skills/' .. gamed .. ' if needed'
               else
                   result = result .. '' .. traitName .. ': ' .. traitEffect
                   if traitType then

result = result .. '

' .. traitType .. '

'

                   end
               end
           end
           result = result .. '\n|}'
       else
           result = result .. styles.table2
           result = result .. styles.h .. 'width=100px|' .. styles.spanc .. 'Characteristics' .. styles.order
           local traitLine = mw.text.split(prop.ptraits, '\\'), traitName, traitType
           if #traitLine > 1 then
               traitName = traitLine[1]
               traitType = traitLine[2]
           else
               traitName = prop.ptraits
               traitType = nil
           end
           local traitEffect = data.theurgies[traitName]
           
           if not traitEffect then result = result .. 'Invalid Theurgy name of "' .. traitName .. '". You may correct the Theurgy name or modify Module:Skills/' .. gamed .. ' if needed'
           else
               result = result .. '' .. traitName .. ': ' .. traitEffect
               if traitType then

result = result .. '

' .. traitType .. '

'

               end
           end
           result = result .. '\n|}'
       end
   end
   if (gameg == 'p4') and prop.hp then
       result = result .. styles.table2
           if not prop.xp then prop.xp = '-' end
           if not prop.yen then prop.yen = '-' end
           if not prop.normal then prop.normal = '-' end
           if not prop.rare then prop.rare = '-' end
           result = result .. styles.h .. '|EXP' .. styles.h .. '|Yen' .. styles.h .. '|' .. styles.spanc .. 'Normal Drop' .. styles.h .. '|' .. styles.spanc .. 'Rare Drop' .. '\n|-\n'
           result = result .. styles.statlow .. prop.xp .. styles.statlow .. prop.yen .. styles.statlow .. prop.normal .. styles.statlow .. prop.rare
       result = result .. '\n|}'
   end
   if gameg == 'p5r' and prop.ptraits then
       if string.find(prop.ptraits, '\\') then
           local pt_cnt = 0
           for k in string.gmatch(prop.ptraits, '\\') do pt_cnt = pt_cnt + 1 end
           result = result .. styles.table2
           result = result .. styles.h .. 'width=100px rowspan="' .. (pt_cnt+1) .. '"|' .. styles.spanc .. 'Persona Trait' .. styles.order
           for k, v in ipairs(mw.text.split(prop.ptraits, '\\')) do
               if k > 1 then result = result .. styles.order2 end
               local ptrait = data.traits[v]
               if not ptrait then result = result .. 'Invalid trait name of "' .. v .. '". You may correct the trait name or modify Module:Skills/' .. gamed .. ' if needed'
               else
                   if ptrait.exclusive then
                       result = result .. '' .. v .. ': ' .. ptrait.effect
                   else
                       result = result .. '' .. v .. ': ' .. ptrait.effect
                   end
               end
           end
           result = result .. '\n|}'
       else
           result = result .. styles.table2
           result = result .. styles.h .. 'width=100px|' .. styles.spanc .. 'Persona Trait' .. styles.order
           local ptrait = data.traits[prop.ptraits]
           if not ptrait then result = result .. 'Invalid trait name of "' .. prop.ptraits .. '". You may correct the trait name or modify Module:Skills/' .. gamed .. ' if needed'
           else
               if ptrait.exclusive then
                   result = result .. '' .. prop.ptraits .. ': ' .. ptrait.effect
               else
                   result = result .. '' .. prop.ptraits .. ': ' .. ptrait.effect
               end
           end
           result = result .. '\n|}'
       end
   end
   if (gameg == 'p5' or gameg == 'p5r' or gameg == 'p5s') and prop.hp then
       result = result .. styles.table2
           if not prop.xp then prop.xp = '-' end
           if not prop.yen then prop.yen = '-' end
           if not prop.normal then prop.normal = '-' end
           if not prop.material then prop.material = prop.normal end
           if not prop.drop1 then prop.drop1 = '-' end
           if not prop.card then prop.card = '-' end
           if not prop.dropc then prop.dropc = prop.card end
           local cnt_drops = 2
           if prop.drop3 then cnt_drops = 4
           elseif prop.drop2 then cnt_drops = 3 end
           if prop.drop1 == '-' and prop.dropc == '-' then cnt_drops = 1 end
           result = result .. styles.h .. '|EXP' .. styles.h .. '|Yen' .. styles.h .. '|' .. styles.spanc .. 'Battle Drop' .. styles.h .. 'colspan=' .. cnt_drops .. '|' .. styles.spanc .. 'Negotiation Items' .. '\n|-\n'
           result = result .. styles.statlow .. prop.xp .. styles.statlow .. prop.yen .. styles.statlow .. prop.material .. styles.statlow .. prop.drop1
           if prop.drop2 then result = result .. styles.statlow .. prop.drop2 end
           if prop.drop3 then result = result .. styles.statlow .. prop.drop3 .. ' (Rare)' end
           if prop.dropc ~= '-' then result = result .. styles.statlow .. prop.dropc .. ' (' .. styles.spanc .. 'Skill Card)' end
       result = result .. '\n|}'
   end
   if (gameg == 'sh2') and (prop.xp or prop.yen or prop.normal) then
       result = result .. styles.table2
           if not prop.xp then prop.xp = '-' end
           if not prop.yen then prop.yen = '-' end
           if not prop.normal then prop.normal = '-' end
           result = result .. styles.h .. '|EXP' .. styles.h .. '|Yen' .. styles.h .. '|' .. styles.spanc .. 'Battle Drop' .. '\n|-\n'
           result = result .. styles.statlow .. prop.xp .. styles.statlow .. prop.yen .. styles.statlow .. prop.normal
       result = result .. '\n|}'
   end
   result = result .. '\n|}'

-- End of image span.

   if game == 'kmt1' and prop.normal ~=  then
       result = result .. styles.table2 .. styles.h .. 'width=60px|' .. styles.spanc .. 'Drop' .. styles.order .. prop.normal .. '\n|}'
   end
   if game == 'smt1' and (prop.resist or prop.normal) then
       result = result .. styles.table2
       if prop.resist then result = result .. styles.h .. 'width=100px|Resistances' .. styles.order .. prop.resist end
       if prop.normal then result = result .. styles.h .. 'width=60px|' .. styles.spanc .. 'Drop' .. styles.order .. prop.normal end
       result = result .. '\n|}'
   end
   if (game == 'smt2' or gameg == 'smtif') and (prop.normal or prop.inherit or prop.moon) then
       result = result .. styles.table2
       if prop.normal then result = result .. styles.h .. 'width=60px|' .. styles.spanc .. 'Drop' .. styles.order .. prop.normal end
       if prop.inherit then result = result .. styles.h .. 'width=70px|Inherit' .. styles.order .. prop.inherit end
       if prop.moon then result = result .. styles.h .. 'width=80px|' .. styles.spanc .. 'Moon Aff' .. styles.order .. prop.moon end
       result = result .. '\n|}'
   end
   if gameg == 'smtif' and prop.resist then
       result = result .. styles.table2 .. styles.h .. 'width=90px|Resistances' .. styles.order .. prop.resist .. '\n|}'
   end
   if game == 'smtim' then
       if not prop.seealso then prop.seealso = mw.title.getCurrentTitle().text end
       result = result .. styles.table2 .. styles.h .. 'width=50px|Features' .. styles.order .. prop.feature .. styles.h .. 'width=60px|See also' .. styles.order .. '.. string.gsub(prop.seealso, ' ', '_') .. '\n|}'
   end
   if gameg == 'p1' and (prop.onehand or prop.twohand or prop.spear or prop.axe or prop.whip or prop.thrown or prop.arrow or prop.fist or prop.handgun or prop.machinegun or prop.shotgun or prop.rifle or prop.tech or prop.rush or prop.fire or prop.ice or prop.wind or prop.earth or prop.elec or prop.nuclear or prop.blast or prop.gravity or prop.expel or prop.miracle or prop.death or prop.curse or prop.nerve or prop.hiero) then
       if not prop.onehand then prop.onehand = '-' end
       if not prop.twohand then prop.twohand = '-' end
       if not prop.spear then prop.spear = '-' end
       if not prop.axe then prop.axe = '-' end
       if not prop.whip then prop.whip = '-' end
       if not prop.thrown then prop.thrown = '-' end
       if not prop.arrow then prop.arrow = '-' end
       if not prop.fist then prop.fist = '-' end
       if not prop.handgun then prop.handgun = '-' end
       if not prop.machinegun then prop.machinegun = '-' end
       if not prop.shotgun then prop.shotgun = '-' end
       if not prop.rifle then prop.rifle = '-' end
       if not prop.tech then prop.tech = '-' end
       if not prop.rush then prop.rush = '-' end
       if not prop.fire then prop.fire = '-' end
       if not prop.ice then prop.ice = '-' end
       if not prop.wind then prop.wind = '-' end
       if not prop.earth then prop.earth = '-' end
       if not prop.elec then prop.elec = '-' end
       if not prop.nuclear then prop.nuclear = '-' end
       if not prop.blast then prop.blast = '-' end
       if not prop.gravity then prop.gravity = '-' end
       if not prop.expel then prop.expel = '-' end
       if not prop.miracle then prop.miracle = '-' end
       if not prop.death then prop.death = '-' end
       if not prop.curse then prop.curse = '-' end
       if not prop.nerve then prop.nerve = '-' end
       if not prop.hiero then prop.hiero = '-' end
       result = result .. styles.table2 .. '\n!style="background:#a9a9a9" title="Weapons" colspan="8"|\n!title="Firearms" style="background:#898989" colspan="4"|\n!style="background:#a9a9a9" title="Havoc" colspan="2"|\n|-' .. styles.h .. 'title="Weapons"|1h' .. styles.h .. 'title="Weapons"|2h' .. styles.h .. 'title="Weapons"|Sp' .. styles.h .. 'title="Weapons"|Ax' .. styles.h .. 'title="Weapons"|Wp' .. styles.h .. 'title="Weapons"|Th' .. styles.h .. 'title="Weapons"|Ar' .. styles.h .. 'title="Weapons"|Fs' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|HG' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|MG' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|SG' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|Ri' .. styles.h .. 'title="Havoc"|Te' .. styles.h .. 'title="Havoc"|Ru\n|-\n' .. styles.statlow .. prop.onehand .. styles.statlow .. prop.twohand .. styles.statlow .. prop.spear .. styles.statlow .. prop.axe .. styles.statlow .. prop.whip .. styles.statlow .. prop.thrown .. styles.statlow .. prop.arrow .. styles.statlow .. prop.fist .. styles.statlow .. prop.handgun .. styles.statlow .. prop.machinegun .. styles.statlow .. prop.shotgun .. styles.statlow .. prop.rifle .. styles.statlow .. prop.tech .. styles.statlow .. prop.rush
       result = result .. '\n|-\n!style="background:#a9a9a9" title="Element" colspan="4"|\n!style="background:#898989" title="Force" colspan="4"|\n!style="background:#a9a9a9" title="Light" colspan="2"|\n!style="background:#898989" title="Dark" colspan="3"|\n!style="background:#a9a9a9" title="Special" colspan="1"|\n|-' .. styles.h .. 'width="7.12%" title="Element"|Fi' .. styles.h .. 'width="7.12%" title="Element"|Ic' .. styles.h .. 'width="7.12%" title="Element"|Wi' .. styles.h .. 'width="7.12%" title="Element"|Er' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|El' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|Nc' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|Bl' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|Gr' .. styles.h .. 'title="Light"|Ex' .. styles.h .. 'title="Light"|Mi' .. styles.h .. 'style="background:#898989" title="Dark"|De' .. styles.h .. 'style="background:#898989" title="Dark"|Cu' .. styles.h .. 'style="background:#898989;width:7.12%" title="Dark (Ailments)"|Nr' .. styles.h .. 'width="7.12%" title="Special"|???\n|-\n' .. styles.statlow .. prop.fire .. styles.statlow .. prop.ice .. styles.statlow .. prop.wind .. styles.statlow .. prop.earth .. styles.statlow .. prop.elec .. styles.statlow .. prop.nuclear .. styles.statlow .. prop.blast .. styles.statlow .. prop.gravity .. styles.statlow .. prop.expel .. styles.statlow .. prop.miracle .. styles.statlow .. prop.death .. styles.statlow .. prop.curse .. styles.statlow .. prop.nerve .. styles.statlow .. prop.hiero .. '\n|}'
   end
   if (gameg == 'p2is' or gameg == 'p2ep') and (prop.atk or prop.def or prop.matk or prop.mdef or prop.str or prop.vit or prop.dex or prop.agl or prop.luc) then
       if gameg == 'p2is' then prop.dx_h = '|Dexterity' else prop.dx_h = '|Technique' end
       result = result .. styles.table2 .. styles.h .. 'title="Physical Attack Power"|Atk' .. styles.h .. 'title="Physical Defense"|Def' .. styles.h .. 'title="Magical Power"|Matk' .. styles.h .. 'title="Magical Defense"|Mdef' .. styles.bart11 .. '324px' .. styles.bart12 .. '0.8"' .. styles.barh .. '|Strength' .. styles.bard2 .. bar(styles.barc,prop.str,2.4,99) .. styles.barh .. '|Vitality' .. styles.bard2 .. bar(styles.barc,prop.vit,2.4,99) .. styles.barh .. prop.dx_h .. styles.bard2 .. bar(styles.barc,prop.dex,2.4,99) .. styles.barh .. '|Agility' .. styles.bard2 .. bar(styles.barc,prop.agl,2.4,99) .. styles.barh .. '|Luck' .. styles.bard2 .. bar(styles.barc,prop.luc,2.4,99) .. '\n|}\n|-'
       if not prop.atk or prop.atk ==  then prop.atk = '?' end
       if not prop.def or prop.def ==  then prop.def = '?' end
       if not prop.matk or prop.matk ==  then prop.matk = '?' end
       if not prop.mdef or prop.mdef ==  then prop.mdef = '?' end
       result = result .. '\n|-\n' .. styles.statlow .. prop.atk .. styles.statlow .. prop.def .. styles.statlow .. prop.matk .. styles.statlow .. prop.mdef .. '\n|}'
   end
   if (gameg == 'smt3' or gameg == 'smtds' or gameg == 'sh' or gameg == 'p2is' or gameg == 'p2ep' or gameg == 'pq' or gameg == 'pq2' or gameg == 'ddsaga1' or gameg == 'ddsaga2') and (prop.resist or prop.block or prop.absorb or prop.reflect or prop.weak or prop.boost or prop.wild) then
       result = result .. styles.table2
       if not prop.resist then prop.resist = '-' end
       if not prop.block then prop.block = '-' end
       if not prop.absorb then prop.absorb = '-' end
       if not prop.reflect then prop.reflect = '-' end
       if not prop.weak then prop.weak = '-' else prop.weak = '' .. prop.weak .. '' end
       result = result .. styles.h .. '|Reflects' .. styles.h .. '|Absorbs' .. styles.h .. '|Void' .. styles.h .. '|Resists' .. styles.h .. '|Weak'
       if prop.boost then
           result = result .. styles.h .. '|Boost'
       end
       result = result .. '\n|-\n' .. styles.statlow .. prop.reflect .. styles.statlow .. prop.absorb .. styles.statlow .. prop.block .. styles.statlow .. prop.resist .. styles.statlow .. prop.weak
       if prop.boost then
           result = result .. styles.statlow .. prop.boost
       end
       result = result .. '\n|}'
   end
   if (gameg == 'p2is' or gameg == 'p2ep') and (prop.sword or prop.pierce or prop.strike or prop.thrown or prop.rush or prop.fire or prop.water or prop.wind or prop.earth or prop.ice or prop.elec or prop.nuclear or prop.expel or prop.dark or prop.alm or prop.nerve or prop.mind) then
       result = result .. styles.table2
       if not prop.sword then prop.sword = '-' end
       if not prop.pierce then prop.pierce = '-' end
       if not prop.strike then prop.strike = '-' end
       if not prop.thrown then prop.thrown = '-' end
       if not prop.rush then prop.rush = '-' end
       if not prop.fire then prop.fire = '-' end
       if not prop.water then prop.water = '-' end
       if not prop.wind then prop.wind = '-' end
       if not prop.earth then prop.earth = '-' end
       if not prop.ice then prop.ice = '-' end
       if not prop.elec then prop.elec = '-' end
       if not prop.nuclear then prop.nuclear = '-' end
       if not prop.expel then prop.expel = '-' end
       if not prop.dark then prop.dark = '-' end
       if not prop.alm then prop.alm = '-' end
       if not prop.nerve then prop.nerve = '-' end
       if not prop.mind then prop.mind = '-' end
       if prop.etype == 'Fire' then prop.Fi = 'Fi' else prop.Fi = 'Fi' end
       if prop.etype == 'Water' then prop.Wt = 'Wt' else prop.Wt = 'Wt' end
       if prop.etype == 'Wind' then prop.Wi = 'Wi' else prop.Wi = 'Wi' end
       if prop.etype == 'Earth' then prop.Er = 'Er' else prop.Er = 'Er' end
       if gameg == 'p2ep' then
           prop.name_Rn = 'title="Shot"|Sh'
           prop.name_Hv = 'title="Attack"|Ak'
           prop.name_El = 'title="Lightning"|Ln'
           prop.name_Li = 'title="Holy"|Ho'
       else
           prop.name_Rn = 'title="Ranged"|Rn'
           prop.name_Hv = 'title="Havoc"|Hv'
           prop.name_El = 'title="Electricity"|El'
           prop.name_Li = 'title="Light"|Li'
       end
       result = result .. styles.h .. 'title="Sword"|Sw' .. styles.h .. prop.name_Rn .. styles.h .. 'title="Strike"|Sk' .. styles.h .. 'title="Thrown"|Th' .. styles.h .. prop.name_Hv .. styles.h .. 'style="background:#8E283D" title="Fire"|' .. prop.Fi .. styles.h .. 'style="background:#8E283D" title="Water"|' .. prop.Wt .. styles.h .. 'style="background:#8E283D" title="Wind"|' .. prop.Wi .. styles.h .. 'style="background:#8E283D" title="Earth"|' .. prop.Er .. styles.h .. 'title="Ice"|Ic' .. styles.h .. prop.name_El .. styles.h .. 'title="Nuclear"|Nc' .. styles.h .. prop.name_Li .. styles.h .. 'title="Dark"|Dk' .. styles.h .. 'title="Almighty"|Al' .. styles.h .. 'title="Nerve"|Nr' .. styles.h .. 'title="Mind"|Mn\n|-\n'
       result = result .. styles.statlow .. prop.sword .. styles.statlow .. prop.pierce .. styles.statlow .. prop.strike .. styles.statlow .. prop.thrown .. styles.statlow .. prop.rush .. styles.statlow .. prop.fire .. styles.statlow .. prop.water .. styles.statlow .. prop.wind .. styles.statlow .. prop.earth .. styles.statlow .. prop.ice .. styles.statlow .. prop.elec .. styles.statlow .. prop.nuclear .. styles.statlow .. prop.expel .. styles.statlow .. prop.dark .. styles.statlow .. prop.alm .. styles.statlow .. prop.nerve .. styles.statlow .. prop.mind .. '\n|}'
   end
   if gameg == 'pq' or gameg == 'pq2' and (prop.sword or prop.pierce or prop.strike or prop.phys or prop.fire or prop.water or prop.elec or prop.wind or prop.nuclear or prop.psy or prop.expel or prop.dark or prop.alm or prop.ko or prop.sleep or prop.panic or prop.poison or prop.paralyze or prop.down or prop.stbind or prop.mabind or prop.agbind) then
       result = result .. styles.table2
       if not prop.sword then prop.sword = '-' end
       if not prop.pierce then prop.pierce = '-' end
       if not prop.strike then prop.strike = '-' end
       if not prop.phys then prop.phys = '-' end
       if not prop.fire then prop.fire = '-' end
       if not prop.ice then prop.ice = '-' end
       if not prop.elec then prop.elec = '-' end
       if not prop.wind then prop.wind = '-' end
       if not prop.nuclear then prop.nuclear = '-' end
       if not prop.psy then prop.psy = '-' end
       if not prop.expel then prop.expel = '-' end
       if not prop.dark then prop.dark = '-' end
       if not prop.alm then prop.alm = '-' end
       if not prop.sleep then prop.sleep = '-' end
       if not prop.panic then prop.panic = '-' end
       if not prop.poison then prop.poison = '-' end
       if not prop.curse then prop.curse = '-' end
       if not prop.paralyze then prop.paralyze = '-' end
       if not prop.stbind then prop.stbind = '-' end
       if not prop.mabind then prop.mabind = '-' end
       if not prop.agbind then prop.agbind = '-' end
       if not prop.down then prop.down = '-' end
       if not prop.ko then prop.ko = '-' end
       if not (prop.arcana and (prop.hp or prop.mp)) then
           if gameg == 'pq' then
               result = result .. styles.h .. 'width=10%|Cut' .. styles.h .. 'width=10%|Stab' .. styles.h .. 'width=10%|Bash' .. styles.h .. 'width=10%|Fire' .. styles.h .. 'width=10%|Ice' .. styles.h .. 'width=10% title="Electricity"|Elec' .. styles.h .. 'width=10%|Wind' .. styles.h .. 'width=10%|Light' .. styles.h .. 'width=10%|Dark' .. styles.h .. 'width=10% title="Almighty"|Alm\n|-\n' .. styles.statlow .. prop.sword .. styles.statlow .. prop.pierce .. styles.statlow .. prop.strike .. styles.statlow .. prop.fire .. styles.statlow .. prop.ice .. styles.statlow .. prop.elec .. styles.statlow .. prop.wind .. styles.statlow .. prop.expel .. styles.statlow .. prop.dark .. styles.statlow .. prop.alm .. '\n|}'
           else
               result = result .. styles.h .. 'width=10%|Phys' .. styles.h .. 'width=10%|Fire' .. styles.h .. 'width=10%|Ice' .. styles.h .. 'width=10% title="Electricity"|Elec' .. styles.h .. 'width=10%|Wind' .. styles.h .. 'width=10% title="Psychokinesis"|Psy' .. styles.h .. 'width=10% title="Nuclear"|Nuke' .. styles.h .. 'width=10%|Bless' .. styles.h .. 'width=10%|Curse' .. styles.h .. 'width=10% title="Almighty"|Alm\n|-\n' .. styles.statlow .. prop.phys .. styles.statlow .. prop.fire .. styles.statlow .. prop.ice .. styles.statlow .. prop.elec .. styles.statlow .. prop.wind .. styles.statlow .. prop.psy .. styles.statlow .. prop.nuclear .. styles.statlow .. prop.expel .. styles.statlow .. prop.dark .. styles.statlow .. prop.alm .. '\n|}'
               end
           end
       if not prop.arcana then --enemy only
           if gameg == 'pq' then
               result = result .. styles.table2 .. styles.h .. 'width=10%|Sleep' .. styles.h .. 'width=10%|Panic' .. styles.h .. 'width=10%|Poison' .. styles.h .. 'width=10%|Curse' .. styles.h .. 'width=10%|Paralysis' .. styles.h .. 'width=10% title="Strength Bind"|S-Bind' .. styles.h .. 'width=10% title="Magic Bind"|M-Bind' .. styles.h .. 'width=10% title="Agility Bind"|A-Bind' .. styles.h .. 'width=10%|Down' .. styles.h .. 'width=10% title="Instant Kill"|KO\n|-' .. styles.statlow .. prop.sleep .. styles.statlow .. prop.panic .. styles.statlow .. prop.poison .. styles.statlow .. prop.curse .. styles.statlow .. prop.paralyze .. styles.statlow .. prop.stbind .. styles.statlow .. prop.mabind .. styles.statlow .. prop.agbind .. styles.statlow .. prop.down .. styles.statlow .. prop.ko .. '\n|}'
           else
               result = result .. styles.table2 .. styles.h .. 'width=10%|Sleep' .. styles.h .. 'width=10%|Confuse' .. styles.h .. 'width=10%|Poison' .. styles.h .. 'width=10%|Hex' .. styles.h .. 'width=10%|Paralysis' .. styles.h .. 'width=10% title="Strength Bind"|S-Bind' .. styles.h .. 'width=10% title="Magic Bind"|M-Bind' .. styles.h .. 'width=10% title="Agility Bind"|A-Bind' .. styles.h .. 'width=10%|Down' .. styles.h .. 'width=10% title="Instant Kill"|KO\n|-' .. styles.statlow .. prop.sleep .. styles.statlow .. prop.panic .. styles.statlow .. prop.poison .. styles.statlow .. prop.curse .. styles.statlow .. prop.paralyze .. styles.statlow .. prop.stbind .. styles.statlow .. prop.mabind .. styles.statlow .. prop.agbind .. styles.statlow .. prop.down .. styles.statlow .. prop.ko .. '\n|}'
               end
           end
       end
   if prop.restype then
       if (gameg == 'mt1' or gameg == 'mt2') then
           gameg = 'kmt'
           result = result .. styles.table2 .. styles.h .. 'title="Sword"|Swd' .. styles.h .. 'title="Gun"|Gun' .. styles.h .. 'title="Fire"|Fir' .. styles.h .. 'title="Ice"|Ice' .. styles.h .. 'title="Electricity"|Elc' .. styles.h .. 'title="Expel"|Exp' .. styles.h .. 'title="Force"|For' .. styles.h .. 'title="Bind"|Bnd' .. styles.h .. 'title="Curse"|Crs' .. styles.h .. 'title="Nerve"|Nrv' .. styles.h .. 'title="Mind"|Mnd\n|-'
       elseif game == 'smt1' then
           result = result .. styles.table2 .. styles.h .. 'title="Sword"|Swd' .. styles.h .. 'title="Gun"|Gun' .. styles.h .. 'title="Fire"|Fir' .. styles.h .. 'title="Ice"|Ice' .. styles.h .. 'title="Electricity"|Elc' .. styles.h .. 'title="Force"|For' .. styles.h .. 'title="Nerve"|Nrv' .. styles.h .. 'title="Expel"|Exp' .. styles.h .. 'title="Curse"|Crs' .. styles.h .. 'title="Magical"|Mgc' .. styles.h .. 'title="Bind"|Bnd' .. styles.h .. 'title="Charge"|Chg' .. styles.h .. 'title="Dex"|Dex' .. styles.h .. 'title="Needle"|Ndl' .. styles.h .. 'title="Almighty"|Alm\n|-'
       elseif game == 'smt2' or game == 'smtif' then
           result = result .. styles.table2 .. styles.h .. 'title="Sword"|Swd' .. styles.h .. 'title="Gun"|Gun' .. styles.h .. 'title="Fire"|Fir' .. styles.h .. 'title="Ice"|Ice' .. styles.h .. 'title="Electricity"|Elc' .. styles.h .. 'title="Force"|For' .. styles.h .. 'title="Nerve"|Nrv' .. styles.h .. 'title="Expel"|Exp' .. styles.h .. 'title="Curse"|Crs' .. styles.h .. 'title="Magical"|Mgc' .. styles.h .. 'title="Bind"|Bnd' .. styles.h .. 'title="Rush"|Rsh' .. styles.h .. 'title="Hand/Punch Techniques"|Hnd' .. styles.h .. 'title="Leg/Kick Techniques"|Leg' .. styles.h .. 'title="Flying/Throwing Techniques"|Fly' .. styles.h .. 'title="Almighty"|Alm\n|-'
       elseif game == 'giten' or game == 'gmt' then
           result = result .. styles.table2 .. styles.h .. 'title="Sword"|Swd' .. styles.h .. 'title="Havoc"|Hvc' .. styles.h .. 'title="Fire"|Fir' .. styles.h .. 'title="Ice|Ice' .. styles.h .. 'title="Electricity"|Elc' .. styles.h .. 'title="Force|For' .. styles.h .. 'title="Expel"|Exp' .. styles.h .. 'title="Death"|Dth' .. styles.h .. 'title="Mystic"|Mys' .. styles.h .. 'title="Nerve"|Nrv\n|-' 
       elseif game == 'p1' then
           result = result .. styles.table2 .. '\n!style="background:#a9a9a9" title="Weapons" colspan="8"|\n!title="Firearms" style="background:#898989" colspan="4"|\n!style="background:#a9a9a9" title="Havoc" colspan="2"|\n|-' .. styles.h .. 'title="Weapons"|1h' .. styles.h .. 'title="Weapons"|2h' .. styles.h .. 'title="Weapons"|Sp' .. styles.h .. 'title="Weapons"|Ax' .. styles.h .. 'title="Weapons"|Wp' .. styles.h .. 'title="Weapons"|Th' .. styles.h .. 'title="Weapons"|Ar' .. styles.h .. 'title="Weapons"|Fs' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|HG' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|MG' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|SG' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|Ri' .. styles.h .. 'title="Havoc"|Te' .. styles.h .. 'title="Havoc"|Ru\n|-'
       elseif game == 'p2is' or game == 'p2ep' then
           if prop.etype == 'Fire' then prop.Fi = 'Fi' else prop.Fi = 'Fi' end
           if prop.etype == 'Water' then prop.Wt = 'Wt' else prop.Wt = 'Wt' end
           if prop.etype == 'Wind' then prop.Wi = 'Wi' else prop.Wi = 'Wi' end
           if prop.etype == 'Earth' then prop.Er = 'Er' else prop.Er = 'Er' end
           if gameg == 'p2ep' then
               prop.name_Rn = 'title="Shot"|Sh'
               prop.name_Hv = 'title="Attack"|Ak'
               prop.name_El = 'title="Lightning"|Ln'
               prop.name_Li = 'title="Holy"|Ho'
           else
               prop.name_Rn = 'title="Ranged"|Rn'
               prop.name_Hv = 'title="Havoc"|Hv'
               prop.name_El = 'title="Electricity"|El'
               prop.name_Li = 'title="Light"|Li'
           end
           result = result .. styles.table2 .. styles.h .. 'title="Sword"|Sw' .. styles.h .. prop.name_Rn .. styles.h .. 'title="Strike"|Sk' .. styles.h .. 'title="Thrown"|Th' .. styles.h .. prop.name_Hv .. styles.h .. 'style="background:#8E283D" title="Fire"|' .. prop.Fi .. styles.h .. 'style="background:#8E283D" title="Water"|' .. prop.Wt .. styles.h .. 'style="background:#8E283D" title="Wind"|' .. prop.Wi .. styles.h .. 'style="background:#8E283D" title="Earth"|' .. prop.Er .. styles.h .. 'title="Ice"|Ic' .. styles.h .. prop.name_El .. styles.h .. 'title="Nuclear"|Nc' .. styles.h .. prop.name_Li .. styles.h .. 'title="Dark"|Dk' .. styles.h .. 'title="Almighty"|Al' .. styles.h .. 'title="Nerve"|Nr' .. styles.h .. 'title="Mind"|Mn\n|-'
       end
       if require('Module:Skills/' .. gameg .. '/res').restypes[prop.restype] == nil then
           result = result .. '\n|colspan=16 align=center style="color:#f00;font-size:120%;font-weight:bold"|Invalid value of "' .. prop.restype .. '" for restype. Correct value or edit Module:Skills/' .. gameg .. '/res.'
       else
           for i, v in ipairs(require('Module:Skills/' .. gameg .. '/res').restypes[prop.restype]) do
               if game == 'p1' then
                   if i > 14 then break end
                   result = result .. resoutput(v,4,gameg)
               elseif game == 'p2is' or game == 'p2ep' then
                   result = result .. resoutput(v,4,gameg)
               elseif game == 'giten' or game == 'gmt' then
                   result = result .. outputResAsPercent(v)
               else
                   result = result .. resoutput(v,8,gameg)
               end
           end
       end
       result = result .. '\n|}'
       if game == 'p1' then
           result = result .. styles.table2 .. '\n|-\n!style="background:#a9a9a9" title="Element" colspan="4"|\n!style="background:#898989" title="Force" colspan="4"|\n!style="background:#a9a9a9" title="Light" colspan="2"|\n!style="background:#898989" title="Dark" colspan="3"|\n!style="background:#a9a9a9" title="Special" colspan="1"|\n|-' .. styles.h .. 'width="7.12%" title="Element"|Fi' .. styles.h .. 'width="7.12%" title="Element"|Ic' .. styles.h .. 'width="7.12%" title="Element"|Wi' .. styles.h .. 'width="7.12%" title="Element"|Er' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|El' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|Nc' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|Bl' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|Gr' .. styles.h .. 'title="Light"|Ex' .. styles.h .. 'title="Light"|Mi' .. styles.h .. 'style="background:#898989" title="Dark"|De' .. styles.h .. 'style="background:#898989" title="Dark"|Cu' .. styles.h .. 'style="background:#898989;width:7.12%" title="Dark (Ailments)"|Nr' .. styles.h .. 'width="7.12%" title="Special"|???\n|-'
           for i , v in ipairs(require('Module:Skills/' .. gameg .. '/res').restypes[prop.restype]) do
               if i < 15 then
               else
                   result = result .. resoutput(v,4,gameg)
               end
           end
           result = result .. '\n|}'
       end
   end
   if game == 'smt9' and prop.reslevels then
       styles.h = '\n!style="background:' .. getGames.games[gameg].colorbg .. ';color:#fff" '
       result = result .. styles.table2h .. '"' .. styles.h .. 'colspan=4|' .. styles.spanc .. 'Resistance Levels'
       prop.reslevels = mw.text.split(prop.reslevels, '\n')
       prop.resleveltypes = {
           ['strike'] = ' +1',
           ['slash'] = ' +1',
           ['tech'] = ' +1',
           ['gun'] = ' +1',
           ['thrown'] = ' +1',
           ['fire'] = ' +1',
           ['ice'] = ' +1',
           ['elec'] = ' +1',
           ['force'] = ' +1',
           ['expel'] = ' +1',
           ['death'] = ' +1',
           ['mind'] = ' +1',
           ['nerve'] = ' +1',
           ['almighty'] = ' +1',
           ['heal'] = ' +1'
       }
       local resleveltemp
       for k1, v1 in ipairs(prop.reslevels) do
           for k2, v2 in ipairs(mw.text.split(v1 .. '\\', '\\')) do
               if k2 > 2 then break
               elseif (k2 % 2 == 1) then
                   resleveltemp = v2:lower()
               elseif (k2 % 2 == 0) then --modifier
                   if string.sub(v2,1,1) == '+' then
                       if string.find(v2, 'rf') then
                           prop.resleveltypes[resleveltemp] = ' ' .. v2 .. ''
                       elseif string.find(v2, 'dr') then
                           prop.resleveltypes[resleveltemp] = ' ' .. v2 .. ''
                       else
                           prop.resleveltypes[resleveltemp] = ' ' .. v2 .. ''
                       end
                   else
                       prop.resleveltypes[resleveltemp] = ' ' .. v2 .. ''
                   end
               end
           end
       end
       result = result .. styles.table2 .. styles.h .. 'title="Strike"|St' .. styles.h .. 'title="Slash"|Sl' .. styles.h .. 'title="Tech"|Te' .. styles.h .. 'title="Gun"|Gu' .. styles.h .. 'title="Thrown"|Th' .. styles.h .. 'title="Fire"|Fi' .. styles.h .. 'title="Ice"|Ic' .. styles.h .. 'title="Electricity"|El' .. styles.h .. 'title="Force"|Fo' .. styles.h .. 'title="Expel"|Ex' .. styles.h .. 'title="Death"|De' .. styles.h .. 'title="Mind"|Mi' .. styles.h .. 'title="Nerve"|Ne' .. styles.h .. 'title="Almighty"|Al' .. styles.h .. 'title="Healing|He\n|-' .. styles.statlow3 .. '"|' .. prop.resleveltypes.strike .. styles.statlow3 .. '"|' .. prop.resleveltypes.slash .. styles.statlow3 .. '"|' .. prop.resleveltypes.tech .. styles.statlow3 .. '"|' .. prop.resleveltypes.gun .. styles.statlow3 .. '"|' .. prop.resleveltypes.thrown .. styles.statlow3 .. '"|' .. prop.resleveltypes.fire .. styles.statlow3 .. '"|' .. prop.resleveltypes.ice .. styles.statlow3 .. '"|' .. prop.resleveltypes.elec .. styles.statlow3 .. '"|' .. prop.resleveltypes.force .. styles.statlow3 .. '"|' .. prop.resleveltypes.expel .. styles.statlow3 .. '"|' .. prop.resleveltypes.death .. styles.statlow3 .. '"|' .. prop.resleveltypes.mind .. styles.statlow3 .. '"|' .. prop.resleveltypes.nerve .. styles.statlow3 .. '"|' .. prop.resleveltypes.almighty .. styles.statlow3 .. '"|' .. prop.resleveltypes.heal
       result = result .. '\n|}' .. '\n|}'
   end
   if gameg == 'p2is' or gameg == 'p2ep' then
       if prop.card or prop.material or prop.type1 or prop.type2 or prop.type3 then
           result = result .. styles.table2 ..  styles.h .. 'colspan=4|Summon Information\n|-'
           if prop.material then
               result = result .. styles.skill .. '' .. styles.spanc .. 'Material Card' .. styles.effect1 .. 'File:Material Card Icon (P2ISP).png ' .. prop.material .. ' Card'
           end
           if prop.card then
               result = result .. styles.skillc .. '' .. styles.spanc .. 'Tarot Cards' .. styles.effect1 .. '' .. prop.card .. ' File:Tarot Card Symbol 2.png ' .. prop.arcana .. ' Cards'
           end
           local effect1
           if prop.material then
               effect1 = '\n|colspan=3 style="background:#222;text-align:left"|'
           else
               effect1 = styles.effect1
           end
           if prop.type1 then
               result = result .. styles.skill .. prop.type1 .. effect1 .. prop.desc1
           end
           if prop.type2 then
               result = result .. styles.skill .. prop.type2 .. effect1 .. prop.desc2
           end
           if prop.type3 then
               result = result .. styles.skill .. prop.type3 .. effect1 .. prop.desc3
           end
           result = result .. '\n|}'
       end
   end
   if gameg == 'smt3' and (prop.recruit~= or prop.obtain~= or prop.evolvef or prop.evolvet) then
       prop.recruit = prop.recruit:lower()
       if prop.recruit == 'yes' or prop.recruit == 'recruit' then prop.recruit = 'Normal recruit or fusion'
       elseif prop.recruit == 'dark recruit' then prop.recruit = 'Full Kagutsuchi recruitment or fusion'
       elseif prop.recruit == 'dark' then prop.recruit = 'Fusion only. Open to trading.'
       elseif prop.recruit == 'fusion' then prop.recruit = 'Fusion only'
       elseif prop.recruit == 'special' or prop.recruit == 'special fusion' then prop.recruit = 'Special fusion only'
       elseif prop.recruit == 'evolve' or prop.recruit == 'evolution' then prop.recruit = 'Evolution only'
       elseif prop.recruit == 'evolve neutral' or prop.recruit == 'neutral evolution' then prop.recruit = 'Normal recruit or evolution'
       elseif prop.recruit == 'evolve dark' or prop.recruit == 'dark evolution' then prop.recruit = 'Evolution only. Open to trading.'
       elseif prop.recruit == 'boss fusion' then prop.recruit = 'Fusion only after boss battle'
       elseif prop.recruit == 'boss special' or prop.recruit == 'boss special fusion' then prop.recruit = 'Special fusion only after boss battle'
       elseif prop.recruit == 'boss evolve' or prop.recruit == 'boss evolution' then prop.recruit = 'Evolution only after boss battle'
       elseif prop.recruit == 'dark boss fusion' then prop.recruit = 'Fusion only after boss battle. Open to trading.'
       elseif prop.recruit == 'dark boss special fusion' then prop.recruit = 'Special fusion only after boss battle. Open to trading.'
       elseif prop.recruit == 'dark boss evolve' then prop.recruit = 'Evolution only after boss battle. Open to trading.'
       elseif prop.recruit == 'samael' then prop.recruit = 'Choose Shijima Reason or perform special fusion only after boss battle.'
       elseif prop.recruit == 'thor' then prop.recruit = 'Fusion only after boss battle at Tower of Kagutsuchi'
       elseif prop.recruit == 'bishamon' then prop.recruit = 'Fusion only after boss battle at Bandou Shrine'
       elseif prop.recruit == 'futomimi' or prop.recruit == 'sakahagi' then prop.recruit = 'Fusion only after boss battle and completing the revival side quest.'
       elseif prop.recruit == 'raidou' or prop.recruit == 'dante' then prop.recruit = 'Plot related'
       elseif prop.recruit == 'unique' or prop.recruit == 'exclusive' or prop.recruit == 'enemy' or prop.recruit == 'enemy only' or prop.recruit == 'enemy exclusive' then prop.recruit = 'Enemy only'
       end
       if prop.recruit or prop.obtain or prop.convo then
           result = result .. styles.table2 .. styles.h
           if prop.recruit or prop.obtain then result = result .. 'width=80px|Obtainable' .. styles.order .. prop.recruit .. prop.obtain end
           if prop.convo then result = result .. styles.h .. 'width=146px|'..styles.spanc..'Special conversation' .. styles.order .. prop.convo end
           result = result .. '\n|}'
       end
       if prop.evolvef or prop.evolvet then
           result = result .. styles.table2
           if prop.evolvef then result = result .. styles.h .. 'width=100px|' .. styles.spanc .. 'Evolved from' .. styles.order .. prop.evolvef end
           if prop.evolvet then result = result .. styles.h .. 'width=100px|' .. styles.spanc .. 'Evolves into' .. styles.order .. prop.evolvet end
           result = result .. '\n|}'
       end
   end
   if prop.fusion then
       result = result .. styles.table2 .. styles.h .. 'width=100px|' .. styles.spanc .. 'Special fusion' .. styles.order .. prop.fusion .. '\n|}'
   end
   if prop.elecchair then
       result = result .. styles.table2 .. styles.h .. 'width=180px|Electric chair execution' .. styles.order .. prop.elecchair .. '\n|}'
   end
   local skill, alias, skillcell, skille, cost, effect, pre, range, power, target
   if prop.dskills then
       result = result .. styles.table2 .. styles.h .. 'colspan=3|' .. styles.spanc .. 'Default Skills' .. styles.skill .. 'Skill' .. styles.skillc .. 'Cost' .. styles.skillc .. 'Effect'
       for k, v in ipairs(mw.text.split(prop.dskills, '\n')) do
           skill = data.skills[v]
           if not skill then
               alias = data.aliases[v]
               if alias then
                   v = alias
                   skill = data.skills[v]
               end
           end
           if v ==  then
               skillcell = 
               cost = 
               effect = noskill()
           elseif not skill then
               skillcell = 
               cost = 
               effect = noskill(v,gamed)
           elseif skill then
               cost = skill.cost
               effect = skill.effect
               if (k % 2 == 0) then
                   cost = styles.cost2 .. cost
                   effect = styles.effect2 .. effect
               else
                   cost = styles.cost1 .. cost
                   effect = styles.effect1 .. effect
               end
               if skill.name then v = skill.name end
               skillcell = styles.skill .. v
           end
           result = result .. skillcell .. cost .. effect
       end
       result = result .. '\n|}'
   end
   if prop.skills then
       result = result .. styles.table2h
       if game == 'mt1' or game == 'mt2' or game == 'kmt1' or game == 'kmt2' then
           result = result .. '"' .. styles.h .. 'colspan=4|' .. styles.spanc .. 'List of Spells'
       elseif game == 'smtim' then
           result = result .. 'mw-collapsible mw-collapsed"' .. styles.h .. 'colspan=4|' .. styles.spanc .. 'Learned Skills'
       elseif gameg == 'smtsj' and not (prop.enemy or prop.boss) then
           result = result .. '"' .. styles.h .. 'colspan=3|' .. styles.spanc .. 'Natural Skills'
       elseif gameg == 'ab' then
           result = result .. '"' .. styles.h .. 'colspan=7|' .. styles.spanc .. 'Natural Skills'
       elseif gameg == 'majin1' then
           result = result .. '"' .. styles.h .. 'colspan=7|' .. styles.spanc .. 'Magic Skills'
       elseif gameg == 'majin2' then
           result = result .. '"' .. styles.h .. 'colspan=6|' .. styles.spanc .. 'List of Skills'
       elseif gameg == 'p5' or gameg == 'p5r' or gameg == 'p5s' then
           result = result .. '"\n!colspan=4 style="background-color: ' .. getGames.games[gameg].colorb .. ';background: linear-gradient(120deg, ' .. getGames.games[gameg].colorb .. ' 42%, #000 42.1%, #000 43%, #fff 43.1%, #fff 57%, #000 57.1%, #000 58%, ' .. getGames.games[gameg].colorb .. ' 58.1%"|List of Skills'
       elseif gameg == 'desu1' or gameg == 'desu2' then
           result = result .. '"' .. styles.h .. 'colspan=3|' .. styles.spanc .. 'Command Skills'
       else
           result = result .. '"' .. styles.h .. 'colspan=4|' .. styles.spanc .. 'List of Skills'
       end
       if game == 'mt1' or game == 'mt2' or gameg == 'giten' or gameg == 'smtsj' or gameg == 'smtds' or gameg == 'sh' or gameg == 'childred' or gameg == 'childblack' or gameg == 'childps' or gameg == 'childblack' or gameg == 'childfire' or gameg == 'childice' or gameg == 'desu1' or gameg == 'desu2' then
           result = result .. '\n|-style="border:0"\n|style="padding:0;width:33%"|\n|style="padding:0;width:33%"|\n|style="padding:0;width:33%"|'
           for k, v in ipairs(mw.text.split(prop.skills, '\n')) do
               skill = data.skills[v]
               if not skill then
                   alias = data.aliases[v]
                   if alias then
                       v = alias
                       skill = data.skills[v]
                   end
               end
               if v ==  or v == '-' or v == '--' then
                   skillcell = 
               elseif not skill then
                   skillcell = styles.skill3 .. '"|' .. v
               else
                   if skill.name then v = skill.name end
                   skillcell = styles.skill3 .. '" title="Cost: ' .. skill.cost .. '; ' .. string.gsub(string.gsub(skill.effect, '%[%[', ), '%]%]', ) .. '"|' .. v
               end
               if (k == 7) then
                   if prop.boss or prop.enemy then
                       result = result .. '\n|-' .. skillcell
                   else
                       result = result .. '\n|-' .. styles.skill3m .. skillcell .. styles.skill3m
                   end
               elseif (k % 3 == 1) then
                   result = result .. '\n|-' .. skillcell
               else
                   result = result .. skillcell
               end
           end
       elseif gameg == 'majin2' then
           result = result .. styles.skill .. 'Skill' .. styles.skillc .. 'Power' .. styles.skillc .. 'Range' .. styles.skillc .. 'Cost' .. styles.skillc .. 'Target' .. styles.skillc .. 'Effect'
           for k, v in ipairs(mw.text.split(prop.skills, '\n')) do
               skill = data.skills[v]
               if not skill then
                   alias = data.aliases[v]
                   if alias then
                       v = alias
                       skill = data.skills[v]
                   end
               end
               if v ==  then
                   skillcell = 
                   power = 
                   range = 
                   cost = 
                   target = 
                   effect = noskill()
               elseif not skill then
                   skillcell = 
                   power = 
                   range = 
                   cost = 
                   target = 
                   effect = noskill(v,gamed)
               elseif skill then
                   if skill.cost == 'extra' then
                       skill.cost = 'Extra'
                   elseif skill.cost == 'sextra' then
                       skill.cost = 'P. Extra'
                   elseif skill.cost == 'mextra' then
                       skill.cost = 'M. Extra'
                   end
                   if (k % 2 == 0) then
                       power = styles.cost2 .. skill.power
                       range = styles.cost2 .. skill.range
                       cost = styles.cost2 .. skill.cost
                       target = styles.cost2 .. skill.target
                       effect = styles.effect2 .. skill.effect
                   else
                       power = styles.cost1 .. skill.power
                       range = styles.cost1 .. skill.range
                       cost = styles.cost1 .. skill.cost
                       target = styles.cost1 .. skill.target
                       effect = styles.effect1 .. skill.effect
                   end
                   if skill.name then v = skill.name end
                   skillcell = styles.skill .. v
               end
               result = result .. skillcell .. power .. range .. cost .. target .. effect
           end
       elseif gameg == 'smt9' or gameg == '20xx' or gameg == 'lb3' or gameg == 'lbs' or gameg == 'ronde' or gameg == 'cs' then
           result = result .. '\n|-style="border:0"\n|style="padding:0;width:33%"|\n|style="padding:0;width:33%"|\n|style="padding:0;width:33%"|'
           for k, v in ipairs(mw.text.split(prop.skills, '\n')) do
               if v ==  or v == '-' or v == '--' then
                   skillcell = 
               else
                   skillcell = styles.skill3 .. '"|' .. v
               end
               if (k == 7) then
                   result = result .. '\n|-' .. styles.skill3m .. skillcell .. styles.skill3m
               elseif (k % 3 == 1) then
                   result = result .. '\n|-' .. skillcell
               else
                   result = result .. skillcell
               end
           end
       elseif (game == 'kmt1' and not (prop.enemy or prop.boss)) or (game == 'kmt2' and not (prop.enemy or prop.boss)) or (gameg == 'smt1' and not (prop.enemy or prop.boss)) or (gameg == 'smt2' and not (prop.enemy or prop.boss)) or (gameg == 'smtif' and not (prop.enemy or prop.boss)) or (gameg == 'smt3' and (prop.enemy or prop.boss)) or ((gameg == 'smt4a' or gameg == 'smt5' or gameg == 'sh2') and prop.guest == '2') or (game == 'lb1' and not (prop.enemy or prop.boss)) or (game == 'lb2' and not (prop.enemy or prop.boss)) then -- skill - cost - effect
           result = result .. styles.skill .. 'Skill' .. styles.skillc .. 'Cost' .. styles.skillc .. 'Effect'
           for k, v in ipairs(mw.text.split(prop.skills, '\n')) do
               skill = data.skills[v]
               if not skill then
                   alias = data.aliases[v]
                   if alias then
                       v = alias
                       skill = data.skills[v]
                   end
               end
               if v ==  then
                   skillcell = 
                   cost = 
                   effect = noskill()
               elseif not skill then
                   skillcell = 
                   cost = 
                   effect = noskill(v,gamed)
               elseif skill then
                   if skill.phy then
                       cost = 'none'
                   --[[elseif gameg == 'p5' or gameg == 'p5r' or gameg == 'p5s' then
                       cost = '' .. skill.cost .. '' -- tints pink for magic skill]]--
                   else
                       cost = skill.cost
                   end
                   effect = skill.effect
                   if (k % 2 == 0) then
                       cost = styles.cost2 .. cost
                       effect = styles.effect2 .. effect
                   else
                       cost = styles.cost1 .. cost
                       effect = styles.effect1 .. effect
                   end
                   if skill.name then v = skill.name end
                   if skill.magatsuhi then

effect = '

Magatsuhi

' .. effect

                   end
                   skillcell = styles.skill .. v
               end
               result = result .. skillcell .. cost .. effect
           end
       elseif (gameg == 'smt4' and prop.guest == '2') or ((gameg == 'p1' or gameg == 'p2is' or gameg == 'p2ep' or (gameg == 'p3' or gameg == 'p3re') or gameg == 'p4' or gameg == 'p5' or gameg == 'p5r' or gameg == 'p5s') and prop.hp) or gameg == 'ddsaga1' or gameg == 'ddsaga2' or ((gameg == 'pq' or gameg == 'pq2') and not prop.arcana) or prop.boss or prop.enemy then -- skill - effect (optional: Inheritable Skill or Rumor Skill)
           result = result .. styles.skill .. 'Skill'  .. styles.skillc .. 'Effect'
           for k1, v1 in ipairs(mw.text.split(prop.skills, '\n')) do
               for k2, v2 in ipairs(mw.text.split(v1 .. '\\', '\\')) do
                   if k2 > 2 then break
                   elseif (k2 % 2 == 1) then
                       skill = data.skills[v2]
                       if not skill then
                           alias = data.aliases[v2]
                           if alias then
                               v2 = alias
                               skill = data.skills[v2]
                           end
                       end
                       if skill then
                           if skill.combo then

skill.effect = '

Combo

' .. skill.effect

                           elseif skill.smirk then
                               skill.effect = skill.effect .. ' Smirk ' .. skill.smirk
                           end
                       end
                       if v2 ==  then
                           skillcell = 
                           effect = noskill()
                       elseif not skill then
                           skillcell = 
                           effect = noskill(v2,gamed)
                       elseif skill then
                           if (k1 % 2 == 0) then
                               effect = styles.effect2 .. skill.effect
                           else
                               effect = styles.effect1 .. skill.effect
                           end
                           if skill.name then v2 = skill.name end
                           skillcell = styles.skill .. v2
                       end
                       result = result .. skillcell .. effect
                   elseif (k2 % 2 == 0) then
                       if v2 == 'I' or v2 == 'i' then

result = result .. '

Inheritable Skill

'

                       elseif v2 == 'R' or v2 == 'r' then

result = result .. '

'

                       else
                           result = result
                       end
                   end
               end
           end
       elseif gameg == 'dcbrb' or gameg == 'childlight' or gameg == 'childwhite' then -- skill - element - cost - effect
       result = result .. styles.skill .. 'Skill' .. styles.skillc .. 'Element' .. styles.skillc .. 'Cost' .. styles.skillc .. 'Effect'
           for k, v in ipairs(mw.text.split(prop.skills, '\n')) do
               skill = data.skills[v]
               if not skill then
                   alias = data.aliases[v]
                   if alias then
                       v = alias
                       skill = data.skills[v]
                   end
               end
               if v ==  then
                   skillcell = 
                   skille = 
                   cost = 
                   effect = noskill()
               elseif not skill then
                   skillcell = 
                   skille = 
                   cost = 
                   effect = noskill(v,gamed)
               elseif skill then
                   if (k % 2 == 0) then
                       effect = styles.effect2 .. skill.effect
                       skille = styles.cost2 .. skill.element
                       cost = styles.cost2 .. skill.cost
                   else
                       effect = styles.effect1 .. skill.effect
                       skille = styles.cost1 .. skill.element
                       cost = styles.cost1 .. skill.cost
                   end
                   if skill.name then v = skill.name end
                   skillcell = styles.skill .. v
               end
               result = result .. skillcell .. skille .. cost .. effect
           end
       else
           if gameg == 'smtim' or gameg == 'ab' or gameg == 'p1' or gameg == 'p2is' or gameg == 'p2ep' then -- rank - skill - cost - effect
               result = result .. styles.skill
               if gameg == 'smtim' then result = result .. 'Level' .. styles.skillc .. 'Skill' .. styles.skillc .. 'Cost' .. styles.skillc .. 'Effect'
               elseif gameg == 'ab' then result = result .. 'Level' .. styles.skillc .. 'Skill' .. styles.skillc .. 'Cost' .. styles.skillc .. 'Range' .. styles.skillc .. 'Power' .. styles.skillc .. 'Target' .. styles.skillc .. 'Effect'
               else result = result .. 'Rank' .. styles.skillc .. 'Skill' .. styles.skillc .. 'Effect'
               end
               for k1, v1 in ipairs(mw.text.split(prop.skills, '\n')) do
                   for k2, v2 in ipairs(mw.text.split(v1 .. '\\', '\\')) do
                       if k2 > 2 then break
                       elseif (k2 % 2 == 1) then
                           if v2 == 'M' or v2 == 'm' then
                               v2 = 'Mutation'
                           elseif v2 == 'R' or v2 == 'r' then
                               v2 = 'Rumor'
                           else
                               v2 = v2
                           end
                           result = result .. styles.skill .. v2
                       elseif (k2 % 2 == 0) then
                           skill = data.skills[v2]
                           if not skill then
                               alias = data.aliases[v2]
                               if alias then
                                   v2 = alias
                                   skill = data.skills[v2]
                               end
                           end
                           if v2 ==  then
                               skillcell = 
                               cost = 
                               range = 
                               power = 
                               target = 
                               effect = noskill()
                           elseif not skill then
                               skillcell = 
                               cost = 
                               range = 
                               power = 
                               target = 
                               effect = noskill(v2,gamed)
                           elseif skill then
                               if (k1 % 2 == 0) then
                                   if gameg == 'smtim' or gameg == 'ab' then cost = styles.cost2 .. skill.cost else cost =  end
                                   if gameg == 'ab' then
                                       range = styles.cost2 .. skill.range
                                       power = styles.cost2 .. skill.power
                                       target = styles.cost2 .. skill.target
                                   else
                                       range = 
                                       power = 
                                       target = 
                                   end
                                   effect = styles.effect2 .. skill.effect
                               else
                                   if gameg == 'smtim' or gameg == 'ab' then cost = styles.cost1 .. skill.cost else cost =  end
                                   if gameg == 'ab' then
                                       range = styles.cost1 .. skill.range
                                       power = styles.cost1 .. skill.power
                                       target = styles.cost1 .. skill.target
                                   else
                                       range = 
                                       power = 
                                       target = 
                                   end
                                   effect = styles.effect1 .. skill.effect
                               end
                               if skill.name then v2 = skill.name end
                               skillcell = styles.skillc .. v2
                           end
                           result = result .. skillcell .. cost .. range .. power .. target .. effect
                       end
                   end
               end
       elseif gameg == 'majin1' then -- skill - cost - power - range - target - effect
       result = result .. styles.skill .. 'Skill' .. styles.skillc .. 'Cost' .. styles.skillc .. 'Power' .. styles.skillc .. 'Range' .. styles.skillc .. 'Target' .. styles.skillc .. 'Effect'
           for k, v in ipairs(mw.text.split(prop.skills, '\n')) do
               skill = data.skills[v]
               if not skill then
                   alias = data.aliases[v]
                   if alias then
                       v = alias
                       skill = data.skills[v]
                   end
               end
               if v ==  then
                   skillcell = 
                   cost = 
                   power = 
                   range = 
                   target = 
                   effect = noskill()
               elseif not skill then
                   skillcell = 
                   cost = 
                   power = 
                   range = 
                   target = 
                   effect = noskill(v,gamed)
               elseif skill then
                   if (k % 2 == 0) then
                       cost = styles.cost2 .. skill.cost
                       power = styles.cost2 .. skill.power
                       range = styles.cost2 .. skill.range
                       target = styles.cost2 .. skill.target
                       effect = styles.effect2 .. skill.effect
                   else
                       cost = styles.cost1 .. skill.cost
                       power = styles.cost1 .. skill.power
                       range = styles.cost1 .. skill.range
                       target = styles.cost1 .. skill.target
                       effect = styles.effect1 .. skill.effect
                   end
                   if skill.name then v = skill.name end
                   skillcell = styles.skill .. v
               end
               result = result .. skillcell .. cost .. power .. range .. target .. effect
           end
           else -- skill - cost - effect - level
               result = result .. styles.skill .. 'Skill'
               if not ((gameg == 'smt4' or gameg == 'smt4a' or gameg == 'smt5' or gameg == 'sh2') and prop.guest == '1') then
                   if gameg == 'ldx2' then
                       result = result .. styles.skillc .. 'Cost' .. styles.skillc .. 'Effect' .. styles.skillc .. 'Archetype'
                   else
                       result = result .. styles.skillc .. 'Cost' .. styles.skillc .. 'Effect' .. styles.skillc .. 'Level'
                   end
               else
                   result = result .. styles.skillc .. 'Effect' .. styles.skillc .. 'Level'
               end
               for k1, v1 in ipairs(mw.text.split(prop.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 == 1) then -- this checks level (false) or skill name (true) divided by the backslash.
                           skill = data.skills[v2] -- now v2 represents skill name.
                           if not skill then
                               alias = data.aliases[v2]
                               if alias then
                                   v2 = alias
                                   skill = data.skills[v2]
                               end
                           end
                           if v2 ==  then
                               skillcell = 
                               cost = 
                               effect = noskill()
                           elseif not skill then
                               skillcell = 
                               cost = 
                               effect = noskill(v2,gamed)
                           elseif skill then
                               if gameg == 'smt3' then
                                   if skill.cost == 'Convo' then
                                       cost = 'Convo'
                                   elseif skill.cost == 'Interrupt' then
                                       cost = 'Interrupt'
                                   else cost = skill.cost
                                   end
                               else cost = skill.cost
                               end
                               if gameg == 'p5' or gameg == 'p5r' or gameg == 'p5s' then
                                   if string.match(skill.cost, 'HP') then
                                       cost = '' .. skill.cost .. '' -- tints cyan for phys skill
                                   elseif string.match(skill.cost, 'SP') then
                                       cost = '' .. skill.cost .. '' -- tints pink for magic skill
                                   end
                               end
                               if skill.smirk then
                                   skill.effect = skill.effect .. ' Smirk ' .. skill.smirk
                               end
                               if skill.chaineffect then
                                   for index, child in ipairs(skill.chaineffect) do
                                       skill.effect = skill.effect .. string.format('\n%s:', child[1]) .. " " .. child[2] .. '\n'	
                                   end
                               end
                               if skill.conditional then
                                   for index, child in ipairs(skill.conditional) do
                                       skill.effect = skill.effect .. string.format('\n%s:', child[1]) .. " " .. child[2] .. '\n'
                                       if child.chaineffect then
                                           for index, value in ipairs(child.chaineffect) do
                                               skill.effect = skill.effect .. string.format('
%s:', value[1]) .. " " .. value[2] .. '\n' end end end end if skill.boostlevel then for level, value in ipairs(skill.boostlevel) do if string.len(value) > 0 then skill.effect = skill.effect .. string.format('
Level %d:', level - 1) .. " " .. value end end end if (k1 % 2 == 0) then cost = styles.cost2 .. cost effect = styles.effect2 .. skill.effect else cost = styles.cost1 .. cost effect = styles.effect1 .. skill.effect end if skill.name then v2 = skill.name end skillcell = styles.skill .. v2 end if not ((gameg == 'smt4' or gameg == 'smt4a' or gameg == 'smt5' or gameg == 'sh2') and prop.guest == '1') then result = result .. skillcell .. cost .. effect else result = result .. skillcell .. effect end elseif (k2 % 2 == 0) then -- this checks level (ture) or skill name (false) divided by the backslash. if v2 == 'i' or v2 == 'I' or v2 == 'innate' or v2 == 'default' or v2 == 'Default' -- now v2 represents skill level. then v2 = 'Innate' elseif v2 == 'Ac' then v2 = 'Common' elseif v2 == 'Aa' then v2 = 'Aragami
(Awaken)
' elseif v2 == 'Ap' then v2 = 'Protector
(Awaken)
' elseif v2 == 'Ay' then v2 = 'Psychic
(Awaken)
' elseif v2 == 'Ae' then v2 = 'Elementalist
(Awaken)
' elseif v2 == 'Ga' then v2 = 'Aragami
(Gacha)
' elseif v2 == 'Gp' then v2 = 'Protector
(Gacha)
' elseif v2 == 'Gy' then v2 = 'Psychic
(Gacha)
' elseif v2 == 'Ge' then v2 = 'Elementalist
(Gacha)
' end if (k1 % 2 == 0) then -- this checks even (true) or odd (false) number row. 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 end end end end end result = result .. '\n|}' end if prop.fskills then result = result .. styles.table2 .. styles.h .. 'colspan="5"' if gameg == 'p2is' or gameg == 'p2ep' then result = result .. '|' .. styles.spanc .. 'Unique Fusion Spells' .. styles.skill .. 'Skill' .. styles.skillc .. 'Effect' .. styles.skillc .. 'Order/Skill/Persona' for k, v in ipairs(mw.text.split(prop.fskills, '\n')) do skill = data.skills[v] if not skill then alias = data.aliases[v] if alias then v = alias skill = data.skills[v] end end if v == then skillcell = cost = effect = noskill() elseif not skill then skillcell = cost = effect = noskill(v,gamed) elseif skill then if (k % 2 == 0) then effect = styles.effect2 .. skill.effect else effect = styles.effect1 .. skill.effect end if skill.name then v = skill.name end skillcell = styles.skill .. v cost = styles.order .. skill.cost end result = result .. skillcell .. effect .. cost end elseif (gameg == 'p3' or gameg == 'p3re') then local cost, effect, pre if not data.skills[prop.fskills] then cost = effect = noskill(prop.fskills,gamed) pre = fskills = else cost = styles.cost1 .. data.skills[prop.fskills].cost effect = styles.effect1 .. data.skills[prop.fskills].effect pre = styles.cost1 .. data.skills[prop.fskills].pre prop.fskills = styles.skill .. prop.fskills end result = result .. '|' .. styles.spanc .. 'Fusion Spell *' .. styles.skill .. 'Skill' .. styles.skillc .. 'Cost' .. styles.skillc .. 'Effect' .. styles.skillc .. 'Prerequisite' .. prop.fskills .. cost .. effect .. pre elseif gameg == 'childlight' then result = result .. '|' .. styles.spanc .. 'Combos' .. styles.skill .. 'Combo' .. styles.skillc .. 'Element' .. styles.skillc .. 'Cost' .. styles.skillc .. 'Effect' .. styles.skillc .. 'Partner' for k1, v1 in ipairs(mw.text.split(prop.fskills, '\n')) do for k2, v2 in ipairs(mw.text.split(v1 .. '\\', '\\')) do -- Entry after backslash after skill name is treated as "partner" if k2 > 2 then break elseif (k2 % 2 == 1) then -- this checks partner (false) or skill name (true) divided by the backslash. skill = data.skills[v2] -- now v2 represents skill name. if not skill then alias = data.aliases[v2] if alias then v2 = calias skill = data.skills[v2] end end if v2 == then skillcell = skille = cost = effect = noskill() elseif not skill then skillcell = skille = cost = effect = noskill(v2,gamed) elseif skill then skille = skill.element cost = skill.cost effect = skill.effect if (k1 % 2 == 0) then skille = styles.cost2 .. skille cost = styles.cost2 .. cost effect = styles.effect2 .. effect else skille = styles.cost1 .. skille cost = styles.cost1 .. cost effect = styles.effect1 .. effect end if skill.name then v2 = skill.name end skillcell = styles.skill .. v2 end result = result .. skillcell .. skille .. cost .. effect elseif (k2 % 2 == 0) then -- this checks partner (ture) or skill name (false) divided by the backslash. if v2 == or not v2 then -- now v2 represents partner. v2 = end if (k1 % 2 == 0) then -- this checks even (true) or odd (false) number row. result = result .. styles.cost2 .. v2 -- "v2" represents "partner" within "Skills" parameter on each new line after the backslash. else result = result .. styles.cost1 .. v2 end end end end end result = result .. '\n|}' end if prop.pskills then if gameg == 'smtsj' then result = result .. styles.table2 .. styles.h .. 'colspan=3|D-Source Skills' else result = result .. styles.table2 .. styles.h .. 'colspan=3|' .. styles.spanc .. 'Passive Skills' end result = result .. '\n|-style="border:0"\n|style="padding:0;width:33%"|\n|style="padding:0;width:33%"|\n|style="padding:0;width:33%"|' for k, v in ipairs(mw.text.split(prop.pskills, '\n')) do skill = data.skills[v] if not skill then alias = data.aliases[v] if alias then v = alias skill = data.skills[v] end end if v == or v == '-' or v == '--' then skillcell = elseif not skill then skillcell = styles.skill3 .. '"|' .. v else if skill.name then v = skill.name end skillcell = styles.skill3 .. '" title="Cost: ' .. skill.cost .. '; ' .. skill.effect .. '"|' .. v end if (k % 3 == 1) then result = result .. '\n|-' .. skillcell else result = result .. skillcell end end result = result .. '\n|}' end if (gameg == 'smtsj' or gameg == 'desu1' or gameg == 'desu2') and (prop.askills or prop.apskills) then if gameg == 'smtsj' then result = result .. styles.table2 .. styles.h .. 'colspan=3|Item Drops' else result = result .. styles.table2 .. styles.h .. 'colspan=3|List of Auction Skills' end result = result .. '\n|-style="border:0"\n|style="padding:0;width:33%"|\n|style="padding:0;width:33%"|\n|style="padding:0;width:33%"|' if prop.askills then for k, v in ipairs(mw.text.split(prop.askills, '\n')) do skill = data.skills[v] if not skill then alias = data.aliases[v] if alias then v = alias skill = data.skills[v] end end if v == or v == '-' or v == '--' then skillcell = elseif not skill then skillcell = styles.skill3 .. '"|' .. v else if skill.name then v = skill.name end skillcell = styles.skill3 .. '" title="Cost: ' .. skill.cost .. '; ' .. skill.effect .. '"|' .. v end if (k % 3 == 1) then result = result .. '\n|-' .. skillcell else result = result .. skillcell end end end if prop.apskills then for k, v in ipairs(mw.text.split(prop.apskills, '\n')) do skill = data.skills[v] if not skill then alias = data.aliases[v] if alias then v = alias skill = data.skills[v] end end if v == or v == '-' or v == '--' then skillcell = elseif not skill then skillcell = styles.skill3 .. '"|' .. v else if skill.name then v = skill.name end skillcell = styles.skill3 .. '" title="Cost: ' .. skill.cost .. '; ' .. skill.effect .. '"|' .. v end if (k % 3 == 1) then result = result .. '\n|-' .. skillcell else result = result .. skillcell end end end result = result .. '\n|}' end if gameg == 'p2ep' and prop.unknown then result = result .. styles.table2 .. styles.h .. 'colspan="2"|' .. styles.spanc .. 'Unknown Power' .. styles.skill prop.unknown = prop.unknown:lower() if prop.unknown == 'attack type' or prop.unknown == 'attack-type' or prop.unknown == 'attack' then result = result .. 'Attack Type' .. styles.cost1 .. 'Deals 500 or 250 non-elemental damage to all enemies.' elseif prop.unknown == 'defense type' or prop.unknown == 'defense-type' or prop.unknown == 'defense' then result = result .. 'Defense Type' .. styles.cost1 .. 'Reflects or nullifies the incoming attack.' elseif prop.unknown == 'assist type' or prop.unknown == 'assist-type' or prop.unknown == 'assist' then result = result .. 'Assist Type' .. styles.cost1 .. 'Bestows Tarukaja + Makakaja (or Rakukaja + Samakaja in addition)' elseif prop.unknown == 'recovery type' or prop.unknown == 'recovery-type' or prop.unknown == 'recovery' then result = result .. 'Recovery Type' .. styles.cost1 .. 'Fully recovers HP (or removes ailment in addition).' elseif prop.unknown == 'revival type' or prop.unknown == 'revival-type' or prop.unknown == 'revival' then result = result .. 'Revival Type' .. styles.cost1 .. 'Revives from unconscious with full or 1/4 HP.' elseif prop.unknown == 'special type' or prop.unknown == 'special-type' or prop.unknown == 'special' then result = result .. 'Special Type' .. styles.cost1 .. 'Eliminates all enemies when the user is unconscious.' end result = result .. '\n|}' end if gameg == 'p5s' and prop.cskills then result = result .. styles.table2 .. styles.h .. 'colspan="4" style="background-color: ' .. getGames.games[gameg].colorb .. ';background: linear-gradient(120deg, ' .. getGames.games[gameg].colorb .. ' 40%, #000 40.1%, #000 41%, #fff 41.1%, #fff 59%, #000 59.1%, #000 60%, ' .. getGames.games[gameg].colorb .. ' 60.1%"|Combo Attacks' result = result .. styles.skill .. 'Combo Attack' .. styles.skillc .. 'Button Input' .. styles.skill3 .. '" colspan=2|Skills' for k1, v1 in ipairs(mw.text.split(prop.cskills, '\n')) do skillcell = local v_cnt = 0 for k in string.gmatch(v1, '\\') do v_cnt = v_cnt + 1 end for k2, v2 in ipairs(mw.text.split(v1, '\\')) do if k2 > 1 then skill = data.skills[v2] if not skill then alias = data.aliases[v2] if alias then v2 = alias skill = data.skills[v2] end end local resv2, resdec if v2 == or v2 == '-' or v2 == '--' then resv2 = '-' elseif not skill then resv2 = 'Invalid skill name of "' .. v2 .. '". You may correct the skill name or modify module:Skills/' .. gamed .. ' if needed.' else if skill.name then v2 = skill.name end resv2 = '' .. v2 .. '' resdec = skill.effect end if k2 > 2 then if k2 % 2 == 0 then if resdec then skillcell = skillcell .. '\n|-' .. styles.effect1 .. resv2 .. styles.effect1 .. resdec else skillcell = skillcell .. '\n|-' .. styles.effect1p .. resv2 end else if resdec then skillcell = skillcell .. '\n|-' .. styles.effect2 .. resv2 .. styles.effect2 .. resdec else skillcell = skillcell .. '\n|-' .. styles.effect2p .. resv2 end end else if resdec then skillcell = skillcell .. styles.effect1 .. resv2 .. styles.effect1 .. resdec else skillcell = skillcell .. styles.effect1p .. resv2 end end else v2 = v2:gsub("^%l", string.upper) if not v2 then v2 = end local ca = data.cattacks[v2] result = result .. styles.skill2 .. 'rowspan="' .. v_cnt .. '"|' .. v2 .. styles.cost3 .. 'rowspan="' .. v_cnt .. '"|' .. wikitext(ca.buttons) end end result = result .. skillcell end result = result .. '\n|}' end if gameg == 'childlight' and prop.power ~= then local pelement, peffect if not data.skills[prop.power] then prop.power = noskill(prop.power,gamed) pelement = peffect = else pelement = styles.cost1 .. data.skills[prop.power].element peffect = styles.effect1 .. data.skills[prop.power].effect prop.power = styles.skill .. prop.power end result = result .. styles.table2 .. styles.h .. 'colspan=3|' .. styles.spanc .. 'Power\n|-' .. styles.skill .. 'Power' .. styles.skillc .. 'Type' .. styles.skillc .. 'Effect' .. prop.power .. pelement .. peffect .. '\n|}' end if (gameg == 'desu1' or gameg == 'desu2') and (prop.quote or prop.profile) then result = result .. styles.table2 if prop.quote then result = result .. styles.quote .. 'font-style:italic"|' .. string.gsub(prop.quote, '!!', '‼') end if prop.profile then result = result .. '\n|-' .. styles.quote .. 'font-style:italic"|' .. string.gsub(prop.profile, '!!', '‼') end result = result .. '\n|}' end if game == 'smtsj' and prop.profile then result = result .. styles.table2 .. styles.h .. '|Password' .. styles.quote .. 'font-weight:bold;font-family:Courier New,sans-serif;font-size:1.6em"|' .. prop.profile .. '\n|}' end result = result .. '\n|}' return result

end

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 == 'i' or level == 'I' or level == 'innate' or level == 'default' or level == 'Default' then level = 'Innate' end
   local data = require('Module:Skills/' .. game)
   skill = data.skills[code]
   if not skill then
       alias = data.aliases[code]
       if alias then
           code = alias
           skill = data.skills[code]
       else
           return noskill(code,game)
       end
   end
   if skill.name then code = skill.name end
   local skillcell = styles.skill .. code
   local cost = skill.cost
   if game == 'SMT3' then
       cost = 'Convo'
   elseif skill.cost == 'Interrupt' then
       cost = 'Interrupt'
   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 = 'Invalid parameter 1 of ' .. '"' .. row .. '".' .. cate('Templates with unrecognizable row value for Module:Skills')
   end
   return result

end

return p