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