Compare commits
No commits in common. "main" and "main" have entirely different histories.
@ -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
8
package-lock.json
generated
@ -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",
|
||||||
|
@ -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",
|
||||||
|
@ -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)
|
||||||
|
@ -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({});
|
||||||
|
@ -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({});
|
|
||||||
};
|
|
@ -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 = "";
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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>;
|
||||||
}
|
}
|
||||||
|
@ -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 }
|
||||||
);
|
);
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
@ -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);
|
|
||||||
};
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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(
|
||||||
|
@ -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();
|
||||||
};
|
};
|
||||||
|
@ -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"
|
|
||||||
}
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
@ -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 {
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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> };
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
|
||||||
}
|
|
||||||
}
|
|
@ -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": [],
|
||||||
|
@ -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>
|
||||||
|
@ -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`,
|
||||||
|
@ -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`,
|
||||||
|
@ -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`,
|
||||||
|
@ -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`,
|
||||||
|
@ -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: `Светлая тема`,
|
||||||
|
@ -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: `Магнетичний`,
|
||||||
|
@ -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: `所有专精学派完全精通`,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user