Compare commits

..

No commits in common. "main" and "main" have entirely different histories.
main ... main

37 changed files with 495 additions and 1332 deletions

View File

@ -79,10 +79,6 @@
"starDaysOverride": null, "starDaysOverride": null,
"dogDaysOverride": null, "dogDaysOverride": null,
"dogDaysRewardsOverride": null, "dogDaysRewardsOverride": null,
"bellyOfTheBeast": false,
"bellyOfTheBeastProgressOverride": 0,
"eightClaw": false,
"eightClawProgressOverride": 0,
"eidolonOverride": "", "eidolonOverride": "",
"vallisOverride": "", "vallisOverride": "",
"duviriOverride": "", "duviriOverride": "",

8
package-lock.json generated
View File

@ -23,7 +23,7 @@
"ncp": "^2.0.0", "ncp": "^2.0.0",
"typescript": "^5.5", "typescript": "^5.5",
"undici": "^7.10.0", "undici": "^7.10.0",
"warframe-public-export-plus": "^0.5.81", "warframe-public-export-plus": "^0.5.80",
"warframe-riven-info": "^0.1.2", "warframe-riven-info": "^0.1.2",
"winston": "^3.17.0", "winston": "^3.17.0",
"winston-daily-rotate-file": "^5.0.0", "winston-daily-rotate-file": "^5.0.0",
@ -5507,9 +5507,9 @@
} }
}, },
"node_modules/warframe-public-export-plus": { "node_modules/warframe-public-export-plus": {
"version": "0.5.81", "version": "0.5.80",
"resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.81.tgz", "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.80.tgz",
"integrity": "sha512-kh3e21XThVDSwdC3TJsMsXZnlZ4B/21HdeJkKcjuTygpCd842EPEKS3lRZl3mpXFOmdha744vAW1XEyHfiLofg==" "integrity": "sha512-K5f1Ws3szVdnO0tBcxlNdhXoGHIw09cjHel7spKPGL7aF/vmEkbBGRmYQFvs8n5cGo+v+3qIDMre54Ghb3t0Iw=="
}, },
"node_modules/warframe-riven-info": { "node_modules/warframe-riven-info": {
"version": "0.1.2", "version": "0.1.2",

View File

@ -40,7 +40,7 @@
"ncp": "^2.0.0", "ncp": "^2.0.0",
"typescript": "^5.5", "typescript": "^5.5",
"undici": "^7.10.0", "undici": "^7.10.0",
"warframe-public-export-plus": "^0.5.81", "warframe-public-export-plus": "^0.5.80",
"warframe-riven-info": "^0.1.2", "warframe-riven-info": "^0.1.2",
"winston": "^3.17.0", "winston": "^3.17.0",
"winston-daily-rotate-file": "^5.0.0", "winston-daily-rotate-file": "^5.0.0",

View File

@ -102,10 +102,7 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) =
const secondsElapsed = Math.trunc(Date.now() / 1000) - start; const secondsElapsed = Math.trunc(Date.now() / 1000) - start;
const progress = secondsElapsed / recipe.buildTime; const progress = secondsElapsed / recipe.buildTime;
logger.debug(`rushing recipe at ${Math.trunc(progress * 100)}% completion`); logger.debug(`rushing recipe at ${Math.trunc(progress * 100)}% completion`);
const cost = const cost = Math.round(recipe.skipBuildTimePrice * (1 - (progress - 0.5)));
progress > 0.5
? Math.round(recipe.skipBuildTimePrice * (1 - (progress - 0.5)))
: recipe.skipBuildTimePrice;
InventoryChanges = { InventoryChanges = {
...InventoryChanges, ...InventoryChanges,
...updateCurrency(inventory, cost, true) ...updateCurrency(inventory, cost, true)

View File

@ -72,7 +72,7 @@ export const dronesController: RequestHandler = async (req, res) => {
); );
} }
} else { } else {
drone.ResourceCount = droneMeta.binCapacity * droneMeta.capacityMultipliers[resource.Rarity]; drone.ResourceCount = 1;
} }
await inventory.save(); await inventory.save();
res.json({}); res.json({});

View File

@ -1,25 +0,0 @@
import { RequestHandler } from "express";
import { getAccountForRequest } from "@/src/services/loginService";
import { getInventory } from "@/src/services/inventoryService";
import { Guild } from "@/src/models/guildModel";
export const getGuildEventScoreController: RequestHandler = async (req, res) => {
const account = await getAccountForRequest(req);
const inventory = await getInventory(account._id.toString(), "GuildId");
const guild = await Guild.findById(inventory.GuildId);
const goalId = req.query.goalId as string;
if (guild && guild.GoalProgress && goalId) {
const goal = guild.GoalProgress.find(x => x.goalId.toString() == goalId);
if (goal) {
return res.json({
Tier: guild.Tier,
GoalProgress: {
Count: goal.Count,
Tag: goal.Tag,
_id: { $oid: goal.goalId }
}
});
}
}
return res.json({});
};

View File

@ -12,7 +12,7 @@ export const hubBlessingController: RequestHandler = async (req, res) => {
if (req.query.mode == "send") { if (req.query.mode == "send") {
const inventory = await getInventory(accountId, "BlessingCooldown Boosters"); const inventory = await getInventory(accountId, "BlessingCooldown Boosters");
inventory.BlessingCooldown = new Date(Date.now() + 86400000); inventory.BlessingCooldown = new Date(Date.now() + 86400000);
addBooster(boosterType, 3 * 3600, inventory); // unfaithful, but current HUB server does not handle broadcasting, so this way users can bless themselves. addBooster(boosterType, 3 * 3600, inventory);
await inventory.save(); await inventory.save();
let token = ""; let token = "";

View File

@ -1,19 +1,23 @@
import { getAccountIdForRequest } from "@/src/services/loginService"; import { getAccountIdForRequest } from "@/src/services/loginService";
import { ISetPlacedDecoInfoRequest } from "@/src/types/personalRoomsTypes"; import { IPictureFrameInfo, ISetPlacedDecoInfoRequest } from "@/src/types/personalRoomsTypes";
import { RequestHandler } from "express"; import { RequestHandler } from "express";
import { handleSetPlacedDecoInfo } from "@/src/services/shipCustomizationsService"; import { handleSetPlacedDecoInfo } from "@/src/services/shipCustomizationsService";
export const setPlacedDecoInfoController: RequestHandler = async (req, res) => { export const setPlacedDecoInfoController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req); const accountId = await getAccountIdForRequest(req);
const payload = JSON.parse(req.body as string) as ISetPlacedDecoInfoRequest; const payload = JSON.parse(req.body as string) as ISetPlacedDecoInfoRequest;
//console.log(JSON.stringify(payload, null, 2));
await handleSetPlacedDecoInfo(accountId, payload); await handleSetPlacedDecoInfo(accountId, payload);
res.json({ res.json({
...payload, DecoId: payload.DecoId,
IsPicture: !!payload.PictureFrameInfo IsPicture: true,
PictureFrameInfo: payload.PictureFrameInfo,
BootLocation: payload.BootLocation
} satisfies ISetPlacedDecoInfoResponse); } satisfies ISetPlacedDecoInfoResponse);
}; };
interface ISetPlacedDecoInfoResponse extends ISetPlacedDecoInfoRequest { interface ISetPlacedDecoInfoResponse {
DecoId: string;
IsPicture: boolean; IsPicture: boolean;
PictureFrameInfo?: IPictureFrameInfo;
BootLocation?: string;
} }

View File

@ -1,10 +1,8 @@
import { importInventory, importLoadOutPresets, importPersonalRooms } from "@/src/services/importService"; import { importInventory, importLoadOutPresets } from "@/src/services/importService";
import { getInventory } from "@/src/services/inventoryService"; import { getInventory } from "@/src/services/inventoryService";
import { getLoadout } from "@/src/services/loadoutService"; import { getLoadout } from "@/src/services/loadoutService";
import { getAccountIdForRequest } from "@/src/services/loginService"; import { getAccountIdForRequest } from "@/src/services/loginService";
import { getPersonalRooms } from "@/src/services/personalRoomsService";
import { IInventoryClient } from "@/src/types/inventoryTypes/inventoryTypes"; import { IInventoryClient } from "@/src/types/inventoryTypes/inventoryTypes";
import { IGetShipResponse } from "@/src/types/personalRoomsTypes";
import { RequestHandler } from "express"; import { RequestHandler } from "express";
export const importController: RequestHandler = async (req, res) => { export const importController: RequestHandler = async (req, res) => {
@ -15,21 +13,15 @@ export const importController: RequestHandler = async (req, res) => {
importInventory(inventory, request.inventory); importInventory(inventory, request.inventory);
await inventory.save(); await inventory.save();
if ("LoadOutPresets" in request.inventory && request.inventory.LoadOutPresets) { if (request.inventory.LoadOutPresets) {
const loadout = await getLoadout(accountId); const loadout = await getLoadout(accountId);
importLoadOutPresets(loadout, request.inventory.LoadOutPresets); importLoadOutPresets(loadout, request.inventory.LoadOutPresets);
await loadout.save(); await loadout.save();
} }
if ("Ship" in request.inventory || "Apartment" in request.inventory || "TailorShop" in request.inventory) {
const personalRooms = await getPersonalRooms(accountId);
importPersonalRooms(personalRooms, request.inventory);
await personalRooms.save();
}
res.end(); res.end();
}; };
interface IImportRequest { interface IImportRequest {
inventory: Partial<IInventoryClient> | Partial<IGetShipResponse>; inventory: Partial<IInventoryClient>;
} }

View File

@ -19,8 +19,6 @@ import {
import { Document, Model, model, Schema, Types } from "mongoose"; import { Document, Model, model, Schema, Types } from "mongoose";
import { fusionTreasuresSchema, typeCountSchema } from "@/src/models/inventoryModels/inventoryModel"; import { fusionTreasuresSchema, typeCountSchema } from "@/src/models/inventoryModels/inventoryModel";
import { pictureFrameInfoSchema } from "@/src/models/personalRoomsModel"; import { pictureFrameInfoSchema } from "@/src/models/personalRoomsModel";
import { IGoalProgressClient, IGoalProgressDatabase } from "@/src/types/inventoryTypes/inventoryTypes";
import { toOid } from "@/src/helpers/inventoryHelpers";
const dojoDecoSchema = new Schema<IDojoDecoDatabase>({ const dojoDecoSchema = new Schema<IDojoDecoDatabase>({
Type: String, Type: String,
@ -176,28 +174,6 @@ const guildLogEntryNumberSchema = new Schema<IGuildLogEntryNumber>(
{ _id: false } { _id: false }
); );
const goalProgressSchema = new Schema<IGoalProgressDatabase>(
{
Count: Number,
Tag: String,
goalId: Types.ObjectId
},
{ _id: false }
);
goalProgressSchema.set("toJSON", {
virtuals: true,
transform(_doc, obj: Record<string, any>) {
const db = obj as IGoalProgressDatabase;
const client = obj as IGoalProgressClient;
client._id = toOid(db.goalId);
delete obj.goalId;
delete obj.__v;
}
});
const guildSchema = new Schema<IGuildDatabase>( const guildSchema = new Schema<IGuildDatabase>(
{ {
Name: { type: String, required: true, unique: true }, Name: { type: String, required: true, unique: true },
@ -230,8 +206,7 @@ const guildSchema = new Schema<IGuildDatabase>(
RoomChanges: { type: [guildLogRoomChangeSchema], default: undefined }, RoomChanges: { type: [guildLogRoomChangeSchema], default: undefined },
TechChanges: { type: [guildLogEntryContributableSchema], default: undefined }, TechChanges: { type: [guildLogEntryContributableSchema], default: undefined },
RosterActivity: { type: [guildLogEntryRosterSchema], default: undefined }, RosterActivity: { type: [guildLogEntryRosterSchema], default: undefined },
ClassChanges: { type: [guildLogEntryNumberSchema], default: undefined }, ClassChanges: { type: [guildLogEntryNumberSchema], default: undefined }
GoalProgress: { type: [goalProgressSchema], default: undefined }
}, },
{ id: false } { id: false }
); );

View File

@ -85,8 +85,8 @@ import {
IAccolades, IAccolades,
IHubNpcCustomization, IHubNpcCustomization,
IEndlessXpReward, IEndlessXpReward,
IGoalProgressDatabase, IPersonalGoalProgressDatabase,
IGoalProgressClient, IPersonalGoalProgressClient,
IKubrowPetPrintClient, IKubrowPetPrintClient,
IKubrowPetPrintDatabase IKubrowPetPrintDatabase
} from "@/src/types/inventoryTypes/inventoryTypes"; } from "@/src/types/inventoryTypes/inventoryTypes";
@ -445,7 +445,7 @@ const discoveredMarkerSchema = new Schema<IDiscoveredMarker>(
{ _id: false } { _id: false }
); );
const personalGoalProgressSchema = new Schema<IGoalProgressDatabase>( const personalGoalProgressSchema = new Schema<IPersonalGoalProgressDatabase>(
{ {
Best: Number, Best: Number,
Count: Number, Count: Number,
@ -458,8 +458,8 @@ const personalGoalProgressSchema = new Schema<IGoalProgressDatabase>(
personalGoalProgressSchema.set("toJSON", { personalGoalProgressSchema.set("toJSON", {
virtuals: true, virtuals: true,
transform(_doc, obj: Record<string, any>) { transform(_doc, obj: Record<string, any>) {
const db = obj as IGoalProgressDatabase; const db = obj as IPersonalGoalProgressDatabase;
const client = obj as IGoalProgressClient; const client = obj as IPersonalGoalProgressClient;
client._id = toOid(db.goalId); client._id = toOid(db.goalId);

View File

@ -25,7 +25,7 @@ export const EquipmentSelectionSchema = new Schema<IEquipmentSelection>(
} }
); );
export const loadoutConfigSchema = new Schema<ILoadoutConfigDatabase>( const loadoutConfigSchema = new Schema<ILoadoutConfigDatabase>(
{ {
FocusSchool: String, FocusSchool: String,
PresetIcon: String, PresetIcon: String,

View File

@ -1,7 +1,6 @@
import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers"; import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers";
import { import {
IApartmentDatabase, IApartmentDatabase,
ICustomizationInfoDatabase,
IFavouriteLoadoutDatabase, IFavouriteLoadoutDatabase,
IGardeningDatabase, IGardeningDatabase,
IOrbiterClient, IOrbiterClient,
@ -12,13 +11,12 @@ import {
IPlantClient, IPlantClient,
IPlantDatabase, IPlantDatabase,
IPlanterDatabase, IPlanterDatabase,
IRoomDatabase, IRoom,
ITailorShopDatabase, ITailorShopDatabase,
PersonalRoomsModelType PersonalRoomsModelType
} from "@/src/types/personalRoomsTypes"; } from "@/src/types/personalRoomsTypes";
import { Schema, Types, model } from "mongoose"; import { Schema, Types, model } from "mongoose";
import { colorSchema, shipCustomizationSchema } from "@/src/models/commonModel"; import { colorSchema, shipCustomizationSchema } from "@/src/models/commonModel";
import { loadoutConfigSchema } from "@/src/models/inventoryModels/loadoutModel";
export const pictureFrameInfoSchema = new Schema<IPictureFrameInfo>( export const pictureFrameInfoSchema = new Schema<IPictureFrameInfo>(
{ {
@ -36,20 +34,7 @@ export const pictureFrameInfoSchema = new Schema<IPictureFrameInfo>(
TextColorB: Number, TextColorB: Number,
TextOrientation: Number TextOrientation: Number
}, },
{ _id: false } { id: false, _id: false }
);
export const customizationInfoSchema = new Schema<ICustomizationInfoDatabase>(
{
Anim: String,
AnimPose: Number,
LoadOutPreset: loadoutConfigSchema,
VehiclePreset: loadoutConfigSchema,
EquippedWeapon: String,
AvatarType: String,
LoadOutType: String
},
{ _id: false }
); );
const placedDecosSchema = new Schema<IPlacedDecosDatabase>( const placedDecosSchema = new Schema<IPlacedDecosDatabase>(
@ -59,9 +44,7 @@ const placedDecosSchema = new Schema<IPlacedDecosDatabase>(
Rot: [Number], Rot: [Number],
Scale: Number, Scale: Number,
Sockets: Number, Sockets: Number,
PictureFrameInfo: { type: pictureFrameInfoSchema, default: undefined }, PictureFrameInfo: { type: pictureFrameInfoSchema, default: undefined }
CustomizationInfo: { type: customizationInfoSchema, default: undefined },
AnimPoseItem: String
}, },
{ id: false } { id: false }
); );
@ -77,7 +60,7 @@ placedDecosSchema.set("toJSON", {
} }
}); });
const roomSchema = new Schema<IRoomDatabase>( const roomSchema = new Schema<IRoom>(
{ {
Name: String, Name: String,
MaxCapacity: Number, MaxCapacity: Number,

View File

@ -62,7 +62,6 @@ import { getFriendsController } from "@/src/controllers/api/getFriendsController
import { getGuildContributionsController } from "@/src/controllers/api/getGuildContributionsController"; import { getGuildContributionsController } from "@/src/controllers/api/getGuildContributionsController";
import { getGuildController } from "@/src/controllers/api/getGuildController"; import { getGuildController } from "@/src/controllers/api/getGuildController";
import { getGuildDojoController } from "@/src/controllers/api/getGuildDojoController"; import { getGuildDojoController } from "@/src/controllers/api/getGuildDojoController";
import { getGuildEventScoreController } from "@/src/controllers/api/getGuildEventScore";
import { getGuildLogController } from "@/src/controllers/api/getGuildLogController"; import { getGuildLogController } from "@/src/controllers/api/getGuildLogController";
import { getIgnoredUsersController } from "@/src/controllers/api/getIgnoredUsersController"; import { getIgnoredUsersController } from "@/src/controllers/api/getIgnoredUsersController";
import { getNewRewardSeedController } from "@/src/controllers/api/getNewRewardSeedController"; import { getNewRewardSeedController } from "@/src/controllers/api/getNewRewardSeedController";
@ -193,7 +192,6 @@ apiRouter.get("/getFriends.php", getFriendsController);
apiRouter.get("/getGuild.php", getGuildController); apiRouter.get("/getGuild.php", getGuildController);
apiRouter.get("/getGuildContributions.php", getGuildContributionsController); apiRouter.get("/getGuildContributions.php", getGuildContributionsController);
apiRouter.get("/getGuildDojo.php", getGuildDojoController); apiRouter.get("/getGuildDojo.php", getGuildDojoController);
apiRouter.get("/getGuildEventScore.php", getGuildEventScoreController);
apiRouter.get("/getGuildLog.php", getGuildLogController); apiRouter.get("/getGuildLog.php", getGuildLogController);
apiRouter.get("/getIgnoredUsers.php", getIgnoredUsersController); apiRouter.get("/getIgnoredUsers.php", getIgnoredUsersController);
apiRouter.get("/getMessages.php", inboxController); // unsure if this is correct, but needed for U17 apiRouter.get("/getMessages.php", inboxController); // unsure if this is correct, but needed for U17

View File

@ -91,10 +91,6 @@ export interface IConfig {
starDaysOverride?: boolean; starDaysOverride?: boolean;
dogDaysOverride?: boolean; dogDaysOverride?: boolean;
dogDaysRewardsOverride?: number; dogDaysRewardsOverride?: number;
bellyOfTheBeast?: boolean;
bellyOfTheBeastProgressOverride?: number;
eightClaw?: boolean;
eightClawProgressOverride?: number;
eidolonOverride?: string; eidolonOverride?: string;
vallisOverride?: string; vallisOverride?: string;
duviriOverride?: string; duviriOverride?: string;

View File

@ -115,14 +115,7 @@ export const getGuildClient = async (
NumContributors: guild.CeremonyContributors?.length ?? 0, NumContributors: guild.CeremonyContributors?.length ?? 0,
CeremonyResetDate: guild.CeremonyResetDate ? toMongoDate(guild.CeremonyResetDate) : undefined, CeremonyResetDate: guild.CeremonyResetDate ? toMongoDate(guild.CeremonyResetDate) : undefined,
AutoContributeFromVault: guild.AutoContributeFromVault, AutoContributeFromVault: guild.AutoContributeFromVault,
AllianceId: guild.AllianceId ? toOid2(guild.AllianceId, account.BuildLabel) : undefined, AllianceId: guild.AllianceId ? toOid2(guild.AllianceId, account.BuildLabel) : undefined
GoalProgress: guild.GoalProgress
? guild.GoalProgress.map(gp => ({
Count: gp.Count,
Tag: gp.Tag,
_id: { $oid: gp.goalId.toString() }
}))
: undefined
}; };
}; };
@ -816,85 +809,3 @@ export const getAllianceClient = async (
} }
}; };
}; };
export const handleGuildGoalProgress = async (
guild: TGuildDatabaseDocument,
upload: { Count: number; Tag: string; goalId: Types.ObjectId }
): Promise<void> => {
guild.GoalProgress ??= [];
const goalProgress = guild.GoalProgress.find(x => x.goalId.equals(upload.goalId));
if (!goalProgress) {
guild.GoalProgress.push({
Count: upload.Count,
Tag: upload.Tag,
goalId: upload.goalId
});
}
const totalCount = (goalProgress?.Count ?? 0) + upload.Count;
const guildRewards = goalGuildRewardByTag[upload.Tag].rewards;
const tierGoals = goalGuildRewardByTag[upload.Tag].guildGoals[guild.Tier - 1];
const rewards = [];
if (tierGoals.length && guildRewards.length) {
for (let i = 0; i < tierGoals.length; i++) {
if (
tierGoals[i] &&
tierGoals[i] <= totalCount &&
(!goalProgress || goalProgress.Count < tierGoals[i]) &&
guildRewards[i]
) {
rewards.push(guildRewards[i]);
}
}
if (rewards.length) {
logger.debug(`guild goal rewards`, rewards);
guild.VaultDecoRecipes ??= [];
rewards.forEach(type => {
guild.VaultDecoRecipes!.push({
ItemType: type,
ItemCount: 1
});
});
}
}
if (goalProgress) {
goalProgress.Count += upload.Count;
}
await guild.save();
};
export const goalGuildRewardByTag: Record<string, { guildGoals: number[][]; rewards: string[] }> = {
JadeShadowsEvent: {
guildGoals: [
// I don't know what ClanGoal means
[15, 30, 45, 60],
[45, 90, 135, 180],
[150, 300, 450, 600],
[450, 900, 1350, 1800],
[1500, 3000, 4500, 6000]
],
rewards: [
"/Lotus/Levels/ClanDojo/ComponentPropRecipes/JadeShadowsEventPewterTrophyRecipe",
"/Lotus/Levels/ClanDojo/ComponentPropRecipes/JadeShadowsEventBronzeTrophyRecipe",
"/Lotus/Levels/ClanDojo/ComponentPropRecipes/JadeShadowsEventSilverTrophyRecipe",
"/Lotus/Levels/ClanDojo/ComponentPropRecipes/JadeShadowsEventGoldTrophyRecipe"
]
},
DuviriMurmurEvent: {
guildGoals: [
// I don't know what ClanGoal means
[260, 519, 779, 1038],
[779, 1557, 2336, 3114],
[2595, 5190, 7785, 10380],
[7785, 15570, 23355, 31140],
[29950, 51900, 77850, 103800]
],
rewards: [
"/Lotus/Levels/ClanDojo/ComponentPropRecipes/DuviriMurmurEventClayTrophyRecipe",
"/Lotus/Levels/ClanDojo/ComponentPropRecipes/DuviriMurmurEventBronzeTrophyRecipe",
"/Lotus/Levels/ClanDojo/ComponentPropRecipes/DuviriMurmurEventSilverTrophyRecipe",
"/Lotus/Levels/ClanDojo/ComponentPropRecipes/DuviriMurmurEventGoldTrophyRecipe"
]
}
};

View File

@ -44,28 +44,6 @@ import {
IKubrowPetDetailsClient, IKubrowPetDetailsClient,
IKubrowPetDetailsDatabase IKubrowPetDetailsDatabase
} from "@/src/types/equipmentTypes"; } from "@/src/types/equipmentTypes";
import {
IApartmentClient,
IApartmentDatabase,
ICustomizationInfoClient,
ICustomizationInfoDatabase,
IFavouriteLoadout,
IFavouriteLoadoutDatabase,
IGetShipResponse,
IOrbiterClient,
IOrbiterDatabase,
IPersonalRoomsDatabase,
IPlacedDecosClient,
IPlacedDecosDatabase,
IPlantClient,
IPlantDatabase,
IPlanterClient,
IPlanterDatabase,
IRoomClient,
IRoomDatabase,
ITailorShop,
ITailorShopDatabase
} from "@/src/types/personalRoomsTypes";
const convertDate = (value: IMongoDate): Date => { const convertDate = (value: IMongoDate): Date => {
return new Date(parseInt(value.$date.$numberLong)); return new Date(parseInt(value.$date.$numberLong));
@ -451,84 +429,3 @@ export const importLoadOutPresets = (db: ILoadoutDatabase, client: ILoadOutPrese
db.OPERATOR_ADULT = client.OPERATOR_ADULT.map(convertLoadOutConfig); db.OPERATOR_ADULT = client.OPERATOR_ADULT.map(convertLoadOutConfig);
db.DRIFTER = client.DRIFTER.map(convertLoadOutConfig); db.DRIFTER = client.DRIFTER.map(convertLoadOutConfig);
}; };
export const convertCustomizationInfo = (client: ICustomizationInfoClient): ICustomizationInfoDatabase => {
return {
...client,
LoadOutPreset: client.LoadOutPreset ? convertLoadOutConfig(client.LoadOutPreset) : undefined,
VehiclePreset: client.VehiclePreset ? convertLoadOutConfig(client.VehiclePreset) : undefined
};
};
const convertDeco = (client: IPlacedDecosClient): IPlacedDecosDatabase => {
const { id, ...rest } = client;
return {
...rest,
CustomizationInfo: client.CustomizationInfo ? convertCustomizationInfo(client.CustomizationInfo) : undefined,
_id: new Types.ObjectId(id.$oid)
};
};
const convertRoom = (client: IRoomClient): IRoomDatabase => {
return {
...client,
PlacedDecos: client.PlacedDecos ? client.PlacedDecos.map(convertDeco) : []
};
};
const convertShip = (client: IOrbiterClient): IOrbiterDatabase => {
return {
...client,
ShipInterior: {
...client.ShipInterior,
Colors: Array.isArray(client.ShipInterior.Colors) ? {} : client.ShipInterior.Colors
},
Rooms: client.Rooms.map(convertRoom),
FavouriteLoadoutId: client.FavouriteLoadoutId ? new Types.ObjectId(client.FavouriteLoadoutId.$oid) : undefined
};
};
const convertPlant = (client: IPlantClient): IPlantDatabase => {
return {
...client,
EndTime: convertDate(client.EndTime)
};
};
const convertPlanter = (client: IPlanterClient): IPlanterDatabase => {
return {
...client,
Plants: client.Plants.map(convertPlant)
};
};
const convertFavouriteLoadout = (client: IFavouriteLoadout): IFavouriteLoadoutDatabase => {
return {
...client,
LoadoutId: new Types.ObjectId(client.LoadoutId.$oid)
};
};
const convertApartment = (client: IApartmentClient): IApartmentDatabase => {
return {
...client,
Rooms: client.Rooms.map(convertRoom),
Gardening: { Planters: client.Gardening.Planters.map(convertPlanter) },
FavouriteLoadouts: client.FavouriteLoadouts ? client.FavouriteLoadouts.map(convertFavouriteLoadout) : []
};
};
const convertTailorShop = (client: ITailorShop): ITailorShopDatabase => {
return {
...client,
Rooms: client.Rooms.map(convertRoom),
Colors: Array.isArray(client.Colors) ? {} : client.Colors,
FavouriteLoadouts: client.FavouriteLoadouts ? client.FavouriteLoadouts.map(convertFavouriteLoadout) : []
};
};
export const importPersonalRooms = (db: IPersonalRoomsDatabase, client: Partial<IGetShipResponse>): void => {
if (client.Ship !== undefined) db.Ship = convertShip(client.Ship);
if (client.Apartment !== undefined) db.Apartment = convertApartment(client.Apartment);
if (client.TailorShop !== undefined) db.TailorShop = convertTailorShop(client.TailorShop);
};

View File

@ -847,32 +847,6 @@ export const addItem = async (
return addMotorcycle(inventory, typeName); return addMotorcycle(inventory, typeName);
} }
break; break;
case "Lore":
if (typeName == "/Lotus/Types/Lore/Fragments/GrineerGhoulFragments/GhoulFragmentRewards") {
const fragmentType = getRandomElement([
"/Lotus/Types/Lore/Fragments/GrineerGhoulFragments/GhoulFragmentA",
"/Lotus/Types/Lore/Fragments/GrineerGhoulFragments/GhoulFragmentB",
"/Lotus/Types/Lore/Fragments/GrineerGhoulFragments/GhoulFragmentC",
"/Lotus/Types/Lore/Fragments/GrineerGhoulFragments/GhoulFragmentD",
"/Lotus/Types/Lore/Fragments/GrineerGhoulFragments/GhoulFragmentE",
"/Lotus/Types/Lore/Fragments/GrineerGhoulFragments/GhoulFragmentF",
"/Lotus/Types/Lore/Fragments/GrineerGhoulFragments/GhoulFragmentG",
"/Lotus/Types/Lore/Fragments/GrineerGhoulFragments/GhoulFragmentH",
"/Lotus/Types/Lore/Fragments/GrineerGhoulFragments/GhoulFragmentI",
"/Lotus/Types/Lore/Fragments/GrineerGhoulFragments/GhoulFragmentJ",
"/Lotus/Types/Lore/Fragments/GrineerGhoulFragments/GhoulFragmentK",
"/Lotus/Types/Lore/Fragments/GrineerGhoulFragments/GhoulFragmentL",
"/Lotus/Types/Lore/Fragments/GrineerGhoulFragments/GhoulFragmentM"
])!;
addLoreFragmentScans(inventory, [
{
Progress: 1,
Region: "",
ItemType: fragmentType
}
]);
}
break;
} }
break; break;
} }

View File

@ -81,8 +81,6 @@ import { fromOid } from "@/src/helpers/inventoryHelpers";
import { TAccountDocument } from "@/src/services/loginService"; import { TAccountDocument } from "@/src/services/loginService";
import { ITypeCount } from "@/src/types/commonTypes"; import { ITypeCount } from "@/src/types/commonTypes";
import { IEquipmentClient } from "@/src/types/equipmentTypes"; import { IEquipmentClient } from "@/src/types/equipmentTypes";
import { Guild } from "@/src/models/guildModel";
import { handleGuildGoalProgress } from "@/src/services/guildService";
const getRotations = (rewardInfo: IRewardInfo, tierOverride?: number): number[] => { const getRotations = (rewardInfo: IRewardInfo, tierOverride?: number): number[] => {
// Disruption missions just tell us (https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2599) // Disruption missions just tell us (https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2599)
@ -714,20 +712,10 @@ export const addMissionInventoryUpdates = async (
} }
if (goalProgress) { if (goalProgress) {
goalProgress.Best = Math.max(goalProgress.Best!, uploadProgress.Best); goalProgress.Best = Math.max(goalProgress.Best, uploadProgress.Best);
goalProgress.Count += uploadProgress.Count; goalProgress.Count += uploadProgress.Count;
} }
} }
if (goal && goal.ClanGoal && inventory.GuildId) {
const guild = await Guild.findById(inventory.GuildId, "GoalProgress Tier VaultDecoRecipes");
if (guild) {
await handleGuildGoalProgress(guild, {
Count: uploadProgress.Count,
Tag: goal.Tag,
goalId: new Types.ObjectId(goal._id.$oid)
});
}
}
} }
break; break;
} }
@ -1309,27 +1297,6 @@ export const addMissionRewards = async (
logger.error(`unknown droptable ${si.DropTable} for DROP_BLUEPRINT`); logger.error(`unknown droptable ${si.DropTable} for DROP_BLUEPRINT`);
} }
} }
// e.g. H-09 Apex Turret Sumdali
if (si.DROP_MISC_ITEM) {
const resourceDroptable = droptables.find(x => x.type == "resource");
if (resourceDroptable) {
for (let i = 0; i != si.DROP_MISC_ITEM.length; ++i) {
const reward = getRandomReward(resourceDroptable.items)!;
logger.debug(`stripped droptable (resources pool) rolled`, reward);
if (Object.keys(await addItem(inventory, reward.type)).length == 0) {
logger.debug(`item already owned, skipping`);
} else {
MissionRewards.push({
StoreItem: toStoreItem(reward.type),
ItemCount: 1,
FromEnemyCache: true // to show "identified"
});
}
}
} else {
logger.error(`unknown droptable ${si.DropTable} for DROP_BLUEPRINT`);
}
}
} }
} }

