diff --git a/src/controllers/custom/addItemsController.ts b/src/controllers/custom/addItemsController.ts index dc39ef64..30edd917 100644 --- a/src/controllers/custom/addItemsController.ts +++ b/src/controllers/custom/addItemsController.ts @@ -7,7 +7,7 @@ export const addItemsController: RequestHandler = async (req, res) => { const requests = req.body as IAddItemRequest[]; const inventory = await getInventory(accountId); for (const request of requests) { - await addItem(inventory, request.ItemType, request.ItemCount, true, undefined, undefined, true); + await addItem(inventory, request.ItemType, request.ItemCount, true, undefined, request.Fingerprint, true); } await inventory.save(); res.end(); @@ -16,4 +16,5 @@ export const addItemsController: RequestHandler = async (req, res) => { interface IAddItemRequest { ItemType: string; ItemCount: number; + Fingerprint?: string; } diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 3bfb3244..69299ec8 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -483,6 +483,16 @@ export const addItem = async ( return addCustomization(inventory, typeName); } if (typeName in ExportUpgrades || typeName in ExportArcanes) { + if (targetFingerprint) { + if (quantity != 1) { + logger.warn(`adding 1 of ${typeName} ${targetFingerprint} even tho quantity ${quantity} was requested`); + } + inventory.Upgrades.push({ + ItemType: typeName, + UpgradeFingerprint: targetFingerprint + }); + return {}; // there's not exactly a common "InventoryChanges" format for these + } const changes = [ { ItemType: typeName, diff --git a/static/webui/index.html b/static/webui/index.html index 80493572..e08a50a5 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -528,6 +528,7 @@ + diff --git a/static/webui/script.js b/static/webui/script.js index 34b39060..7f0417ad 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -1872,6 +1872,8 @@ function setFingerprint(ItemType, ItemId, fingerprint) { } function doAcquireMod() { + const maxed = !!window.maxed; + window.maxed = false; const uniqueName = getKey(document.getElementById("mod-to-acquire")); if (!uniqueName) { $("#mod-to-acquire").addClass("is-invalid").focus(); @@ -1879,14 +1881,15 @@ function doAcquireMod() { } const count = parseInt($("#mod-count").val()); if (count != 0) { - revalidateAuthz().then(() => { + Promise.all([window.itemListPromise, revalidateAuthz()]).then(([itemList]) => { $.post({ url: "/custom/addItems?" + window.authz, contentType: "application/json", data: JSON.stringify([ { ItemType: uniqueName, - ItemCount: count + ItemCount: count, + Fingerprint: maxed ? JSON.stringify({ lvl: itemList[uniqueName].fusionLimit ?? 5 }) : undefined } ]) }).done(function () { @@ -1901,6 +1904,11 @@ function doAcquireMod() { } } +function doAcquireModMax() { + const uniqueName = getKey(document.getElementById("mod-to-acquire")); + alert("doAcquireModMax: " + uniqueName); +} + const uiConfigs = [...$(".config-form input[id], .config-form select[id]")].map(x => x.id); for (const id of uiConfigs) { diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js index 73d78a66..70c9ee63 100644 --- a/static/webui/translations/de.js +++ b/static/webui/translations/de.js @@ -127,6 +127,7 @@ dict = { mods_fingerprintHelp: `Benötigst du Hilfe mit dem Fingerabdruck?`, mods_rivens: `Rivens`, mods_mods: `Mods`, + mods_addMax: `[UNTRANSLATED] Add Maxed`, mods_addMissingUnrankedMods: `Fehlende Mods ohne Rang hinzufügen`, mods_removeUnranked: `Mods ohne Rang entfernen`, mods_addMissingMaxRankMods: `Fehlende Mods mit Max. Rang hinzufügen`, diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js index 65594d49..895d6225 100644 --- a/static/webui/translations/en.js +++ b/static/webui/translations/en.js @@ -126,6 +126,7 @@ dict = { mods_fingerprintHelp: `Need help with the fingerprint?`, mods_rivens: `Rivens`, mods_mods: `Mods`, + mods_addMax: `Add Maxed`, mods_addMissingUnrankedMods: `Add Missing Unranked Mods`, mods_removeUnranked: `Remove Unranked Mods`, mods_addMissingMaxRankMods: `Add Missing Max Rank Mods`, diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js index 7b480e61..6d48acf6 100644 --- a/static/webui/translations/es.js +++ b/static/webui/translations/es.js @@ -127,6 +127,7 @@ dict = { mods_fingerprintHelp: `¿Necesitas ayuda con la huella digital?`, mods_rivens: `Agrietados`, mods_mods: `Mods`, + mods_addMax: `[UNTRANSLATED] Add Maxed`, mods_addMissingUnrankedMods: `Agregar mods sin rango faltantes`, mods_removeUnranked: `Quitar mods sin rango`, mods_addMissingMaxRankMods: `Agregar mods de rango máximo faltantes`, diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js index ef70cd6e..f8d50425 100644 --- a/static/webui/translations/fr.js +++ b/static/webui/translations/fr.js @@ -127,6 +127,7 @@ dict = { mods_fingerprintHelp: `Besoin d'aide pour l'empreinte ?`, mods_rivens: `Rivens`, mods_mods: `Mods`, + mods_addMax: `[UNTRANSLATED] Add Maxed`, mods_addMissingUnrankedMods: `Ajouter les mods sans rang manquants`, mods_removeUnranked: `Retirer les mods sans rang`, mods_addMissingMaxRankMods: `Ajouter les mods niveau max manquants`, diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js index 7f594867..55535ed3 100644 --- a/static/webui/translations/ru.js +++ b/static/webui/translations/ru.js @@ -127,6 +127,7 @@ dict = { mods_fingerprintHelp: `Нужна помощь с отпечатком?`, mods_rivens: `Моды Разлома`, mods_mods: `Моды`, + mods_addMax: `[UNTRANSLATED] Add Maxed`, mods_addMissingUnrankedMods: `Добавить недостающие моды без ранга`, mods_removeUnranked: `Удалить моды без ранга`, mods_addMissingMaxRankMods: `Добавить недостающие моды максимального ранга`, diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js index f5c9e759..7841f551 100644 --- a/static/webui/translations/zh.js +++ b/static/webui/translations/zh.js @@ -127,6 +127,7 @@ dict = { mods_fingerprintHelp: `需要印记相关的帮助?`, mods_rivens: `裂罅MOD`, mods_mods: `Mods`, + mods_addMax: `[UNTRANSLATED] Add Maxed`, mods_addMissingUnrankedMods: `添加所有缺失的Mods`, mods_removeUnranked: `删除所有未升级的Mods`, mods_addMissingMaxRankMods: `添加所有缺失的满级Mods`,