Module:DunSkill

-- -- -- A table of skills based on name and level -- local p = {} local function green(text) return ' '..text..' ' end

function firstToUpper(str) return (str:gsub("^%l", string.upper)) end -- "target" = [single, random, randomstun, all, mimic] -- "type" = [attack, fire, water, wood, elemental, heal, attackheal, buffheal, dividehp, stun, attackstun, buff, mimic, woodinc] -- "levelBase" / "levelInc" use to calculate data based on level -- "levels" is used to explicitly declare a table of known values if there is no set pattern - NOTE: "Warrior\'s Song" (Dice) and "Buff Concert" (Ringo / Lulu) are probably effected by the "ATK BUFF". local skills = { ['Angel Strike'] = { name   = 'Angel Strike', text   = 'Strikes one enemy with '..green('%d%%')..' ATK while healing all allies '..green('%d%%')..' HEAL.', mp     = 38, type   = 'attackheal', target = 'single', -- 5-740 / 7=1060 / 9=1380       levelBase   = 100, levelInc   = 160, },   ['Anthem of Light'] = { name   = 'Anthem of Light', text   = 'Increases team\'s ATK by +'..green('%d%%')..' while healing all allies with '..green('%d%%')..' HEAL.', mp     = 44, type   = 'buffheal', target = 'all', -- 8=140,1200       levelBase   = 140, -- unknown levelInc   = 0, -- unknown levelBase2 = 1200, -- unknown levelInc2  = 0, -- unknown },   ['Assassinate'] = { name   = 'Assassinate', text   = 'Instantly kills an enemy ('..green('%d%%')..' chance). Doesn\'t work on bosses.', mp     = 45, type   = 'attack', target = 'single', -- 4=40 / 6=50 / 7=55 / 8=60 / 9=65 / 10=70 / 11=75       levelBase   = 25, levelInc   = 5, },   ['Axe Tornado'] = { name   = 'Axe Tornado', text   = 'Swings a giant axe at all enemies with '..green('%d%%')..' ATK.', mp     = 68, type   = 'attack', target = 'all', -- 10=3630       levelBase   = 3630, -- unknown levelInc   = 0, -- unknown },   ['Bat Wave'] = { name   = 'Bat Wave', text   = 'Sends ultrasonic waves at all enemies with '..green('%d%%')..' ATK while healing all allies +'..green('%d%%')..'', mp     = 35, type   = 'attackheal', target = 'all', -- 3=490 / 4=560 / 5=630 / 6=700 / 8=840       levelBase   = 350, levelInc   = 70, },   ['Brave Claw'] = { name   = 'Brave Claw', text   = 'Claws an enemy with '..green('%d%%')..' Wood ATK.', mp     = 34, type   = 'wood', target = 'single', -- Fenrir: 5=1760 / 6=2080 / 7=2400 [old] ?:5=1520 / 6=1780 / 7=2040 levelBase  = 480, levelInc   = 320, },   ['Buff Concert'] = { name   = 'Buff Concert', text   = 'Team\s ATK +'..green('%d%%')..'.', mp     = 45, type   = 'buff', target = 'all', levelBase  = 0, -- unknown levelInc   = 0, -- unknown },   ['Buff Concert-Ringo'] = { name   = 'Buff Concert', text   = 'Team\s ATK +'..green('%d%%')..'.', mp     = 45, type   = 'buff', target = 'all', levels     = { [4] = { value=60 }, -- ringo buff: 15 [6] = { value=96 }, -- ringo buff: 20 [8] = { value=140 }, -- ringo buff: 25 }   },    ['Buff Concert-Lulu'] = { name   = 'Buff Concert', text   = 'Team\s ATK +'..green('%d%%')..'.', mp     = 45, type   = 'buff', target = 'all', levels     = { [4] = { value=48 }, -- lulu buff: 12 [6] = { value=72 }, -- lulu buff: 15 [8] = { value=101 }, -- lulu buff: 18 }   },    ['Buff Concert-BMO'] = { name   = 'Buff Concert', text   = 'Team\s ATK +'..green('%d%%')..'.', mp     = 45, type   = 'buff', target = 'all', levels     = { [7] = { value=88 }, -- bmo buff: 17 [8] = { value=106 }, -- bmo buff: 19 [9] = { value=126 }, -- bmo buff: 21 }   },    ['Buff Concert-Pat'] = { name   = 'Buff Concert', text   = 'Team\s ATK +'..green('%d%%')..'.', mp     = 45, type   = 'buff', target = 'all', levels     = { [5] = { value=70 }, -- pat buff: 16 [6] = { value=91 }, -- pat buff: 19 [7] = { value=114 }, -- pat buff: 22 }   },    ['Cannon Strike'] = { name   = 'Cannon Strike', text   = 'Cannon strike '..green('%d')..'-'..green('%d')..' times with '..green('%d%%')..' Water ATK.', mp     = 40, type   = 'water', target = 'random', -- 5=360,4,6 / 6=380,5,7 / 7=400,6,8       levelBase   = 280, levelInc   = 20, levelBase2 = 0, levelInc2  = 1, levelBase3 = 2, levelInc3  = 1, },   ['Card Magic'] = { name   = 'Card Magic', text   = 'Fire cards at all enemies with '..green('%d%%')..' ATK', mp     = 43, type   = 'attack', target = 'all', -- 4=600 / 6=720 / 8=840       levelBase   = 420, levelInc   = 60, },   ['Comet Sword'] = { name   = 'Comet Sword', text   = 'Inflicts a shower of blades on all enemies with '..green('%d%%')..' ATK.', mp     = 65, type   = 'attack', target = 'all', -- Demon Sword: 8=2750 levelBase  = 2750, -- unknown levelInc   = 0, -- unknown },   ['Consecutive Explosions'] = { name   = 'Consecutive Explosions', text   = 'Launches Consecutive Explosions on all enemies with '..green('%d%%')..' Wood ATK. Increases damage by '..green('%d%%')..' per additional enemy.', mp     = 37, type   = 'woodinc', target = 'all', -- 6=700,150 / 7=780,160 / 8=860,170       levelBase   = 300, levelInc   = 80, levelBase2 = 100, levelInc2  = 10, },   ['Cyclone'] = { name   = 'Cyclone', text   = 'Attacks all enemies with '..green('%d%%')..' ATK', mp     = 38, type   = 'attack', target = 'all', -- 1=240 / 2=270 / 3=300 / 4=330 / 6=390 / 7=420 / 8=450 / 9=480 / 10=510 / 12=570 / 14=630       levelBase   = 240, levelInc   = 30, },   ['Dance Fever'] = { name   = 'Dance Fever', text   = 'Stuns all enemies with her dance ('..green('%d%%')..')', mp     = 35, type   = 'stun', target = 'all', -- 3=45 / 4=50 / 5=55 / 6=60 / 8=70       levelBase   = 35, levelInc   = 5, },   ['Dark Mateo'] = { name   = 'Dark Mateo', text   = 'Rains darkness on all enemies with '..green('%d%%')..' ATK.', mp     = 60, type   = 'attack', target = 'all', -- 10=2000       levelBase   = 2000, -- unknown levelInc   = 0, -- unknown },   ['Demon\'s Quake'] = { name   = 'Demon\'s Quake', text   = 'Causes earthquake damage on all enemies with ('..green('%d%%')..') ATK', mp     = 38, type   = 'attack', target = 'all', -- 4=480 / 5=560 / 6=640 / 8=800       levelBase   = 240, levelInc   = 80, },   ['Dragon Breath'] = { name   = 'Dragon Breath', text   = 'Spurts Dragon Breath on all enemies with '..green('%d%%')..' ATK.', mp     = 43, type   = 'attack', target = 'all', -- Angard: 4=800 / 6=1040 / 8=1280 levelBase  = 440, levelInc   = 120, },   ['Finn Swords'] = { name   = 'Finn Swords', text   = 'Shoots swords on all enemies with '..green('%d%%')..' ATK', mp     = 38, type   = 'attack', target = 'all', -- Finn: 4=740 / 5=860 / 6=980 / 7=1100 levelBase  = 380, levelInc   = 120, },   ['Fire Pillar'] = { name   = 'Fire Pillar', text   = 'Attacks a single enemy with '..green('%d%%')..' Fire ATK', mp     = 32, type   = 'fire', target = 'single', -- 4=650 / 6=790 / 8=930 / 9=1000 / 11=1140       levelBase   = 440, levelInc   = 70, },   ['Fire Wall'] = { name       = 'Fire Wall', text       = 'Attacks all enemies with '..green('%d%%')..' Fire ATK', mp         = 42, type       = 'fire', target     = 'all', -- 4=350 / 6=410 / 8=470 / 10=530       levelBase   = 260, levelInc   = 30, },   ['Flame Strike'] = { name       = 'Flame Strike', text       = 'Randomly attacks enemies '..green('%d')..'-'..green('%d')..' times with '..green('%d%%')..' Fire ATK.', mp         = 42, type       = 'fire', target     = 'random', -- 2=71,2,6 / 3=82,3,7 / 4=93,4,8 / 5=104,5,9 / 6=115,6,10 / 7=126,7,11       levelBase   = 60, levelInc   = 11, levelBase2 = 1, levelInc2  = 1, levelBase3 = 5, levelInc3  = 1, },   ['Flare'] = { name       = 'Flare', text       = 'Launches a fire explosion on all enemies with '..green('%d%%')..' Fire ATK.', mp         = 35, type       = 'fire', target     = 'all', -- Fira: 5=980 / 7=1220 / 10=1580 [old] ?: 5=830 / 7=1070 / 8=1190 / 10=1430 / 12=1670 levelBase  = 500, levelInc   = 120, },   ['Forest\'s Will'] = { name       = 'Forest\'s Will', text       = 'Ultimate Leaf Magic with '..green('%d%%')..' WOOD.', mp         = 37, type       = 'wood', target     = 'all', -- Abracadaniel: 5=1000 / 6=1160 / 7=1320   [old] ?: 5=880 / 8=1270 / 10=1530 levelBase  = 360, levelInc   = 160, },   ['Giant Claw'] = { name       = 'Giant Claw', text       = 'Launches a giant claw attack on all enemies with '..green('%d%%')..' ATK.', mp         = 65, type       = 'attack', target     = 'all', -- 8=2760       levelBase   = 2760, -- unknown levelInc   = 0, -- unknown },   ['Gravity Cannon'] = { name       = 'Gravity Cannon', text       = 'Reduces '..green('%d%%')..' of an enemy\'s remaining HP. Doesn\'t work on bosses.', mp         = 35, type       = 'dividehp', target     = 'all', -- 4=48 / 5=54 / 6=60 / 8=72       levelBase   = 30, levelInc   = 6, },   ['Heavenly Wrath'] = { name       = 'Heavenly Wrath', text       = 'Explosion of all elementals with ('..green('%d%%')..') FIRE/WATER/WOOD.', mp         = 50, type       = 'elemental', target     = 'all', -- 3=650 / 4=780 / 5=910 / 6=1040 / 8=1300 / 10=1560       levelBase   = 390, levelInc   = 130, },   ['Hell Chains'] = { name       = 'Hell Chains', text       = 'Tortures all enemies with '..green('%d%%')..' ATK.', mp         = 27, type       = 'attack', target     = 'all', -- 8=630(old value) / 9=700 levelBase  = 700, -- unknown levelInc   = 0, -- unknown },   ['Holy Nova']   = { name       = 'Holy Nova', text       = 'Launches Holy Nova on all enemies with '..green('%d%%')..' Wood ATK while healing all allies with '..green('%d%%')..' Heal.', mp         = 38, type       = 'woodheal', target     = 'all', -- Kamael: 8=1400,940 / 9=1550,1020 / 10=1700,1100 [old] ?: 7=1070,860 / 8=1190,940 / 9=1310,1020 levelBase  = 350, levelInc   = 150, levelBase2 = 380, levelInc2  = 80, },       ['Ice Age'] = { name       = 'Ice Age', text       = 'Launches ice spkies on all enemies with '..green('%d%%')..' Water ATK.', mp         = 38, type       = 'water', target     = 'all', -- 5=950 / 10=1850       levelBase   = 230, levelInc   = 180, },   ['Ice Sphere'] = { name       = 'Ice Sphere', text       = 'Launches an ice explosion on all enemies with '..green('%d%%')..' Water ATK.', mp         = 35, type       = 'water', target     = 'all', -- Aira: 5=980 / 7=1220 / 10=1580 [old] ?: 5=830 / 7=1070 / 10=1430 levelBase  = 500, levelInc   = 120, },   ['Invisible Slash'] = { name       = 'Invisible Slash', text       = 'Slashes all enemies with '..green('%d%%')..' Water ATK.', mp         = 24, type       = 'water', target     = 'all', -- 5=400 / 6=440 / 7-480 / 8=520       levelBase   = 240, levelInc   = 40, },   ['Jake Hammer'] = { name       = 'Jake Hammer', text       = 'Attacks all enemies with '..green('%d%%')..' ATK and stuns them.('..green('%d%%')..' chance)', mp         = 36, type       = 'attackstun', target     = 'all', -- Jake: 6=300,59 / 7=340,64 / 6=380,69 levelBase  = 100, levelInc   = 40, levelBase2 = 34, levelInc2  = 5, },   ['Machinegun Arrow'] = { name       = 'Machinegun Arrow', text       = 'Rains arrows down on all enemies with '..green('%d%%')..' ATK', mp         = 28, type       = 'attack', target     = 'all', -- 3=410 / 4=490 / 5=570 / 6=650 / 10=970       levelBase   = 250, levelInc   = 80, },   ['Mass Heal'] = { name       = 'Mass Heal', text       = 'Heals all allies with '..green('%d%%')..' of HEAL.', mp         = 39, type       = 'heal', target     = 'all', -- 4=690 / 6=850 / 8=1010       levelBase   = 450, levelInc   = 80, },   ['Melee Strike'] = { name       = 'Melee Strike', text       = 'Randomly attacks enemies '..green('%d')..'-'..green('%d')..' times with '..green('%d%%')..' ATK.', mp         = 45, type       = 'attack', target     = 'random', -- 3=80,3,7 / 4=90,4,8 / 5=100,5,9 / 6=110,6,10 / 7=120,7,11 / 8=130,8,12 / 9=140,9,13 / 10=150,10,14 / 12=170,12,16       levelBase   = 60, levelInc   = 10, levelBase2 = 1, levelInc2  = 1, levelBase3 = 5, levelInc3  = 1, },   ['Meteor Strike'] = { name       = 'Meteor Strike', text       = 'Launches a meteor at all enemies with '..green('%d%%')..' Fire ATK', mp         = 65, type       = 'fire', target     = 'all', -- Luna: 5=2100 / 8=2850 / 11=3600 levelBase  = 1100, levelInc   = 250, },   ['Million Fists'] = { name       = 'Million Fists', text       = 'Lightspeed punches to a single enemy with '..green('%d%%')..' ATK', mp         = 23, type       = 'attack', target     = 'single', -- 6=810 / 8=1030 / 10=1250       levelBase   = 260, levelInc   = 110, },   ['Mimic'] = { name       = 'Mimic', text       = 'Randomly mimics a party member\'s super attack with '..green('%d%%')..' efficiency', mp         = 30, type       = 'mimic', target     = 'mimic', -- Magic Man: 6=70 / 7=75 / 8=80 levelBase  = 45, levelInc   = 5, },   ['Myriad Slashes'] = { name       = 'Myriad Slashes', text       = 'Slashes all enemies with '..green('%d%%')..' ATK', mp         = 24, type       = 'attack', target     = 'all', -- 2=280 / 3=310 / 4=340 / 7=430 / 9=490       levelBase   = 250, levelInc   = 30, },   ['Omega Heal'] = { name       = 'Omega Heal', text       = 'Heals all allies with '..green('%d%%')..' of HEAL.', mp         = 38, type       = 'heal', target     = 'all', -- 3=700 / 4=800 / 6=1000 / 7=1100       levelBase   = 500, levelInc   = 100, },   ['Purification'] = { name       = 'Flame of Purification', text       = 'Shoots Flame of Purification to random enemies '..green('%d')..'-'..green('%d')..' times with '..green('%d%%')..' ATK and stuns them ('..green('%d%%')..' chance).', mp         = 38, type       = 'attack', target     = 'randomstun', -- 5=170,4,6,38 / 7=190,6,8,44 / 9=210,8,10,50       levelBase   = 130, levelInc   = 10, levelBase2 = 0, levelInc2  = 1, levelBase3 = 2, levelInc3  = 1, levelBase4 = 26, levelInc4  = 3, },   ['Raiden'] = { name       = 'Raiden', text       = 'Lightning strikes all enemies with '..green('%d%%')..' ATK', mp         = 36, type       = 'attack', target     = 'all', -- 4=740 / 7=1100 / 10=1460       levelBase   = 380, levelInc   = 120, },   ['Rain Blaster'] = { name       = 'Rain Blaster', text       = 'Rains fire on all enemies with '..green('%d%%')..' FIRE.', mp         = 50, type       = 'fire', target     = 'all', -- Pymon: 11=1900 / Russell: 3=700 / 4=850 / 5=1000 [old] ?:3=700 / 7=1200 levelBase  = 400, levelInc   = 150, },   ['Risky Play'] = { name       = 'Risky Play', text       = 'Launches flames on all enemies with '..green('%d%%')..' Fire ATK while sacrificing '..green('35%%')..' HP.', mp         = 34, type       = 'fire', target     = 'all', -- 6=1300 / 7=1400 / 8=1500       levelBase   = 800, levelInc   = 100, },   ['Sacrifice Flame'] = { name   = 'Sacrifice Flame', text   = 'Attacks all enemies with '..green('%d%%')..' ATK while sacrificing '..green('20%%')..' HP.', mp     = 42, type   = 'fire', target = 'all', -- 3=440 / 4=500 / 6=620 / 8=740       levelBase   = 320, levelInc   = 60, },   ['Sacrifice Strike'] = { name   = 'Sacrifice Strike', text   = 'Attacks all enemies with '..green('%d%%')..' ATK while sacrificing '..green('15%%')..' HP.', mp     = 38, type   = 'attack', target = 'all', -- 3=360 / 4=410 / 6=510 / 8=610 / 11=760       levelBase   = 260, levelInc   = 50, },   ['Sacrifice Water'] = { name   = 'Sacrifice Water', text   = 'Attacks all enemies with '..green('%d%%')..' ATK while sacrificing '..green('20%%')..' HP.', mp     = 42, type   = 'water', target = 'all', -- 7=680 / 9=800 / 11=920       levelBase   = 320, levelInc   = 60, },   ['Sacrifice Wood'] = { name   = 'Sacrifice Wood', text   = 'Attacks all enemies with '..green('%d%%')..' ATK while sacrificing '..green('20%%')..' HP.', mp     = 42, type   = 'wood', target = 'all', -- 3=440 / 4=500 / 6=620 / 8=740 / 11=920       levelBase   = 320, levelInc   = 60, },   ['Satellite Strike'] = { name   = 'Satellite Strike', text   = 'Strikes Satellite Strike on all enemies with '..green('%d%%')..' ATK.', mp     = 34, type   = 'attack', target = 'all', -- 6=880 / 7=980 / 8=1080       levelBase   = 380, levelInc   = 100, },   ['Shield Smash'] = { name   = 'Shield Smash', text   = 'Attacks a single enemy with '..green('%d%%')..' ATK and stuns it', mp     = 42, type   = 'attack', target = 'single', -- 2=350 / 3=410 / 4=470 / 7=650 / 9=770       levelBase   = 290, levelInc   = 60, },   ['Spear Impact'] = { name   = 'Spear Impact', text   = 'Throws a spear at a single enemy with '..green('%d%%')..' ATK', mp     = 33, type   = 'attack', target = 'single', -- 2=570 / 3=720 / 4=870 / 6=1170 / 7=1320 / 9=1620       levelBase   = 420, levelInc   = 150, },   ['Stun Hammer'] = { name   = 'Stun Hammer', text   = 'Stuns all enemies ('..green('%d%%')..' chance)', mp     = 45, type   = 'stun', target = 'all', -- 3=36 / 6=48 / 8=56 / 10=64       levelBase   = 28, levelInc   = 4, },   ['Stun Punch'] = { name   = 'Stun Punch', text   = 'Stuns a single enemy ('..green('%d%%')..' chance)', mp     = 45, type   = 'stun', target = 'single', -- 3=71 / 4=74 / 6=80       levelBase   = 65, levelInc   = 3, },   ['Sword Rain'] = { name   = 'Sword Rain', text   = 'Shoots massive amount of swords with '..green('%d%%')..' ATK.', mp     = 40, type   = 'attack', target = 'all', -- 6=820 / 8=1020 / 10=1220       levelBase   = 320, levelInc   = 100, },   ['Thunder Storm'] = { name   = 'Thunder Storm', text   = 'Lightning strikes all enemies with '..green('%d%%')..' ATK.', mp     = 36, type   = 'attack', target = 'all', -- Erina: 6=990 / 8=1250 / 10=1510 [old] ?: 1=990 / 2=1250 / 3=1510 levelBase  = 340, levelInc   = 130, },   ['Thunder Strike'] = { name   = 'Thunder Strike', text   = 'Strikes a massive lightning with '..green('%d%%')..' Fire ATK.', mp     = 34, type   = 'fire', target = 'single', -- Daine: 8=720 / 9=780 / 10=840 [old] ?:5=680 / 6=770 / 7=860 levelBase  = 300, levelInc   = 60, },   ['Warrior\'s Song'] = { name   = 'Warrior\'s Song', text   = 'Team\'s ATK +'..green('%d%%'), mp     = 48, type   = 'buff', target = 'all', levelBase  = 0, -- unknown levelInc   = 0, -- unknown },   ['Warrior\'s Song-Dice'] = { name   = 'Warrior\'s Song', text   = 'Team\'s ATK +'..green('%d%%'), mp     = 48, type   = 'buff', target = 'all', levels = { [5] = { value=61 }, -- dice buff: 18 [7] = { value=84 }, -- dice buff: 21 [9] = { value=110 }, -- dice buff: 24 }   },    ['Warrior\'s Song-Driard'] = { name   = 'Warrior\'s Song', text   = 'Team\'s ATK +'..green('%d%%'), mp     = 48, type   = 'buff', target = 'all', levels = { [13] = { value=128 }, -- driard buff: 22 }   },    ['Water Pillar'] = { name   = 'Water Pillar', text   = 'Attacks a single enemy with '..green('%d%%')..' Water ATK', mp     = 32, type   = 'water', target = 'single', -- 4=650 / 6=790 / 8=930       levelBase   = 440, levelInc   = 70, },   ['Water Strike'] = { name       = 'Water Strike', text       = 'Randomly attacks enemies '..green('%d')..'-'..green('%d')..' times with '..green('%d%%')..' Water ATK.', mp         = 42, type       = 'water', target     = 'random', -- 4=93,4,8 / 6=115,6,10 / 8=137,8,12       levelBase   = 60, levelInc   = 11, levelBase2 = 1, levelInc2  = 1, levelBase3 = 5, levelInc3  = 1, },   ['Water Wall'] = { name       = 'Water Wall', text       = 'Attacks all enemies with '..green('%d%%')..' Water ATK', mp         = 42, type       = 'water', target     = 'all', -- 3=320 / 4=350 / 6=410 / 8=470       levelBase   = 260, levelInc   = 30, },   ['Wood Pillar'] = { name       = 'Wood Pillar', text       = 'Attacks a single enemy with '..green('%d%%')..' Wood ATK', mp         = 32, type       = 'wood', target     = 'single', -- 7=860 / 9=1000 / 11=1140       levelBase   = 440, levelInc   = 70, },   ['Wood Strike'] = { name       = 'Wood Strike', text       = 'Randomly attacks enemies '..green('%d')..'-'..green('%d')..' times with '..green('%d%%')..' Wood ATK.', mp         = 42, type       = 'wood', target     = 'random', -- 3=82,3,7 / 4=93,4,8 / 5=104,5,9 / 6=115,6,10 / 7=126,7,11 / 8=137,8,12       levelBase   = 60, levelInc   = 11, levelBase2 = 1, levelInc2  = 1, levelBase3 = 5, levelInc3  = 1, },   ['Wood Wall'] = { name       = 'Wood Wall', text       = 'Attacks all enemies with '..green('%d%%')..' Wood ATK', mp         = 42, type       = 'wood', target     = 'all', -- 1=260 / 2=290 / 3=320 / 6=410 / 8=470 / 10=530 / 12=590 / 17=740 / 23=920       levelBase   = 260, levelInc   = 30, },   ['X-Strike'] = { name       = 'X-Strike', text       = 'Attacks a single enemy with '..green('%d%%')..' ATK', mp         = 35, type       = 'attack', target     = 'single', -- 1=420 / 2=490 / 3=560 / 4=630 / 5=700 / 6=770 / 7=840 / 8=910 / 10=1050       levelBase   = 420, levelInc   = 70, }, } local function formatSkillMessage(skill, level) if skill.levels then return skill.text:format( skill.levels[level].value ) elseif skill.type == 'attackheal' then local num = skill.levelBase + (level-1)*skill.levelInc return skill.text:format( num, num ) elseif skill.type == 'attackstun' then local num = skill.levelBase + (level-1)*skill.levelInc local num2 = skill.levelBase2 + (level-1)*skill.levelInc2 return skill.text:format( num, num2 ) elseif skill.type == 'buffheal' then local num = skill.levelBase + (level-1)*skill.levelInc local num2 = skill.levelBase2 + (level-1)*skill.levelInc2 return skill.text:format( num, num2 ) elseif skill.type == 'woodheal' then local num = skill.levelBase + (level-1)*skill.levelInc local num2 = skill.levelBase2 + (level-1)*skill.levelInc2 return skill.text:format( num, num2 ) elseif skill.type == 'woodinc' then local num = skill.levelBase + (level-1)*skill.levelInc local num2 = skill.levelBase2 + (level-1)*skill.levelInc2 return skill.text:format( num, num2 ) elseif skill.target == 'random' then local num = skill.levelBase + (level-1)*skill.levelInc local num2 = skill.levelBase2 + (level-1)*skill.levelInc2 local num3 = skill.levelBase3 + (level-1)*skill.levelInc3 return skill.text:format( num2, num3, num ) elseif skill.target == 'randomstun' then local num = skill.levelBase + (level-1)*skill.levelInc local num2 = skill.levelBase2 + (level-1)*skill.levelInc2 local num3 = skill.levelBase3 + (level-1)*skill.levelInc3 local num4 = skill.levelBase4 + (level-1)*skill.levelInc4 return skill.text:format( num2, num3, num, num4 ) else local num = skill.levelBase + (level-1)*skill.levelInc return skill.text:format( num ) end end

