ATLYSS TechPendium

Module:TEST/Trade Items

Viewing old revision of Module:TEST/Trade_Items

You are viewing an old revision of this page from 1/19/2026, 4:13:12 PM.

View latest version
No documentation subpage (/doc) found for this module.
const Versions = await require("TEST/Versions");
const LatestGameVersion = Versions.latest;
const VersionEntries = Versions.versions || [];

function isEmptyModule(mod) {
    return !mod || Object.keys(mod).length === 0;
}

function renderTable(items) {
    let wikitext = '';

    wikitext += '{| class="lg-table lg-table--striped"\n';
    wikitext += '! Icon !! Name !! Category !! Rarity !! Vendor Cost\n';

    for (const id in items) {
        const item = items[id];

        wikitext += '|-\n';

        // Icon
        if (item.icon) {
            wikitext += `| {{ItemIcon|${item.icon}}}\n`;
        } else {
            wikitext += '| —\n';
        }

        // Name
        wikitext += `| '''${item.name || id}'''\n`;

        // Category
        wikitext += `| ${item.category || '—'}\n`;

        // Rarity
        if (item.rarity) {
            wikitext += `| {{Rarity|${item.rarity}}}\n`;
        } else {
            wikitext += '| common\n';
        }

        // Vendor cost
        if (item.economy && item.economy.vendorCost != null) {
            wikitext += `| ${item.economy.vendorCost}\n`;
        } else {
            wikitext += '| —\n';
        }
    }

    wikitext += '|}\n';
    return wikitext;
}

exports.TEST = async function (props = {}) {
    let DATA = await require(`TEST/Trade_Items/data/${LatestGameVersion}`);
    let usedVersion = LatestGameVersion;

    // Fallback: iterate versions list in order
    if (isEmptyModule(DATA)) {
        for (const entry of VersionEntries) {
            const v = entry.id;
            const candidate = await require(`TEST/Trade_Items/data/${v}`);

            if (!isEmptyModule(candidate)) {
                DATA = candidate;
                usedVersion = v;
                break;
            }
        }
    }

    if (isEmptyModule(DATA)) {
        return '⚠️ Trade item data is unavailable for all known versions.';
    }

    let output = '';
    output += `''Data version: <code>${usedVersion}</code>''\n\n`;
    output += renderTable(DATA);

    return output;
};
Last Edited by LiveGobe on 1/19/2026, 4:13:12 PM