From 34c1d6ae566774737065df7fa3dd319dc35d1913 Mon Sep 17 00:00:00 2001 From: Tibowl Date: Fri, 18 Mar 2022 14:42:55 +0100 Subject: [PATCH] Add support for placeholder artifacts and materials --- src/commands/artifacts/artifact.ts | 20 ++++++++++++-------- src/commands/misc/material.ts | 2 +- src/data/gamedata/artifacts.json | 2 ++ src/data/gamedata/materials.json | 2 +- src/utils/Types.ts | 9 +++++---- 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/commands/artifacts/artifact.ts b/src/commands/artifacts/artifact.ts index ff9d9d5..e13ac51 100644 --- a/src/commands/artifacts/artifact.ts +++ b/src/commands/artifacts/artifact.ts @@ -73,15 +73,15 @@ Note: this command supports fuzzy search.`, if (arti == undefined) return sendMessage(source, "Unable to find artifact") - await simplePaginator(source, (relativePage, currentPage, maxPages) => this.getArti(arti, relativePage, currentPage, maxPages), 1 + arti.artis.length) + await simplePaginator(source, (relativePage, currentPage, maxPages) => this.getArti(arti, relativePage, currentPage, maxPages), 1 + (arti.artis?.length ?? 0)) return undefined } getArtiSetsPages(): string[] { const { data } = client const artis = Object.entries(data.artifacts) - .sort(([an, a], [bn, b]) => Math.max(...b.levels) - Math.max(...a.levels) || Math.min(...a.levels) - Math.min(...b.levels) || an.localeCompare(bn)) - .map(([name, info]) => `**${name}**: ${Math.min(...info.levels)}★ ~ ${Math.max(...info.levels)}★`) + .sort(([an, a], [bn, b]) => !b.levels ? -1 : !a.levels ? 1 : Math.max(...b.levels) - Math.max(...a.levels) || Math.min(...a.levels) - Math.min(...b.levels) || an.localeCompare(bn)) + .map(([name, info]) => `**${name}**${info.levels ? `: ${Math.min(...info.levels)}★ ~ ${Math.max(...info.levels)}★` : " (Not yet released)"}`) const pages: string[] = [] let paging = "", c = 0 @@ -115,17 +115,21 @@ Note: this command supports fuzzy search.`, const { data } = client const embed = new MessageEmbed() .setColor(Colors.AQUA) - .setThumbnail(getLink(set.artis.find(x => x.icon)?.icon ?? "img/unknown.png")) + .setThumbnail(getLink(set.artis?.find(x => x.icon)?.icon ?? "img/unknown.png")) .setURL(`${data.baseURL}artifacts/${urlify(set.name, false)}`) .setFooter(`Page ${currentPage} / ${maxPages}`) if (relativePage == 0) { - for (const bonus of set.bonuses) + for (const bonus of set.bonuses ?? []) embed.addField(`${bonus.count}-Set Bonus`, bonus.desc) embed.setTitle(`${set.name}: Set info`) - .addField("Possible levels", set.levels.map(k => k + "★").join(", ")) - .setDescription(`This set contains ${set.artis.length} artifacts`) + if (set.levels) + embed.addField("Possible levels", set.levels.map(k => k + "★").join(", ")) + if (set.artis) + embed.setDescription(`This set contains ${set.artis.length} artifacts`) + if (set.note) + embed.setDescription(set.note) const guides = client.data.getGuides("artifact", set.name).map(({ guide, page }) => getLinkToGuide(guide, page)).join("\n") @@ -136,7 +140,7 @@ Note: this command supports fuzzy search.`, return embed } - if (relativePage <= set.artis.length) { + if (set.artis && relativePage <= set.artis.length) { const arti = set.artis[relativePage - 1] const mainStats = data.artifactMainStats[arti.type] const total = mainStats.map(m => m.weight).reduce((a, b) => a+b, 0) diff --git a/src/commands/misc/material.ts b/src/commands/misc/material.ts index 97ba0bc..dae467c 100644 --- a/src/commands/misc/material.ts +++ b/src/commands/misc/material.ts @@ -90,7 +90,7 @@ Note: this command supports fuzzy search.`, getMaterialsPages(): string[] { const { data } = client const materials = Object.entries(data.materials) - .map(([name, material]) => `**${material.category}**: ${material.stars?`${material.stars}★ `:""}${data.emoji(name, true)}`) + .map(([name, material]) => `**${material.category ?? "Unknown"}**: ${material.stars?`${material.stars}★ `:""}${data.emoji(name, true)}`) const pages: string[] = [] let paging = "", c = 0 diff --git a/src/data/gamedata/artifacts.json b/src/data/gamedata/artifacts.json index 77528a5..234895c 100644 --- a/src/data/gamedata/artifacts.json +++ b/src/data/gamedata/artifacts.json @@ -1705,6 +1705,7 @@ }, "Vermillion Hereafter": { "name": "Vermillion Hereafter", + "note": "*Unreleased artifact set, coming in 2.6*", "levels": [ 4, 5 @@ -1722,6 +1723,7 @@ }, "Echoes of an Offering": { "name": "Echoes of an Offering", + "note": "*Unreleased artifact set, coming in 2.6*", "levels": [ 4, 5 diff --git a/src/data/gamedata/materials.json b/src/data/gamedata/materials.json index d3c2bac..410432d 100644 --- a/src/data/gamedata/materials.json +++ b/src/data/gamedata/materials.json @@ -7887,7 +7887,7 @@ }, "Starshroom": { "name": "Starshroom", - "desc": "*Upcoming material in 2.6*\nA fungus with a cap that resembles a five-pointed [...]", + "desc": "*Upcoming material in 2.6*\nA fungus with a cap that resembles a five-pointed star. It is quite handy indeed [...]", "type": "Cooking Ingredient", "category": "Teyvat's Resources", "icon": "https://i.imgur.com/BdqjxJO.png" diff --git a/src/utils/Types.ts b/src/utils/Types.ts index 5a23ab8..fe4edf9 100644 --- a/src/utils/Types.ts +++ b/src/utils/Types.ts @@ -263,10 +263,11 @@ interface User { // Game data export interface Artifact { - name: string - levels: number[] - bonuses: Bonus[] - artis: Arti[] + name: string + note?: string + levels?: number[] + bonuses?: Bonus[] + artis?: Arti[] } export interface Arti {