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



WIKI - Idle Pixel

Module:Enemies: Difference between revisions

No edit summary
No edit summary
 
(43 intermediate revisions by the same user not shown)
Line 8: Line 8:
     return n + 0.5 - (n + 0.5) % 1
     return n + 0.5 - (n + 0.5) % 1
end
end
function p.enemy_table(enemy)
function p.enemy_table(enemy)
     result = [[]]
     local result = [[]]
     for _, e in ipairs(enemy[8]) do
     if next(enemy[8]) == nil then
         -- TODO: refactor 1 - 1 -> 1 conversion to loot table module if possible
         return ''
        result = result .. lt.ltr({args= {e[1], (e[2] == e[3] and u.c(e[2]) or (u.c(e[2]) .. ' - ' .. u.c(e[3]))), e[4], e[6], e[5] and enemy[2], image=e['image']}})
     end
     end
     return lt.lt({args= {result, area=enemy[2]}}) .. [[
     return lt.lt(enemy[1],enemy[8])
]]
end
end
function p.enemy_stats(enemy)
function p.enemy_stats(enemy)
    return [[{| class="article-table"
return [[{{{!}} class="article-table"
]] .. '!Enemy\n![[File: Heart.png|20px]]\n![[File: Attack.png|20px]]\n![[File: Accuracy.png|20px]]\n![[File: Speed.png|20px]]\n![[File: Defence.png|20px]]\n|-' .. [[
! Enemy
|]] .. '[[File:' .. enemy[1]:gsub(' ', ''):gsub('%(', ''):gsub('%)', '') .. 'Monster.png|40px|link=' .. enemy[1] .. ']]' .. [[
!]] .. '[[File: Heart.png{{!}}20px]]' .. [[
 
!]] .. '[[File: Attack.png{{!}}20px]]' .. [[
 
!]] .. '[[File: Accuracy.png{{!}}20px]]' .. [[
 
!]] .. '[[File: Speed.png{{!}}20px]]' .. [[


|]] .. enemy[7] .. [[
!]] .. '[[File: Defence.png{{!}}20px]]' .. [[


|]] .. enemy[3] .. [[
{{!}}-
{{!}}]] .. '[[' .. [[File: ]] .. (enemy['raw_image'] and enemy['raw_image'] or ((enemy['image'] or enemy[1]:gsub(' ', ''):gsub('%(', ''):gsub('%)', '')) .. 'Monster.png')) .. [[{{!}}40px{{!}}link=]] .. enemy[1] .. ']]' .. [[


|]] .. enemy[4] .. [[
{{!}}]] .. enemy[7] .. [[


|]] .. enemy[5] .. [[
{{!}}]] .. enemy[3] .. [[


|]] .. enemy[6] .. [[
{{!}}]] .. enemy[4] .. [[


|}
{{!}}]] .. enemy[5] .. [[
 
{{!}}]] .. enemy[6] .. [[
 
{{!}}}


]] .. p.enemy_table(enemy)
]] .. p.enemy_table(enemy)
end
end
function p.enemy_zone_tabber(enemies)
 
     result = [[<ul id="dtabs]] .. enemies[1][2] .. [[">
function p.enemy_zone_tabber(areaEnemies)
]]
    local enemies = {}
    for idx, e in ipairs(enemies) do
    local result = ""
if not (idx == 1) then  
    if type(areaEnemies) == 'string' then
result = result .. ","
        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
end
        result = result .. e[1]
result = result .. [[></htmltag><htmltag tagname="label" for="]] .. e[1] .. [[" class="dTabsLabel">]] .. e[1] .. [[</htmltag>
    end
<div class="dTabsContent dTabsSubcontent">
result = result .. [[</ul>]]
    for _, e in ipairs(enemies) do
        result = result .. [[<div id="]] .. string.lower(string.gsub(e[1], "%s", "")) .. [[">
]] .. p.enemy_stats(e):gsub('|', '{{!}}') .. [[
]] .. p.enemy_stats(e):gsub('|', '{{!}}') .. [[
</div>
</div>]]
]]
     end
     end
     return result
     return result
Line 56: Line 74:


function p.enemy_all_tabber()
function p.enemy_all_tabber()
     result = [[<ul id="dtabsAllAreas">]]
     local result = [[<div class="dTabs">]]
for idx, a in ipairs(adb) do
for idx, a in ipairs(adb) do
if not (idx == 1) then  
if a ~= 'Fields2' then
result = result .. ","
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
        result = result .. a[1]
end
result = result .. [[</ul>]]
    area = [[]]
    enemies = {}
    for _, e in ipairs(edb) do
        if e[2] ~= area and area ~= [[]] then
            result = result .. [[<div id="]] .. string.lower(string.gsub(area, "%s", "")) .. [[">
]] .. p.enemy_zone_tabber(enemies) .. [[</div>
]]
            enemies = {}
        end
        table.insert(enemies, e)
        area = e[2]
     end
     end
     return result .. [[<div id="]] .. string.lower(string.gsub(area, "%s", "")) .. [[">
     return result .. [[</div>]]
]] .. p.enemy_zone_tabber(enemies) .. [[</div>]]
end
end


function p.enemy_page_before(name)
function p.enemy_page_before(name)
     enemy = nil
     local enemy = nil
     if type(name) == 'table' then
     if type(name) == 'table' then
         enemy = name
         enemy = name
Line 96: Line 105:
{{Infobox Monsters
{{Infobox Monsters
| title= ]] .. enemy[1] .. [[
| title= ]] .. enemy[1] .. [[
| image= ]] .. (enemy['raw_image'] and enemy['raw_image'] or ((enemy['image'] or enemy[1]:gsub(' ', ''):gsub('%(', ''):gsub('%)', '')) .. 'Icon.png'))  .. [[
| image= ]] .. (enemy['raw_image'] and enemy['raw_image'] or ((enemy['image'] or enemy[1]:gsub(' ', ''):gsub('%(', ''):gsub('%)', '')) .. 'Monster.png'))  .. [[
| imagewidth= 90
| imagewidth= 90
| health= ]] .. enemy[7] .. [[
| health= ]] .. enemy[7] .. [[
Line 107: Line 116:
end
end
function p.enemy_page_after(name)
function p.enemy_page_after(name)
     enemy = nil
     local enemy = nil
     if type(name) == 'table' then
     if type(name) == 'table' then
         enemy = name
         enemy = name
Line 124: Line 133:
end
end
function p.enemy_page(name)
function p.enemy_page(name)
     enemy = nil
     local enemy = nil
     for _, e in ipairs(edb) do
     for _, e in ipairs(edb) do
         if e[1] == name then
         if e[1] == name then
Line 143: Line 152:
function p.tepa(frame)
function p.tepa(frame)
     return p.enemy_page_after(frame.args[1] or frame:getParent():getTitle())
     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
end
function p.tet(frame)
function p.tet(frame)
     name = frame.args[1] or frame:getParent():getTitle()
     local name = frame.args[1] or frame:getParent():getTitle()
     for _, e in ipairs(edb) do
     for _, e in ipairs(edb) do
         if e[1] == name then
         if e[1] == name then
Line 155: Line 167:
end
end
function p.tes(frame)
function p.tes(frame)
     name = frame.args[1] or frame:getParent():getTitle()
     local name = frame.args[1] or frame:getParent():getTitle()
     for _, e in ipairs(edb) do
     for _, e in ipairs(edb) do
         if e[1] == name then
         if e[1] == name then

Latest revision as of 18:52, 19 January 2025

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