|
|
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 Monsters = require('Module:Monsters')
| |
|
| |
|
| function processArea(area, index) | | function processArea(area, index) |
Line 66: |
Line 65: |
| end | | end |
| return areaArray | | return areaArray |
| end
| |
|
| |
| function p.getAreaMonsterTable(frame)
| |
| local areaName = frame.args ~= nil and frame.args[1] or frame
| |
| local area = p.getArea(areaName)
| |
| if area == nil then
| |
| return "ERROR: Could not find an area named "..areaName
| |
| end
| |
|
| |
| if area.type == 'dungeon' then
| |
| return p.getDungeonMonsterTable(frame)
| |
| end
| |
|
| |
| local tableTxt = '{| class="wikitable sortable"'
| |
| tableTxt = tableTxt..'\r\n! Name !! Combat Level !! Hitpoints !! Max Hit !! [[Combat Triangle|Combat Style]]'
| |
| for i, monsterID in pairs(area.monsters) do
| |
| local monster = Monsters.getMonsterByID(monsterID)
| |
| tableTxt = tableTxt..'\r\n|-\r\n|'..Icons.Icon({monster.name, type='monster'})
| |
| tableTxt = tableTxt..'||'..Monsters.getMonsterCombatLevel(monster.name)
| |
| tableTxt = tableTxt..'||'..Shared.formatnum(Monsters.getMonsterHP(monster.name))
| |
| tableTxt = tableTxt..'||'..Shared.formatnum(Monsters.getMonsterMaxHit(monster.name))
| |
| tableTxt = tableTxt..'||'..Monsters.getMonsterStyleIcon({monster.name, nolink='true'})
| |
| end
| |
| tableTxt = tableTxt..'\r\n|}'
| |
| return tableTxt
| |
| end
| |
|
| |
| function p.getDungeonMonsterTable(frame)
| |
| local areaName = frame.args ~= nil and frame.args[1] or frame
| |
| local area = p.getArea(areaName)
| |
| if area == nil then
| |
| return "ERROR: Could not find a dungeon named "..areaName
| |
| end
| |
|
| |
| --For Dungeons, go through and count how many of each monster are in the dungeon first
| |
| local monsterCounts = {}
| |
| for i, monsterID in pairs(area.monsters) do
| |
| if monsterCounts[monsterID] == nil then
| |
| monsterCounts[monsterID] = 1
| |
| else
| |
| monsterCounts[monsterID] = monsterCounts[monsterID] + 1
| |
| end
| |
| end
| |
|
| |
| local usedMonsters = {}
| |
|
| |
| local tableTxt = '{| class="wikitable sortable"'
| |
| tableTxt = tableTxt..'\r\n! Name !! Combat Level !! Hitpoints !! Max Hit !! [[Combat Triangle|Combat Style]] !! Count'
| |
| for i, monsterID in pairs(area.monsters) do
| |
| if not Shared.contains(usedMonsters, monsterID) then
| |
| local monster = Monsters.getMonsterByID(monsterID)
| |
| local name = monster.name
| |
| if monsterID == 51 then name = 'Spider2' end
| |
| tableTxt = tableTxt..'\r\n|-\r\n|'..Icons.Icon({name, type='monster'})
| |
| tableTxt = tableTxt..'||'..Monsters.getMonsterCombatLevel(name)
| |
| tableTxt = tableTxt..'||'..Shared.formatnum(Monsters.getMonsterHP(name))
| |
| tableTxt = tableTxt..'||'..Shared.formatnum(Monsters.getMonsterMaxHit(name))
| |
| tableTxt = tableTxt..'||'..Monsters.getMonsterStyleIcon({name, nolink='true'})
| |
| tableTxt = tableTxt..'||'..monsterCounts[monsterID]
| |
| table.insert(usedMonsters, monsterID)
| |
| end
| |
| end
| |
| tableTxt = tableTxt..'\r\n|}'
| |
| return tableTxt
| |
| end | | end |
|
| |
|
| return p | | return p |