Anonymous

Module:Monsters/Tables: Difference between revisions

From Melvor Idle
Use tabs instead of spaces for indentation
mNo edit summary
(Use tabs instead of spaces for indentation)
Line 9: Line 9:


function p.getFullStormsnapTable(frame)
function p.getFullStormsnapTable(frame)
  local monsterIDs = {}
local monsterIDs = {}
  for i = 0, Shared.tableCount(MonsterData.Monsters) - 1, 1 do
for i = 0, Shared.tableCount(MonsterData.Monsters) - 1, 1 do
    table.insert(monsterIDs, i)
table.insert(monsterIDs, i)
  end
end


  return p._getStormsnapTable(monsterIDs, false)
return p._getStormsnapTable(monsterIDs)
end
end


function p._getStormsnapTable(monsterIDs, excludeDungeons)
function p._getStormsnapTable(monsterIDs)
  --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 tableParts = {}
  local tableParts = {}
table.insert(tableParts, '{| class="wikitable sortable stickyHeader" style="width: 100%;"')
  table.insert(tableParts, '{| class="wikitable sortable stickyHeader" style="width: 100%;"')


  table.insert(tableParts, '\r\n|- class="headerRow-1"\r\n!Monster !!Name ')
table.insert(tableParts, '\r\n|- class="headerRow-1"\r\n!Monster !!Name ')
  table.insert(tableParts, '!!style="padding:1 1em 0 0"|' .. Icons.Icon({'Magic', type='skill', notext=true}) .. ' Magic Level')
table.insert(tableParts, '!!style="padding:1 1em 0 0"|' .. Icons.Icon({'Magic', type='skill', notext=true}) .. ' Magic Level')
  table.insert(tableParts, '!!style="padding:0 1em 0 0"|' .. Icons.Icon({'Ranged', type='skill', notext=true}) .. ' Ranged Attack Bonus')
table.insert(tableParts, '!!style="padding:0 1em 0 0"|' .. Icons.Icon({'Ranged', type='skill', notext=true}) .. ' Ranged Attack Bonus')
  table.insert(tableParts, '!!style="padding:0 1em 0 0"|' .. Icons.Icon({'Strength', type='skill', notext=true}) .. ' Ranged Strength Bonus')
table.insert(tableParts, '!!style="padding:0 1em 0 0"|' .. Icons.Icon({'Strength', type='skill', notext=true}) .. ' Ranged Strength Bonus')




  -- Generate row per monster
-- Generate row per monster
  for i, monsterID in Shared.skpairs(monsterIDs) do
for i, monsterID in Shared.skpairs(monsterIDs) do
    local monster = Monsters.getMonsterByID(monsterID)
local monster = Monsters.getMonsterByID(monsterID)
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)
local rangedAttBonus = math.floor(102 * (1 + ((6 * magicLevel)/5500)))
local rangedAttBonus = math.floor(102 * (1 + ((6 * magicLevel)/5500)))
if magicLevel > 1 then
if magicLevel > 1 then
    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|-\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" |' .. Icons.Icon({monster.name, type='monster', noicon=true}))
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" data-sort-value="' .. magicLevel .. '" |' .. Shared.formatnum(magicLevel))
table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. magicLevel .. '" |' .. Shared.formatnum(magicLevel))
table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. rangedAttBonus .. '" |' .. Shared.formatnum(rangedAttBonus))
table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. rangedAttBonus .. '" |' .. Shared.formatnum(rangedAttBonus))
table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. rangedStrBonus .. '" |' .. Shared.formatnum(rangedStrBonus))
table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. rangedStrBonus .. '" |' .. Shared.formatnum(rangedStrBonus))
end
end
end
  end


  table.insert(tableParts, '\r\n|}')
table.insert(tableParts, '\r\n|}')
  return table.concat(tableParts)
return table.concat(tableParts)
end
end


function p.getFullMonsterTable(frame)
function p.getFullMonsterTable(frame)
  local monsterIDs = {}
local monsterIDs = {}
  for i = 0, Shared.tableCount(MonsterData.Monsters) - 1, 1 do
for i = 0, Shared.tableCount(MonsterData.Monsters) - 1, 1 do
    table.insert(monsterIDs, i)
table.insert(monsterIDs, i)
  end
end


  return p._getMonsterTable(monsterIDs, false)
return p._getMonsterTable(monsterIDs, false)
end
end


