The official discord link if you wish to join the discord: https://discord.gg/j5RKwCvAFu

Support the wiki on our official Ko-Fi page or Patreon page!

Module:SMTSkills

From The Codex

Documentation for this module may be created at Module:SMTSkills/doc

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 '<span style="font-size:9px;position:relative;top:2px"><span style="position:relative;top:-5px;right:-3px">' .. numerator .. '</span><span style="position:relative;top:-2px">/</span>' .. denominator .. '</span>'
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"|<span style="color:white">½</span>Dr'
    elseif v == '2dr' or v == '2ab' then
        v = 'color:lime" title="Double Drain"|<span style="color:white">2×</span>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"|<span style="color:white">½</span>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"|<span style="color:white">1.5×</span>Rf'
    elseif v == '2rp' or v == '2rf' then
        v = 'color:cyan" title="Double Reflect"|<span style="color:white">2×</span>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('[[Category:%d★ Demons in %s]]', rarityNumber, gamen)
        else
            return ''
        end
    else
        return string.format('[[Category:%s Demons in %s]]', 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 '[[Category:' .. catename .. ']]'
    else
        return ''
    end
end

local function noskill(skill,gamed)
    local result = '\n|-\n!colspan=5 style="background:#300;width:600px"|<strong style="color:red;font-size:150%">'
    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 .. '.</strong>' .. 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 = '[[Gods|' .. race .. ']]'
        elseif race == 'Evil' or race == 'Icon' then result = '[[Guardians|' .. race .. ']]'
        elseif race == 'Fiend' or race == 'Nether'  then result = '[[Magica|' .. race .. ']]'
        elseif race == 'Aerial' then result = '[[Aerials|' .. race .. ']]'
        elseif race == 'Aerial2' then result = '[[Birds|Aerial]]'
        elseif race == 'Dragon' then result = '[[Dragons|' .. race .. ']]'
        elseif race == 'Demon' or race == 'Brute' then result = '[[Demoniacs|' .. race .. ']]'
        elseif race == 'Beast' then result = '[[Beasts|' .. race .. ']]'
        elseif race == 'Device' then result = '[[Machine|' .. race .. ']]'
        elseif race == 'Light' then result = '[[Herald|' .. 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 = '[[Mitama|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 = '[[Enemy exclusive race#' .. race .. '|' .. 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 .. ' Order|' .. race .. ']]' .. cate(race .. ' Order')
        else result = race
        end
    elseif race == 'Therian' then
        if game == 'mt1' then result = '[[Yoma|Therian]]' .. cate('Yoma Race')
        else result = '[[Therian]]' .. cate('Therian Race')
        end
    elseif race == 'Ghost' then
        if game == 'sh' or game == 'smtds' then
            result = '[[Ghost (race)|Ghost]]' .. cate('Ghost Race')
        else result = '[[Haunt|Ghost]]' .. cate('Haunt Race')
        end
    elseif race == 'Cyber' then
        if game == 'smt4' then
            result = '[[Machine|Cyber]]' .. cate('Machine Race')
        else result = '[[Enemy exclusive race#Denrei / Cyber|Cyber]]'
        end
    elseif race == 'Star 2' then
        result = '[[Triangulum|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 = '<abbr title="' .. abbr .. '">' .. name .. '</abbr>'
                else abbr = name
                end
                if v.exclusive then
                    result = '[[Enemy exclusive race#' .. v.exclusive .. '|' .. abbr .. ']]'
                elseif v.linkdab then
                    result = '[[' .. k .. ' (race)|' .. abbr .. ']]'
                elseif v.link then
                    result = '[[' .. v.link .. '|' .. abbr .. ']]'
                else
                    result = '[[' .. k .. '|' .. 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 = '[[Suit of Coins|Coin]]' .. cate('Coin Arcana')
    elseif arcana == 'Pentacle' then result = '[[Suit of Coins|Pentacle]]' .. cate('Coin Arcana')
    elseif arcana == 'Sword' or arcana == 'Swords' then result = '[[Suit of Swords|Sword]]' .. cate('Sword Arcana')
    elseif arcana == 'Cup' or arcana == 'Cups' then result = '[[Suit of Cups|Cup]]' .. cate('Cup Arcana')
    elseif arcana == 'Wand' or arcana == 'Wands' then result = '[[Suit of Wands|Wand]]' .. cate('Wand Arcana')
    elseif arcana == 'Rod' then result = '[[Suit of Wands|Rod]]' .. cate('Wand Arcana')
    elseif arcana == 'Rumor' then result = '[[Rumor]] [[List of ' .. gamen .. ' Rumors|*]]' .. cate('Rumor Demon')
    elseif arcana == 'Taurus' or arcana == 'Aquarius' or arcana == 'Leo' or arcana == 'Scorpio' or arcana == 'Masquerade' then
        result = '[[Masked Circle|' .. arcana .. ']]' .. cate('Masked Circle')
    elseif arcana == 'Reich' then result = '[[Last Battalion|' .. arcana .. ']]'
    elseif arcana == 'Grave' or arcana == 'Zonbie' or arcana == 'Zombie' then result = '[[Undead|' .. 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 .. ' Arcana|' .. 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 = '<span style="color:#666">--</span>'
        stat = 0
        stat_width = 0
    elseif stat2 then
        stat_st = '<span style="color:#aff;cursor:help" title="' .. old .. ': ' .. stat .. '; ' .. new .. ': ' .. stat2 .. '">' .. stat2 .. '</span>'
    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 = '<span style="color:#666">--</span>' 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"|<div style="overflow:hidden"><div style="cursor:help;float:left;border-top:5px solid ' .. color .. ';width:' .. stat_width .. 'px" title="' .. old .. ': '.. stat ..'"></div><div style="cursor:help;float:left;border-top:5px solid #aff;width:' .. tonumber(stat2) * ratio - stat_width .. 'px" title="' .. new .. ': '.. stat2 ..'"></div></div>\n|-'
    else return stat_st .. '\n|style="border-radius:10px;background-color:#000;background:linear-gradient(90deg, #2c2a46, #000);width:' .. cap * ratio + 3 .. 'px"|<div style="overflow:hidden"><div style="float:left;border-top:5px solid ' .. color .. ';width:' .. stat_width .. 'px"></div><div style="float:left;border-top:5px solid transparent;width:' .. (cap - tonumber(stat)) * ratio .. 'px"></div></div>\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 = '<span style="color:' .. getGames.games[gameg].font .. '">'
    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 .. '|[[Race and species|' .. styles.spanc .. 'Race</span>]]' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|EXP' .. styles.h .. '|[[Macca|' .. styles.spanc .. 'Macca</span>]]' .. styles.h .. '|[[Magnetite|' .. styles.spanc .. 'MAG</span>]]\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 .. '|[[Race and species|' .. styles.spanc .. 'Race</span>]]' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h .. 'title="Cost Point - MAG Cost per 10 steps"|<abbr>CP</abbr>' .. styles.h .. '|[[Macca|' .. styles.spanc .. 'Macca</span>]]\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 .. '|[[Daimakyuu|' .. styles.spanc .. 'Location</span>]]\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 .. '|[[Race and species|' .. styles.spanc .. 'Race</span>]]' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h ..  'title="Cost Point - MAG Cost per 10 Steps"|<abbr>CP</abbr>\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"|<abbr>Formations</abbr>' .. styles.h .. '|[[Magnetite|' .. styles.spanc .. 'MAG]]' .. styles.h .. '|[[Macca|' .. styles.spanc .. 'Macca</span>]]' .. styles.h .. '|[[List of Megami Tensei II Items|' .. styles.spanc .. 'Item Drops</span>]]\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 .. '|[[Race and species|' .. styles.spanc .. 'Race</span>]]' .. 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"|<abbr>CP</abbr>' .. styles.h .. 'title="Number of Attacks"|<abbr>NOA</abbr>' .. styles.h .. '|EXP' .. styles.h .. '|[[Macca|' .. styles.spanc .. 'Macca</span>]]' .. styles.h .. 'title="Magnetite dropped"|[[Magnetite|' .. styles.spanc .. '<abbr>MAG</abbr></span>]]' .. styles.h
        if game == 'kmt1' then result = result .. '|[[Daimakyuu|' .. styles.spanc .. 'Location</span>]]'
        elseif game == 'kmt2' then result = result .. '|[[List of Megami Tensei II Items|' .. styles.spanc .. 'Item Drops</span>]]'
        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 .. '|[[Race and species|' .. styles.spanc .. 'Race</span>]]' .. styles.h .. '|[[Alignment|' .. styles.spanc .. 'Alignment</span>]]' .. 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 .. '|[[Magnetite|' .. styles.spanc .. 'MAG</span>]]'
        else result = result .. 'title="Cost Point - MAG Cost per 10 steps"|<abbr>CP</abbr>'
        end
        result = result .. styles.h .. 'title="Number of Attacks"|<abbr>NOA</abbr>' .. 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"|<abbr>CP</abbr>'
        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 .. '|[[Race and species|' .. styles.spanc .. 'Race</span>]]' .. styles.h .. '|[[Alignment|' .. styles.spanc .. 'Alignment</span>]]' .. 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 = '|[[Magnetite|' .. styles.spanc .. 'MAG</span>]]'
            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"|<abbr>NOA</abbr>' .. 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 and species|<span style="color:#fff">Race</span>]]' .. bossdemoncat(prop.boss,gamen) .. styles.h .. 'width=9%|Level' .. styles.h .. 'width=9%|<span style="color:' .. getGames.games[gameg].hp .. '">HP</span>' .. styles.h .. 'width=9%|<span style="color:' .. getGames.games[gameg].mp .. '">MP</span>'
        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 .. '<div style="position:relative;top:-4px;border:2.5px outset ' .. getGames.games[gameg].hp2 .. ';border-radius:3px"></div>' .. styles.statlow .. prop.mp .. '<div style="position:relative;top:-4px;border:2.5px outset ' .. getGames.games[gameg].mp2 .. ';border-radius:3px"></div>'
        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 .. '|[[Race and species|' .. styles.spanc .. 'Race</span>]]' .. styles.h .. '|[[Alignment|' .. styles.spanc .. 'Alignment</span>]]' .. 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"|<abbr>Close</abbr>' .. styles.h .. 'title="Long Range"|<abbr>Long</abbr>' .. 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 .. '|[[Race and species|' .. styles.spanc .. 'Race</span>]]' .. styles.h .. '|[[Alignment|' .. styles.spanc .. 'Alignment</span>]]'  .. styles.h .. '|Level' .. styles.h .. 'width=7%|<span style="color:' .. getGames.games[gameg].hp .. '">HP</span>' .. styles.h .. 'width=7%|<span style="color:' .. getGames.games[gameg].mp .. '">MP</span>' .. 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 .. '<div style="position:relative;top:-4px;border:2.5px outset #ddbf77;border-radius:3px"></div>' .. styles.statlow .. prop.mp .. '<div style="position:relative;top:-4px;border:2.5px outset #85bd64;border-radius:3px"></div>' .. '\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 and species|<span style="color:#fff">Race</span>]]' .. styles.h .. 'width=45px|<span style="color:' .. getGames.games[gameg].font2 .. '">Level</span>' .. styles.h .. 'width=45px|<span style="color:' .. getGames.games[gameg].hp .. '">HP</span>' .. styles.h .. 'width=45px|<span style="color:' .. getGames.games[gameg].mp .. '">MP</span>' .. 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"|[[File:PhysIcon_SMTIV.png|alt=Physical|Physical|link=Physical Skills]] Phys' .. styles.h .. 'width=12.5% title="Gun"|[[File:GunIcon2.png|alt=Gun|Gun|link=Gun Skills]] Gun' .. styles.h .. 'width=12.5% title="Fire"|[[File:FireIcon_SMTIV.png|alt=Fire|Fire|link=Fire Skills]] Fire' .. styles.h .. 'width=12.5% title="Ice"|[[File:IceIcon_SMTIV.png|alt=Ice|Ice|link=Ice Skills]] Ice' .. styles.h .. 'width=12.5% title="Electricity"|[[File:ElecIcon_SMTIV.png|alt=Electricity|Electricity|link=Electric Skills]] Elec' .. styles.h .. 'width=12.5% title="Force"|[[File:ForceIcon.png|alt=Force|Force|link=Wind Skills]] Force' .. styles.h .. 'width=12.5% title="Light"|[[File:ExpelIcon_SMTIV.png|alt=Light|Light|link=Expel Skills]] Light' .. styles.h .. 'width=12.5% title="Dark"|[[File:CurseIcon_SMTIV.png|alt=Dark|Dark|link=Death Skills]] 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"|<abbr>'
        if prop.almres ~= '' then result = result .. 'Other' else result = result .. 'Ailment' end
        result = result .. ' Resistance</abbr>' .. 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|[[Press Turn|' .. styles.spanc .. 'Turn Icon</span>]]' .. 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|[[Challenge Quests|' .. styles.spanc .. 'Required quest</span>]]' .. styles.order .. prop.requiredquest
            elseif prop.relatedquest then
                result = result .. styles.h .. 'width=100px|[[Challenge Quests|' .. styles.spanc .. 'Related quest</span>]]' .. styles.order .. prop.relatedquest
            end
            if prop.normal then result = result .. styles.h .. 'width=70px|[[List of ' .. gamegn .. ' Items|' .. styles.spanc .. 'Drop</span>]]' .. 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|[[Evolution#' .. gamegn .. '|' .. styles.spanc .. 'Evolved from</span>]]' .. styles.order .. prop.evolvef .. ' (' .. prop.evolvefl .. ')' end
            if prop.evolvet then result = result .. styles.h .. 'width=100px|[[Evolution#' .. gamegn .. '|' .. styles.spanc .. 'Evolves into</span>]]' .. 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|<span style="color:#000">Skill Affinities</span>]]' .. 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'] = '[[File:PhysIcon_SMTIV.png|alt=Physical|Physical|link=Physical Skills]] Physical',
                            ['gun'] = '[[File:GunIcon2.png|alt=Gun|Gun|link=Gun Skills]] Gun',
                            ['fire'] = '[[File:FireIcon_SMTIV.png|alt=Fire|Fire|link=Fire Skills]] Fire',
                            ['ice'] = '[[File:IceIcon_SMTIV.png|alt=Ice|Ice|link=Ice Skills]] Ice',
                            ['elec'] = '[[File:ElecIcon_SMTIV.png|alt=Electricity|Electricity|link=Electric Skills]] Electricity',
                            ['force'] = '[[File:ForceIcon.png|alt=Force|Force|link=Wind Skills]] Force',
                            ['light'] = '[[File:ExpelIcon_SMTIV.png|alt=Light|Light|link=Expel Skills]] Light',
                            ['dark'] = '[[File:CurseIcon_SMTIV.png|alt=Dark|Dark|link=Death Skills]] Dark',
                            ['almighty'] = '[[File:AlmightyIcon_SMTIV.png|alt=Almighty|Almighty|link=Almighty Skills]] Almighty',
                            ['ailment'] = '[[File:AilmentIcon_SMTIV.png|alt=Ailment|Ailment|link=Ailment Skills]] Ailment',
                            ['heal'] = '[[File:HealIcon_SMTIV.png|alt=Healing|Healing|link=Healing Skills]] Healing',
                            ['support'] = '[[File:SupportIcon_SMTIV.png|alt=Support|Support|link=Support Skills]] Support',
                        }
                        result = result .. '<span style="white-space:nowrap">' .. prop.skilltypes[v2:lower()]
                    elseif (k2 % 2 == 0) then -- modifier
                        if string.sub(v2,1,1) == '+' then
                            result = result .. ' <span style="color:#5f5">' .. v2 .. '</span></span>'
                        else
                            result = result .. ' <span style="color:#f55">' .. v2 .. '</span></span>'
                        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 .. '<br/>'
                            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 and species|<span style="color:#fff">Race</span>]]' .. styles.h .. 'width=45px|<span style="color:' .. getGames.games[gameg].font2 .. '">Level</span>' .. styles.h .. 'width=45px|<span style="color:' .. getGames.games[gameg].hp .. '">HP</span>' .. styles.h .. 'width=45px|<span style="color:' .. getGames.games[gameg].mp .. '">MP</span>' .. 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"|[[File:PhysIcon_SMTV.png|24px|alt=Physical|Physical|link=Physical Skills]] [[Physical Skills|<span style="color:white">Phys</span>]]' .. styles.h .. 'width=14.2% title="Fire"|[[File:FireIcon_SMTV.png|24px|alt=Fire|Fire|link=Fire Skills]] [[Fire Skills|<span style="color:white">Fire</span>]]' .. styles.h .. 'width=14.2% title="Ice"|[[File:IceIcon_SMTV.png|24px|Ice|link=Ice Skills]] [[Ice Skills|<span style="color:white">Ice</span>]]' .. styles.h .. 'width=14.2% title="Electricity"|[[File:ElecIcon_SMTV.png|24px|alt=Electricity|Electricity|link=Electric Skills]] [[Electric Skills|<span style="color:white">Elec</span>]]' .. styles.h .. 'width=14.2% title="Force"|[[File:ForceIcon_SMTV.png|24px|alt=Force|Force|link=Force Skills]] [[Force Skills|<span style="color:white">Force</span>]]' .. styles.h .. 'width=14.2% title="Light"|[[File:LightIcon_SMTV.png|24px|alt=Light|Light|link=Light Skills (Affinity)]] [[Light Skills (Affinity)|<span style="color:white">Light</span>]]' .. styles.h .. 'width=14.2% title="Dark"|[[File:DarkIcon_SMTV.png|24px|Dark|link=Dark Skills (Affinity)]] [[Dark Skills (Affinity)|<span style="color:white">Dark</span>]]\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"|<abbr>'
        if prop.almres ~= '' then result = result .. 'Other' else result = result .. 'Ailment' end
        result = result .. ' Resistance</abbr>' .. styles.order .. prop.almres .. prop.res .. '\n|}'
        if prop.turnicon then result = result .. styles.table2 .. styles.h .. 'width=70px|[[Press Turn|' .. styles.spanc .. 'Turn Icon</span>]]' .. 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|[[Challenge Quests|' .. styles.spanc .. 'Required quest</span>]]' .. styles.order .. prop.requiredquest
            elseif prop.relatedquest then
                result = result .. styles.h .. 'width=100px|[[Challenge Quests|' .. styles.spanc .. 'Related quest</span>]]' .. styles.order .. prop.relatedquest
            end
            if prop.normal then result = result .. styles.h .. 'width=70px|[[List of ' .. gamegn .. ' Items|' .. styles.spanc .. 'Drop</span>]]' .. 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|[[Skill Affinities|' .. styles.spanc .. 'Skill Potential</span>]]'
            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] = ' <span style="color:#5f5">' .. v2 .. '</span></span>'
                        else
                            prop.skilltypes[restemp] = ' <span style="color:#f55">' .. v2 .. '</span></span>'
                        end
                    end
                end
            end
            result = result .. styles.table2 .. styles.cost3 .. 'width=10% title="Physical"|[[File:PhysIcon_SMTV.png|24px|alt=Physical|Physical|link=Physical Skills]]<br>[[Physical Skills|<span style="color:white">Phys</span>]]' .. styles.cost3 .. 'width=9% title="Fire"|[[File:FireIcon_SMTV.png|24px|alt=Fire|Fire|link=Fire Skills]]<br>[[Fire Skills|<span style="color:white">Fire</span>]]' .. styles.cost3 .. 'width=9% title="Ice"|[[File:IceIcon_SMTV.png|24px|alt=Ice|Ice|link=Ice Skills]] <br>[[Ice Skills|<span style="color:white">Ice</span>]]' .. styles.cost3 .. 'width=9% title="Electricity"|[[File:ElecIcon_SMTV.png|24px|alt=Electricity|Electricity|link=Electric Skills]]<br>[[Electric Skills|<span style="color:white">Elec</span>]]' .. styles.cost3 .. 'width=9% title="Force"|[[File:ForceIcon_SMTV.png|24px|alt=Force|Force|link=Force Skills]]<br>[[Force Skills|<span style="color:white">Force</span>]]' .. styles.cost3 .. 'width=9% title="Light"|[[File:LightIcon_SMTV.png|24px|alt=Light|Light|link=Light Skills (Affinity)]]<br>[[Light Skills (Affinity)|<span style="color:white">Light</span>]]' .. styles.cost3 .. 'width=9% title="Dark"|[[File:DarkIcon_SMTV.png|24px|alt=Dark|Dark|link=Dark Skills (Affinity)]]<br>[[Dark Skills (Affinity)|<span style="color:white">Dark</span>]]' .. styles.cost3 .. 'width=9% title="Almighty"|[[File:AlmightyIcon_SMTV.png|24px|alt=Almighty|Almighty|link=Almighty Skills]]<br>[[Almighty Skills|<span style="color:white">Almi.</span>]]' .. styles.cost3 .. 'width=9% title="Ailment"|[[File:AilmentIcon_SMTV.png|24px|alt=Ailment|Ailment|link=Ailment Skills]]<br>[[Ailment Skills|<span style="color:white">Ailm.</span>]]' .. styles.cost3 .. 'width=9% title="Healing"|[[File:HealIcon_SMTV.png|24px|alt=Healing|Healing|link=Healing Skills]]<br>[[Healing Skills|<span style="color:white">Heal.</span>]]' .. styles.cost3 .. 'width=9% title="Support"|[[File:SupportIcon_SMTV.png|24px|alt=Support|Support|link=Support Skills]]<br>[[Support Skills|<span style="color:white">Supp.</span>]]\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 and species|<span style="color:#fff">Race</span>]]' .. styles.h .. 'width=45px|<span style"color:' .. getGames.games[gameg].font .. '">Rarity</span>' .. styles.h .. '"width=45px|<span style="color:' .. getGames.games[gameg].font .. '">Grade</span>' .. styles.h .. 'width=45px|<span style="color:' .. getGames.games[gameg].hp .. '">HP</span>' .. styles.bart11 .. '324px' .. styles.bart12 .. '0.8"' .. '\n|+<span style="font-weight:bold">6★ Stats</span>' .. 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 .. '[https://dx2wiki.com/index.php/' .. 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"|[[File:SMT_Dx2_Physical_Skill_Icon.png|24px|alt=Physical|Physical|link=Physical Skills]] [[Physical Skills|<span style="color:white">Phys</span>]]' .. styles.h .. 'width=14.2% title="Fire"|[[File:SMT_Dx2_Fire_Skill_Icon.png|24px|alt=Fire|Fire|link=Fire Skills]] [[Fire Skills|<span style="color:white">Fire</span>]]' .. styles.h .. 'width=14.2% title="Ice"|[[File:SMT_Dx2_Ice_Skill_Icon.png|24px|Ice|link=Ice Skills]] [[Ice Skills|<span style="color:white">Ice</span>]]' .. styles.h .. 'width=14.2% title="Electricity"|[[File:SMT_Dx2_Electricity_Skill_Icon.png|24px|alt=Electricity|Electricity|link=Electric Skills]] [[Electric Skills|<span style="color:white">Elec</span>]]' .. styles.h .. 'width=14.2% title="Force"|[[File:SMT_Dx2_Force_Skill_Icon.png|24px|alt=Force|Force|link=Force Skills]] [[Force Skills|<span style="color:white">Force</span>]]' .. styles.h .. 'width=14.2% title="Light"|[[File:SMT_Dx2_Light_Skill_Icon.png|24px|alt=Light|Light|link=Light Skills (Affinity)]] [[Light Skills (Affinity)|<span style="color:white">Light</span>]]' .. styles.h .. 'width=14.2% title="Dark"|[[File:SMT_Dx2_Dark_Skill_Icon.png|24px|Dark|link=Dark Skills (Affinity)]] [[Dark Skills (Affinity)|<span style="color:white">Dark</span>]]\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|[[List of ' .. gamegn .. ' Items|' .. styles.spanc .. 'Equipment</span>]]' .. 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 .. '|[[Race and species|' .. styles.spanc .. 'Race</span>]]' .. styles.h .. '|Rank' .. styles.h .. '|HP' .. styles.h .. '|PP' .. styles.h .. '|Move' .. styles.h .. '|Power' .. styles.h .. 'title="Defensive Power"|<abbr>Might</abbr>' .. 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|[[List of ' .. gamegn .. ' Items|' .. styles.spanc .. 'Weapon</span>]]' .. 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|[[List of ' .. gamegn .. ' Skills#Techniques|' .. styles.spanc .. 'Technique</span>]]' .. 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 .. '|[[Race and species|' .. styles.spanc .. 'Race</span>]]' .. 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"|<abbr>CP</abbr>'
        elseif gameg == 'majin2' then result = result .. '|Atk Range' .. styles.h .. '|[[Magnetite|' .. 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 .. '|[[Race and species|' .. styles.spanc .. 'Race</span>]]' .. 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"|<abbr>CP</abbr>' .. styles.h end
        if gameg == 'smtds' then result = result .. 'title="Number of Attacks"|<abbr>NOA</abbr>' .. 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 .. '|[[Personality|' .. styles.spanc .. 'Personality<span>]]' .. 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 and species|<span style="color:#fff">Race</span>]]' .. styles.h .. 'width=45px|<span style="color:' .. getGames.games[gameg].font2 .. '">Level</span>' .. styles.h .. 'width=45px|<span style="color:' .. getGames.games[gameg].hp .. '">HP</span>' .. styles.h .. 'width=45px|<span style="color:' .. getGames.games[gameg].mp .. '">MP</span>' .. 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"|[[File:SH2_Physical.png|24px|alt=Physical|Physical|link=Physical Skills]] [[Physical Skills|<span style="color:#fff">Phys</span>]]' .. styles.h .. 'width=12.5% title="Gunfire"|[[File:SH2_Gun.png|24px|alt=Gun|Gun|link=Gun Skills]] [[Gun Skills|<span style="color:#fff">Gun.</span>]]' .. styles.h .. 'width=12.5% title="Fire"|[[File:SH2_Fire.png|24px|alt=Fire|Fire|link=Fire Skills]] [[Fire Skills|<span style="color:#fff">Fire</span>]]' .. styles.h .. 'width=12.5% title="Ice"|[[File:SH2_Ice.png|24px|Ice|link=Ice Skills]] [[Ice Skills|<span style="color:#fff">Ice</span>]]' .. styles.h .. 'width=12.5% title="Electricity"|[[File:SH2_Elec.png|24px|alt=Electricity|Electricity|link=Electric Skills]] [[Electric Skills|<span style="color:#fff">Elec</span>]]' .. styles.h .. 'width=12.5% title="Force"|[[File:SH2_Force.png|24px|alt=Force|Force|link=Force Skills]] [[Force Skills|<span style="color:#fff">Force</span>]]' .. styles.h .. 'width=12.5% title="Ruin"|[[File:SH2_Ailment.png|24px|alt=Ruin|Ruin|link=Ailment Skills]] [[Ailment Skills|<span style="color:#fff">Ruin</span>]]' .. styles.h .. 'width=12.5% title="Almighty"|[[File:SH2_Almighty.png|24px|Almighty|link=Almighty Skills]] [[Almighty Skills|<span style="color:#fff">Almi.</span>]]\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|[[Gift|' .. styles.spanc .. 'Gift</span>]]' .. 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 = '<span style="color:#f22">' .. prop.weak .. '</span>'
            else prop.weak = '<span style="color:#f72">' .. prop.weak .. '</span>'
            end
        end
        if not prop.frail then prop.frail = '-' else prop.frail = '<span style="color:#f22">' .. prop.frail .. '</span>' end
        result = result .. styles.table2 .. styles.h .. '|[[List of ' .. gamegn .. ' Demons|' .. styles.spanc .. 'Order</span>]]' .. 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"|<abbr>Conversation</abbr>'
            end
        end
        if prop.boss == nil then
            result = result .. styles.h .. 'title="Demon' .. "'s" .. ' Investigation Skill"|<abbr>Investigation</abbr>'
        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."|<abbr>Weak</abbr>' .. styles.h .. 'title="Unit will be staggered by the said element(s). Whether the element does extra damage or not varies."|<abbr>Frail</abbr>\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 .. '|[[Race and species|' .. styles.spanc .. 'Race</span>]]' .. styles.h .. '|Alignment' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|MP' .. styles.h .. 'title="Cost Point. Magnetite per 10 steps"|<abbr>CP</abbr>' .. styles.h .. '|[[Equip Type|' .. styles.spanc .. 'Equip Type</span>]]\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 = '|<span style="color:#aff;cursor:help" title="Values of PSX and PSP versions differ.">Vitality</span>' .. 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 = '|<span style="color:#aff;cursor:help" title="Values of PSX and PSP versions differ.">Dexterity</span>' .. 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 .. '|[[Race and species|' .. styles.spanc .. 'Order</span>]]' .. styles.h .. '|Type' .. styles.h .. '|Subtype' .. styles.h .. '|Level' .. styles.h .. '|HP' .. styles.h .. '|SP'
            if prop.normal then result = result .. styles.h .. '|[[List of ' .. gamen .. ' Items|' .. styles.spanc .. 'Drops</span>]]' 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|[[Personality|' .. styles.spanc .. 'Traits</span>]]' .. styles.order .. prop.traits end
                if prop.convo then result = result .. styles.h .. 'width=50px|[[Special conversation|' .. styles.spanc .. '<abbr title="If equipped with the listed Persona, there is a chance it will talk to this demon if encountered.">Ptalk</abbr>]]' .. 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 .. '|[[Arcana|' .. styles.spanc .. 'Arcana</span>]]' .. styles.h .. '|Type' .. styles.h .. '|Subtype' .. styles.h .. '|Level' .. styles.h .. '|SP cost'
            if prop.totem then result = result .. styles.h .. '|[[Totem|' .. styles.spanc .. 'Totem</span>]]' end
            if prop.preturn then result = result .. styles.h .. '|[[Mystic Change|' .. styles.spanc .. 'Returns</span>]] [[List of ' .. gamen .. ' Items|' .. styles.spanc .. '°</span>]]' 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"|[[Affinity (Persona)|' .. styles.spanc .. '<abbr>Affinity</abbr></span>]]' .. styles.order .. args.Affinity end
                    if prop.convo then result = result .. styles.h .. 'width=50px|[[Special conversation|' .. styles.spanc .. '<abbr title="If equipped with this Persona, there is a chance it will talk to listed demon if encountered.">Ptalk</abbr>]]' .. 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 .. '|[[Arcana|' .. styles.spanc .. 'Arcana</span>]]'
        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 .. '|[[List of ' .. gamen .. ' Items|' .. 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 .. '|[[Mystic Change|' .. styles.spanc .. 'Returns</span>]] ' .. '[[List of ' .. gamen .. ' Items|' .. styles.spanc .. '°</span>]]' .. '\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 .. '|[[Arcana|' .. styles.spanc .. 'Arcana</span>]]'
        end
        result = result .. styles.h .. 'width="50px"|[[Level (stat)|' .. styles.spanc .. 'Level</span>]]'
        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|<span style="color:#fff">Stagger Gauge</span>]]' end
        if prop.traits then result = result .. styles.h .. '|[[Personality|<span style="color:#fff">Type</span>]]' 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 .. '<div style="position:relative;top:-4px;border:2.5px solid ' .. getGames.games[gameg].hp2 .. '"></div>' end
        if prop.mp then result = result .. styles.statlow .. prop.mp .. '<div style="position:relative;top:-4px;border:2.5px solid ' .. getGames.games[gameg].mp2 .. '"></div>' end
        if prop.maxhp then result = result .. styles.statlow .. prop.maxhp .. '<div style="position:relative;top:-4px;border:2.5px solid ' .. getGames.games[gameg].hp2 .. '"></div>' end
        if prop.maxmp then result = result .. styles.statlow .. prop.maxmp .. '<div style="position:relative;top:-4px;border:2.5px solid ' .. getGames.games[gameg].mp2 .. '"></div>' 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 .. '<abbr title="' .. prop.condition .. '">' .. prop.dropc .. '</abbr>'
            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 .. '|[[Arcana|' .. styles.spanc .. 'Arcana</span>]]' .. 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 .. '|[[Skill Card|' .. styles.spanc .. 'Extract</span>]]' .. styles.h .. '|[[Sacrificial fusion|' .. 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 .. '|[[Arcana|' .. styles.spanc .. 'Arcana</span>]]' .. 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 .. '|[[Skill Card|' .. styles.spanc .. 'Extract</span>]]\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 .. '|[[Arcana|' .. styles.spanc .. 'Arcana</span>]]' .. 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 .. '|[[Race and species|' .. styles.spanc .. 'Race</span>]]' .. 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 .. '|[[Race and species|' .. styles.spanc .. 'Race</span>]]' .. 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 .. '|[[Race and species|' .. styles.spanc .. 'Race</span>]]' .. 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 .. '<div style="position:relative;top:-4px;border:2.5px outset ' .. getGames.games[gameg].hp2 .. ';border-radius:3px"></div>' .. styles.statlow .. prop.mp .. '<div style="position:relative;top:-4px;border:2.5px outset ' .. getGames.games[gameg].mp2 .. ';border-radius:3px"></div>\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 .. '|[[Race and species|' .. 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 .. '|[[Race and species|' .. 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 .. '|[[Race and species|' .. 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 = '<abbr title="' .. data.skills[prop.spell].effect .. '">' .. prop.spell .. '</abbr>'
            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"|[[File:PhysIcon.png|alt=Physical|Physical|link=Physical Skills]]' .. styles.h .. 'width=7% title="Gun"|[[File:GunIcon.png|alt=Gun|Gun|link=Gun Skills]]' .. styles.h .. 'width=7% title="Fire"|[[File:FireIcon.png|alt=Fire|Fire|link=Fire Skills]]' .. styles.h .. 'width=7% title="Ice"|[[File:IceIcon.png|alt=Ice|Ice|link=Ice Skills]]' .. styles.h .. 'width=7% title="Electricity"|[[File:ElecIcon.png|alt=Electricity|Electricity|link=Electric Skills]]' .. styles.h .. 'width=7% title="Wind"|[[File:WindIcon.png|alt=Wind|Wind|link=Wind Skills]]' .. styles.h .. 'width=7% title="Expel"|[[File:ExpelIcon.png|alt=Expel|Expel|link=Expel Skills]]' .. styles.h .. 'width=7% title="Curse"|[[File:CurseIcon.png|alt=Curse|Curse|link=Death Skills]]' .. styles.h .. 'width=7% title="Almighty"|[[File:AlmightyIcon.png|alt=Almighty|Almighty|link=Almighty Skills]]\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 .. '|[[Racial Skill|' .. styles.spanc .. 'Racial</span>]] / [[Auto Skill|' .. styles.spanc .. 'Auto]] Skill' .. styles.h .. 'width=12% title="Physical"|[[File:PhysIcon.png|alt=Physical|Physical|link=Physical Skills]] Phys' .. styles.h .. 'width=12% title="Fire"|[[File:FireIcon.png|alt=Fire|Fire|link=Fire Skills]] Fire' .. styles.h .. 'width=12% title="Ice"|[[File:IceIcon.png|alt=Ice|Ice|link=Ice Skills]] Ice' .. styles.h .. 'width=12% title="Electricity"|[[File:ElecIcon.png|alt=Electricity|Electricity|link=Electric Skills]] Elec' .. styles.h .. 'width=12% title="Force"|[[File:ForceIcon.png|alt=Force|Force|link=Force Skills]] Force' .. styles.h .. 'width=12% title='
        if gameg == 'desu1' then
            result = result .. '"Mystic"|[[File:Curse DESU2.png|alt=Mystic|Mystic|link=Curse Skills]] Mystic'
        elseif gameg == 'desu2' then
            result = result .. '"Curse"|[[File:Curse DESU2.png|alt=Curse|Curse|link=Curse Skills]] 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%|[[Slash Skills|' .. styles.spanc .. 'Slash</span>]]' .. styles.h .. 'width=11%|[[Strike Skills|' .. styles.spanc .. 'Strike</span>]]' .. styles.h .. 'width=11%|[[Ranged Skills|' .. styles.spanc .. 'Ranged</span>]]' .. styles.h .. 'width=11%|[[Fire Skills|' .. styles.spanc .. 'Fire</span>]]' .. styles.h .. 'width=11%|[[Ice Skills|' .. styles.spanc .. 'Ice</span>]]' .. styles.h .. 'title="Electricity" width=11%|[[Electricity Skills|' .. styles.spanc .. 'Elec</span>]]' .. styles.h .. 'width=11%|[[Light Skills|' .. styles.spanc .. 'Light</span>]]' .. styles.h .. 'width=11%|[[Dark Skills|' .. styles.spanc .. 'Dark</span>]]' .. styles.h .. 'title="Almighty" width=12%|[[Almighty Skills|' .. styles.spanc .. 'Almi</span>]]' .. '\n|-\n'
            elseif (gameg == 'p3' or gameg == 'p3re') then result = result .. styles.h .. 'width=10%|[[Slash Skills|' .. styles.spanc .. 'Slash</span>]]' .. styles.h .. 'width=10%|[[Strike Skills|' .. styles.spanc .. 'Strike</span>]]' .. styles.h .. 'width=10%|[[Pierce Skills|' .. styles.spanc .. 'Pierce</span>]]' .. styles.h .. 'width=10%|[[Fire Skills|' .. styles.spanc .. 'Fire</span>]]' .. styles.h .. 'width=10%|[[Ice Skills|' .. styles.spanc .. 'Ice</span>]]' .. styles.h .. 'title="Electricity" width=10%|[[Electricity Skills|' .. styles.spanc .. 'Elec</span>]]' .. styles.h .. 'width=10%|[[Wind Skills|' .. styles.spanc .. 'Wind</span>]]' .. styles.h .. 'width=10%|[[Light Skills (Affinity)|' .. styles.spanc .. 'Light</span>]]' .. styles.h .. 'width=10%|[[Dark Skills (Affinity)|' .. styles.spanc .. 'Dark</span>]]' .. styles.h .. 'title="Almighty" width=10%|[[Almighty Skills|' .. styles.spanc .. 'Almi</span>]]' .. '\n|-\n'
            elseif gameg == 'p4' then result = result .. styles.h .. 'title="Physical" width=14%|[[Physical Skills|' .. styles.spanc .. 'Phys</span>]]' .. styles.h .. 'width=12%|[[Fire Skills|' .. styles.spanc .. 'Fire</span>]]' .. styles.h .. 'width=12%|[[Ice Skills|' .. styles.spanc .. 'Ice</span>]]' .. styles.h .. 'title="Electricity" width=12%|[[Electricity Skills|' .. styles.spanc .. 'Elec</span>]]' .. styles.h .. 'width=12%|[[Wind Skills|' .. styles.spanc .. 'Wind</span>]]' .. styles.h .. 'width=12%|[[Light Skills (Affinity)|' .. styles.spanc .. 'Light</span>]]' .. styles.h .. 'width=12%|[[Dark Skills (Affinity)|' .. styles.spanc .. 'Dark</span>]]' .. styles.h .. 'title="Almighty" width=14%|[[Almighty Skills|' .. styles.spanc .. 'Almi</span>]]' .. '\n|-\n'
            elseif gameg == 'p5' or gameg == 'p5r' or gameg == 'p5s' then result = result .. styles.h .. 'title="Physical" width=9%|[[Physical Skills|' .. styles.spanc .. 'Phys</span>]]' .. styles.h .. 'width=9%|[[Gun Skills|' .. styles.spanc .. 'Gun</span>]]' .. styles.h .. 'width=9%|[[Fire Skills|' .. styles.spanc .. 'Fire</span>]]' .. styles.h .. 'width=9%|[[Ice Skills|' .. styles.spanc .. 'Ice</span>]]' .. styles.h .. 'title="Electricity" width=9%|[[Electricity Skills|' .. styles.spanc .. 'Elec</span>]]' .. styles.h .. 'width=9%|[[Wind Skills|' .. styles.spanc .. 'Wind</span>]]' .. styles.h .. 'title="Psychokinesis" widht=9%|[[Psychokinesis Skills|' .. styles.spanc .. 'Psy</span>]]' .. styles.h .. 'title="Nuclear" width=9%|[[Nuclear Skills|' .. styles.spanc .. 'Nuke</span>]]' .. styles.h .. 'width=9%|[[Light Skills (Affinity)|' .. styles.spanc .. 'Bless</span>]]' .. styles.h .. 'width=9%|[[Dark Skills (Affinity)|' .. styles.spanc .. 'Curse</span>]]' .. styles.h .. 'title="Almighty" width=10%|[[Almighty Skills|' .. styles.spanc .. 'Almi</span>]]' .. '\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 = '<span style="color:#f22">' .. prop.weak .. '</span>' end
            result = result .. styles.h .. '|[[Skill Inheritance|' .. styles.spanc .. 'Inherit</span>]]' .. 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|[[Personality|' .. styles.spanc .. 'Traits</span>]]' .. styles.order .. prop.traits
        end
        if prop.convo then
            result = result .. styles.h .. 'width=50px|[[Special conversation|' .. styles.spanc .. '<abbr style="border-bottom:1px dotted black;" title="if equipped with this Persona, there is a chance it will talk to this demon if encountered">Ptalk</abbr>]]' .. 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|[[Skill Card|' .. styles.spanc .. 'Skill Card</span>]]' .. styles.order .. '<abbr title="Portable only">' .. prop.card .. '</abbr>'
        end
        if prop.preturn then
            result = result .. styles.h .. 'width=100px|[[Heart Item|' .. styles.spanc .. 'Heart Item</span>]]' .. styles.order .. prop.preturn
        end
        if prop.normal then
            result = result .. styles.h .. 'width=100px|[[Battle Drops|' .. styles.spanc .. 'Battle Drop</span>]]' .. 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|[[Theurgy|' .. styles.spanc .. 'Gauge Condition</span>]]' .. 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) .. '"|[[Theurgy|' .. styles.spanc .. 'Characteristics</span>]]' .. 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 .. '<span style="font-weight:bold;color:red">Invalid Theurgy name of "' .. traitName .. '". You may correct the Theurgy name or modify [[Module:Skills/' .. gamed .. ']] if needed</span>'
                else
                    result = result .. '<span style="font-weight:bold">' .. traitName .. ':</span> ' .. traitEffect
                    if traitType then
                        result = result .. '<div style="float:right;background:#696969;border-radius:15px;padding:0 10px">' .. traitType .. '</div>'
                    end
                end
            end
            result = result .. '\n|}'
        else
            result = result .. styles.table2
            result = result .. styles.h .. 'width=100px|[[Theurgy|' .. styles.spanc .. 'Characteristics</span>]]' .. 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 .. '<span style="font-weight:bold;color:red">Invalid Theurgy name of "' .. traitName .. '". You may correct the Theurgy name or modify [[Module:Skills/' .. gamed .. ']] if needed</span>'
            else
                result = result .. '<span style="font-weight:bold">' .. traitName .. ':</span> ' .. traitEffect
                if traitType then
                    result = result .. '<div style="float:right;background:#696969;border-radius:15px;padding:0 10px">' .. traitType .. '</div>'
                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 .. '|[[List of ' .. gamegn .. ' Items|' .. styles.spanc .. 'Normal Drop</span>]]' .. styles.h .. '|[[List of ' .. gamegn .. ' Items|' .. styles.spanc .. 'Rare Drop</span>]]' .. '\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) .. '"|[[Persona Traits|' .. styles.spanc .. 'Persona Trait</span>]]' .. 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 .. '<span style="font-weight:bold;color:red">Invalid trait name of "' .. v .. '". You may correct the trait name or modify [[Module:Skills/' .. gamed .. ']] if needed</span>'
                else
                    if ptrait.exclusive then
                        result = result .. '<span style="font-weight:bold"><abbr title="' .. ptrait.exclusive .. '">' .. v .. '</abbr>:</span> ' .. ptrait.effect
                    else
                        result = result .. '<span style="font-weight:bold">' .. v .. ':</span> ' .. ptrait.effect
                    end
                end
            end
            result = result .. '\n|}'
        else
            result = result .. styles.table2
            result = result .. styles.h .. 'width=100px|[[Persona Traits|' .. styles.spanc .. 'Persona Trait</span>]]' .. styles.order
            local ptrait = data.traits[prop.ptraits]
            if not ptrait then result = result .. '<span style="font-weight:bold;color:red">Invalid trait name of "' .. prop.ptraits .. '". You may correct the trait name or modify [[Module:Skills/' .. gamed .. ']] if needed</span>'
            else
                if ptrait.exclusive then
                    result = result .. '<span style="font-weight:bold"><abbr title="' .. ptrait.exclusive .. '">' .. prop.ptraits .. '</abbr>:</span> ' .. ptrait.effect
                else
                    result = result .. '<span style="font-weight:bold">' .. prop.ptraits .. ':</span> ' .. 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 .. '|[[Battle Drops|' .. styles.spanc .. 'Battle Drop</span>]]' .. styles.h .. 'colspan=' .. cnt_drops .. '|[[Negotiation|' .. styles.spanc .. 'Negotiation Items</span>]]' .. '\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 .. ' ([[Skill Card|' .. styles.spanc .. 'Skill Card</span>]])' 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 .. '|[[Battle Drops|' .. styles.spanc .. 'Battle Drop</span>]]' .. '\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|[[List of ' .. gamegn .. ' Items|' .. styles.spanc .. 'Drop</span>]]' .. 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|[[List of ' .. gamegn .. ' Items|' .. styles.spanc .. 'Drop</span>]]' .. 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|[[List of ' .. gamegn .. ' Items|' .. styles.spanc .. 'Drop</span>]]' .. 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|[[Moon Phase System#Shin Megami Tensei II|' .. styles.spanc .. '<abbr title="Moon Phase Affinity Type">Moon Aff</abbr>]]' .. 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 .. '[http://megaten.sesshou.com/wiki/index.php/' .. 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"|<abbr title="1-handed Sword">1h</abbr>' .. styles.h .. 'title="Weapons"|<abbr title="2-handed Sword">2h</abbr>' .. styles.h .. 'title="Weapons"|<abbr title="Spear">Sp</abbr>' .. styles.h .. 'title="Weapons"|<abbr title="Axe">Ax</abbr>' .. styles.h .. 'title="Weapons"|<abbr title="Whip">Wp</abbr>' .. styles.h .. 'title="Weapons"|<abbr title="Thrown">Th</abbr>' .. styles.h .. 'title="Weapons"|<abbr title="Arrows">Ar</abbr>' .. styles.h .. 'title="Weapons"|<abbr title="Fist">Fs</abbr>' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|<abbr title="Handgun">HG</abbr>' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|<abbr title="Machinegun">MG</abbr>' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|<abbr title="Shotgun">SG</abbr>' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|<abbr title="Rifle">Ri</abbr>' .. styles.h .. 'title="Havoc"|<abbr title="Tech">Te</abbr>' .. styles.h .. 'title="Havoc"|<abbr title="Rush">Ru</abbr>\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"|<abbr title="Fire">Fi</abbr>' .. styles.h .. 'width="7.12%" title="Element"|<abbr title="Ice">Ic</abbr>' .. styles.h .. 'width="7.12%" title="Element"|<abbr title="Wind">Wi</abbr>' .. styles.h .. 'width="7.12%" title="Element"|<abbr title="Earth">Er</abbr>' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|<abbr title="Electricity">El</abbr>' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|<abbr title="Nuclear">Nc</abbr>' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|<abbr title="Blast">Bl</abbr>' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|<abbr title="Gravity">Gr</abbr>' .. styles.h .. 'title="Light"|<abbr title="Expel">Ex</abbr>' .. styles.h .. 'title="Light"|<abbr title="Miracle">Mi</abbr>' .. styles.h .. 'style="background:#898989" title="Dark"|<abbr title="Death">De</abbr>' .. styles.h .. 'style="background:#898989" title="Dark"|<abbr title="Curse">Cu</abbr>' .. styles.h .. 'style="background:#898989;width:7.12%" title="Dark (Ailments)"|<abbr title="Nerve">Nr</abbr>' .. styles.h .. 'width="7.12%" title="Special"|<abbr title="Resistance to Hieroglyphein">???</abbr>\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 = '<span style="color:#f22">' .. prop.weak .. '</span>' 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 = '<span style="color:#8B668B">Fi</span>' else prop.Fi = 'Fi' end
        if prop.etype == 'Water' then prop.Wt = '<span style="color:#8B668B">Wt</span>' else prop.Wt = 'Wt' end
        if prop.etype == 'Wind' then prop.Wi = '<span style="color:#8B668B">Wi</span>' else prop.Wi = 'Wi' end
        if prop.etype == 'Earth' then prop.Er = '<span style="color:#8B668B">Er</span>' 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"|<abbr title="1-handed Sword">1h</abbr>' .. styles.h .. 'title="Weapons"|<abbr title="2-handed Sword">2h</abbr>' .. styles.h .. 'title="Weapons"|<abbr title="Spear">Sp</abbr>' .. styles.h .. 'title="Weapons"|<abbr title="Axe">Ax</abbr>' .. styles.h .. 'title="Weapons"|<abbr title="Whip">Wp</abbr>' .. styles.h .. 'title="Weapons"|<abbr title="Thrown">Th</abbr>' .. styles.h .. 'title="Weapons"|<abbr title="Arrows">Ar</abbr>' .. styles.h .. 'title="Weapons"|<abbr title="Fist">Fs</abbr>' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|<abbr title="Handgun">HG</abbr>' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|<abbr title="Machinegun">MG</abbr>' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|<abbr title="Shotgun">SG</abbr>' .. styles.h .. 'title="Firearms" style="background:#898989;width:7.12%"|<abbr title="Rifle">Ri</abbr>' .. styles.h .. 'title="Havoc"|<abbr title="Tech">Te</abbr>' .. styles.h .. 'title="Havoc"|<abbr title="Rush">Ru</abbr>\n|-'
        elseif game == 'p2is' or game == 'p2ep' then
            if prop.etype == 'Fire' then prop.Fi = '<span style="color:#8B668B">Fi</span>' else prop.Fi = 'Fi' end
            if prop.etype == 'Water' then prop.Wt = '<span style="color:#8B668B">Wt</span>' else prop.Wt = 'Wt' end
            if prop.etype == 'Wind' then prop.Wi = '<span style="color:#8B668B">Wi</span>' else prop.Wi = 'Wi' end
            if prop.etype == 'Earth' then prop.Er = '<span style="color:#8B668B">Er</span>' 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"|<abbr title="Fire">Fi</abbr>' .. styles.h .. 'width="7.12%" title="Element"|<abbr title="Ice">Ic</abbr>' .. styles.h .. 'width="7.12%" title="Element"|<abbr title="Wind">Wi</abbr>' .. styles.h .. 'width="7.12%" title="Element"|<abbr title="Earth">Er</abbr>' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|<abbr title="Electricity">El</abbr>' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|<abbr title="Nuclear">Nc</abbr>' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|<abbr title="Blast">Bl</abbr>' .. styles.h .. 'style="background:#898989;width:7.12%" title="Force"|<abbr title="Gravity">Gr</abbr>' .. styles.h .. 'title="Light"|<abbr title="Expel">Ex</abbr>' .. styles.h .. 'title="Light"|<abbr title="Miracle">Mi</abbr>' .. styles.h .. 'style="background:#898989" title="Dark"|<abbr title="Death">De</abbr>' .. styles.h .. 'style="background:#898989" title="Dark"|<abbr title="Curse">Cu</abbr>' .. styles.h .. 'style="background:#898989;width:7.12%" title="Dark (Ailments)"|<abbr title="Nerve">Nr</abbr>' .. styles.h .. 'width="7.12%" title="Special"|<abbr title="Resistance to Hieroglyphein">???</abbr>\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 Level]]s</span>'
        prop.reslevels = mw.text.split(prop.reslevels, '\n')
        prop.resleveltypes = {
            ['strike'] = ' <span style="color:#5f5">+1</span></span>',
            ['slash'] = ' <span style="color:#5f5">+1</span></span>',
            ['tech'] = ' <span style="color:#5f5">+1</span></span>',
            ['gun'] = ' <span style="color:#5f5">+1</span></span>',
            ['thrown'] = ' <span style="color:#5f5">+1</span></span>',
            ['fire'] = ' <span style="color:#5f5">+1</span></span>',
            ['ice'] = ' <span style="color:#5f5">+1</span></span>',
            ['elec'] = ' <span style="color:#5f5">+1</span></span>',
            ['force'] = ' <span style="color:#5f5">+1</span></span>',
            ['expel'] = ' <span style="color:#5f5">+1</span></span>',
            ['death'] = ' <span style="color:#5f5">+1</span></span>',
            ['mind'] = ' <span style="color:#5f5">+1</span></span>',
            ['nerve'] = ' <span style="color:#5f5">+1</span></span>',
            ['almighty'] = ' <span style="color:#5f5">+1</span></span>',
            ['heal'] = ' <span style="color:#5f5">+1</span></span>'
        }
        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] = ' <span style="color:#5ff">' .. v2 .. '</span></span>'
                        elseif string.find(v2, 'dr') then
                            prop.resleveltypes[resleveltemp] = ' <span style="color:#f5f">' .. v2 .. '</span></span>'
                        else
                            prop.resleveltypes[resleveltemp] = ' <span style="color:#5f5">' .. v2 .. '</span></span>'
                        end
                    else
                        prop.resleveltypes[resleveltemp] = ' <span style="color:#f55">' .. v2 .. '</span></span>'
                    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 .. '[[Material Card|' .. styles.spanc .. 'Material Card</span>]]' .. styles.effect1 .. '[[File:Material_Card_Icon_(P2ISP).png|alt=|link=]] <span style="color:yellow;font-weight:bold">' .. prop.material .. '</span> Card'
            end
            if prop.card then
                result = result .. styles.skillc .. '[[Tarot Card|' .. styles.spanc .. 'Tarot Cards</span>]]' .. styles.effect1 .. '<span style="color:yellow;font-weight:bold">' .. prop.card .. ' [[File:Tarot_Card_Symbol_2.png|alt=|link=]] ' .. prop.arcana .. '</span> 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 = '<abbr title="Can be recruited in normal battle or obtained from conventional fusion.">Normal recruit or fusion</abbr>'
        elseif prop.recruit == 'dark recruit' then prop.recruit = '<abbr title="Can be obtained via conventional fusion or recruited in normal battle under Full Kagutsuchi with fair chance.">[[Moon Phase System#Shin Megami Tensei III: Nocturne|Full Kagutsuchi]] recruitment or [[fusion]]</abbr>'
        elseif prop.recruit == 'dark' then prop.recruit = '<abbr title="Can only be obtained via fusion. Open to non-recruitment conversation in normal battle.">[[Fusion]] only. Open to trading.</abbr>'
        elseif prop.recruit == 'fusion' then prop.recruit = '<abbr title="Can only be obtained via conventional fusion.">[[Fusion]] only</abbr>'
        elseif prop.recruit == 'special' or prop.recruit == 'special fusion' then prop.recruit = '<abbr title="Can only be obtained via special fusion.">[[Special fusion#Shin Megami Tensei III: Nocturne|Special fusion]] only</abbr>'
        elseif prop.recruit == 'evolve' or prop.recruit == 'evolution' then prop.recruit = '<abbr title="Can only be obtained via evolution from another demon.">[[Evolution#Shin Megami Tensei III: Nocturne|Evolution]] only</abbr>'
        elseif prop.recruit == 'evolve neutral' or prop.recruit == 'neutral evolution' then prop.recruit = '<abbr title="Can be recruited in normal battle or obtained via evolution from another demon. Cannot be created via fusion.">Normal recruit or [[Evolution#Shin Megami Tensei III: Nocturne|evolution]]</abbr>'
        elseif prop.recruit == 'evolve dark' or prop.recruit == 'dark evolution' then prop.recruit = '<abbr title="Can only be obtained via evolution from another demon. Cannot be created via fusion. Open to non-recruitment conversation in normal battle.">[[Evolution#Shin Megami Tensei III: Nocturne|Evolution]] only. Open to trading.</abbr>'
        elseif prop.recruit == 'boss fusion' then prop.recruit = '<abbr title="Can only be obtained via fusion after defeating it in boss battle.">[[Fusion]] only after boss battle</abbr>'
        elseif prop.recruit == 'boss special' or prop.recruit == 'boss special fusion' then prop.recruit = '<abbr title="Can only be obtained via special fusion after defeating it in boss battle.">[[Special fusion#Shin Megami Tensei III: Nocturne|Special fusion]] only after boss battle</abbr>'
        elseif prop.recruit == 'boss evolve' or prop.recruit == 'boss evolution' then prop.recruit = '<abbr title="Can only be obtained via evolution after defeating it in battle.">[[evolution#Shin Megami Tensei III: Nocturne|Evolution]] only after boss battle</abbr>'
        elseif prop.recruit == 'dark boss fusion' then prop.recruit = '<abbr title="Can only be obtained via fusion after defeating it in boss battle. Open to non-recruitment conversation in normal battle.">[[Fusion]] only after boss battle. Open to trading.</abbr>'
        elseif prop.recruit == 'dark boss special fusion' then prop.recruit = '<abbr title="Can only be obtained via special fusion after defeating it in boss battle. Open to non-recruitment conversation in normal battle.">[[Special fusion#Shin Megami Tensei III: Nocturne|Special fusion]] only after boss battle. Open to trading.</abbr>'
        elseif prop.recruit == 'dark boss evolve' then prop.recruit = '<abbr title="Can only be obtained via evolution after defeating it in battle. Open to non-recruitment conversation in normal battle.">[[evolution#Shin Megami Tensei III: Nocturne|Evolution]] only after boss battle. Open to trading.</abbr>'
        elseif prop.recruit == 'samael' then prop.recruit = '<abbr title="Can only be obtained via special fusion after defeating it in boss battle or choosing Shijima Reason after meeting with Ahriman in Kagutsuchi Tower.">Choose Shijima Reason or perform [[Special fusion#Shin Megami Tensei III: Nocturne|special fusion]] only after boss battle.</abbr>'
        elseif prop.recruit == 'thor' then prop.recruit = '<abbr title="Can only be obtained via fusion after defeating him at Tower of Kagutsuchi.">[[Fusion]] only after boss battle at [[Tower of Kagutsuchi]]</abbr>'
        elseif prop.recruit == 'bishamon' then prop.recruit = '<abbr title="Can only be obtained via fusion after defeating him at Bandou Shrine.">[[Fusion]] only after boss battle at [[Bandou Shrine]]</abbr>'
        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 = '<abbr title="Can only be recruited in story plot.">Plot related</abbr>'
        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|[[Special conversation|'..styles.spanc..'Special conversation</span>]]' .. 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|[[Evolution#' .. gamegn .. '|' .. styles.spanc .. 'Evolved from</span>]]' .. styles.order .. prop.evolvef end
            if prop.evolvet then result = result .. styles.h .. 'width=100px|[[Evolution#' .. gamegn .. '|' .. styles.spanc .. 'Evolves into</span>]]' .. styles.order .. prop.evolvet end
            result = result .. '\n|}'
        end
    end
    if prop.fusion then
        result = result .. styles.table2 .. styles.h .. 'width=100px|[[Special fusion#' .. gamegn .. '|' .. styles.spanc .. 'Special fusion</span>]]' .. 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|[[List of ' .. gamegn .. ' Skills|' .. styles.spanc .. 'Default Skills</span>]]' .. 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|[[List of Megami Tensei Spells|' .. styles.spanc .. 'List of Spells</span>]]'
        elseif game == 'smtim' then
            result = result .. 'mw-collapsible mw-collapsed"' .. styles.h .. 'colspan=4|[[List of ' .. gamegn .. ' Skills|' .. styles.spanc .. 'Learned Skills</span>]]'
        elseif gameg == 'smtsj' and not (prop.enemy or prop.boss) then
            result = result .. '"' .. styles.h .. 'colspan=3|[[List of ' .. gamegn .. ' Skills|' .. styles.spanc .. 'Natural Skills</span>]]'
        elseif gameg == 'ab' then
            result = result .. '"' .. styles.h .. 'colspan=7|[[List of ' .. gamegn .. ' Skills#Magic|' .. styles.spanc .. 'Natural Skills</span>]]'
        elseif gameg == 'majin1' then
            result = result .. '"' .. styles.h .. 'colspan=7|[[List of ' .. gamegn .. ' Skills|' .. styles.spanc .. 'Magic Skills</span>]]'
        elseif gameg == 'majin2' then
            result = result .. '"' .. styles.h .. 'colspan=6|[[List of ' .. gamegn .. ' Skills|' .. styles.spanc .. 'List of Skills</span>]]'
        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 ' .. gamegn .. ' Skills|<span style="color:black;text-shadow:-3px 3px 3px #0ff">List of Skills</span>]]'
        elseif gameg == 'desu1' or gameg == 'desu2' then
            result = result .. '"' .. styles.h .. 'colspan=3|[[List of ' .. gamegn .. ' Skills|' .. styles.spanc .. 'Command Skills</span>]]'
        else
            result = result .. '"' .. styles.h .. 'colspan=4|[[List of ' .. gamegn .. ' Skills|' .. styles.spanc .. 'List of Skills</span>]]'
        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 = '<abbr title="No cost. Can only be used once until next full moon phase.">Extra</abbr>'
                    elseif skill.cost == 'sextra' then
                        skill.cost = '<abbr title="No cost. Power relative to physical attack power. Can only be used once until next full moon phase.">P. Extra</abbr>'
                    elseif skill.cost == 'mextra' then
                        skill.cost = '<abbr title="No cost. Power relative to magical attack power. Can only be used once until next full moon phase.">M. Extra</abbr>'
                    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 = '<span style="color:' .. getGames.games[gameg].mp2 .. '">' .. skill.cost .. '</span>' -- 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 = '<div style="background:#DC143C;border-radius:5px;float:left;margin-right:5px">Magatsuhi</div> ' .. 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 = '<div style="background:' .. getGames.games[gameg].colorbg .. ';border-radius:5px;float:left;margin-right:5px">Combo</div> ' .. skill.effect
                            elseif skill.smirk then
                                skill.effect = skill.effect .. ' <span style="background:' .. getGames.games[gameg].statb .. ';border-radius:5px;padding:3px">Smirk</span> ' .. 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 .. '<div style="float:right;background:#696969;border-radius:15px;padding:0 10px">Inheritable Skill</div>'
                        elseif v2 == 'R' or v2 == 'r' then
                            result = result .. '<div style="float:right;background:#8E283D;border-radius:15px;padding:0 10px">[[Misc Skills#Rumor Magic|<span style="color:#fff">Rumor Skill</span>]]</div>'
                        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|<span style="color:#fff">Mutation</span>]]'
                            elseif v2 == 'R' or v2 == 'r' then
                                v2 = '[[Misc Skills#Rumor Magic|<span style="color:#fff">Rumor</span>]]'
                            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 = '<abbr title="Active conversational skill without HP or MP cost. Ineffective to Corpus, Haunt, Wilder, Foul, Light-tendency demons, bosses and all enemies in Labyrinth of Amala.">Convo</abbr>'
                                    elseif skill.cost == 'Interrupt' then
                                        cost = '<abbr title="Interruption skill is only triggered when certain conversational effect occurs.">Interrupt</abbr>'
                                    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 = '<span style="color:' .. getGames.games[gameg].hp2 .. '">' .. skill.cost .. '</span>' -- tints cyan for phys skill
                                    elseif string.match(skill.cost, 'SP') then
                                        cost = '<span style="color:' .. getGames.games[gameg].mp2 .. '">' .. skill.cost .. '</span>' -- tints pink for magic skill
                                    end
                                end
                                if skill.smirk then
                                    skill.effect = skill.effect .. ' <span style="background:' .. getGames.games[gameg].statb .. ';border-radius:5px;padding:3px">Smirk</span> ' .. skill.smirk
                                end
                                if skill.chaineffect then
                                    for index, child in ipairs(skill.chaineffect) do
                                        skill.effect = skill.effect .. string.format('\n<span style="background:' .. getGames.games[gameg].colorb .. ';border-radius:5px;padding:3px;font-weight:bold;">%s:</span>', 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<span style="background:' .. getGames.games[gameg].colorb .. ';border-radius:5px;padding:3px;font-weight:bold;">%s:</span>', child[1]) .. " " .. child[2] .. '\n'
                                        if child.chaineffect then
                                            for index, value in ipairs(child.chaineffect) do
                                                skill.effect = skill.effect .. string.format('<br><span style="background:' .. getGames.games[gameg].colorb .. ';border-radius:5px;padding:3px;font-weight:bold;">%s:</span>', 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('<br><span style="background:' .. getGames.games[gameg].colorb .. ';border-radius:5px;padding:3px;font-weight:bold;">Level %d:</span>', 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 = '<span style="font-weight:bold">Common</span>'
                            elseif v2 == 'Aa' then
                                v2 = '<span style="color:red;font-weight:bold;">Aragami<br>(Awaken)</span>'
                            elseif v2 == 'Ap' then
                                v2 = '<span style="color:yellow;font-weight:bold;">Protector<br>(Awaken)</span>'
                            elseif v2 == 'Ay' then
                                v2 = '<span style="color:#f5f;font-weight:bold;">Psychic<br>(Awaken)</span>'
                            elseif v2 == 'Ae' then
                                v2 = '<span style="color:#5ff;font-weight:bold;">Elementalist<br>(Awaken)</span>'
                            elseif v2 == 'Ga' then
                                v2 = '<span style="color:red;font-weight:bold;">Aragami<br>(Gacha)</span>'
                            elseif v2 == 'Gp' then
                                v2 = '<span style="color:yellow;font-weight:bold;">Protector<br>(Gacha)</span>'
                            elseif v2 == 'Gy' then
                                v2 = '<span style="color:#f5f;font-weight:bold;">Psychic<br>(Gacha)</span>'
                            elseif v2 == 'Ge' then
                                v2 = '<span style="color:#5ff;font-weight:bold;">Elementalist<br>(Gacha)</span>'
                            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 .. '|[[List of ' .. gamegn .. ' Fusion Spells|' .. styles.spanc .. 'Unique Fusion Spells</span>]]' .. 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 .. '|[[List of Persona 3 Skills#Fusion Spells|' .. styles.spanc .. 'Fusion Spell</span>]] <abbr title="Persona 3 and FES only; Portable uses items and does not require the participating personas to be in stock">*</abbr>' .. styles.skill .. 'Skill'  .. styles.skillc .. 'Cost' .. styles.skillc .. 'Effect' .. styles.skillc .. '<abbr title="Persona 3 and FES only">Prerequisite</abbr>' .. prop.fskills .. cost .. effect .. pre
        elseif gameg == 'childlight' then
            result = result .. '|[[List of DemiKids Light/Dark Version Skills#Combos|' .. styles.spanc .. 'Combos</span>]]' .. 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|[[List of ' .. gamegn .. ' Skills#Passive Skills|' .. styles.spanc .. 'Passive Skills</span>]]'
        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"|[[Unknown Power|' .. styles.spanc .. 'Unknown Power</span>]]' .. 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 <abbr title="Equipper has ' .. "'Great'" .. ' affinity with the Persona">500</abbr> or <abbr title="Equipper has ' .. "'Good'" .. ' affinity with the Persona">250</abbr> 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 .. '<abbr title="Equipper has ' .. "'Great'" .. ' affinity with the Persona">Reflects</abbr> or <abbr title="Equipper has ' .. "'Good'" .. ' affinity with the Persona">nullifies</abbr> 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 <abbr title="Only applicable when the equipper has ' .. "'Great'" .. ' affinity with the Persona">(or Rakukaja + Samakaja in addition)</abbr>'
        elseif prop.unknown == 'recovery type' or prop.unknown == 'recovery-type' or prop.unknown == 'recovery' then
            result = result .. 'Recovery Type' .. styles.cost1 .. 'Fully recovers HP <abbr title="Only applicable when the equipper has ' .. "'Great'" .. ' affinity with the Persona">(or removes ailment in addition)</abbr>.'
        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 <abbr title="Equipper has ' .. "'Great'" .. ' affinity with the Persona">full</abbr> or <abbr title="Equipper has ' .. "'Good'" .. ' affinity with the Persona">1/4</abbr> 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|<span style="color:black;text-shadow:-3px 3px 3px #0ff">Combo Attacks</span>]]'
        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 = '<span style="font-weight:bold;">-</span>'
                    elseif not skill then
                        resv2 = '<span style="color:red;font-weight:bold;font-size:1.2em">Invalid skill name of "' .. v2 .. '". You may correct the skill name or modify [[module:Skills/' .. gamed .. ']] if needed.</span>'
                    else
                        if skill.name then v2 = skill.name end
                        resv2 = '<span style="font-weight:bold;>' .. v2 .. '</span>'
                        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|[[List of ' .. gamegn .. ' Skills##Powers|' .. styles.spanc .. 'Power</span>]]\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 = '<abbr title="Active conversational skill without HP or MP cost. Ineffective to Corpus, Haunt, Wilder, Foul, Light-tendency demons, bosses and all enemies in Labyrinth of Amala.">Convo</abbr>'
    elseif skill.cost == 'Interrupt' then
        cost = '<abbr title="Interruption skill is only triggered when certain conversational effect occurs.">Interrupt</abbr>'
    end
    local cost1 = '\n||' .. cost
    local cost2 = styles.cost2 .. cost
    local effect1 = styles.effect1 .. skill.effect
    local effect2 = styles.effect2 .. skill.effect
    local order = styles.order .. skill.cost
    local element1, element2
    if skill.element then
        element1 = '\n||' .. skill.element or ''
        element2 = styles.cost2 .. skill.element or ''
    end
    local level1, level2
    if skill.pre then
        level1 = '\n||' .. skill.pre
        level2 = styles.cost2 .. skill.pre
    elseif level == '' then
        level1 = '\n||'
        level2 = styles.cost2
    elseif level then
        level1 = '\n||' .. level
        level2 = styles.cost2 .. level
    end
    local result
    if row == 'r01' then
        result = skillcell .. effect1 -- Odd number row for enemy whose skill cost is irrelevant.
        elseif row == 'r02' then
        result = skillcell .. effect2 -- Even number row for enemy whose skill cost is irrelevant.
        elseif row == 'r11' then
            if game == 'SMT3' and skill.phy then
                result = skillcell .. styles.effect1p .. skill.effect -- Odd number row for enemy whose physical skills cost no HP.
                else result = skillcell .. cost1 .. effect1 -- Odd number row for demon which does not learn new skill on level gain.
            end
        elseif row == 'r12' then
            if game == 'SMT3' and skill.phy then
                result = skillcell .. styles.effect2p .. skill.effect -- Even number row for enemy whose physical skills cost no HP.
                else result = skillcell .. cost2 .. effect2 -- Even number row for demon which does not learn new skill on level gain.
            end
        elseif row == 'r21' then
        result = skillcell .. cost1 .. effect1 .. level1 -- Odd number row for demon/persona which learn new skill on level gain.
        elseif row == 'r22' then
        result = skillcell .. cost2 .. effect2 .. level2 -- Even number row for demon/persona which learn new skill on level gain.
        elseif row == 'r31' then
        result = skillcell .. effect1 .. level1 -- Odd number row for guest who learn new skill on level gain.
        elseif row == 'r32' then
        result = skillcell .. effect2 .. level2 -- Even number row for guest who learn new skill on level gain.
        elseif row == 'p12' then
        result = styles.skill .. level .. styles.skillc .. code .. effect1 -- Row for Persona 1 and 2 persona
        elseif row == 'rf' then
        result = skillcell .. effect1 .. order -- Row for Persona-specific fusion spell.
        elseif row == 'dk1' then
        result = skillcell .. element1 .. cost1 .. effect1 -- Odd number row for DemiKids stats skill list.
        elseif row == 'dk2' then
        result = skillcell .. element2 .. cost2 .. effect2 -- Odd number row for DemiKids stats skill list.
        elseif row == 'dkc1' then
        result = skillcell .. level1 .. element1 .. cost1 .. effect1 -- Odd number row for DemiKids stats combo skill list.
        elseif row == 'dkc2' then
        result = skillcell .. level2 .. element2 .. cost2 .. effect2 -- Odd number row for DemiKids stats combo skill list.
        elseif row == 'dkp' then
        result = skillcell .. element2 .. effect2 -- row for DemiKids powers.
        else
        result = '<strong style="color:red;font-size:150%">Invalid parameter 1 of ' .. '"' .. row .. '".</strong>' .. cate('Templates with unrecognizable row value for Module:Skills')
    end
    return result
end

return p