XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
返回提交历史

XFEstudio/SpaceNinjaServer

feat(webui): add missing max rank mods (#1863)

Closes #916 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1863 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>

ac377024
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

10 个文件 +68 -7
Added src/controllers/custom/addMissingMaxRankModsController.ts +44 -0
@@ -0,0 +1,44 @@
1 import { getInventory } from "@/src/services/inventoryService";
2 import { getAccountIdForRequest } from "@/src/services/loginService";
3 import { RequestHandler } from "express";
4 import { ExportArcanes, ExportUpgrades } from "warframe-public-export-plus";
5
6 export const addMissingMaxRankModsController: RequestHandler = async (req, res) => {
7 const accountId = await getAccountIdForRequest(req);
8 const inventory = await getInventory(accountId, "Upgrades");
9
10 const maxOwnedRanks: Record<string, number> = {};
11 for (const upgrade of inventory.Upgrades) {
12 const fingerprint = JSON.parse(upgrade.UpgradeFingerprint ?? "{}") as { lvl?: number };
13 if (fingerprint.lvl) {
14 maxOwnedRanks[upgrade.ItemType] ??= 0;
15 if (fingerprint.lvl > maxOwnedRanks[upgrade.ItemType]) {
16 maxOwnedRanks[upgrade.ItemType] = fingerprint.lvl;
17 }
18 }
19 }
20
21 for (const [uniqueName, data] of Object.entries(ExportUpgrades)) {
22 if (data.fusionLimit != 0 && data.type != "PARAZON" && maxOwnedRanks[uniqueName] != data.fusionLimit) {
23 inventory.Upgrades.push({
24 ItemType: uniqueName,
25 UpgradeFingerprint: JSON.stringify({ lvl: data.fusionLimit })
26 });
27 }
28 }
29
30 for (const [uniqueName, data] of Object.entries(ExportArcanes)) {
31 if (
32 data.name != "/Lotus/Language/Items/GenericCosmeticEnhancerName" &&
33 maxOwnedRanks[uniqueName] != data.fusionLimit
34 ) {
35 inventory.Upgrades.push({
36 ItemType: uniqueName,
37 UpgradeFingerprint: JSON.stringify({ lvl: data.fusionLimit })
38 });
39 }
40 }
41
42 await inventory.save();
43 res.end();
44 };
Modified src/routes/custom.ts +2 -0
@@ -10,6 +10,7 @@ import { getAccountInfoController } from "@/src/controllers/custom/getAccountInf
10 10 import { renameAccountController } from "@/src/controllers/custom/renameAccountController";
11 11 import { ircDroppedController } from "@/src/controllers/custom/ircDroppedController";
12 12 import { unlockAllIntrinsicsController } from "@/src/controllers/custom/unlockAllIntrinsicsController";
13 import { addMissingMaxRankModsController } from "@/src/controllers/custom/addMissingMaxRankModsController";
13 14
14 15 import { createAccountController } from "@/src/controllers/custom/createAccountController";
15 16 import { createMessageController } from "@/src/controllers/custom/createMessageController";
@@ -35,6 +36,7 @@ customRouter.get("/getAccountInfo", getAccountInfoController);
35 36 customRouter.get("/renameAccount", renameAccountController);
36 37 customRouter.get("/ircDropped", ircDroppedController);
37 38 customRouter.get("/unlockAllIntrinsics", unlockAllIntrinsicsController);
39 customRouter.get("/addMissingMaxRankMods", addMissingMaxRankModsController);
38 40
39 41 customRouter.post("/createAccount", createAccountController);
40 42 customRouter.post("/createMessage", createMessageController);
Modified static/webui/index.html +2 -1
@@ -510,8 +510,9 @@
510 510 <div class="card mb-3">
511 511 <h5 class="card-header" data-loc="general_bulkActions"></h5>
512 512 <div class="card-body d-flex flex-wrap gap-2">
513 <button class="btn btn-primary" onclick="doAddAllMods();" data-loc="mods_bulkAddMods"></button>
513 <button class="btn btn-primary" onclick="doAddAllMods();" data-loc="mods_addMissingUnrankedMods"></button>
514 514 <button class="btn btn-danger" onclick="doRemoveUnrankedMods();" data-loc="mods_removeUnranked"></button>
515 <button class="btn btn-primary" onclick="doAddMissingMaxRankMods();" data-loc="mods_addMissingMaxRankMods"></button>
515 516 </div>
516 517 </div>
517 518 </div>
Modified static/webui/script.js +8 -0
@@ -1795,6 +1795,14 @@ function doRemoveUnrankedMods() {
1795 1795 });
1796 1796 }
1797 1797
1798 function doAddMissingMaxRankMods() {
1799 revalidateAuthz(() => {
1800 fetch("/custom/addMissingMaxRankMods?" + window.authz).then(() => {
1801 updateInventory();
1802 });
1803 });
1804 }
1805
1798 1806 // Powersuit Route
1799 1807
1800 1808 single.getRoute("#powersuit-route").on("beforeload", function () {
Modified static/webui/translations/de.js +2 -1
@@ -120,8 +120,9 @@ dict = {
120 120 mods_fingerprintHelp: `Benötigst du Hilfe mit dem Fingerabdruck?`,
121 121 mods_rivens: `Rivens`,
122 122 mods_mods: `Mods`,
123 mods_bulkAddMods: `Fehlende Mods hinzufügen`,
123 mods_addMissingUnrankedMods: `[UNTRANSLATED] Add Missing Unranked Mods`,
124 124 mods_removeUnranked: `Mods ohne Rang entfernen`,
125 mods_addMissingMaxRankMods: `[UNTRANSLATED] Add Missing Max Rank Mods`,
125 126 cheats_administratorRequirement: `Du musst Administrator sein, um diese Funktion nutzen zu können. Um Administrator zu werden, füge <code>|DISPLAYNAME|</code> zu <code>administratorNames</code> in der config.json hinzu.`,
126 127 cheats_server: `Server`,
127 128 cheats_skipTutorial: `Tutorial überspringen`,
Modified static/webui/translations/en.js +2 -1
@@ -119,8 +119,9 @@ dict = {
119 119 mods_fingerprintHelp: `Need help with the fingerprint?`,
120 120 mods_rivens: `Rivens`,
121 121 mods_mods: `Mods`,
122 mods_bulkAddMods: `Add Missing Mods`,
122 mods_addMissingUnrankedMods: `Add Missing Unranked Mods`,
123 123 mods_removeUnranked: `Remove Unranked Mods`,
124 mods_addMissingMaxRankMods: `Add Missing Max Rank Mods`,
124 125 cheats_administratorRequirement: `You must be an administrator to use this feature. To become an administrator, add <code>|DISPLAYNAME|</code> to <code>administratorNames</code> in the config.json.`,
125 126 cheats_server: `Server`,
126 127 cheats_skipTutorial: `Skip Tutorial`,
Modified static/webui/translations/es.js +2 -1
@@ -120,8 +120,9 @@ dict = {
120 120 mods_fingerprintHelp: `¿Necesitas ayuda con la huella digital?`,
121 121 mods_rivens: `Agrietados`,
122 122 mods_mods: `Mods`,
123 mods_bulkAddMods: `Agregar mods faltantes`,
123 mods_addMissingUnrankedMods: `[UNTRANSLATED] Add Missing Unranked Mods`,
124 124 mods_removeUnranked: `Quitar mods sin rango`,
125 mods_addMissingMaxRankMods: `[UNTRANSLATED] Add Missing Max Rank Mods`,
125 126 cheats_administratorRequirement: `Debes ser administrador para usar esta función. Para convertirte en administrador, agrega <code>|DISPLAYNAME|</code> a <code>administratorNames</code> en el archivo config.json.`,
126 127 cheats_server: `Servidor`,
127 128 cheats_skipTutorial: `Omitir tutorial`,
Modified static/webui/translations/fr.js +2 -1
@@ -120,8 +120,9 @@ dict = {
120 120 mods_fingerprintHelp: `Besoin d'aide pour l'empreinte ?`,
121 121 mods_rivens: `Rivens`,
122 122 mods_mods: `Mods`,
123 mods_bulkAddMods: `Ajouter les mods manquants`,
123 mods_addMissingUnrankedMods: `[UNTRANSLATED] Add Missing Unranked Mods`,
124 124 mods_removeUnranked: `[UNTRANSLATED] Remove Unranked Mods`,
125 mods_addMissingMaxRankMods: `[UNTRANSLATED] Add Missing Max Rank Mods`,
125 126 cheats_administratorRequirement: `Rôle d'administrateur requis pour cette fonctionnalité. Ajoutez <code>|DISPLAYNAME|</code> à la ligne <code>administratorNames</code> dans le fichier config.json.`,
126 127 cheats_server: `Serveur`,
127 128 cheats_skipTutorial: `Passer le tutoriel`,
Modified static/webui/translations/ru.js +2 -1
@@ -120,8 +120,9 @@ dict = {
120 120 mods_fingerprintHelp: `Нужна помощь с отпечатком?`,
121 121 mods_rivens: `Моды Разлома`,
122 122 mods_mods: `Моды`,
123 mods_bulkAddMods: `Добавить отсутствующие моды`,
123 mods_addMissingUnrankedMods: `[UNTRANSLATED] Add Missing Unranked Mods`,
124 124 mods_removeUnranked: `[UNTRANSLATED] Remove Unranked Mods`,
125 mods_addMissingMaxRankMods: `[UNTRANSLATED] Add Missing Max Rank Mods`,
125 126 cheats_administratorRequirement: `Вы должны быть администратором для использования этой функции. Чтобы стать администратором, добавьте <code>\"|DISPLAYNAME|\"</code> в <code>administratorNames</code> в config.json.`,
126 127 cheats_server: `Сервер`,
127 128 cheats_skipTutorial: `Пропустить обучение`,
Modified static/webui/translations/zh.js +2 -1
@@ -120,8 +120,9 @@ dict = {
120 120 mods_fingerprintHelp: `需要印记相关的帮助?`,
121 121 mods_rivens: `裂罅MOD`,
122 122 mods_mods: `Mods`,
123 mods_bulkAddMods: `添加缺失MOD`,
123 mods_addMissingUnrankedMods: `[UNTRANSLATED] Add Missing Unranked Mods`,
124 124 mods_removeUnranked: `[UNTRANSLATED] Remove Unranked Mods`,
125 mods_addMissingMaxRankMods: `[UNTRANSLATED] Add Missing Max Rank Mods`,
125 126 cheats_administratorRequirement: `您必须是管理员才能使用此功能。要成为管理员,请将 <code>|DISPLAYNAME|</code> 添加到 config.json 的 <code>administratorNames</code> 中。`,
126 127 cheats_server: `服务器`,
127 128 cheats_skipTutorial: `跳过教程`,