Anonymous

Module:CombatAreas: Difference between revisions

From Melvor Idle
Tweaked processArea code to make sure a type is always added properly
(Added getAreaStat)
(Tweaked processArea code to make sure a type is always added properly)
(One intermediate revision by the same user not shown)
Line 6: Line 6:
local Shared = require('Module:Shared')
local Shared = require('Module:Shared')
local Icons = require('Module:Icons')
local Icons = require('Module:Icons')
local Items = require('Module:Items')


function processArea(area, index)
function processArea(area, index, type)
   local result = Shared.clone(area)
   local result = Shared.clone(area)
   result.id = index - 1
   result.id = index - 1
Line 13: Line 14:
     result.name = result.areaName
     result.name = result.areaName
   end
   end
   if Shared.contains(result.type, 'Dungeon') then
   result.type = type
    result.type = 'dungeon'
  end
   return result
   return result
end
end
Line 21: Line 20:
function p.getArea(name)
function p.getArea(name)
   local result = nil
   local result = nil
  mw.log(name)
   --There are three types of areas but the lists are pretty short so looping all of them isn't a real issue
   --There are three types of areas but the lists are pretty short so looping all of them isn't a real issue
   for i, area in pairs(AreaData.combatAreas) do
   for i, area in pairs(AreaData.combatAreas) do
     if area.areaName == name then
     if area.areaName == name then
       return processArea(area, i)
       return processArea(area, i, 'combat')
     end
     end
   end
   end
Line 31: Line 29:
   for i, area in pairs(AreaData.slayerAreas) do
   for i, area in pairs(AreaData.slayerAreas) do
     if area.areaName == name then
     if area.areaName == name then
       return processArea(area, i)
       return processArea(area, i, 'slayer')
     end
     end
   end
   end
Line 37: Line 35:
   for i, area in pairs(AreaData.dungeons) do
   for i, area in pairs(AreaData.dungeons) do
     if area.name == name then
     if area.name == name then
       return processArea(area, i)
       return processArea(area, i, 'dungeon')
     end
     end
   end
   end
Line 58: Line 56:
     return "ERROR: Could not find an area named "..areaName
     return "ERROR: Could not find an area named "..areaName
   end
   end
  if statName == 'slayerLevel' then
    return Icons._SkillReq('Slayer', area.slayerLevel)
  end
  if statName == 'slayerItem' then
    if area.slayerItem ~= nil and area.slayerItem > 0 then
      local slayItem = Items.getItemByID(area.slayerItem)
      return Icons.Icon({slayItem.name, type='item'})
    else
      return 'None'
    end
  end
   return area[statName]
   return area[statName]
end
end
Line 66: Line 76:
   for i, area in pairs(AreaData.combatAreas) do
   for i, area in pairs(AreaData.combatAreas) do
     if Shared.contains(area.monsters, monsterID) then
     if Shared.contains(area.monsters, monsterID) then
       table.insert(areaArray, processArea(area, i))
       table.insert(areaArray, processArea(area, i, 'combat'))
     end
     end
   end
   end
Line 72: Line 82:
   for i, area in pairs(AreaData.slayerAreas) do
   for i, area in pairs(AreaData.slayerAreas) do
     if Shared.contains(area.monsters, monsterID) then
     if Shared.contains(area.monsters, monsterID) then
       table.insert(areaArray, processArea(area, i))
       table.insert(areaArray, processArea(area, i, 'slayer'))
     end
     end
   end
   end
Line 78: Line 88:
   for i, area in pairs(AreaData.dungeons) do
   for i, area in pairs(AreaData.dungeons) do
     if Shared.contains(area.monsters, monsterID) then
     if Shared.contains(area.monsters, monsterID) then
       table.insert(areaArray, processArea(area, i))
       table.insert(areaArray, processArea(area, i, 'dungeon'))
     end
     end
   end
   end