返回提交历史
Modified
config-vanilla.json
+0
-1
Modified
src/controllers/api/inventoryController.ts
+2
-7
Modified
src/controllers/custom/getItemListsController.ts
+11
-1
Added
src/controllers/custom/removeCustomizationController.ts
+14
-0
Modified
src/routes/custom.ts
+2
-0
Modified
src/services/configService.ts
+2
-2
Modified
static/webui/index.html
+18
-4
Modified
static/webui/script.js
+76
-0
Modified
static/webui/translations/de.js
+6
-1
Modified
static/webui/translations/en.js
+6
-1
Modified
static/webui/translations/es.js
+6
-1
Modified
static/webui/translations/fr.js
+6
-1
Modified
static/webui/translations/ru.js
+6
-1
Modified
static/webui/translations/uk.js
+6
-1
Modified
static/webui/translations/zh.js
+6
-1
XFEstudio/XFESpaceNinjaServer
feat(webui): flavour Items (#2779)
Re #2361 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2779 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>
7e437d75
代码差异
15 个文件
+167
-22
@@ -12,7 +12,6 @@
12
12
"autoCreateAccount": true,
13
13
"skipTutorial": false,
14
14
"unlockAllShipDecorations": false,
15
"unlockAllFlavourItems": false,
16
15
"unlockAllSkins": false,
17
16
"fullyStockedVendors": false,
18
17
"skipClanKeyCrafting": false,
@@ -10,7 +10,7 @@ import { equipmentKeys } from "../../types/inventoryTypes/inventoryTypes.ts";
10
10
import type { IPolarity } from "../../types/inventoryTypes/commonInventoryTypes.ts";
11
11
import { ArtifactPolarity } from "../../types/inventoryTypes/commonInventoryTypes.ts";
12
12
import type { ICountedItem } from "warframe-public-export-plus";
13
import { ExportCustoms, ExportFlavour, ExportResources } from "warframe-public-export-plus";
13
import { ExportCustoms, ExportResources } from "warframe-public-export-plus";
14
14
import { applyCheatsToInfestedFoundry, handleSubsumeCompletion } from "../../services/infestedFoundryService.ts";
15
15
import {
16
16
addEmailItem,
@@ -330,12 +330,7 @@ export const getInventoryResponse = async (
330
330
}
331
331
}
332
332
333
if (config.unlockAllFlavourItems) {
334
inventoryResponse.FlavourItems = [];
335
for (const uniqueName in ExportFlavour) {
336
inventoryResponse.FlavourItems.push({ ItemType: uniqueName });
337
}
338
} else if (config.worldState?.baroTennoConRelay) {
333
if (config.worldState?.baroTennoConRelay) {
339
334
[
340
335
"/Lotus/Types/Items/Events/TennoConRelay2022EarlyAccess",
341
336
"/Lotus/Types/Items/Events/TennoConRelay2023EarlyAccess",
@@ -10,6 +10,7 @@ import {
10
10
ExportDojoRecipes,
11
11
ExportDrones,
12
12
ExportFactions,
13
ExportFlavour,
13
14
ExportGear,
14
15
ExportKeys,
15
16
ExportRailjackWeapons,
@@ -62,6 +63,7 @@ interface ItemLists {
62
63
Abilities: ListedItem[];
63
64
TechProjects: ListedItem[];
64
65
VaultDecoRecipes: ListedItem[];
66
FlavourItems: ListedItem[];
65
67
//circuitGameModes: ListedItem[];
66
68
}
67
69
@@ -102,7 +104,8 @@ const getItemListsController: RequestHandler = (req, response) => {
102
104
VarziaOffers: [],
103
105
Abilities: [],
104
106
TechProjects: [],
105
VaultDecoRecipes: []
107
VaultDecoRecipes: [],
108
FlavourItems: []
106
109
/*circuitGameModes: [
107
110
{
108
111
uniqueName: "Survival",
@@ -443,6 +446,13 @@ const getItemListsController: RequestHandler = (req, response) => {
443
446
});
444
447
}
445
448
449
for (const [uniqueName, item] of Object.entries(ExportFlavour)) {
450
res.FlavourItems.push({
451
uniqueName: uniqueName,
452
name: getString(item.name, lang)
453
});
454
}
455
446
456
response.json(res);
447
457
};
448
458
@@ -0,0 +1,14 @@
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
6
export const removeCustomizationController: RequestHandler = async (req, res) => {
7
const accountId = await getAccountIdForRequest(req);
8
const ItemType = req.query.itemType as string;
9
const inventory = await getInventory(accountId, "FlavourItems");
10
inventory.FlavourItems.pull({ ItemType });
11
await inventory.save();
12
res.end();
13
broadcastInventoryUpdate(req);
14
};
@@ -21,6 +21,7 @@ import { unlockAllSimarisResearchEntriesController } from "../controllers/custom
21
21
import { unlockAllScansController } from "../controllers/custom/unlockAllScansController.ts";
22
22
import { unlockAllShipFeaturesController } from "../controllers/custom/unlockAllShipFeaturesController.ts";
23
23
import { unlockAllCapturaScenesController } from "../controllers/custom/unlockAllCapturaScenesController.ts";
24
import { removeCustomizationController } from "../controllers/custom/removeCustomizationController.ts";
24
25
25
26
import { abilityOverrideController } from "../controllers/custom/abilityOverrideController.ts";
26
27
import { createAccountController } from "../controllers/custom/createAccountController.ts";
@@ -70,6 +71,7 @@ customRouter.get("/unlockAllSimarisResearchEntries", unlockAllSimarisResearchEnt
70
71
customRouter.get("/unlockAllScans", unlockAllScansController);
71
72
customRouter.get("/unlockAllShipFeatures", unlockAllShipFeaturesController);
72
73
customRouter.get("/unlockAllCapturaScenes", unlockAllCapturaScenesController);
74
customRouter.get("/removeCustomization", removeCustomizationController);
73
75
74
76
customRouter.post("/abilityOverride", abilityOverrideController);
75
77
customRouter.post("/createAccount", createAccountController);
@@ -22,7 +22,6 @@ export interface IConfig {
22
22
autoCreateAccount?: boolean;
23
23
skipTutorial?: boolean;
24
24
unlockAllShipDecorations?: boolean;
25
unlockAllFlavourItems?: boolean;
26
25
unlockAllSkins?: boolean;
27
26
fullyStockedVendors?: boolean;
28
27
skipClanKeyCrafting?: boolean;
@@ -128,7 +127,8 @@ export const configRemovedOptionsKeys = [
128
127
"noDojoResearchCosts",
129
128
"noDojoResearchTime",
130
129
"fastClanAscension",
131
"unlockAllDecoRecipes"
130
"unlockAllDecoRecipes",
131
"unlockAllFlavourItems"
132
132
];
133
133
134
134
export const configPath = path.join(repoDir, args.configPath ?? "config.json");
@@ -459,6 +459,22 @@
459
459
</div>
460
460
</div>
461
461
</div>
462
<div class="row g-3 mb-3">
463
<div class="col-lg-6">
464
<div class="card" style="height: 400px;">
465
<h5 class="card-header" data-loc="inventory_flavourItems"></h5>
466
<div class="card-body overflow-auto">
467
<form class="input-group mb-3" onsubmit="doAcquireEquipment('FlavourItems');return false;">
468
<input class="form-control" id="acquire-type-FlavourItems" list="datalist-FlavourItems" />
469
<button class="btn btn-primary" type="submit" data-loc="general_addButton"></button>
470
</form>
471
<table class="table table-hover w-100">
472
<tbody id="FlavourItems-list"></tbody>
473
</table>
474
</div>
475
</div>
476
</div>
477
</div>
462
478
<div class="card">
463
479
<h5 class="card-header" data-loc="general_bulkActions"></h5>
464
480
<div class="card-body">
@@ -469,6 +485,7 @@
469
485
<button class="btn btn-primary" onclick="debounce(addMissingEquipment, ['SpaceGuns', 'SpaceMelee']);" data-loc="inventory_bulkAddSpaceWeapons"></button>
470
486
<button class="btn btn-primary" onclick="debounce(addMissingEquipment, ['Sentinels']);" data-loc="inventory_bulkAddSentinels"></button>
471
487
<button class="btn btn-primary" onclick="debounce(addMissingEquipment, ['SentinelWeapons']);" data-loc="inventory_bulkAddSentinelWeapons"></button>
488
<button class="btn btn-primary" onclick="debounce(addMissingEquipment, ['FlavourItems']);" data-loc="inventory_bulkAddFlavourItems"></button>
472
489
<button class="btn btn-primary" onclick="debounce(addMissingEvolutionProgress);" data-loc="inventory_bulkAddEvolutionProgress"></button>
473
490
</div>
474
491
<div class="mb-2 d-flex flex-wrap gap-2">
@@ -983,10 +1000,6 @@
983
1000
<input class="form-check-input" type="checkbox" id="unlockAllShipDecorations" />
984
1001
<label class="form-check-label" for="unlockAllShipDecorations" data-loc="cheats_unlockAllShipDecorations"></label>
985
1002
</div>
986
<div class="form-check">
987
<input class="form-check-input" type="checkbox" id="unlockAllFlavourItems" />
988
<label class="form-check-label" for="unlockAllFlavourItems" data-loc="cheats_unlockAllFlavourItems"></label>
989
</div>
990
1003
<div class="form-check">
991
1004
<input class="form-check-input" type="checkbox" id="unlockAllSkins" />
992
1005
<label class="form-check-label" for="unlockAllSkins" data-loc="cheats_unlockAllSkins"></label>
@@ -1387,6 +1400,7 @@
1387
1400
<datalist id="datalist-Abilities"></datalist>
1388
1401
<datalist id="datalist-TechProjects"></datalist>
1389
1402
<datalist id="datalist-VaultDecoRecipes"></datalist>
1403
<datalist id="datalist-FlavourItems"></datalist>
1390
1404
<datalist id="datalist-circuitGameModes">
1391
1405
<option>Survival</option>
1392
1406
<option>VoidFlood</option>
@@ -570,6 +570,33 @@ function fetchItemList() {
570
570
option.textContent = item.name;
571
571
document.getElementById("changeSyndicate").appendChild(option);
572
572
});
573
} else if (type == "FlavourItems") {
574
const cursorPrefixes = {
575
Controller: loc("code_controller"),
576
MouseGrey: loc("code_mouse"),
577
MouseLine: loc("code_mouseLine"),
578
Mouse: loc("code_mouse")
579
};
580
items.forEach(item => {
581
if (item.uniqueName.startsWith("/Lotus/Interface/Graphics/CustomUI/Cursors/")) {
582
let base = item.uniqueName.replace("/Lotus/Interface/Graphics/CustomUI/Cursors/", "");
583
for (const key in cursorPrefixes) {
584
if (base.startsWith(key)) {
585
const prefix = cursorPrefixes[key];
586
const suffix = base.slice(key.length);
587
item.name = prefix + " " + suffix;
588
break;
589
}
590
}
591
} else if (item.uniqueName.includes("ColourPicker")) {
592
item.name = loc("code_itemColorPalette").split("|ITEM|").join(item.name);
593
}
594
const option = document.createElement("option");
595
option.setAttribute("data-key", item.uniqueName);
596
option.value = item.name;
597
document.getElementById("datalist-" + type).appendChild(option);
598
itemMap[item.uniqueName] = { ...item, type };
599
});
573
600
} else {
574
601
const nameToItems = {};
575
602
items.forEach(item => {
@@ -960,6 +987,46 @@ function updateInventory() {
960
987
document.getElementById("EvolutionProgress-list").appendChild(tr);
961
988
});
962
989
990
document.getElementById("FlavourItems-list").innerHTML = "";
991
data.FlavourItems.forEach(item => {
992
const datalist = document.getElementById("datalist-FlavourItems");
993
if (!data.FlavourItems.some(x => x.ItemType == item.uniqueName)) {
994
if (!datalist.querySelector(`option[value="${item.uniqueName}"]`)) {
995
reAddToItemList(itemMap, "FlavourItems", item.ItemType);
996
}
997
}
998
const optionToRemove = datalist.querySelector(`option[value="${item.ItemType}"]`);
999
optionToRemove?.remove();
1000
1001
const tr = document.createElement("tr");
1002
tr.setAttribute("data-item-type", item.ItemType);
1003
{
1004
const td = document.createElement("td");
1005
td.textContent = itemMap[item.ItemType]?.name ?? item.ItemType;
1006
tr.appendChild(td);
1007
}
1008
{
1009
const td = document.createElement("td");
1010
td.classList = "text-end text-nowrap";
1011
1012
{
1013
const a = document.createElement("a");
1014
a.href = "#";
1015
a.onclick = function (event) {
1016
event.preventDefault();
1017
reAddToItemList(itemMap, "FlavourItems", item.ItemType);
1018
removeCustomization(item.ItemType);
1019
};
1020
a.title = loc("code_remove");
1021
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>`;
1022
td.appendChild(a);
1023
}
1024
tr.appendChild(td);
1025
}
1026
1027
document.getElementById("FlavourItems-list").appendChild(tr);
1028
});
1029
963
1030
const datalistEvolutionProgress = document.querySelectorAll("#datalist-EvolutionProgress option");
964
1031
const formEvolutionProgress = document.querySelector('form[onsubmit*="doAcquireEvolution()"]');
965
1032
@@ -1971,6 +2038,15 @@ function doAcquireEquipment(category) {
1971
2038
});
1972
2039
}
1973
2040
2041
function removeCustomization(uniqueName) {
2042
revalidateAuthz().then(() => {
2043
const req = $.get("/custom/removeCustomization?" + window.authz + "&itemType=" + uniqueName);
2044
req.done(() => {
2045
updateInventory();
2046
});
2047
});
2048
}
2049
1974
2050
function getRequiredParts(category, WeaponType) {
1975
2051
switch (category) {
1976
2052
case "Hoverboards":
@@ -64,6 +64,10 @@ dict = {
64
64
code_completed: `Abgeschlossen`,
65
65
code_active: `Aktiv`,
66
66
code_pigment: `Pigment`,
67
code_controller: `[UNTRANSLATED] Controller cursor`,
68
code_mouseLine: `[UNTRANSLATED] Line cursor`,
69
code_mouse: `[UNTRANSLATED] Cursor`,
70
code_itemColorPalette: `|ITEM| Farbpalette`,
67
71
code_mature: `Für den Kampf auswachsen lassen`,
68
72
code_unmature: `Genetisches Altern zurücksetzen`,
69
73
code_fund: `[UNTRANSLATED] Fund`,
@@ -104,12 +108,14 @@ dict = {
104
108
inventory_kubrowPets: `Bestien`,
105
109
inventory_evolutionProgress: `Incarnon-Entwicklungsfortschritte`,
106
110
inventory_Boosters: `Booster`,
111
inventory_flavourItems: `<abbr title="Animationssets, Glyphen, Farbpaletten usw.">Sammlerstücke</abbr>`,
107
112
inventory_bulkAddSuits: `Fehlende Warframes hinzufügen`,
108
113
inventory_bulkAddWeapons: `Fehlende Waffen hinzufügen`,
109
114
inventory_bulkAddSpaceSuits: `Fehlende Archwings hinzufügen`,
110
115
inventory_bulkAddSpaceWeapons: `Fehlende Archwing-Waffen hinzufügen`,
111
116
inventory_bulkAddSentinels: `Fehlende Wächter hinzufügen`,
112
117
inventory_bulkAddSentinelWeapons: `Fehlende Wächter-Waffen hinzufügen`,
118
inventory_bulkAddFlavourItems: `[UNTRANSLATED] Add Missing Flavour Items`,
113
119
inventory_bulkAddEvolutionProgress: `Fehlende Incarnon-Entwicklungsfortschritte hinzufügen`,
114
120
inventory_bulkRankUpSuits: `Alle Warframes auf Max. Rang`,
115
121
inventory_bulkRankUpWeapons: `Alle Waffen auf Max. Rang`,
@@ -200,7 +206,6 @@ dict = {
200
206
cheats_dontSubtractConsumables: `Verbrauchsgegenstände (Ausrüstung) nicht verbrauchen`,
201
207
cheats_unlockAllShipFeatures: `Alle Schiffs-Funktionen freischalten`,
202
208
cheats_unlockAllShipDecorations: `Alle Schiffsdekorationen freischalten`,
203
cheats_unlockAllFlavourItems: `Alle <abbr title="Animationssets, Glyphen, Farbpaletten usw.">Sammlerstücke</abbr> freischalten`,
204
209
cheats_unlockAllSkins: `Alle Skins freischalten`,
205
210
cheats_unlockAllCapturaScenes: `Alle Photora-Szenen freischalten`,
206
211
cheats_universalPolarityEverywhere: `Universelle Polarität überall`,
@@ -63,6 +63,10 @@ dict = {
63
63
code_completed: `Completed`,
64
64
code_active: `Active`,
65
65
code_pigment: `Pigment`,
66
code_controller: `Controller cursor`,
67
code_mouseLine: `Line cursor`,
68
code_mouse: `Cursor`,
69
code_itemColorPalette: `|ITEM| Color Palette`,
66
70
code_mature: `Mature for combat`,
67
71
code_unmature: `Regress genetic aging`,
68
72
code_fund: `Fund`,
@@ -103,12 +107,14 @@ dict = {
103
107
inventory_kubrowPets: `Beasts`,
104
108
inventory_evolutionProgress: `Incarnon Evolution Progress`,
105
109
inventory_Boosters: `Boosters`,
110
inventory_flavourItems: `<abbr title="Animation Sets, Glyphs, Palettes, etc.">Flavour Items</abbr>`,
106
111
inventory_bulkAddSuits: `Add Missing Warframes`,
107
112
inventory_bulkAddWeapons: `Add Missing Weapons`,
108
113
inventory_bulkAddSpaceSuits: `Add Missing Archwings`,
109
114
inventory_bulkAddSpaceWeapons: `Add Missing Archwing Weapons`,
110
115
inventory_bulkAddSentinels: `Add Missing Sentinels`,
111
116
inventory_bulkAddSentinelWeapons: `Add Missing Sentinel Weapons`,
117
inventory_bulkAddFlavourItems: `Add Missing Flavour Items`,
112
118
inventory_bulkAddEvolutionProgress: `Add Missing Incarnon Evolution Progress`,
113
119
inventory_bulkRankUpSuits: `Max Rank All Warframes`,
114
120
inventory_bulkRankUpWeapons: `Max Rank All Weapons`,
@@ -199,7 +205,6 @@ dict = {
199
205
cheats_dontSubtractConsumables: `Don't Subtract Consumables`,
200
206
cheats_unlockAllShipFeatures: `Unlock All Ship Features`,
201
207
cheats_unlockAllShipDecorations: `Unlock All Ship Decorations`,
202
cheats_unlockAllFlavourItems: `Unlock All <abbr title="Animation Sets, Glyphs, Palettes, etc.">Flavor Items</abbr>`,
203
208
cheats_unlockAllSkins: `Unlock All Skins`,
204
209
cheats_unlockAllCapturaScenes: `Unlock All Captura Scenes`,
205
210
cheats_universalPolarityEverywhere: `Universal Polarity Everywhere`,
@@ -64,6 +64,10 @@ dict = {
64
64
code_completed: `Completada`,
65
65
code_active: `Activa`,
66
66
code_pigment: `Pigmento`,
67
code_controller: `[UNTRANSLATED] Controller cursor`,
68
code_mouseLine: `[UNTRANSLATED] Line cursor`,
69
code_mouse: `[UNTRANSLATED] Cursor`,
70
code_itemColorPalette: `Paleta de colores |ITEM|`,
67
71
code_mature: `Listo para el combate`,
68
72
code_unmature: `Regresar el envejecimiento genético`,
69
73
code_fund: `[UNTRANSLATED] Fund`,
@@ -104,12 +108,14 @@ dict = {
104
108
inventory_kubrowPets: `Bestias`,
105
109
inventory_evolutionProgress: `Progreso de evolución Incarnon`,
106
110
inventory_Boosters: `Potenciadores`,
111
inventory_flavourItems: `<abbr title="Conjuntos de animaciones, glifos, paletas, etc.">Ítems estéticos</abbr>`,
107
112
inventory_bulkAddSuits: `Agregar Warframes faltantes`,
108
113
inventory_bulkAddWeapons: `Agregar armas faltantes`,
109
114
inventory_bulkAddSpaceSuits: `Agregar Archwings faltantes`,
110
115
inventory_bulkAddSpaceWeapons: `Agregar armas Archwing faltantes`,
111
116
inventory_bulkAddSentinels: `Agregar centinelas faltantes`,
112
117
inventory_bulkAddSentinelWeapons: `Agregar armas de centinela faltantes`,
118
inventory_bulkAddFlavourItems: `[UNTRANSLATED] Add Missing Flavour Items`,
113
119
inventory_bulkAddEvolutionProgress: `Completar el progreso de evolución Incarnon faltante`,
114
120
inventory_bulkRankUpSuits: `Maximizar rango de todos los Warframes`,
115
121
inventory_bulkRankUpWeapons: `Maximizar rango de todas las armas`,
@@ -200,7 +206,6 @@ dict = {
200
206
cheats_dontSubtractConsumables: `No restar consumibles`,
201
207
cheats_unlockAllShipFeatures: `Desbloquear todas las funciones de nave`,
202
208
cheats_unlockAllShipDecorations: `Desbloquear todas las decoraciones de nave`,
203
cheats_unlockAllFlavourItems: `Desbloquear todos los <abbr title="Conjuntos de animaciones, glifos, paletas, etc.">ítems estéticos</abbr>`,
204
209
cheats_unlockAllSkins: `Desbloquear todas las skins`,
205
210
cheats_unlockAllCapturaScenes: `Desbloquear todas las escenas de Captura`,
206
211
cheats_universalPolarityEverywhere: `Polaridad universal en todas partes`,
@@ -64,6 +64,10 @@ dict = {
64
64
code_completed: `Complétée`,
65
65
code_active: `Active`,
66
66
code_pigment: `Pigment`,
67
code_controller: `[UNTRANSLATED] Controller cursor`,
68
code_mouseLine: `[UNTRANSLATED] Line cursor`,
69
code_mouse: `[UNTRANSLATED] Cursor`,
70
code_itemColorPalette: `Palette de couleurs |ITEM|`,
67
71
code_mature: `Maturer pour le combat`,
68
72
code_unmature: `Régrésser l'âge génétique`,
69
73
code_fund: `Financer`,
@@ -104,12 +108,14 @@ dict = {
104
108
inventory_kubrowPets: `Bêtes`,
105
109
inventory_evolutionProgress: `Progrès de l'évolution Incarnon`,
106
110
inventory_Boosters: `Boosters`,
111
inventory_flavourItems: `[UNTRANSLATED] <abbr title="Animation Sets, Glyphs, Palettes, etc.">Flavour Items</abbr>`,
107
112
inventory_bulkAddSuits: `Ajouter les Warframes manquantes`,
108
113
inventory_bulkAddWeapons: `Ajouter les armes manquantes`,
109
114
inventory_bulkAddSpaceSuits: `Ajouter les Archwings manquants`,
110
115
inventory_bulkAddSpaceWeapons: `Ajouter les armes d'Archwing manquantes`,
111
116
inventory_bulkAddSentinels: `Ajouter les Sentinelles manquantes`,
112
117
inventory_bulkAddSentinelWeapons: `Ajouter les armes de Sentinelles manquantes`,
118
inventory_bulkAddFlavourItems: `[UNTRANSLATED] Add Missing Flavour Items`,
113
119
inventory_bulkAddEvolutionProgress: `Ajouter les évolutions Incarnon manquantes`,
114
120
inventory_bulkRankUpSuits: `Toutes les Warframes au rang max`,
115
121
inventory_bulkRankUpWeapons: `Toutes les armes au rang max`,
@@ -200,7 +206,6 @@ dict = {
200
206
cheats_dontSubtractConsumables: `Ne pas retirer de consommables`,
201
207
cheats_unlockAllShipFeatures: `Débloquer tous les segments du vaisseau`,
202
208
cheats_unlockAllShipDecorations: `Débloquer toutes les décorations du vaisseau`,
203
cheats_unlockAllFlavourItems: `Débloquer tous les <abbr title="Animations, Glyphes, Palettes, etc.">Flavor Items</abbr>`,
204
209
cheats_unlockAllSkins: `Débloquer tous les skins`,
205
210
cheats_unlockAllCapturaScenes: `Débloquer toutes les scènes captura`,
206
211
cheats_universalPolarityEverywhere: `Polarités universelles partout`,