fix: don't set IsNew flag for starting gear (#1859)
Some checks failed
Build Docker image / docker (push) Has been cancelled
Build / build (push) Has been cancelled

Reviewed-on: #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:
Sainan 2025-04-26 11:56:06 -07:00 committed by Sainan
parent 4d4f885c8e
commit 75c011e3cb
6 changed files with 56 additions and 78 deletions

View File

@ -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 = [

View File

@ -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[] = [ const inventory = await getInventory(accountId);
const inventoryChanges = addEquipment(inventory, "OperatorAmps", request.StartingWeaponType, {
ModularParts: [
"/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingGrip", "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingGrip",
"/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingChassis", "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingChassis",
"/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingBarrel" "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingBarrel"
]; ]
const inventory = await getInventory(accountId); });
const inventoryChanges = addEquipment(inventory, "OperatorAmps", request.StartingWeaponType, parts);
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]);

View File

@ -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,
category,
salvageItem.ItemType,
undefined,
{},
{
UpgradeFingerprint: salvageItem.UpgradeFingerprint UpgradeFingerprint: salvageItem.UpgradeFingerprint
} })),
)),
...occupySlot(inventory, InventorySlot.RJ_COMPONENT_AND_ARMAMENTS, false) ...occupySlot(inventory, InventorySlot.RJ_COMPONENT_AND_ARMAMENTS, false)
}; };

View File

@ -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)

View File

@ -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,
category,
weaponInfo.ItemType,
weaponInfo.ModularParts,
{},
{
Features: EquipmentFeatures.DOUBLE_CAPACITY | EquipmentFeatures.GILDED, Features: EquipmentFeatures.DOUBLE_CAPACITY | EquipmentFeatures.GILDED,
ItemName: payload.ItemName, ItemName: payload.ItemName,
Configs: configs, Configs: configs,
ModularParts: weaponInfo.ModularParts,
Polarity: [ Polarity: [
{ {
Slot: payload.PolarizeSlot, Slot: payload.PolarizeSlot,
Value: payload.PolarizeValue Value: payload.PolarizeValue
} }
] ]
} }),
),
...occupySlot(inventory, productCategoryToInventoryBin(category)!, true), ...occupySlot(inventory, productCategoryToInventoryBin(category)!, true),
...updateCurrency(inventory, weaponInfo.PremiumPrice, true) ...updateCurrency(inventory, weaponInfo.PremiumPrice, true)
}; };

View File

@ -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] ??= [];