feat: give skiajati and umbra mods alongside umbra, with max-rank and potatoes
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Build / build (pull_request) Successful in 1m29s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Build / build (pull_request) Successful in 1m29s
				
			This commit is contained in:
		
							parent
							
								
									1dffcf979f
								
							
						
					
					
						commit
						e4aa501210
					
				@ -14,7 +14,9 @@ import {
 | 
			
		||||
    addRecipes,
 | 
			
		||||
    occupySlot,
 | 
			
		||||
    combineInventoryChanges,
 | 
			
		||||
    addKubrowPetPrint
 | 
			
		||||
    addKubrowPetPrint,
 | 
			
		||||
    addPowerSuit,
 | 
			
		||||
    addEquipment
 | 
			
		||||
} from "@/src/services/inventoryService";
 | 
			
		||||
import { IInventoryChanges } from "@/src/types/purchaseTypes";
 | 
			
		||||
import { InventorySlot, IPendingRecipeDatabase } from "@/src/types/inventoryTypes/inventoryTypes";
 | 
			
		||||
@ -22,7 +24,7 @@ import { toOid2 } from "@/src/helpers/inventoryHelpers";
 | 
			
		||||
import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
 | 
			
		||||
import { IRecipe } from "warframe-public-export-plus";
 | 
			
		||||
import { config } from "@/src/services/configService";
 | 
			
		||||
import { IEquipmentClient, Status } from "@/src/types/equipmentTypes";
 | 
			
		||||
import { EquipmentFeatures, IEquipmentClient, Status } from "@/src/types/equipmentTypes";
 | 
			
		||||
 | 
			
		||||
interface IClaimCompletedRecipeRequest {
 | 
			
		||||
    RecipeIds: IOid[];
 | 
			
