Module:Key List

From Hero Siege Wiki
Jump to navigation Jump to search

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

local p = {}
local game = require('Module:Game')
local func = require('Module:Func')

local function getDungeonKeys()
    return {
        "smelly_cheese",
        "cellar_key",
        "tower_key",
        "frosted_key",
        "ancient_key",
        "shovel_key",
        "mystic_key",
        "tomb_key",
        "copper_key",
        "rusted_key",
        "devils_key",
        "pickaxe_key",
        "garden_key",
        "battle_key",
        "golden_key",
        "axe_key",
        "storage_key",
        "warp_key",
        "valor_key",
        "naga_scale_key",
        "magma_key",
        "helflame_torch"
    }
end

function p.createDungeonKeyTable()
    local keys = getDungeonKeys()
    
    local result = '{| class="wikitable sortable"\n' ..
                   '! class="unsortable" | Key Name\n' ..
                   '! class="unsortable" | Dungeon\n' ..
                   '! class="unsortable" | Location\n' ..
                   '! class="sortable" | Zone\n'

    for _, key in ipairs(keys) do
        local data = game.key.dungeon[key]
        local keyName = string.format(
            '<div style="text-align: center;">[[%s]]<br>[[File:Keys_%s.png|30x30px|link=%s]]</div>',
            data.name, func.removeEncoding(data.name), data.name
        )
        result = result .. string.format(
            '|-\n| %s\n| [[%s]]\n| [[%s]]\n| [[%s|%s]]\n',
            keyName, data.dungeon, data.location, data.location, data.act
        )
    end

    result = result .. '|}'

    return result
end

function p.createDungeonTable()
    local keys = getDungeonKeys()
    
    local result = '{| class="wikitable sortable"\n' ..
                   '! class="unsortable" | Dungeon\n' ..
                   '! class="unsortable" | Location\n' ..
                   '! class="sortable" | Zone\n' ..
                   '! class="unsortable" | Key Name\n'

    for _, key in ipairs(keys) do
        local data = game.key.dungeon[key]
        local keyName = string.format(
            '<div style="text-align: center;">[[%s]]<br>[[File:Keys_%s.png|30x30px|link=%s]]</div>',
            data.name, func.removeEncoding(data.name), data.name
        )
        result = result .. string.format(
            '|-\n| [[%s]]\n| [[%s]]\n| [[%s|%s]]\n| %s\n',
            data.dungeon, data.location, data.location, data.act, keyName
        )
    end

    result = result .. '|}'

    return result
end

function p.createUniqueZoneKeyTable()
    local keys = {
        "angelic_key",
        "ruby_key",
        "bifrost_key",
    }
    
    local result = '{| class="wikitable sortable"\n! class="unsortable" | Key Name\n! class="unsortable" | Unique Zone\n! class="unsortable" | Location\n! class="sortable" | Zone\n'

    for _, key in ipairs(keys) do
        local data = game.key.unique_zone[key]
        local keyName = string.format('<div style="text-align: center;">[[%s]]<br>[[File:Keys_%s.png|30x30px|link=%s]]</div>', data.name, func.removeEncoding(data.name), data.name)
        result = result .. string.format('|-\n| %s\n| [[%s]]\n| [[%s]]\n| [[%s|%s]]\n', keyName, data.dungeon, data.location, data.location, data.act)
    end

    result = result .. '|}'

    return result
end

function p.createChestKeyTable()
    local keys = {
        "key",
        "crystal_key",
    }
    
    local result = '{| class="wikitable sortable"\n! class="unsortable" | Key Name\n! class="unsortable" | Chest\n'

    for _, key in ipairs(keys) do
        local data = game.key.chest[key]
        local keyName = string.format('<div style="text-align: center;">[[%s]]<br>[[File:Keys_%s.png|30x30px|link=%s]]</div>', data.name, func.removeEncoding(data.name), data.name)
        result = result .. string.format('|-\n| %s\n| [[%s]]\n', keyName, data.chest)
    end

    result = result .. '|}'

    return result
end

return p