Merge branch 'main' into 自用

This commit is contained in:
AlexisinGit 2025-09-13 21:39:11 +08:00
commit 9c5b1de8bd
12 changed files with 88 additions and 552 deletions

8
package-lock.json generated
View File

@ -17,7 +17,7 @@
"morgan": "^1.10.0",
"ncp": "^2.0.0",
"undici": "^7.10.0",
"warframe-public-export-plus": "^0.5.86",
"warframe-public-export-plus": "^0.5.88",
"warframe-riven-info": "^0.1.2",
"winston": "^3.17.0",
"winston-daily-rotate-file": "^5.0.0",
@ -5532,9 +5532,9 @@
}
},
"node_modules/warframe-public-export-plus": {
"version": "0.5.86",
"resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.86.tgz",
"integrity": "sha512-tWJudKs4WdjFNiF6ipav9md3sboPXJFvSItTfSmT9ko+Xgg1QP75vS/qPsuPw67pqzMaSnAbHpEzNn/rZ4mCug=="
"version": "0.5.88",
"resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.88.tgz",
"integrity": "sha512-uX766+MYDY3pMncu/23Dp9VZvrUe8pdWRWMcxfUbXg29aYO2GqipimHaFtw+vfrY06YAE8nbFkCWhFL3oPDPGw=="
},
"node_modules/warframe-riven-info": {
"version": "0.1.2",

View File

@ -35,7 +35,7 @@
"morgan": "^1.10.0",
"ncp": "^2.0.0",
"undici": "^7.10.0",
"warframe-public-export-plus": "^0.5.86",
"warframe-public-export-plus": "^0.5.88",
"warframe-riven-info": "^0.1.2",
"winston": "^3.17.0",
"winston-daily-rotate-file": "^5.0.0",

View File

@ -10,7 +10,7 @@ import type {
IMiscItem
} from "../../types/inventoryTypes/inventoryTypes.ts";
import { InventorySlot } from "../../types/inventoryTypes/inventoryTypes.ts";
import { ExportMisc } from "warframe-public-export-plus";
import { ExportResources } from "warframe-public-export-plus";
import { getRecipe } from "../../services/itemDataService.ts";
import { toMongoDate, version_compare } from "../../helpers/inventoryHelpers.ts";
import { logger } from "../../utils/logger.ts";
@ -146,7 +146,7 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
const currentUnixSeconds = Math.trunc(Date.now() / 1000);
for (const contribution of request.ResourceContributions) {
const snack = ExportMisc.helminthSnacks[contribution.ItemType];
const snack = ExportResources[contribution.ItemType].helminthSnack!;
// tally items for removal
const change = miscItemChanges.find(x => x.ItemType == contribution.ItemType);

View File

@ -1,11 +1,11 @@
import { applyClientEquipmentUpdates, getInventory } from "../../services/inventoryService.ts";
import { getMaxLevelCap } from "../../services/itemDataService.ts";
import { getAccountIdForRequest } from "../../services/loginService.ts";
import { broadcastInventoryUpdate } from "../../services/wsService.ts";
import type { IOid } from "../../types/commonTypes.ts";
import type { IEquipmentClient } from "../../types/equipmentTypes.ts";
import type { TEquipmentKey } from "../../types/inventoryTypes/inventoryTypes.ts";
import type { RequestHandler } from "express";
import { ExportMisc } from "warframe-public-export-plus";
export const addXpController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req);
@ -15,7 +15,7 @@ export const addXpController: RequestHandler = async (req, res) => {
for (const clientItem of gear) {
const dbItem = inventory[category as TEquipmentKey].id((clientItem.ItemId as IOid).$oid);
if (dbItem) {
if (dbItem.ItemType in ExportMisc.uniqueLevelCaps) {
if (getMaxLevelCap(dbItem.ItemType) > 30) {
if ((dbItem.Polarized ?? 0) < 5) {
dbItem.Polarized = 5;
}

View File

@ -12,7 +12,6 @@ import {
ExportFactions,
ExportGear,
ExportKeys,
ExportMisc,
ExportRailjackWeapons,
ExportRecipes,
ExportRelics,
@ -80,7 +79,7 @@ const toTitleCase = (str: string): string => {
const getItemListsController: RequestHandler = (req, response) => {
const lang = getDict(typeof req.query.lang == "string" ? req.query.lang : "en");
const res: ItemLists = {
uniqueLevelCaps: ExportMisc.uniqueLevelCaps,
uniqueLevelCaps: {},
Suits: [],
LongGuns: [],
Melee: [],
@ -147,6 +146,9 @@ const getItemListsController: RequestHandler = (req, response) => {
name: getString(ability.name || uniqueName, lang)
});
});
if (item.maxLevelCap) {
res.uniqueLevelCaps[uniqueName] = item.maxLevelCap;
}
}
for (const [uniqueName, item] of Object.entries(ExportSentinels)) {
if (item.productCategory == "Sentinels" || item.productCategory == "KubrowPets") {
@ -196,6 +198,9 @@ const getItemListsController: RequestHandler = (req, response) => {
name: getString(item.name, lang)
});
}
if (item.maxLevelCap) {
res.uniqueLevelCaps[uniqueName] = item.maxLevelCap;
}
}
for (const [uniqueName, item] of Object.entries(ExportResources)) {
let name = getString(item.name, lang);

View File

@ -40,6 +40,7 @@ import {
ExportBoosters,
ExportBundles,
ExportChallenges,
ExportCreditBundles,
ExportCustoms,
ExportDrones,
ExportEmailItems,
@ -48,7 +49,6 @@ import {
ExportFusionBundles,
ExportGear,
ExportKeys,
ExportMisc,
ExportRailjackWeapons,
ExportRecipes,
ExportResources,
@ -631,8 +631,8 @@ export const addItem = async (
};
}
}
if (typeName in ExportMisc.creditBundles) {
const creditsTotal = ExportMisc.creditBundles[typeName] * quantity;
if (typeName in ExportCreditBundles) {
const creditsTotal = ExportCreditBundles[typeName].credits * quantity;
inventory.RegularCredits += creditsTotal;
return {
RegularCredits: creditsTotal

View File

@ -323,3 +323,13 @@ export const getDefaultUpgrades = (parts: string[]): IDefaultUpgrade[] | undefin
}
return allDefaultUpgrades.length == 0 ? undefined : allDefaultUpgrades;
};
export const getMaxLevelCap = (type: string): number => {
if (type in ExportWarframes) {
return ExportWarframes[type].maxLevelCap ?? 30;
}
if (type in ExportWeapons) {
return ExportWeapons[type].maxLevelCap ?? 30;
}
return 30;
};

View File

@ -5,6 +5,7 @@ import type {
TMissionType
} from "warframe-public-export-plus";
import {
ExportAnimals,
ExportEnemies,
ExportFusionBundles,
ExportRegions,
@ -61,7 +62,6 @@ import { createMessage } from "./inboxService.ts";
import kuriaMessage50 from "../../static/fixed_responses/kuriaMessages/fiftyPercent.json" with { type: "json" };
import kuriaMessage75 from "../../static/fixed_responses/kuriaMessages/seventyFivePercent.json" with { type: "json" };
import kuriaMessage100 from "../../static/fixed_responses/kuriaMessages/oneHundredPercent.json" with { type: "json" };
import conservationAnimals from "../../static/fixed_responses/conservationAnimals.json" with { type: "json" };
import {
generateNemesisProfile,
getInfestedLichItemRewards,
@ -92,11 +92,6 @@ import { handleGuildGoalProgress } from "./guildService.ts";
import { importLoadOutConfig } from "./importService.ts";
const getRotations = (rewardInfo: IRewardInfo, tierOverride?: number): number[] => {
// Disruption missions just tell us (https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2599)
if (rewardInfo.rewardTierOverrides) {
return rewardInfo.rewardTierOverrides;
}
// For Spy missions, e.g. 3 vaults cracked = A, B, C
if (rewardInfo.VaultsCracked) {
const rotations: number[] = [];
@ -109,16 +104,26 @@ const getRotations = (rewardInfo: IRewardInfo, tierOverride?: number): number[]
const region = ExportRegions[rewardInfo.node] as IRegion | undefined;
const missionType: TMissionType | undefined = region?.missionType;
if (missionType == "MT_RESCUE" && rewardInfo.rewardTier) {
// Disruption uses 'rewardTierOverrides' to tell us (https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2599)
// Note that this may stick in lab conquest so we need to filter by mission type (https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2768)
if (missionType == "MT_ARTIFACT") {
return rewardInfo.rewardTierOverrides ?? [];
}
if (missionType == "MT_RESCUE" && rewardInfo.rewardTier !== undefined) {
return [rewardInfo.rewardTier];
}
// 'rewardQualifications' is unreliable for non-endless railjack missions (https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2586, https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2612)
// 'rewardQualifications' may stick from previous missions for non-endless missions done after them
// - via railjack (https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2586, https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2612)
// - via lab conquest (https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2768)
switch (region?.missionName) {
case "/Lotus/Language/Missions/MissionName_Railjack":
case "/Lotus/Language/Missions/MissionName_RailjackVolatile":
case "/Lotus/Language/Missions/MissionName_RailjackExterminate":
case "/Lotus/Language/Missions/MissionName_RailjackAssassinate":
case "/Lotus/Language/Missions/MissionName_Assassination":
case "/Lotus/Language/Missions/MissionName_Exterminate":
return [0];
}
@ -535,22 +540,23 @@ export const addMissionInventoryUpdates = async (
}
case "CapturedAnimals": {
for (const capturedAnimal of value) {
const meta = conservationAnimals[capturedAnimal.AnimalType as keyof typeof conservationAnimals];
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
const meta = ExportAnimals[capturedAnimal.AnimalType]?.conservation;
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (meta) {
if (capturedAnimal.NumTags) {
addMiscItems(inventory, [
{
ItemType: meta.tag,
ItemType: meta.itemReward,
ItemCount: capturedAnimal.NumTags
}
]);
}
if (capturedAnimal.NumExtraRewards) {
if ("extraReward" in meta) {
if (meta.woundedAnimalReward) {
addMiscItems(inventory, [
{
ItemType: meta.extraReward,
ItemType: meta.woundedAnimalReward,
ItemCount: capturedAnimal.NumExtraRewards
}
]);
@ -560,6 +566,12 @@ export const addMissionInventoryUpdates = async (
);
}
}
if (meta.standingReward) {
const syndicateTag =
inventoryUpdates.Missions!.Tag == "SolNode129" ? "SolarisSyndicate" : "CetusSyndicate";
logger.debug(`adding ${meta.standingReward} standing to ${syndicateTag} for conservation`);
addStanding(inventory, syndicateTag, meta.standingReward);
}
} else {
logger.warn(`ignoring conservation of unknown AnimalType: ${capturedAnimal.AnimalType}`);
}

View File

@ -24,8 +24,8 @@ import {
ExportBoosterPacks,
ExportBoosters,
ExportBundles,
ExportCreditBundles,
ExportGear,
ExportMisc,
ExportResources,
ExportSyndicates,
ExportVendors
@ -631,8 +631,8 @@ const handleCreditBundlePurchase = async (
typeName: string,
inventory: TInventoryDatabaseDocument
): Promise<IPurchaseResponse> => {
if (typeName && typeName in ExportMisc.creditBundles) {
const creditsAmount = ExportMisc.creditBundles[typeName];
if (typeName && typeName in ExportCreditBundles) {
const creditsAmount = ExportCreditBundles[typeName].credits;
inventory.RegularCredits += creditsAmount;
await inventory.save();

View File

@ -1,491 +0,0 @@
{
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/CommonBirdOfPreyAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/CommonFemaleBirdOfPreyAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/CommonMaleBirdOfPreyAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/RareBirdOfPreyAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/RareFemaleBirdOfPreyAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/RareMaleBirdOfPreyAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/UncommonBirdOfPreyAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/UncommonFemaleBirdOfPreyAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/BirdOfPrey/UncommonMaleBirdOfPreyAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagCondrocUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedCritter/BaseInfestedCritterAvatar": {
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem",
"extraReward": "/Lotus/Types/Items/Conservation/WoundedAnimalRewardItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedCritter/CommonInfestedCritterAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedCritterCommon",
"extraReward": "/Lotus/Types/Items/Deimos/WoundedInfestedCritterCommonRewardItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedCritter/RareInfestedCritterAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedCritterRare",
"extraReward": "/Lotus/Types/Items/Deimos/WoundedInfestedCritterRareRewardItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedCritter/UncommonInfestedCritterAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedCritterUncommon",
"extraReward": "/Lotus/Types/Items/Deimos/WoundedInfestedCritterUncommonRewardItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedKDrive/GrottoInfKDriveAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedKdriveUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedKDrive/HighlandInfKDriveAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedKdriveRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedKDrive/SwampInfKDriveAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedKdriveCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMaggot/CommonInfestedMaggotAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedMaggotCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMaggot/RareInfestedMaggotAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedMaggotRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMaggot/UncommonInfestedMaggotAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedMaggotUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMergoo/CommonInfestedMergooAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedMergooCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMergoo/RareInfestedMergooAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedMergooRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedMergoo/UncommonInfestedMergooAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedMergooUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedNexifera/BaseInfestedNexiferaAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedNexiferaCommon",
"extraReward": "/Lotus/Types/Items/Conservation/WoundedAnimalRewardItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedNexifera/CommonInfestedNexiferaAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedNexiferaCommon",
"extraReward": "/Lotus/Types/Items/Conservation/WoundedAnimalRewardItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedNexifera/RareInfestedNexiferaAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedNexiferaRare",
"extraReward": "/Lotus/Types/Items/Conservation/WoundedAnimalRewardItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedNexifera/UncommonInfestedNexiferaAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedNexiferaUncommon",
"extraReward": "/Lotus/Types/Items/Conservation/WoundedAnimalRewardItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedPredator/BaseInfestedPredatorAvatar": {
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem",
"extraReward": "/Lotus/Types/Items/Conservation/WoundedAnimalRewardItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedPredator/CommonInfestedPredatorAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedPredatorCommon",
"extraReward": "/Lotus/Types/Items/Deimos/WoundedInfestedPredatorCommonRewardItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedPredator/RareInfestedPredatorAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedPredatorRare",
"extraReward": "/Lotus/Types/Items/Deimos/WoundedInfestedPredatorRareRewardItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedPredator/UncommonInfestedPredatorAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedPredatorUncommon",
"extraReward": "/Lotus/Types/Items/Deimos/WoundedInfestedPredatorUncommonRewardItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedUndazoa/BaseUndazoaAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedZongroCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedUndazoa/CommonUndazoaAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedZongroCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedUndazoa/RareUndazoaAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedZongroRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/Deimos/InfestedUndazoa/UncommonUndazoaAvatar": {
"tag": "/Lotus/Types/Items/Deimos/AnimalTagInfestedZongroUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/Duviri/Rabbit/BaseDuviriRabbitAvatar": {
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Duviri/Rabbit/TeshinRabbitAvatar": {
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Duviri/Rabbit/TeshinRabbitOnHandAvatar": {
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Duviri/Wolf/DuviriWolfAvatar": {
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/Duviri/Wolf/DuviriWolfConservationAvatar": {
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/CommonFemaleForestRodentAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/CommonForestRodentAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/CommonMaleForestRodentAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/RareFemaleForestRodentAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/RareForestRodentAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/RareMaleForestRodentAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/TutorialForestRodentAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/UncommonFemaleForestRodentAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/UncommonForestRodentAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/ForestRodent/UncommonMaleForestRodentAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagKuakaUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/BaseLegendaryKubrowAvatar": {
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/CommonFemaleLegendaryKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/CommonLegendaryKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/CommonMaleLegendaryKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/CommonPupLegendaryKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/RareFemaleLegendaryKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/RareLegendaryKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/RareMaleLegendaryKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/RarePupLegendaryKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/UncommonFemaleLegendaryKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/UncommonLegendaryKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/UncommonMaleLegendaryKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/LegendaryKubrow/UncommonPupLegendaryKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagKubrodonUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/BaseOrokinKubrowAvatar": {
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/CommonFemaleOrokinKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/CommonMaleOrokinKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/CommonOrokinKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/CommonPupOrokinKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/RareFemaleOrokinKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/RareMaleOrokinKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/RareOrokinKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/RarePupOrokinKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/UncommonFemaleOrokinKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/UncommonMaleOrokinKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/UncommonOrokinKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/OrokinKubrow/UncommonPupOrokinKubrowAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagStoverUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/CommonFemaleOstronSeaBirdAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/CommonMaleOstronSeaBirdAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/CommonOstronSeaBirdAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/RareFemaleOstronSeaBirdAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/RareMaleOstronSeaBirdAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/RareOstronSeaBirdAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/UncommonFemaleOstronSeaBirdAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/UncommonMaleOstronSeaBirdAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/OstronSeaBird/UncommonOstronSeaBirdAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagMergooUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/BaseSnowArmadilloAvatar": {
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/CommonFemaleSnowArmadilloAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/CommonMaleSnowArmadilloAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/CommonPupSnowArmadilloAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/CommonSnowArmadilloAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/RareFemaleSnowArmadilloAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/RareMaleSnowArmadilloAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/RarePupSnowArmadilloAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/RareSnowArmadilloAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/UncommonFemaleSnowArmadilloAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/UncommonMaleSnowArmadilloAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/UncommonPupSnowArmadilloAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowArmadillo/UncommonSnowArmadilloAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagBolarolaUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/BaseSnowBirdAvatar": {
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/CommonFemaleSnowBirdAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/CommonMaleSnowBirdAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/CommonPupSnowBirdAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/CommonSnowBirdAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/RareFemaleSnowBirdAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/RareMaleSnowBirdAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/RarePupSnowBirdAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/RareSnowBirdAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/UncommonFemaleSnowBirdAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/UncommonMaleSnowBirdAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/UncommonPupSnowBirdAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowBird/UncommonSnowBirdAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagSawgawUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/BaseSnowCritterAvatar": {
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/CommonFemaleSnowCritterAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/CommonMaleSnowCritterAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/CommonPupSnowCritterAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/CommonSnowCritterAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/RareFemaleSnowCritterAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/RareMaleSnowCritterAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/RarePupSnowCritterAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/RareSnowCritterAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/UncommonFemaleSnowCritterAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/UncommonMaleSnowCritterAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/UncommonPupSnowCritterAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowCritter/UncommonSnowCritterAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagVirminkUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/BaseSnowPredatorAvatar": {
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/CommonFemaleSnowPredatorAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/CommonMaleSnowPredatorAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/CommonPupSnowPredatorAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/CommonSnowPredatorAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/RareFemaleSnowPredatorAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/RareMaleSnowPredatorAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/RarePupSnowPredatorAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/RareSnowPredatorAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/UncommonFemaleSnowPredatorAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/UncommonMaleSnowPredatorAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/UncommonPupSnowPredatorAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowPredator/UncommonSnowPredatorAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagHorrasqueUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/BaseSnowRodentAvatar": {
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/CommonFemaleSnowRodentAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/CommonMaleSnowRodentAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/CommonSnowRodentAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/RareFemaleSnowRodentAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/RareMaleSnowRodentAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/RareSnowRodentAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/UncommonFemaleSnowRodentAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/UncommonMaleSnowRodentAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/SnowRodent/UncommonSnowRodentAvatar": {
"tag": "/Lotus/Types/Items/Solaris/AnimalTagPobbersUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/BaseVampireKavatAvatar": {
"tag": "/Lotus/Types/Items/Conservation/ConservationTagItem"
},
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/CommonVampireKavatAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/CommonVampireKavatCubAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/CommonVampireKavatFemaleAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/CommonVampireKavatMaleAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatCommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/RareVampireKavatAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/RareVampireKavatCubAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/RareVampireKavatFemaleAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/RareVampireKavatMaleAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatRare"
},
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/UncommonVampireKavatAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/UncommonVampireKavatCubAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/UncommonVampireKavatFemaleAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatUncommon"
},
"/Lotus/Types/NeutralCreatures/Conservation/VampireKavat/UncommonVampireKavatMaleAvatar": {
"tag": "/Lotus/Types/Items/Eidolon/AnimalTagVampireKavatUncommon"
}
}

View File

@ -664,7 +664,7 @@ function updateInventory() {
req.done(data => {
window.itemListPromise.then(itemMap => {
window.didInitialInventoryUpdate = true;
if (data.GuildId.$oid) {
if (data.GuildId) {
window.guildId = data.GuildId.$oid;
document.getElementById("nav-guildView").classList.remove("d-none");
} else {

View File

@ -1,7 +1,7 @@
// French translation by Vitruvio
dict = {
general_inventoryUpdateNote: `Note : Pour voir les changements en jeu, l'inventaire doit être actualisé. Cela se fait en tapant /sync dans le tchat, en visitant un dojo/relais ou en se reconnectant.`,
general_inventoryUpdateNoteGameWs: `[UNTRANSLATED] Note: You may need to reopen any menu you are on for changes to be reflected.`,
general_inventoryUpdateNoteGameWs: `Note : Rouvrir un menu est nécessaire pour voir les changements.`,
general_addButton: `Ajouter`,
general_setButton: `Définir`,
general_none: `Aucun`,
@ -11,7 +11,7 @@ dict = {
code_loginFail: `Connexion échouée. Vérifiez le mot de passe.`,
code_regFail: `Enregistrement impossible. Compte existant?`,
code_changeNameConfirm: `Nouveau nom du compte :`,
code_changeNameRetry: `[UNTRANSLATED] |NAME| is already taken.`,
code_changeNameRetry: `|NAME| est déjà pris.`,
code_deleteAccountConfirm: `Supprimer |DISPLAYNAME| (|EMAIL|) ? Cette action est irreversible.`,
code_archgun: `Archgun`,
code_melee: `Melee`,
@ -32,8 +32,8 @@ dict = {
code_renamePrompt: `Nouveau nom :`,
code_remove: `Retirer`,
code_addItemsConfirm: `Ajouter |COUNT| items à l'inventaire ?`,
code_addTechProjectsConfirm: `[UNTRANSLATED] Are you sure you want to add |COUNT| research to your clan?`,
code_addDecoRecipesConfirm: `[UNTRANSLATED] Are you sure you want to add |COUNT| deco recipes to your clan?`,
code_addTechProjectsConfirm: `Ajouter |COUNT| recherches au clan ?`,
code_addDecoRecipesConfirm: `Ajouter |COUNT| décorations au clan ?`,
code_succRankUp: `Montée de niveau effectuée.`,
code_noEquipmentToRankUp: `Aucun équipement à monter de niveau.`,
code_succAdded: `Ajouté.`,
@ -66,8 +66,8 @@ dict = {
code_pigment: `Pigment`,
code_mature: `Maturer pour le combat`,
code_unmature: `Régrésser l'âge génétique`,
code_fund: `[UNTRANSLATED] Fund`,
code_funded: `[UNTRANSLATED] Funded`,
code_fund: `Financer`,
code_funded: `Complété`,
code_succChange: `Changement effectué.`,
code_requiredInvigorationUpgrade: `Augmentation offensive et défensive requises.`,
login_description: `Connexion avec les informations de connexion OpenWF.`,
@ -85,8 +85,8 @@ dict = {
navbar_cheats: `Cheats`,
navbar_import: `Importer`,
inventory_addItems: `Ajouter des items`,
inventory_addItemByItemType: `[UNTRANSLATED] Raw`,
inventory_addItemByItemType_warning: `[UNTRANSLATED] Use this feature at your own risk. It may break your inventory, and you will need to remove items manually if something goes wrong.`,
inventory_addItemByItemType: `Brut`,
inventory_addItemByItemType_warning: `Cette fonctionnalité comporte des risques. Il faudra rajouter les items manuellement si l'inventaire est compris.`,
inventory_suits: `Warframes`,
inventory_longGuns: `Armes principales`,
inventory_pistols: `Armes secondaires`,
@ -182,7 +182,7 @@ dict = {
cheats_skipTutorial: `Passer le tutoriel`,
cheats_skipAllDialogue: `Passer les dialogues`,
cheats_unlockAllScans: `Débloquer tous les scans`,
cheats_unlockSuccRelog: `[UNTRANSLATED] Success. Please that you'll need to relog for the client to refresh this.`,
cheats_unlockSuccRelog: `Succès. Une reconnexion est requise pour appliquer les changements.`,
cheats_unlockAllMissions: `Débloquer toutes les missions`,
cheats_unlockAllMissions_ok: `Succès. Une actualisation de l'inventaire est nécessaire.`,
cheats_infiniteCredits: `Crédits infinis`,
@ -218,7 +218,7 @@ dict = {
cheats_baroFullyStocked: `Stock de Baro au max`,
cheats_syndicateMissionsRepeatable: `Mission syndicat répétables`,
cheats_unlockAllProfitTakerStages: `Débloquer toutes les étapes du Preneur de Profit`,
cheats_unlockSuccInventory: `[UNTRANSLATED] Success. Please note that you'll need to resync your inventory, e.g. using the bootstrapper's /sync command, visiting a dojo/relay, or relogging..`,
cheats_unlockSuccInventory: `Succès. Une resynchronisation est nécessaire en tapant "/sync" dans le tchat, en visitant un relais ou en se reconnectant.`,
cheats_instantFinishRivenChallenge: `Débloquer le challenge Riven instantanément`,
cheats_instantResourceExtractorDrones: `Ressources de drones d'extraction instantannées`,
cheats_noResourceExtractorDronesDamage: `Aucun dégâts aux drones d'extraction de resources`,
@ -247,7 +247,7 @@ dict = {
cheats_changeSupportedSyndicate: `Allégeance`,
cheats_changeButton: `Changer`,
cheats_markAllAsRead: `Marquer la boîte de réception comme lue`,
cheats_finishInvasionsInOneMission: `[UNTRANSLATED] Finish Invasions in One Mission`,
cheats_finishInvasionsInOneMission: `Compléter les invasions en une mission.`,
cheats_gainNoNegativeSyndicateStanding: `[UNTRANSLATED] Gain No Negative Syndicate Standing`,
cheats_nemesisAlwaysCorrect: `[UNTRANSLATED] Any Guess is Correct`,
cheats_nemesisHenchmenKillsMultiplierGrineer: `[UNTRANSLATED] Rage Progess Multiplier (Grineer)`,
@ -275,30 +275,30 @@ dict = {
worldState_baroTennoConRelay: `Relais Baro TennoCon`,
worldState_starDays: `Jours Stellaires`,
worldState_galleonOfGhouls: `Galion des Goules`,
worldState_anniversary: `[UNTRANSLATED] Warframe Anniversary`,
worldState_useAnniversaryTagForOldGoals: `[UNTRANSLATED] Use <code>Tag</code> from Warframe Anniversary for old Events`,
worldState_anniversary: `Anniversaire de Warframe`,
worldState_useAnniversaryTagForOldGoals: `Utiliser <code>Tag</code> de l'Anniversaire de Warframe pour les anciens événements`,
worldState_ghoulEmergence: `Purge des Goules`,
worldState_plagueStar: `Fléau Céleste`,
worldState_dogDays: `Bataille d'Eau`,
worldState_dogDaysRewards: `[UNTRANSLATED] Dog Days Rewards`,
worldState_dogDaysRewards: `Récompenses de la Bataille d'Eau`,
worldState_wolfHunt: `Chasse au Loup (2025)`,
worldState_orphixVenom: `Venin Orphix`,
worldState_longShadow: `La Propagation des Ombres`,
worldState_hallowedFlame: `Flamme Hantée`,
worldState_hallowedNightmares: `Cauchemars Hantés`,
worldState_hallowedNightmaresRewards: `[UNTRANSLATED] Hallowed Nightmares Rewards`,
worldState_hallowedNightmaresRewards: `Récompenses Flamme Hantée Cauchemar`,
worldState_proxyRebellion: `Rébellion Proxy`,
worldState_proxyRebellionRewards: `[UNTRANSLATED] Proxy Rebellion Rewards`,
worldState_proxyRebellionRewards: `Récompenses Rébellion Proxy`,
worldState_bellyOfTheBeast: `Ventre de la Bête`,
worldState_bellyOfTheBeastProgressOverride: `[UNTRANSLATED] Belly of the Beast Progress`,
worldState_bellyOfTheBeastProgressOverride: `Progrès du Ventre de la Bête`,
worldState_eightClaw: `Huitième Griffe`,
worldState_eightClawProgressOverride: `[UNTRANSLATED] Eight Claw Progress`,
worldState_eightClawProgressOverride: `Progrès de la Huitième Griffe`,
worldState_thermiaFractures: `Crevasses Thermia`,
worldState_thermiaFracturesProgressOverride: `[UNTRANSLATED] Thermia Fractures Progress`,
worldState_from_year: `[UNTRANSLATED] from |VAL|`,
worldState_pre_year: `[UNTRANSLATED] pre |VAL|`,
worldState_week: `[UNTRANSLATED] Week |VAL|`,
worldState_incompatibleWith: `[UNTRANSLATED] Incompatible with:`,
worldState_thermiaFracturesProgressOverride: `Progrès des Fractures Thermia`,
worldState_from_year: `de |VAL|`,
worldState_pre_year: `pre-|VAL|`,
worldState_week: `Semaine |VAL|`,
worldState_incompatibleWith: `Incompatible avec :`,
enabled: `Activé`,
disabled: `Désactivé`,
worldState_we1: `Weekend 1`,
@ -342,8 +342,8 @@ dict = {
worldState_varziaFullyStocked: `Stock de Varzia au max`,
worldState_varziaOverride: `Rotation de Varzia`,
import_importNote: `[UNTRANSLATED] You can provide a full or partial <code>inventory.php</code> or <code>getShip.php</code> response (client representation) here.`,
import_importNote2: `[UNTRANSLATED] All fields that are supported by the importer <b>will be overwritten</b> in your account.`,
import_importNote: `Une réponse partielle ou complète de <code>inventory.php</code> ou <code>getShip.php</code> peut être incluse ici.`,
import_importNote2: `Tous les champs sont supportés par l'outil d'import <b>serront écrasés</b> sur le compte.`,
import_submit: `Soumettre`,
import_samples: `Échantillons :`,
import_samples_maxFocus: `Toutes les écoles de focus au rang max`,
@ -412,7 +412,7 @@ dict = {
guildView_cheats: `[UNTRANSLATED] Clan Cheats`,
guildView_techProjects: `Recherche`,
guildView_vaultDecoRecipes: `[UNTRANSLATED] Dojo Deco Recipes`,
guildView_vaultDecoRecipes: `Schémas de décorations de dojo`,
guildView_alliance: `Alliance`,
guildView_members: `Members`,
guildView_pending: `En Attente`,
@ -432,11 +432,11 @@ dict = {
guildView_rank_soldier: `Soldat`,
guildView_rank_utility: `Utilitaire`,
guildView_rank_warlord: `Seigneur de guerre`,
guildView_currency_owned: `[UNTRANSLATED] |COUNT| in Vault.`,
guildView_bulkAddTechProjects: `[UNTRANSLATED] Add Missing Research`,
guildView_bulkAddVaultDecoRecipes: `[UNTRANSLATED] Add Missing Dojo Deco Recipes`,
guildView_bulkFundTechProjects: `[UNTRANSLATED] Fund All Research`,
guildView_bulkCompleteTechProjects: `[UNTRANSLATED] Complete All Research`,
guildView_currency_owned: `|COUNT| dans le coffre.`,
guildView_bulkAddTechProjects: `Ajouter les recherches manquantes`,
guildView_bulkAddVaultDecoRecipes: `Ajouter les schémas de décorations de dojo manquantes`,
guildView_bulkFundTechProjects: `Financer toutes les recherches`,
guildView_bulkCompleteTechProjects: `Compléter toutes les recherches`,
guildView_promote: `Promouvoir`,
guildView_demote: `Rétrograder`,