forked from OpenWF/SpaceNinjaServer
		
	
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { RequestHandler } from "express";
 | 
						|
import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
						|
import { getInventory } from "@/src/services/inventoryService";
 | 
						|
import { getJSONfromString } from "@/src/helpers/stringHelpers";
 | 
						|
import { WeaponTypeInternal } from "@/src/services/itemDataService";
 | 
						|
import { EquipmentFeatures } from "@/src/types/inventoryTypes/commonInventoryTypes";
 | 
						|
 | 
						|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
 | 
						|
export const evolveWeaponController: RequestHandler = async (req, res) => {
 | 
						|
    const accountId = await getAccountIdForRequest(req);
 | 
						|
    const inventory = await getInventory(accountId);
 | 
						|
    const payload = getJSONfromString(String(req.body)) as IEvolveWeaponRequest;
 | 
						|
    console.assert(payload.Action == "EWA_INSTALL");
 | 
						|
 | 
						|
    // TODO: We should remove the Genesis item & its resources, but currently we don't know these "recipes".
 | 
						|
 | 
						|
    const item = inventory[payload.Category].find(item => item._id.toString() == (req.query.ItemId as string))!;
 | 
						|
    item.Features ??= 0;
 | 
						|
    item.Features |= EquipmentFeatures.INCARNON_GENESIS;
 | 
						|
 | 
						|
    item.SkillTree = "0";
 | 
						|
 | 
						|
    inventory.EvolutionProgress ??= [];
 | 
						|
    if (!inventory.EvolutionProgress.find(entry => entry.ItemType == payload.EvoType)) {
 | 
						|
        inventory.EvolutionProgress.push({
 | 
						|
            Progress: 0,
 | 
						|
            Rank: 1,
 | 
						|
            ItemType: payload.EvoType
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
    await inventory.save();
 | 
						|
    res.end();
 | 
						|
};
 | 
						|
 | 
						|
interface IEvolveWeaponRequest {
 | 
						|
    Action: "EWA_INSTALL";
 | 
						|
    Category: WeaponTypeInternal;
 | 
						|
    Recipe: string; // e.g. "/Lotus/Types/Items/MiscItems/IncarnonAdapters/UnlockerBlueprints/DespairIncarnonBlueprint"
 | 
						|
    UninstallRecipe: "";
 | 
						|
    EvoType: string; // e.g. "/Lotus/Weapons/Tenno/ThrowingWeapons/StalkerKunai"
 | 
						|
}
 |