feat: remove incarnon #688
@ -9,27 +9,40 @@ 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");
 | 
			
		||||
 | 
			
		||||
    const recipe = getRecipe(payload.Recipe)!;
 | 
			
		||||
    addMiscItems(
 | 
			
		||||
        inventory,
 | 
			
		||||
        recipe.ingredients.map(x => ({ ItemType: x.ItemType, ItemCount: x.ItemCount * -1 }))
 | 
			
		||||
    );
 | 
			
		||||
    if (payload.Action == "EWA_INSTALL") {
 | 
			
		||||
        addMiscItems(
 | 
			
		||||
            inventory,
 | 
			
		||||
            recipe.ingredients.map(x => ({ ItemType: x.ItemType, ItemCount: x.ItemCount * -1 }))
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
    const item = inventory[payload.Category].find(item => item._id.toString() == (req.query.ItemId as string))!;
 | 
			
		||||
    item.Features ??= 0;
 | 
			
		||||
    item.Features |= EquipmentFeatures.INCARNON_GENESIS;
 | 
			
		||||
        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";
 | 
			
		||||
        item.SkillTree = "0";
 | 
			
		||||
 | 
			
		||||
    inventory.EvolutionProgress ??= [];
 | 
			
		||||
    if (!inventory.EvolutionProgress.find(entry => entry.ItemType == payload.EvoType)) {
 | 
			
		||||
        inventory.EvolutionProgress.push({
 | 
			
		||||
            Progress: 0,
 | 
			
		||||
            Rank: 1,
 | 
			
		||||
            ItemType: payload.EvoType
 | 
			
		||||
        });
 | 
			
		||||
        inventory.EvolutionProgress ??= [];
 | 
			
		||||
        if (!inventory.EvolutionProgress.find(entry => entry.ItemType == payload.EvoType)) {
 | 
			
		||||
            inventory.EvolutionProgress.push({
 | 
			
		||||
                Progress: 0,
 | 
			
		||||
                Rank: 1,
 | 
			
		||||
                ItemType: payload.EvoType
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
    } else if (payload.Action == "EWA_UNINSTALL") {
 | 
			
		||||
        addMiscItems(inventory, [
 | 
			
		||||
            {
 | 
			
		||||
                ItemType: recipe.resultType,
 | 
			
		||||
                ItemCount: 1
 | 
			
		||||
            }
 | 
			
		||||
        ]);
 | 
			
		||||
 | 
			
		||||
| 
					
	
	
	
	
	
	
	
	 | 
			||||
        const item = inventory[payload.Category].find(item => item._id.toString() == (req.query.ItemId as string))!;
 | 
			
		||||
        item.Features! &= ~EquipmentFeatures.INCARNON_GENESIS;
 | 
			
		||||
    } else {
 | 
			
		||||
        throw new Error(`unexpected evolve weapon action: ${payload.Action}`);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    await inventory.save();
 | 
			
		||||
@ -37,7 +50,7 @@ export const evolveWeaponController: RequestHandler = async (req, res) => {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
interface IEvolveWeaponRequest {
 | 
			
		||||
    Action: "EWA_INSTALL";
 | 
			
		||||
    Action: string;
 | 
			
		||||
    Category: WeaponTypeInternal;
 | 
			
		||||
    Recipe: string; // e.g. "/Lotus/Types/Items/MiscItems/IncarnonAdapters/UnlockerBlueprints/DespairIncarnonBlueprint"
 | 
			
		||||
    UninstallRecipe: "";
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	
💡 Codebase verification
Based on the analysis of the codebase, I can now provide the final response:
The non-null assertion is risky and should be handled properly
Looking at the error handling patterns in the codebase, particularly in
gildWeaponController.ts, there's a consistent pattern of checking for item existence and throwing descriptive errors. The current use of non-null assertion (!) inevolveWeaponController.tscould lead to runtime errors if the item is not found.The suggested changes are:
gildWeaponController.tsthat properly validate item existence🔗 Analysis chain
Verify item existence before using the non-null assertion operator.
Using
!onfind(...)can cause a runtime error iffindreturnsundefined. Consider throwing a descriptive error or gracefully handling the missing item.Let me gather more information about the codebase to verify the concern.
🏁 Scripts executed
The following scripts were executed for the analysis:
Error: No shell scripts found
Script:
Length of output: 12272