This Module handles the creation of Area Pages, it uses the data from Module:Area_DB and Module:Enemy_DB.
It also is responsible for creating the tabs with all enemies of the game in Monsters page.
u = require("Module:Util") adb = require("Module:Area_DB") edb = require("Module:Enemy_DB") lt = require("Module:Loot_Table") et = require("Module:Enemies") local p = {} function p.enemies_in_area(name) j = 1 while edb[j] and edb[j][2] ~= name do j = j + 1 end result = {} while edb[j] and edb[j][2] == name do table.insert(result, edb[j]) j = j + 1 end return result end function p.area_enemy_tabber(areaEnemies) local enemies = {} if type(areaEnemies) == 'string' then for _, enemy in ipairs(edb) do if enemy[2] == areaEnemies then table.insert(enemies, enemy) end end else enemies = areaEnemies end local result = "<div class='dTabs'>" for index, e in ipairs(enemies) do result = result .. [[<htmltag tagname="input" type="radio" class="dTabsRadio" name="]] .. e[2] .. [[" id="]] .. e[1] .. [["]] if index == 1 then result = result .. ' checked' end result = result .. [[></htmltag><htmltag tagname="label" for="]] .. e[1] .. [[" class="dTabsLabel">]] .. e[1] .. [[</htmltag> <div class="dTabsContent dTabsSubcontent"> ]] .. et.enemy_table(e) .. [[ </div>]] end return result .. "</div>" end function p.area_infobox(name) i = 0 area = nil for j, e in ipairs(adb) do if e[1] == name then i = j area = e break end end enemies = p.enemies_in_area(name) enemies_string = '' for _, e in ipairs(enemies) do enemies_string = enemies_string .. '[[File: ' .. (e['raw_image'] and e['raw_image'] or ((e['image'] or e[1]:gsub(' ', ''):gsub('%(', ''):gsub('%)', '')) .. 'Monster.png')) .. '|40x40px|link=' .. e[1] .. ']]' end result = [[ {{Infobox Areas |title= ]] .. name .. [[ |image= ]] .. name:gsub(' ', ''):gsub('%(', ''):gsub('%)', '') .. '.png' .. [[ |energy= ]] .. area[2] .. [[ |fightPoints= ]] .. area[3] .. [[ |encounters= ]] .. enemies_string .. [[ }}]] result = [[ <div class="float" style="float:right; width:340px; padding-left: 35px;"> ]] .. result .. [[ </div>]] return result end function p.area_enemies(name) local enemies = p.enemies_in_area(name) return [[<h2 style="clear:both">Enemies</h2> ]] .. p.area_enemy_tabber(enemies) end function p.area_navbox() return [[{{Navbox Monsters}} ]] .. '[[Category:Combat Areas]]' end function p.area_all_tabber() result = [[ <tabber> ]] for _, e in ipairs(adb) do if table.getn(e) > 4 then result = result .. e[1] .. [[= |-| ]] end end return result:sub(1, -5) .. [[</tabber> ]] end function p.ap(frame) return p.area_page(frame.args[1] or frame:getParent():getTitle()) end function p.taet(frame) return p.area_enemy_tabber(p.enemies_in_area(frame.args[1] or frame:getParent():getTitle())) end return p