		||||
@ -124,6 +126,57 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) =
 | 
			
		||||
            const pet = inventory.KubrowPets.id(pendingRecipe.KubrowPet!)!;
 | 
			
		||||
            addKubrowPetPrint(inventory, pet, InventoryChanges);
 | 
			
		||||
        } else if (recipe.secretIngredientAction != "SIA_UNBRAND") {
 | 
			
		||||
            if (recipe.resultType == "/Lotus/Powersuits/Excalibur/ExcaliburUmbra") {
 | 
			
		||||
                // Quite the special case here...
 | 
			
		||||
                // We don't just get Umbra, but also Skiajati and Umbra Mods. Both items are max rank, potatoed, and with the mods are pre-installed.
 | 
			
		||||
                // Source: https://wiki.warframe.com/w/The_Sacrifice, https://wiki.warframe.com/w/Excalibur/Umbra, https://wiki.warframe.com/w/Skiajati
 | 
			
		||||
 | 
			
		||||
                const umbraModA = (await addItem(inventory, "/Lotus/Upgrades/Mods/Sets/Umbra/WarframeUmbraModA"))
 | 
			
		||||
                    .Upgrades![0];
 | 
			
		||||
                const umbraModB = (await addItem(inventory, "/Lotus/Upgrades/Mods/Sets/Umbra/WarframeUmbraModB"))
 | 
			
		||||
                    .Upgrades![0];
 | 
			
		||||
                const umbraModC = (await addItem(inventory, "/Lotus/Upgrades/Mods/Sets/Umbra/WarframeUmbraModC"))
 | 
			
		||||
                    .Upgrades![0];
 | 
			
		||||
                const sacrificeModA = (
 | 
			
		||||
                    await addItem(inventory, "/Lotus/Upgrades/Mods/Sets/Sacrifice/MeleeSacrificeModA")
 | 
			
		||||
                ).Upgrades![0];
 | 
			
		||||
                const sacrificeModB = (
 | 
			
		||||
                    await addItem(inventory, "/Lotus/Upgrades/Mods/Sets/Sacrifice/MeleeSacrificeModB")
 | 
			
		||||
                ).Upgrades![0];
 | 
			
		||||
                InventoryChanges.Upgrades ??= [];
 | 
			
		||||
                InventoryChanges.Upgrades.push(umbraModA, umbraModB, umbraModC, sacrificeModA, sacrificeModB);
 | 
			
		||||
 | 
			
		||||
                await addPowerSuit(
 | 
			
		||||
                    inventory,
 | 
			
		||||
                    "/Lotus/Powersuits/Excalibur/ExcaliburUmbra",
 | 
			
		||||
                    {
 | 
			
		||||
                        Configs: [{ Upgrades: [umbraModA.ItemId.$oid, umbraModB.ItemId.$oid, umbraModC.ItemId.$oid] }],
 | 
			
		||||
                        XP: 900_000,
 | 
			
		||||
                        Features: EquipmentFeatures.DOUBLE_CAPACITY
 | 
			
		||||
                    },
 | 
			
		||||
                    InventoryChanges
 | 
			
		||||
                );
 | 
			
		||||
                inventory.XPInfo.push({
 | 
			
		||||
                    ItemType: "/Lotus/Powersuits/Excalibur/ExcaliburUmbra",
 | 
			
		||||
                    XP: 900_000
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
                addEquipment(
 | 
			
		||||
                    inventory,
 | 
			
		||||
                    "Melee",
 | 
			
		||||
                    "/Lotus/Weapons/Tenno/Melee/Swords/UmbraKatana/UmbraKatana",
 | 
			
		||||
                    {
 | 
			
		||||
                        Configs: [{ Upgrades: [sacrificeModA.ItemId.$oid, sacrificeModB.ItemId.$oid] }],
 | 
			
		||||
                        XP: 450_000,
 | 
			
		||||
                        Features: EquipmentFeatures.DOUBLE_CAPACITY
 | 
			
		||||
                    },
 | 
			
		||||
                    InventoryChanges
 | 
			
		||||
                );
 | 
			
		||||
                inventory.XPInfo.push({
 | 
			
		||||
                    ItemType: "/Lotus/Weapons/Tenno/Melee/Swords/UmbraKatana/UmbraKatana",
 | 
			
		||||
                    XP: 450_000
 | 
			
		||||
                });
 | 
			
		||||
            } else {
 | 
			
		||||
                InventoryChanges = {
 | 
			
		||||
                    ...InventoryChanges,
 | 
			
		||||
                    ...(await addItem(
 | 
			
		||||
@ -136,6 +189,7 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) =
 | 
			
		||||
                    ))
 | 
			
		||||
                };
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (
 | 
			
		||||
            config.claimingBlueprintRefundsIngredients &&
 | 
			
		||||
            recipe.secretIngredientAction != "SIA_CREATE_KUBROW" // Can't refund the egg
 | 
			
		||||
 | 
			
		||||
@ -482,11 +482,14 @@ export const addItem = async (
 | 
			
		||||
            if (quantity != 1) {
 | 
			
		||||
                logger.warn(`adding 1 of ${typeName} ${targetFingerprint} even tho quantity ${quantity} was requested`);
 | 
			
		||||
            }
 | 
			
		||||
            const upgrade =
 | 
			
		||||
                inventory.Upgrades[
 | 
			
		||||
                    inventory.Upgrades.push({
 | 
			
		||||
                        ItemType: typeName,
 | 
			
		||||
                        UpgradeFingerprint: targetFingerprint
 | 
			
		||||
            });
 | 
			
		||||
            return {}; // there's not exactly a common "InventoryChanges" format for these
 | 
			
		||||
                    }) - 1
 | 
			
		||||
                ];
 | 
			
		||||
            return { Upgrades: [upgrade.toJSON<IUpgradeClient>()] };
 | 
			
		||||
        }
 | 
			
		||||
        const changes = [
 | 
			
		||||
            {
 | 
			
		||||
 | 
			
		||||
@ -8,7 +8,8 @@ import {
 | 
			
		||||
    IRecentVendorPurchaseClient,
 | 
			
		||||
    TEquipmentKey,
 | 
			
		||||
    ICrewMemberClient,
 | 
			
		||||
    IKubrowPetPrintClient
 | 
			
		||||
    IKubrowPetPrintClient,
 | 
			
		||||
    IUpgradeClient
 | 
			
		||||
} from "@/src/types/inventoryTypes/inventoryTypes";
 | 
			
		||||
 | 
			
		||||
export enum PurchaseSource {
 | 
			
		||||
@ -80,6 +81,7 @@ export type IInventoryChanges = {
 | 
			
		||||
    RecentVendorPurchases?: IRecentVendorPurchaseClient; // < 38.5.0
 | 
			
		||||
    CrewMembers?: ICrewMemberClient[];
 | 
			
		||||
    KubrowPetPrints?: IKubrowPetPrintClient[];
 | 
			
		||||
    Upgrades?: IUpgradeClient[]; // TOVERIFY
 | 
			
		||||
} & Record<
 | 
			
		||||
        Exclude<
 | 
			
		||||
            string,
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user