Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
a71e18eea7 |
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)
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
|
@ -47,22 +47,16 @@ import {
|
|||||||
import {
|
import {
|
||||||
IApartmentClient,
|
IApartmentClient,
|
||||||
IApartmentDatabase,
|
IApartmentDatabase,
|
||||||
ICustomizationInfoClient,
|
|
||||||
ICustomizationInfoDatabase,
|
|
||||||
IFavouriteLoadout,
|
IFavouriteLoadout,
|
||||||
IFavouriteLoadoutDatabase,
|
IFavouriteLoadoutDatabase,
|
||||||
IGetShipResponse,
|
IGetShipResponse,
|
||||||
IOrbiterClient,
|
IOrbiterClient,
|
||||||
IOrbiterDatabase,
|
IOrbiterDatabase,
|
||||||
IPersonalRoomsDatabase,
|
IPersonalRoomsDatabase,
|
||||||
IPlacedDecosClient,
|
|
||||||
IPlacedDecosDatabase,
|
|
||||||
IPlantClient,
|
IPlantClient,
|
||||||
IPlantDatabase,
|
IPlantDatabase,
|
||||||
IPlanterClient,
|
IPlanterClient,
|
||||||
IPlanterDatabase,
|
IPlanterDatabase,
|
||||||
IRoomClient,
|
|
||||||
IRoomDatabase,
|
|
||||||
ITailorShop,
|
ITailorShop,
|
||||||
ITailorShopDatabase
|
ITailorShopDatabase
|
||||||
} from "@/src/types/personalRoomsTypes";
|
} from "@/src/types/personalRoomsTypes";
|
||||||
@ -452,30 +446,6 @@ export const importLoadOutPresets = (db: ILoadoutDatabase, client: ILoadOutPrese
|
|||||||
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 => {
|
const convertShip = (client: IOrbiterClient): IOrbiterDatabase => {
|
||||||
return {
|
return {
|
||||||
...client,
|
...client,
|
||||||
@ -483,7 +453,6 @@ const convertShip = (client: IOrbiterClient): IOrbiterDatabase => {
|
|||||||
...client.ShipInterior,
|
...client.ShipInterior,
|
||||||
Colors: Array.isArray(client.ShipInterior.Colors) ? {} : client.ShipInterior.Colors
|
Colors: Array.isArray(client.ShipInterior.Colors) ? {} : client.ShipInterior.Colors
|
||||||
},
|
},
|
||||||
Rooms: client.Rooms.map(convertRoom),
|
|
||||||
FavouriteLoadoutId: client.FavouriteLoadoutId ? new Types.ObjectId(client.FavouriteLoadoutId.$oid) : undefined
|
FavouriteLoadoutId: client.FavouriteLoadoutId ? new Types.ObjectId(client.FavouriteLoadoutId.$oid) : undefined
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -512,7 +481,6 @@ const convertFavouriteLoadout = (client: IFavouriteLoadout): IFavouriteLoadoutDa
|
|||||||
const convertApartment = (client: IApartmentClient): IApartmentDatabase => {
|
const convertApartment = (client: IApartmentClient): IApartmentDatabase => {
|
||||||
return {
|
return {
|
||||||
...client,
|
...client,
|
||||||
Rooms: client.Rooms.map(convertRoom),
|
|
||||||
Gardening: { Planters: client.Gardening.Planters.map(convertPlanter) },
|
Gardening: { Planters: client.Gardening.Planters.map(convertPlanter) },
|
||||||
FavouriteLoadouts: client.FavouriteLoadouts ? client.FavouriteLoadouts.map(convertFavouriteLoadout) : []
|
FavouriteLoadouts: client.FavouriteLoadouts ? client.FavouriteLoadouts.map(convertFavouriteLoadout) : []
|
||||||
};
|
};
|
||||||
@ -521,7 +489,6 @@ const convertApartment = (client: IApartmentClient): IApartmentDatabase => {
|
|||||||
const convertTailorShop = (client: ITailorShop): ITailorShopDatabase => {
|
const convertTailorShop = (client: ITailorShop): ITailorShopDatabase => {
|
||||||
return {
|
return {
|
||||||
...client,
|
...client,
|
||||||
Rooms: client.Rooms.map(convertRoom),
|
|
||||||
Colors: Array.isArray(client.Colors) ? {} : client.Colors,
|
Colors: Array.isArray(client.Colors) ? {} : client.Colors,
|
||||||
FavouriteLoadouts: client.FavouriteLoadouts ? client.FavouriteLoadouts.map(convertFavouriteLoadout) : []
|
FavouriteLoadouts: client.FavouriteLoadouts ? client.FavouriteLoadouts.map(convertFavouriteLoadout) : []
|
||||||
};
|
};
|
||||||
|
@ -1309,27 +1309,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`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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: {
|
||||||
@ -2635,23 +2632,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 +3017,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,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,7 +89,7 @@ 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;
|
||||||
@ -103,7 +97,7 @@ export interface IApartmentClient {
|
|||||||
|
|
||||||
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,11 +206,10 @@ 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[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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": [],
|
||||||
|
@ -1049,13 +1049,8 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-fill">
|
<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>
|
||||||
<label class="form-label" for="worldState.bellyOfTheBeastProgressOverride" data-loc="worldState_bellyOfTheBeastProgressOverride"></label>
|
<input id="worldState.bellyOfTheBeastProgressOverride" class="form-control" type="number" min="0" max="100" data-default="0" />
|
||||||
<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>
|
</div>
|
||||||
<div class="form-group mt-2 d-flex gap-2">
|
<div class="form-group mt-2 d-flex gap-2">
|
||||||
@ -1067,13 +1062,8 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-fill">
|
<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>
|
||||||
<label class="form-label" for="worldState.eightClawProgressOverride" data-loc="worldState_eightClawProgressOverride"></label>
|
<input id="worldState.eightClawProgressOverride" class="form-control" type="number" min="0" max="100" data-default="0" />
|
||||||
<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>
|
</div>
|
||||||
<div class="form-group mt-2">
|
<div class="form-group mt-2">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user