feat(webui): MoaPets support (#1402)
All checks were successful
Build / build (20) (push) Successful in 42s
Build / build (18) (push) Successful in 1m19s
Build Docker image / docker (push) Successful in 32s
Build / build (22) (push) Successful in 1m17s

Translations were taken from the game

Reviewed-on: #1402
Reviewed-by: Sainan <sainan@calamity.inc>
Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
This commit is contained in:
AMelonInsideLemon 2025-03-31 09:18:41 -07:00 committed by Sainan
parent fb58aeb07f
commit d033c2bc12
9 changed files with 201 additions and 12 deletions

View File

@ -1,15 +1,26 @@
import { getAccountIdForRequest } from "@/src/services/loginService"; import { getAccountIdForRequest } from "@/src/services/loginService";
import { getInventory, addEquipment, occupySlot, productCategoryToInventoryBin } from "@/src/services/inventoryService"; import {
getInventory,
addEquipment,
occupySlot,
productCategoryToInventoryBin,
applyDefaultUpgrades
} from "@/src/services/inventoryService";
import { modularWeaponTypes } from "@/src/helpers/modularWeaponHelper"; import { modularWeaponTypes } from "@/src/helpers/modularWeaponHelper";
import { getDefaultUpgrades } from "@/src/services/itemDataService";
import { IEquipmentDatabase } from "@/src/types/inventoryTypes/commonInventoryTypes";
import { ExportWeapons } from "warframe-public-export-plus"; import { ExportWeapons } from "warframe-public-export-plus";
import { RequestHandler } from "express"; import { RequestHandler } from "express";
export const addModularEquipmentController: RequestHandler = async (req, res) => { export const addModularEquipmentController: RequestHandler = async (req, res) => {
const requiredFields = new Set();
const accountId = await getAccountIdForRequest(req); const accountId = await getAccountIdForRequest(req);
const request = req.body as IAddModularEquipmentRequest; const request = req.body as IAddModularEquipmentRequest;
const category = modularWeaponTypes[request.ItemType]; const category = modularWeaponTypes[request.ItemType];
const inventoryBin = productCategoryToInventoryBin(category)!; const inventoryBin = productCategoryToInventoryBin(category)!;
const inventory = await getInventory(accountId, `${category} ${inventoryBin}`); requiredFields.add(category);
requiredFields.add(inventoryBin);
request.ModularParts.forEach(part => { request.ModularParts.forEach(part => {
if (ExportWeapons[part].gunType) { if (ExportWeapons[part].gunType) {
if (category == "LongGuns") { if (category == "LongGuns") {
@ -25,9 +36,57 @@ export const addModularEquipmentController: RequestHandler = async (req, res) =>
GT_BEAM: "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryBeam" GT_BEAM: "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryBeam"
}[ExportWeapons[part].gunType]; }[ExportWeapons[part].gunType];
} }
} else if (request.ItemType == "/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetPowerSuit") {
if (part.includes("ZanukaPetPartHead")) {
request.ItemType = {
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetParts/ZanukaPetPartHeadA":
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetAPowerSuit",
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetParts/ZanukaPetPartHeadB":
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetBPowerSuit",
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetParts/ZanukaPetPartHeadC":
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetCPowerSuit"
}[part]!;
}
} }
}); });
addEquipment(inventory, category, request.ItemType, request.ModularParts); const defaultUpgrades = getDefaultUpgrades(request.ModularParts);
if (defaultUpgrades) {
requiredFields.add("RawUpgrades");
}
const defaultWeaponsMap: Record<string, string[]> = {
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetAPowerSuit": [
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetMeleeWeaponIP"
],
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetBPowerSuit": [
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetMeleeWeaponIS"
],
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetCPowerSuit": [
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetMeleeWeaponPS"
]
};
const defaultWeapons = defaultWeaponsMap[request.ItemType];
if (defaultWeapons) {
for (const defaultWeapon of defaultWeapons) {
const category = ExportWeapons[defaultWeapon].productCategory;
requiredFields.add(category);
requiredFields.add(productCategoryToInventoryBin(category));
}
}
const inventory = await getInventory(accountId, Array.from(requiredFields).join(" "));
if (defaultWeapons) {
for (const defaultWeapon of defaultWeapons) {
const category = ExportWeapons[defaultWeapon].productCategory;
addEquipment(inventory, category, defaultWeapon);
occupySlot(inventory, productCategoryToInventoryBin(category)!, true);
}
}
const defaultOverwrites: Partial<IEquipmentDatabase> = {
Configs: applyDefaultUpgrades(inventory, defaultUpgrades)
};
addEquipment(inventory, category, request.ItemType, request.ModularParts, undefined, defaultOverwrites);
occupySlot(inventory, inventoryBin, true); occupySlot(inventory, inventoryBin, true);
await inventory.save(); await inventory.save();
res.end(); res.end();