local function formatShortSkillMessage(skill, level) local num = nil if not skill.levels then num = skill.levelBase + (level-1)*skill.levelInc end local mpTxt = " "..skill.mp.."MP"; if skill.levels or skill.type == 'buff' then return "Buff team's attack"..mpTxt elseif skill.type == 'attackheal' then return "Attack: "..skill.target.." "..green(num..'%').." + Heal: "..skill.target.." "..green(num..'%')..mpTxt elseif skill.type == 'buffheal' then local num2 = skill.levelBase2 + (level-1)*skill.levelInc2 return "Buff: "..skill.target.." "..green(num..'%').." + Heal: "..skill.target.." "..green(num2..'%')..mpTxt elseif skill.type == 'woodheal' then local num2 = skill.levelBase2 + (level-1)*skill.levelInc2 return "Wood: "..skill.target.." "..green(num..'%').." + Heal: "..skill.target.." "..green(num2..'%')..mpTxt elseif skill.type == 'woodinc' then local num2 = skill.levelBase2 + (level-1)*skill.levelInc2 return "Wood: "..skill.target.." "..green(num..'%').." + "..green(num2..'%').." per enemy"..mpTxt elseif skill.type == 'attackstun' then local num2 = skill.levelBase2 + (level-1)*skill.levelInc2 return "Attack: "..skill.target.." "..green(num..'%').." + Stun: "..skill.target.." "..green(num2..'%')..mpTxt elseif skill.target == 'random' then local num2 = skill.levelBase2 + (level-1)*skill.levelInc2 local num3 = skill.levelBase3 + (level-1)*skill.levelInc3 return "Wood: random "..num2.."-"..num3.." times at "..green(num..'%')..mpTxt elseif skill.target == 'randomstun' then local num2 = skill.levelBase2 + (level-1)*skill.levelInc2 local num3 = skill.levelBase3 + (level-1)*skill.levelInc3 local num4 = skill.levelBase4 + (level-1)*skill.levelInc4 return "Wood: random "..num2.."-"..num3.." times at "..green(num..'%').." + Stun: "..green(num..'%')..mpTxt else return firstToUpper(skill.type)..": "..skill.target.." "..green(num..'%')..mpTxt end end function p._skill(skillName) return skills[skillName] end function p._skillMessage( skillName, level ) local skill = p._skill( skillName ) if skill == nil then return 'Unknown skill: "'..skillName..'" (update Module:Skill)' end local t = {} t[#t+1] = '&#91;' t[#t+1] = ..skill.name.. t[#t+1] = ' Lv.' t[#t+1] = level t[#t+1] = '] ' t[#t+1] = formatSkillMessage(skill, level) t[#t+1] = ' ('   t[#t+1] = skill.mp    t[#t+1] = ' MP)' return table.concat(t, '') end

function p._shortSkillMessage( skillName, level ) local skill = p._skill( skillName ) if skill == nil then return '[Unknown]' end local t = {} t[#t+1] = " " t[#t+1] = ""..skill.name.."" t[#t+1] = " Lv." t[#t+1] = level t[#t+1] = " " t[#t+1] = formatShortSkillMessage(skill, level) return table.concat(t, '') end return p