forked from OpenWF/SpaceNinjaServer
fix: free slot when selling or otherwise getting rid of items (#1169)
Reviewed-on: OpenWF/SpaceNinjaServer#1169
This commit is contained in:
parent
6490fadcae
commit
a029c288b7
@ -7,10 +7,17 @@ import { getRecipe } from "@/src/services/itemDataService";
|
||||
import { IOid } from "@/src/types/commonTypes";
|
||||
import { getJSONfromString } from "@/src/helpers/stringHelpers";
|
||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||
import { getInventory, updateCurrency, addItem, addMiscItems, addRecipes } from "@/src/services/inventoryService";
|
||||
import {
|
||||
getInventory,
|
||||
updateCurrency,
|
||||
addItem,
|
||||
addMiscItems,
|
||||
addRecipes,
|
||||
occupySlot
|
||||
} from "@/src/services/inventoryService";
|
||||
import { IInventoryChanges } from "@/src/types/purchaseTypes";
|
||||
import { IEquipmentClient } from "@/src/types/inventoryTypes/commonInventoryTypes";
|
||||
import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||
import { IMiscItem, InventorySlot } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||
|
||||
export interface IClaimCompletedRecipeRequest {
|
||||
RecipeIds: IOid[];
|
||||
@ -53,6 +60,7 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) =
|
||||
inventoryChanges[category].push(inventory[category][index].toJSON<IEquipmentClient>());
|
||||
nonMiscItemIngredients.add(item.ItemType);
|
||||
|
||||
occupySlot(inventory, InventorySlot.WEAPONS, false);
|
||||
inventoryChanges.WeaponBin ??= { Slots: 0 };
|
||||
inventoryChanges.WeaponBin.Slots -= 1;
|
||||
});
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { RequestHandler } from "express";
|
||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||
import { getJSONfromString } from "@/src/helpers/stringHelpers";
|
||||
import { getInventory, addMiscItems, updateCurrency, addRecipes } from "@/src/services/inventoryService";
|
||||
import { getInventory, addMiscItems, updateCurrency, addRecipes, freeUpSlot } from "@/src/services/inventoryService";
|
||||
import { IOid } from "@/src/types/commonTypes";
|
||||
import {
|
||||
IConsumedSuit,
|
||||
@ -10,6 +10,7 @@ import {
|
||||
IInfestedFoundryDatabase,
|
||||
IInventoryClient,
|
||||
IMiscItem,
|
||||
InventorySlot,
|
||||
ITypeCount
|
||||
} from "@/src/types/inventoryTypes/inventoryTypes";
|
||||
import { ExportMisc, ExportRecipes } from "warframe-public-export-plus";
|
||||
@ -264,6 +265,7 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
|
||||
);
|
||||
const recipeChanges = addInfestedFoundryXP(inventory.InfestedFoundry!, 1600_00);
|
||||
addRecipes(inventory, recipeChanges);
|
||||
freeUpSlot(inventory, InventorySlot.SUITS);
|
||||
await inventory.save();
|
||||
const infestedFoundry = inventory.toJSON<IInventoryClient>().InfestedFoundry!;
|
||||
applyCheatsToInfestedFoundry(infestedFoundry);
|
||||
|
@ -1,6 +1,14 @@
|
||||
import { RequestHandler } from "express";
|
||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||
import { getInventory, addMods, addRecipes, addMiscItems, addConsumables } from "@/src/services/inventoryService";
|
||||
import {
|
||||
getInventory,
|
||||
addMods,
|
||||
addRecipes,
|
||||
addMiscItems,
|
||||
addConsumables,
|
||||
freeUpSlot
|
||||
} from "@/src/services/inventoryService";
|
||||
import { InventorySlot } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||
|
||||
export const sellController: RequestHandler = async (req, res) => {
|
||||
const payload = JSON.parse(String(req.body)) as ISellRequest;
|
||||
@ -34,56 +42,67 @@ export const sellController: RequestHandler = async (req, res) => {
|
||||
if (payload.Items.Suits) {
|
||||
payload.Items.Suits.forEach(sellItem => {
|
||||
inventory.Suits.pull({ _id: sellItem.String });
|
||||
freeUpSlot(inventory, InventorySlot.SUITS);
|
||||
});
|
||||
}
|
||||
if (payload.Items.LongGuns) {
|
||||
payload.Items.LongGuns.forEach(sellItem => {
|
||||
inventory.LongGuns.pull({ _id: sellItem.String });
|
||||
freeUpSlot(inventory, InventorySlot.WEAPONS);
|
||||
});
|
||||
}
|
||||
if (payload.Items.Pistols) {
|
||||
payload.Items.Pistols.forEach(sellItem => {
|
||||
inventory.Pistols.pull({ _id: sellItem.String });
|
||||
freeUpSlot(inventory, InventorySlot.WEAPONS);
|
||||
});
|
||||
}
|
||||
if (payload.Items.Melee) {
|
||||
payload.Items.Melee.forEach(sellItem => {
|
||||
inventory.Melee.pull({ _id: sellItem.String });
|
||||
freeUpSlot(inventory, InventorySlot.WEAPONS);
|
||||
});
|
||||
}
|
||||
if (payload.Items.SpaceSuits) {
|
||||
payload.Items.SpaceSuits.forEach(sellItem => {
|
||||
inventory.SpaceSuits.pull({ _id: sellItem.String });
|
||||
freeUpSlot(inventory, InventorySlot.SPACESUITS);
|
||||
});
|
||||
}
|
||||
if (payload.Items.SpaceGuns) {
|
||||
payload.Items.SpaceGuns.forEach(sellItem => {
|
||||
inventory.SpaceGuns.pull({ _id: sellItem.String });
|
||||
freeUpSlot(inventory, InventorySlot.SPACEWEAPONS);
|
||||
});
|
||||
}
|
||||
if (payload.Items.SpaceMelee) {
|
||||
payload.Items.SpaceMelee.forEach(sellItem => {
|
||||
inventory.SpaceMelee.pull({ _id: sellItem.String });
|
||||
freeUpSlot(inventory, InventorySlot.SPACEWEAPONS);
|
||||
});
|
||||
}
|
||||
if (payload.Items.Sentinels) {
|
||||
payload.Items.Sentinels.forEach(sellItem => {
|
||||
inventory.Sentinels.pull({ _id: sellItem.String });
|
||||
freeUpSlot(inventory, InventorySlot.SENTINELS);
|
||||
});
|
||||
}
|
||||
if (payload.Items.SentinelWeapons) {
|
||||
payload.Items.SentinelWeapons.forEach(sellItem => {
|
||||
inventory.SentinelWeapons.pull({ _id: sellItem.String });
|
||||
freeUpSlot(inventory, InventorySlot.SENTINELS);
|
||||
});
|
||||
}
|
||||
if (payload.Items.OperatorAmps) {
|
||||
payload.Items.OperatorAmps.forEach(sellItem => {
|
||||
inventory.OperatorAmps.pull({ _id: sellItem.String });
|
||||
freeUpSlot(inventory, InventorySlot.AMPS);
|
||||
});
|
||||
}
|
||||
if (payload.Items.Hoverboards) {
|
||||
payload.Items.Hoverboards.forEach(sellItem => {
|
||||
inventory.Hoverboards.pull({ _id: sellItem.String });
|
||||
freeUpSlot(inventory, InventorySlot.SPACESUITS);
|
||||
});
|
||||
}
|
||||
if (payload.Items.Drones) {
|
||||
|
@ -3,10 +3,10 @@ import { getJSONfromString } from "@/src/helpers/stringHelpers";
|
||||
import { logger } from "@/src/utils/logger";
|
||||
import { RequestHandler } from "express";
|
||||
import { getRecipe } from "@/src/services/itemDataService";
|
||||
import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService";
|
||||
import { addMiscItems, freeUpSlot, getInventory, updateCurrency } from "@/src/services/inventoryService";
|
||||
import { unixTimesInMs } from "@/src/constants/timeConstants";
|
||||
import { Types } from "mongoose";
|
||||
import { ISpectreLoadout } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||
import { InventorySlot, ISpectreLoadout } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||
import { toOid } from "@/src/helpers/inventoryHelpers";
|
||||
import { ExportWeapons } from "warframe-public-export-plus";
|
||||
|
||||
@ -53,6 +53,7 @@ export const startRecipeController: RequestHandler = async (req, res) => {
|
||||
pr[category] ??= [];
|
||||
pr[category].push(inventory[category][equipmentIndex]);
|
||||
inventory[category].splice(equipmentIndex, 1);
|
||||
freeUpSlot(inventory, InventorySlot.WEAPONS);
|
||||
} else {
|
||||
addMiscItems(inventory, [
|
||||
{
|
||||
|
@ -172,7 +172,7 @@ export const getInventory = async (
|
||||
return inventory;
|
||||
};
|
||||
|
||||
const occupySlot = (
|
||||
export const occupySlot = (
|
||||
inventory: TInventoryDatabaseDocument,
|
||||
bin: InventorySlot,
|
||||
premiumPurchase: boolean
|
||||
@ -193,6 +193,11 @@ const occupySlot = (
|
||||
return inventoryChanges;
|
||||
};
|
||||
|
||||
export const freeUpSlot = (inventory: TInventoryDatabaseDocument, bin: InventorySlot): void => {
|
||||
// { count: -1, platinum: 0, Slots: 1 }
|
||||
updateSlots(inventory, bin, 1, 0);
|
||||
};
|
||||
|
||||
export const addItem = async (
|
||||
inventory: TInventoryDatabaseDocument,
|
||||
typeName: string,
|
||||
|
@ -452,9 +452,11 @@ export enum InventorySlot {
|
||||
SUITS = "SuitBin",
|
||||
WEAPONS = "WeaponBin",
|
||||
SPACESUITS = "SpaceSuitBin",
|
||||
SPACEWEAPONS = "SpaceWeaponBin",
|
||||
MECHSUITS = "MechBin",
|
||||
PVE_LOADOUTS = "PveBonusLoadoutBin",
|
||||
SENTINELS = "SentinelBin",
|
||||
AMPS = "OperatorAmpBin",
|
||||
RJ_COMPONENT_AND_ARMAMENTS = "CrewShipSalvageBin"
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user