diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index c8e25c1b..ddd855ca 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -689,6 +689,7 @@ export const addItem = async ( // Path-based duck typing switch (typeName.substr(1).split("/")[1]) { case "Powersuits": + if (typeName.endsWith("AugmentCard")) break; switch (typeName.substr(1).split("/")[2]) { default: { return { @@ -773,6 +774,10 @@ export const addItem = async ( } } break; + + case "Skins": { + return addSkin(inventory, typeName); + } } break; } @@ -869,6 +874,26 @@ export const addItem = async ( break; } break; + case "Weapons": { + if (typeName.substr(1).split("/")[4] == "MeleeTrees") break; + const productCategory = typeName.substr(1).split("/")[3]; + switch (productCategory) { + case "Pistols": + case "LongGuns": + case "Melee": { + const inventoryChanges = addEquipment(inventory, productCategory, typeName); + return { + ...inventoryChanges, + ...occupySlot( + inventory, + productCategoryToInventoryBin(productCategory) ?? InventorySlot.WEAPONS, + premiumPurchase + ) + }; + } + } + break; + } } throw new Error(`unable to add item: ${typeName}`); }; diff --git a/static/webui/index.html b/static/webui/index.html index 52e278f2..868cc4d7 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -92,12 +92,36 @@

-
-
- - - -
+
+ +
+
+
+
+
+ + + +
+
+
+
+

+
+ + +
+
+
+
+
diff --git a/static/webui/script.js b/static/webui/script.js index 6feb4020..c065be5b 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -649,6 +649,14 @@ function updateInventory() { ]; // Populate inventory route + + document.getElementById("typeName-tab").classList.remove("active"); + document.getElementById("typeName-tab-content").classList.remove("active", "show"); + document.getElementById("typeName-type").value = ""; + + document.getElementById("miscItems-tab").classList.add("active"); + document.getElementById("miscItems-tab-content").classList.add("active", "show"); + ["RegularCredits", "PremiumCredits", "FusionPoints", "PrimeTokens"].forEach(currency => { document.getElementById(currency + "-owned").textContent = loc("currency_owned") .split("|COUNT|") @@ -1685,7 +1693,7 @@ function doAcquireEvolution() { setEvolutionProgress([{ ItemType: uniqueName, Rank: permanentEvolutionWeapons.has(uniqueName) ? 0 : 1 }]); } -$(document).on("input", "input[list]", function () { +$(document).on("input", "input", function () { $(this).removeClass("is-invalid"); }); @@ -2008,6 +2016,35 @@ function doAcquireMiscItems() { } } +function addItemByItemType() { + const ItemType = document.getElementById("typeName-type").value; + // Must start with "/Lotus/", contain only A–Z letters, no "//", and not end with "/" + if (!ItemType || !/^\/Lotus\/(?:[A-Za-z]+(?:\/[A-Za-z]+)*)$/.test(ItemType)) { + $("#typeName-type").addClass("is-invalid").focus(); + return; + } + revalidateAuthz().then(() => { + $.post({ + url: "/custom/addItems?" + window.authz, + contentType: "application/json", + data: JSON.stringify([ + { + ItemType, + ItemCount: 1 + } + ]) + }) + .done(function (_, _, jqXHR) { + if (jqXHR.status === 200) { + updateInventory(); + } + }) + .fail(function () { + $("#typeName-type").addClass("is-invalid").focus(); + }); + }); +} + function doAcquireRiven() { let fingerprint; try { diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js index 42637903..45487178 100644 --- a/static/webui/translations/de.js +++ b/static/webui/translations/de.js @@ -79,6 +79,8 @@ dict = { navbar_cheats: `Cheats`, navbar_import: `Importieren`, inventory_addItems: `Gegenstände hinzufügen`, + inventory_addItemByItemType: `[UNTRANSLATED] Raw`, + inventory_addItemByItemType_warning: `[UNTRANSLATED] Use this feature at your own risk. It may break your inventory, and you will need to remove items manually if something goes wrong.`, inventory_suits: `Warframes`, inventory_longGuns: `Primärwaffen`, inventory_pistols: `Sekundärwaffen`, diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js index 76fbfd3b..62f43197 100644 --- a/static/webui/translations/en.js +++ b/static/webui/translations/en.js @@ -78,6 +78,8 @@ dict = { navbar_cheats: `Cheats`, navbar_import: `Import`, inventory_addItems: `Add Items`, + inventory_addItemByItemType: `Raw`, + inventory_addItemByItemType_warning: `Use this feature at your own risk. It may break your inventory, and you will need to remove items manually if something goes wrong.`, inventory_suits: `Warframes`, inventory_longGuns: `Primary Weapons`, inventory_pistols: `Secondary Weapons`, diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js index e5ddb59d..89837a98 100644 --- a/static/webui/translations/es.js +++ b/static/webui/translations/es.js @@ -79,6 +79,8 @@ dict = { navbar_cheats: `Trucos`, navbar_import: `Importar`, inventory_addItems: `Agregar objetos`, + inventory_addItemByItemType: `[UNTRANSLATED] Raw`, + inventory_addItemByItemType_warning: `[UNTRANSLATED] Use this feature at your own risk. It may break your inventory, and you will need to remove items manually if something goes wrong.`, inventory_suits: `Warframes`, inventory_longGuns: `Armas primarias`, inventory_pistols: `Armas secundarias`, diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js index 2c802a8d..672ccdee 100644 --- a/static/webui/translations/fr.js +++ b/static/webui/translations/fr.js @@ -79,6 +79,8 @@ dict = { navbar_cheats: `Cheats`, navbar_import: `Importer`, inventory_addItems: `Ajouter des items`, + inventory_addItemByItemType: `[UNTRANSLATED] Raw`, + inventory_addItemByItemType_warning: `[UNTRANSLATED] Use this feature at your own risk. It may break your inventory, and you will need to remove items manually if something goes wrong.`, inventory_suits: `Warframes`, inventory_longGuns: `Armes principales`, inventory_pistols: `Armes secondaires`, diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js index 961d63ab..d07d2140 100644 --- a/static/webui/translations/ru.js +++ b/static/webui/translations/ru.js @@ -79,6 +79,8 @@ dict = { navbar_cheats: `Читы`, navbar_import: `Импорт`, inventory_addItems: `Добавить предметы`, + inventory_addItemByItemType: `[UNTRANSLATED] Raw`, + inventory_addItemByItemType_warning: `Используйте эту функцию на свой страх и риск. Она может повредить ваш инвентарь, и в случае проблем вам придётся удалять предметы вручную.`, inventory_suits: `Варфреймы`, inventory_longGuns: `Основное оружие`, inventory_pistols: `Вторичное оружие`, diff --git a/static/webui/translations/uk.js b/static/webui/translations/uk.js index d820559c..e35d183a 100644 --- a/static/webui/translations/uk.js +++ b/static/webui/translations/uk.js @@ -79,6 +79,8 @@ dict = { navbar_cheats: `Чити`, navbar_import: `Імпорт`, inventory_addItems: `Додати предмети`, + inventory_addItemByItemType: `[UNTRANSLATED] Raw`, + inventory_addItemByItemType_warning: `[UNTRANSLATED] Use this feature at your own risk. It may break your inventory, and you will need to remove items manually if something goes wrong.`, inventory_suits: `Ворфрейми`, inventory_longGuns: `Основна зброя`, inventory_pistols: `Допоміжна зброя`, diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js index bc199a17..8dcc4a3b 100644 --- a/static/webui/translations/zh.js +++ b/static/webui/translations/zh.js @@ -79,6 +79,8 @@ dict = { navbar_cheats: `作弊选项`, navbar_import: `导入`, inventory_addItems: `添加物品`, + inventory_addItemByItemType: `[UNTRANSLATED] Raw`, + inventory_addItemByItemType_warning: `[UNTRANSLATED] Use this feature at your own risk. It may break your inventory, and you will need to remove items manually if something goes wrong.`, inventory_suits: `战甲`, inventory_longGuns: `主要武器`, inventory_pistols: `次要武器`,