返回提交历史
Added
src/controllers/custom/removeItemsController.ts
+24
-0
Modified
src/routes/custom.ts
+2
-0
Modified
static/webui/index.html
+23
-58
Modified
static/webui/script.js
+324
-82
Modified
static/webui/translations/de.js
+9
-22
Modified
static/webui/translations/en.js
+9
-22
Modified
static/webui/translations/es.js
+9
-22
Modified
static/webui/translations/fr.js
+9
-22
Modified
static/webui/translations/ru.js
+9
-22
Modified
static/webui/translations/uk.js
+9
-22
Modified
static/webui/translations/zh.js
+9
-22
XFEstudio/XFESpaceNinjaServer
feat(webui): bulk remove items (#3452)
Also moves bulk actions to corresponding cards Closes #2644 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/3452 Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com> Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
264bdc9d
代码差异
11 个文件
+436
-294
@@ -0,0 +1,24 @@
1
import { getAccountIdForRequest } from "../../services/loginService.ts";
2
import { getInventory } from "../../services/inventoryService.ts";
3
import type { RequestHandler } from "express";
4
import { broadcastInventoryUpdate } from "../../services/wsService.ts";
5
import type { TEquipmentKey } from "../../types/inventoryTypes/inventoryTypes.ts";
6
7
export const removeItemsController: RequestHandler = async (req, res) => {
8
const accountId = await getAccountIdForRequest(req);
9
const category = req.query.category as
10
| TEquipmentKey
11
| "WeaponSkins"
12
| "ShipDecorations"
13
| "FlavourItems"
14
| undefined;
15
if (category) {
16
const inventory = await getInventory(accountId, category);
17
if (category in inventory) {
18
inventory.set(category, []);
19
await inventory.save();
20
broadcastInventoryUpdate(req);
21
}
22
}
23
res.end();
24
};
@@ -25,6 +25,7 @@ import { unlockAllShipFeaturesController } from "../controllers/custom/unlockAll
25
25
import { unlockAllCapturaScenesController } from "../controllers/custom/unlockAllCapturaScenesController.ts";
26
26
import { removeCustomizationController } from "../controllers/custom/removeCustomizationController.ts";
27
27
import { removeIsNewController } from "../controllers/custom/removeIsNewController.ts";
28
import { removeItemsController } from "../controllers/custom/removeItemsController.ts";
28
29
import { retroactivelyApplyCheatController } from "../controllers/api/retroactivelyApplyCheatController.ts";
29
30
30
31
import { abilityOverrideController } from "../controllers/custom/abilityOverrideController.ts";
@@ -81,6 +82,7 @@ customRouter.get("/unlockAllShipFeatures", unlockAllShipFeaturesController);
81
82
customRouter.get("/unlockAllCapturaScenes", unlockAllCapturaScenesController);
82
83
customRouter.get("/removeCustomization", removeCustomizationController);
83
84
customRouter.get("/removeIsNew", removeIsNewController);
85
customRouter.get("/removeItems", removeItemsController);
84
86
customRouter.get("/retroactivelyApplyCheat", retroactivelyApplyCheatController);
85
87
86
88
customRouter.post("/abilityOverride", abilityOverrideController);
@@ -179,7 +179,7 @@
179
179
<div class="row g-3 mb-3">
180
180
<div class="col-lg-6">
181
181
<div class="card" style="height: 400px;">
182
<h5 class="card-header" data-loc="inventory_suits"></h5>
182
<div class="card-header" data-cardType="Suits"></div>
183
183
<div class="card-body d-flex flex-column">
184
184
<form class="input-group mb-3" onsubmit="doAcquireEquipment('Suits');return false;">
185
185
<input class="form-control" id="acquire-type-Suits" list="datalist-Suits" autocomplete="off" />
@@ -195,7 +195,7 @@
195
195
</div>
196
196
<div class="col-lg-6">
197
197
<div class="card" style="height: 400px;">
198
<h5 class="card-header" data-loc="inventory_longGuns"></h5>
198
<div class="card-header" data-cardType="LongGuns"></div>
199
199
<div class="card-body d-flex flex-column">
200
200
<form class="input-group mb-3" onsubmit="handleModularSelection('LongGuns');return false;">
201
201
<input class="form-control" id="acquire-type-LongGuns" list="datalist-LongGuns" autocomplete="off" />
@@ -218,7 +218,7 @@
218
218
<div class="row g-3 mb-3">
219
219
<div class="col-lg-6">
220
220
<div class="card" style="height: 400px;">
221
<h5 class="card-header" data-loc="inventory_pistols"></h5>
221
<div class="card-header" data-cardType="Pistols"></div>
222
222
<div class="card-body d-flex flex-column">
223
223
<form class="input-group mb-3" onsubmit="handleModularSelection('Pistols');return false;">
224
224
<input class="form-control" id="acquire-type-Pistols" list="datalist-Pistols" autocomplete="off" />
@@ -239,7 +239,7 @@
239
239
</div>
240
240
<div class="col-lg-6">
241
241
<div class="card" style="height: 400px;">
242
<h5 class="card-header" data-loc="inventory_melee"></h5>
242
<div class="card-header" data-cardType="Melee"></div>
243
243
<div class="card-body d-flex flex-column">
244
244
<form class="input-group mb-3" onsubmit="handleModularSelection('Melee');return false;">
245
245
<input class="form-control" id="acquire-type-Melee" list="datalist-Melee" autocomplete="off" />
@@ -262,7 +262,7 @@
262
262
<div class="row g-3 mb-3">
263
263
<div class="col-lg-6">
264
264
<div class="card" style="height: 400px;">
265
<h5 class="card-header" data-loc="inventory_spaceSuits"></h5>
265
<div class="card-header" data-cardType="SpaceSuits"></div>
266
266
<div class="card-body d-flex flex-column">
267
267
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SpaceSuits');return false;">
268
268
<input class="form-control" id="acquire-type-SpaceSuits" list="datalist-SpaceSuits" autocomplete="off" />
@@ -278,7 +278,7 @@
278
278
</div>
279
279
<div class="col-lg-6">
280
280
<div class="card" style="height: 400px;">
281
<h5 class="card-header" data-loc="inventory_spaceGuns"></h5>
281
<div class="card-header" data-cardType="SpaceGuns"></div>
282
282
<div class="card-body d-flex flex-column">
283
283
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SpaceGuns');return false;">
284
284
<input class="form-control" id="acquire-type-SpaceGuns" list="datalist-SpaceGuns" autocomplete="off" />
@@ -296,7 +296,7 @@
296
296
<div class="row g-3 mb-3">
297
297
<div class="col-lg-6">
298
298
<div class="card" style="height: 400px;">
299
<h5 class="card-header" data-loc="inventory_spaceMelee"></h5>
299
<div class="card-header" data-cardType="SpaceMelee"></div>
300
300
<div class="card-body d-flex flex-column">
301
301
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SpaceMelee');return false;">
302
302
<input class="form-control" id="acquire-type-SpaceMelee" list="datalist-SpaceMelee" autocomplete="off" />
@@ -312,7 +312,7 @@
312
312
</div>
313
313
<div class="col-lg-6">
314
314
<div class="card" style="height: 400px;">
315
<h5 class="card-header" data-loc="inventory_mechSuits"></h5>
315
<div class="card-header" data-cardType="MechSuits"></div>
316
316
<div class="card-body d-flex flex-column">
317
317
<form class="input-group mb-3" onsubmit="doAcquireEquipment('MechSuits');return false;">
318
318
<input class="form-control" id="acquire-type-MechSuits" list="datalist-MechSuits" autocomplete="off" />
@@ -330,7 +330,7 @@
330
330
<div class="row g-3 mb-3">
331
331
<div class="col-lg-6">
332
332
<div class="card" style="height: 400px;">
333
<h5 class="card-header" data-loc="inventory_sentinels"></h5>
333
<div class="card-header" data-cardType="Sentinels"></div>
334
334
<div class="card-body d-flex flex-column">
335
335
<form class="input-group mb-3" onsubmit="doAcquireEquipment('Sentinels');return false;">
336
336
<input class="form-control" id="acquire-type-Sentinels" list="datalist-Sentinels" autocomplete="off" />
@@ -346,7 +346,7 @@
346
346
</div>
347
347
<div class="col-lg-6">
348
348
<div class="card" style="height: 400px;">
349
<h5 class="card-header" data-loc="inventory_moaPets"></h5>
349
<div class="card-header" data-cardType="MoaPets"></div>
350
350
<div class="card-body d-flex flex-column">
351
351
<form class="input-group mb-3" onsubmit="handleModularSelection('MoaPets');return false;">
352
352
<input class="form-control" id="acquire-type-MoaPets" list="datalist-MoaPets" autocomplete="off" />
@@ -376,7 +376,7 @@
376
376
<div class="row g-3 mb-3">
377
377
<div class="col-lg-6">
378
378
<div class="card" style="height: 400px;">
379
<h5 class="card-header" data-loc="inventory_kubrowPets"></h5>
379
<div class="card-header" data-cardType="KubrowPets"></div>
380
380
<div class="card-body d-flex flex-column">
381
381
<form class="input-group mb-3" onsubmit="handleModularSelection('KubrowPets');return false;">
382
382
<input class="form-control" id="acquire-type-KubrowPets" list="datalist-KubrowPets" autocomplete="off" />
@@ -400,7 +400,7 @@
400
400
</div>
401
401
<div class="col-lg-6">
402
402
<div class="card" style="height: 400px;">
403
<h5 class="card-header" data-loc="inventory_sentinelWeapons"></h5>
403
<div class="card-header" data-cardType="SentinelWeapons"></div>
404
404
<div class="card-body d-flex flex-column">
405
405
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SentinelWeapons');return false;">
406
406
<input class="form-control" id="acquire-type-SentinelWeapons" list="datalist-SentinelWeapons" autocomplete="off" />
@@ -418,7 +418,7 @@
418
418
<div class="row g-3 mb-3">
419
419
<div class="col-lg-6">
420
420
<div class="card" style="height: 400px;">
421
<h5 class="card-header" data-loc="inventory_operatorAmps"></h5>
421
<div class="card-header" data-cardType="OperatorAmps"></div>
422
422
<div class="card-body d-flex flex-column">
423
423
<form class="input-group mb-3" onsubmit="handleModularSelection('OperatorAmps');return false;">
424
424
<input class="form-control" id="acquire-type-OperatorAmps" list="datalist-OperatorAmps" autocomplete="off" />
@@ -439,7 +439,7 @@
439
439
</div>
440
440
<div class="col-lg-6">
441
441
<div class="card" style="height: 400px;">
442
<h5 class="card-header" data-loc="inventory_hoverboards"></h5>
442
<div class="card-header" data-cardType="Hoverboards"></div>
443
443
<div class="card-body d-flex flex-column">
444
444
<form class="input-group mb-3" onsubmit="doAcquireModularEquipment('Hoverboards');return false;">
445
445
<input class="form-control" id="acquire-type-Hoverboards-HB_DECK" list="datalist-ModularParts-HB_DECK" autocomplete="off" />
@@ -460,7 +460,7 @@
460
460
<div class="row g-3 mb-3">
461
461
<div class="col-lg-6">
462
462
<div class="card" style="height: 400px;">
463
<h5 class="card-header" data-loc="inventory_evolutionProgress"></h5>
463
<div class="card-header" data-cardType="EvolutionProgress"></div>
464
464
<div class="card-body d-flex flex-column">
465
465
<form class="input-group mb-3" onsubmit="doAcquireEvolution();return false;">
466
466
<input class="form-control" id="acquire-type-EvolutionProgress" list="datalist-EvolutionProgress" autocomplete="off" />
@@ -476,7 +476,7 @@
476
476
</div>
477
477
<div class="col-lg-6">
478
478
<div class="card" style="height: 400px;">
479
<h5 class="card-header" data-loc="inventory_boosters"></h5>
479
<div class="card-header" data-cardType="Boosters"></div>
480
480
<div class="card-body d-flex flex-column">
481
481
<form class="input-group mb-3" onsubmit="doAcquireBooster();return false;">
482
482
<input class="form-control" id="acquire-type-Boosters" list="datalist-Boosters" autocomplete="off" />
@@ -494,7 +494,7 @@
494
494
<div class="row g-3 mb-3">
495
495
<div class="col-lg-6">
496
496
<div class="card" style="height: 400px;">
497
<h5 class="card-header" data-loc="inventory_flavourItems"></h5>
497
<div class="card-header" data-cardType="FlavourItems"></div>
498
498
<div class="card-body d-flex flex-column">
499
499
<form class="input-group mb-3" onsubmit="doAcquireEquipment('FlavourItems');return false;">
500
500
<input class="form-control" id="acquire-type-FlavourItems" list="datalist-FlavourItems" autocomplete="off" />
@@ -510,7 +510,7 @@
510
510
</div>
511
511
<div class="col-lg-6">
512
512
<div class="card" style="height: 400px;">
513
<h5 class="card-header" data-loc="inventory_shipDecorations"></h5>
513
<div class="card-header" data-cardType="ShipDecorations"></div>
514
514
<div class="card-body d-flex flex-column">
515
515
<form class="input-group mb-3" onsubmit="doAcquireCountItems('ShipDecorations');return false;">
516
516
<input class="form-control" id="ShipDecorations-count" type="number" value="1" />
@@ -529,7 +529,7 @@
529
529
<div class="row g-3 mb-3">
530
530
<div class="col-lg-6">
531
531
<div class="card" style="height: 400px;">
532
<h5 class="card-header" data-loc="inventory_weaponSkins"></h5>
532
<div class="card-header" data-cardType="WeaponSkins"></div>
533
533
<div class="card-body d-flex flex-column">
534
534
<form class="input-group mb-3" onsubmit="doAcquireEquipment('WeaponSkins');return false;">
535
535
<input class="form-control" id="acquire-type-WeaponSkins" list="datalist-WeaponSkins" autocomplete="off" />
@@ -548,27 +548,8 @@
548
548
<h5 class="card-header" data-loc="general_bulkActions"></h5>
549
549
<div class="card-body">
550
550
<div class="mb-2 d-flex flex-wrap gap-2">
551
<button class="btn btn-primary" onclick="debounce(addMissingEquipment, ['Suits']);" data-loc="inventory_bulkAddSuits"></button>
552
<button class="btn btn-primary" onclick="debounce(addMissingEquipment, ['Melee', 'LongGuns', 'Pistols']);" data-loc="inventory_bulkAddWeapons"></button>
553
<button class="btn btn-primary" onclick="debounce(addMissingEquipment, ['SpaceSuits']);" data-loc="inventory_bulkAddSpaceSuits"></button>
554
<button class="btn btn-primary" onclick="debounce(addMissingEquipment, ['SpaceGuns', 'SpaceMelee']);" data-loc="inventory_bulkAddSpaceWeapons"></button>
555
<button class="btn btn-primary" onclick="debounce(addMissingEquipment, ['Sentinels']);" data-loc="inventory_bulkAddSentinels"></button>
556
<button class="btn btn-primary" onclick="debounce(addMissingEquipment, ['SentinelWeapons']);" data-loc="inventory_bulkAddSentinelWeapons"></button>
557
<button class="btn btn-primary" onclick="debounce(addMissingEquipment, ['FlavourItems']);" data-loc="inventory_bulkAddFlavourItems"></button>
558
<button class="btn btn-primary" onclick="debounce(addMissingEquipment, ['ShipDecorations']);" data-loc="inventory_bulkAddShipDecorations"></button>
559
<button class="btn btn-primary" onclick="debounce(addMissingEquipment, ['WeaponSkins']);" data-loc="inventory_bulkAddWeaponSkins"></button>
560
<button class="btn btn-primary" onclick="debounce(addMissingEvolutionProgress);" data-loc="inventory_bulkAddEvolutionProgress"></button>
561
551
<button class="btn btn-primary" onclick="removeIsNew();" data-loc="inventory_removeIsNew"></button>
562
552
</div>
563
<div class="mb-2 d-flex flex-wrap gap-2">
564
<button class="btn btn-success" onclick="debounce(maxRankAllEquipment, ['Suits']);" data-loc="inventory_bulkRankUpSuits"></button>
565
<button class="btn btn-success" onclick="debounce(maxRankAllEquipment, ['Melee', 'LongGuns', 'Pistols']);" data-loc="inventory_bulkRankUpWeapons"></button>
566
<button class="btn btn-success" onclick="debounce(maxRankAllEquipment, ['SpaceSuits']);" data-loc="inventory_bulkRankUpSpaceSuits"></button>
567
<button class="btn btn-success" onclick="debounce(maxRankAllEquipment, ['SpaceGuns', 'SpaceMelee']);" data-loc="inventory_bulkRankUpSpaceWeapons"></button>
568
<button class="btn btn-success" onclick="debounce(maxRankAllEquipment, ['Sentinels']);" data-loc="inventory_bulkRankUpSentinels"></button>
569
<button class="btn btn-success" onclick="debounce(maxRankAllEquipment, ['SentinelWeapons']);" data-loc="inventory_bulkRankUpSentinelWeapons"></button>
570
<button class="btn btn-success" onclick="debounce(maxRankAllEvolutions);" data-loc="inventory_bulkRankUpEvolutionProgress"></button>
571
</div>
572
553
</div>
573
554
</div>
574
555
</div>
@@ -609,7 +590,7 @@
609
590
<div class="row g-3 mb-3">
610
591
<div class="col-lg-6">
611
592
<div class="card" style="height: 400px;">
612
<h5 class="card-header" data-loc="guildView_techProjects"></h5>
593
<div class="card-header" data-guildCardType="TechProjects"></div>
613
594
<div class="card-body d-flex flex-column">
614
595
<form id="techProjects-form" class="input-group mb-3 d-none" onsubmit="addGuildTechProject();return false;">
615
596
<input class="form-control" id="acquire-type-TechProjects" list="datalist-TechProjects" autocomplete="off" />
@@ -625,7 +606,7 @@
625
606
</div>
626
607
<div class="col-lg-6">
627
608
<div class="card" style="height: 400px;">
628
<h5 class="card-header" data-loc="guildView_vaultDecoRecipes"></h5>
609
<div class="card-header" data-guildCardType="VaultDecoRecipes"></div>
629
610
<div class="card-body d-flex flex-column">
630
611
<form id="vaultDecoRecipes-form" class="input-group mb-3 d-none" onsubmit="addVaultItem('VaultDecoRecipes');return false;">
631
612
<input class="form-control" id="acquire-type-VaultDecoRecipes" list="datalist-VaultDecoRecipes" autocomplete="off" />
@@ -643,7 +624,7 @@
643
624
<div class="row g-3 mb-3">
644
625
<div class="col-lg-6">
645
626
<div class="card" style="height: 400px;">
646
<h5 class="card-header" data-loc="guildView_vaultMiscItems"></h5>
627
<div class="card-header" data-guildCardType="VaultMiscItems"></div>
647
628
<div class="card-body d-flex flex-column">
648
629
<form id="vaultMiscItems-form" class="input-group mb-3 d-none" onsubmit="addVaultItem('VaultMiscItems');return false;">
649
630
<input class="form-control" id="VaultMiscItems-count" type="number" value="1" />
@@ -660,7 +641,7 @@
660
641
</div>
661
642
<div class="col-lg-6">
662
643
<div class="card" style="height: 400px;">
663
<h5 class="card-header" data-loc="guildView_vaultShipDecorations"></h5>
644
<div class="card-header" data-guildCardType="VaultShipDecorations"></div>
664
645
<div class="card-body d-flex flex-column">
665
646
<form id="vaultShipDecorations-form" class="input-group mb-3 d-none" onsubmit="addVaultItem('VaultShipDecorations');return false;">
666
647
<input class="form-control" id="VaultShipDecorations-count" type="number" value="1" />
@@ -699,22 +680,6 @@
699
680
</div>
700
681
</div>
701
682
<div class="row g-3 mb-3">
702
<div class="col-lg-6">
703
<div class="card">
704
<h5 class="card-header" data-loc="general_bulkActions"></h5>
705
<div class="card-body" id="guild-actions">
706
<div class="mb-2 d-flex flex-wrap gap-2">
707
<button class="btn btn-primary" onclick="debounce(addMissingTechProjects);" data-loc="guildView_bulkAddTechProjects"></button>
708
<button class="btn btn-primary" onclick="debounce(addMissingVaultItems, ['VaultDecoRecipes']);" data-loc="guildView_bulkAddVaultDecoRecipes"></button>
709
<button class="btn btn-primary" onclick="debounce(addMissingVaultItems, ['VaultShipDecorations']);" data-loc="guildView_bulkAddVaultShipDecorations"></button>
710
</div>
711
<div class="mb-2 d-flex flex-wrap gap-2">
712
<button class="btn btn-success" onclick="debounce(fundAllTechProjects);" data-loc="guildView_bulkFundTechProjects"></button>
713
<button class="btn btn-success" onclick="debounce(completeAllTechProjects);" data-loc="guildView_bulkCompleteTechProjects"></button>
714
</div>
715
</div>
716
</div>
717
</div>
718
683
<div class="col-lg-6">
719
684
<div class="card mb-3">
720
685
<h5 class="card-header" data-loc="guildView_cheats"></h5>
@@ -176,8 +176,7 @@ function doLogout() {
176
176
177
177
function renameAccount(taken_name) {
178
178
const newname = window.prompt(
179
(taken_name ? loc("code_changeNameRetry").split("|NAME|").join(taken_name) + " " : "") +
180
loc("code_changeNameConfirm")
179
`${taken_name ? loc("code_changeNameRetry").replace("|NAME|", taken_name) + " " : ""}${loc("code_changeNameConfirm")}`
181
180
);
182
181
if (newname) {
183
182
revalidateAuthz().then(() => {
@@ -336,6 +335,29 @@ const permanentEvolutionWeapons = new Set([
336
335
"/Lotus/Weapons/Tenno/Zariman/Melee/HeavyScythe/ZarimanHeavyScythe/ZarimanHeavyScytheWeapon"
337
336
]);
338
337
338
const icons = {
339
angleDown: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"/></svg>`,
340
angleLeft: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"/></svg>`,
341
angleRight: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"/></svg>`,
342
angleUp: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z"/></svg>`,
343
arrowRotateRight: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M463.5 224l8.5 0c13.3 0 24-10.7 24-24l0-128c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8l119.5 0z"/></svg>`,
344
arrowUp: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`,
345
chartSimple: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z"/></svg>`,
346
check: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"/></svg>`,
347
childReaching: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M256 64A64 64 0 1 0 128 64a64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4L112 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-258.4c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z"/></svg>`,
348
circleStop: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm192-96l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32z"/></svg>`,
349
feather: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z"/></svg>`,
350
forward: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--!Font Awesome Free v7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path d="M371.7 43.1C360.1 32 343 28.9 328.3 35.2S304 56 304 72l0 136.3-172.3-165.1C120.1 32 103 28.9 88.3 35.2S64 56 64 72l0 368c0 16 9.6 30.5 24.3 36.8s31.8 3.2 43.4-7.9L304 303.7 304 440c0 16 9.6 30.5 24.3 36.8s31.8 3.2 43.4-7.9l192-184c7.9-7.5 12.3-18 12.3-28.9s-4.5-21.3-12.3-28.9l-192-184z"/></svg>`,
351
graduationCap: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M48 195.8l209.2 86.1c9.8 4 20.2 6.1 30.8 6.1s21-2.1 30.8-6.1l242.4-99.8c9-3.7 14.8-12.4 14.8-22.1s-5.8-18.4-14.8-22.1L318.8 38.1C309 34.1 298.6 32 288 32s-21 2.1-30.8 6.1L14.8 137.9C5.8 141.6 0 150.3 0 160L0 456c0 13.3 10.7 24 24 24s24-10.7 24-24l0-260.2zm48 71.7L96 384c0 53 86 96 192 96s192-43 192-96l0-116.6-142.9 58.9c-15.6 6.4-32.2 9.7-49.1 9.7s-33.5-3.3-49.1-9.7L96 267.4z"/></svg>`,
352
person: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0z"/></svg>`,
353
plus: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free v7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path d="M256 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 160-160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-160z" /></svg>`,
354
star: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z"/></svg>`,
355
tag: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/></svg>`,
356
trash: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`,
357
358
note: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 461.4 178.6 576 320 576zM320 200C333.3 200 344 210.7 344 224L344 336C344 349.3 333.3 360 320 360C306.7 360 296 349.3 296 336L296 224C296 210.7 306.7 200 320 200zM293.3 416C292.7 406.1 297.6 396.7 306.1 391.5C314.6 386.4 325.3 386.4 333.8 391.5C342.3 396.7 347.2 406.1 346.6 416C347.2 425.9 342.3 435.3 333.8 440.5C325.3 445.6 314.6 445.6 306.1 440.5C297.6 435.3 292.7 425.9 293.3 416z"/></svg>`
359
};
360
339
361
const itemToString = item => item.name;
340
362
const itemToStringWithSubtype = item => (item.subtype ? item.name + " (" + item.subtype + ")" : item.name);
341
363
const itemToStringWithUniqueName = item => item.name + " [" + item.uniqueName.split("/").pop() + "]";
@@ -1042,13 +1064,15 @@ function translateInventoryDataToDom() {
1042
1064
1043
1065
let maxXP = Math.pow(itemMap[item.ItemType]?.maxLevelCap ?? 30, 2) * 1000;
1044
1066
if (
1045
category != "Suits" &&
1046
category != "SpaceSuits" &&
1047
category != "Sentinels" &&
1048
category != "Hoverboards" &&
1049
category != "MechSuits" &&
1050
category != "MoaPets" &&
1051
category != "KubrowPets"
1067
![
1068
"Suits",
1069
"SpaceSuits",
1070
"Hoverboards",
1071
"MechSuits",
1072
"Sentinels",
1073
"MoaPets",
1074
"KubrowPets"
1075
].includes(category)
1052
1076
) {
1053
1077
maxXP /= 2;
1054
1078
}
@@ -1081,7 +1105,7 @@ function translateInventoryDataToDom() {
1081
1105
);
1082
1106
};
1083
1107
a.title = loc("code_unlockLevelCap");
1084
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--!Font Awesome Free v7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M48 195.8l209.2 86.1c9.8 4 20.2 6.1 30.8 6.1s21-2.1 30.8-6.1l242.4-99.8c9-3.7 14.8-12.4 14.8-22.1s-5.8-18.4-14.8-22.1L318.8 38.1C309 34.1 298.6 32 288 32s-21 2.1-30.8 6.1L14.8 137.9C5.8 141.6 0 150.3 0 160L0 456c0 13.3 10.7 24 24 24s24-10.7 24-24l0-260.2zm48 71.7L96 384c0 53 86 96 192 96s192-43 192-96l0-116.6-142.9 58.9c-15.6 6.4-32.2 9.7-49.1 9.7s-33.5-3.3-49.1-9.7L96 267.4z"/></svg>`;
1108
a.innerHTML = icons.graduationCap;
1085
1109
td.appendChild(a);
1086
1110
}
1087
1111
if (item.XP < maxXP || anyExaltedMissingXP) {
@@ -1115,7 +1139,7 @@ function translateInventoryDataToDom() {
1115
1139
});
1116
1140
};
1117
1141
a.title = loc("code_maxRank");
1118
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
1142
a.innerHTML = icons.arrowUp;
1119
1143
td.appendChild(a);
1120
1144
}
1121
1145
@@ -1123,7 +1147,7 @@ function translateInventoryDataToDom() {
1123
1147
const a = document.createElement("a");
1124
1148
a.href =
1125
1149
"/webui/detailedView?productCategory=" + category + "&itemId=" + item.ItemId.$oid;
1126
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z"/></svg>`;
1150
a.innerHTML = icons.feather;
1127
1151
td.appendChild(a);
1128
1152
}
1129
1153
@@ -1135,7 +1159,7 @@ function translateInventoryDataToDom() {
1135
1159
equipmentFeatures(category, item.ItemId.$oid, 8);
1136
1160
};
1137
1161
a.title = loc("code_gild");
1138
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z"/></svg>`;
1162
a.innerHTML = icons.star;
1139
1163
td.appendChild(a);
1140
1164
}
1141
1165
if (category == "KubrowPets") {
@@ -1147,10 +1171,10 @@ function translateInventoryDataToDom() {
1147
1171
};
1148
1172
if (item.Details.IsPuppy) {
1149
1173
a.title = loc("code_mature");
1150
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0z"/></svg>`;
1174
a.innerHTML = icons.person;
1151
1175
} else {
1152
1176
a.title = loc("code_unmature");
1153
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M256 64A64 64 0 1 0 128 64a64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4L112 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-258.4c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z"/></svg>`;
1177
a.innerHTML = icons.childReaching;
1154
1178
}
1155
1179
td.appendChild(a);
1156
1180
}
@@ -1165,7 +1189,7 @@ function translateInventoryDataToDom() {
1165
1189
}
1166
1190
};
1167
1191
a.title = loc("code_rename");
1168
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/></svg>`;
1192
a.innerHTML = icons.tag;
1169
1193
td.appendChild(a);
1170
1194
}
1171
1195
{
@@ -1177,7 +1201,7 @@ function translateInventoryDataToDom() {
1177
1201
disposeOfGear(category, item.ItemId.$oid);
1178
1202
};
1179
1203
a.title = loc("code_remove");
1180
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
1204
a.innerHTML = icons.trash;
1181
1205
td.appendChild(a);
1182
1206
}
1183
1207
tr.appendChild(td);
@@ -1209,7 +1233,7 @@ function translateInventoryDataToDom() {
1209
1233
setEvolutionProgress([{ ItemType: item.ItemType, Rank: 5 }]);
1210
1234
};
1211
1235
a.title = loc("code_maxRank");
1212
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
1236
a.innerHTML = icons.arrowUp;
1213
1237
1214
1238
td.appendChild(a);
1215
1239
}
@@ -1221,7 +1245,7 @@ function translateInventoryDataToDom() {
1221
1245
setEvolutionProgress([{ ItemType: item.ItemType, Rank: item.Rank - 1 }]);
1222
1246
};
1223
1247
a.title = loc("code_rankDown");
1224
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"/></svg>`;
1248
a.innerHTML = icons.angleDown;
1225
1249
1226
1250
td.appendChild(a);
1227
1251
}
@@ -1233,7 +1257,7 @@ function translateInventoryDataToDom() {
1233
1257
setEvolutionProgress([{ ItemType: item.ItemType, Rank: item.Rank + 1 }]);
1234
1258
};
1235
1259
a.title = loc("code_rankUp");
1236
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z"/></svg>`;
1260
a.innerHTML = icons.angleUp;
1237
1261
1238
1262
td.appendChild(a);
1239
1263
}
@@ -1258,7 +1282,7 @@ function translateInventoryDataToDom() {
1258
1282
if (item.ItemType == "/Lotus/Types/Boosters/ReviveBooster") {
1259
1283
td.textContent += " ";
1260
1284
const abbr = document.createElement("abbr");
1261
abbr.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 461.4 178.6 576 320 576zM320 200C333.3 200 344 210.7 344 224L344 336C344 349.3 333.3 360 320 360C306.7 360 296 349.3 296 336L296 224C296 210.7 306.7 200 320 200zM293.3 416C292.7 406.1 297.6 396.7 306.1 391.5C314.6 386.4 325.3 386.4 333.8 391.5C342.3 396.7 347.2 406.1 346.6 416C347.2 425.9 342.3 435.3 333.8 440.5C325.3 445.6 314.6 445.6 306.1 440.5C297.6 435.3 292.7 425.9 293.3 416z"/></svg>`;
1285
abbr.innerHTML = icons.note;
1262
1286
abbr.title = loc("code_reviveBoosterDesc");
1263
1287
td.appendChild(abbr);
1264
1288
}
@@ -1304,7 +1328,7 @@ function translateInventoryDataToDom() {
1304
1328
setBooster(item.ItemType, 0);
1305
1329
};
1306
1330
a.title = loc("code_remove");
1307
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
1331
a.innerHTML = icons.trash;
1308
1332
td.appendChild(a);
1309
1333
}
1310
1334
tr.appendChild(td);
@@ -1333,7 +1357,7 @@ function translateInventoryDataToDom() {
1333
1357
removeCustomization(item.ItemType);
1334
1358
};
1335
1359
a.title = loc("code_remove");
1336
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
1360
a.innerHTML = icons.trash;
1337
1361
td.appendChild(a);
1338
1362
}
1339
1363
tr.appendChild(td);
@@ -1364,7 +1388,7 @@ function translateInventoryDataToDom() {
1364
1388
disposeOfGear("WeaponSkins", item.ItemId.$oid);
1365
1389
};
1366
1390
a.title = loc("code_remove");
1367
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
1391
a.innerHTML = icons.trash;
1368
1392
td.appendChild(a);
1369
1393
}
1370
1394
@@ -1406,7 +1430,7 @@ function translateInventoryDataToDom() {
1406
1430
removeCountItems(item.ItemType, item.ItemCount);
1407
1431
};
1408
1432
a.title = loc("code_remove");
1409
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
1433
a.innerHTML = icons.trash;
1410
1434
td.appendChild(a);
1411
1435
}
1412
1436
tr.appendChild(td);
@@ -1453,7 +1477,7 @@ function translateInventoryDataToDom() {
1453
1477
debounce(doQuestUpdate, "setInactive", item.ItemType);
1454
1478
};
1455
1479
a.title = loc("code_setInactive");
1456
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm192-96l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32z"/></svg>`;
1480
a.innerHTML = icons.circleStop;
1457
1481
td.appendChild(a);
1458
1482
}
1459
1483
if (stage > 0) {
@@ -1464,7 +1488,7 @@ function translateInventoryDataToDom() {
1464
1488
debounce(doQuestUpdate, "resetKey", item.ItemType);
1465
1489
};
1466
1490
a.title = loc("code_reset");
1467
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M463.5 224l8.5 0c13.3 0 24-10.7 24-24l0-128c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8l119.5 0z"/></svg>`;
1491
a.innerHTML = icons.arrowRotateRight;
1468
1492
td.appendChild(a);
1469
1493
}
1470
1494
if (itemMap[item.ItemType]?.chainLength > stage && !item.Completed) {
@@ -1475,7 +1499,7 @@ function translateInventoryDataToDom() {
1475
1499
debounce(doQuestUpdate, "completeKey", item.ItemType);
1476
1500
};
1477
1501
a.title = loc("code_complete");
1478
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"/></svg>`;
1502
a.innerHTML = icons.check;
1479
1503
td.appendChild(a);
1480
1504
}
1481
1505
if (stage > 0 && itemMap[item.ItemType]?.chainLength > 1) {
@@ -1486,7 +1510,7 @@ function translateInventoryDataToDom() {
1486
1510
debounce(doQuestUpdate, "prevStage", item.ItemType);
1487
1511
};
1488
1512
a.title = loc("code_prevStage");
1489
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"/></svg>`;
1513
a.innerHTML = icons.angleLeft;
1490
1514
td.appendChild(a);
1491
1515
}
1492
1516
if (
@@ -1501,7 +1525,7 @@ function translateInventoryDataToDom() {
1501
1525
debounce(doQuestUpdate, "nextStage", item.ItemType);
1502
1526
};
1503
1527
a.title = loc("code_nextStage");
1504
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"/></svg>`;
1528
a.innerHTML = icons.angleRight;
1505
1529
td.appendChild(a);
1506
1530
}
1507
1531
{
@@ -1512,7 +1536,7 @@ function translateInventoryDataToDom() {
1512
1536
debounce(doQuestUpdate, "deleteKey", item.ItemType);
1513
1537
};
1514
1538
a.title = loc("code_remove");
1515
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
1539
a.innerHTML = icons.trash;
1516
1540
td.appendChild(a);
1517
1541
}
1518
1542
tr.appendChild(td);
@@ -1576,7 +1600,7 @@ function translateInventoryDataToDom() {
1576
1600
);
1577
1601
a.target = "_blank";
1578
1602
a.title = loc("code_viewStats");
1579
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z"/></svg>`;
1603
a.innerHTML = icons.chartSimple;
1580
1604
td.appendChild(a);
1581
1605
}
1582
1606
{
@@ -1588,7 +1612,7 @@ function translateInventoryDataToDom() {
1588
1612
disposeOfGear("Upgrades", item.ItemId.$oid);
1589
1613
};
1590
1614
a.title = loc("code_remove");
1591
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
1615
a.innerHTML = icons.trash;
1592
1616
td.appendChild(a);
1593
1617
}
1594
1618
tr.appendChild(td);
@@ -1621,7 +1645,7 @@ function translateInventoryDataToDom() {
1621
1645
setFingerprint(item.ItemType, item.ItemId, { lvl: maxRank });
1622
1646
};
1623
1647
a.title = loc("code_maxRank");
1624
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
1648
a.innerHTML = icons.arrowUp;
1625
1649
td.appendChild(a);
1626
1650
}
1627
1651
{
@@ -1633,7 +1657,7 @@ function translateInventoryDataToDom() {
1633
1657
disposeOfGear("Upgrades", item.ItemId.$oid);
1634
1658
};
1635
1659
a.title = loc("code_remove");
1636
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
1660
a.innerHTML = icons.trash;
1637
1661
td.appendChild(a);
1638
1662
}
1639
1663
tr.appendChild(td);
@@ -1667,7 +1691,7 @@ function translateInventoryDataToDom() {
1667
1691
setFingerprint(item.ItemType, item.LastAdded, { lvl: maxRank });
1668
1692
};
1669
1693
a.title = loc("code_maxRank");
1670
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
1694
a.innerHTML = icons.arrowUp;
1671
1695
td.appendChild(a);
1672
1696
}
1673
1697
{
@@ -1679,7 +1703,7 @@ function translateInventoryDataToDom() {
1679
1703
disposeOfItems("Upgrades", item.ItemType, item.ItemCount);
1680
1704
};
1681
1705
a.title = loc("code_remove");
1682
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
1706
a.innerHTML = icons.trash;
1683
1707
td.appendChild(a);
1684
1708
}
1685
1709
tr.appendChild(td);
@@ -1816,7 +1840,7 @@ function translateInventoryDataToDom() {
1816
1840
doPopArchonCrystalUpgrade(upgradeType);
1817
1841
};
1818
1842
a.title = loc("code_remove");
1819
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
1843
a.innerHTML = icons.trash;
1820
1844
td.appendChild(a);
1821
1845
}
1822
1846
tr.appendChild(td);
@@ -2002,6 +2026,16 @@ function translateInventoryDataToDom() {
2002
2026
const guildReq = $.get("/custom/getGuild?guildId=" + window.guildId);
2003
2027
guildReq.done(guildData => {
2004
2028
window.itemListPromise.then(itemMap => {
2029
document.getElementById("TechProjects-bulkAdd").classList.add("d-none");
2030
document.getElementById("TechProjects-bulkFund").classList.add("d-none");
2031
document.getElementById("TechProjects-bulkComplete").classList.add("d-none");
2032
document.getElementById("TechProjects-bulkRemove").classList.add("d-none");
2033
document.getElementById("VaultDecoRecipes-bulkAdd").classList.add("d-none");
2034
document.getElementById("VaultDecoRecipes-bulkRemove").classList.add("d-none");
2035
document.getElementById("VaultShipDecorations-bulkRemove").classList.add("d-none");
2036
document.getElementById("VaultShipDecorations-bulkAdd").classList.add("d-none");
2037
document.getElementById("VaultShipDecorations-bulkRemove").classList.add("d-none");
2038
document.getElementById("VaultMiscItems-bulkRemove").classList.add("d-none");
2005
2039
document.getElementById("guildView-loading").classList.add("d-none");
2006
2040
$("#guild-route > .row").removeClass("d-none");
2007
2041
@@ -2051,9 +2085,16 @@ function translateInventoryDataToDom() {
2051
2085
document.getElementById("vaultShipDecorations-form").classList.remove("d-none");
2052
2086
}
2053
2087
if (userGuildMember.Rank <= 1) {
2054
document.querySelectorAll("#guild-actions button").forEach(btn => {
2055
btn.disabled = false;
2056
});
2088
document.getElementById("TechProjects-bulkAdd").classList.remove("d-none");
2089
document.getElementById("TechProjects-bulkFund").classList.remove("d-none");
2090
document.getElementById("TechProjects-bulkComplete").classList.remove("d-none");
2091
document.getElementById("TechProjects-bulkRemove").classList.remove("d-none");
2092
document.getElementById("VaultDecoRecipes-bulkAdd").classList.remove("d-none");
2093
document.getElementById("VaultDecoRecipes-bulkRemove").classList.remove("d-none");
2094
document.getElementById("VaultShipDecorations-bulkRemove").classList.remove("d-none");
2095
document.getElementById("VaultShipDecorations-bulkAdd").classList.remove("d-none");
2096
document.getElementById("VaultShipDecorations-bulkRemove").classList.remove("d-none");
2097
document.getElementById("VaultMiscItems-bulkRemove").classList.remove("d-none");
2057
2098
}
2058
2099
}
2059
2100
@@ -2094,7 +2135,7 @@ function translateInventoryDataToDom() {
2094
2135
debounce(fundGuildTechProject, item.ItemType);
2095
2136
};
2096
2137
a.title = loc("code_fund");
2097
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free v7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M214.6 17.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 117.3 160 488c0 17.7 14.3 32 32 32s32-14.3 32-32l0-370.7 105.4 105.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
2138
a.innerHTML = icons.arrowUp;
2098
2139
td.appendChild(a);
2099
2140
}
2100
2141
@@ -2111,7 +2152,7 @@ function translateInventoryDataToDom() {
2111
2152
debounce(completeGuildTechProject, item.ItemType);
2112
2153
};
2113
2154
a.title = loc("code_complete");
2114
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--!Font Awesome Free v7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M371.7 43.1C360.1 32 343 28.9 328.3 35.2S304 56 304 72l0 136.3-172.3-165.1C120.1 32 103 28.9 88.3 35.2S64 56 64 72l0 368c0 16 9.6 30.5 24.3 36.8s31.8 3.2 43.4-7.9L304 303.7 304 440c0 16 9.6 30.5 24.3 36.8s31.8 3.2 43.4-7.9l192-184c7.9-7.5 12.3-18 12.3-28.9s-4.5-21.3-12.3-28.9l-192-184z"/></svg>`;
2155
a.innerHTML = icons.forward;
2115
2156
td.appendChild(a);
2116
2157
}
2117
2158
@@ -2123,7 +2164,7 @@ function translateInventoryDataToDom() {
2123
2164
debounce(removeGuildTechProject, item.ItemType);
2124
2165
};
2125
2166
a.title = loc("code_remove");
2126
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
2167
a.innerHTML = icons.trash;
2127
2168
td.appendChild(a);
2128
2169
}
2129
2170
@@ -2161,7 +2202,7 @@ function translateInventoryDataToDom() {
2161
2202
e.preventDefault();
2162
2203
removeVaultItem(vaultKey, item.ItemType, item.ItemCount * -1);
2163
2204
};
2164
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
2205
a.innerHTML = icons.trash;
2165
2206
td.appendChild(a);
2166
2207
}
2167
2208
tr.appendChild(td);
@@ -2202,7 +2243,7 @@ function translateInventoryDataToDom() {
2202
2243
changeGuildRank(guildId, member._id.$oid, member.Rank + 1);
2203
2244
};
2204
2245
a.title = loc("guildView_demote");
2205
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"/></svg>`;
2246
a.innerHTML = icons.angleDown;
2206
2247
td.appendChild(a);
2207
2248
}
2208
2249
if (
@@ -2218,7 +2259,7 @@ function translateInventoryDataToDom() {
2218
2259
changeGuildRank(guildId, member._id.$oid, member.Rank - 1);
2219
2260
};
2220
2261
a.title = loc("guildView_promote");
2221
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z"/></svg>`;
2262
a.innerHTML = icons.angleUp;
2222
2263
td.appendChild(a);
2223
2264
}
2224
2265
@@ -2236,7 +2277,7 @@ function translateInventoryDataToDom() {
2236
2277
kickFromGuild(member._id.$oid);
2237
2278
};
2238
2279
a.title = loc("code_remove");
2239
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
2280
a.innerHTML = icons.trash;
2240
2281
td.appendChild(a);
2241
2282
}
2242
2283
@@ -2285,7 +2326,7 @@ function translateInventoryDataToDom() {
2285
2326
kickFromAlliance(clan._id.$oid);
2286
2327
};
2287
2328
a.title = loc("code_remove");
2288
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
2329
a.innerHTML = icons.trash;
2289
2330
td.appendChild(a);
2290
2331
}
2291
2332
@@ -2317,17 +2358,160 @@ function translateInventoryDataToDom() {
2317
2358
});
2318
2359
}
2319
2360
2361
dictPromise.then(() => {
2362
const invenotryHeaders = document.querySelectorAll(".card-header[data-cardtype]");
2363
invenotryHeaders.forEach(elm => {
2364
elm.innerHTML = "";
2365
elm.classList.remove(...elm.classList);
2366
elm.classList.add("card-header", "d-flex", "justify-content-between", "align-items-center");
2367
2368
const cardType = elm.dataset.cardtype;
2369
2370
{
2371
const h5 = document.createElement("h5");
2372
h5.classList.add("mb-0");
2373
const locStr = `inventory_${cardType.charAt(0).toLowerCase() + cardType.slice(1)}`;
2374
h5.textContent = loc(locStr);
2375
h5.setAttribute("data-loc", locStr);
2376
2377
elm.appendChild(h5);
2378
}
2379
{
2380
const butDiv = document.createElement("div");
2381
butDiv.classList.add("d-flex", "gap-2");
2382
2383
if (!["MoaPets", "Hoverboards", "Boosters"].includes(cardType)) {
2384
const a = document.createElement("a");
2385
a.href = "#";
2386
a.onclick = function (event) {
2387
event.preventDefault();
2388
if (cardType != "EvolutionProgress") {
2389
debounce(addMissingEquipment, [cardType]);
2390
} else {
2391
debounce(addMissingEvolutionProgress);
2392
}
2393
};
2394
a.title = loc("inventory_bulkAdd");
2395
a.innerHTML = icons.plus;
2396
butDiv.appendChild(a);
2397
}
2398
if (!["Boosters", "FlavourItems", "ShipDecorations", "WeaponSkins"].includes(cardType)) {
2399
const a = document.createElement("a");
2400
a.href = "#";
2401
a.onclick = function (event) {
2402
event.preventDefault();
2403
if (cardType != "EvolutionProgress") {
2404
debounce(maxRankAllEquipment, [cardType]);
2405
} else {
2406
debounce(maxRankAllEvolutions);
2407
}
2408
};
2409
a.title = loc("inventory_bulkRankUp");
2410
a.innerHTML = icons.arrowUp;
2411
butDiv.appendChild(a);
2412
}
2413
if (!["EvolutionProgress", "Boosters"].includes(cardType)) {
2414
const a = document.createElement("a");
2415
a.href = "#";
2416
a.onclick = function (event) {
2417
event.preventDefault();
2418
removeItems(cardType);
2419
};
2420
a.title = loc("inventory_bulkRemove");
2421
a.innerHTML = icons.trash;
2422
butDiv.appendChild(a);
2423
}
2424
2425
elm.appendChild(butDiv);
2426
}
2427
});
2428
const guildHeaders = document.querySelectorAll(".card-header[data-guildCardType]");
2429
guildHeaders.forEach(elm => {
2430
elm.innerHTML = "";
2431
elm.classList.remove(...elm.classList);
2432
elm.classList.add("card-header", "d-flex", "justify-content-between", "align-items-center");
2433
2434
const cardType = elm.dataset.guildcardtype;
2435
2436
{
2437
const h5 = document.createElement("h5");
2438
h5.classList.add("mb-0");
2439
const locStr = `guildView_${cardType.charAt(0).toLowerCase() + cardType.slice(1)}`;
2440
h5.textContent = loc(locStr);
2441
h5.setAttribute("data-loc", locStr);
2442
2443
elm.appendChild(h5);
2444
}
2445
{
2446
const butDiv = document.createElement("div");
2447
butDiv.classList.add("d-flex", "gap-2");
2448
2449
if (cardType != "VaultMiscItems") {
2450
const a = document.createElement("a");
2451
a.href = "#";
2452
a.onclick = function (event) {
2453
event.preventDefault();
2454
if (cardType != "TechProjects") {
2455
debounce(addMissingVaultItems, cardType);
2456
} else {
2457
debounce(addMissingTechProjects);
2458
}
2459
};
2460
a.title = loc("inventory_bulkAdd");
2461
a.innerHTML = icons.plus;
2462
a.id = `${cardType}-bulkAdd`;
2463
butDiv.appendChild(a);
2464
}
2465
if (cardType == "TechProjects") {
2466
const a = document.createElement("a");
2467
a.href = "#";
2468
a.onclick = function (event) {
2469
event.preventDefault();
2470
debounce(fundAllTechProjects);
2471
};
2472
a.title = loc("guildView_bulkFund");
2473
a.innerHTML = icons.arrowUp;
2474
a.id = `${cardType}-bulkFund`;
2475
butDiv.appendChild(a);
2476
}
2477
if (cardType == "TechProjects") {
2478
const a = document.createElement("a");
2479
a.href = "#";
2480
a.onclick = function (event) {
2481
event.preventDefault();
2482
debounce(completeAllTechProjects);
2483
};
2484
a.title = loc("guildView_bulkComplete");
2485
a.innerHTML = icons.forward;
2486
a.id = `${cardType}-bulkComplete`;
2487
butDiv.appendChild(a);
2488
}
2489
{
2490
const a = document.createElement("a");
2491
a.href = "#";
2492
a.onclick = function (event) {
2493
event.preventDefault();
2494
if (cardType != "TechProjects") {
2495
debounce(bulkRemoveVaultItems, cardType);
2496
} else {
2497
debounce(bulkRemoveTechProjects);
2498
}
2499
};
2500
a.title = loc("inventory_bulkRemove");
2501
a.innerHTML = icons.trash;
2502
a.id = `${cardType}-bulkRemove`;
2503
butDiv.appendChild(a);
2504
}
2505
2506
elm.appendChild(butDiv);
2507
}
2508
});
2509
});
2510
2320
2511
function changeGuildRank(guildId, targetId, rankChange) {
2321
2512
revalidateAuthz().then(() => {
2322
2513
const req = $.get(
2323
"/api/changeGuildRank.php?" +
2324
window.authz +
2325
"&guildId=" +
2326
guildId +
2327
"&targetId=" +
2328
targetId +
2329
"&rankChange=" +
2330
rankChange
2514
`/api/changeGuildRank.php?${window.authz}&guildId=${guildId}&targetId=${targetId}&rankChange=${rankChange}`
2331
2515
);
2332
2516
req.done(() => {
2333
2517
updateInventory();
@@ -2762,7 +2946,7 @@ function dispatchAddVaultItemsBatch(requests, vaultType) {
2762
2946
return new Promise(resolve => {
2763
2947
revalidateAuthz().then(() => {
2764
2948
const req = $.post({
2765
url: "/custom/addVaultItems?" + window.authz + "&guildId=" + window.guildId,
2949
url: "/custom/addVaultTypeCount?" + window.authz + "&guildId=" + window.guildId,
2766
2950
contentType: "application/json",
2767
2951
data: JSON.stringify({
2768
2952
vaultType,
@@ -2779,12 +2963,11 @@ function dispatchAddVaultItemsBatch(requests, vaultType) {
2779
2963
2780
2964
function addMissingVaultItems(vaultType) {
2781
2965
const requests = [];
2782
2783
document.querySelectorAll(`#datalist-${vaultType} option`).forEach(elm => {
2784
const datalist = vaultType === "VaultShipDecorations" ? "ShipDecorations" : vaultType;
2785
if (!document.querySelector(`#${datalist}-list [data-item-type='${elm.getAttribute("data-key")}']`)) {
2966
const datalist = vaultType === "VaultShipDecorations" ? "ShipDecorations" : vaultType;
2967
document.querySelectorAll(`#datalist-${datalist} option`).forEach(elm => {
2968
if (!document.querySelector(`#${vaultType}-list [data-item-type='${elm.getAttribute("data-key")}']`)) {
2786
2969
let ItemCount = 1;
2787
if (category == "VaultShipDecorations") ItemCount = 999999;
2970
if (vaultType == "VaultShipDecorations") ItemCount = 999999;
2788
2971
requests.push({ ItemType: elm.getAttribute("data-key"), ItemCount });
2789
2972
}
2790
2973
});
@@ -2830,6 +3013,58 @@ function addMissingTechProjects() {
2830
3013
}
2831
3014
}
2832
3015
3016
function bulkRemoveVaultItems(vaultType) {
3017
const requests = [];
3018
const datalist = vaultType === "VaultShipDecorations" ? "ShipDecorations" : vaultType;
3019
document.querySelectorAll(`#datalist-${datalist} option`).forEach(elm => {
3020
if (document.querySelector(`#${vaultType}-list [data-item-type='${elm.getAttribute("data-key")}']`)) {
3021
let ItemCount = 1;
3022
if (vaultType == "VaultShipDecorations") ItemCount = 999999;
3023
requests.push({ ItemType: elm.getAttribute("data-key"), ItemCount: ItemCount * -1 });
3024
}
3025
});
3026
3027
if (
3028
requests.length != 0 &&
3029
window.confirm(loc("code_removeVaultItemsConfirm").split("|COUNT|").join(requests.length))
3030
) {
3031
return dispatchAddVaultItemsBatch(requests, vaultType);
3032
}
3033
}
3034
3035
function dispatchRemoveTechProjectsBatch(requests) {
3036
return new Promise(resolve => {
3037
revalidateAuthz().then(() => {
3038
const req = $.post({
3039
url: "/custom/removeTechProject?" + window.authz + "&guildId=" + window.guildId,
3040
contentType: "application/json",
3041
data: JSON.stringify(requests)
3042
});
3043
req.done(() => {
3044
updateInventory();
3045
resolve();
3046
});
3047
});
3048
});
3049
}
3050
3051
function bulkRemoveTechProjects() {
3052
const requests = [];
3053
3054
document.querySelectorAll("#datalist-TechProjects option").forEach(elm => {
3055
if (document.querySelector("#TechProjects-list [data-item-type='" + elm.getAttribute("data-key") + "']")) {
3056
requests.push({ ItemType: elm.getAttribute("data-key") });
3057
}
3058
});
3059
3060
if (
3061
requests.length != 0 &&
3062
window.confirm(loc("code_removeTechProjectsConfirm").split("|COUNT|").join(requests.length))
3063
) {
3064
return dispatchRemoveTechProjectsBatch(requests);
3065
}
3066
}
3067
2833
3068
function dispatchFundTechProjectsBatch(requests) {
2834
3069
return new Promise(resolve => {
2835
3070
revalidateAuthz().then(() => {
@@ -2957,13 +3192,17 @@ function maxRankAllEquipment(categories) {
2957
3192
2958
3193
categories.forEach(category => {
2959
3194
data[category].forEach(item => {
2960
const maxXP =
2961
category === "Suits" ||
2962
category === "SpaceSuits" ||
2963
category === "Sentinels" ||
2964
category === "Hoverboards"
2965
? 1_600_000
2966
: 800_000;
3195
const maxXP = [
3196
"Suits",
3197
"SpaceSuits",
3198
"Sentinels",
3199
"Hoverboards",
3200
"MechSuits",
3201
"MoaPets",
3202
"KubrowPets"
3203
].includes(category)
3204
? 1_600_000
3205
: 800_000;
2967
3206
2968
3207
if (item.XP < maxXP) {
2969
3208
if (!batchData[category]) {
@@ -3248,7 +3487,7 @@ function addItemByItemType() {
3248
3487
}
3249
3488
])
3250
3489
})
3251
.done(function (_, _, jqXHR) {
3490
.done(function (_, __, jqXHR) {
3252
3491
if (jqXHR.status === 200) {
3253
3492
toast(loc("code_succAdded"));
3254
3493
updateInventory();
@@ -3783,9 +4022,6 @@ single.getRoute("#guild-route").on("beforeload", function () {
3783
4022
document.getElementById("Alliance-list").innerHTML = "";
3784
4023
document.getElementById("guildView-alliance").textContent = "";
3785
4024
document.getElementById("Members-list").innerHTML = "";
3786
document.querySelectorAll("#guild-actions button").forEach(btn => {
3787
btn.disabled = true;
3788
});
3789
4025
$("#guild-route > .row").addClass("d-none");
3790
4026
if (window.didInitialInventoryUpdate) {
3791
4027
translateInventoryDataToDom();
@@ -3801,14 +4037,7 @@ function doPushArchonCrystalUpgrade() {
3801
4037
}
3802
4038
revalidateAuthz().then(() => {
3803
4039
$.get(
3804
"/custom/pushArchonCrystalUpgrade?" +
3805
window.authz +
3806
"&oid=" +
3807
urlParams.get("itemId") +
3808
"&type=" +
3809
uniqueName +
3810
"&count=" +
3811
$("#archon-crystal-add-count").val()
4040
`/custom/pushArchonCrystalUpgrade?${window.authz}&oid=${urlParams.get("itemId")}&type=${uniqueName}&count=${$("#archon-crystal-add-count").val()}`
3812
4041
).done(function () {
3813
4042
$("[list='datalist-archonCrystalUpgrades']").val("");
3814
4043
updateInventory();
@@ -4559,3 +4788,16 @@ function handleAbilityOverride(event, configIndex) {
4559
4788
});
4560
4789
});
4561
4790
}
4791
4792
function removeItems(category) {
4793
revalidateAuthz().then(() => {
4794
const count = document.getElementById(category + "-list").getElementsByTagName("tr").length;
4795
let message = loc("code_bulkRemoveConfirm").split("|COUNT|").join(count);
4796
if (category === "Suits") message += "\n" + loc("code_bulkRemoveNote");
4797
if (count != 0 && window.confirm(message)) {
4798
$.get("/custom/removeItems?" + window.authz + "&category=" + category).done(function () {
4799
updateInventory();
4800
});
4801
}
4802
});
4803
}
@@ -37,8 +37,12 @@ dict = {
37
37
code_renamePrompt: `Neuen benutzerdefinierten Namen eingeben:`,
38
38
code_remove: `Entfernen`,
39
39
code_addItemsConfirm: `Bist du sicher, dass du |COUNT| Inhalt(e) zu deinem Account hinzufügen möchtest?`,
40
code_bulkRemoveConfirm: `[UNTRANSLATED] Are you sure you want to remove |COUNT| item(s) from your account?`,
41
code_bulkRemoveNote: `[UNTRANSLATED] For the game to work properly, it is recommended to own at least one Warframe.`,
40
42
code_addTechProjectsConfirm: `Bist du sicher, dass du |COUNT| Forschung(en) zu deinem Clan hinzufügen möchtest?`,
41
43
code_addVaultItemsConfirm: `Bist du sicher, dass du |COUNT| Inhalt(e) zu deinem Clan-Tresor hinzufügen möchtest?`,
44
code_removeTechProjectsConfirm: `[UNTRANSLATED] Are you sure you want to remove |COUNT| research to your clan?`,
45
code_removeVaultItemsConfirm: `[UNTRANSLATED] Are you sure you want to remove |COUNT| item(s) to your clan vault?`,
42
46
code_succRankUp: `Erfolgreich aufgestiegen.`,
43
47
code_noEquipmentToRankUp: `Keine Ausstattung zum Rangaufstieg verfügbar.`,
44
48
code_succAdded: `Erfolgreich hinzugefügt.`,
@@ -135,23 +139,9 @@ dict = {
135
139
inventory_flavourItems: `<abbr title="Animationssets, Glyphen, Farbpaletten usw.">Sammlerstücke</abbr>`,
136
140
inventory_shipDecorations: `Schiffsdekorationen`,
137
141
inventory_weaponSkins: `Skins`,
138
inventory_bulkAddSuits: `Fehlende Warframes hinzufügen`,
139
inventory_bulkAddWeapons: `Fehlende Waffen hinzufügen`,
140
inventory_bulkAddSpaceSuits: `Fehlende Archwings hinzufügen`,
141
inventory_bulkAddSpaceWeapons: `Fehlende Archwing-Waffen hinzufügen`,
142
inventory_bulkAddSentinels: `Fehlende Wächter hinzufügen`,
143
inventory_bulkAddSentinelWeapons: `Fehlende Wächter-Waffen hinzufügen`,
144
inventory_bulkAddFlavourItems: `Fehlende Sammlerstücke hinzufügen`,
145
inventory_bulkAddShipDecorations: `Fehlende Schiffsdekorationen hinzufügen`,
146
inventory_bulkAddEvolutionProgress: `Fehlende Incarnon-Entwicklungsfortschritte hinzufügen`,
147
inventory_bulkAddWeaponSkins: `Fehlende Skins hinzufügen`,
148
inventory_bulkRankUpSuits: `Alle Warframes auf Max. Rang`,
149
inventory_bulkRankUpWeapons: `Alle Waffen auf Max. Rang`,
150
inventory_bulkRankUpSpaceSuits: `Alle Archwings auf Max. Rang`,
151
inventory_bulkRankUpSpaceWeapons: `Alle Archwing-Waffen auf Max. Rang`,
152
inventory_bulkRankUpSentinels: `Alle Wächter auf Max. Rang`,
153
inventory_bulkRankUpSentinelWeapons: `Alle Wächter-Waffen auf Max. Rang`,
154
inventory_bulkRankUpEvolutionProgress: `Alle Incarnon-Entwicklungsfortschritte auf Max. Rang`,
142
inventory_bulkAdd: `[UNTRANSLATED] Add Missing`,
143
inventory_bulkRankUp: `[UNTRANSLATED] Max Rank All`,
144
inventory_bulkRemove: `[UNTRANSLATED] Remove all`,
155
145
inventory_removeIsNew: `Entferne Ausrufezeichen bei neuem Equipment`,
156
146
157
147
quests_list: `Quests`,
@@ -489,11 +479,8 @@ dict = {
489
479
guildView_rank_utility: `Versorger`,
490
480
guildView_rank_warlord: `Kriegsherr`,
491
481
guildView_currency_owned: `|COUNT| im Tresor.`,
492
guildView_bulkAddTechProjects: `Fehlende Forschungen hinzufügen`,
493
guildView_bulkAddVaultDecoRecipes: `Fehlende Dojo-Deko-Baupläne hinzufügen`,
494
guildView_bulkAddVaultShipDecorations: `Fehlende Dekorationen im Tresor hinzufügen`,
495
guildView_bulkFundTechProjects: `Alle Forschungen spenden`,
496
guildView_bulkCompleteTechProjects: `Alle Forschungen abschließen`,
482
guildView_bulkFund: `[UNTRANSLATED] Fund All`,
483
guildView_bulkComplete: `[UNTRANSLATED] Complete All`,
497
484
guildView_promote: `Befördern`,
498
485
guildView_demote: `Degradieren`,
499
486
@@ -36,8 +36,12 @@ dict = {
36
36
code_renamePrompt: `Enter new custom name:`,
37
37
code_remove: `Remove`,
38
38
code_addItemsConfirm: `Are you sure you want to add |COUNT| item(s) to your account?`,
39
code_bulkRemoveConfirm: `Are you sure you want to remove |COUNT| item(s) from your account?`,
40
code_bulkRemoveNote: `For the game to work properly, it is recommended to own at least one Warframe.`,
39
41
code_addTechProjectsConfirm: `Are you sure you want to add |COUNT| research to your clan?`,
40
42
code_addVaultItemsConfirm: `Are you sure you want to add |COUNT| item(s) to your clan vault?`,
43
code_removeTechProjectsConfirm: `Are you sure you want to remove |COUNT| research to your clan?`,
44
code_removeVaultItemsConfirm: `Are you sure you want to remove |COUNT| item(s) to your clan vault?`,
41
45
code_succRankUp: `Successfully ranked up.`,
42
46
code_noEquipmentToRankUp: `No equipment to rank up.`,
43
47
code_succAdded: `Successfully added.`,
@@ -134,23 +138,9 @@ dict = {
134
138
inventory_flavourItems: `<abbr title="Animation Sets, Glyphs, Palettes, etc.">Flavour Items</abbr>`,
135
139
inventory_shipDecorations: `Ship Decorations`,
136
140
inventory_weaponSkins: `Skins`,
137
inventory_bulkAddSuits: `Add Missing Warframes`,
138
inventory_bulkAddWeapons: `Add Missing Weapons`,
139
inventory_bulkAddSpaceSuits: `Add Missing Archwings`,
140
inventory_bulkAddSpaceWeapons: `Add Missing Archwing Weapons`,
141
inventory_bulkAddSentinels: `Add Missing Sentinels`,
142
inventory_bulkAddSentinelWeapons: `Add Missing Sentinel Weapons`,
143
inventory_bulkAddFlavourItems: `Add Missing Flavour Items`,
144
inventory_bulkAddShipDecorations: `Add Missing Ship Decorations`,
145
inventory_bulkAddEvolutionProgress: `Add Missing Incarnon Evolution Progress`,
146
inventory_bulkAddWeaponSkins: `Add Missing Skins`,
147
inventory_bulkRankUpSuits: `Max Rank All Warframes`,
148
inventory_bulkRankUpWeapons: `Max Rank All Weapons`,
149
inventory_bulkRankUpSpaceSuits: `Max Rank All Archwings`,
150
inventory_bulkRankUpSpaceWeapons: `Max Rank All Archwing Weapons`,
151
inventory_bulkRankUpSentinels: `Max Rank All Sentinels`,
152
inventory_bulkRankUpSentinelWeapons: `Max Rank All Sentinel Weapons`,
153
inventory_bulkRankUpEvolutionProgress: `Max Rank All Incarnon Evolution Progress`,
141
inventory_bulkAdd: `Add Missing`,
142
inventory_bulkRankUp: `Max Rank All`,
143
inventory_bulkRemove: `Remove all`,
154
144
inventory_removeIsNew: `Remove New Equipment Exclamation Icon`,
155
145
156
146
quests_list: `Quests`,
@@ -488,11 +478,8 @@ dict = {
488
478
guildView_rank_utility: `Utility`,
489
479
guildView_rank_warlord: `Warlord`,
490
480
guildView_currency_owned: `|COUNT| in Vault.`,
491
guildView_bulkAddTechProjects: `Add Missing Research`,
492
guildView_bulkAddVaultDecoRecipes: `Add Missing Dojo Deco Recipes`,
493
guildView_bulkAddVaultShipDecorations: `Add Missing Decorations in Vault`,
494
guildView_bulkFundTechProjects: `Fund All Research`,
495
guildView_bulkCompleteTechProjects: `Complete All Research`,
481
guildView_bulkFund: `Fund All`,
482
guildView_bulkComplete: `Complete All`,
496
483
guildView_promote: `Promote`,
497
484
guildView_demote: `Demote`,
498
485
@@ -37,8 +37,12 @@ dict = {
37
37
code_renamePrompt: `Escribe tu nuevo nombre personalizado:`,
38
38
code_remove: `Quitar`,
39
39
code_addItemsConfirm: `¿Estás seguro de que deseas agregar |COUNT| objetos a tu cuenta?`,
40
code_bulkRemoveConfirm: `[UNTRANSLATED] Are you sure you want to remove |COUNT| item(s) from your account?`,
41
code_bulkRemoveNote: `[UNTRANSLATED] For the game to work properly, it is recommended to own at least one Warframe.`,
40
42
code_addTechProjectsConfirm: `¿Estás seguro de que quieres añadir |COUNT| proyectos de investigación a tu clan?`,
41
43
code_addVaultItemsConfirm: `[UNTRANSLATED] Are you sure you want to add |COUNT| item(s) to your clan vault?`,
44
code_removeTechProjectsConfirm: `[UNTRANSLATED] Are you sure you want to remove |COUNT| research to your clan?`,
45
code_removeVaultItemsConfirm: `[UNTRANSLATED] Are you sure you want to remove |COUNT| item(s) to your clan vault?`,
42
46
code_succRankUp: `Ascenso exitoso.`,
43
47
code_noEquipmentToRankUp: `No hay equipo para ascender.`,
44
48
code_succAdded: `Agregado exitosamente.`,
@@ -135,23 +139,9 @@ dict = {
135
139
inventory_flavourItems: `<abbr title="Conjuntos de animaciones, glifos, paletas, etc.">Ítems estéticos</abbr>`,
136
140
inventory_shipDecorations: `Decoraciones de nave`,
137
141
inventory_weaponSkins: `Diseños`,
138
inventory_bulkAddSuits: `Agregar Warframes faltantes`,
139
inventory_bulkAddWeapons: `Agregar armas faltantes`,
140
inventory_bulkAddSpaceSuits: `Agregar Archwings faltantes`,
141
inventory_bulkAddSpaceWeapons: `Agregar armas Archwing faltantes`,
142
inventory_bulkAddSentinels: `Agregar centinelas faltantes`,
143
inventory_bulkAddSentinelWeapons: `Agregar armas de centinela faltantes`,
144
inventory_bulkAddFlavourItems: `Añadir items estéticos faltantes`,
145
inventory_bulkAddShipDecorations: `Añadir decoraciones de Nave Faltantes`,
146
inventory_bulkAddEvolutionProgress: `Completar el progreso de evolución Incarnon faltante`,
147
inventory_bulkAddWeaponSkins: `[UNTRANSLATED] Add Missing Skins`,
148
inventory_bulkRankUpSuits: `Maximizar rango de todos los Warframes`,
149
inventory_bulkRankUpWeapons: `Maximizar rango de todas las armas`,
150
inventory_bulkRankUpSpaceSuits: `Maximizar rango de todos los Archwings`,
151
inventory_bulkRankUpSpaceWeapons: `Maximizar rango de todas las armas Archwing`,
152
inventory_bulkRankUpSentinels: `Maximizar rango de todos los centinelas`,
153
inventory_bulkRankUpSentinelWeapons: `Maximizar rango de todas las armas de centinela`,
154
inventory_bulkRankUpEvolutionProgress: `Maximizar todo el progreso de evolución Incarnon`,
142
inventory_bulkAdd: `[UNTRANSLATED] Add Missing`,
143
inventory_bulkRankUp: `[UNTRANSLATED] Max Rank All`,
144
inventory_bulkRemove: `[UNTRANSLATED] Remove all`,
155
145
inventory_removeIsNew: `[UNTRANSLATED] Remove New Equipment Exclamation Icon`,
156
146
157
147
quests_list: `Misiones`,
@@ -489,11 +479,8 @@ dict = {
489
479
guildView_rank_utility: `Utilitario`,
490
480
guildView_rank_warlord: `Señor de la guerra`,
491
481
guildView_currency_owned: `|COUNT| en la Bóveda.`,
492
guildView_bulkAddTechProjects: `Añadir proyectos de Investigación Faltantes`,
493
guildView_bulkAddVaultDecoRecipes: `Añadir planos de Decoración de Dojo Faltantes`,
494
guildView_bulkAddVaultShipDecorations: `[UNTRANSLATED] Add Missing Decorations in Vault`,
495
guildView_bulkFundTechProjects: `Financiar toda la Investigación`,
496
guildView_bulkCompleteTechProjects: `Completar toda la Investigación`,
482
guildView_bulkFund: `[UNTRANSLATED] Fund All`,
483
guildView_bulkComplete: `[UNTRANSLATED] Complete All`,
497
484
guildView_promote: `Promover`,
498
485
guildView_demote: `Degradar`,
499
486
@@ -37,8 +37,12 @@ dict = {
37
37
code_renamePrompt: `Nouveau nom :`,
38
38
code_remove: `Retirer`,
39
39
code_addItemsConfirm: `Ajouter |COUNT| items à l'inventaire ?`,
40
code_bulkRemoveConfirm: `[UNTRANSLATED] Are you sure you want to remove |COUNT| item(s) from your account?`,
41
code_bulkRemoveNote: `[UNTRANSLATED] For the game to work properly, it is recommended to own at least one Warframe.`,
40
42
code_addTechProjectsConfirm: `Ajouter |COUNT| recherches au clan ?`,
41
43
code_addVaultItemsConfirm: `Ajouter |COUNT| objets au coffre de clan ?`,
44
code_removeTechProjectsConfirm: `[UNTRANSLATED] Are you sure you want to remove |COUNT| research to your clan?`,
45
code_removeVaultItemsConfirm: `[UNTRANSLATED] Are you sure you want to remove |COUNT| item(s) to your clan vault?`,
42
46
code_succRankUp: `Montée de niveau effectuée.`,
43
47
code_noEquipmentToRankUp: `Aucun équipement à monter de niveau.`,
44
48
code_succAdded: `Ajouté.`,
@@ -135,23 +139,9 @@ dict = {
135
139
inventory_flavourItems: `<abbr title="Animation Sets, Glyphs, Palettes, etc.">Collectables</abbr>`,
136
140
inventory_shipDecorations: `Décorations du vaisseau`,
137
141
inventory_weaponSkins: `Aspects`,
138
inventory_bulkAddSuits: `Ajouter les Warframes manquantes`,
139
inventory_bulkAddWeapons: `Ajouter les armes manquantes`,
140
inventory_bulkAddSpaceSuits: `Ajouter les Archwings manquants`,
141
inventory_bulkAddSpaceWeapons: `Ajouter les armes d'Archwing manquantes`,
142
inventory_bulkAddSentinels: `Ajouter les Sentinelles manquantes`,
143
inventory_bulkAddSentinelWeapons: `Ajouter les armes de Sentinelles manquantes`,
144
inventory_bulkAddFlavourItems: `Ajouter les collectables manquants ?`,
145
inventory_bulkAddShipDecorations: `Ajouter les décorations de vaisseau manquantes`,
146
inventory_bulkAddEvolutionProgress: `Ajouter les évolutions Incarnon manquantes`,
147
inventory_bulkAddWeaponSkins: `Ajouter les skins manquants`,
148
inventory_bulkRankUpSuits: `Toutes les Warframes au rang max`,
149
inventory_bulkRankUpWeapons: `Toutes les armes au rang max`,
150
inventory_bulkRankUpSpaceSuits: `Tous les Archwings au rang max`,
151
inventory_bulkRankUpSpaceWeapons: `Toutes les armes d'Archwing au rang max`,
152
inventory_bulkRankUpSentinels: `Toutes les Sentinelles au rang max`,
153
inventory_bulkRankUpSentinelWeapons: `Toutes les armes de Sentinelles au rang max`,
154
inventory_bulkRankUpEvolutionProgress: `Toutes les évolutions Incarnon au rang max`,
142
inventory_bulkAdd: `[UNTRANSLATED] Add Missing`,
143
inventory_bulkRankUp: `[UNTRANSLATED] Max Rank All`,
144
inventory_bulkRemove: `[UNTRANSLATED] Remove all`,
155
145
inventory_removeIsNew: `Supprimer "!" sur les nouveaux équipements`,
156
146
157
147
quests_list: `Quêtes`,
@@ -489,11 +479,8 @@ dict = {
489
479
guildView_rank_utility: `Utilitaire`,
490
480
guildView_rank_warlord: `Seigneur de guerre`,
491
481
guildView_currency_owned: `|COUNT| dans le coffre.`,
492
guildView_bulkAddTechProjects: `Ajouter les recherches manquantes`,
493
guildView_bulkAddVaultDecoRecipes: `Ajouter les schémas de décorations de dojo manquantes`,
494
guildView_bulkAddVaultShipDecorations: `Ajouter dans le coffre les décorations manquantes`,
495
guildView_bulkFundTechProjects: `Financer toutes les recherches`,
496
guildView_bulkCompleteTechProjects: `Compléter toutes les recherches`,
482
guildView_bulkFund: `[UNTRANSLATED] Fund All`,
483
guildView_bulkComplete: `[UNTRANSLATED] Complete All`,
497
484
guildView_promote: `Promouvoir`,
498
485
guildView_demote: `Rétrograder`,
499
486
@@ -37,8 +37,12 @@ dict = {
37
37
code_renamePrompt: `Введите новое имя:`,
38
38
code_remove: `Удалить`,
39
39
code_addItemsConfirm: `Вы уверены, что хотите добавить |COUNT| предмет(ов) на ваш аккаунт?`,
40
code_bulkRemoveConfirm: `Вы уверены, что хотите удалить |COUNT| предмет(ов) с вашего аккаунта?`,
41
code_bulkRemoveNote: `Для правильной работы игры рекомендуется иметь хотя бы одного Варфрейма.`,
40
42
code_addTechProjectsConfirm: `Вы уверены, что хотите добавить |COUNT| исследований в свой клан?`,
41
43
code_addVaultItemsConfirm: `Вы уверены, что хотите добавить |COUNT| предмет(ов) в хранилище своего клана?`,
44
code_removeTechProjectsConfirm: `Вы уверены, что хотите удалить |COUNT| исследований своего клана?`,
45
code_removeVaultItemsConfirm: `Вы уверены, что хотите удалить |COUNT| предмет(ов) с хранилища своего клана?`,
42
46
code_succRankUp: `Ранг успешно повышен.`,
43
47
code_noEquipmentToRankUp: `Нет снаряжения для повышения ранга.`,
44
48
code_succAdded: `Успешно добавлено.`,
@@ -135,23 +139,9 @@ dict = {
135
139
inventory_flavourItems: `<abbr title="Наборы анимаций, глифы, палитры и т. д.">Уникальные предметы</abbr>`,
136
140
inventory_shipDecorations: `Украшения корабля`,
137
141
inventory_weaponSkins: `Скины`,
138
inventory_bulkAddSuits: `Добавить отсутствующие Варфреймы`,
139
inventory_bulkAddWeapons: `Добавить отсутствующее оружие`,
140
inventory_bulkAddSpaceSuits: `Добавить отсутствующие Арчвинги`,
141
inventory_bulkAddSpaceWeapons: `Добавить отсутствующее оружие Арчвингов`,
142
inventory_bulkAddSentinels: `Добавить отсутствующих Стражей`,
143
inventory_bulkAddSentinelWeapons: `Добавить отсутствующее оружие Стражей`,
144
inventory_bulkAddFlavourItems: `Добавить отсутствующие уникальные предметы`,
145
inventory_bulkAddShipDecorations: `Добавить отсутствующие украшения корабля`,
146
inventory_bulkAddEvolutionProgress: `Добавить отсутствующий прогресс эволюции Инкарнонов`,
147
inventory_bulkAddWeaponSkins: `Добавить отсутствующие скины`,
148
inventory_bulkRankUpSuits: `Макс. ранг всех Варфреймов`,
149
inventory_bulkRankUpWeapons: `Макс. ранг всего оружия`,
150
inventory_bulkRankUpSpaceSuits: `Макс. ранг всех Арчвингов`,
151
inventory_bulkRankUpSpaceWeapons: `Макс. ранг всего оружия Арчвингов`,
152
inventory_bulkRankUpSentinels: `Макс. ранг всех Стражей`,
153
inventory_bulkRankUpSentinelWeapons: `Макс. ранг всего оружия Стражей`,
154
inventory_bulkRankUpEvolutionProgress: `Макс. ранг всех эволюций Инкарнонов`,
142
inventory_bulkAdd: `Добавить отсутствующие`,
143
inventory_bulkRankUp: `Макс. ранг всего`,
144
inventory_bulkRemove: `Удалить все`,
155
145
inventory_removeIsNew: `Удалить значок восклицательного знака нового снаряжения`,
156
146
157
147
quests_list: `Квесты`,
@@ -489,11 +479,8 @@ dict = {
489
479
guildView_rank_utility: `Инженер`,
490
480
guildView_rank_warlord: `Военачальник`,
491
481
guildView_currency_owned: `В хранилище |COUNT|.`,
492
guildView_bulkAddTechProjects: `Добавить отсутствующие исследования`,
493
guildView_bulkAddVaultDecoRecipes: `Добавить отсутствующие рецепты декораций Дoдзё`,
494
guildView_bulkAddVaultShipDecorations: `Добавить отсутствующие укращения в Хранилище`,
495
guildView_bulkFundTechProjects: `Профинансировать все исследования`,
496
guildView_bulkCompleteTechProjects: `Завершить все исследования`,
482
guildView_bulkFund: `Профинансировать все`,
483
guildView_bulkComplete: `Завершить все`,
497
484
guildView_promote: `Повысить`,
498
485
guildView_demote: `Понизить`,
499
486
@@ -37,8 +37,12 @@ dict = {
37
37
code_renamePrompt: `Введіть нове ім'я:`,
38
38
code_remove: `Видалити`,
39
39
code_addItemsConfirm: `Ви впевнені, що хочете додати |COUNT| предмет(ів) на ваш обліковий запис?`,
40
code_bulkRemoveConfirm: `[UNTRANSLATED] Are you sure you want to remove |COUNT| item(s) from your account?`,
41
code_bulkRemoveNote: `[UNTRANSLATED] For the game to work properly, it is recommended to own at least one Warframe.`,
40
42
code_addTechProjectsConfirm: `Ви впевнені, що хочете додати |COUNT| досліджень до свого клану?`,
41
43
code_addVaultItemsConfirm: `Ви впевнені, що хочете додати |COUNT| предмет(ів) до сховища вашого клану?`,
44
code_removeTechProjectsConfirm: `[UNTRANSLATED] Are you sure you want to remove |COUNT| research to your clan?`,
45
code_removeVaultItemsConfirm: `[UNTRANSLATED] Are you sure you want to remove |COUNT| item(s) to your clan vault?`,
42
46
code_succRankUp: `Рівень успішно підвищено`,
43
47
code_noEquipmentToRankUp: `Немає спорядження для підвищення рівня.`,
44
48
code_succAdded: `Успішно додано.`,
@@ -135,23 +139,9 @@ dict = {
135
139
inventory_flavourItems: `<abbr title="Набори анімацій, гліфи, палітри і т. д.">Унікальні предмети</abbr>`,
136
140
inventory_shipDecorations: `Прикраси судна`,
137
141
inventory_weaponSkins: `Вигляди`,
138
inventory_bulkAddSuits: `Додати відсутні Ворфрейми`,
139
inventory_bulkAddWeapons: `Додати відсутню зброю`,
140
inventory_bulkAddSpaceSuits: `Додати відсутні Арквінґи`,
141
inventory_bulkAddSpaceWeapons: `Додати відсутню зброю Арквінґів`,
142
inventory_bulkAddSentinels: `Додати відсутніх Вартових`,
143
inventory_bulkAddSentinelWeapons: `Додати відсутню зброю Вартових`,
144
inventory_bulkAddFlavourItems: `Додати відсутні унікальні предмети`,
145
inventory_bulkAddShipDecorations: `Додати відсутні оздоби корабля`,
146
inventory_bulkAddEvolutionProgress: `Додати відсутній прогрес еволюції Інкарнонів`,
147
inventory_bulkAddWeaponSkins: `Додати відсутні вигляди`,
148
inventory_bulkRankUpSuits: `Макс. рівень всіх Ворфреймів`,
149
inventory_bulkRankUpWeapons: `Макс. рівень всієї зброї`,
150
inventory_bulkRankUpSpaceSuits: `Макс. рівень всіх Арквінґів`,
151
inventory_bulkRankUpSpaceWeapons: `Макс. рівень всієї зброї Арквінґів`,
152
inventory_bulkRankUpSentinels: `Макс. рівень всіх Вартових`,
153
inventory_bulkRankUpSentinelWeapons: `Макс. рівень всієї зброї Вартових`,
154
inventory_bulkRankUpEvolutionProgress: `Макс. рівень всіх еволюцій Інкарнонів`,
142
inventory_bulkAdd: `[UNTRANSLATED] Add Missing`,
143
inventory_bulkRankUp: `[UNTRANSLATED] Max Rank All`,
144
inventory_bulkRemove: `[UNTRANSLATED] Remove all`,
155
145
inventory_removeIsNew: `Видалити значок вигуку нового обладнання`,
156
146
157
147
quests_list: `Пригоди`,
@@ -489,11 +479,8 @@ dict = {
489
479
guildView_rank_utility: `Наймит`,
490
480
guildView_rank_warlord: `Воєвода`,
491
481
guildView_currency_owned: `В сховищі |COUNT|.`,
492
guildView_bulkAddTechProjects: `Додати відсутні дослідження`,
493
guildView_bulkAddVaultDecoRecipes: `Додати відсутні рецепти оздоблень Доджьо`,
494
guildView_bulkAddVaultShipDecorations: `Додати відсутні оздоблення в сховище`,
495
guildView_bulkFundTechProjects: `Фінансувати всі дослідження`,
496
guildView_bulkCompleteTechProjects: `Завершити всі дослідження`,
482
guildView_bulkFund: `[UNTRANSLATED] Fund All`,
483
guildView_bulkComplete: `[UNTRANSLATED] Complete All`,
497
484
guildView_promote: `Підвищити звання`,
498
485
guildView_demote: `Понизити звання`,
499
486
@@ -37,8 +37,12 @@ dict = {
37
37
code_renamePrompt: `输入新的自定义名称:`,
38
38
code_remove: `移除`,
39
39
code_addItemsConfirm: `确定要向您的账户添加 |COUNT| 件物品吗?`,
40
code_bulkRemoveConfirm: `[UNTRANSLATED] Are you sure you want to remove |COUNT| item(s) from your account?`,
41
code_bulkRemoveNote: `[UNTRANSLATED] For the game to work properly, it is recommended to own at least one Warframe.`,
40
42
code_addTechProjectsConfirm: `[UNTRANSLATED] Are you sure you want to add |COUNT| research to your clan?`,
41
43
code_addVaultItemsConfirm: `[UNTRANSLATED] Are you sure you want to add |COUNT| item(s) to your clan vault?`,
44
code_removeTechProjectsConfirm: `[UNTRANSLATED] Are you sure you want to remove |COUNT| research to your clan?`,
45
code_removeVaultItemsConfirm: `[UNTRANSLATED] Are you sure you want to remove |COUNT| item(s) to your clan vault?`,
42
46
code_succRankUp: `等级已提升`,
43
47
code_noEquipmentToRankUp: `没有可升级的装备`,
44
48
code_succAdded: `添加成功`,
@@ -135,23 +139,9 @@ dict = {
135
139
inventory_flavourItems: `<abbr title="动作表情、浮印、调色板等">装饰物品</abbr>`,
136
140
inventory_shipDecorations: `飞船装饰`,
137
141
inventory_weaponSkins: `外观`,
138
inventory_bulkAddSuits: `添加缺失战甲`,
139
inventory_bulkAddWeapons: `添加缺失武器`,
140
inventory_bulkAddSpaceSuits: `添加缺失载具`,
141
inventory_bulkAddSpaceWeapons: `添加缺失载具武器`,
142
inventory_bulkAddSentinels: `添加缺失守护`,
143
inventory_bulkAddSentinelWeapons: `添加缺失守护武器`,
144
inventory_bulkAddFlavourItems: `[UNTRANSLATED] Add Missing Flavour Items`,
145
inventory_bulkAddShipDecorations: `[UNTRANSLATED] Add Missing Ship Decorations`,
146
inventory_bulkAddEvolutionProgress: `添加缺失的灵化之源进度`,
147
inventory_bulkAddWeaponSkins: `[UNTRANSLATED] Add Missing Skins`,
148
inventory_bulkRankUpSuits: `所有战甲升满级`,
149
inventory_bulkRankUpWeapons: `所有武器升满级`,
150
inventory_bulkRankUpSpaceSuits: `所有载具升满级`,
151
inventory_bulkRankUpSpaceWeapons: `所有载具武器升满级`,
152
inventory_bulkRankUpSentinels: `所有守护升满级`,
153
inventory_bulkRankUpSentinelWeapons: `所有守护武器升满级`,
154
inventory_bulkRankUpEvolutionProgress: `所有灵化之源进度最大等级`,
142
inventory_bulkAdd: `[UNTRANSLATED] Add Missing`,
143
inventory_bulkRankUp: `[UNTRANSLATED] Max Rank All`,
144
inventory_bulkRemove: `[UNTRANSLATED] Remove all`,
155
145
inventory_removeIsNew: `[UNTRANSLATED] Remove New Equipment Exclamation Icon`,
156
146
157
147
quests_list: `系列任务`,
@@ -489,11 +479,8 @@ dict = {
489
479
guildView_rank_utility: `实管`,
490
480
guildView_rank_warlord: `军阀`,
491
481
guildView_currency_owned: `[UNTRANSLATED] |COUNT| in Vault.`,
492
guildView_bulkAddTechProjects: `[UNTRANSLATED] Add Missing Research`,
493
guildView_bulkAddVaultDecoRecipes: `[UNTRANSLATED] Add Missing Dojo Deco Recipes`,
494
guildView_bulkAddVaultShipDecorations: `[UNTRANSLATED] Add Missing Decorations in Vault`,
495
guildView_bulkFundTechProjects: `[UNTRANSLATED] Fund All Research`,
496
guildView_bulkCompleteTechProjects: `[UNTRANSLATED] Complete All Research`,
482
guildView_bulkFund: `[UNTRANSLATED] Fund All`,
483
guildView_bulkComplete: `[UNTRANSLATED] Complete All`,
497
484
guildView_promote: `升级`,
498
485
guildView_demote: `降级`,
499
486