4,951
edits
Falterfire (talk | contribs) (Moving getAreaMonsterTable out to Module:Monsters to prevent loop) |
Falterfire (talk | contribs) (Tweaked processArea code to make sure a type is always added properly) |
||
(3 intermediate revisions 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 | ||
result.type = type | |||
return result | return result | ||
end | end | ||
Line 21: | Line 20: | ||
function p.getArea(name) | function p.getArea(name) | ||
local result = nil | local result = nil | ||
--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 | ||
return nil | return nil | ||
end | |||
function p.getAreaByID(type, id) | |||
if type == 'dungeon' then type = 'dungeons' | |||
elseif type == 'combat' then type = 'combatAreas' | |||
elseif type == 'slayer' then type = 'slayerAreas' end | |||
return processArea(AreaData[type][id + 1], id + 1) | |||
end | |||
function p.getAreaStat(frame) | |||
local areaName = frame.args ~= nil and frame.args[1] or frame[1] | |||
local statName = frame.args ~= nil and frame.args[2] or frame[2] | |||
local area = p.getArea(areaName) | |||
if area == nil then | |||
return "ERROR: Could not find an area named "..areaName | |||
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] | |||
end | end | ||
Line 49: | 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 55: | 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 61: | 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 |