View File

@ -13,6 +13,7 @@ export const modularWeaponTypes: Record<string, TEquipmentKey> = {
"/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon": "OperatorAmps", "/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon": "OperatorAmps",
"/Lotus/Types/Vehicles/Hoverboard/HoverboardSuit": "Hoverboards", "/Lotus/Types/Vehicles/Hoverboard/HoverboardSuit": "Hoverboards",
"/Lotus/Types/Friendly/Pets/MoaPets/MoaPetPowerSuit": "MoaPets", "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetPowerSuit": "MoaPets",
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetPowerSuit": "MoaPets",
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetAPowerSuit": "MoaPets", "/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetAPowerSuit": "MoaPets",
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetBPowerSuit": "MoaPets", "/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetBPowerSuit": "MoaPets",
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetCPowerSuit": "MoaPets", "/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetCPowerSuit": "MoaPets",

View File

@ -294,6 +294,34 @@
</div> </div>
</div> </div>
</div> </div>
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_moaPets"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="handleModularSelection('MoaPets');return false;">
<input class="form-control" id="acquire-type-MoaPets" list="datalist-MoaPets" />
<button class="btn btn-primary" type="submit" data-loc="general_addButton"></button>
</form>
<form class="input-group mb-3" id="modular-MoaPets" style="display: none;">
<input class="form-control" id="acquire-type-MoaPets-MOA_ENGINE" list="datalist-ModularParts-MOA_ENGINE" />
<input class="form-control" id="acquire-type-MoaPets-MOA_PAYLOAD" list="datalist-ModularParts-MOA_PAYLOAD" />
<input class="form-control" id="acquire-type-MoaPets-MOA_HEAD" list="datalist-ModularParts-MOA_HEAD" />
<input class="form-control" id="acquire-type-MoaPets-MOA_LEG" list="datalist-ModularParts-MOA_LEG" />
</form>
<form class="input-group mb-3" id="modular-MoaPets-Zanuka" style="display: none;">
<input class="form-control" id="acquire-type-MoaPets-ZANUKA_HEAD" list="datalist-ModularParts-ZANUKA_HEAD" />
<input class="form-control" id="acquire-type-MoaPets-ZANUKA_BODY" list="datalist-ModularParts-ZANUKA_BODY" />
<input class="form-control" id="acquire-type-MoaPets-ZANUKA_LEG" list="datalist-ModularParts-ZANUKA_LEG" />
<input class="form-control" id="acquire-type-MoaPets-ZANUKA_TAIL" list="datalist-ModularParts-ZANUKA_TAIL" />
</form>
<table class="table table-hover w-100">
<tbody id="MoaPets-list"></tbody>
</table>
</div>
</div>
</div>
</div>
<div class="row g-3">
<div class="col-lg-6"> <div class="col-lg-6">
<div class="card mb-3" style="height: 400px;"> <div class="card mb-3" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_sentinelWeapons"></h5> <h5 class="card-header" data-loc="inventory_sentinelWeapons"></h5>
@ -637,6 +665,7 @@
<datalist id="datalist-Sentinels"></datalist> <datalist id="datalist-Sentinels"></datalist>
<datalist id="datalist-MechSuits"></datalist> <datalist id="datalist-MechSuits"></datalist>
<datalist id="datalist-Syndicates"></datalist> <datalist id="datalist-Syndicates"></datalist>
<datalist id="datalist-MoaPets"></datalist>
<datalist id="datalist-miscitems"></datalist> <datalist id="datalist-miscitems"></datalist>
<datalist id="datalist-mods"> <datalist id="datalist-mods">
<option data-key="/Lotus/Upgrades/Mods/Fusers/LegendaryModFuser" value="Legendary Core"></option> <option data-key="/Lotus/Upgrades/Mods/Fusers/LegendaryModFuser" value="Legendary Core"></option>
@ -659,6 +688,14 @@
<datalist id="datalist-ModularParts-GUN_SECONDARY_HANDLE"></datalist> <datalist id="datalist-ModularParts-GUN_SECONDARY_HANDLE"></datalist>
<datalist id="datalist-ModularParts-GUN_BARREL"></datalist> <datalist id="datalist-ModularParts-GUN_BARREL"></datalist>
<datalist id="datalist-ModularParts-GUN_CLIP"></datalist> <datalist id="datalist-ModularParts-GUN_CLIP"></datalist>
<datalist id="datalist-ModularParts-MOA_ENGINE"></datalist>
<datalist id="datalist-ModularParts-MOA_PAYLOAD"></datalist>
<datalist id="datalist-ModularParts-MOA_HEAD"></datalist>
<datalist id="datalist-ModularParts-MOA_LEG"></datalist>
<datalist id="datalist-ModularParts-ZANUKA_BODY"></datalist>
<datalist id="datalist-ModularParts-ZANUKA_HEAD"></datalist>
<datalist id="datalist-ModularParts-ZANUKA_LEG"></datalist>
<datalist id="datalist-ModularParts-ZANUKA_TAIL"></datalist>
<script src="/webui/libs/jquery-3.6.0.min.js"></script> <script src="/webui/libs/jquery-3.6.0.min.js"></script>
<script src="/webui/libs/whirlpool-js.min.js"></script> <script src="/webui/libs/whirlpool-js.min.js"></script>
<script src="/webui/libs/single.js"></script> <script src="/webui/libs/single.js"></script>

View File

@ -202,6 +202,15 @@ function fetchItemList() {
uniqueName: "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary", uniqueName: "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary",
name: loc("code_kitgun") name: loc("code_kitgun")
}); });
data.MoaPets ??= [];
data.MoaPets.push({
uniqueName: "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetPowerSuit",
name: loc("code_moa")
});
data.MoaPets.push({
uniqueName: "/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetPowerSuit",
name: loc("code_zanuka")
});
const itemMap = { const itemMap = {
// Generics for rivens // Generics for rivens
@ -220,7 +229,16 @@ function fetchItemList() {
"/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/OperatorTrainingAmpWeapon": { "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/OperatorTrainingAmpWeapon": {
name: loc("code_moteAmp") name: loc("code_moteAmp")
}, },
"/Lotus/Types/Vehicles/Hoverboard/HoverboardSuit": { name: loc("code_kDrive") } "/Lotus/Types/Vehicles/Hoverboard/HoverboardSuit": { name: loc("code_kDrive") },
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetAPowerSuit": {
name: loc("code_zanukaA")
},
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetBPowerSuit": {
name: loc("code_zanukaB")
},
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetCPowerSuit": {
name: loc("code_zanukaC")
}
}; };
for (const [type, items] of Object.entries(data)) { for (const [type, items] of Object.entries(data)) {
if (type == "archonCrystalUpgrades") { if (type == "archonCrystalUpgrades") {
@ -259,7 +277,15 @@ function fetchItemList() {
"LWPT_GUN_PRIMARY_HANDLE", "LWPT_GUN_PRIMARY_HANDLE",
"LWPT_GUN_SECONDARY_HANDLE", "LWPT_GUN_SECONDARY_HANDLE",
"LWPT_GUN_BARREL", "LWPT_GUN_BARREL",
"LWPT_GUN_CLIP" "LWPT_GUN_CLIP",
"LWPT_MOA_ENGINE",
"LWPT_MOA_PAYLOAD",
"LWPT_MOA_HEAD",
"LWPT_MOA_LEG",
"LWPT_ZANUKA_BODY",
"LWPT_ZANUKA_HEAD",
"LWPT_ZANUKA_LEG",
"LWPT_ZANUKA_TAIL"
]; ];
if (supportedModularParts.includes(item.partType)) { if (supportedModularParts.includes(item.partType)) {
const option = document.createElement("option"); const option = document.createElement("option");
@ -269,6 +295,7 @@ function fetchItemList() {
.getElementById("datalist-" + type + "-" + item.partType.slice(5)) .getElementById("datalist-" + type + "-" + item.partType.slice(5))
.appendChild(option); .appendChild(option);
} else { } else {
console.log(item.partType);
const option = document.createElement("option"); const option = document.createElement("option");
option.setAttribute("data-key", item.uniqueName); option.setAttribute("data-key", item.uniqueName);
option.value = item.name; option.value = item.name;
@ -308,7 +335,11 @@ function updateInventory() {
"/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryShotgun", "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryShotgun",
"/Lotus/Weapons/Ostron/Melee/LotusModularWeapon", "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon",
"/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon", "/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon",
"/Lotus/Types/Vehicles/Hoverboard/HoverboardSuit" "/Lotus/Types/Vehicles/Hoverboard/HoverboardSuit",
"/Lotus/Types/Friendly/Pets/MoaPets/MoaPetPowerSuit",
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetAPowerSuit",
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetBPowerSuit",
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetCPowerSuit"
]; ];
// Populate inventory route // Populate inventory route
@ -330,7 +361,8 @@ function updateInventory() {
"SentinelWeapons", "SentinelWeapons",
"Hoverboards", "Hoverboards",
"OperatorAmps", "OperatorAmps",
"MechSuits" "MechSuits",
"MoaPets"
].forEach(category => { ].forEach(category => {
document.getElementById(category + "-list").innerHTML = ""; document.getElementById(category + "-list").innerHTML = "";
data[category].forEach(item => { data[category].forEach(item => {
@ -709,6 +741,13 @@ function doAcquireModularEquipment(category, ItemType) {
case "Pistols": case "Pistols":
requiredParts = ["GUN_BARREL", "GUN_SECONDARY_HANDLE", "GUN_CLIP"]; requiredParts = ["GUN_BARREL", "GUN_SECONDARY_HANDLE", "GUN_CLIP"];
break; break;
case "MoaPets":
if (ItemType == "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetPowerSuit") {
requiredParts = ["MOA_ENGINE", "MOA_PAYLOAD", "MOA_HEAD", "MOA_LEG"];
} else {
requiredParts = ["ZANUKA_BODY", "ZANUKA_HEAD", "ZANUKA_LEG", "ZANUKA_TAIL"];
}
break;
} }
requiredParts.forEach(part => { requiredParts.forEach(part => {
const partName = getKey(document.getElementById("acquire-type-" + category + "-" + part)); const partName = getKey(document.getElementById("acquire-type-" + category + "-" + part));
@ -1375,7 +1414,9 @@ function handleModularSelection(category) {
"/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon", "/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon",
"/Lotus/Weapons/Ostron/Melee/LotusModularWeapon", "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon",
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary", "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary",
"/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary" "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary",
"/Lotus/Types/Friendly/Pets/MoaPets/MoaPetPowerSuit",
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetPowerSuit"
]; ];
const itemType = getKey(document.getElementById("acquire-type-" + category)); const itemType = getKey(document.getElementById("acquire-type-" + category));
@ -1390,16 +1431,37 @@ function handleModularSelection(category) {
"/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon", "/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon",
"/Lotus/Weapons/Ostron/Melee/LotusModularWeapon", "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon",
"/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary", "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimary",
"/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary" "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary",
"/Lotus/Types/Friendly/Pets/MoaPets/MoaPetPowerSuit",
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetPowerSuit"
]; ];
const supportedModularInventoryCategory = ["OperatorAmps", "Melee", "LongGuns", "Pistols"]; const supportedModularInventoryCategory = ["OperatorAmps", "Melee", "LongGuns", "Pistols", "MoaPets"];
supportedModularInventoryCategory.forEach(inventoryCategory => { supportedModularInventoryCategory.forEach(inventoryCategory => {
document.getElementById("acquire-type-" + inventoryCategory).addEventListener("input", function () { document.getElementById("acquire-type-" + inventoryCategory).addEventListener("input", function () {
const modularFields = document.getElementById("modular-" + inventoryCategory); const modularFields = document.getElementById("modular-" + inventoryCategory);
if (modularWeapons.includes(getKey(this))) { const modularFieldsZanuka =
modularFields.style.display = ""; inventoryCategory === "MoaPets"
? document.getElementById("modular-" + inventoryCategory + "-Zanuka")
: null;
const key = getKey(this);
if (modularWeapons.includes(key)) {
if (key === "/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetPowerSuit" && modularFieldsZanuka) {
modularFields.style.display = "none";
modularFieldsZanuka.style.display = "";
} else if (key === "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetPowerSuit") {
modularFields.style.display = "";
if (modularFieldsZanuka) {
modularFieldsZanuka.style.display = "none";
}
} else {
modularFields.style.display = "";
}
} else { } else {
modularFields.style.display = "none"; modularFields.style.display = "none";
if (modularFieldsZanuka) {
modularFieldsZanuka.style.display = "none";
}
} }
}); });
}); });

View File

@ -40,6 +40,11 @@ dict = {
code_addModsConfirm: `Bist du sicher, dass du |COUNT| Mods zu deinem Account hinzufügen möchtest?`, code_addModsConfirm: `Bist du sicher, dass du |COUNT| Mods zu deinem Account hinzufügen möchtest?`,
code_succImport: `Erfolgreich importiert.`, code_succImport: `Erfolgreich importiert.`,
code_gild: `Veredeln`, code_gild: `Veredeln`,
code_moa: `Moa`,
code_zanuka: `Jagdhund`,
code_zanukaA: `Jagdhund: Dorma`,
code_zanukaB: `Jagdhund: Bhaira`,
code_zanukaC: `Jagdhund: Hec`,
login_description: `Melde dich mit deinem OpenWF-Account an (denselben Angaben wie im Spiel, wenn du dich mit diesem Server verbindest).`, login_description: `Melde dich mit deinem OpenWF-Account an (denselben Angaben wie im Spiel, wenn du dich mit diesem Server verbindest).`,
login_emailLabel: `E-Mail-Adresse`, login_emailLabel: `E-Mail-Adresse`,
login_passwordLabel: `Passwort`, login_passwordLabel: `Passwort`,
@ -65,6 +70,7 @@ dict = {
inventory_sentinelWeapons: `Wächter-Waffen`, inventory_sentinelWeapons: `Wächter-Waffen`,
inventory_operatorAmps: `Verstärker`, inventory_operatorAmps: `Verstärker`,
inventory_hoverboards: `K-Drives`, inventory_hoverboards: `K-Drives`,
inventory_moaPets: `Moa`,
inventory_bulkAddSuits: `Fehlende Warframes hinzufügen`, inventory_bulkAddSuits: `Fehlende Warframes hinzufügen`,
inventory_bulkAddWeapons: `Fehlende Waffen hinzufügen`, inventory_bulkAddWeapons: `Fehlende Waffen hinzufügen`,
inventory_bulkAddSpaceSuits: `Fehlende Archwings hinzufügen`, inventory_bulkAddSpaceSuits: `Fehlende Archwings hinzufügen`,

View File

@ -39,6 +39,11 @@ dict = {
code_addModsConfirm: `Are you sure you want to add |COUNT| mods to your account?`, code_addModsConfirm: `Are you sure you want to add |COUNT| mods to your account?`,
code_succImport: `Successfully imported.`, code_succImport: `Successfully imported.`,
code_gild: `Gild`, code_gild: `Gild`,
code_moa: `Moa`,
code_zanuka: `Hound`,
code_zanukaA: `Dorma Hound`,
code_zanukaB: `Bhaira Hound`,
code_zanukaC: `Hec Hound`,
login_description: `Login using your OpenWF account credentials (same as in-game when connecting to this server).`, login_description: `Login using your OpenWF account credentials (same as in-game when connecting to this server).`,
login_emailLabel: `Email address`, login_emailLabel: `Email address`,
login_passwordLabel: `Password`, login_passwordLabel: `Password`,
@ -64,6 +69,7 @@ dict = {
inventory_sentinelWeapons: `Sentinel Weapons`, inventory_sentinelWeapons: `Sentinel Weapons`,
inventory_operatorAmps: `Amps`, inventory_operatorAmps: `Amps`,
inventory_hoverboards: `K-Drives`, inventory_hoverboards: `K-Drives`,
inventory_moaPets: `Moa`,
inventory_bulkAddSuits: `Add Missing Warframes`, inventory_bulkAddSuits: `Add Missing Warframes`,
inventory_bulkAddWeapons: `Add Missing Weapons`, inventory_bulkAddWeapons: `Add Missing Weapons`,
inventory_bulkAddSpaceSuits: `Add Missing Archwings`, inventory_bulkAddSpaceSuits: `Add Missing Archwings`,

View File

@ -40,6 +40,11 @@ dict = {
code_addModsConfirm: `Ajouter |COUNT| mods à l'inventaire ?`, code_addModsConfirm: `Ajouter |COUNT| mods à l'inventaire ?`,
code_succImport: `Importé.`, code_succImport: `Importé.`,
code_gild: `[UNTRANSLATED] Gild`, code_gild: `[UNTRANSLATED] Gild`,
code_moa: `Moa`,
code_zanuka: `Molosse`,
code_zanukaA: `Molosse Dorma`,
code_zanukaB: `Molosse Bhaira`,
code_zanukaC: `Molosse Hec`,
login_description: `Connexion avec les informations de connexion OpenWF.`, login_description: `Connexion avec les informations de connexion OpenWF.`,
login_emailLabel: `Email`, login_emailLabel: `Email`,
login_passwordLabel: `Mot de passe`, login_passwordLabel: `Mot de passe`,
@ -65,6 +70,7 @@ dict = {
inventory_sentinelWeapons: `Armes de sentinelles`, inventory_sentinelWeapons: `Armes de sentinelles`,
inventory_operatorAmps: `Amplificateurs`, inventory_operatorAmps: `Amplificateurs`,
inventory_hoverboards: `K-Drives`, inventory_hoverboards: `K-Drives`,
inventory_moaPets: `Moa`,
inventory_bulkAddSuits: `Ajouter les Warframes manquantes`, inventory_bulkAddSuits: `Ajouter les Warframes manquantes`,
inventory_bulkAddWeapons: `Ajouter les armes manquantes`, inventory_bulkAddWeapons: `Ajouter les armes manquantes`,
inventory_bulkAddSpaceSuits: `Ajouter les Archwings manquants`, inventory_bulkAddSpaceSuits: `Ajouter les Archwings manquants`,

View File

@ -40,6 +40,11 @@ dict = {
code_addModsConfirm: `Вы уверены, что хотите добавить |COUNT| модов на ваш аккаунт?`, code_addModsConfirm: `Вы уверены, что хотите добавить |COUNT| модов на ваш аккаунт?`,
code_succImport: `Успешно импортировано.`, code_succImport: `Успешно импортировано.`,
code_gild: `Улучшить`, code_gild: `Улучшить`,
code_moa: `МОА`,
code_zanuka: `Гончая`,
code_zanukaA: `Гончая: Дорма`,
code_zanukaB: `Гончая: Бхайра`,
code_zanukaC: `Гончая: Хек`,
login_description: `Войдите, используя учетные данные OpenWF (те же, что и в игре при подключении к этому серверу).`, login_description: `Войдите, используя учетные данные OpenWF (те же, что и в игре при подключении к этому серверу).`,
login_emailLabel: `Адрес электронной почты`, login_emailLabel: `Адрес электронной почты`,
login_passwordLabel: `Пароль`, login_passwordLabel: `Пароль`,
@ -65,6 +70,7 @@ dict = {
inventory_sentinelWeapons: `Оружие стражей`, inventory_sentinelWeapons: `Оружие стражей`,
inventory_operatorAmps: `Усилители`, inventory_operatorAmps: `Усилители`,
inventory_hoverboards: `К-Драйвы`, inventory_hoverboards: `К-Драйвы`,
inventory_moaPets: `МОА`,
inventory_bulkAddSuits: `Добавить отсутствующие варфреймы`, inventory_bulkAddSuits: `Добавить отсутствующие варфреймы`,
inventory_bulkAddWeapons: `Добавить отсутствующее оружие`, inventory_bulkAddWeapons: `Добавить отсутствующее оружие`,
inventory_bulkAddSpaceSuits: `Добавить отсутствующие арчвинги`, inventory_bulkAddSpaceSuits: `Добавить отсутствующие арчвинги`,

View File

@ -40,6 +40,11 @@ dict = {
code_addModsConfirm: `确定要向账户添加 |COUNT| 张MOD吗`, code_addModsConfirm: `确定要向账户添加 |COUNT| 张MOD吗`,
code_succImport: `导入成功。`, code_succImport: `导入成功。`,
code_gild: `[UNTRANSLATED] Gild`, code_gild: `[UNTRANSLATED] Gild`,
code_moa: `恐鸟`,
code_zanuka: `猎犬`,
code_zanukaA: `铎玛猎犬`,
code_zanukaB: `拜拉猎犬`,
code_zanukaC: `骸克猎犬`,
login_description: `使用您的 OpenWF 账户凭证登录(与游戏内连接本服务器时使用的昵称相同)。`, login_description: `使用您的 OpenWF 账户凭证登录(与游戏内连接本服务器时使用的昵称相同)。`,
login_emailLabel: `电子邮箱`, login_emailLabel: `电子邮箱`,
login_passwordLabel: `密码`, login_passwordLabel: `密码`,
@ -65,6 +70,7 @@ dict = {
inventory_sentinelWeapons: `守护武器`, inventory_sentinelWeapons: `守护武器`,
inventory_operatorAmps: `增幅器`, inventory_operatorAmps: `增幅器`,
inventory_hoverboards: `K式悬浮板`, inventory_hoverboards: `K式悬浮板`,
inventory_moaPets: `恐鸟`,
inventory_bulkAddSuits: `添加缺失战甲`, inventory_bulkAddSuits: `添加缺失战甲`,
inventory_bulkAddWeapons: `添加缺失武器`, inventory_bulkAddWeapons: `添加缺失武器`,
inventory_bulkAddSpaceSuits: `添加缺失Archwing`, inventory_bulkAddSpaceSuits: `添加缺失Archwing`,