Viewing old revision of Module:TEST/Equipment
You are viewing an old revision of this page from 1/26/2026, 4:36:18 PM.
View latest versionNo documentation subpage (
/doc) found for this module.// const Utils = await require("Utils");
// const Game = await require("TEST/Game");
// const { latest: latestVersion } = await require("TEST/Versions");
// const { TooltipBuilder } = await require("TEST/Tooltip_Builder");
// function renderTable(items, version) {
// let wikitext = "";
// let tooltips = "";
// const versionTooltip = new TooltipBuilder(`TradeItem:Table:Version:${version.replace(/\./g, '_')}`);
// versionTooltip.addLine(`Data version: '''${version}''' <span class="${version === latestVersion ? 'latest' : 'outdated'}">(${version === latestVersion ? 'latest' : 'outdated'})</span>`);
// wikitext += '{| class="wiki-table" style="width: auto;"\n';
// wikitext += `! colspan=3 | Version: ${Game.versionCode(version, versionTooltip)}\n`;
// wikitext += '|-\n';
// wikitext += '! Name !! Rarity !! Max Stack\n';
// for (const id in items) {
// const item = items[id];
// wikitext += '|-\n';
// const tooltipId = `TradeItem:Table:${id}`;
// // Name
// wikitext += `| data-tooltip-id="${tooltipId}" | [[Trade Items/${item.name || id}|${item.name || id}]]\n`;
// // Rarity
// if (item.rarity) {
// wikitext += `| ${Game.wikiRarity(item.rarity)}\n`;
// } else {
// wikitext += `| ${Game.wikiRarity("common")}\n`;
// }
// // Max Stack
// if (item.stack?.max) {
// wikitext += `| ${item.stack.max}\n`;
// } else {
// wikitext += `| 1\n`;
// }
// // Add tooltip
// const tooltip = new TooltipBuilder(tooltipId);
// tooltip.addLine(`'''${item.name || id}'''`);
// if (item.description) {
// const lines = item.description.replace(/\n{2,}/g, "\n").split('\n');
// for (const line of lines) {
// tooltip.addLine(line.replace(/<color=(.*?)>(.*?)<\/color>/g, "<span style='color:$1;'>$2</span>"));
// }
// }
// tooltips += tooltip.build();
// }
// wikitext += '|}\n';
// wikitext += tooltips;
// return wikitext;
// }
// function renderNavbox(items, version) {
// let wikitext = '';
// const versionTooltip = new TooltipBuilder(`TradeItem:Navbox:Version:${version.replace(/\./g, '_')}`);
// versionTooltip.addLine(`Data version: '''${version}''' <span class="${version === latestVersion ? 'latest' : 'outdated'}">(${version === latestVersion ? 'latest' : 'outdated'})</span>`);
// wikitext += `{| class="wiki-table navbox"\n`;
// wikitext += `! Version: ${Game.versionCode(version, versionTooltip)}\n`;
// wikitext += `|-\n`;
// wikitext += `! Trade Items Navigation\n`;
// const itemsList = [];
// let tooltips = "";
// for (const id in items) {
// const item = items[id];
// const tooltipId = `TradeItem:Navbox:${id}`;
// itemsList.push(`<span data-tooltip-id="${tooltipId}">[[Trade Items/${item.name || id}|${item.name || id}]]</span>`);
// // Add tooltip
// const tooltip = new TooltipBuilder(tooltipId);
// tooltip.addLine(`'''${item.name || id}'''`);
// if (item.description) {
// const lines = item.description.replace(/\n{2,}/g, "\n").split('\n');
// for (const line of lines) {
// tooltip.addLine(line.replace(/<color=(.*?)>(.*?)<\/color>/g, "<span style='color:$1;'>$2</span>"));
// }
// }
// tooltips += tooltip.build();
// }
// wikitext += `|-\n`;
// wikitext += `| ${itemsList.join(' • ')}\n`;
// wikitext += `|}\n`;
// wikitext += tooltips;
// return wikitext;
// }
// exports.TEST = async function () {
// const { data, version } = await Utils.resolveData("Trade_Items", true);
// if (Utils.isModuleEmpty(data)) {
// return '⚠️ Trade item data is unavailable for all known versions.';
// }
// const sortedData = Utils.sortObjectByKey(data);
// let output = '';
// output += renderTable(sortedData, version);
// return output;
// };
// exports.TEST_navbox = async function () {
// const { data, version } = await Utils.resolveData("Trade_Items", true);
// if (Utils.isModuleEmpty(data)) {
// return '⚠️ Trade item data is unavailable for all known versions.';
// }
// const sortedData = Utils.sortObjectByKey(data);
// let output = '';
// output += `''Data version: <code>${version}</code>''\n\n`;
// output += renderNavbox(sortedData, version);
// return output;
// };
// exports.wikiTooltip = async function (props) {
// const args = Utils.resolveArgs(props);
// const { data, version } = await Utils.resolveData("Trade_Items", true);
// if (Utils.isModuleEmpty(data)) {
// return '⚠️ Trade item data is unavailable for all known versions.';
// }
// const itemId = (args["item"] || args[0])?.toLowerCase()?.replace(/\s+/g, '_');
// const itemData = data[itemId];
// if (!itemData) {
// return `⚠️ Trade item '${args["item"] || args[0]}' not found in data version ${version}.`;
// }
// const tooltip = new TooltipBuilder(`TradeItem:item:${itemId}`);
// tooltip.addLine(`'''${itemData.name || args["item"] || args[0]}'''`);
// if (itemData.description) {
// const lines = itemData.description.replace(/\n{2,}/g, "\n").split('\n');
// for (const line of lines) {
// tooltip.addLine(line.replace(/<color=(.*?)>(.*?)<\/color>/g, "<span style='color:$1;'>$2</span>"));
// }
// }
// return `<span data-tooltip-id="TradeItem:item:${itemId}">[[Trade Items/${itemData.name || args["item"] || args[0]}|${itemData.name || args["item"] || args[0]}]]</span>` + tooltip.build();
// }
/* Module:Equipment */
const Utils = await require("Utils");
const Game = await require("TEST/Game");
const { latest: latestVersion } = await require("TEST/Versions");
const { TooltipBuilder } = await require("TEST/Tooltip_Builder");
function renderTable(items, type = "weapon", version) {
let wikitext = "";
let tooltips = "";
const versionTooltip = new TooltipBuilder(`Equipment:Table:${type}:Version:${version.replace(/\./g, '_')}`);
versionTooltip.addLine(`Data version: '''${version}''' <span class="${version === latestVersion ? 'latest' : 'outdated'}">(${version === latestVersion ? 'latest' : 'outdated'})</span>`);
const filteredItems = Utils.filterObjectByProperty(items, 'type', type);
if (Object.keys(filteredItems).length === 0) {
return `''No equipment of type '''${type}''' found in data version ${version}.''`;
}
if (type == "weapon") {
wikitext += '{| class="wiki-table" style="width: auto;"\n';
wikitext += `! colspan=5 | Version: ${Game.versionCode(version, versionTooltip)}\n`;
wikitext += '|-\n';
wikitext += '! Name !! Level !! Rarity !! Element !! Base Damage\n';
for (const id in filteredItems) {
const item = filteredItems[id];
wikitext += '|-\n';
const tooltipId = `Equipment:${type}:Table:${id}`;
// Name
wikitext += `| data-tooltip-id="${tooltipId}" | [[Equipment/${item.name || id}|${item.name || id}]]\n`;
// Level
wikitext += `| ${item.requirements.level || 'Unknown'}\n`;
// Rarity
wikitext += `| ${Game.wikiRarity(item.rarity)}\n`;
// Element
wikitext += `| ${item.element || 'Normal'}\n`;
// Base Damage
wikitext += `| ${item.damage.min || '0'} - ${item.damage.max || '0'}\n`;
// Add tooltip
const tooltip = new TooltipBuilder(tooltipId);
tooltip.addLine(`'''${item.name || id}'''`);
if (item.description) {
const lines = item.description.replace(/\n{2,}/g, "\n").split('\n');
for (const line of lines) {
tooltip.addLine(line.replace(/<color=(.*?)>(.*?)<\/color>/g, "<span style='color:$1;'>$2</span>"));
}
}
tooltips += tooltip.build();
}
} else if (type == "armor") {
wikitext += '{| class="wiki-table" style="width: auto;"\n';
wikitext += `! colspan=4 | Version: ${Game.versionCode(version, versionTooltip)}\n`;
wikitext += '|-\n';
wikitext += '! Name !! Level !! Rarity !! Class\n';
for (const id in filteredItems) {
const item = filteredItems[id];
wikitext += '|-\n';
const tooltipId = `Equipment:${type}:Table:${id}`;
// Name
wikitext += `| data-tooltip-id="${tooltipId}" | [[Equipment/${item.name || id}|${item.name || id}]]\n`;
// Level
wikitext += `| ${item.requirements.level || 'Unknown'}\n`;
// Rarity
wikitext += `| ${Game.wikiRarity(item.rarity)}\n`;
// Class
wikitext += `| ${item.requirements.class || 'Any'}\n`;
// Add tooltip
const tooltip = new TooltipBuilder(tooltipId);
tooltip.addLine(`'''${item.name || id}'''`);
if (item.description) {
const lines = item.description.replace(/\n{2,}/g, "\n").split('\n');
for (const line of lines) {
tooltip.addLine(line.replace(/<color=(.*?)>(.*?)<\/color>/g, "<span style='color:$1;'>$2</span>"));
}
}
tooltips += tooltip.build();
}
} else {
return `''Equipment type '''${type}''' is not supported for table rendering.''`;
}
wikitext += '|}\n';
wikitext += tooltips;
return wikitext;
}
exports.TEST = async function () {
const { data, version } = await Utils.resolveData("Equipment", true);
if (Utils.isModuleEmpty(data)) {
return '⚠️ Equipment data is unavailable for all known versions.';
}
const sortedData = Utils.sortObjectByKey(data);
return `<div style="display: flex; flex-direction: row; justify-content: space-between;">${renderTable(sortedData, "weapon", version)}${renderTable(sortedData, "armor", version)}</div>`;
}