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 { ExportMisc, ExportRecipes } from "warframe-public-export-plus";
 | 
				
			||||||
import { getRecipe } from "@/src/services/itemDataService";
 | 
					import { getRecipe } from "@/src/services/itemDataService";
 | 
				
			||||||
import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
 | 
					import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
 | 
				
			||||||
 | 
					import { toMongoDate } from "@/src/helpers/inventoryHelpers";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const infestedFoundryController: RequestHandler = async (req, res) => {
 | 
					export const infestedFoundryController: RequestHandler = async (req, res) => {
 | 
				
			||||||
    const accountId = await getAccountIdForRequest(req);
 | 
					    const accountId = await getAccountIdForRequest(req);
 | 
				
			||||||
@ -114,6 +115,9 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
            inventory.InfestedFoundry ??= {};
 | 
					            inventory.InfestedFoundry ??= {};
 | 
				
			||||||
            inventory.InfestedFoundry.InvigorationIndex = request.OfferingsIndex;
 | 
					            inventory.InfestedFoundry.InvigorationIndex = request.OfferingsIndex;
 | 
				
			||||||
            inventory.InfestedFoundry.InvigorationSuitOfferings = request.SuitTypes;
 | 
					            inventory.InfestedFoundry.InvigorationSuitOfferings = request.SuitTypes;
 | 
				
			||||||
 | 
					            if (request.Extra) {
 | 
				
			||||||
 | 
					                inventory.InfestedFoundry.InvigorationsApplied = 0;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            await inventory.save();
 | 
					            await inventory.save();
 | 
				
			||||||
            res.json({
 | 
					            res.json({
 | 
				
			||||||
                InventoryChanges: {
 | 
					                InventoryChanges: {
 | 
				
			||||||
@ -184,6 +188,34 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
            break;
 | 
					            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:
 | 
					        default:
 | 
				
			||||||
            throw new Error(`unhandled infestedFoundry mode: ${String(req.query.mode)}`);
 | 
					            throw new Error(`unhandled infestedFoundry mode: ${String(req.query.mode)}`);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -268,3 +300,11 @@ interface IHelminthOfferingsUpdate {
 | 
				
			|||||||
    SuitTypes: string[];
 | 
					    SuitTypes: string[];
 | 
				
			||||||
    Extra: boolean;
 | 
					    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,
 | 
					        UnlockLevel: Number,
 | 
				
			||||||
        Expiry: Date,
 | 
					        Expiry: Date,
 | 
				
			||||||
        SkillTree: String,
 | 
					        SkillTree: String,
 | 
				
			||||||
 | 
					        OffensiveUpgrade: String,
 | 
				
			||||||
 | 
					        DefensiveUpgrade: String,
 | 
				
			||||||
 | 
					        UpgradesExpiry: Date,
 | 
				
			||||||
        ArchonCrystalUpgrades: { type: [ArchonCrystalUpgradeSchema], default: undefined }
 | 
					        ArchonCrystalUpgrades: { type: [ArchonCrystalUpgradeSchema], default: undefined }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    { id: false }
 | 
					    { id: false }
 | 
				
			||||||
 | 
				
			|||||||
@ -78,8 +78,9 @@ export interface IEquipmentSelection {
 | 
				
			|||||||
    hide?: boolean;
 | 
					    hide?: boolean;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface IEquipmentClient extends Omit<IEquipmentDatabase, "_id"> {
 | 
					export interface IEquipmentClient extends Omit<IEquipmentDatabase, "_id" | "UpgradesExpiry"> {
 | 
				
			||||||
    ItemId: IOid;
 | 
					    ItemId: IOid;
 | 
				
			||||||
 | 
					    UpgradesExpiry?: IMongoDate;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export enum EquipmentFeatures {
 | 
					export enum EquipmentFeatures {
 | 
				
			||||||
@ -112,6 +113,9 @@ export interface IEquipmentDatabase {
 | 
				
			|||||||
    UnlockLevel?: number;
 | 
					    UnlockLevel?: number;
 | 
				
			||||||
    Expiry?: IMongoDate;
 | 
					    Expiry?: IMongoDate;
 | 
				
			||||||
    SkillTree?: string;
 | 
					    SkillTree?: string;
 | 
				
			||||||
 | 
					    OffensiveUpgrade?: string;
 | 
				
			||||||
 | 
					    DefensiveUpgrade?: string;
 | 
				
			||||||
 | 
					    UpgradesExpiry?: Date;
 | 
				
			||||||
    ArchonCrystalUpgrades?: IArchonCrystalUpgrade[];
 | 
					    ArchonCrystalUpgrades?: IArchonCrystalUpgrade[];
 | 
				
			||||||
    _id: Types.ObjectId;
 | 
					    _id: Types.ObjectId;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user