feat(webui): acquire flawed mods & imposters via add mods (#1040)
Some checks failed
Build Docker image / docker (push) Waiting to run
Build / build (22) (push) Has been cancelled
Build / build (20) (push) Has been cancelled
Build / build (18) (push) Has been cancelled

Closes #1033

Reviewed-on: #1040
This commit is contained in:
Sainan 2025-02-27 18:00:37 -08:00
parent a8c7eebf6d
commit 9267c9929e
4 changed files with 25 additions and 13 deletions

View File

@ -20,6 +20,7 @@ interface ListedItem {
name: string;
fusionLimit?: number;
exalted?: string[];
badReason?: "starter" | "frivolous" | "notraw";
}
const getItemListsController: RequestHandler = (req, response) => {
@ -132,16 +133,20 @@ const getItemListsController: RequestHandler = (req, response) => {
}
res.mods = [];
const badItems: Record<string, boolean> = {};
for (const [uniqueName, upgrade] of Object.entries(ExportUpgrades)) {
res.mods.push({
const mod: ListedItem = {
uniqueName,
name: getString(upgrade.name, lang),
fusionLimit: upgrade.fusionLimit
});
if (upgrade.isStarter || upgrade.isFrivolous || upgrade.upgradeEntries) {
badItems[uniqueName] = true;
};
if (upgrade.isStarter) {
mod.badReason = "starter";
} else if (upgrade.isFrivolous) {
mod.badReason = "frivolous";
} else if (upgrade.upgradeEntries) {
mod.badReason = "notraw";
}
res.mods.push(mod);
}
for (const [uniqueName, upgrade] of Object.entries(ExportAvionics)) {
res.mods.push({
@ -151,13 +156,14 @@ const getItemListsController: RequestHandler = (req, response) => {
});
}
for (const [uniqueName, arcane] of Object.entries(ExportArcanes)) {
res.mods.push({
const mod: ListedItem = {
uniqueName,
name: getString(arcane.name, lang)
});
};
if (arcane.isFrivolous) {
badItems[uniqueName] = true;
mod.badReason = "frivolous";
}
res.mods.push(mod);
}
for (const [uniqueName, syndicate] of Object.entries(ExportSyndicates)) {
res.Syndicates.push({
@ -167,7 +173,6 @@ const getItemListsController: RequestHandler = (req, response) => {
}
response.json({
badItems,
archonCrystalUpgrades,
uniqueLevelCaps: ExportMisc.uniqueLevelCaps,
...res

View File

@ -207,11 +207,16 @@ function fetchItemList() {
document.getElementById("changeSyndicate").appendChild(option);
itemMap[item.uniqueName] = { ...item, type };
});
} else if (type != "badItems") {
} else {
items.forEach(item => {
if (item.uniqueName in data.badItems) {
item.name += " " + loc("code_badItem");
} else if (item.uniqueName.substr(0, 18) != "/Lotus/Types/Game/") {
if ("badReason" in item) {
if (item.badReason == "starter") {
item.name = loc("code_starter").split("|MOD|").join(item.name);
} else {
item.name += " " + loc("code_badItem");
}
}
if (item.uniqueName.substr(0, 18) != "/Lotus/Types/Game/" && item.badReason != "notraw") {
const option = document.createElement("option");
option.setAttribute("data-key", item.uniqueName);
option.value = item.name;

View File

@ -18,6 +18,7 @@ dict = {
code_kDrive: `K-Drive`,
code_legendaryCore: `Legendary Core`,
code_traumaticPeculiar: `Traumatic Peculiar`,
code_starter: `|MOD| (Flawed)`,
code_badItem: `(Imposter)`,
code_maxRank: `Max Rank`,
code_rename: `Rename`,

View File

@ -19,6 +19,7 @@ dict = {
code_kDrive: `К-Драйв`,
code_legendaryCore: `Легендарное ядро`,
code_traumaticPeculiar: `Травмирующая Странность`,
code_starter: `[UNTRANSLATED] |MOD| (Flawed)`,
code_badItem: `(Самозванец)`,
code_maxRank: `Максимальный ранг`,
code_rename: `Переименовать`,