function p._getMonsterTable(monsterIDs, excludeDungeons)
function p._getMonsterTable(monsterIDs, 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 = {}
  --wikitable sortable align-center-1 align-left-2 align-left-3 align-center-4 align-center-5 align-center-6 align-center-7 align-center-8 align-center-9 jquery-tablesorter
--wikitable sortable align-center-1 align-left-2 align-left-3 align-center-4 align-center-5 align-center-6 align-center-7 align-center-8 align-center-9 jquery-tablesorter
  table.insert(tableParts, '{| class="wikitable sortable stickyHeader jquery-tablesorter" style="width: 100%;"')
table.insert(tableParts, '{| class="wikitable sortable stickyHeader jquery-tablesorter" style="width: 100%;"')
  -- 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! colspan="2"|Monster !!ID !!style="width: 5%;"|Combat Level ')
table.insert(tableParts, '\r\n|- class="headerRow-1"\r\n! colspan="2"|Monster !!ID !!style="width: 5%;"|Combat Level ')
  table.insert(tableParts, '!!style="padding:0 1em 0 0"|' .. Icons.Icon({'Hitpoints', type='skill', notext=true}))
table.insert(tableParts, '!!style="padding:0 1em 0 0"|' .. Icons.Icon({'Hitpoints', type='skill', notext=true}))
  table.insert(tableParts, '!!Attack Type !!style="width: 5%;"|Attack Speed (s) !!Max Hit !!Accuracy ')
table.insert(tableParts, '!!Attack Type !!style="width: 5%;"|Attack Speed (s) !!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, '!!Bones !!Locations')


  -- Generate row per monster
-- Generate row per monster
  for i, monsterID in Shared.skpairs(monsterIDs) do
for i, monsterID in Shared.skpairs(monsterIDs) do
    local monster = Monsters.getMonsterByID(monsterID)
local monster = Monsters.getMonsterByID(monsterID)
    local cmbLevel = Monsters._getMonsterCombatLevel(monster)
local cmbLevel = Monsters._getMonsterCombatLevel(monster)
    local atkSpeed = Monsters._getMonsterAttackSpeed(monster)
local atkSpeed = Monsters._getMonsterAttackSpeed(monster)
    local maxHit = Monsters._getMonsterMaxHit(monster)
local maxHit = Monsters._getMonsterMaxHit(monster)
    local accR = Monsters._getMonsterAR(monster)
local accR = Monsters._getMonsterAR(monster)
    local evaR = {Monsters._getMonsterER(monster, "Melee"), Monsters._getMonsterER(monster, "Ranged"), Monsters._getMonsterER(monster, "Magic")}
local evaR = {Monsters._getMonsterER(monster, "Melee"), Monsters._getMonsterER(monster, "Ranged"), Monsters._getMonsterER(monster, "Magic")}


    local lootChance = monster.lootChance ~= nil and monster.lootChance or 100
local lootChance = monster.lootChance ~= nil and monster.lootChance or 100
    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
      gpRange = {monster.dropCoins[1], monster.dropCoins[2]}
gpRange = {monster.dropCoins[1], monster.dropCoins[2]}
    end
end
    local gpTxt = nil
local gpTxt = nil
    if gpRange[1] >= gpRange[2] then
if gpRange[1] >= gpRange[2] then
      gpTxt = Icons.GP(gpRange[1])
gpTxt = Icons.GP(gpRange[1])
    else
else
      gpTxt = Icons.GP(gpRange[1], gpRange[2])
gpTxt = Icons.GP(gpRange[1], gpRange[2])
    end
end
    local boneTxt = 'None'
local boneTxt = 'None'
    if monster.bones ~= nil and monster.bones >= 0 then
if monster.bones ~= nil and monster.bones >= 0 then
      local bones = Items.getItemByID(monster.bones)
local bones = Items.getItemByID(monster.bones)
      boneTxt = Icons.Icon({bones.name, type='item', notext=true})
boneTxt = Icons.Icon({bones.name, type='item', notext=true})
    end
end


    table.insert(tableParts, '\r\n|-\r\n|style="text-align: center; border-right-width: 0px;" |' .. Icons.Icon({monster.name, type='monster', size=50, notext=true}))
table.insert(tableParts, '\r\n|-\r\n|style="text-align: center; border-right-width: 0px;" |' .. Icons.Icon({monster.name, type='monster', size=50, notext=true}))
    table.insert(tableParts, '\r\n|style="text-align:left; border-left-width: 0px; width: 15%;" |' .. Icons.Icon({monster.name, type='monster', noicon=true}))
table.insert(tableParts, '\r\n|style="text-align:left; border-left-width: 0px; width: 15%;" |' .. Icons.Icon({monster.name, type='monster', noicon=true}))
    table.insert(tableParts, '\r\n|style="text-align:right" |' .. monsterID)
table.insert(tableParts, '\r\n|style="text-align:right" |' .. monsterID)
    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="' .. Monsters._getMonsterHP(monster) .. '" |' .. Shared.formatnum(Monsters._getMonsterHP(monster)))
table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. Monsters._getMonsterHP(monster) .. '" |' .. Shared.formatnum(Monsters._getMonsterHP(monster)))
    table.insert(tableParts, '\r\n|style="text-align:center" |' .. Monsters._getMonsterStyleIcon({monster, notext=true}))
table.insert(tableParts, '\r\n|style="text-align:center" |' .. Monsters._getMonsterStyleIcon({monster, notext=true}))
    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: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))
    table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. evaR[1] .. '" |' .. Shared.formatnum(evaR[1]))
table.insert(tableParts, '\r\n|style="text-align:right" data-sort-value="' .. evaR[1] .. '" |' .. Shared.formatnum(evaR[1]))
    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:center" |' .. boneTxt)
table.insert(tableParts, '\r\n|style="text-align:center" |' .. boneTxt)
    table.insert(tableParts, '\r\n|style="text-align:right;white-space:pre-line;" |' .. Monsters._getMonsterAreas(monster, hideDungeons))
table.insert(tableParts, '\r\n|style="text-align:right;white-space:pre-line;" |' .. Monsters._getMonsterAreas(monster, hideDungeons))
  end
end


  table.insert(tableParts, '\r\n|}')
table.insert(tableParts, '\r\n|}')
  return table.concat(tableParts)
return table.concat(tableParts)
end
end


return p
return p