chore: make addItem return InventoryChanges directly
All checks were successful
Build / build (22) (push) Successful in 41s
Build / build (18) (pull_request) Successful in 45s
Build / build (18) (push) Successful in 1m15s
Build / build (20) (push) Successful in 1m19s
Build / build (20) (pull_request) Successful in 1m12s
Build / build (22) (pull_request) Successful in 1m18s
All checks were successful
Build / build (22) (push) Successful in 41s
Build / build (18) (pull_request) Successful in 45s
Build / build (18) (push) Successful in 1m15s
Build / build (20) (push) Successful in 1m19s
Build / build (20) (pull_request) Successful in 1m12s
Build / build (22) (pull_request) Successful in 1m18s
This commit is contained in:
parent
cf125b5355
commit
fa7ca1d5d3
@ -118,7 +118,7 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) =
|
||||
}
|
||||
InventoryChanges = {
|
||||
...InventoryChanges,
|
||||
...(await addItem(inventory, recipe.resultType, recipe.num, false)).InventoryChanges
|
||||
...(await addItem(inventory, recipe.resultType, recipe.num, false))
|
||||
};
|
||||
await inventory.save();
|
||||
res.json({ InventoryChanges });
|
||||
|
@ -87,7 +87,7 @@ export const addStartingGear = async (
|
||||
|
||||
for (const item of awakeningRewards) {
|
||||
const inventoryDelta = await addItem(inventory, item);
|
||||
combineInventoryChanges(inventoryChanges, inventoryDelta.InventoryChanges);
|
||||
combineInventoryChanges(inventoryChanges, inventoryDelta);
|
||||
}
|
||||
|
||||
inventory.PlayedParkourTutorial = true;
|
||||
|
@ -194,7 +194,7 @@ export const guildTechController: RequestHandler = async (req, res) => {
|
||||
ItemCount: x.ItemCount * -1
|
||||
}));
|
||||
addMiscItems(inventory, inventoryChanges.MiscItems);
|
||||
combineInventoryChanges(inventoryChanges, (await addItem(inventory, recipe.resultType)).InventoryChanges);
|
||||
combineInventoryChanges(inventoryChanges, await addItem(inventory, recipe.resultType));
|
||||
await inventory.save();
|
||||
// Not a mistake: This response uses `inventoryChanges` instead of `InventoryChanges`.
|
||||
res.json({ inventoryChanges: inventoryChanges });
|
||||
|
@ -234,10 +234,10 @@ export const addItem = async (
|
||||
typeName: string,
|
||||
quantity: number = 1,
|
||||
premiumPurchase: boolean = false
|
||||
): Promise<{ InventoryChanges: IInventoryChanges }> => {
|
||||
): Promise<IInventoryChanges> => {
|
||||
// Bundles are technically StoreItems but a) they don't have a normal counterpart, and b) they are used in non-StoreItem contexts, e.g. email attachments.
|
||||
if (typeName in ExportBundles) {
|
||||
return { InventoryChanges: await handleBundleAcqusition(typeName, inventory, quantity) };
|
||||
return await handleBundleAcqusition(typeName, inventory, quantity);
|
||||
}
|
||||
|
||||
// Strict typing
|
||||
@ -250,9 +250,7 @@ export const addItem = async (
|
||||
];
|
||||
addRecipes(inventory, recipeChanges);
|
||||
return {
|
||||
InventoryChanges: {
|
||||
Recipes: recipeChanges
|
||||
}
|
||||
};
|
||||
}
|
||||
if (typeName in ExportResources) {
|
||||
@ -265,9 +263,7 @@ export const addItem = async (
|
||||
];
|
||||
addMiscItems(inventory, miscItemChanges);
|
||||
return {
|
||||
InventoryChanges: {
|
||||
MiscItems: miscItemChanges
|
||||
}
|
||||
};
|
||||
} else if (ExportResources[typeName].productCategory == "FusionTreasures") {
|
||||
const fusionTreasureChanges = [
|
||||
@ -279,25 +275,21 @@ export const addItem = async (
|
||||
];
|
||||
addFusionTreasures(inventory, fusionTreasureChanges);
|
||||
return {
|
||||
InventoryChanges: {
|
||||
FusionTreasures: fusionTreasureChanges
|
||||
}
|
||||
};
|
||||
} else if (ExportResources[typeName].productCategory == "Ships") {
|
||||
const oid = await createShip(inventory.accountOwnerId, typeName);
|
||||
inventory.Ships.push(oid);
|
||||
return {
|
||||
InventoryChanges: {
|
||||
Ships: [
|
||||
{
|
||||
ItemId: { $oid: oid.toString() },
|
||||
ItemType: typeName
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
} else if (ExportResources[typeName].productCategory == "CrewShips") {
|
||||
const inventoryChanges = {
|
||||
return {
|
||||
...addCrewShip(inventory, typeName),
|
||||
// fix to unlock railjack modding, item bellow supposed to be obtained from archwing quest
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
@ -305,8 +297,6 @@ export const addItem = async (
|
||||
? addCrewShipHarness(inventory, "/Lotus/Types/Game/CrewShip/RailJack/DefaultHarness")
|
||||
: {})
|
||||
};
|
||||
|
||||
return { InventoryChanges: inventoryChanges };
|
||||
} else if (ExportResources[typeName].productCategory == "ShipDecorations") {
|
||||
const changes = [
|
||||
{
|
||||
@ -316,9 +306,7 @@ export const addItem = async (
|
||||
];
|
||||
addShipDecorations(inventory, changes);
|
||||
return {
|
||||
InventoryChanges: {
|
||||
ShipDecorations: changes
|
||||
}
|
||||
};
|
||||
} else if (ExportResources[typeName].productCategory == "KubrowPetEggs") {
|
||||
const changes: IKubrowPetEggClient[] = [];
|
||||
@ -339,9 +327,7 @@ export const addItem = async (
|
||||
});
|
||||
}
|
||||
return {
|
||||
InventoryChanges: {
|
||||
KubrowPetEggs: changes
|
||||
}
|
||||
};
|
||||
} else {
|
||||
throw new Error(`unknown product category: ${ExportResources[typeName].productCategory}`);
|
||||
@ -349,14 +335,14 @@ export const addItem = async (
|
||||
}
|
||||
if (typeName in ExportCustoms) {
|
||||
if (ExportCustoms[typeName].productCategory == "CrewShipWeaponSkins") {
|
||||
return { InventoryChanges: addCrewShipWeaponSkin(inventory, typeName) };
|
||||
return addCrewShipWeaponSkin(inventory, typeName);
|
||||
} else {
|
||||
return { InventoryChanges: addSkin(inventory, typeName) };
|
||||
return addSkin(inventory, typeName);
|
||||
}
|
||||
}
|
||||
if (typeName in ExportFlavour) {
|
||||
const inventoryChanges = addCustomization(inventory, typeName);
|
||||
return { InventoryChanges: inventoryChanges };
|
||||
return inventoryChanges;
|
||||
}
|
||||
if (typeName in ExportUpgrades || typeName in ExportArcanes) {
|
||||
const changes = [
|
||||
@ -367,9 +353,7 @@ export const addItem = async (
|
||||
];
|
||||
addMods(inventory, changes);
|
||||
return {
|
||||
InventoryChanges: {
|
||||
RawUpgrades: changes
|
||||
}
|
||||
};
|
||||
}
|
||||
if (typeName in ExportGear) {
|
||||
@ -381,9 +365,7 @@ export const addItem = async (
|
||||
];
|
||||
addConsumables(inventory, consumablesChanges);
|
||||
return {
|
||||
InventoryChanges: {
|
||||
Consumables: consumablesChanges
|
||||
}
|
||||
};
|
||||
}
|
||||
if (typeName in ExportWeapons) {
|
||||
@ -426,14 +408,12 @@ export const addItem = async (
|
||||
);
|
||||
if (weapon.additionalItems) {
|
||||
for (const item of weapon.additionalItems) {
|
||||
combineInventoryChanges(inventoryChanges, (await addItem(inventory, item, 1)).InventoryChanges);
|
||||
combineInventoryChanges(inventoryChanges, await addItem(inventory, item, 1));
|
||||
}
|
||||
}
|
||||
return {
|
||||
InventoryChanges: {
|
||||
...inventoryChanges,
|
||||
...occupySlot(inventory, InventorySlot.WEAPONS, premiumPurchase)
|
||||
}
|
||||
};
|
||||
} else {
|
||||
// Modular weapon parts
|
||||
@ -445,36 +425,28 @@ export const addItem = async (
|
||||
];
|
||||
addMiscItems(inventory, miscItemChanges);
|
||||
return {
|
||||
InventoryChanges: {
|
||||
MiscItems: miscItemChanges
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
if (typeName in ExportRailjackWeapons) {
|
||||
return {
|
||||
InventoryChanges: {
|
||||
...addCrewShipWeapon(inventory, typeName),
|
||||
...occupySlot(inventory, InventorySlot.RJ_COMPONENT_AND_ARMAMENTS, premiumPurchase)
|
||||
}
|
||||
};
|
||||
}
|
||||
if (typeName in ExportMisc.creditBundles) {
|
||||
const creditsTotal = ExportMisc.creditBundles[typeName] * quantity;
|
||||
inventory.RegularCredits += creditsTotal;
|
||||
return {
|
||||
InventoryChanges: {
|
||||
RegularCredits: creditsTotal
|
||||
}
|
||||
};
|
||||
}
|
||||
if (typeName in ExportFusionBundles) {
|
||||
const fusionPointsTotal = ExportFusionBundles[typeName].fusionPoints * quantity;
|
||||
inventory.FusionPoints += fusionPointsTotal;
|
||||
return {
|
||||
InventoryChanges: {
|
||||
FusionPoints: fusionPointsTotal
|
||||
}
|
||||
};
|
||||
}
|
||||
if (typeName in ExportKeys) {
|
||||
@ -483,8 +455,8 @@ export const addItem = async (
|
||||
|
||||
if (key.chainStages) {
|
||||
const key = addQuestKey(inventory, { ItemType: typeName });
|
||||
if (!key) return { InventoryChanges: {} };
|
||||
return { InventoryChanges: { QuestKeys: [key] } };
|
||||
if (!key) return {};
|
||||
return { QuestKeys: [key] };
|
||||
} else {
|
||||
const key = { ItemType: typeName, ItemCount: quantity };
|
||||
|
||||
@ -494,19 +466,14 @@ export const addItem = async (
|
||||
} else {
|
||||
inventory.LevelKeys.push(key);
|
||||
}
|
||||
return { InventoryChanges: { LevelKeys: [key] } };
|
||||
return { LevelKeys: [key] };
|
||||
}
|
||||
}
|
||||
if (typeName in ExportDrones) {
|
||||
const inventoryChanges = addDrone(inventory, typeName);
|
||||
return {
|
||||
InventoryChanges: inventoryChanges
|
||||
};
|
||||
return addDrone(inventory, typeName);
|
||||
}
|
||||
if (typeName in ExportEmailItems) {
|
||||
return {
|
||||
InventoryChanges: await addEmailItem(inventory, typeName)
|
||||
};
|
||||
return await addEmailItem(inventory, typeName);
|
||||
}
|
||||
|
||||
// Path-based duck typing
|
||||
@ -515,7 +482,6 @@ export const addItem = async (
|
||||
switch (typeName.substr(1).split("/")[2]) {
|
||||
default: {
|
||||
return {
|
||||
InventoryChanges: {
|
||||
...addPowerSuit(
|
||||
inventory,
|
||||
typeName,
|
||||
@ -523,13 +489,11 @@ export const addItem = async (
|
||||
premiumPurchase ? EquipmentFeatures.DOUBLE_CAPACITY : undefined
|
||||
),
|
||||
...occupySlot(inventory, InventorySlot.SUITS, premiumPurchase)
|
||||
}
|
||||
};
|
||||
}
|
||||
case "Archwing": {
|
||||
inventory.ArchwingEnabled = true;
|
||||
return {
|
||||
InventoryChanges: {
|
||||
...addSpaceSuit(
|
||||
inventory,
|
||||
typeName,
|
||||
@ -537,12 +501,10 @@ export const addItem = async (
|
||||
premiumPurchase ? EquipmentFeatures.DOUBLE_CAPACITY : undefined
|
||||
),
|
||||
...occupySlot(inventory, InventorySlot.SPACESUITS, premiumPurchase)
|
||||
}
|
||||
};
|
||||
}
|
||||
case "EntratiMech": {
|
||||
return {
|
||||
InventoryChanges: {
|
||||
...addMechSuit(
|
||||
inventory,
|
||||
typeName,
|
||||
@ -550,7 +512,6 @@ export const addItem = async (
|
||||
premiumPurchase ? EquipmentFeatures.DOUBLE_CAPACITY : undefined
|
||||
),
|
||||
...occupySlot(inventory, InventorySlot.MECHSUITS, premiumPurchase)
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -568,9 +529,7 @@ export const addItem = async (
|
||||
];
|
||||
addMods(inventory, changes);
|
||||
return {
|
||||
InventoryChanges: {
|
||||
RawUpgrades: changes
|
||||
}
|
||||
};
|
||||
}
|
||||
break;
|
||||
@ -587,9 +546,7 @@ export const addItem = async (
|
||||
];
|
||||
addMiscItems(inventory, miscItemChanges);
|
||||
return {
|
||||
InventoryChanges: {
|
||||
MiscItems: miscItemChanges
|
||||
}
|
||||
};
|
||||
} else {
|
||||
const changes = [
|
||||
@ -600,9 +557,7 @@ export const addItem = async (
|
||||
];
|
||||
addMods(inventory, changes);
|
||||
return {
|
||||
InventoryChanges: {
|
||||
RawUpgrades: changes
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -613,9 +568,7 @@ export const addItem = async (
|
||||
case "Types":
|
||||
switch (typeName.substr(1).split("/")[2]) {
|
||||
case "Sentinels": {
|
||||
return {
|
||||
InventoryChanges: addSentinel(inventory, typeName, premiumPurchase)
|
||||
};
|
||||
return addSentinel(inventory, typeName, premiumPurchase);
|
||||
}
|
||||
case "Game": {
|
||||
if (typeName.substr(1).split("/")[3] == "Projections") {
|
||||
@ -629,9 +582,7 @@ export const addItem = async (
|
||||
addMiscItems(inventory, miscItemChanges);
|
||||
inventory.HasOwnedVoidProjectionsPreviously = true;
|
||||
return {
|
||||
InventoryChanges: {
|
||||
MiscItems: miscItemChanges
|
||||
}
|
||||
};
|
||||
}
|
||||
break;
|
||||
@ -639,27 +590,23 @@ export const addItem = async (
|
||||
case "NeutralCreatures": {
|
||||
const horseIndex = inventory.Horses.push({ ItemType: typeName });
|
||||
return {
|
||||
InventoryChanges: {
|
||||
Horses: [inventory.Horses[horseIndex - 1].toJSON<IEquipmentClient>()]
|
||||
}
|
||||
};
|
||||
}
|
||||
case "Recipes": {
|
||||
inventory.MiscItems.push({ ItemType: typeName, ItemCount: quantity });
|
||||
return {
|
||||
InventoryChanges: {
|
||||
MiscItems: [
|
||||
{
|
||||
ItemType: typeName,
|
||||
ItemCount: quantity
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
}
|
||||
case "Vehicles":
|
||||
if (typeName == "/Lotus/Types/Vehicles/Motorcycle/MotorcyclePowerSuit") {
|
||||
return { InventoryChanges: addMotorcycle(inventory, typeName) };
|
||||
return addMotorcycle(inventory, typeName);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -680,7 +627,7 @@ export const addItems = async (
|
||||
} else {
|
||||
inventoryDelta = await addItem(inventory, item.ItemType, item.ItemCount, true);
|
||||
}
|
||||
combineInventoryChanges(inventoryChanges, inventoryDelta.InventoryChanges);
|
||||
combineInventoryChanges(inventoryChanges, inventoryDelta);
|
||||
}
|
||||
return inventoryChanges;
|
||||
};
|
||||
@ -1393,7 +1340,7 @@ export const addKeyChainItems = async (
|
||||
|
||||
for (const item of nonStoreItems) {
|
||||
const inventoryChangesDelta = await addItem(inventory, item);
|
||||
combineInventoryChanges(inventoryChanges, inventoryChangesDelta.InventoryChanges);
|
||||
combineInventoryChanges(inventoryChanges, inventoryChangesDelta);
|
||||
}
|
||||
|
||||
return inventoryChanges;
|
||||
|
@ -333,7 +333,7 @@ export const handleStoreItemAcquisition = async (
|
||||
}
|
||||
switch (storeCategory) {
|
||||
default: {
|
||||
purchaseResponse = await addItem(inventory, internalName, quantity, true);
|
||||
purchaseResponse = { InventoryChanges: await addItem(inventory, internalName, quantity, true) };
|
||||
break;
|
||||
}
|
||||
case "Types":
|
||||
@ -418,10 +418,7 @@ const handleBoosterPackPurchase = async (
|
||||
if (typeName == "/Lotus/Types/BoosterPacks/1999StickersPackEchoesArchimedeaFixed") {
|
||||
for (const result of pack.components) {
|
||||
purchaseResponse.BoosterPackItems += toStoreItem(result.Item) + ',{"lvl":0};';
|
||||
combineInventoryChanges(
|
||||
purchaseResponse.InventoryChanges,
|
||||
(await addItem(inventory, result.Item, 1)).InventoryChanges
|
||||
);
|
||||
combineInventoryChanges(purchaseResponse.InventoryChanges, await addItem(inventory, result.Item, 1));
|
||||
}
|
||||
} else {
|
||||
for (let i = 0; i != quantity; ++i) {
|
||||
@ -432,7 +429,7 @@ const handleBoosterPackPurchase = async (
|
||||
purchaseResponse.BoosterPackItems += toStoreItem(result.Item) + ',{"lvl":0};';
|
||||
combineInventoryChanges(
|
||||
purchaseResponse.InventoryChanges,
|
||||
(await addItem(inventory, result.Item, 1)).InventoryChanges
|
||||
await addItem(inventory, result.Item, 1)
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -468,7 +465,7 @@ const handleTypesPurchase = async (
|
||||
logger.debug(`type category ${typeCategory}`);
|
||||
switch (typeCategory) {
|
||||
default:
|
||||
return await addItem(inventory, typesName, quantity);
|
||||
return { InventoryChanges: await addItem(inventory, typesName, quantity) };
|
||||
case "BoosterPacks":
|
||||
return handleBoosterPackPurchase(typesName, inventory, quantity);
|
||||
case "SlotItems":
|
||||
|
Loading…
x
Reference in New Issue
Block a user