View File

@ -36,9 +36,6 @@ import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/invento
import { fromStoreItem, toStoreItem } from "@/src/services/itemDataService"; import { fromStoreItem, toStoreItem } from "@/src/services/itemDataService";
import { DailyDeal } from "@/src/models/worldStateModel"; import { DailyDeal } from "@/src/models/worldStateModel";
import { fromMongoDate, toMongoDate } from "@/src/helpers/inventoryHelpers"; import { fromMongoDate, toMongoDate } from "@/src/helpers/inventoryHelpers";
import { Guild } from "@/src/models/guildModel";
import { handleGuildGoalProgress } from "@/src/services/guildService";
import { Types } from "mongoose";
export const getStoreItemCategory = (storeItem: string): string => { export const getStoreItemCategory = (storeItem: string): string => {
const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/"); const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/");
@ -140,22 +137,6 @@ export const handlePurchase = async (
updateCurrency(inventory, offer.PremiumPrice[0], true, prePurchaseInventoryChanges); updateCurrency(inventory, offer.PremiumPrice[0], true, prePurchaseInventoryChanges);
} }
} }
if (
inventory.GuildId &&
offer.ItemPrices &&
manifest.VendorInfo.TypeName ==
"/Lotus/Types/Game/VendorManifests/Events/DuviriMurmurInvasionVendorManifest"
) {
const guild = await Guild.findById(inventory.GuildId, "GoalProgress Tier VaultDecoRecipes");
const goal = getWorldState().Goals.find(x => x.Tag == "DuviriMurmurEvent");
if (guild && goal) {
await handleGuildGoalProgress(guild, {
Count: offer.ItemPrices[0].ItemCount * purchaseRequest.PurchaseParams.Quantity,
Tag: goal.Tag,
goalId: new Types.ObjectId(goal._id.$oid)
});
}
}
if (!config.dontSubtractPurchaseItemCost) { if (!config.dontSubtractPurchaseItemCost) {
if (offer.ItemPrices) { if (offer.ItemPrices) {
handleItemPrices( handleItemPrices(

View File

@ -19,7 +19,6 @@ import { Guild } from "@/src/models/guildModel";
import { hasGuildPermission } from "@/src/services/guildService"; import { hasGuildPermission } from "@/src/services/guildService";
import { GuildPermission } from "@/src/types/guildTypes"; import { GuildPermission } from "@/src/types/guildTypes";
import { ExportResources } from "warframe-public-export-plus"; import { ExportResources } from "warframe-public-export-plus";
import { convertCustomizationInfo } from "@/src/services/importService";
export const setShipCustomizations = async ( export const setShipCustomizations = async (
accountId: string, accountId: string,
@ -270,8 +269,6 @@ export const handleSetPlacedDecoInfo = async (accountId: string, req: ISetPlaced
} }
placedDeco.PictureFrameInfo = req.PictureFrameInfo; placedDeco.PictureFrameInfo = req.PictureFrameInfo;
placedDeco.CustomizationInfo = req.CustomizationInfo ? convertCustomizationInfo(req.CustomizationInfo) : undefined;
placedDeco.AnimPoseItem = req.AnimPoseItem;
await personalRooms.save(); await personalRooms.save();
}; };

View File

@ -8,7 +8,6 @@ import syndicateMissions from "@/static/fixed_responses/worldState/syndicateMiss
import darvoDeals from "@/static/fixed_responses/worldState/darvoDeals.json"; import darvoDeals from "@/static/fixed_responses/worldState/darvoDeals.json";
import invasionNodes from "@/static/fixed_responses/worldState/invasionNodes.json"; import invasionNodes from "@/static/fixed_responses/worldState/invasionNodes.json";
import invasionRewards from "@/static/fixed_responses/worldState/invasionRewards.json"; import invasionRewards from "@/static/fixed_responses/worldState/invasionRewards.json";
import pvpChallenges from "@/static/fixed_responses/worldState/pvpChallenges.json";
import { buildConfig } from "@/src/services/buildConfigService"; import { buildConfig } from "@/src/services/buildConfigService";
import { unixTimesInMs } from "@/src/constants/timeConstants"; import { unixTimesInMs } from "@/src/constants/timeConstants";
import { config } from "@/src/services/configService"; import { config } from "@/src/services/configService";
@ -22,7 +21,6 @@ import {
ILiteSortie, ILiteSortie,
IPrimeVaultTrader, IPrimeVaultTrader,
IPrimeVaultTraderOffer, IPrimeVaultTraderOffer,
IPVPChallengeInstance,
ISeasonChallenge, ISeasonChallenge,
ISortie, ISortie,
ISortieMission, ISortieMission,
@ -1403,7 +1401,6 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
DailyDeals: [], DailyDeals: [],
EndlessXpChoices: [], EndlessXpChoices: [],
KnownCalendarSeasons: [], KnownCalendarSeasons: [],
PVPChallengeInstances: [],
...staticWorldState, ...staticWorldState,
SyndicateMissions: [...staticWorldState.SyndicateMissions], SyndicateMissions: [...staticWorldState.SyndicateMissions],
InGameMarket: { InGameMarket: {
@ -1804,10 +1801,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
worldState.Goals.push({ worldState.Goals.push({
_id: { _id: {
$oid: $oid: ((dogDaysStart / 1000) & 0xffffffff).toString(16).padStart(8, "0") + "c57487c3768936df"
((dogDaysStart / 1000) & 0xffffffff).toString(16).padStart(8, "0") +
"c57487c3768936d" +
year.toString(16)
}, },
Activation: { $date: { $numberLong: activationTimeStamp } }, Activation: { $date: { $numberLong: activationTimeStamp } },
Expiry: { $date: { $numberLong: expiryTimeStamp } }, Expiry: { $date: { $numberLong: expiryTimeStamp } },
@ -2100,7 +2094,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
const year = config.worldState.hallowedNightmaresRewardsOverride ?? 0; const year = config.worldState.hallowedNightmaresRewardsOverride ?? 0;
worldState.Goals.push({ worldState.Goals.push({
_id: { $oid: "5bc98f00000000000000000" + year.toString(16) }, _id: { $oid: "5bc9e8f7972d7d184c8398c9" },
Activation: { $date: { $numberLong: "1539972000000" } }, Activation: { $date: { $numberLong: "1539972000000" } },
Expiry: { $date: { $numberLong: "2000000000000" } }, Expiry: { $date: { $numberLong: "2000000000000" } },
Count: 0, Count: 0,
@ -2125,7 +2119,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
}); });
if (year != 2) { if (year != 2) {
worldState.Goals.push({ worldState.Goals.push({
_id: { $oid: "5bc98f01000000000000000" + year.toString(16) }, _id: { $oid: "5bca18b1e12d9e14a0b6ad27" },
Activation: { $date: { $numberLong: "1539972000000" } }, Activation: { $date: { $numberLong: "1539972000000" } },
Expiry: { $date: { $numberLong: "2000000000000" } }, Expiry: { $date: { $numberLong: "2000000000000" } },
Count: 0, Count: 0,
@ -2198,7 +2192,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
const year = config.worldState.proxyRebellionRewardsOverride ?? 0; const year = config.worldState.proxyRebellionRewardsOverride ?? 0;
worldState.Goals.push({ worldState.Goals.push({
_id: { $oid: "5b5b5da0000000000000000" + year.toString(16) }, _id: { $oid: "5b5743ac972d7d3ed0517b0d" },
Activation: { $date: { $numberLong: "1532714400000" } }, Activation: { $date: { $numberLong: "1532714400000" } },
Expiry: { $date: { $numberLong: "2000000000000" } }, Expiry: { $date: { $numberLong: "2000000000000" } },
Count: 0, Count: 0,
@ -2271,49 +2265,6 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
BonusReward: { items: ["/Lotus/StoreItems/Upgrades/Skins/Clan/BountyHunterBadgeItem"] } BonusReward: { items: ["/Lotus/StoreItems/Upgrades/Skins/Clan/BountyHunterBadgeItem"] }
}); });
} }
if (config.worldState?.bellyOfTheBeast) {
worldState.Goals.push({
_id: { $oid: "67a5035c2a198564d62e165e" },
Activation: { $date: { $numberLong: "1738868400000" } },
Expiry: { $date: { $numberLong: "2000000000000" } },
Count: config.worldState.bellyOfTheBeastProgressOverride ?? 0,
HealthPct: (config.worldState.bellyOfTheBeastProgressOverride ?? 0) / 100,
Goal: 0,
Personal: true,
Community: true,
ClanGoal: [72, 216, 648, 1944, 5832],
Tag: "JadeShadowsEvent",
Faction: "FC_MITW",
Desc: "/Lotus/Language/JadeShadows/JadeShadowsEventName",
ToolTip: "/Lotus/Language/JadeShadows/JadeShadowsShortEventDesc",
Icon: "/Lotus/Interface/Icons/WorldStatePanel/JadeShadowsEventBadge.png",
ScoreLocTag: "/Lotus/Language/JadeShadows/JadeShadowsEventScore",
Node: "SolNode723",
MissionKeyName: "/Lotus/Types/Keys/JadeShadowsEventMission",
ItemType: "/Lotus/Types/Gameplay/JadeShadows/Resources/AscensionEventResourceItem"
});
}
if (config.worldState?.eightClaw) {
worldState.Goals.push({
_id: { $oid: "685c15f80000000000000000" },
Activation: { $date: { $numberLong: "1750865400000" } },
Expiry: { $date: { $numberLong: "2000000000000" } },
Count: config.worldState.eightClawProgressOverride ?? 0,
HealthPct: (config.worldState.eightClawProgressOverride ?? 0) / 100,
Goal: 0,
Personal: true,
Community: true,
ClanGoal: [72, 216, 648, 1944, 5832],
Tag: "DuviriMurmurEvent",
Faction: "FC_MITW",
Desc: "/Lotus/Language/Isleweaver/DuviriMurmurEventTitle",
ToolTip: "/Lotus/Language/Isleweaver/DuviriMurmurEventDescription",
Icon: "/Lotus/Interface/Icons/WorldStatePanel/EightClawEventBadge.png",
ScoreLocTag: "/Lotus/Language/Isleweaver/DuviriMurmurEventScore",
Node: "SolNode236",
MissionKeyName: "/Lotus/Types/Keys/DuviriMITW/DuviriMITWEventKey"
});
}
// Nightwave Challenges // Nightwave Challenges
const nightwaveSyndicateTag = getNightwaveSyndicateTag(buildLabel); const nightwaveSyndicateTag = getNightwaveSyndicateTag(buildLabel);
@ -2635,23 +2586,6 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
pushSyndicateMissions(worldState, sdy, rng.randomInt(0, 100_000), "ba6f84724fa48061", "SteelMeridianSyndicate"); pushSyndicateMissions(worldState, sdy, rng.randomInt(0, 100_000), "ba6f84724fa48061", "SteelMeridianSyndicate");
} }
{
const conclaveDayStart = EPOCH + day * unixTimesInMs.day + 5 * unixTimesInMs.hour + 30 * unixTimesInMs.minute;
const conclaveDayEnd = conclaveDayStart + unixTimesInMs.day;
const conclaveWeekStart = weekStart + 40 * unixTimesInMs.minute - 2 * unixTimesInMs.day;
const conclaveWeekEnd = conclaveWeekStart + unixTimesInMs.week;
pushConclaveWeakly(worldState.PVPChallengeInstances, week);
pushConclaveDailys(worldState.PVPChallengeInstances, day);
if (isBeforeNextExpectedWorldStateRefresh(timeMs, conclaveDayEnd)) {
pushConclaveDailys(worldState.PVPChallengeInstances, day + 1);
}
if (isBeforeNextExpectedWorldStateRefresh(timeMs, conclaveWeekEnd)) {
pushConclaveWeakly(worldState.PVPChallengeInstances, week + 1);
}
}
// Archon Hunt cycling every week // Archon Hunt cycling every week
worldState.LiteSorties.push(getLiteSortie(week)); worldState.LiteSorties.push(getLiteSortie(week));
if (isBeforeNextExpectedWorldStateRefresh(timeMs, weekEnd)) { if (isBeforeNextExpectedWorldStateRefresh(timeMs, weekEnd)) {
@ -3037,136 +2971,3 @@ const updateDailyDeal = async (): Promise<void> => {
export const updateWorldStateCollections = async (): Promise<void> => { export const updateWorldStateCollections = async (): Promise<void> => {
await Promise.all([updateFissures(), updateDailyDeal()]); await Promise.all([updateFissures(), updateDailyDeal()]);
}; };
const pushConclaveDaily = (
activeChallenges: IPVPChallengeInstance[],
PVPMode: string,
pool: {
key: string;
ScriptParamValue: number;
PVPModeAllowed: string[];
SyndicateXP: number;
DuringSingleMatch?: boolean;
}[],
day: number,
id: number
): void => {
const conclaveDayStart = EPOCH + day * unixTimesInMs.day + 5 * unixTimesInMs.hour + 30 * unixTimesInMs.minute;
const conclaveDayEnd = conclaveDayStart + unixTimesInMs.day;
const challengeId = day * 8 + id;
const rng = new SRng(new SRng(challengeId).randomInt(0, 100_000));
let challenge: {
key: string;
ScriptParamValue: number;
PVPModeAllowed?: string[];
SyndicateXP?: number;
DuringSingleMatch?: boolean;
};
do {
challenge = rng.randomElement(pool)!;
} while (
activeChallenges.some(x => x.challengeTypeRefID == challenge.key) &&
activeChallenges.some(x => x.PVPMode == PVPMode)
);
activeChallenges.push({
_id: {
$oid: "689ec5d985b55902" + challengeId.toString().padStart(8, "0")
},
challengeTypeRefID: challenge.key,
startDate: { $date: { $numberLong: conclaveDayStart.toString() } },
endDate: { $date: { $numberLong: conclaveDayEnd.toString() } },
params: [{ n: "ScriptParamValue", v: challenge.ScriptParamValue }],
isGenerated: true,
PVPMode,
subChallenges: [],
Category: "PVPChallengeTypeCategory_DAILY"
});
};
const pushConclaveDailys = (activeChallenges: IPVPChallengeInstance[], day: number): void => {
const modes = [
"PVPMODE_SPEEDBALL",
"PVPMODE_CAPTURETHEFLAG",
"PVPMODE_DEATHMATCH",
"PVPMODE_TEAMDEATHMATCH"
] as const;
const challengesMap: Record<
string,
{
key: string;
ScriptParamValue: number;
PVPModeAllowed: string[];
SyndicateXP: number;
DuringSingleMatch?: boolean;
}[]
> = {};
for (const mode of modes) {
challengesMap[mode] = Object.entries(pvpChallenges)
.filter(([_, challenge]) => challenge.PVPModeAllowed.includes(mode))
.map(([key, challenge]) => ({ key, ...challenge }));
}
modes.forEach((mode, index) => {
pushConclaveDaily(activeChallenges, mode, challengesMap[mode], day, index * 2);
pushConclaveDaily(activeChallenges, mode, challengesMap[mode], day, index * 2 + 1);
});
};
const pushConclaveWeakly = (activeChallenges: IPVPChallengeInstance[], week: number): void => {
const weekStart = EPOCH + week * unixTimesInMs.week;
const conclaveWeekStart = weekStart + 40 * unixTimesInMs.minute - 2 * unixTimesInMs.day;
const conclaveWeekEnd = conclaveWeekStart + unixTimesInMs.week;
const conclaveIdStart = ((conclaveWeekStart / 1000) & 0xffffffff).toString(16).padStart(8, "0").padEnd(23, "0");
activeChallenges.push(
{
_id: { $oid: conclaveIdStart + "1" },
challengeTypeRefID: "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins",
startDate: { $date: { $numberLong: conclaveWeekStart.toString() } },
endDate: { $date: { $numberLong: conclaveWeekEnd.toString() } },
params: [{ n: "ScriptParamValue", v: 6 }],
isGenerated: true,
PVPMode: "PVPMODE_ALL",
subChallenges: [],
Category: "PVPChallengeTypeCategory_WEEKLY"
},
{
_id: { $oid: conclaveIdStart + "2" },
challengeTypeRefID: "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete",
startDate: { $date: { $numberLong: conclaveWeekStart.toString() } },
endDate: { $date: { $numberLong: conclaveWeekEnd.toString() } },
params: [{ n: "ScriptParamValue", v: 20 }],
isGenerated: true,
PVPMode: "PVPMODE_ALL",
subChallenges: [],
Category: "PVPChallengeTypeCategory_WEEKLY"
},
{
_id: { $oid: conclaveIdStart + "3" },
challengeTypeRefID: "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY",
startDate: { $date: { $numberLong: conclaveWeekStart.toString() } },
endDate: { $date: { $numberLong: conclaveWeekEnd.toString() } },
params: [{ n: "ScriptParamValue", v: 10 }],
isGenerated: true,
PVPMode: "PVPMODE_ALL",
subChallenges: [],
Category: "PVPChallengeTypeCategory_WEEKLY"
},
{
_id: { $oid: conclaveIdStart + "4" },
challengeTypeRefID: "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet",
startDate: { $date: { $numberLong: conclaveWeekStart.toString() } },
endDate: { $date: { $numberLong: conclaveWeekEnd.toString() } },
params: [{ n: "ScriptParamValue", v: 0 }],
isGenerated: true,
PVPMode: "PVPMODE_NONE",
subChallenges: [
{ $oid: conclaveIdStart + "1" },
{ $oid: conclaveIdStart + "2" },
{ $oid: conclaveIdStart + "3" }
],
Category: "PVPChallengeTypeCategory_WEEKLY_ROOT"
}
);
};

View File

@ -1,11 +1,6 @@
import { Types } from "mongoose"; import { Types } from "mongoose";
import { IOid, IMongoDate, IOidWithLegacySupport, ITypeCount } from "@/src/types/commonTypes"; import { IOid, IMongoDate, IOidWithLegacySupport, ITypeCount } from "@/src/types/commonTypes";
import { import { IFusionTreasure, IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
IFusionTreasure,
IMiscItem,
IGoalProgressDatabase,
IGoalProgressClient
} from "@/src/types/inventoryTypes/inventoryTypes";
import { IPictureFrameInfo } from "@/src/types/personalRoomsTypes"; import { IPictureFrameInfo } from "@/src/types/personalRoomsTypes";
import { IFriendInfo } from "@/src/types/friendTypes"; import { IFriendInfo } from "@/src/types/friendTypes";
@ -28,8 +23,6 @@ export interface IGuildClient {
CrossPlatformEnabled?: boolean; CrossPlatformEnabled?: boolean;
AutoContributeFromVault?: boolean; AutoContributeFromVault?: boolean;
AllianceId?: IOidWithLegacySupport; AllianceId?: IOidWithLegacySupport;
GoalProgress?: IGoalProgressClient[];
} }
export interface IGuildDatabase { export interface IGuildDatabase {
@ -70,8 +63,6 @@ export interface IGuildDatabase {
TechChanges?: IGuildLogEntryContributable[]; TechChanges?: IGuildLogEntryContributable[];
RosterActivity?: IGuildLogEntryRoster[]; RosterActivity?: IGuildLogEntryRoster[];
ClassChanges?: IGuildLogEntryNumber[]; ClassChanges?: IGuildLogEntryNumber[];
GoalProgress?: IGoalProgressDatabase[];
} }
export interface ILongMOTD { export interface ILongMOTD {

View File

@ -109,7 +109,7 @@ export interface IInventoryDatabase
QualifyingInvasions: IInvasionProgressDatabase[]; QualifyingInvasions: IInvasionProgressDatabase[];
LastInventorySync?: Types.ObjectId; LastInventorySync?: Types.ObjectId;
EndlessXP?: IEndlessXpProgressDatabase[]; EndlessXP?: IEndlessXpProgressDatabase[];
PersonalGoalProgress?: IGoalProgressDatabase[]; PersonalGoalProgress?: IPersonalGoalProgressDatabase[];
} }
export interface IQuestKeyDatabase { export interface IQuestKeyDatabase {
@ -318,7 +318,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu
HWIDProtectEnabled?: boolean; HWIDProtectEnabled?: boolean;
KubrowPetPrints: IKubrowPetPrintClient[]; KubrowPetPrints: IKubrowPetPrintClient[];
AlignmentReplay?: IAlignment; AlignmentReplay?: IAlignment;
PersonalGoalProgress?: IGoalProgressClient[]; PersonalGoalProgress?: IPersonalGoalProgressClient[];
ThemeStyle: string; ThemeStyle: string;
ThemeBackground: string; ThemeBackground: string;
ThemeSounds: string; ThemeSounds: string;
@ -730,7 +730,7 @@ export enum UpgradeType {
export interface ILoreFragmentScan { export interface ILoreFragmentScan {
Progress: number; Progress: number;
Region: string; Region?: string;
ItemType: string; ItemType: string;
} }
@ -895,8 +895,8 @@ export interface IPeriodicMissionCompletionResponse extends Omit<IPeriodicMissio
date: IMongoDate; date: IMongoDate;
} }
export interface IGoalProgressClient { export interface IPersonalGoalProgressClient {
Best?: number; Best: number;
Count: number; Count: number;
Tag: string; Tag: string;
_id: IOid; _id: IOid;
@ -904,7 +904,7 @@ export interface IGoalProgressClient {
//ReceivedClanReward1?: boolean; //ReceivedClanReward1?: boolean;
} }
export interface IGoalProgressDatabase extends Omit<IGoalProgressClient, "_id"> { export interface IPersonalGoalProgressDatabase extends Omit<IPersonalGoalProgressClient, "_id"> {
goalId: Types.ObjectId; goalId: Types.ObjectId;
} }

View File

@ -1,6 +1,6 @@
import { IColor, IShipAttachments, IShipCustomization } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { IColor, IShipAttachments, IShipCustomization } from "@/src/types/inventoryTypes/commonInventoryTypes";
import { Document, Model, Types } from "mongoose"; import { Document, Model, Types } from "mongoose";
import { ILoadoutClient, ILoadoutConfigClient, ILoadoutConfigDatabase } from "@/src/types/saveLoadoutTypes"; import { ILoadoutClient } from "@/src/types/saveLoadoutTypes";
import { IMongoDate, IOid } from "@/src/types/commonTypes"; import { IMongoDate, IOid } from "@/src/types/commonTypes";
export interface IGetShipResponse { export interface IGetShipResponse {
@ -17,7 +17,7 @@ export interface IOrbiterClient {
Features: string[]; Features: string[];
ShipId: IOid; ShipId: IOid;
ShipInterior: IShipCustomization; ShipInterior: IShipCustomization;
Rooms: IRoomClient[]; Rooms: IRoom[];
VignetteFish?: string[]; VignetteFish?: string[];
FavouriteLoadoutId?: IOid; FavouriteLoadoutId?: IOid;
Wallpaper?: string; Wallpaper?: string;
@ -28,7 +28,7 @@ export interface IOrbiterClient {
export interface IOrbiterDatabase { export interface IOrbiterDatabase {
Features: string[]; Features: string[];
Rooms: IRoomDatabase[]; Rooms: IRoom[];
ShipInterior?: IShipCustomization; ShipInterior?: IShipCustomization;
VignetteFish?: string[]; VignetteFish?: string[];
FavouriteLoadoutId?: Types.ObjectId; FavouriteLoadoutId?: Types.ObjectId;
@ -53,18 +53,12 @@ export interface IPersonalRoomsDatabase {
TailorShop: ITailorShopDatabase; TailorShop: ITailorShopDatabase;
} }
export interface IRoomDatabase { export interface IRoom {
Name: string; Name: string;
MaxCapacity: number; MaxCapacity: number;
PlacedDecos?: IPlacedDecosDatabase[]; PlacedDecos?: IPlacedDecosDatabase[];
} }
export interface IRoomClient {
Name: string;
MaxCapacity: number;
PlacedDecos?: IPlacedDecosClient[];
}
export interface IPlantClient { export interface IPlantClient {
PlantType: string; PlantType: string;
EndTime: IMongoDate; EndTime: IMongoDate;
@ -95,15 +89,15 @@ export interface IGardeningDatabase {
export interface IApartmentClient { export interface IApartmentClient {
Gardening: IGardeningClient; Gardening: IGardeningClient;
Rooms: IRoomClient[]; Rooms: IRoom[];
FavouriteLoadouts?: IFavouriteLoadout[]; FavouriteLoadouts: IFavouriteLoadout[];
VideoWallBackdrop?: string; VideoWallBackdrop?: string;
Soundscape?: string; Soundscape?: string;
} }
export interface IApartmentDatabase { export interface IApartmentDatabase {
Gardening: IGardeningDatabase; Gardening: IGardeningDatabase;
Rooms: IRoomDatabase[]; Rooms: IRoom[];
FavouriteLoadouts: IFavouriteLoadoutDatabase[]; FavouriteLoadouts: IFavouriteLoadoutDatabase[];
VideoWallBackdrop?: string; VideoWallBackdrop?: string;
Soundscape?: string; Soundscape?: string;
@ -116,14 +110,11 @@ export interface IPlacedDecosDatabase {
Scale?: number; Scale?: number;
Sockets?: number; Sockets?: number;
PictureFrameInfo?: IPictureFrameInfo; PictureFrameInfo?: IPictureFrameInfo;
CustomizationInfo?: ICustomizationInfoDatabase;
AnimPoseItem?: string;
_id: Types.ObjectId; _id: Types.ObjectId;
} }
export interface IPlacedDecosClient extends Omit<IPlacedDecosDatabase, "_id" | "CustomizationInfo"> { export interface IPlacedDecosClient extends Omit<IPlacedDecosDatabase, "_id"> {
id: IOid; id: IOid;
CustomizationInfo?: ICustomizationInfoClient;
} }
export interface ISetShipCustomizationsRequest { export interface ISetShipCustomizationsRequest {
@ -175,13 +166,11 @@ export interface IResetShipDecorationsResponse {
} }
export interface ISetPlacedDecoInfoRequest { export interface ISetPlacedDecoInfoRequest {
DecoType?: string; DecoType: string;
DecoId: string; DecoId: string;
Room: string; Room: string;
PictureFrameInfo: IPictureFrameInfo; // IsPicture PictureFrameInfo: IPictureFrameInfo;
CustomizationInfo?: ICustomizationInfoClient; // !IsPicture
BootLocation?: TBootLocation; BootLocation?: TBootLocation;
AnimPoseItem?: string; // !IsPicture
ComponentId?: string; ComponentId?: string;
GuildId?: string; GuildId?: string;
} }
@ -202,21 +191,6 @@ export interface IPictureFrameInfo {
TextOrientation: number; TextOrientation: number;
} }
export interface ICustomizationInfoClient {
Anim?: string;
AnimPose?: number;
LoadOutPreset?: ILoadoutConfigClient;
VehiclePreset?: ILoadoutConfigClient;
EquippedWeapon?: "SUIT_SLOT" | "LONG_GUN_SLOT" | "PISTOL_SLOT";
AvatarType?: string;
LoadOutType?: string; // "LOT_NORMAL"
}
export interface ICustomizationInfoDatabase extends Omit<ICustomizationInfoClient, "LoadOutPreset" | "VehiclePreset"> {
LoadOutPreset?: ILoadoutConfigDatabase;
VehiclePreset?: ILoadoutConfigDatabase;
}
export interface IFavouriteLoadout { export interface IFavouriteLoadout {
Tag: string; Tag: string;
LoadoutId: IOid; LoadoutId: IOid;
@ -232,12 +206,11 @@ export interface ITailorShopDatabase {
Colors?: IColor; Colors?: IColor;
CustomJson?: string; CustomJson?: string;
LevelDecosVisible?: boolean; LevelDecosVisible?: boolean;
Rooms: IRoomDatabase[]; Rooms: IRoom[];
} }
export interface ITailorShop extends Omit<ITailorShopDatabase, "Rooms" | "FavouriteLoadouts"> { export interface ITailorShop extends Omit<ITailorShopDatabase, "FavouriteLoadouts"> {
Rooms: IRoomClient[]; FavouriteLoadouts: IFavouriteLoadout[];
FavouriteLoadouts?: IFavouriteLoadout[];
} }
export type RoomsType = { Name: string; MaxCapacity: number; PlacedDecos: Types.DocumentArray<IPlacedDecosDatabase> }; export type RoomsType = { Name: string; MaxCapacity: number; PlacedDecos: Types.DocumentArray<IPlacedDecosDatabase> };

View File

@ -117,7 +117,6 @@ export type IMissionInventoryUpdateRequest = {
DropTable: string; DropTable: string;
DROP_MOD?: number[]; DROP_MOD?: number[];
DROP_BLUEPRINT?: number[]; DROP_BLUEPRINT?: number[];
DROP_MISC_ITEM?: number[];
}[]; }[];
DeathMarks?: string[]; DeathMarks?: string[];
Nemesis?: number; Nemesis?: number;

View File

@ -39,44 +39,32 @@ export interface IGoal {
_id: IOid; _id: IOid;
Activation: IMongoDate; Activation: IMongoDate;
Expiry: IMongoDate; Expiry: IMongoDate;
Count?: number; Count?: number;
HealthPct?: number;
Icon: string;
Desc: string;
ToolTip?: string;
Faction?: string;
Goal?: number; Goal?: number;
InterimGoals?: number[]; InterimGoals?: number[];
BonusGoal?: number; BonusGoal?: number;
ClanGoal?: number[]; HealthPct?: number;
Success?: number; Success?: number;
Personal?: boolean; Personal?: boolean;
Community?: boolean; Best?: boolean;
Best?: boolean; // Fist one on Event Tab
Bounty?: boolean; // Tactical Alert Bounty?: boolean; // Tactical Alert
Faction?: string;
ClampNodeScores?: boolean; ClampNodeScores?: boolean;
Desc: string;
ToolTip?: string;
Transmission?: string; Transmission?: string;
InstructionalItem?: string; InstructionalItem?: string;
ItemType?: string; Icon: string;
Tag: string; Tag: string;
PrereqGoalTags?: string[]; PrereqGoalTags?: string[];
Node?: string; Node?: string;
VictimNode?: string; VictimNode?: string;
ConcurrentMissionKeyNames?: string[]; ConcurrentMissionKeyNames?: string[];
ConcurrentNodeReqs?: number[]; ConcurrentNodeReqs?: number[];
ConcurrentNodes?: string[]; ConcurrentNodes?: string[];
RegionIdx?: number; RegionIdx?: number;
Regions?: number[]; Regions?: number[];
MissionKeyName?: string; MissionKeyName?: string;
Reward?: IMissionReward; Reward?: IMissionReward;
InterimRewards?: IMissionReward[]; InterimRewards?: IMissionReward[];
BonusReward?: IMissionReward; BonusReward?: IMissionReward;
@ -89,8 +77,6 @@ export interface IGoal {
ScoreVar?: string; ScoreVar?: string;
ScoreMaxTag?: string; ScoreMaxTag?: string;
ScoreLocTag?: string;
NightLevel?: string; NightLevel?: string;
} }

View File

@ -1,290 +0,0 @@
{
"/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureEASY": {
"ScriptParamValue": 1,
"PVPModeAllowed": ["PVPMODE_CAPTURETHEFLAG"],
"SyndicateXP": 500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM": {
"ScriptParamValue": 4,
"PVPModeAllowed": ["PVPMODE_CAPTURETHEFLAG"],
"SyndicateXP": 1500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY": {
"ScriptParamValue": 1,
"PVPModeAllowed": ["PVPMODE_CAPTURETHEFLAG"],
"SyndicateXP": 500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsComboEASY": {
"ScriptParamValue": 1,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsComboMEDIUM": {
"ScriptParamValue": 4,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 1500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsHeadShotsEASY": {
"ScriptParamValue": 1,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsHeadShotsMEDIUM": {
"ScriptParamValue": 4,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 1500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsMeleeEASY": {
"ScriptParamValue": 1,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsMeleeMEDIUM": {
"ScriptParamValue": 4,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 1500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsMeleeHARD": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 3000,
"DuringSingleMatch": true
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsMultiMEDIUM": {
"ScriptParamValue": 4,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 1500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPaybackEASY": {
"ScriptParamValue": 1,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPayback_MEDIUM": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 1500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPowerEASY": {
"ScriptParamValue": 1,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPowerMEDIUM": {
"ScriptParamValue": 4,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 1500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPowerHARD": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 3000,
"DuringSingleMatch": true
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryEASY": {
"ScriptParamValue": 1,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryMEDIUM": {
"ScriptParamValue": 4,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 1500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryHARD": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 3000,
"DuringSingleMatch": true
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryEASY": {
"ScriptParamValue": 1,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryMEDIUM": {
"ScriptParamValue": 4,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 1500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryHARD": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 3000,
"DuringSingleMatch": true
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreak_MEDIUM": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 1500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDominationEASY": {
"ScriptParamValue": 1,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDomination_MEDIUM": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 1500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDominationHARD": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 3000,
"DuringSingleMatch": true
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakStoppedEASY": {
"ScriptParamValue": 1,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakStopped_MEDIUM": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 1500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD": {
"ScriptParamValue": 2,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 3000,
"DuringSingleMatch": true
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsTargetInAirEASY": {
"ScriptParamValue": 1,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsTargetInAirMEDIUM": {
"ScriptParamValue": 4,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 1500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsTargetInAirHARD": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 3000,
"DuringSingleMatch": true
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileSlidingEASY": {
"ScriptParamValue": 1,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileSlidingMEDIUM": {
"ScriptParamValue": 4,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 1500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileSlidingHARD": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 3000,
"DuringSingleMatch": true
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY": {
"ScriptParamValue": 1,
"PVPModeAllowed": ["PVPMODE_CAPTURETHEFLAG", "PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM": {
"ScriptParamValue": 4,
"PVPModeAllowed": ["PVPMODE_CAPTURETHEFLAG", "PVPMODE_DEATHMATCH", "PVPMODE_TEAMDEATHMATCH"],
"SyndicateXP": 1500
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesEASY": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 1000
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesMEDIUM": {
"ScriptParamValue": 10,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 3000
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesHARD": {
"ScriptParamValue": 6,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 6000,
"DuringSingleMatch": true
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballChecksEASY": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 1000
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballChecksMEDIUM": {
"ScriptParamValue": 10,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 3000
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballChecksHARD": {
"ScriptParamValue": 6,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 6000,
"DuringSingleMatch": true
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsEASY": {
"ScriptParamValue": 2,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 1000
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsMEDIUM": {
"ScriptParamValue": 6,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 3000
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsHARD": {
"ScriptParamValue": 4,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 6000,
"DuringSingleMatch": true
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsEASY": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 1000
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsMEDIUM": {
"ScriptParamValue": 6,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 3000
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsHARD": {
"ScriptParamValue": 6,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 6000,
"DuringSingleMatch": true
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesEASY": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 1000
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesMEDIUM": {
"ScriptParamValue": 6,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 3000
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesHARD": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 6000,
"DuringSingleMatch": true
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballStealsEASY": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 1000
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballStealsMEDIUM": {
"ScriptParamValue": 6,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 3000
},
"/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballStealsHARD": {
"ScriptParamValue": 3,
"PVPModeAllowed": ["PVPMODE_SPEEDBALL"],
"SyndicateXP": 6000
}
}

View File

@ -311,6 +311,140 @@
"PrimeVaultAvailabilities": [false, false, false, false, false], "PrimeVaultAvailabilities": [false, false, false, false, false],
"PrimeTokenAvailability": true, "PrimeTokenAvailability": true,
"LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" },
"PVPChallengeInstances": [
{
"_id": { "$oid": "6635562d036ce37f7f98e264" },
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete",
"startDate": { "$date": { "$numberLong": "1714771501460" } },
"endDate": { "$date": { "$numberLong": "2000000000000" } },
"params": [{ "n": "ScriptParamValue", "v": 20 }],
"isGenerated": true,
"PVPMode": "PVPMODE_ALL",
"subChallenges": [],
"Category": "PVPChallengeTypeCategory_WEEKLY"
},
{
"_id": { "$oid": "6635562d036ce37f7f98e263" },
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins",
"startDate": { "$date": { "$numberLong": "1714771501460" } },
"endDate": { "$date": { "$numberLong": "2000000000000" } },
"params": [{ "n": "ScriptParamValue", "v": 6 }],
"isGenerated": true,
"PVPMode": "PVPMODE_ALL",
"subChallenges": [],
"Category": "PVPChallengeTypeCategory_WEEKLY"
},
{
"_id": { "$oid": "6635562d036ce37f7f98e265" },
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY",
"startDate": { "$date": { "$numberLong": "1714771501460" } },
"endDate": { "$date": { "$numberLong": "2000000000000" } },
"params": [{ "n": "ScriptParamValue", "v": 10 }],
"isGenerated": true,
"PVPMode": "PVPMODE_ALL",
"subChallenges": [],
"Category": "PVPChallengeTypeCategory_WEEKLY"
},
{
"_id": { "$oid": "6635562d036ce37f7f98e266" },
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet",
"startDate": { "$date": { "$numberLong": "1714771501460" } },
"endDate": { "$date": { "$numberLong": "2000000000000" } },
"params": [{ "n": "ScriptParamValue", "v": 0 }],
"isGenerated": true,
"PVPMode": "PVPMODE_NONE",
"subChallenges": [{ "$oid": "6635562d036ce37f7f98e263" }, { "$oid": "6635562d036ce37f7f98e264" }, { "$oid": "6635562d036ce37f7f98e265" }],
"Category": "PVPChallengeTypeCategory_WEEKLY_ROOT"
},
{
"_id": { "$oid": "6639ca6967c1192987d75fee" },
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY",
"startDate": { "$date": { "$numberLong": "1715063401824" } },
"endDate": { "$date": { "$numberLong": "2000000000000" } },
"params": [{ "n": "ScriptParamValue", "v": 1 }],
"isGenerated": true,
"PVPMode": "PVPMODE_CAPTURETHEFLAG",
"subChallenges": [],
"Category": "PVPChallengeTypeCategory_DAILY"
},
{
"_id": { "$oid": "6639ca6967c1192987d75fed" },
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM",
"startDate": { "$date": { "$numberLong": "1715063401824" } },
"endDate": { "$date": { "$numberLong": "2000000000000" } },
"params": [{ "n": "ScriptParamValue", "v": 4 }],
"isGenerated": true,
"PVPMode": "PVPMODE_CAPTURETHEFLAG",
"subChallenges": [],
"Category": "PVPChallengeTypeCategory_DAILY"
},
{
"_id": { "$oid": "6639ca6967c1192987d75ff2" },
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY",
"startDate": { "$date": { "$numberLong": "1715063401824" } },
"endDate": { "$date": { "$numberLong": "2000000000000" } },
"params": [{ "n": "ScriptParamValue", "v": 1 }],
"isGenerated": true,
"PVPMode": "PVPMODE_DEATHMATCH",
"subChallenges": [],
"Category": "PVPChallengeTypeCategory_DAILY"
},
{
"_id": { "$oid": "6639ca6967c1192987d75ff1" },
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPayback_MEDIUM",
"startDate": { "$date": { "$numberLong": "1715063401824" } },
"endDate": { "$date": { "$numberLong": "2000000000000" } },
"params": [{ "n": "ScriptParamValue", "v": 3 }],
"isGenerated": true,
"PVPMode": "PVPMODE_DEATHMATCH",
"subChallenges": [],
"Category": "PVPChallengeTypeCategory_DAILY"
},
{
"_id": { "$oid": "6639ca6967c1192987d75fef" },
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDominationEASY",
"startDate": { "$date": { "$numberLong": "1715063401824" } },
"endDate": { "$date": { "$numberLong": "2000000000000" } },
"params": [{ "n": "ScriptParamValue", "v": 1 }],
"isGenerated": true,
"PVPMode": "PVPMODE_TEAMDEATHMATCH",
"subChallenges": [],
"Category": "PVPChallengeTypeCategory_DAILY"
},
{
"_id": { "$oid": "6639ca6967c1192987d75ff0" },
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirHARD",
"startDate": { "$date": { "$numberLong": "1715063401824" } },
"endDate": { "$date": { "$numberLong": "2000000000000" } },
"params": [{ "n": "ScriptParamValue", "v": 3 }],
"isGenerated": true,
"PVPMode": "PVPMODE_TEAMDEATHMATCH",
"subChallenges": [],
"Category": "PVPChallengeTypeCategory_DAILY"
},
{
"_id": { "$oid": "6639ca6967c1192987d75ff3" },
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesMEDIUM",
"startDate": { "$date": { "$numberLong": "1715063401824" } },
"endDate": { "$date": { "$numberLong": "2000000000000" } },
"params": [{ "n": "ScriptParamValue", "v": 10 }],
"isGenerated": true,
"PVPMode": "PVPMODE_SPEEDBALL",
"subChallenges": [],
"Category": "PVPChallengeTypeCategory_DAILY"
},
{
"_id": { "$oid": "6639ca6967c1192987d75ff4" },
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsEASY",
"startDate": { "$date": { "$numberLong": "1715063401824" } },
"endDate": { "$date": { "$numberLong": "2000000000000" } },
"params": [{ "n": "ScriptParamValue", "v": 3 }],
"isGenerated": true,
"PVPMode": "PVPMODE_SPEEDBALL",
"subChallenges": [],
"Category": "PVPChallengeTypeCategory_DAILY"
}
],
"PersistentEnemies": [], "PersistentEnemies": [],
"PVPAlternativeModes": [], "PVPAlternativeModes": [],
"PVPActiveTournaments": [], "PVPActiveTournaments": [],

View File

@ -1040,42 +1040,6 @@
</select> </select>
</div> </div>
</div> </div>
<div class="form-group mt-2 d-flex gap-2">
<div class="flex-fill">
<label class="form-label" for="worldState.bellyOfTheBeast" data-loc="worldState_bellyOfTheBeast"></label>
<select class="form-control" id="worldState.bellyOfTheBeast" data-default="false">
<option value="true" data-loc="enabled"></option>
<option value="false" data-loc="disabled"></option>
</select>
</div>
<div class="flex-fill">
<form class="form-group" onsubmit="doSaveConfigInt('worldState.bellyOfTheBeastProgressOverride'); return false;">
<label class="form-label" for="worldState.bellyOfTheBeastProgressOverride" data-loc="worldState_bellyOfTheBeastProgressOverride"></label>
<div class="input-group">
<input id="worldState.bellyOfTheBeastProgressOverride" class="form-control" type="number" min="0" max="100" data-default="0" />
<button class="btn btn-secondary" type="submit" data-loc="cheats_save"></button>
</div>
</form>
</div>
</div>
<div class="form-group mt-2 d-flex gap-2">
<div class="flex-fill">
<label class="form-label" for="worldState.eightClaw" data-loc="worldState_eightClaw"></label>
<select class="form-control" id="worldState.eightClaw" data-default="false">
<option value="true" data-loc="enabled"></option>
<option value="false" data-loc="disabled"></option>
</select>
</div>
<div class="flex-fill">
<form class="form-group" onsubmit="doSaveConfigInt('worldState.eightClawProgressOverride'); return false;">
<label class="form-label" for="worldState.eightClawProgressOverride" data-loc="worldState_eightClawProgressOverride"></label>
<div class="input-group">
<input id="worldState.eightClawProgressOverride" class="form-control" type="number" min="0" max="100" data-default="0" />
<button class="btn btn-secondary" type="submit" data-loc="cheats_save"></button>
</div>
</form>
</div>
</div>
<div class="form-group mt-2"> <div class="form-group mt-2">
<label class="form-label" for="worldState.eidolonOverride" data-loc="worldState_eidolonOverride"></label> <label class="form-label" for="worldState.eidolonOverride" data-loc="worldState_eidolonOverride"></label>
<select class="form-control" id="worldState.eidolonOverride" data-default=""> <select class="form-control" id="worldState.eidolonOverride" data-default="">
@ -1157,10 +1121,7 @@
</div> </div>
</div> </div>
<div data-route="/webui/import" data-title="Import | OpenWF WebUI"> <div data-route="/webui/import" data-title="Import | OpenWF WebUI">
<p> <p data-loc="import_importNote"></p>
<span data-loc="import_importNote"></span>
<span data-loc="import_importNote2"></span>
</p>
<textarea class="form-control" id="import-inventory" style="height: calc(100vh - 300px)"></textarea> <textarea class="form-control" id="import-inventory" style="height: calc(100vh - 300px)"></textarea>
<button class="btn btn-primary mt-3" onclick="doImport();" data-loc="import_submit"></button> <button class="btn btn-primary mt-3" onclick="doImport();" data-loc="import_submit"></button>
<p class="mt-3 mb-1" data-loc="import_samples"></p> <p class="mt-3 mb-1" data-loc="import_samples"></p>

View File

@ -257,10 +257,6 @@ dict = {
worldState_hallowedNightmaresRewards: `[UNTRANSLATED] Hallowed Nightmares Rewards`, worldState_hallowedNightmaresRewards: `[UNTRANSLATED] Hallowed Nightmares Rewards`,
worldState_proxyRebellion: `Proxy-Rebellion`, worldState_proxyRebellion: `Proxy-Rebellion`,
worldState_proxyRebellionRewards: `[UNTRANSLATED] Proxy Rebellion Rewards`, worldState_proxyRebellionRewards: `[UNTRANSLATED] Proxy Rebellion Rewards`,
worldState_bellyOfTheBeast: `Das Innere der Bestie`,
worldState_bellyOfTheBeastProgressOverride: `[UNTRANSLATED] Belly of the Beast Progress`,
worldState_eightClaw: `Acht Klauen`,
worldState_eightClawProgressOverride: `[UNTRANSLATED] Eight Claw Progress`,
worldState_from_year: `[UNTRANSLATED] from |YEAR|`, worldState_from_year: `[UNTRANSLATED] from |YEAR|`,
worldState_pre_year: `[UNTRANSLATED] pre |YEAR|`, worldState_pre_year: `[UNTRANSLATED] pre |YEAR|`,
worldState_incompatibleWith: `[UNTRANSLATED] Incompatible with:`, worldState_incompatibleWith: `[UNTRANSLATED] Incompatible with:`,
@ -307,8 +303,7 @@ dict = {
worldState_varziaFullyStocked: `Varzia hat volles Inventar`, worldState_varziaFullyStocked: `Varzia hat volles Inventar`,
worldState_varziaOverride: `Varzia-Angebotsüberschreibung`, worldState_varziaOverride: `Varzia-Angebotsüberschreibung`,
import_importNote: `[UNTRANSLATED] You can provide a full or partial <code>inventory.php</code> or <code>getShip.php</code> response (client representation) here.`, import_importNote: `Du kannst hier eine vollständige oder teilweise Inventarantwort (Client-Darstellung) einfügen. Alle Felder, die vom Importer unterstützt werden, <b>werden in deinem Account überschrieben</b>.`,
import_importNote2: `Alle Felder, die vom Importer unterstützt werden, <b>werden in deinem Account überschrieben</b>.`,
import_submit: `Absenden`, import_submit: `Absenden`,
import_samples: `Beispiele:`, import_samples: `Beispiele:`,
import_samples_maxFocus: `Alle Fokus-Schulen maximiert`, import_samples_maxFocus: `Alle Fokus-Schulen maximiert`,

View File

@ -256,10 +256,6 @@ dict = {
worldState_hallowedNightmaresRewards: `Hallowed Nightmares Rewards`, worldState_hallowedNightmaresRewards: `Hallowed Nightmares Rewards`,
worldState_proxyRebellion: `Proxy Rebellion`, worldState_proxyRebellion: `Proxy Rebellion`,
worldState_proxyRebellionRewards: `Proxy Rebellion Rewards`, worldState_proxyRebellionRewards: `Proxy Rebellion Rewards`,
worldState_bellyOfTheBeast: `Belly of the Beast`,
worldState_bellyOfTheBeastProgressOverride: `Belly of the Beast Progress`,
worldState_eightClaw: `Eight Claw`,
worldState_eightClawProgressOverride: `Eight Claw Progress`,
worldState_from_year: `from |YEAR|`, worldState_from_year: `from |YEAR|`,
worldState_pre_year: `pre |YEAR|`, worldState_pre_year: `pre |YEAR|`,
worldState_incompatibleWith: `Incompatible with:`, worldState_incompatibleWith: `Incompatible with:`,
@ -306,8 +302,7 @@ dict = {
worldState_varziaFullyStocked: `Varzia Fully Stocked`, worldState_varziaFullyStocked: `Varzia Fully Stocked`,
worldState_varziaOverride: `Varzia Rotation Override`, worldState_varziaOverride: `Varzia Rotation Override`,
import_importNote: `You can provide a full or partial <code>inventory.php</code> or <code>getShip.php</code> response (client representation) here.`, import_importNote: `You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer <b>will be overwritten</b> in your account.`,
import_importNote2: `All fields that are supported by the importer <b>will be overwritten</b> in your account.`,
import_submit: `Submit`, import_submit: `Submit`,
import_samples: `Samples:`, import_samples: `Samples:`,
import_samples_maxFocus: `All Focus Schools Maxed Out`, import_samples_maxFocus: `All Focus Schools Maxed Out`,

View File

@ -257,10 +257,6 @@ dict = {
worldState_hallowedNightmaresRewards: `Recompensas de Pesadillas Sagradas`, worldState_hallowedNightmaresRewards: `Recompensas de Pesadillas Sagradas`,
worldState_proxyRebellion: `Rebelión Proxy`, worldState_proxyRebellion: `Rebelión Proxy`,
worldState_proxyRebellionRewards: `Recompensas de Rebelión Proxy`, worldState_proxyRebellionRewards: `Recompensas de Rebelión Proxy`,
worldState_bellyOfTheBeast: `Vientre de la Bestia`,
worldState_bellyOfTheBeastProgressOverride: `[UNTRANSLATED] Belly of the Beast Progress`,
worldState_eightClaw: `Octava Garra`,
worldState_eightClawProgressOverride: `[UNTRANSLATED] Eight Claw Progress`,
worldState_from_year: `de |YEAR|`, worldState_from_year: `de |YEAR|`,
worldState_pre_year: `antes de |YEAR|`, worldState_pre_year: `antes de |YEAR|`,
worldState_incompatibleWith: `No compatible con:`, worldState_incompatibleWith: `No compatible con:`,
@ -307,8 +303,7 @@ dict = {
worldState_varziaFullyStocked: `Varzia con stock completo`, worldState_varziaFullyStocked: `Varzia con stock completo`,
worldState_varziaOverride: `Cambio en rotación de Varzia`, worldState_varziaOverride: `Cambio en rotación 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_importNote: `Puedes proporcionar una respuesta de inventario completa o parcial (representación del cliente) aquí. Todos los campos compatibles con el importador <b>serán sobrescritos</b> en tu cuenta.`,
import_importNote2: `Todos los campos compatibles con el importador <b>serán sobrescritos</b> en tu cuenta.`,
import_submit: `Enviar`, import_submit: `Enviar`,
import_samples: `Muestras:`, import_samples: `Muestras:`,
import_samples_maxFocus: `Todas las escuelas de enfoque al máximo`, import_samples_maxFocus: `Todas las escuelas de enfoque al máximo`,

View File

@ -257,10 +257,6 @@ dict = {
worldState_hallowedNightmaresRewards: `[UNTRANSLATED] Hallowed Nightmares Rewards`, worldState_hallowedNightmaresRewards: `[UNTRANSLATED] Hallowed Nightmares Rewards`,
worldState_proxyRebellion: `Rébellion Proxy`, worldState_proxyRebellion: `Rébellion Proxy`,
worldState_proxyRebellionRewards: `[UNTRANSLATED] Proxy Rebellion Rewards`, worldState_proxyRebellionRewards: `[UNTRANSLATED] Proxy Rebellion Rewards`,
worldState_bellyOfTheBeast: `Ventre de la Bête`,
worldState_bellyOfTheBeastProgressOverride: `[UNTRANSLATED] Belly of the Beast Progress`,
worldState_eightClaw: `Huitième Griffe`,
worldState_eightClawProgressOverride: `[UNTRANSLATED] Eight Claw Progress`,
worldState_from_year: `[UNTRANSLATED] from |YEAR|`, worldState_from_year: `[UNTRANSLATED] from |YEAR|`,
worldState_pre_year: `[UNTRANSLATED] pre |YEAR|`, worldState_pre_year: `[UNTRANSLATED] pre |YEAR|`,
worldState_incompatibleWith: `[UNTRANSLATED] Incompatible with:`, worldState_incompatibleWith: `[UNTRANSLATED] Incompatible with:`,
@ -307,8 +303,7 @@ dict = {
worldState_varziaFullyStocked: `Stock de Varzia au max`, worldState_varziaFullyStocked: `Stock de Varzia au max`,
worldState_varziaOverride: `Rotation de Varzia`, 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_importNote: `Import manuel. Toutes les modifcations supportées par l'inventaire <b>écraseront celles présentes dans la base de données</b>.`,
import_importNote2: `[UNTRANSLATED] All fields that are supported by the importer <b>will be overwritten</b> in your account.`,
import_submit: `Soumettre`, import_submit: `Soumettre`,
import_samples: `Échantillons :`, import_samples: `Échantillons :`,
import_samples_maxFocus: `Toutes les écoles de focus au rang max`, import_samples_maxFocus: `Toutes les écoles de focus au rang max`,

View File

@ -25,12 +25,12 @@ dict = {
code_traumaticPeculiar: `Травмирующая Странность`, code_traumaticPeculiar: `Травмирующая Странность`,
code_starter: `|MOD| (Повреждённый)`, code_starter: `|MOD| (Повреждённый)`,
code_badItem: `(Самозванец)`, code_badItem: `(Самозванец)`,
code_maxRank: `Макс. ранг`, code_maxRank: `Максимальный ранг`,
code_rename: `Переименовать`, code_rename: `Переименовать`,
code_renamePrompt: `Введите новое имя:`, code_renamePrompt: `Введите новое имя:`,
code_remove: `Удалить`, code_remove: `Удалить`,
code_addItemsConfirm: `Вы уверены, что хотите добавить |COUNT| предметов на ваш аккаунт?`, code_addItemsConfirm: `Вы уверены, что хотите добавить |COUNT| предметов на ваш аккаунт?`,
code_succRankUp: `Ранг успешно повышен.`, code_succRankUp: `Ранг успешно повышен`,
code_noEquipmentToRankUp: `Нет снаряжения для повышения ранга.`, code_noEquipmentToRankUp: `Нет снаряжения для повышения ранга.`,
code_succAdded: `Успешно добавлено.`, code_succAdded: `Успешно добавлено.`,
code_succRemoved: `Успешно удалено.`, code_succRemoved: `Успешно удалено.`,
@ -39,11 +39,11 @@ dict = {
code_rerollsNumber: `Количество рероллов`, code_rerollsNumber: `Количество рероллов`,
code_viewStats: `Просмотр характеристики`, code_viewStats: `Просмотр характеристики`,
code_rank: `Ранг`, code_rank: `Ранг`,
code_rankUp: `Повысить ранг`, code_rankUp: `Повысить Ранг`,
code_rankDown: `Понизить ранг`, code_rankDown: `Понизить Ранг`,
code_count: `Количество`, code_count: `Количество`,
code_focusAllUnlocked: `Все школы Фокуса уже разблокированы.`, code_focusAllUnlocked: `Все школы фокуса уже разблокированы.`,
code_focusUnlocked: `Разблокировано |COUNT| новых школ Фокуса! Для отображения изменений в игре потребуется обновление инвентаря. Посещение навигации — самый простой способ этого добиться.`, code_focusUnlocked: `Разблокировано |COUNT| новых школ фокуса! Для отображения изменений в игре потребуется обновление инвентаря. Посещение навигации — самый простой способ этого добиться.`,
code_addModsConfirm: `Вы уверены, что хотите добавить |COUNT| модов на ваш аккаунт?`, code_addModsConfirm: `Вы уверены, что хотите добавить |COUNT| модов на ваш аккаунт?`,
code_succImport: `Успешно импортировано.`, code_succImport: `Успешно импортировано.`,
code_succRelog: `Готово. Обратите внимание, что вам нужно будет перезайти, чтобы увидеть изменения в игре.`, code_succRelog: `Готово. Обратите внимание, что вам нужно будет перезайти, чтобы увидеть изменения в игре.`,
@ -83,7 +83,7 @@ dict = {
inventory_pistols: `Вторичное оружие`, inventory_pistols: `Вторичное оружие`,
inventory_melee: `Оружие ближнего боя`, inventory_melee: `Оружие ближнего боя`,
inventory_spaceSuits: `Арчвинги`, inventory_spaceSuits: `Арчвинги`,
inventory_spaceGuns: `Оружие Арчвинга`, inventory_spaceGuns: `Оружие арчвинга`,
inventory_spaceMelee: `Оружие ближнего боя арчвинга`, inventory_spaceMelee: `Оружие ближнего боя арчвинга`,
inventory_mechSuits: `Некрамехи`, inventory_mechSuits: `Некрамехи`,
inventory_sentinels: `Стражи`, inventory_sentinels: `Стражи`,
@ -94,21 +94,21 @@ dict = {
inventory_kubrowPets: `Звери`, inventory_kubrowPets: `Звери`,
inventory_evolutionProgress: `Прогресс эволюции Инкарнонов`, inventory_evolutionProgress: `Прогресс эволюции Инкарнонов`,
inventory_Boosters: `Бустеры`, inventory_Boosters: `Бустеры`,
inventory_bulkAddSuits: `Добавить отсутствующие Варфреймы`, inventory_bulkAddSuits: `Добавить отсутствующие варфреймы`,
inventory_bulkAddWeapons: `Добавить отсутствующее оружие`, inventory_bulkAddWeapons: `Добавить отсутствующее оружие`,
inventory_bulkAddSpaceSuits: `Добавить отсутствующие Арчвинги`, inventory_bulkAddSpaceSuits: `Добавить отсутствующие арчвинги`,
inventory_bulkAddSpaceWeapons: `Добавить отсутствующее оружие Арчвингов`, inventory_bulkAddSpaceWeapons: `Добавить отсутствующее оружие арчвингов`,
inventory_bulkAddSentinels: `Добавить отсутствующих Стражей`, inventory_bulkAddSentinels: `Добавить отсутствующих стражей`,
inventory_bulkAddSentinelWeapons: `Добавить отсутствующее оружие Стражей`, inventory_bulkAddSentinelWeapons: `Добавить отсутствующее оружие стражей`,
inventory_bulkAddEvolutionProgress: `Добавить отсутствующий прогресс эволюции Инкарнонов`, inventory_bulkAddEvolutionProgress: `Добавить отсутствующий прогресс эволюции Инкарнонов`,
inventory_bulkRankUpSuits: `Макс. ранг всех Варфреймов`, inventory_bulkRankUpSuits: `Максимальный ранг всех варфреймов`,
inventory_bulkRankUpWeapons: `Макс. ранг всего оружия`, inventory_bulkRankUpWeapons: `Максимальный ранг всего оружия`,
inventory_bulkRankUpSpaceSuits: `Макс. ранг всех Арчвингов`, inventory_bulkRankUpSpaceSuits: `Максимальный ранг всех арчвингов`,
inventory_bulkRankUpSpaceWeapons: `Макс. ранг всего оружия Арчвингов`, inventory_bulkRankUpSpaceWeapons: `Максимальный ранг всего оружия арчвингов`,
inventory_bulkRankUpSentinels: `Макс. ранг всех Стражей`, inventory_bulkRankUpSentinels: `Максимальный ранг всех стражей`,
inventory_bulkRankUpSentinelWeapons: `Макс. ранг всего оружия Стражей`, inventory_bulkRankUpSentinelWeapons: `Максимальный ранг всего оружия стражей`,
inventory_bulkRankUpEvolutionProgress: `Макс. ранг всех эволюций Инкарнонов`, inventory_bulkRankUpEvolutionProgress: `Максимальный ранг всех эволюций Инкарнонов`,
inventory_maxPlexus: `Макс. ранг Плексуса`, inventory_maxPlexus: `Максимальный ранг Плексуса`,
quests_list: `Квесты`, quests_list: `Квесты`,
quests_completeAll: `Завершить все квесты`, quests_completeAll: `Завершить все квесты`,
@ -121,53 +121,53 @@ dict = {
currency_PrimeTokens: `Королевские Айя`, currency_PrimeTokens: `Королевские Айя`,
currency_owned: `У тебя |COUNT|.`, currency_owned: `У тебя |COUNT|.`,
detailedView_archonShardsLabel: `Ячейки осколков Архонта`, detailedView_archonShardsLabel: `Ячейки осколков архонта`,
detailedView_archonShardsDescription: `Вы можете использовать эти неограниченные ячейки для установки множества улучшений.`, detailedView_archonShardsDescription: `Вы можете использовать эти неограниченные ячейки для установки множества улучшений.`,
detailedView_archonShardsDescription2: `Обратите внимание: каждый осколок Архонта применяется с задержкой при загрузке.`, detailedView_archonShardsDescription2: `Обратите внимание: каждый осколок архонта применяется с задержкой при загрузке.`,
detailedView_valenceBonusLabel: `Бонус Валентности`, detailedView_valenceBonusLabel: `Бонус Валентности`,
detailedView_valenceBonusDescription: `Вы можете установить или убрать бонус Валентности с вашего оружия.`, detailedView_valenceBonusDescription: `Вы можете установить или убрать бонус валентности с вашего оружия.`,
detailedView_modularPartsLabel: `Изменить модульные части`, detailedView_modularPartsLabel: `Изменить Модульные Части`,
detailedView_suitInvigorationLabel: `Воодушевление Варфрейма`, detailedView_suitInvigorationLabel: `Воодушевление Варфрейма`,
detailedView_loadoutLabel: `Конфигурации`, detailedView_loadoutLabel: `Конфигурации`,
invigorations_offensive_AbilityStrength: `+200% к силе способностей.`, invigorations_offensive_AbilityStrength: `+200% Сила Способностей`,
invigorations_offensive_AbilityRange: `+100% к зоне поражения способностей.`, invigorations_offensive_AbilityRange: `+100% Радиус Способностей`,
invigorations_offensive_AbilityDuration: `+100% к длительности способностей.`, invigorations_offensive_AbilityDuration: `+100% Длительность Способностей`,
invigorations_offensive_MeleeDamage: `+250% к урону оружия ближнего боя.`, invigorations_offensive_MeleeDamage: `+250% Урон Ближнего Боя`,
invigorations_offensive_PrimaryDamage: `+250% к урону основного оружия.`, invigorations_offensive_PrimaryDamage: `+250% Урон Основного Оружия`,
invigorations_offensive_SecondaryDamage: `+250% к урону вторичного оружия.`, invigorations_offensive_SecondaryDamage: `+250% Урон Вторичного Оружия`,
invigorations_offensive_PrimaryCritChance: `+200% к шансу крит. урона для основного оружия.`, invigorations_offensive_PrimaryCritChance: `+200% Шанс Критического Урона Основного Оружия`,
invigorations_offensive_SecondaryCritChance: `+200% к шансу крит. урона для вторичного оружия.`, invigorations_offensive_SecondaryCritChance: `+200% Шанс Критического Урона Вторичного Оружия`,
invigorations_offensive_MeleeCritChance: `+200% у шансу крит. урона для оружия ближнего боя.`, invigorations_offensive_MeleeCritChance: `+200% Шанс Критического Урона Ближнего Боя`,
invigorations_utility_AbilityEfficiency: `+75% к энергоэффективности способностей.`, invigorations_utility_AbilityEfficiency: `+75% Энергоэффективность Способностей`,
invigorations_utility_SprintSpeed: `+75% к скорости бега.`, invigorations_utility_SprintSpeed: `+75% Скорость Бега`,
invigorations_utility_ParkourVelocity: `+75% к скорости паркура.`, invigorations_utility_ParkourVelocity: `+75% Скорость Паркура`,
invigorations_utility_HealthMax: `+1000 к здоровью.`, invigorations_utility_HealthMax: `+1000 Здоровья`,
invigorations_utility_EnergyMax: `+200% к макс. запасу энергии.`, invigorations_utility_EnergyMax: `+200% Максимум Энергии`,
invigorations_utility_StatusImmune: `Иммунитет к статусным эффектам.`, invigorations_utility_StatusImmune: `Иммунитет к Эффектам Статуса`,
invigorations_utility_ReloadSpeed: `+75% к скорости перезарядки.`, invigorations_utility_ReloadSpeed: `+75% Скорость Перезарядки`,
invigorations_utility_HealthRegen: `+25 к регенерации здоровья в секунду.`, invigorations_utility_HealthRegen: `+25 Здоровья в секунду`,
invigorations_utility_ArmorMax: `+1000 к брони.`, invigorations_utility_ArmorMax: `+1000 Брони`,
invigorations_utility_Jumps: `+5 сбросов прыжка.`, invigorations_utility_Jumps: `+5 Сбросов Прыжков`,
invigorations_utility_EnergyRegen: `+2 к регенерации энергии в секунду.`, invigorations_utility_EnergyRegen: `+2 Энергии в секунду`,
invigorations_offensiveLabel: `Атакующее улучшение`, invigorations_offensiveLabel: `Атакующее Улучшение`,
invigorations_defensiveLabel: `Вспомогательное улучшение`, invigorations_defensiveLabel: `Вспомогательное Улучшение`,
invigorations_expiryLabel: `Срок действия Воодушевления (необязательно)`, invigorations_expiryLabel: `Срок действия Воодушевления (необязательно)`,
abilityOverride_label: `Переопределение способности`, abilityOverride_label: `Переопределение способности`,
abilityOverride_onSlot: `в ячейке`, abilityOverride_onSlot: `в ячейке`,
mods_addRiven: `Добавить мод Разлома`, mods_addRiven: `Добавить Мод Разлома`,
mods_fingerprint: `Отпечаток`, mods_fingerprint: `Отпечаток`,
mods_fingerprintHelp: `Нужна помощь с отпечатком?`, mods_fingerprintHelp: `Нужна помощь с отпечатком?`,
mods_rivens: `Моды Разлома`, mods_rivens: `Моды Разлома`,
mods_mods: `Моды`, mods_mods: `Моды`,
mods_addMax: `Добавить макс. улучшенный`, mods_addMax: `Добавить максимально улучшенный`,
mods_addMissingUnrankedMods: `Добавить недостающие моды без ранга`, mods_addMissingUnrankedMods: `Добавить недостающие моды без ранга`,
mods_removeUnranked: `Удалить моды без ранга`, mods_removeUnranked: `Удалить моды без ранга`,
mods_addMissingMaxRankMods: `Добавить недостающие моды макс. ранга`, mods_addMissingMaxRankMods: `Добавить недостающие моды максимального ранга`,
cheats_administratorRequirement: `Вы должны быть администратором для использования этой функции. Чтобы стать администратором, добавьте <code>\"|DISPLAYNAME|\"</code> в <code>administratorNames</code> в config.json.`, cheats_administratorRequirement: `Вы должны быть администратором для использования этой функции. Чтобы стать администратором, добавьте <code>\"|DISPLAYNAME|\"</code> в <code>administratorNames</code> в config.json.`,
cheats_server: `Сервер`, cheats_server: `Сервер`,
cheats_skipTutorial: `Пропустить обучение`, cheats_skipTutorial: `Пропустить обучение`,
@ -175,14 +175,14 @@ dict = {
cheats_unlockAllScans: `Разблокировать все сканирования`, cheats_unlockAllScans: `Разблокировать все сканирования`,
cheats_unlockAllMissions: `Разблокировать все миссии`, cheats_unlockAllMissions: `Разблокировать все миссии`,
cheats_unlockAllMissions_ok: `Успех. Пожалуйста, обратите внимание, что вам нужно будет войти в Додзё/Реле или перезайти, чтобы клиент обновил звездную карту.`, cheats_unlockAllMissions_ok: `Успех. Пожалуйста, обратите внимание, что вам нужно будет войти в Додзё/Реле или перезайти, чтобы клиент обновил звездную карту.`,
cheats_infiniteCredits: `Бесконечные Кредиты`, cheats_infiniteCredits: `Бесконечные кредиты`,
cheats_infinitePlatinum: `Бесконечная Платина`, cheats_infinitePlatinum: `Бесконечная платина`,
cheats_infiniteEndo: `Бесконечное Эндо`, cheats_infiniteEndo: `Бесконечное эндо`,
cheats_infiniteRegalAya: `Бесконечная Королевская Айя`, cheats_infiniteRegalAya: `Бесконечная Королевская Айя`,
cheats_infiniteHelminthMaterials: `Бесконечные секреции Гельминта`, cheats_infiniteHelminthMaterials: `Бесконечные Секреции Гельминта`,
cheats_claimingBlueprintRefundsIngredients: `Возврат ингредиентов чертежей`, cheats_claimingBlueprintRefundsIngredients: `Возврат ингредиентов чертежей`,
cheats_dontSubtractPurchaseCreditCost: `Не вычитать стоимость Кредитов при покупке`, cheats_dontSubtractPurchaseCreditCost: `Не вычитать стоимость кредитов при покупке`,
cheats_dontSubtractPurchasePlatinumCost: `Не вычитать стоимость Платины при покупке`, cheats_dontSubtractPurchasePlatinumCost: `Не вычитать стоимость платины при покупке`,
cheats_dontSubtractPurchaseItemCost: `Не вычитать стоимость предметов при покупке`, cheats_dontSubtractPurchaseItemCost: `Не вычитать стоимость предметов при покупке`,
cheats_dontSubtractPurchaseStandingCost: `Не вычитать стоимость репутации при покупке`, cheats_dontSubtractPurchaseStandingCost: `Не вычитать стоимость репутации при покупке`,
cheats_dontSubtractVoidTraces: `Не вычитать количество Отголосков Бездны`, cheats_dontSubtractVoidTraces: `Не вычитать количество Отголосков Бездны`,
@ -196,10 +196,10 @@ dict = {
cheats_universalPolarityEverywhere: `Универсальная полярность везде`, cheats_universalPolarityEverywhere: `Универсальная полярность везде`,
cheats_unlockDoubleCapacityPotatoesEverywhere: `Реакторы/Катализаторы орокин везде`, cheats_unlockDoubleCapacityPotatoesEverywhere: `Реакторы/Катализаторы орокин везде`,
cheats_unlockExilusEverywhere: `Адаптеры Эксилус везде`, cheats_unlockExilusEverywhere: `Адаптеры Эксилус везде`,
cheats_unlockArcanesEverywhere: `Адаптеры для Мистификаторов везде`, cheats_unlockArcanesEverywhere: `Адаптеры для мистификаторов везде`,
cheats_noDailyStandingLimits: `Без ежедневных лимитов репутации`, cheats_noDailyStandingLimits: `Без ежедневных лимитов репутации`,
cheats_noDailyFocusLimit: `Без ежедневных лимитов Фокуса`, cheats_noDailyFocusLimit: `Без ежедневных лимитов фокуса`,
cheats_noArgonCrystalDecay: `Без распада Аргоновых кристаллов`, cheats_noArgonCrystalDecay: `Без распада аргоновых кристаллов`,
cheats_noMasteryRankUpCooldown: `Повышение ранга мастерства без кулдауна`, cheats_noMasteryRankUpCooldown: `Повышение ранга мастерства без кулдауна`,
cheats_noVendorPurchaseLimits: `Отсутствие лимитов на покупки у торговцев`, cheats_noVendorPurchaseLimits: `Отсутствие лимитов на покупки у торговцев`,
cheats_noDeathMarks: `Без меток смерти`, cheats_noDeathMarks: `Без меток смерти`,
@ -209,28 +209,28 @@ dict = {
cheats_baroFullyStocked: `Баро полностью укомплектован`, cheats_baroFullyStocked: `Баро полностью укомплектован`,
cheats_syndicateMissionsRepeatable: `Повторять миссии синдиката`, cheats_syndicateMissionsRepeatable: `Повторять миссии синдиката`,
cheats_unlockAllProfitTakerStages: `Разблокировать все этапы Сферы извлечения прибыли`, cheats_unlockAllProfitTakerStages: `Разблокировать все этапы Сферы извлечения прибыли`,
cheats_instantFinishRivenChallenge: `Мгновенное завершение испытания мода Разлома`, cheats_instantFinishRivenChallenge: `Мгновенное завершение испытания Мода разлома`,
cheats_instantResourceExtractorDrones: `Мгновенно добывающие Дроны-сборщики`, cheats_instantResourceExtractorDrones: `Мгновенно добывающие дроны-сборщики`,
cheats_noResourceExtractorDronesDamage: `Без урона по Дронам-сборщикам`, cheats_noResourceExtractorDronesDamage: `Без урона по дронам-сборщикам`,
cheats_skipClanKeyCrafting: `Пропустить создание кланового ключа`, cheats_skipClanKeyCrafting: `Пропустить крафт кланового ключа`,
cheats_noDojoRoomBuildStage: `Мгновенное строительство комнат Додзё`, cheats_noDojoRoomBuildStage: `Мгновенное строительство Комнат Додзё`,
cheats_noDojoDecoBuildStage: `Мгновенное строительство декораций Додзё`, cheats_noDojoDecoBuildStage: `Мгновенное строительство Декораций Додзё`,
cheats_fastDojoRoomDestruction: `Мгновенные уничтожение комнат Додзё`, cheats_fastDojoRoomDestruction: `Мгновенные Уничтожение Комнат Додзё`,
cheats_noDojoResearchCosts: `Бесплатные исследование Додзё`, cheats_noDojoResearchCosts: `Бесплатные Исследование Додзё`,
cheats_noDojoResearchTime: `Мгновенные исследование Додзё`, cheats_noDojoResearchTime: `Мгновенные Исследование Додзё`,
cheats_fastClanAscension: `Мгновенное вознесение клана`, cheats_fastClanAscension: `Мгновенное Вознесение Клана`,
cheats_missionsCanGiveAllRelics: `Миссии могут давать все реликвии`, cheats_missionsCanGiveAllRelics: `Миссии могут давать все реликвии`,
cheats_exceptionalRelicsAlwaysGiveBronzeReward: `Необычные реликвии всегда дают бронзовую награду`, cheats_exceptionalRelicsAlwaysGiveBronzeReward: `Необычные реликвии всегда дают бронзовую награду`,
cheats_flawlessRelicsAlwaysGiveSilverReward: `Бесподобные реликвии всегда дают серебряную награду`, cheats_flawlessRelicsAlwaysGiveSilverReward: `Бесподобные реликвии всегда дают серебряную награду`,
cheats_radiantRelicsAlwaysGiveGoldReward: `Сияющие реликвии всегда дают золотую награду`, cheats_radiantRelicsAlwaysGiveGoldReward: `Сияющие реликвии всегда дают золотую награду`,
cheats_unlockAllSimarisResearchEntries: `Разблокировать все записи исследований Симэриса`, cheats_unlockAllSimarisResearchEntries: `Разблокировать все записи исследований Симэриса`,
cheats_disableDailyTribute: `Отключить ежедневные награды`, cheats_disableDailyTribute: `Отключить Ежедневные награды`,
cheats_spoofMasteryRank: `Поддельный ранг мастерства (-1 для отключения)`, cheats_spoofMasteryRank: `Поддельный ранг мастерства (-1 для отключения)`,
cheats_relicRewardItemCountMultiplier: `Мультипликатор количества предметов награды реликвии`, cheats_relicRewardItemCountMultiplier: `Мультипликатор количества предметов награды реликвии`,
cheats_nightwaveStandingMultiplier: `Мультипликатор репутации Ночной волны`, cheats_nightwaveStandingMultiplier: `Мультипликатор репутации Ночной волны`,
cheats_save: `Сохранить`, cheats_save: `Сохранить`,
cheats_account: `Аккаунт`, cheats_account: `Аккаунт`,
cheats_unlockAllFocusSchools: `Разблокировать все школы Фокуса`, cheats_unlockAllFocusSchools: `Разблокировать все школы фокуса`,
cheats_helminthUnlockAll: `Полностью улучшить Гельминта`, cheats_helminthUnlockAll: `Полностью улучшить Гельминта`,
cheats_addMissingSubsumedAbilities: `Добавить отсутствующие поглощённые способности`, cheats_addMissingSubsumedAbilities: `Добавить отсутствующие поглощённые способности`,
cheats_intrinsicsUnlockAll: `Полностью улучшить Модуляры`, cheats_intrinsicsUnlockAll: `Полностью улучшить Модуляры`,
@ -239,9 +239,9 @@ dict = {
cheats_markAllAsRead: `Пометить все входящие как прочитанные`, cheats_markAllAsRead: `Пометить все входящие как прочитанные`,
worldState: `Состояние мира`, worldState: `Состояние мира`,
worldState_creditBoost: `Глобальный бустер Кредитов`, worldState_creditBoost: `Глобальный бустер кредитов`,
worldState_affinityBoost: `Глобальный бустер Синтеза`, worldState_affinityBoost: `Глобальный бустер синтеза`,
worldState_resourceBoost: `Глобальный бустер Ресурсов`, worldState_resourceBoost: `Глобальный бустер ресурсов`,
worldState_tennoLiveRelay: `Реле TennoLive`, worldState_tennoLiveRelay: `Реле TennoLive`,
worldState_baroTennoConRelay: `Реле Баро TennoCon`, worldState_baroTennoConRelay: `Реле Баро TennoCon`,
worldState_starDays: `Звёздные дни`, worldState_starDays: `Звёздные дни`,
@ -253,14 +253,10 @@ dict = {
worldState_wolfHunt: `Волчья Охота (2025)`, worldState_wolfHunt: `Волчья Охота (2025)`,
worldState_longShadow: `Длинная Тень`, worldState_longShadow: `Длинная Тень`,
worldState_hallowedFlame: `Священное пламя`, worldState_hallowedFlame: `Священное пламя`,
worldState_hallowedNightmares: `Священные кошмары`, worldState_hallowedNightmares: `Священные Кошмары`,
worldState_hallowedNightmaresRewards: `Награды Священных кошмаров`, worldState_hallowedNightmaresRewards: `Награды Священных Кошмаров`,
worldState_proxyRebellion: `Восстание роботов`, worldState_proxyRebellion: `Восстание Роботов`,
worldState_proxyRebellionRewards: `Награды Восстания роботов`, worldState_proxyRebellionRewards: `Награды Восстания Роботов`,
worldState_bellyOfTheBeast: `Чрево зверя`,
worldState_bellyOfTheBeastProgressOverride: `Прогресс Чрева зверя`,
worldState_eightClaw: `Восемь когтей`,
worldState_eightClawProgressOverride: `Прогресс Восьми когтей`,
worldState_from_year: `из |YEAR|`, worldState_from_year: `из |YEAR|`,
worldState_pre_year: `до |YEAR|`, worldState_pre_year: `до |YEAR|`,
worldState_incompatibleWith: `Несовместимо с:`, worldState_incompatibleWith: `Несовместимо с:`,
@ -303,74 +299,73 @@ dict = {
worldState_allAtOnceNormal: `Все сразу, в обычном режиме`, worldState_allAtOnceNormal: `Все сразу, в обычном режиме`,
worldState_allAtOnceSteelPath: `Все сразу, в режиме Стального Пути`, worldState_allAtOnceSteelPath: `Все сразу, в режиме Стального Пути`,
worldState_theCircuitOverride: `Типы миссий в подземелье Дувири`, worldState_theCircuitOverride: `Типы миссий в подземелье Дувири`,
worldState_darvoStockMultiplier: `Множитель запасов Дарво`, worldState_darvoStockMultiplier: `Множитель Запасов Дарво`,
worldState_varziaFullyStocked: `Полный ассортимент Варзии`, worldState_varziaFullyStocked: `Полный Ассортимент Варзии`,
worldState_varziaOverride: `Изменение ротации Варзии`, worldState_varziaOverride: `Изменение Ротации Варзии`,
import_importNote: `Вы можете загрузить полный или частичный ответ <code>inventory.php</code> или <code>getShip.php</code> (клиентское представление) здесь. `, import_importNote: `Вы можете загрузить полный или частичный ответ инвентаря (клиентское представление) здесь. Все поддерживаемые поля <b>будут перезаписаны</b> в вашем аккаунте.`,
import_importNote2: `Все поддерживаемые поля <b>будут перезаписаны</b> в вашем аккаунте.`,
import_submit: `Отправить`, import_submit: `Отправить`,
import_samples: `Пример:`, import_samples: `Пример:`,
import_samples_maxFocus: `Все школы Фокуса макс. уровня`, import_samples_maxFocus: `Все школы Фокуса максимального уровня`,
upgrade_Equilibrium: `Подбор сфер здоровья даёт +|VAL|% энергии. Подбор сфер энергии даёт +|VAL|% здоровья.`, upgrade_Equilibrium: `+|VAL|% Энергия от подбирания здоровья, +|VAL|% Здоровье от подбирания энергии`,
upgrade_MeleeCritDamage: `+|VAL|% к крит. урону в ближнем бою.`, upgrade_MeleeCritDamage: `+|VAL|% Критический урон ближнего боя`,
upgrade_PrimaryStatusChance: `+|VAL|% к шансу статуса основного оружия.`, upgrade_PrimaryStatusChance: `+|VAL|% Шанс наложения статуса основным оружием`,
upgrade_SecondaryCritChance: `+|VAL|% к шансу крит. урона от вторичного оружия.`, upgrade_SecondaryCritChance: `+|VAL|% Шанс критического удара вторичным оружием`,
upgrade_WarframeAbilityDuration: `+|VAL|% к длительности способностей.`, upgrade_WarframeAbilityDuration: `+|VAL|% Длительность способностей`,
upgrade_WarframeAbilityStrength: `+|VAL|% к силе способностей.`, upgrade_WarframeAbilityStrength: `+|VAL|% Сила способностей`,
upgrade_WarframeArmorMax: `+|VAL| к броне.`, upgrade_WarframeArmorMax: `+|VAL| Броня`,
upgrade_WarframeBlastProc: `Регенерирует +|VAL| щитов, когда вы убиваете врага, наложив статус Взрыва.`, upgrade_WarframeBlastProc: `+|VAL| Щиты при убийстве с Взрывным Уроном`,
upgrade_WarframeCastingSpeed: `+|VAL|% к скорости применения способностей.`, upgrade_WarframeCastingSpeed: `+|VAL|% Скорость Применения Способностей`,
upgrade_WarframeCorrosiveDamageBoost: `Даёт +|VAL|% урона от сопсобнстй по врагам, находящимся под действием статуса Коррозии.`, upgrade_WarframeCorrosiveDamageBoost: `+|VAL|% Урон Способностей по врагам, пораженным Коррозией`,
upgrade_WarframeCorrosiveStack: `Увеличить макс. количество стаков статуса Коррози на +|VAL|.`, upgrade_WarframeCorrosiveStack: `Увеличить макс. стаки Коррозии на +|VAL|`,
upgrade_WarframeCritDamageBoost: `Даёт +|VAL|% крит. урона в ближнем бою. Когда макс. энергия превышает 500, увеличение урона удваивается.`, upgrade_WarframeCritDamageBoost: `+|VAL|% Критический Урон Ближнего Боя (Удваивается при 500 Энергии)`,
upgrade_WarframeElectricDamage: `Даёт +|VAL1|% Электрического урона основному оружию. Получите дополнительно +|VAL2|% за каждый экипированный багровый, лазурный или фиолетовый осколок архонта (Комбинируется с модами).`, upgrade_WarframeElectricDamage: `+|VAL1|% Урон Электричеством Основным Оружием (+|VAL2|% за каждый дополнительный Осколок)`,
upgrade_WarframeElectricDamageBoost: `Даёт +|VAL|% урон аот спсобностей по врагам, находящимся под действием статуса Электричества.`, upgrade_WarframeElectricDamageBoost: `+|VAL|% Урон Способностей по врагам, пораженным Электричеством`,
upgrade_WarframeEnergyMax: `+|VAL| к запасу энергии.`, upgrade_WarframeEnergyMax: `+|VAL| Макс. Энергия`,
upgrade_WarframeGlobeEffectEnergy: `+|VAL|% к эффективности сфер энергии.`, upgrade_WarframeGlobeEffectEnergy: `+|VAL|% Эффективность сфер Энергии`,
upgrade_WarframeGlobeEffectHealth: `+|VAL|% к эффективности сфер здоровья.`, upgrade_WarframeGlobeEffectHealth: `+|VAL|% Эффективность сфер Здоровья`,
upgrade_WarframeHealthMax: `+|VAL| к здоровью.`, upgrade_WarframeHealthMax: `+|VAL| Макс. Здоровье`,
upgrade_WarframeHPBoostFromImpact: `Даёт +|VAL1| здоровья за каждого врага, убитого с помощью Взрывного урона. Макс. |VAL2| здоровья.`, upgrade_WarframeHPBoostFromImpact: `+|VAL1| Здоровья при убийстве с Взрывным Уроном (Макс. |VAL2| Здоровья)`,
upgrade_WarframeParkourVelocity: `+|VAL|% к скорости паркура.`, upgrade_WarframeParkourVelocity: `+|VAL|% Скорость Паркура`,
upgrade_WarframeRadiationDamageBoost: `Даёт +|VAL|% урона от способностей по врагам, находящимся под действием статуса Радиации.`, upgrade_WarframeRadiationDamageBoost: `+|VAL|% Урон Способностей по врагам, пораженным Радиацией`,
upgrade_WarframeHealthRegen: `+|VAL| к восстановлению здоровья в секунду.`, upgrade_WarframeHealthRegen: `+|VAL| Здоровья в секунду`,
upgrade_WarframeShieldMax: `+|VAL| к мощности щитов.`, upgrade_WarframeShieldMax: `+|VAL| Щитов`,
upgrade_WarframeStartingEnergy: `+|VAL|% к макс. энергии при появлении.`, upgrade_WarframeStartingEnergy: `+|VAL|% Энергии при Спавне`,
upgrade_WarframeToxinDamage: `Статусный эффект Токсина наносит на +|VAL|% больше урона.`, upgrade_WarframeToxinDamage: `+|VAL|% Урон Токсином`,
upgrade_WarframeToxinHeal: `Восстанавливает +|VAL| здоровья кадый раз, когда враги получают урон от эффекта статуса Токсина.`, upgrade_WarframeToxinHeal: `+|VAL| Здоровья при нанесении урона врагам с Токсином`,
upgrade_WeaponCritBoostFromHeat: `Увеличивает шанс крит. урона вторичным оружием на |VAL1|% каждый раз, когда вы убиваете врага, назодящегося под действием статуса Огня. Макс.: |VAL2|%.`, upgrade_WeaponCritBoostFromHeat: `+|VAL1|% Шанс Критического Удара Вторичным Оружием за каждого убитого врага, пораженного Огнем (Макс. |VAL2|%)`,
upgrade_AvatarAbilityRange: `+7.5% к зоне поражения способностей.`, upgrade_AvatarAbilityRange: `+7.5% Радиус Способностей`,
upgrade_AvatarAbilityEfficiency: `+5% к энергоэффективности способностей.`, upgrade_AvatarAbilityEfficiency: `+5% Энергоэффективность Способностей`,
upgrade_AvatarEnergyRegen: `+0.5 к регенерации энергии в секунду.`, upgrade_AvatarEnergyRegen: `+0.5 Регенерация Энергии в секунду`,
upgrade_AvatarEnemyRadar: `+5м обнаружение врагов.`, upgrade_AvatarEnemyRadar: `+5m обнаружение врагов`,
upgrade_AvatarLootRadar: `+7м к радиусу обнаружения добычи.`, upgrade_AvatarLootRadar: `+7m обнаружение добычи`,
upgrade_WeaponAmmoMax: `+15% макс. боеприпасов.`, upgrade_WeaponAmmoMax: `+15% Макс. Патронов`,
upgrade_EnemyArmorReductionAura: `Враги теряют -3% брони.`, upgrade_EnemyArmorReductionAura: `-3% Броня Врагов`,
upgrade_OnExecutionAmmo: `Убийство Милосердием пополняет магазины основного и вторичного оружия на 100%.`, upgrade_OnExecutionAmmo: `+100% Заполнение Магазина Основного и Вторичного Оружия при убийстве Милосердием`,
upgrade_OnExecutionHealthDrop: `+100% шанс выпадения сферы здоровья при убийстве Милосердием.`, upgrade_OnExecutionHealthDrop: `+100% Шанс Падения сферы Здоровья при убийстве Милосердием`,
upgrade_OnExecutionEnergyDrop: `+50% шанс выпадения сферы энергии при убийстве Милосердием.`, upgrade_OnExecutionEnergyDrop: `+50% Шанс Падения сферы Энергии при убийстве Милосердием`,
upgrade_OnFailHackReset: `+50% шанс доволнительной попытки взлома в случае неудачи.`, upgrade_OnFailHackReset: `+50% Шанс Повтора Взлома`,
upgrade_DamageReductionOnHack: `Уменьшает урон на 75% во время взлома.`, upgrade_DamageReductionOnHack: `+75% Уменьшение Урона во время Взлома`,
upgrade_OnExecutionReviveCompanion: `Убийства Милосердием уменьшают время восстановления компаньона на 15 секунд.`, upgrade_OnExecutionReviveCompanion: `Убийства Милосердием уменьшают время восстановления Компаньона на 15 секунд`,
upgrade_OnExecutionParkourSpeed: `+60% к скорости паркура после убийства Милосердием на 15 секунд.`, upgrade_OnExecutionParkourSpeed: `+60% Скорость Паркура после убийства Милосердием на 15 секунд`,
upgrade_AvatarTimeLimitIncrease: `+8 секунд на взлом.`, upgrade_AvatarTimeLimitIncrease: `+8 секунд к Взлому`,
upgrade_ElectrifyOnHack: `Шокирует врагов в радиусе 20м во время взлома.`, upgrade_ElectrifyOnHack: `Шокировать врагов в пределах 20 метров во время Взлома`,
upgrade_OnExecutionTerrify: `50% шанс, что при убийстве Милосердием враги в радиусе 15м будут параллизованы от страха на 8 секунд.`, upgrade_OnExecutionTerrify: `+50% шанс, что враги в пределах 15 метров будут дрожать от страха в течение 8 секунд после убийства Милосердием`,
upgrade_OnHackLockers: `Открывает 5 контейнеров в радиусе 20м после взлома.`, upgrade_OnHackLockers: `Открыть 5 шкафчиков в пределах 20 метров после Взлома`,
upgrade_OnExecutionBlind: `Ослепляет врагов в радиусе 18м при убийстве Милосердием.`, upgrade_OnExecutionBlind: `Ослепить врагов в пределах 18 метров после убийства Милосердием`,
upgrade_OnExecutionDrainPower: `Следующая способность, применённая после убийства Милосердием, получает +50% к силе способности.`, upgrade_OnExecutionDrainPower: `Следующее использование способности получает +50% Силы Способности после убийства Милосердием`,
upgrade_OnHackSprintSpeed: `+75% к скорости бега после взлома на 15 секунд.`, upgrade_OnHackSprintSpeed: `+75% Скорость Бега в течение 15 секунд после Взлома`,
upgrade_SwiftExecute: `Увеличивает скорость добиваний Милосердием на 50%.`, upgrade_SwiftExecute: `+50% Скорость Убийства Милосердием`,
upgrade_OnHackInvis: `Невидимсть на 15 секунд после взлома.`, upgrade_OnHackInvis: `Невидимость в течение 15 секунд после Взлома`,
damageType_Electricity: `Электрический`, damageType_Electricity: `Электричество`,
damageType_Fire: `Огненный`, damageType_Fire: `Огонь`,
damageType_Freeze: `Холодовой`, damageType_Freeze: `Холод`,
damageType_Impact: `Ударный`, damageType_Impact: `Удар`,
damageType_Magnetic: `Магнитный`, damageType_Magnetic: `Магнит`,
damageType_Poison: `Токсичный`, damageType_Poison: `Токсин`,
damageType_Radiation: `Радиационный`, damageType_Radiation: `Радиация`,
theme_dark: `Темная тема`, theme_dark: `Темная тема`,
theme_light: `Светлая тема`, theme_light: `Светлая тема`,

View File

@ -1,6 +1,6 @@
// Ukrainian translation by LoseFace // Ukrainian translation by LoseFace
dict = { dict = {
general_inventoryUpdateNote: `Пам'ятка: Щоб побачити зміни в грі, вам потрібно повторно синхронізувати своє спорядження, наприклад, використовуючи команду /sync завантажувача, відвідавши Доджьо/Реле або перезавантаживши гру.`, general_inventoryUpdateNote: `Пам'ятка: Щоб побачити зміни в грі, вам потрібно повторно синхронізувати свій інвентар, наприклад, використовуючи команду /sync завантажувача, відвідавши Доджьо/Реле або перезавантаживши гру.`,
general_addButton: `Добавити`, general_addButton: `Добавити`,
general_setButton: `Встановити`, general_setButton: `Встановити`,
general_none: `Відсутній`, general_none: `Відсутній`,
@ -11,8 +11,8 @@ dict = {
code_regFail: `Не вдалося зареєструватися. Обліковий запис вже існує?`, code_regFail: `Не вдалося зареєструватися. Обліковий запис вже існує?`,
code_changeNameConfirm: `Яке ім'я ви хочете встановити для свого облікового запису?`, code_changeNameConfirm: `Яке ім'я ви хочете встановити для свого облікового запису?`,
code_deleteAccountConfirm: `Ви впевнені, що хочете видалити обліковий запис |DISPLAYNAME| (|EMAIL|)? Цю дію не можна скасувати.`, code_deleteAccountConfirm: `Ви впевнені, що хочете видалити обліковий запис |DISPLAYNAME| (|EMAIL|)? Цю дію не можна скасувати.`,
code_archgun: `Арк-гармата`, code_archgun: `Арч-Пушка`,
code_melee: `Холодна зброя`, code_melee: `Ближній бій`,
code_pistol: `Пістолет`, code_pistol: `Пістолет`,
code_rifle: `Гвинтівка`, code_rifle: `Гвинтівка`,
code_shotgun: `Рушниця`, code_shotgun: `Рушниця`,
@ -22,11 +22,11 @@ dict = {
code_amp: `Підсилювач`, code_amp: `Підсилювач`,
code_kDrive: `К-Драйв`, code_kDrive: `К-Драйв`,
code_legendaryCore: `Легендарне ядро`, code_legendaryCore: `Легендарне ядро`,
code_traumaticPeculiar: `Особливе травмування`, code_traumaticPeculiar: `Травмуюча Странність`,
code_starter: `|MOD| (Пошкоджений)`, code_starter: `|MOD| (Пошкоджений)`,
code_badItem: `(Самозванець)`, code_badItem: `(Самозванець)`,
code_maxRank: `Макс. рівень`, code_maxRank: `Максимальний рівень`,
code_rename: `Перейменувати`, code_rename: `Переіменувати`,
code_renamePrompt: `Введіть нове ім'я:`, code_renamePrompt: `Введіть нове ім'я:`,
code_remove: `Видалити`, code_remove: `Видалити`,
code_addItemsConfirm: `Ви впевнені, що хочете додати |COUNT| предметів на ваш обліковий запис?`, code_addItemsConfirm: `Ви впевнені, що хочете додати |COUNT| предметів на ваш обліковий запис?`,
@ -42,15 +42,15 @@ dict = {
code_rankUp: `Підвищити рівень`, code_rankUp: `Підвищити рівень`,
code_rankDown: `Понизити рівень`, code_rankDown: `Понизити рівень`,
code_count: `Кількість`, code_count: `Кількість`,
code_focusAllUnlocked: `Всі школи Фокусу вже розблоковані.`, code_focusAllUnlocked: `Всі школи фокуса вже розблоковані.`,
code_focusUnlocked: `Розблоковано |COUNT| нових шкіл Фокусу! Для відображення змін в грі знадобиться оновлення спорядження. Відвідування навігації — найпростіший спосіб цього досягти.`, code_focusUnlocked: `Розблоковано |COUNT| нових шкіл фокуса! Для відображення змін в грі знадобиться оновлення спорядження. Відвідування навігації — найпростіший спосіб цього досягти.`,
code_addModsConfirm: `Ви впевнені, що хочете додати |COUNT| модифікаторів на ваш обліковий запис?`, code_addModsConfirm: `Ви впевнені, що хочете додати |COUNT| модифікаторів на ваш обліковий запис?`,
code_succImport: `Успішно імпортовано.`, code_succImport: `Успішно імпортовано.`,
code_succRelog: `Готово. Зверніть увагу, що вам потрібно буде перезайти, щоб побачити зміни в грі.`, code_succRelog: `Готово. Зверніть увагу, що вам потрібно буде перезайти, щоб побачити зміни в грі.`,
code_nothingToDo: `Готово. Немає що робити.`, code_nothingToDo: `Готово. Немає що робити.`,
code_gild: `Покращити`, code_gild: `Покращити`,
code_moa: `МОА`, code_moa: `МОА`,
code_zanuka: `Гончак`, code_zanuka: `Гончарка`,
code_stage: `Етап`, code_stage: `Етап`,
code_complete: `Завершити`, code_complete: `Завершити`,
code_nextStage: `Наступний етап`, code_nextStage: `Наступний етап`,
@ -59,56 +59,56 @@ dict = {
code_setInactive: `Зробити пригоду неактивною`, code_setInactive: `Зробити пригоду неактивною`,
code_completed: `Завершено`, code_completed: `Завершено`,
code_active: `Активний`, code_active: `Активний`,
code_pigment: `Барвник`, code_pigment: `Пігмент`,
code_mature: `Виростити для бою`, code_mature: `Підготувати до бою`,
code_unmature: `Обернути старіння`, code_unmature: `Обернути старіння`,
code_succChange: `Успішно змінено.`, code_succChange: `Успішно змінено.`,
code_requiredInvigorationUpgrade: `Ви повинні вибрати як атакуюче, так і допоміжне вдосконалення.`, code_requiredInvigorationUpgrade: `Ви повинні вибрати як атакуюче, так і допоміжне покращення.`,
login_description: `Увійдіть, використовуючи облікові дані OpenWF (ті ж, що й у грі при підключенні до цього серверу).`, login_description: `Увійдіть, використовуючи облікові дані OpenWF (ті ж, що й у грі при підключенні до цього сервера).`,
login_emailLabel: `Адреса електронної пошти`, login_emailLabel: `Адреса електронної пошти`,
login_passwordLabel: `Пароль`, login_passwordLabel: `Пароль`,
login_loginButton: `Увійти`, login_loginButton: `Увійти`,
login_registerButton: `Зареєструватися`, login_registerButton: `Зареєструватися`,
navbar_logout: `Вийти`, navbar_logout: `Вийти`,
navbar_renameAccount: `Перейменувати обліковий запис`, navbar_renameAccount: `Переіменувати обліковий запис`,
navbar_deleteAccount: `Видалити обліковий запис`, navbar_deleteAccount: `Видалити обліковий запис`,
navbar_inventory: `Спорядження`, navbar_inventory: `Спорядження`,
navbar_mods: `Модифікатори`, navbar_mods: `Моди`,
navbar_quests: `Пригоди`, navbar_quests: `Пригоди`,
navbar_cheats: `Чити`, navbar_cheats: `Чити`,
navbar_import: `Імпорт`, navbar_import: `Імпорт`,
inventory_addItems: `Додати предмети`, inventory_addItems: `Додати предмети`,
inventory_suits: `Ворфрейми`, inventory_suits: `Ворфрейми`,
inventory_longGuns: `Основна зброя`, inventory_longGuns: `Основне озброєння`,
inventory_pistols: `Допоміжна зброя`, inventory_pistols: `Допоміжне озброєння`,
inventory_melee: `Холодна зброя`, inventory_melee: `Холодне озброєння`,
inventory_spaceSuits: `Арквінґи`, inventory_spaceSuits: `Арквінґи`,
inventory_spaceGuns: `Зброя Арквінґів`, inventory_spaceGuns: `Озброєння арквінґів`,
inventory_spaceMelee: `Холодна зброя Арквінґів`, inventory_spaceMelee: `Холодне озброєння арквінґів`,
inventory_mechSuits: `Некрамехи`, inventory_mechSuits: `Некрамехи`,
inventory_sentinels: `Вартові`, inventory_sentinels: `Вартові`,
inventory_sentinelWeapons: `Зброя Вартових`, inventory_sentinelWeapons: `Озброєння вартових`,
inventory_operatorAmps: `Підсилювачі`, inventory_operatorAmps: `Підсилювачі`,
inventory_hoverboards: `К-Драйви`, inventory_hoverboards: `К-Драйви`,
inventory_moaPets: `МОА`, inventory_moaPets: `МОА`,
inventory_kubrowPets: `Тварини`, inventory_kubrowPets: `Тварини`,
inventory_evolutionProgress: `Прогрес еволюції Інкарнонів`, inventory_evolutionProgress: `Прогрес Еволюції Інкарнонов`,
inventory_Boosters: `Посилення`, inventory_Boosters: `Бустери`,
inventory_bulkAddSuits: `Додати відсутні Ворфрейми`, inventory_bulkAddSuits: `Додати відсутні ворфрейми`,
inventory_bulkAddWeapons: `Додати відсутню зброю`, inventory_bulkAddWeapons: `Додати відсутнє озброєння`,
inventory_bulkAddSpaceSuits: `Додати відсутні Арквінґи`, inventory_bulkAddSpaceSuits: `Додати відсутні арквінґи`,
inventory_bulkAddSpaceWeapons: `Додати відсутню зброю Арквінґів`, inventory_bulkAddSpaceWeapons: `Додати відсутнє озброєння арквінґів`,
inventory_bulkAddSentinels: `Додати відсутніх Вартових`, inventory_bulkAddSentinels: `Додати відсутніх вартових`,
inventory_bulkAddSentinelWeapons: `Додати відсутню зброю Вартових`, inventory_bulkAddSentinelWeapons: `Додати відсутнє озброєння вартових`,
inventory_bulkAddEvolutionProgress: `Додати відсутній прогрес еволюції Інкарнонів`, inventory_bulkAddEvolutionProgress: `Додати відсутній прогрес Еволюції Інкарнонов`,
inventory_bulkRankUpSuits: `Макс. рівень всіх Ворфреймів`, inventory_bulkRankUpSuits: `Максимальний рівень всіх ворфреймів`,
inventory_bulkRankUpWeapons: `Макс. рівень всієї зброї`, inventory_bulkRankUpWeapons: `Максимальний рівень всього озброєння`,
inventory_bulkRankUpSpaceSuits: `Макс. рівень всіх Арквінґів`, inventory_bulkRankUpSpaceSuits: `Максимальний рівень всіх арквінґів`,
inventory_bulkRankUpSpaceWeapons: `Макс. рівень всієї зброї Арквінґів`, inventory_bulkRankUpSpaceWeapons: `Максимальний рівень всього озброєння арквінґів`,
inventory_bulkRankUpSentinels: `Макс. рівень всіх Вартових`, inventory_bulkRankUpSentinels: `Максимальний рівень всіх вартових`,
inventory_bulkRankUpSentinelWeapons: `Макс. рівень всієї зброї Вартових`, inventory_bulkRankUpSentinelWeapons: `Максимальний рівень всього озброєння вартових`,
inventory_bulkRankUpEvolutionProgress: `Макс. рівень всіх еволюцій Інкарнонів`, inventory_bulkRankUpEvolutionProgress: `Максимальний рівень всіх еволюцій Інкарнонов`,
inventory_maxPlexus: `Макс. рівень Плексу`, inventory_maxPlexus: `Максимальний рівень Плексу`,
quests_list: `Пригоди`, quests_list: `Пригоди`,
quests_completeAll: `Закінчити всі пригоди`, quests_completeAll: `Закінчити всі пригоди`,
@ -121,71 +121,71 @@ dict = {
currency_PrimeTokens: `Королівські Ая`, currency_PrimeTokens: `Королівські Ая`,
currency_owned: `У тебе |COUNT|.`, currency_owned: `У тебе |COUNT|.`,
detailedView_archonShardsLabel: `Комірки уламків Архонта`, detailedView_archonShardsLabel: `Клітинки осколків архонта`,
detailedView_archonShardsDescription: `Ви можете використовувати ці необмежені комірки для встановлення безлічі вдосконалень.`, detailedView_archonShardsDescription: `Ви можете використовувати ці необмежені клітинки для встановлення безлічі вдосконалень.`,
detailedView_archonShardsDescription2: `Зверніть увагу: кожен уламок Архонта застосовується з затримкою при завантаженні.`, detailedView_archonShardsDescription2: `Зверніть увагу: кожен уламок архонта застосовується з затримкою при завантаженні.`,
detailedView_valenceBonusLabel: `Ознака Валентності`, detailedView_valenceBonusLabel: `Ознака Валентності`,
detailedView_valenceBonusDescription: `Ви можете встановити або прибрати ознаку Валентності з вашої зброї.`, detailedView_valenceBonusDescription: `Ви можете встановити або прибрати ознака валентності з вашої зброї.`,
detailedView_modularPartsLabel: `Змінити модульні частини`, detailedView_modularPartsLabel: `Змінити Модульні Частини`,
detailedView_suitInvigorationLabel: `Зміцнення Ворфрейма`, detailedView_suitInvigorationLabel: `Зміцнення Ворфрейма`,
detailedView_loadoutLabel: `Конфігурації`, detailedView_loadoutLabel: `Конфігурації`,
invigorations_offensive_AbilityStrength: `+200% до потужності здібностей.`, invigorations_offensive_AbilityStrength: `+200% Потужності Здібностей`,
invigorations_offensive_AbilityRange: `+100% до досяжності здібностей.`, invigorations_offensive_AbilityRange: `+100% Досяжність Здібностей`,
invigorations_offensive_AbilityDuration: `+100% до тривалості дії здібностей.`, invigorations_offensive_AbilityDuration: `+100% Тривалість Здібностей`,
invigorations_offensive_MeleeDamage: `+250% до шкоди від холодної зброї.`, invigorations_offensive_MeleeDamage: `+250% Шкода Ближнього Бою`,
invigorations_offensive_PrimaryDamage: `+250% до шкоди від основної зброї.`, invigorations_offensive_PrimaryDamage: `+250% Шкода Основного Озброєння`,
invigorations_offensive_SecondaryDamage: `+250% до шкоди від допоміжної зброї.`, invigorations_offensive_SecondaryDamage: `+250% Шкода Допоміжного Озброєння`,
invigorations_offensive_PrimaryCritChance: `+200% до ймовірності критичної шкоди від основної зброї.`, invigorations_offensive_PrimaryCritChance: `+200% Імовірність Критичної Шкоди Основного Озброєння`,
invigorations_offensive_SecondaryCritChance: `+200% до ймовірності критичної шкоди від допоміжної зброї.`, invigorations_offensive_SecondaryCritChance: `+200% Імовірність Критичної Шкоди Допоміжного Озброєння`,
invigorations_offensive_MeleeCritChance: `+200% до ймовірності критичної шкоди від холодної зброї.`, invigorations_offensive_MeleeCritChance: `+200% Імовірність Критичної Шкоди Ближнього Бою`,
invigorations_utility_AbilityEfficiency: `+75% до ощадливості здібностей.`, invigorations_utility_AbilityEfficiency: `+75% Ощадливість Здібностей`,
invigorations_utility_SprintSpeed: `+75% до швидкості бігу.`, invigorations_utility_SprintSpeed: `+75% Швидкість Бігу`,
invigorations_utility_ParkourVelocity: `+75% до швидкості паркуру.`, invigorations_utility_ParkourVelocity: `+75% Швидкість Паркура`,
invigorations_utility_HealthMax: `+1000 до здоров'я.`, invigorations_utility_HealthMax: `+1000 Здоров'я`,
invigorations_utility_EnergyMax: `+200% до макс. енергії.`, invigorations_utility_EnergyMax: `+200% Максимум Енергії`,
invigorations_utility_StatusImmune: `Імунітет до ефектів стану.`, invigorations_utility_StatusImmune: `Імунітет до Ефектів Статусу`,
invigorations_utility_ReloadSpeed: `+75% до швидкості перезаряджання.`, invigorations_utility_ReloadSpeed: `+75% Швидкість Перезаряджання`,
invigorations_utility_HealthRegen: `+25 до відновлення здоров'я на секунду.`, invigorations_utility_HealthRegen: `+25 Здоров'я в секунду`,
invigorations_utility_ArmorMax: `+1000 до захисту.`, invigorations_utility_ArmorMax: `+1000 Захисту`,
invigorations_utility_Jumps: `+5 Оновлень стрибків.`, invigorations_utility_Jumps: `+5 Оновлень Стрибків`,
invigorations_utility_EnergyRegen: `+2 до відновлення енергії на секунду.`, invigorations_utility_EnergyRegen: `+2 Енергії в секунду`,
invigorations_offensiveLabel: `Атакуюче вдосконалення`, invigorations_offensiveLabel: `Атакуюче Вдосконалення`,
invigorations_defensiveLabel: `Допоміжне вдосконалення`, invigorations_defensiveLabel: `Вспомогательное Вдосконалення`,
invigorations_expiryLabel: `Термін дії Зміцнення (необов'язково)`, invigorations_expiryLabel: `Термін дії Зміцнення (необов'язково)`,
abilityOverride_label: `Перевизначення здібностей`, abilityOverride_label: `Перевизначення здібностей`,
abilityOverride_onSlot: `у комірці`, abilityOverride_onSlot: `у клітинці`,
mods_addRiven: `Добавити модифікатор Розколу`, mods_addRiven: `Добавити Модифікатор Розколу`,
mods_fingerprint: `Відбиток`, mods_fingerprint: `Відбиток`,
mods_fingerprintHelp: `Потрібна допомога з відбитком?`, mods_fingerprintHelp: `Потрібна допомога з відбитком?`,
mods_rivens: `Модифікатори Розколу`, mods_rivens: `Модифікатори Розколу`,
mods_mods: `Модифікатори`, mods_mods: `Модифікатори`,
mods_addMax: `Добавити макс. вдосконалений`, mods_addMax: `Добавити максимально вдосконалений`,
mods_addMissingUnrankedMods: `Добавити недостаючі модифікатори без рівня`, mods_addMissingUnrankedMods: `Добавити недостаючі модифікатори без рівня`,
mods_removeUnranked: `Видалити модифікатори без рівня`, mods_removeUnranked: `Видалити модифікатори без рівня`,
mods_addMissingMaxRankMods: `Добавити недостаючі модифікатори макс. рівня`, mods_addMissingMaxRankMods: `Добавити недостаючі модифікатори максимального рівня`,
cheats_administratorRequirement: `Ви повинні бути адміністратором для використання цієї функції. Щоб стати адміністратором, додайте <code>\"|DISPLAYNAME|\"</code> в <code>administratorNames</code> в config.json.`, cheats_administratorRequirement: `Ви повинні бути адміністратором для використання цієї функції. Щоб стати адміністратором, додайте <code>\"|DISPLAYNAME|\"</code> в <code>administratorNames</code> в config.json.`,
cheats_server: `Сервер`, cheats_server: `Сервер`,
cheats_skipTutorial: `Пропустити навчання`, cheats_skipTutorial: `Пропустити навчання`,
cheats_skipAllDialogue: `Пропустити всі діалоги`, cheats_skipAllDialogue: `Пропустити всі діалоги`,
cheats_unlockAllScans: `Розблокувати всі сканування`, cheats_unlockAllScans: `Розблокувати всі сканування`,
cheats_unlockAllMissions: `Розблокувати всі місії`, cheats_unlockAllMissions: `Розблокувати всі місії`,
cheats_unlockAllMissions_ok: `Успіх. Будь ласка, зверніть увагу, що вам потрібно буде увійти в Доджьо/Реле або перезайти, щоб клієнт оновив Зоряну мапу.`, cheats_unlockAllMissions_ok: `Успіх. Будь ласка, зверніть увагу, що вам потрібно буде увійти в Доджьо/Реле або перезайти, щоб клієнт оновив зоряну мапу.`,
cheats_infiniteCredits: `Бескінечні Кредити`, cheats_infiniteCredits: `Бескінечні кредити`,
cheats_infinitePlatinum: `Бескінечна Платина`, cheats_infinitePlatinum: `Бескінечна платина`,
cheats_infiniteEndo: `Бескінечне Ендо`, cheats_infiniteEndo: `Бескінечне ендо`,
cheats_infiniteRegalAya: `Бескінечна Королівська Ая`, cheats_infiniteRegalAya: `Бескінечна Королівська Ая`,
cheats_infiniteHelminthMaterials: `Бескінечні секреції Гельмінта`, cheats_infiniteHelminthMaterials: `Бескінечні Секреції Гельмінта`,
cheats_claimingBlueprintRefundsIngredients: `Повернення інгредієнтів креслеників`, cheats_claimingBlueprintRefundsIngredients: `Повернення інгредієнтів креслеників`,
cheats_dontSubtractPurchaseCreditCost: `Не вираховувати вартість Кредитів при купівлі`, cheats_dontSubtractPurchaseCreditCost: `Не вираховувати вартість кредитів при купівлі`,
cheats_dontSubtractPurchasePlatinumCost: `Не вираховувати вартість Платини при купівлі`, cheats_dontSubtractPurchasePlatinumCost: `Не вираховувати вартість платини при купівлі`,
cheats_dontSubtractPurchaseItemCost: `Не вираховувати вартість предметів при купівлі`, cheats_dontSubtractPurchaseItemCost: `Не вираховувати вартість предметів при купівлі`,
cheats_dontSubtractPurchaseStandingCost: `Не вираховувати вартість репутації при купівлі`, cheats_dontSubtractPurchaseStandingCost: `Не вираховувати вартість репутації при купівлі`,
cheats_dontSubtractVoidTraces: `Не вираховувати кількість Відлуння`, cheats_dontSubtractVoidTraces: `Не вираховувати кількість Відголосків Безодні`,
cheats_dontSubtractConsumables: `Не вираховувати кількість витратних матеріалів`, cheats_dontSubtractConsumables: `Не вираховувати кількість витратних матеріалів`,
cheats_unlockAllShipFeatures: `Розблокувати всі функції судна`, cheats_unlockAllShipFeatures: `Розблокувати всі функції судна`,
cheats_unlockAllShipDecorations: `Розблокувати всі прикраси судна`, cheats_unlockAllShipDecorations: `Розблокувати всі прикраси судна`,
@ -196,10 +196,10 @@ dict = {
cheats_universalPolarityEverywhere: `Будь-яка полярність скрізь`, cheats_universalPolarityEverywhere: `Будь-яка полярність скрізь`,
cheats_unlockDoubleCapacityPotatoesEverywhere: `Орокінські Реактори/Каталізатори скрізь`, cheats_unlockDoubleCapacityPotatoesEverywhere: `Орокінські Реактори/Каталізатори скрізь`,
cheats_unlockExilusEverywhere: `Ексилотримач скрізь`, cheats_unlockExilusEverywhere: `Ексилотримач скрізь`,
cheats_unlockArcanesEverywhere: `Тримач Містифікаторів скрізь`, cheats_unlockArcanesEverywhere: `Тримач містифікаторів скрізь`,
cheats_noDailyStandingLimits: `Без щоденних лімітів репутації`, cheats_noDailyStandingLimits: `Без щоденних лімітів репутації`,
cheats_noDailyFocusLimit: `Без щоденних лімітів Фокусу`, cheats_noDailyFocusLimit: `Без щоденних лімітів фокуса`,
cheats_noArgonCrystalDecay: `Без розпаду Аргонових кристалів`, cheats_noArgonCrystalDecay: `Без розпаду аргонових кристалів`,
cheats_noMasteryRankUpCooldown: `Підвищення ранга майстерності без очікування`, cheats_noMasteryRankUpCooldown: `Підвищення ранга майстерності без очікування`,
cheats_noVendorPurchaseLimits: `Відсутність лімітів на купівлю у продавців`, cheats_noVendorPurchaseLimits: `Відсутність лімітів на купівлю у продавців`,
cheats_noDeathMarks: `Без позначок смерті`, cheats_noDeathMarks: `Без позначок смерті`,
@ -209,16 +209,16 @@ dict = {
cheats_baroFullyStocked: `Баро повністю укомплектований`, cheats_baroFullyStocked: `Баро повністю укомплектований`,
cheats_syndicateMissionsRepeatable: `Повторювати місії синдиката`, cheats_syndicateMissionsRepeatable: `Повторювати місії синдиката`,
cheats_unlockAllProfitTakerStages: `Розблокувати всі етапи Привласнювачки`, cheats_unlockAllProfitTakerStages: `Розблокувати всі етапи Привласнювачки`,
cheats_instantFinishRivenChallenge: `Миттєве завершення випробування модифікатора Розколу`, cheats_instantFinishRivenChallenge: `Миттєве завершення випробування Модифікатора Розколу`,
cheats_instantResourceExtractorDrones: `Миттєво добуваючі Дрони-видобувачі`, cheats_instantResourceExtractorDrones: `Миттєво добуваючі дрони-видобувачі`,
cheats_noResourceExtractorDronesDamage: `Без шкоди по Дронам-видобувачам`, cheats_noResourceExtractorDronesDamage: `Без шкоди по дронам-видобувачам`,
cheats_skipClanKeyCrafting: `Пропустити створення кланового ключа`, cheats_skipClanKeyCrafting: `Пропустити створення кланового ключа`,
cheats_noDojoRoomBuildStage: `Миттєве будівництво кімнат Доджьо`, cheats_noDojoRoomBuildStage: `Миттєве будівництво Кімнат Доджьо`,
cheats_noDojoDecoBuildStage: `Миттєве будівництво декорацій Доджьо`, cheats_noDojoDecoBuildStage: `Миттєве будівництво Декорацій Доджьо`,
cheats_fastDojoRoomDestruction: `Миттєве знищення кімнат Доджьо`, cheats_fastDojoRoomDestruction: `Миттєве знищення Кімнат Доджьо`,
cheats_noDojoResearchCosts: `Безкоштовні дослідження Доджьо`, cheats_noDojoResearchCosts: `Безкоштовні Дослідження Доджьо`,
cheats_noDojoResearchTime: `Миттєві дослідження Доджьо`, cheats_noDojoResearchTime: `Миттєві Дослідження Доджьо`,
cheats_fastClanAscension: `Миттєве піднесення клану`, cheats_fastClanAscension: `Миттєве Піднесення Клану`,
cheats_missionsCanGiveAllRelics: `Місії можуть давати всі реліквії`, cheats_missionsCanGiveAllRelics: `Місії можуть давати всі реліквії`,
cheats_exceptionalRelicsAlwaysGiveBronzeReward: `Вийняткові реліквії завжди дають бронзову нагороду`, cheats_exceptionalRelicsAlwaysGiveBronzeReward: `Вийняткові реліквії завжди дають бронзову нагороду`,
cheats_flawlessRelicsAlwaysGiveSilverReward: `Бездоганні реліквії завжди дають срібну нагороду`, cheats_flawlessRelicsAlwaysGiveSilverReward: `Бездоганні реліквії завжди дають срібну нагороду`,
@ -230,7 +230,7 @@ dict = {
cheats_nightwaveStandingMultiplier: `Множник репутації Нічної хвилі`, cheats_nightwaveStandingMultiplier: `Множник репутації Нічної хвилі`,
cheats_save: `Зберегти`, cheats_save: `Зберегти`,
cheats_account: `Обліковий запис`, cheats_account: `Обліковий запис`,
cheats_unlockAllFocusSchools: `Розблокувати всі школи Фокусу`, cheats_unlockAllFocusSchools: `Розблокувати всі школи фокуса`,
cheats_helminthUnlockAll: `Повністю покращити Гельмінта`, cheats_helminthUnlockAll: `Повністю покращити Гельмінта`,
cheats_addMissingSubsumedAbilities: `Додати відсутні поглинуті здібності`, cheats_addMissingSubsumedAbilities: `Додати відсутні поглинуті здібності`,
cheats_intrinsicsUnlockAll: `Повністю покращити Кваліфікації`, cheats_intrinsicsUnlockAll: `Повністю покращити Кваліфікації`,
@ -239,13 +239,13 @@ dict = {
cheats_markAllAsRead: `Помітити всі вхідні як прочитані`, cheats_markAllAsRead: `Помітити всі вхідні як прочитані`,
worldState: `Стан світу`, worldState: `Стан світу`,
worldState_creditBoost: `Глобальне посилення Кредитів`, worldState_creditBoost: `Глобальний бустер кредитів`,
worldState_affinityBoost: `Глобальне посилення Синтезу`, worldState_affinityBoost: `Глобальний бустер синтезу`,
worldState_resourceBoost: `Глобальне посилення Ресурсів`, worldState_resourceBoost: `Глобальний бустер ресурсів`,
worldState_tennoLiveRelay: `Реле TennoLive`, worldState_tennoLiveRelay: `Реле TennoLive`,
worldState_baroTennoConRelay: `Реле Баро TennoCon`, worldState_baroTennoConRelay: `Реле Баро TennoCon`,
worldState_starDays: `Зоряні дні`, worldState_starDays: `Зоряні дні`,
worldState_galleonOfGhouls: `Гульський галеон`, worldState_galleonOfGhouls: `Гульський Галеон`,
worldState_ghoulEmergence: `Зачищення від гулів`, worldState_ghoulEmergence: `Зачищення від гулів`,
worldState_plagueStar: `Морова зірка`, worldState_plagueStar: `Морова зірка`,
worldState_dogDays: `Спекотні дні`, worldState_dogDays: `Спекотні дні`,
@ -254,13 +254,9 @@ dict = {
worldState_longShadow: `Довга тінь`, worldState_longShadow: `Довга тінь`,
worldState_hallowedFlame: `Священне полум'я`, worldState_hallowedFlame: `Священне полум'я`,
worldState_hallowedNightmares: `Священні жахіття`, worldState_hallowedNightmares: `Священні жахіття`,
worldState_hallowedNightmaresRewards: `Нагороди Священних жахіть`, worldState_hallowedNightmaresRewards: `Нагороди Священних Жахіть`,
worldState_proxyRebellion: `Повстання роботів`, worldState_proxyRebellion: `Повстання роботів`,
worldState_proxyRebellionRewards: `Нагороди Повстання роботів`, worldState_proxyRebellionRewards: `Нагороди Повстання роботів`,
worldState_bellyOfTheBeast: `У лігві звіра`,
worldState_bellyOfTheBeastProgressOverride: `Прогрес У лігві звіра`,
worldState_eightClaw: `Вісім кігтів`,
worldState_eightClawProgressOverride: `Прогрес Восьми кігтів`,
worldState_from_year: `з |YEAR|`, worldState_from_year: `з |YEAR|`,
worldState_pre_year: `до |YEAR|`, worldState_pre_year: `до |YEAR|`,
worldState_incompatibleWith: `Несумісне з:`, worldState_incompatibleWith: `Несумісне з:`,
@ -277,9 +273,9 @@ dict = {
worldState_cold: `Холод`, worldState_cold: `Холод`,
worldState_duviriOverride: `Цикл Дувірі`, worldState_duviriOverride: `Цикл Дувірі`,
worldState_joy: `Радість`, worldState_joy: `Радість`,
worldState_anger: `Злість`, worldState_anger: `Гнів`,
worldState_envy: `Заздрість`, worldState_envy: `Заздрість`,
worldState_sorrow: `Журба`, worldState_sorrow: `Скорбота`,
worldState_fear: `Страх`, worldState_fear: `Страх`,
worldState_nightwaveOverride: `Сезон Нічної хвилі`, worldState_nightwaveOverride: `Сезон Нічної хвилі`,
worldState_RadioLegionIntermission13Syndicate: `Вибірка Нори 9`, worldState_RadioLegionIntermission13Syndicate: `Вибірка Нори 9`,
@ -303,69 +299,68 @@ dict = {
worldState_allAtOnceNormal: `Всі одразу, в звичайному режимі`, worldState_allAtOnceNormal: `Всі одразу, в звичайному режимі`,
worldState_allAtOnceSteelPath: `Всі одразу, в режимі Шляху Сталі`, worldState_allAtOnceSteelPath: `Всі одразу, в режимі Шляху Сталі`,
worldState_theCircuitOverride: `Типи місій у підземеллі Дувірі`, worldState_theCircuitOverride: `Типи місій у підземеллі Дувірі`,
worldState_darvoStockMultiplier: `Множник запасів Дарво`, worldState_darvoStockMultiplier: `Множник Запасів Дарво`,
worldState_varziaFullyStocked: `Повний асортимент Варзії`, worldState_varziaFullyStocked: `Повний Асортимент Варзії`,
worldState_varziaOverride: `Зміна ротації Варзії`, worldState_varziaOverride: `Зміна Ротації Варзії`,
import_importNote: `Ви можете завантажити повну або часткову відповідь <code>inventory.php</code> або <code>getShip.php</code> (клієнтське представлення) тут.`, import_importNote: `Ви можете завантажити повну або часткову відповідь спорядження (клієнтське представлення) тут. Всі підтримувані поля <b>будуть перезаписані</b> у вашому акаунті.`,
import_importNote2: `Всі підтримувані поля <b>будуть перезаписані</b> у вашому акаунті.`,
import_submit: `Відправити`, import_submit: `Відправити`,
import_samples: `Приклад:`, import_samples: `Приклад:`,
import_samples_maxFocus: `Всі школи Фокусу макс. рівня`, import_samples_maxFocus: `Всі школи Фокуса максимального рівня`,
upgrade_Equilibrium: `Згустки здоров'я дають +|VAL|% енергії, згустки енергії дають +|VAL|% здоров'я.`, upgrade_Equilibrium: `+|VAL|% Енергія від підбирання здоров'я, +|VAL|% Здоров'я від підбирання енергії`,
upgrade_MeleeCritDamage: `+|VAL|% до критичної шкоди від холодної зброї.`, upgrade_MeleeCritDamage: `+|VAL|% Критична шкода ближнього бою`,
upgrade_PrimaryStatusChance: `+|VAL|% до ймовірності ефекту стану від основної зброї.`, upgrade_PrimaryStatusChance: `+|VAL|% Імовірність накладення ефекту стану основною зброєю`,
upgrade_SecondaryCritChance: `+|VAL|% до ймовірності критичної шкоди від допоміжної зброї.`, upgrade_SecondaryCritChance: `+|VAL|% Імовірність критичної шкоди допоміжною зброєю`,
upgrade_WarframeAbilityDuration: `+|VAL|% до тривалості дії здібностей.`, upgrade_WarframeAbilityDuration: `+|VAL|% Тривалість здібностей`,
upgrade_WarframeAbilityStrength: `+|VAL|% до потужності здібностей.`, upgrade_WarframeAbilityStrength: `+|VAL|% Потужність здібностей`,
upgrade_WarframeArmorMax: `+|VAL| до захисту.`, upgrade_WarframeArmorMax: `+|VAL| Захист`,
upgrade_WarframeBlastProc: `Відновлює +|VAL| щитів, коли ви вбиваєте ворога Вибуховою шкодою.`, upgrade_WarframeBlastProc: `+|VAL| Щит при вбивстві з Вибуховим Уронoм`,
upgrade_WarframeCastingSpeed: `+|VAL|% до швидкості застосування здібностей.`, upgrade_WarframeCastingSpeed: `+|VAL|% Швидкість Застосування Здібностей`,
upgrade_WarframeCorrosiveDamageBoost: `Дає +|VAL|% до шкоди від здібностей ворогам під впливом Корозійної шкоди.`, upgrade_WarframeCorrosiveDamageBoost: `+|VAL|% Урон Здібностей по ворогам, ураженим Корозією`,
upgrade_WarframeCorrosiveStack: `Збільшує макс. кількість накопичень Коррозійних ефектів стану на +|VAL|.`, upgrade_WarframeCorrosiveStack: `Збільшити макс. стаки Корозії на +|VAL|`,
upgrade_WarframeCritDamageBoost: `Дає +|VAL|% до критичної шкоди холодної зброї. Коли макс. енергія перевищує 500, то збільшення шкоди подвоюється.`, upgrade_WarframeCritDamageBoost: `+|VAL|% Критична шкода Ближнього Бою (Подвоюється при 500 Енергії)`,
upgrade_WarframeElectricDamage: `Дає +|VAL1|% до Електричної шкоди від основної зрої. Додатково дає +|VAL2|% за споряджений багряний, блакитний чи фіолетовий архонтовий уламок (Поєднується з модифікаторами).`, upgrade_WarframeElectricDamage: `+|VAL1|% Урон Електрикою Основним Озброєнням (+|VAL2|% за кожен додатковий Уламок)`,
upgrade_WarframeElectricDamageBoost: `Дає +|VAL|% до шкоди від здібностей ворогам під впливом Електричної шкоди.`, upgrade_WarframeElectricDamageBoost: `+|VAL|% Шкода Здібностей по ворогам, ураженим Електрикою`,
upgrade_WarframeEnergyMax: `+|VAL| до макс. енергії.`, upgrade_WarframeEnergyMax: `+|VAL| Макс. Енергія`,
upgrade_WarframeGlobeEffectEnergy: `+|VAL|% до дієвості згустків енергії.`, upgrade_WarframeGlobeEffectEnergy: `+|VAL|% Ефективність згустків Енергії`,
upgrade_WarframeGlobeEffectHealth: `+|VAL|% до дієвості згустків здоров'я.`, upgrade_WarframeGlobeEffectHealth: `+|VAL|% Ефективність згустків Здоров'я`,
upgrade_WarframeHealthMax: `+|VAL| до здоров'я.`, upgrade_WarframeHealthMax: `+|VAL| Макс. Здоров'я`,
upgrade_WarframeHPBoostFromImpact: `Отримайте +|VAL1| здоров'я за ворога, вбитого Вибуховою шкодою. Макс. — |VAL2| здоров'я.`, upgrade_WarframeHPBoostFromImpact: `+|VAL1| Здоров'я при вбивстві з Вибуховою шкодою (Макс. |VAL2| Здоров'я)`,
upgrade_WarframeParkourVelocity: `+|VAL|% до швидкості паркуру.`, upgrade_WarframeParkourVelocity: `+|VAL|% Швидкість Паркура`,
upgrade_WarframeRadiationDamageBoost: `Дає +|VAL|% до шкоди від здібностей ворогам під впливом Радіаційної шкоди.`, upgrade_WarframeRadiationDamageBoost: `+|VAL|% Шкода Здібностей по ворогам, ураженим Радіацією`,
upgrade_WarframeHealthRegen: `+|VAL| до відновлення здоров'я на секунду.`, upgrade_WarframeHealthRegen: `+|VAL| Здоров'я в секунду`,
upgrade_WarframeShieldMax: `+|VAL| до місткості щитів.`, upgrade_WarframeShieldMax: `+|VAL| Щиту`,
upgrade_WarframeStartingEnergy: `+|VAL|% до початкової макс. енергії.`, upgrade_WarframeStartingEnergy: `+|VAL|% Енергії при Спавні`,
upgrade_WarframeToxinDamage: `Токсичні ефекти стану завдаватимуть на +|VAL|% більше шкоди.`, upgrade_WarframeToxinDamage: `+|VAL|% Шкода Токсином`,
upgrade_WarframeToxinHeal: `Відновлює +|VAL| здоров'я за кожен раз як вороги отримують шкоду від Токсичних ефектів стану.`, upgrade_WarframeToxinHeal: `+|VAL| Здоров'я при нанесенні шкоди ворогам з Токсином`,
upgrade_WeaponCritBoostFromHeat: `Збільшує ймовірність критичної шкоди від допоміжної зброї на |VAL1|% щоразу, коли ви вбиваєте ворога під впливом Термічного ефекту стану. Накопичується до |VAL2|%.`, upgrade_WeaponCritBoostFromHeat: `+|VAL1|% Імовірність Критичної Шкоди Допоміжною Зброєю за кожного вбитого ворога, ураженого Термічною шкодою (Макс. |VAL2|%)`,
upgrade_AvatarAbilityRange: `+7.5% Досяжність Здібностей.`, upgrade_AvatarAbilityRange: `+7.5% Досяжність Здібностей`,
upgrade_AvatarAbilityEfficiency: `+5% Ощадливість Здібностей.`, upgrade_AvatarAbilityEfficiency: `+5% Ощадливість Здібностей`,
upgrade_AvatarEnergyRegen: `+0.5 Відновлення Енергії в секунду.`, upgrade_AvatarEnergyRegen: `+0.5 Відновлення Енергії в секунду`,
upgrade_AvatarEnemyRadar: `+5м Виявлення ворогів.`, upgrade_AvatarEnemyRadar: `+5m Виявлення ворогів`,
upgrade_AvatarLootRadar: `+7м Виявлення здобичі.`, upgrade_AvatarLootRadar: `+7m Виявлення здобичі`,
upgrade_WeaponAmmoMax: `+15% Макс. Набоїв.`, upgrade_WeaponAmmoMax: `+15% Макс. Набоїв`,
upgrade_EnemyArmorReductionAura: `-3% Захист Ворогів.`, upgrade_EnemyArmorReductionAura: `-3% Захист Ворогів`,
upgrade_OnExecutionAmmo: `+100% Заповнення Магазина Основного і Допоміжного Озброєння при вбивстві Милосердям.`, upgrade_OnExecutionAmmo: `+100% Заповнення Магазина Основного і Допоміжного Озброєння при вбивстві Милосердям`,
upgrade_OnExecutionHealthDrop: `+100% Імовірність Падіння згустка здоров'я при вбивстві Милосердям.`, upgrade_OnExecutionHealthDrop: `+100% Імовірність Падіння згустка Здоров'я при вбивстві Милосердям`,
upgrade_OnExecutionEnergyDrop: `+50% Імовірність Падіння згустка Енергії при вбивстві Милосердям.`, upgrade_OnExecutionEnergyDrop: `+50% Імовірність Падіння згустка Енергії при вбивстві Милосердям`,
upgrade_OnFailHackReset: `+50% Імовірність Повтора Зламу.`, upgrade_OnFailHackReset: `+50% Імовірність Повтора Зламу`,
upgrade_DamageReductionOnHack: `+75% Зменшення Шкоди під час Зламу.`, upgrade_DamageReductionOnHack: `+75% Зменшення Шкоди під час Зламу`,
upgrade_OnExecutionReviveCompanion: `Вбивства Милосердям зменшують час відновлення Компаньйона на 15 секунд.`, upgrade_OnExecutionReviveCompanion: `Вбивства Милосердям зменшують час відновлення Компаньйона на 15 секунд`,
upgrade_OnExecutionParkourSpeed: `+60% Швидкість Паркура після вбивства Милосердям на 15 секунд.`, upgrade_OnExecutionParkourSpeed: `+60% Швидкість Паркура після вбивства Милосердям на 15 секунд`,
upgrade_AvatarTimeLimitIncrease: `+8 секунд до Зламу.`, upgrade_AvatarTimeLimitIncrease: `+8 секунд до Зламу`,
upgrade_ElectrifyOnHack: `Шокувати ворогів в межах 20м під час Зламу.`, upgrade_ElectrifyOnHack: `Шокувати ворогів в межах 20 метрів під час Зламу`,
upgrade_OnExecutionTerrify: `+50% Імовірність, що вороги в межах 15м будуть тремтіти від страху протягом 8 секунд після вбивства Милосердям.`, upgrade_OnExecutionTerrify: `+50% Імовірність, що вороги в межах 15 метрів будуть тремтіти від страху протягом 8 секунд після вбивства Милосердям`,
upgrade_OnHackLockers: `Відкрити 5 шафок в межах 20м після Зламу.`, upgrade_OnHackLockers: `Відкрити 5 шафок в межах 20 метрів після Зламу`,
upgrade_OnExecutionBlind: `Засліпити ворогів в межах 18м після вбивства Милосердям.`, upgrade_OnExecutionBlind: `Засліпити ворогів в межах 18 метрів після вбивства Милосердям`,
upgrade_OnExecutionDrainPower: `Наступне застосування здібності отримує +50% Потужності Здібності після вбивства Милосердям.`, upgrade_OnExecutionDrainPower: `Наступне застосування здібності отримує +50% Потужності Здібності після вбивства Милосердям`,
upgrade_OnHackSprintSpeed: `+75% Швидкість Бігу протягом 15 секунд після Зламу.`, upgrade_OnHackSprintSpeed: `+75% Швидкість Бігу протягом 15 секунд після Зламу`,
upgrade_SwiftExecute: `+50% Швидкість Вбивства Милосердям.`, upgrade_SwiftExecute: `+50% Швидкість Вбивства Милосердям`,
upgrade_OnHackInvis: `Невидимість протягом 15 секунд після Зламу.`, upgrade_OnHackInvis: `Невидимість протягом 15 секунд після Зламу`,
damageType_Electricity: `Електричний`, damageType_Electricity: `Електричний`,
damageType_Fire: `Термічний`, damageType_Fire: `Трммічний`,
damageType_Freeze: `Крижаний`, damageType_Freeze: `Крижаний`,
damageType_Impact: `Ударний`, damageType_Impact: `Ударний`,
damageType_Magnetic: `Магнетичний`, damageType_Magnetic: `Магнетичний`,

View File

@ -257,10 +257,6 @@ dict = {
worldState_hallowedNightmaresRewards: `[UNTRANSLATED] Hallowed Nightmares Rewards`, worldState_hallowedNightmaresRewards: `[UNTRANSLATED] Hallowed Nightmares Rewards`,
worldState_proxyRebellion: `机械叛乱`, worldState_proxyRebellion: `机械叛乱`,
worldState_proxyRebellionRewards: `[UNTRANSLATED] Proxy Rebellion Rewards`, worldState_proxyRebellionRewards: `[UNTRANSLATED] Proxy Rebellion Rewards`,
worldState_bellyOfTheBeast: `兽之腹`,
worldState_bellyOfTheBeastProgressOverride: `[UNTRANSLATED] Belly of the Beast Progress`,
worldState_eightClaw: `八爪`,
worldState_eightClawProgressOverride: `[UNTRANSLATED] Eight Claw Progress`,
worldState_from_year: `[UNTRANSLATED] from |YEAR|`, worldState_from_year: `[UNTRANSLATED] from |YEAR|`,
worldState_pre_year: `[UNTRANSLATED] pre |YEAR|`, worldState_pre_year: `[UNTRANSLATED] pre |YEAR|`,
worldState_incompatibleWith: `[UNTRANSLATED] Incompatible with:`, worldState_incompatibleWith: `[UNTRANSLATED] Incompatible with:`,
@ -307,8 +303,7 @@ dict = {
worldState_varziaFullyStocked: `瓦奇娅开启全部库存商品`, worldState_varziaFullyStocked: `瓦奇娅开启全部库存商品`,
worldState_varziaOverride: `瓦奇娅(Prime重生)轮换状态`, worldState_varziaOverride: `瓦奇娅(Prime重生)轮换状态`,
import_importNote: `[UNTRANSLATED] You can provide a full or partial <code>inventory.php</code> or <code>getShip.php</code> response (client representation) here.`, import_importNote: `您可以在此处提供完整或部分库存响应(客户端表示)。支持的所有字段<b>将被覆盖</b>到您的账户中。`,
import_importNote2: `支持的所有字段<b>将被覆盖</b>到您的账户中。`,
import_submit: `提交`, import_submit: `提交`,
import_samples: `示例:`, import_samples: `示例:`,
import_samples_maxFocus: `所有专精学派完全精通`, import_samples_maxFocus: `所有专精学派完全精通`,