17,105
edits
(Use tabs instead of spaces for indentation) |
(Update for v1.1) |
||
Line 1: | Line 1: | ||
p = {} | local p = {} | ||
local Shared = require('Module:Shared') | |||
local GameData = require('Module:GameData') | |||
local Monsters = require('Module:Monsters') | local Monsters = require('Module:Monsters') | ||
local Icons = require('Module:Icons') | local Icons = require('Module:Icons') | ||
function p.getFullStormsnapTable(frame) | function p.getFullStormsnapTable(frame) | ||
--Making a single function for getting a table of monsters given a list of IDs. | --Making a single function for getting a table of monsters given a list of IDs. | ||
local tableParts = {} | local tableParts = {} | ||
Line 29: | Line 18: | ||
-- Generate row per monster | -- Generate row per monster | ||
for i, | for i, monster in ipairs(GameData.rawData.monsters) do | ||
local magicLevel = Monsters._getMonsterLevel(monster, 'Magic') | local magicLevel = Monsters._getMonsterLevel(monster, 'Magic') | ||
local rangedStrBonus = 111 + math.floor((6 * magicLevel)/33) | local rangedStrBonus = 111 + math.floor((6 * magicLevel)/33) | ||
Line 49: | Line 37: | ||
function p.getFullMonsterTable(frame) | function p.getFullMonsterTable(frame) | ||
return p._getMonsterTable(GameData.rawData.monsters, false) | |||
return p._getMonsterTable( | |||
end | end | ||
function p._getMonsterTable( | function p._getMonsterTable(monsters, excludeDungeons) | ||
--Making a single function for getting a table of monsters given a list of IDs. | --Making a single function for getting a table of monsters given a list of IDs. | ||
local hideDungeons = excludeDungeons ~= nil and excludeDungeons or false | local hideDungeons = excludeDungeons ~= nil and excludeDungeons or false | ||
local tableParts = {} | local tableParts = {} | ||
table.insert(tableParts, '{| class="wikitable sortable stickyHeader"') | |||
table.insert(tableParts, '{| class="wikitable sortable stickyHeader | |||
-- First header row | -- First header row | ||
table.insert(tableParts, '\r\n|- class="headerRow-0"\r\n! colspan="5" | !! colspan="4" |Offensive Stats !! colspan="3" |Evasion Rating !! colspan="4" |') | table.insert(tableParts, '\r\n|- class="headerRow-0"\r\n! colspan="5" | !! colspan="4" |Offensive Stats !! colspan="3" |Evasion Rating !! colspan="4" |') | ||
-- Second header row | -- Second header row | ||
table.insert(tableParts, '\r\n|- class="headerRow-1"\r\n! | table.insert(tableParts, '\r\n|- class="headerRow-1"\r\n!Monster !!Name !!ID !!Combat Level ') | ||
table.insert(tableParts, '!!style="padding:0 1em 0 0"|' .. Icons.Icon({'Hitpoints', type='skill' | table.insert(tableParts, '!!style="padding:0 1em 0 0"|' .. Icons.Icon({'Hitpoints', type='skill'})) | ||
table.insert(tableParts, '!!Attack | table.insert(tableParts, '!!Attack Speed (s) !!colspan="2"|Max Hit !!Accuracy ') | ||
table.insert(tableParts, '!!style="padding:0 1em 0 0"|' .. Icons.Icon({'Defence', type='skill', notext=true})) | table.insert(tableParts, '!!style="padding:0 1em 0 0"|' .. Icons.Icon({'Defence', type='skill', notext=true})) | ||
table.insert(tableParts, '!!style="padding:0 1em 0 0"|' .. Icons.Icon({'Ranged', type='skill', notext=true})) | table.insert(tableParts, '!!style="padding:0 1em 0 0"|' .. Icons.Icon({'Ranged', type='skill', notext=true})) | ||
table.insert(tableParts, '!!style="padding:0 1em 0 0"|' .. Icons.Icon({'Magic', type='skill', notext=true})) | table.insert(tableParts, '!!style="padding:0 1em 0 0"|' .. Icons.Icon({'Magic', type='skill', notext=true})) | ||
table.insert(tableParts, '!!Bones !!Locations') | table.insert(tableParts, '!!' .. Icons.Icon({'Coins', notext=true, nolink=true}) .. ' Coins !!Bones !!Locations') | ||
-- Generate row per monster | -- Generate row per monster | ||
for i, | for i, monster in ipairs(monsters) do | ||
local cmbLevel = p._getMonsterCombatLevel(monster) | |||
local cmbLevel = | local atkSpeed = p._getMonsterAttackSpeed(monster) | ||
local atkSpeed = | local maxHit = p._getMonsterMaxHit(monster) | ||
local maxHit = | local accR = p._getMonsterAR(monster) | ||
local accR = | local evaR = {p._getMonsterER(monster, "Melee"), p._getMonsterER(monster, "Ranged"), p._getMonsterER(monster, "Magic")} | ||
local evaR = { | |||
local gpRange = {0, 0} | local gpRange = {0, 0} | ||
if monster.dropCoins ~= nil and monster.dropCoins[2] > 1 then | if monster.dropCoins ~= nil and monster.dropCoins[2] > 1 then | ||
Line 89: | Line 69: | ||
end | end | ||
local gpTxt = nil | local gpTxt = nil | ||
if | if monster.gpDrops.min >= monster.gpDrops.max then | ||
gpTxt = | gpTxt = Shared.formatnum(monster.gpDrops.min) | ||
else | else | ||
gpTxt = | gpTxt = Shared.formatnum(monster.gpDrops.min) .. ' - ' .. Shared.formatnum(monster.gpDrops.max) | ||
end | end | ||
local bones = p._getMonsterBones(monster) | |||
local boneTxt = (bones ~= nil and Icons.Icon({bones.item.name, type='item', notext=true})) or 'None' | |||
table.insert(tableParts, '\r\n|-\r\n|style="text-align: center | table.insert(tableParts, '\r\n|-\r\n|style="text-align: center;" |' .. Icons.Icon({monster.name, type='monster', size=50, notext=true})) | ||
table.insert(tableParts, '\r\n|style="text-align:left | table.insert(tableParts, '\r\n|style="text-align:left" |' .. Icons.Icon({monster.name, type='monster', noicon=true})) | ||
table.insert(tableParts, '\r\n|style="text-align:right" |' .. | table.insert(tableParts, '\r\n|style="text-align:right" |' .. monster.id) | ||
table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. cmbLevel .. '" |' .. Shared.formatnum(cmbLevel)) | table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. cmbLevel .. '" |' .. Shared.formatnum(cmbLevel)) | ||
table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. | table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. p._getMonsterHP(monster) .. '" |' .. Shared.formatnum(p._getMonsterHP(monster))) | ||
table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. atkSpeed .. '" |' .. Shared.round(atkSpeed, 1, 1)) | table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. atkSpeed .. '" |' .. Shared.round(atkSpeed, 1, 1)) | ||
table.insert(tableParts, '\r\n|style="text-align:center;border-right:hidden" |' .. p._getMonsterStyleIcon({monster, notext=true})) | |||
table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. maxHit .. '" |' .. Shared.formatnum(maxHit)) | table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. maxHit .. '" |' .. Shared.formatnum(maxHit)) | ||
table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. accR .. '" |' .. Shared.formatnum(accR)) | table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. accR .. '" |' .. Shared.formatnum(accR)) | ||
Line 112: | Line 89: | ||
table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. evaR[2] .. '" |' .. Shared.formatnum(evaR[2])) | table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. evaR[2] .. '" |' .. Shared.formatnum(evaR[2])) | ||
table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. evaR[3] .. '" |' .. Shared.formatnum(evaR[3])) | table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. evaR[3] .. '" |' .. Shared.formatnum(evaR[3])) | ||
table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. (monster.gpDrops.min + monster.gpDrops.max) / 2 .. '" |' .. gpTxt) | |||
table.insert(tableParts, '\r\n|style="text-align:center" |' .. boneTxt) | table.insert(tableParts, '\r\n|style="text-align:center" |' .. boneTxt) | ||
table.insert(tableParts, '\r\n|style="text-align:right; | table.insert(tableParts, '\r\n|style="text-align:right;width:190px" |' .. p._getMonsterAreas(monster, hideDungeons)) | ||
end | end | ||