fix: don't set IsNew flag for starting gear (#1859)
Reviewed-on: OpenWF/SpaceNinjaServer#1859 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									4d4f885c8e
								
							
						
					
					
						commit
						75c011e3cb
					
				@ -62,14 +62,7 @@ export const crewShipIdentifySalvageController: RequestHandler = async (req, res
 | 
				
			|||||||
                } satisfies IInnateDamageFingerprint)
 | 
					                } satisfies IInnateDamageFingerprint)
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        addEquipment(
 | 
					        addEquipment(inventory, "CrewShipSalvagedWeapons", payload.ItemType, defaultOverwrites, inventoryChanges);
 | 
				
			||||||
            inventory,
 | 
					 | 
				
			||||||
            "CrewShipSalvagedWeapons",
 | 
					 | 
				
			||||||
            payload.ItemType,
 | 
					 | 
				
			||||||
            undefined,
 | 
					 | 
				
			||||||
            inventoryChanges,
 | 
					 | 
				
			||||||
            defaultOverwrites
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    inventoryChanges.CrewShipRawSalvage = [
 | 
					    inventoryChanges.CrewShipRawSalvage = [
 | 
				
			||||||
 | 
				
			|||||||
@ -104,13 +104,14 @@ export const focusController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        case FocusOperation.SentTrainingAmplifier: {
 | 
					        case FocusOperation.SentTrainingAmplifier: {
 | 
				
			||||||
            const request = JSON.parse(String(req.body)) as ISentTrainingAmplifierRequest;
 | 
					            const request = JSON.parse(String(req.body)) as ISentTrainingAmplifierRequest;
 | 
				
			||||||
            const parts: string[] = [
 | 
					 | 
				
			||||||
                "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingGrip",
 | 
					 | 
				
			||||||
                "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingChassis",
 | 
					 | 
				
			||||||
                "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingBarrel"
 | 
					 | 
				
			||||||
            ];
 | 
					 | 
				
			||||||
            const inventory = await getInventory(accountId);
 | 
					            const inventory = await getInventory(accountId);
 | 
				
			||||||
            const inventoryChanges = addEquipment(inventory, "OperatorAmps", request.StartingWeaponType, parts);
 | 
					            const inventoryChanges = addEquipment(inventory, "OperatorAmps", request.StartingWeaponType, {
 | 
				
			||||||
 | 
					                ModularParts: [
 | 
				
			||||||
 | 
					                    "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingGrip",
 | 
				
			||||||
 | 
					                    "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingChassis",
 | 
				
			||||||
 | 
					                    "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingBarrel"
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
            occupySlot(inventory, InventorySlot.AMPS, false);
 | 
					            occupySlot(inventory, InventorySlot.AMPS, false);
 | 
				
			||||||
            await inventory.save();
 | 
					            await inventory.save();
 | 
				
			||||||
            res.json((inventoryChanges.OperatorAmps as IEquipmentClient[])[0]);
 | 
					            res.json((inventoryChanges.OperatorAmps as IEquipmentClient[])[0]);
 | 
				
			||||||
 | 
				
			|||||||
@ -441,16 +441,9 @@ const finishComponentRepair = (
 | 
				
			|||||||
    const inventoryChanges = {
 | 
					    const inventoryChanges = {
 | 
				
			||||||
        ...(category == "CrewShipWeaponSkins"
 | 
					        ...(category == "CrewShipWeaponSkins"
 | 
				
			||||||
            ? addCrewShipWeaponSkin(inventory, salvageItem.ItemType, salvageItem.UpgradeFingerprint)
 | 
					            ? addCrewShipWeaponSkin(inventory, salvageItem.ItemType, salvageItem.UpgradeFingerprint)
 | 
				
			||||||
            : addEquipment(
 | 
					            : addEquipment(inventory, category, salvageItem.ItemType, {
 | 
				
			||||||
                  inventory,
 | 
					                  UpgradeFingerprint: salvageItem.UpgradeFingerprint
 | 
				
			||||||
                  category,
 | 
					              })),
 | 
				
			||||||
                  salvageItem.ItemType,
 | 
					 | 
				
			||||||
                  undefined,
 | 
					 | 
				
			||||||
                  {},
 | 
					 | 
				
			||||||
                  {
 | 
					 | 
				
			||||||
                      UpgradeFingerprint: salvageItem.UpgradeFingerprint
 | 
					 | 
				
			||||||
                  }
 | 
					 | 
				
			||||||
              )),
 | 
					 | 
				
			||||||
        ...occupySlot(inventory, InventorySlot.RJ_COMPONENT_AND_ARMAMENTS, false)
 | 
					        ...occupySlot(inventory, InventorySlot.RJ_COMPONENT_AND_ARMAMENTS, false)
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -36,7 +36,9 @@ export const modularWeaponCraftingController: RequestHandler = async (req, res)
 | 
				
			|||||||
    const inventory = await getInventory(accountId);
 | 
					    const inventory = await getInventory(accountId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let defaultUpgrades: IDefaultUpgrade[] | undefined;
 | 
					    let defaultUpgrades: IDefaultUpgrade[] | undefined;
 | 
				
			||||||
    const defaultOverwrites: Partial<IEquipmentDatabase> = {};
 | 
					    const defaultOverwrites: Partial<IEquipmentDatabase> = {
 | 
				
			||||||
 | 
					        ModularParts: data.Parts
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
    const inventoryChanges: IInventoryChanges = {};
 | 
					    const inventoryChanges: IInventoryChanges = {};
 | 
				
			||||||
    if (category == "KubrowPets") {
 | 
					    if (category == "KubrowPets") {
 | 
				
			||||||
        const traits = {
 | 
					        const traits = {
 | 
				
			||||||
@ -151,7 +153,7 @@ export const modularWeaponCraftingController: RequestHandler = async (req, res)
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    defaultOverwrites.Configs = applyDefaultUpgrades(inventory, defaultUpgrades);
 | 
					    defaultOverwrites.Configs = applyDefaultUpgrades(inventory, defaultUpgrades);
 | 
				
			||||||
    addEquipment(inventory, category, data.WeaponType, data.Parts, inventoryChanges, defaultOverwrites);
 | 
					    addEquipment(inventory, category, data.WeaponType, defaultOverwrites, inventoryChanges);
 | 
				
			||||||
    combineInventoryChanges(
 | 
					    combineInventoryChanges(
 | 
				
			||||||
        inventoryChanges,
 | 
					        inventoryChanges,
 | 
				
			||||||
        occupySlot(inventory, productCategoryToInventoryBin(category)!, !!data.isWebUi)
 | 
					        occupySlot(inventory, productCategoryToInventoryBin(category)!, !!data.isWebUi)
 | 
				
			||||||
 | 
				
			|||||||
@ -45,24 +45,18 @@ export const modularWeaponSaleController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
        const defaultUpgrades = getDefaultUpgrades(weaponInfo.ModularParts);
 | 
					        const defaultUpgrades = getDefaultUpgrades(weaponInfo.ModularParts);
 | 
				
			||||||
        const configs = applyDefaultUpgrades(inventory, defaultUpgrades);
 | 
					        const configs = applyDefaultUpgrades(inventory, defaultUpgrades);
 | 
				
			||||||
        const inventoryChanges: IInventoryChanges = {
 | 
					        const inventoryChanges: IInventoryChanges = {
 | 
				
			||||||
            ...addEquipment(
 | 
					            ...addEquipment(inventory, category, weaponInfo.ItemType, {
 | 
				
			||||||
                inventory,
 | 
					                Features: EquipmentFeatures.DOUBLE_CAPACITY | EquipmentFeatures.GILDED,
 | 
				
			||||||
                category,
 | 
					                ItemName: payload.ItemName,
 | 
				
			||||||
                weaponInfo.ItemType,
 | 
					                Configs: configs,
 | 
				
			||||||
                weaponInfo.ModularParts,
 | 
					                ModularParts: weaponInfo.ModularParts,
 | 
				
			||||||
                {},
 | 
					                Polarity: [
 | 
				
			||||||
                {
 | 
					                    {
 | 
				
			||||||
                    Features: EquipmentFeatures.DOUBLE_CAPACITY | EquipmentFeatures.GILDED,
 | 
					                        Slot: payload.PolarizeSlot,
 | 
				
			||||||
                    ItemName: payload.ItemName,
 | 
					                        Value: payload.PolarizeValue
 | 
				
			||||||
                    Configs: configs,
 | 
					                    }
 | 
				
			||||||
                    Polarity: [
 | 
					                ]
 | 
				
			||||||
                        {
 | 
					            }),
 | 
				
			||||||
                            Slot: payload.PolarizeSlot,
 | 
					 | 
				
			||||||
                            Value: payload.PolarizeValue
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    ]
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
            ...occupySlot(inventory, productCategoryToInventoryBin(category)!, true),
 | 
					            ...occupySlot(inventory, productCategoryToInventoryBin(category)!, true),
 | 
				
			||||||
            ...updateCurrency(inventory, weaponInfo.PremiumPrice, true)
 | 
					            ...updateCurrency(inventory, weaponInfo.PremiumPrice, true)
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
				
			|||||||
@ -154,23 +154,22 @@ export const addStartingGear = async (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    //TODO: properly merge weapon bin changes it is currently static here
 | 
					    //TODO: properly merge weapon bin changes it is currently static here
 | 
				
			||||||
    const inventoryChanges: IInventoryChanges = {};
 | 
					    const inventoryChanges: IInventoryChanges = {};
 | 
				
			||||||
    addEquipment(inventory, "LongGuns", LongGuns[0].ItemType, undefined, inventoryChanges);
 | 
					    addEquipment(inventory, "LongGuns", LongGuns[0].ItemType, { IsNew: false }, inventoryChanges);
 | 
				
			||||||
    addEquipment(inventory, "Pistols", Pistols[0].ItemType, undefined, inventoryChanges);
 | 
					    addEquipment(inventory, "Pistols", Pistols[0].ItemType, { IsNew: false }, inventoryChanges);
 | 
				
			||||||
    addEquipment(inventory, "Melee", Melee[0].ItemType, undefined, inventoryChanges);
 | 
					    addEquipment(inventory, "Melee", Melee[0].ItemType, { IsNew: false }, inventoryChanges);
 | 
				
			||||||
    await addPowerSuit(inventory, Suits[0].ItemType, inventoryChanges);
 | 
					    await addPowerSuit(inventory, Suits[0].ItemType, { IsNew: false }, inventoryChanges);
 | 
				
			||||||
    addEquipment(
 | 
					    addEquipment(
 | 
				
			||||||
        inventory,
 | 
					        inventory,
 | 
				
			||||||
        "DataKnives",
 | 
					        "DataKnives",
 | 
				
			||||||
        "/Lotus/Weapons/Tenno/HackingDevices/TnHackingDevice/TnHackingDeviceWeapon",
 | 
					        "/Lotus/Weapons/Tenno/HackingDevices/TnHackingDevice/TnHackingDeviceWeapon",
 | 
				
			||||||
        undefined,
 | 
					        { XP: 450_000, IsNew: false },
 | 
				
			||||||
        inventoryChanges,
 | 
					        inventoryChanges
 | 
				
			||||||
        { XP: 450_000 }
 | 
					 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    addEquipment(
 | 
					    addEquipment(
 | 
				
			||||||
        inventory,
 | 
					        inventory,
 | 
				
			||||||
        "Scoops",
 | 
					        "Scoops",
 | 
				
			||||||
        "/Lotus/Weapons/Tenno/Speedball/SpeedballWeaponTest",
 | 
					        "/Lotus/Weapons/Tenno/Speedball/SpeedballWeaponTest",
 | 
				
			||||||
        undefined,
 | 
					        { IsNew: false },
 | 
				
			||||||
        inventoryChanges
 | 
					        inventoryChanges
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -531,14 +530,7 @@ export const addItem = async (
 | 
				
			|||||||
                    ]
 | 
					                    ]
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            const inventoryChanges = addEquipment(
 | 
					            const inventoryChanges = addEquipment(inventory, weapon.productCategory, typeName, defaultOverwrites);
 | 
				
			||||||
                inventory,
 | 
					 | 
				
			||||||
                weapon.productCategory,
 | 
					 | 
				
			||||||
                typeName,
 | 
					 | 
				
			||||||
                [],
 | 
					 | 
				
			||||||
                {},
 | 
					 | 
				
			||||||
                defaultOverwrites
 | 
					 | 
				
			||||||
            );
 | 
					 | 
				
			||||||
            if (weapon.additionalItems) {
 | 
					            if (weapon.additionalItems) {
 | 
				
			||||||
                for (const item of weapon.additionalItems) {
 | 
					                for (const item of weapon.additionalItems) {
 | 
				
			||||||
                    combineInventoryChanges(inventoryChanges, await addItem(inventory, item, 1));
 | 
					                    combineInventoryChanges(inventoryChanges, await addItem(inventory, item, 1));
 | 
				
			||||||
@ -639,12 +631,9 @@ export const addItem = async (
 | 
				
			|||||||
            switch (typeName.substr(1).split("/")[2]) {
 | 
					            switch (typeName.substr(1).split("/")[2]) {
 | 
				
			||||||
                default: {
 | 
					                default: {
 | 
				
			||||||
                    return {
 | 
					                    return {
 | 
				
			||||||
                        ...(await addPowerSuit(
 | 
					                        ...(await addPowerSuit(inventory, typeName, {
 | 
				
			||||||
                            inventory,
 | 
					                            Features: premiumPurchase ? EquipmentFeatures.DOUBLE_CAPACITY : undefined
 | 
				
			||||||
                            typeName,
 | 
					                        })),
 | 
				
			||||||
                            {},
 | 
					 | 
				
			||||||
                            premiumPurchase ? EquipmentFeatures.DOUBLE_CAPACITY : undefined
 | 
					 | 
				
			||||||
                        )),
 | 
					 | 
				
			||||||
                        ...occupySlot(inventory, InventorySlot.SUITS, premiumPurchase)
 | 
					                        ...occupySlot(inventory, InventorySlot.SUITS, premiumPurchase)
 | 
				
			||||||
                    };
 | 
					                    };
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@ -864,8 +853,8 @@ const addSentinelWeapon = (
 | 
				
			|||||||
export const addPowerSuit = async (
 | 
					export const addPowerSuit = async (
 | 
				
			||||||
    inventory: TInventoryDatabaseDocument,
 | 
					    inventory: TInventoryDatabaseDocument,
 | 
				
			||||||
    powersuitName: string,
 | 
					    powersuitName: string,
 | 
				
			||||||
    inventoryChanges: IInventoryChanges = {},
 | 
					    defaultOverwrites?: Partial<IEquipmentDatabase>,
 | 
				
			||||||
    features?: number
 | 
					    inventoryChanges: IInventoryChanges = {}
 | 
				
			||||||
): Promise<IInventoryChanges> => {
 | 
					): Promise<IInventoryChanges> => {
 | 
				
			||||||
    const powersuit = ExportWarframes[powersuitName] as IPowersuit | undefined;
 | 
					    const powersuit = ExportWarframes[powersuitName] as IPowersuit | undefined;
 | 
				
			||||||
    const exalted = powersuit?.exalted ?? [];
 | 
					    const exalted = powersuit?.exalted ?? [];
 | 
				
			||||||
@ -879,15 +868,20 @@ export const addPowerSuit = async (
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    const suitIndex =
 | 
					    const suit: Omit<IEquipmentDatabase, "_id"> = Object.assign(
 | 
				
			||||||
        inventory.Suits.push({
 | 
					        {
 | 
				
			||||||
            ItemType: powersuitName,
 | 
					            ItemType: powersuitName,
 | 
				
			||||||
            Configs: [],
 | 
					            Configs: [],
 | 
				
			||||||
            UpgradeVer: 101,
 | 
					            UpgradeVer: 101,
 | 
				
			||||||
            XP: 0,
 | 
					            XP: 0,
 | 
				
			||||||
            Features: features,
 | 
					 | 
				
			||||||
            IsNew: true
 | 
					            IsNew: true
 | 
				
			||||||
        }) - 1;
 | 
					        },
 | 
				
			||||||
 | 
					        defaultOverwrites
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    if (!suit.IsNew) {
 | 
				
			||||||
 | 
					        suit.IsNew = undefined;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    const suitIndex = inventory.Suits.push(suit) - 1;
 | 
				
			||||||
    inventoryChanges.Suits ??= [];
 | 
					    inventoryChanges.Suits ??= [];
 | 
				
			||||||
    inventoryChanges.Suits.push(inventory.Suits[suitIndex].toJSON<IEquipmentClient>());
 | 
					    inventoryChanges.Suits.push(inventory.Suits[suitIndex].toJSON<IEquipmentClient>());
 | 
				
			||||||
    return inventoryChanges;
 | 
					    return inventoryChanges;
 | 
				
			||||||
@ -1208,20 +1202,21 @@ export const addEquipment = (
 | 
				
			|||||||
    inventory: TInventoryDatabaseDocument,
 | 
					    inventory: TInventoryDatabaseDocument,
 | 
				
			||||||
    category: TEquipmentKey,
 | 
					    category: TEquipmentKey,
 | 
				
			||||||
    type: string,
 | 
					    type: string,
 | 
				
			||||||
    modularParts?: string[],
 | 
					    defaultOverwrites?: Partial<IEquipmentDatabase>,
 | 
				
			||||||
    inventoryChanges: IInventoryChanges = {},
 | 
					    inventoryChanges: IInventoryChanges = {}
 | 
				
			||||||
    defaultOverwrites?: Partial<IEquipmentDatabase>
 | 
					 | 
				
			||||||
): IInventoryChanges => {
 | 
					): IInventoryChanges => {
 | 
				
			||||||
    const equipment = Object.assign(
 | 
					    const equipment: Omit<IEquipmentDatabase, "_id"> = Object.assign(
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            ItemType: type,
 | 
					            ItemType: type,
 | 
				
			||||||
            Configs: [],
 | 
					            Configs: [],
 | 
				
			||||||
            XP: 0,
 | 
					            XP: 0,
 | 
				
			||||||
            ModularParts: modularParts,
 | 
					            IsNew: category != "CrewShipWeapons" && category != "CrewShipSalvagedWeapons"
 | 
				
			||||||
            IsNew: category != "CrewShipWeapons" && category != "CrewShipSalvagedWeapons" ? true : undefined
 | 
					 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        defaultOverwrites
 | 
					        defaultOverwrites
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					    if (!equipment.IsNew) {
 | 
				
			||||||
 | 
					        equipment.IsNew = undefined;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    const index = inventory[category].push(equipment) - 1;
 | 
					    const index = inventory[category].push(equipment) - 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    inventoryChanges[category] ??= [];
 | 
					    inventoryChanges[category] ??= [];
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user