forked from OpenWF/SpaceNinjaServer
feat: invigorations (#715)
This commit is contained in:
parent
6baad5d008
commit
506e77db6c
@ -7,6 +7,7 @@ import { IConsumedSuit, IInfestedFoundry, IMiscItem, ITypeCount } from "@/src/ty
|
||||
import { ExportMisc, ExportRecipes } from "warframe-public-export-plus";
|
||||
import { getRecipe } from "@/src/services/itemDataService";
|
||||
import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
|
||||
import { toMongoDate } from "@/src/helpers/inventoryHelpers";
|
||||
|
||||
export const infestedFoundryController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
@ -114,6 +115,9 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
|
||||
inventory.InfestedFoundry ??= {};
|
||||
inventory.InfestedFoundry.InvigorationIndex = request.OfferingsIndex;
|
||||
inventory.InfestedFoundry.InvigorationSuitOfferings = request.SuitTypes;
|
||||
if (request.Extra) {
|
||||
inventory.InfestedFoundry.InvigorationsApplied = 0;
|
||||
}
|
||||
await inventory.save();
|
||||
res.json({
|
||||
InventoryChanges: {
|
||||
@ -184,6 +188,34 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
|
||||
break;
|
||||
}
|
||||
|
||||
case "u": {
|
||||
const request = getJSONfromString(String(req.body)) as IHelminthInvigorationRequest;
|
||||
const inventory = await getInventory(accountId);
|
||||
const suit = inventory.Suits.find(x => x._id.toString() == request.SuitId.$oid)!;
|
||||
const upgradesExpiry = new Date(new Date().getTime() + 7 * 24 * 60 * 60 * 1000);
|
||||
suit.OffensiveUpgrade = request.OffensiveUpgradeType;
|
||||
suit.DefensiveUpgrade = request.DefensiveUpgradeType;
|
||||
suit.UpgradesExpiry = upgradesExpiry;
|
||||
addInfestedFoundryXP(inventory.InfestedFoundry!, 4800_00);
|
||||
for (let i = 0; i != request.ResourceTypes.length; ++i) {
|
||||
inventory.InfestedFoundry!.Resources!.find(x => x.ItemType == request.ResourceTypes[i])!.Count -=
|
||||
request.ResourceCosts[i];
|
||||
}
|
||||
inventory.InfestedFoundry!.InvigorationsApplied ??= 0;
|
||||
inventory.InfestedFoundry!.InvigorationsApplied += 1;
|
||||
await inventory.save();
|
||||
res.json({
|
||||
SuitId: request.SuitId,
|
||||
OffensiveUpgrade: request.OffensiveUpgradeType,
|
||||
DefensiveUpgrade: request.DefensiveUpgradeType,
|
||||
UpgradesExpiry: toMongoDate(upgradesExpiry),
|
||||
InventoryChanges: {
|
||||
InfestedFoundry: inventory.toJSON().InfestedFoundry
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
throw new Error(`unhandled infestedFoundry mode: ${String(req.query.mode)}`);
|
||||
}
|
||||
@ -268,3 +300,11 @@ interface IHelminthOfferingsUpdate {
|
||||
SuitTypes: string[];
|
||||
Extra: boolean;
|
||||
}
|
||||
|
||||
interface IHelminthInvigorationRequest {
|
||||
SuitId: IOid;
|
||||
OffensiveUpgradeType: string;
|
||||
DefensiveUpgradeType: string;
|
||||
ResourceTypes: string[];
|
||||
ResourceCosts: number[];
|
||||
}
|
||||
|
@ -233,6 +233,9 @@ const EquipmentSchema = new Schema<IEquipmentDatabase>(
|
||||
UnlockLevel: Number,
|
||||
Expiry: Date,
|
||||
SkillTree: String,
|
||||
OffensiveUpgrade: String,
|
||||
DefensiveUpgrade: String,
|
||||
UpgradesExpiry: Date,
|
||||
ArchonCrystalUpgrades: { type: [ArchonCrystalUpgradeSchema], default: undefined }
|
||||
},
|
||||
{ id: false }
|
||||
|
@ -78,8 +78,9 @@ export interface IEquipmentSelection {
|
||||
hide?: boolean;
|
||||
}
|
||||
|
||||
export interface IEquipmentClient extends Omit<IEquipmentDatabase, "_id"> {
|
||||
export interface IEquipmentClient extends Omit<IEquipmentDatabase, "_id" | "UpgradesExpiry"> {
|
||||
ItemId: IOid;
|
||||
UpgradesExpiry?: IMongoDate;
|
||||
}
|
||||
|
||||
export enum EquipmentFeatures {
|
||||
@ -112,6 +113,9 @@ export interface IEquipmentDatabase {
|
||||
UnlockLevel?: number;
|
||||
Expiry?: IMongoDate;
|
||||
SkillTree?: string;
|
||||
OffensiveUpgrade?: string;
|
||||
DefensiveUpgrade?: string;
|
||||
UpgradesExpiry?: Date;
|
||||
ArchonCrystalUpgrades?: IArchonCrystalUpgrade[];
|
||||
_id: Types.ObjectId;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user