Anonymous
×
Create a new article
Write your page title here:
We currently have 895 articles on WIKI - Flat MMO. Type your article name above or click on one of the titles below and start writing!



WIKI - Flat MMO
895Articles

Module:Enemies: Difference between revisions

No edit summary
No edit summary
Line 73: Line 73:
     for i, e in ipairs(enemies) do
     for i, e in ipairs(enemies) do
         local tab = {}
         local tab = {}
         tab.label = "[[File:" .. e[1] .. ".png{{!}}25x25px{{!}}link{{=}}]] " .. u.formatName(e[1])
         tab.label = "[[File:" .. e[1] .. ".png{{!}}25x25px{{!}}link__TABBER_EQ__]] " .. u.formatName(e[1])
         tab.content = p.enemy_stats(e):gsub('|', '{{!}}')
         tab.content = p.enemy_stats(e):gsub('|', '{{!}}')
         table.insert(tabs, tab)
         table.insert(tabs, tab)

Revision as of 03:02, 25 October 2025

Documentation for this module may be created at Module:Enemies/doc

  1 u = require("Module:Util");
  2 lt = require("Module:Loot_Table");
  3 edb = require("Module:Enemies_DB");
  4 -- Format: {Name, Area, Damage, Accuracy, Defence, Magic Defence, HP, Weakness, {Loot1,Loot2}, Is Boss(optional), Image Path(optional)}
  5 local p = {};
  6 
  7 function p.get_enemy_from_name(name)
  8     for _, e in ipairs(edb) do
  9         if u.formatName(e[1]) == name then
 10             return e
 11         end
 12     end
 13     return nil
 14 end
 15 
 16 function p.enemy_table(enemy)
 17     if type(enemy) ~= "table" then
 18         enemy = p.get_enemy_from_name(enemy)
 19     end
 20     if enemy == nil or next(enemy[9]) == nil then
 21         return ''
 22     end
 23     return lt.lt(enemy[1],enemy[9])
 24 end
 25 
 26 function p.enemy_stats(name)
 27     local enemy = nil
 28     if type(name) == 'table' then
 29         enemy = name
 30     else
 31         enemy = p.get_enemy_from_name(name)
 32     end
 33 	return [=[{{{!}} class="article-table"
 34 ! Enemy
 35 ![[File:health.png{{!}}20px{{!}}link=]] Health
 36 ![[File:damage.png{{!}}20px{{!}}link=]] Damage
 37 ![[File:accuracy.png{{!}}20px{{!}}link=]] Accuracy
 38 ![[File:defence.png{{!}}20px{{!}}link=]] Defense
 39 ![[File:magic_defence.png{{!}}20px{{!}}link=]] Magic Defense
 40 ![[File:weapon_type.png{{!}}20px{{!}}link=]]  Weakness
 41 {{!}}-
 42 {{!}} [[File: ]=] .. (enemy[11] and enemy[11] or (enemy[1] .. '.png')) .. [[{{!}}40px{{!}}link=]] .. u.formatName(enemy[1]) .. ']]\n'.. u.formatName(enemy[1]) .. [[
 43 
 44 {{!}}]] .. enemy[7] .. [[
 45 
 46 {{!}}]] .. enemy[3] .. [[
 47 
 48 {{!}}]] .. enemy[4] .. [[
 49 
 50 {{!}}]] .. enemy[5] .. [[
 51 
 52 {{!}}]] .. enemy[6] .. [[
 53 
 54 {{!}}]] .. u.formatName(enemy[8]) .. [[
 55 
 56 {{!}}}
 57 
 58 ]] .. p.enemy_table(enemy)
 59 end
 60 
 61 function p.enemy_zone_tabber(areaEnemies)
 62     local enemies = {}
 63     local tabs = {}
 64     if type(areaEnemies) == 'string' then
 65         for _, enemy in ipairs(edb) do
 66             if enemy[2] == areaEnemies then
 67                 table.insert(enemies, enemy)
 68             end
 69         end
 70     else
 71         enemies = areaEnemies
 72     end
 73     for i, e in ipairs(enemies) do
 74         local tab = {}
 75         tab.label = "[[File:" .. e[1] .. ".png{{!}}25x25px{{!}}link__TABBER_EQ__]] " .. u.formatName(e[1])
 76         tab.content = p.enemy_stats(e):gsub('|', '{{!}}')
 77         table.insert(tabs, tab)
 78     end
 79     return mw.ext.tabber.render(tabs)
 80 end 
 81 
 82 function p.enemy_all_tabber()
 83     local areas = {}
 84     local result = "<tabber>"
 85     for _, e in ipairs(edb) do
 86         if areas[e[2]] == nil then
 87             areas[e[2]] = {}
 88         end
 89         table.insert(areas[e[2]], e)
 90     end
 91 	for a, e in pairs(areas) do
 92         result = result .. "\n|-|" .. a .. "=\n" .. p.enemy_zone_tabber(e)
 93     end
 94     return result .. "</tabber>"
 95 end
 96 
 97 function p.enemy_page_before(name)
 98     local enemy = nil
 99     if type(name) == 'table' then
100         enemy = name
101         name = u.formatName(name[1])
102     else
103         for _, e in ipairs(edb) do
104             if u.formatName(e[1]) == name then
105                 enemy = e
106                 break
107             end
108         end
109     end
110     return [[
111 {{Infobox Enemies
112 | title= ]] .. u.formatName(enemy[1]) .. [[
113 | image= ]] .. (enemy[11] and enemy[11] or (enemy[1] .. '.png'))  .. [[
114 | imagewidth= 90
115 | health= ]] .. enemy[7] .. [[
116 | accuracy= ]] .. enemy[4] .. [[
117 | damage= ]] .. enemy[3] .. [[
118 | defence= ]] .. enemy[5] .. [[
119 | magicDefence= ]] .. enemy[6] .. [[
120 | weakness= ]] .. enemy[8] .. [[
121 }}]]
122 end
123 function p.enemy_page_after(name)
124     local enemy = nil
125     if type(name) == 'table' then
126         enemy = name
127     else
128         enemy = p.get_enemy_from_name(name)
129     end
130     return [[{{Navbox Enemies}}
131 ]] .. (enemy[2] and '[[Category:' .. enemy[2] .. ']]' or "") .. (enemy[8] ~= "none" and "[[Category:Enemies Weak to " .. enemy[8] .. "]]" or "") .. '[[Category:Enemies]]' .. [[
132 ]]
133 end
134 
135 -- Infobox
136 function p.tepb(frame)
137     return mw.getCurrentFrame():preprocess(p.enemy_page_before(frame.args[1] or frame:getParent():getTitle()))
138 end
139 -- Loot Table
140 function p.tet(frame)
141     return mw.getCurrentFrame():preprocess("\n= Loot =\n" .. p.enemy_table(frame.args[1] or frame:getParent():getTitle()))
142 end
143 --Category and navbox
144 function p.tepa(frame)
145     return mw.getCurrentFrame():preprocess(p.enemy_page_after(frame.args[1] or frame:getParent():getTitle()))
146 end
147 
148 --Area
149 function p.ta(frame)
150     return mw.getCurrentFrame():preprocess(p.enemy_zone_tabber(frame.args[1] or frame:getParent():getTitle()))
151 end
152 --Area
153 function p.tad(frame)
154     return p.enemy_zone_tabber(frame.args[1] or frame:getParent():getTitle())
155 end
156 
157 --All Areas
158 function p.taa()
159     return mw.getCurrentFrame():preprocess(p.enemy_all_tabber())
160 end
161 
162 return p