Documentation for this module may be created at Module:Enemies/doc
u = require("Module:Util") edb = require("Module:Enemy_DB") adb = require("Module:Area_DB") inspect = require("Module:InspectLua") lt = require("Module:Loot_Table") local p = {} function round(n) return n + 0.5 - (n + 0.5) % 1 end function p.enemy_table(enemy) local result = [[]] if next(enemy[8]) == nil then return '' end return lt.lt(enemy[1],enemy[8]) end function p.enemy_stats(enemy) return [[{{{!}} class="article-table" ! Enemy !]] .. '[[File: Heart.png{{!}}20px]]' .. [[ !]] .. '[[File: Attack.png{{!}}20px]]' .. [[ !]] .. '[[File: Accuracy.png{{!}}20px]]' .. [[ !]] .. '[[File: Speed.png{{!}}20px]]' .. [[ !]] .. '[[File: Defence.png{{!}}20px]]' .. [[ {{!}}- {{!}}]] .. '[[' .. [[File: ]] .. (enemy['raw_image'] and enemy['raw_image'] or ((enemy['image'] or enemy[1]:gsub(' ', ''):gsub('%(', ''):gsub('%)', '')) .. 'Monster.png')) .. [[{{!}}40px{{!}}link=]] .. enemy[1] .. ']]' .. [[ {{!}}]] .. enemy[7] .. [[ {{!}}]] .. enemy[3] .. [[ {{!}}]] .. enemy[4] .. [[ {{!}}]] .. enemy[5] .. [[ {{!}}]] .. enemy[6] .. [[ {{!}}} ]] .. p.enemy_table(enemy) end function p.enemy_zone_tabber(areaEnemies) local enemies = {} local result = "" 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 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"> ]] .. p.enemy_stats(e):gsub('|', '{{!}}') .. [[ </div>]] end return result end function p.enemy_all_tabber() local result = [[<div class="dTabs">]] for idx, a in ipairs(adb) do if a ~= 'Fields2' then result = result .. '<htmltag tagname="input" type="radio" class="dTabsRadio" name="Areas" id="' .. a[1] .. '"' if idx == 1 then result = result .. ' checked' end result = result .. [[></htmltag><htmltag tagname="label" for="]] .. a[1] .. [[" class="dTabsLabel">]] .. a[1] .. [[</htmltag> <div class="dTabsContent">]] result = result .. p.enemy_zone_tabber(a[1]) .. [[</div>]] end end return result .. [[</div>]] end function p.enemy_page_before(name) local enemy = nil if type(name) == 'table' then enemy = name name = name[1] else for _, e in ipairs(edb) do if e[1] == name then enemy = e break end end end return [[ {{Infobox Monsters | title= ]] .. enemy[1] .. [[ | image= ]] .. (enemy['raw_image'] and enemy['raw_image'] or ((enemy['image'] or enemy[1]:gsub(' ', ''):gsub('%(', ''):gsub('%)', '')) .. 'Monster.png')) .. [[ | imagewidth= 90 | health= ]] .. enemy[7] .. [[ | damage= ]] .. enemy[3] .. [[ | accuracy= ]] .. enemy[4] .. [[ | speed= ]] .. enemy[5] .. [[ | defence= ]] .. enemy[6] .. [[ | areas= ]] .. enemy[2] .. [[ }}]] end function p.enemy_page_after(name) local enemy = nil if type(name) == 'table' then enemy = name name = name[1] else for _, e in ipairs(edb) do if e[1] == name then enemy = e break end end end return [[{{Navbox Monsters}} ]] .. '[[Category:' .. enemy[2] .. ']] [[Category:Monsters]]' .. [[ ]] end function p.enemy_page(name) local enemy = nil for _, e in ipairs(edb) do if e[1] == name then enemy = e break end end return p.enemy_page_before(enemy) .. [[ == Loot == ]] .. p.enemy_table(enemy) .. p.enemy_page_after(enemy) end function p.tep(frame) return p.enemy_page(frame.args[1] or frame:getParent():getTitle()) end function p.tepb(frame) return p.enemy_page_before(frame.args[1] or frame:getParent():getTitle()) end function p.tepa(frame) return p.enemy_page_after(frame.args[1] or frame:getParent():getTitle()) end function p.tezt(frame) return p.enemy_zone_tabber(frame.args[1] or frame:getParent():getTitle()) end function p.tet(frame) local name = frame.args[1] or frame:getParent():getTitle() for _, e in ipairs(edb) do if e[1] == name then return [[ == Loot == ]] .. p.enemy_table(e) end end end function p.tes(frame) local name = frame.args[1] or frame:getParent():getTitle() for _, e in ipairs(edb) do if e[1] == name then return p.enemy_stats(e) end end end return p