diff --git a/src/controllers/api/artifactsController.ts b/src/controllers/api/artifactsController.ts index e9f8d582..3cef399a 100644 --- a/src/controllers/api/artifactsController.ts +++ b/src/controllers/api/artifactsController.ts @@ -12,7 +12,7 @@ export const artifactsController: RequestHandler = async (req, res) => { const { Upgrade, LevelDiff, Cost, FusionPointCost } = artifactsData; const inventory = await getInventory(accountId); - const { Upgrades, RawUpgrades } = inventory; + const { Upgrades } = inventory; const { ItemType, UpgradeFingerprint, ItemId } = Upgrade; const safeUpgradeFingerprint = UpgradeFingerprint || '{"lvl":0}'; @@ -32,13 +32,7 @@ export const artifactsController: RequestHandler = async (req, res) => { ItemType }) - 1; - const rawItemIndex = RawUpgrades.findIndex(rawUpgrade => rawUpgrade.ItemType === ItemType); - RawUpgrades[rawItemIndex].ItemCount--; - if (RawUpgrades[rawItemIndex].ItemCount > 0) { - inventory.markModified(`RawUpgrades.${rawItemIndex}.UpgradeFingerprint`); - } else { - RawUpgrades.splice(rawItemIndex, 1); - } + addMods(inventory, [{ ItemType, ItemCount: -1 }]); } if (!config.infiniteCredits) { diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 958ac984..5848600e 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -25,6 +25,7 @@ import { ISettings, IInfestedFoundryDatabase, IHelminthResource, + IMissionDatabase, IConsumedSuit, IQuestStage, IQuestKeyDatabase, @@ -482,6 +483,15 @@ const helminthResourceSchema = new Schema( { _id: false } ); +const missionSchema = new Schema( + { + Tag: String, + Completes: { type: Number, default: 0 }, + Tier: { type: Number, required: false } + }, + { _id: false } +); + const questProgressSchema = new Schema( { c: Number, @@ -1010,7 +1020,7 @@ const inventorySchema = new Schema( CrewShipSalvagedWeapons: [Schema.Types.Mixed], //Complete Mission\Quests - Missions: [Schema.Types.Mixed], + Missions: [missionSchema], QuestKeys: [questKeysSchema], ActiveQuest: { type: String, default: "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain" }, //TODO: check after mission starting gear //item like DojoKey or Boss missions key diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 59174b5b..f69f1de4 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -906,7 +906,6 @@ export const addShipDecorations = ( if (itemIndex !== -1) { ShipDecorations[itemIndex].ItemCount += ItemCount; - inventory.markModified(`ShipDecorations.${itemIndex}.ItemCount`); } else { ShipDecorations.push({ ItemCount, ItemType }); } @@ -921,7 +920,6 @@ export const addConsumables = (inventory: TInventoryDatabaseDocument, itemsArray if (itemIndex !== -1) { Consumables[itemIndex].ItemCount += ItemCount; - inventory.markModified(`Consumables.${itemIndex}.ItemCount`); } else { Consumables.push({ ItemCount, ItemType }); } @@ -967,7 +965,6 @@ export const addRecipes = (inventory: TInventoryDatabaseDocument, itemsArray: IT if (itemIndex !== -1) { Recipes[itemIndex].ItemCount += ItemCount; - inventory.markModified(`Recipes.${itemIndex}.ItemCount`); } else { Recipes.push({ ItemCount, ItemType }); } @@ -1006,7 +1003,6 @@ export const addFusionTreasures = ( if (itemIndex !== -1) { FusionTreasures[itemIndex].ItemCount += ItemCount; - inventory.markModified(`FusionTreasures.${itemIndex}.ItemCount`); } else { FusionTreasures.push({ ItemCount, ItemType, Sockets }); } @@ -1077,7 +1073,6 @@ export const addChallenges = ( if (itemIndex !== -1) { category[itemIndex].Progress += Progress; - inventory.markModified(`ChallengeProgress.${itemIndex}.ItemCount`); } else { category.push({ Name, Progress }); } @@ -1090,7 +1085,6 @@ export const addMissionComplete = (inventory: TInventoryDatabaseDocument, { Tag, if (itemIndex !== -1) { Missions[itemIndex].Completes += Completes; - inventory.markModified(`Missions.${itemIndex}.Completes`); } else { Missions.push({ Tag, Completes }); } @@ -1106,7 +1100,6 @@ export const addBooster = (ItemType: string, time: number, inventory: TInventory if (itemIndex !== -1) { const existingBooster = Boosters[itemIndex]; existingBooster.ExpiryDate = Math.max(existingBooster.ExpiryDate, currentTime) + time; - inventory.markModified(`Boosters.${itemIndex}.ExpiryDate`); } else { Boosters.push({ ItemType, ExpiryDate: currentTime + time }); } diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 256f8231..e27df725 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -753,10 +753,13 @@ export interface ILotusCustomization extends IItemConfig { Persona: string; } -export interface IMission { +export interface IMissionDatabase { + Tag: string; Completes: number; Tier?: number; - Tag: string; +} + +export interface IMission extends IMissionDatabase { RewardsCooldownTime?: IMongoDate; }