From 242c9c2a50076fa43532d9b31bc38f7f11e80b3a Mon Sep 17 00:00:00 2001 From: dutlist <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Tue, 4 Jun 2024 12:59:12 +0200 Subject: [PATCH 1/8] adding special items auto adds exlated item if suit has it --- src/models/inventoryModels/inventoryModel.ts | 26 ++------------------ src/services/inventoryService.ts | 21 +++++++++++++++- src/services/itemDataService.ts | 16 ++++++++++++ src/types/inventoryTypes/inventoryTypes.ts | 2 +- 4 files changed, 39 insertions(+), 26 deletions(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index c6c95ca1..8f0770a1 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -381,29 +381,6 @@ DuviriInfoSchema.set("toJSON", { } }); -const GenericItemSchema2 = new Schema({ - ItemType: String, - ItemName: String, - XP: Number, - UpgradeVer: Number, //this is probably __v - Features: Number, - Polarized: Number, - CustomizationSlotPurchases: Number, - ModSlotPurchases: Number, - FocusLens: String, - Expiry: Date, //TODO: needs conversion - Polarity: [polaritySchema], - Configs: [ItemConfigSchema], - ModularParts: [String], - SkillTree: String, - UpgradeType: String, - UpgradeFingerprint: String, - OffensiveUpgrade: String, - DefensiveUpgrade: String, - UpgradesExpiry: Date, //TODO: needs conversion - ArchonCrystalUpgrades: [] -}); - const TypeXPItemSchema = new Schema( { ItemType: String, @@ -703,7 +680,7 @@ const inventorySchema = new Schema( //Melee Weapon Melee: [WeaponSchema], //Ability Weapon like Ultimate Mech\Excalibur\Ivara etc - SpecialItems: [GenericItemSchema2], + SpecialItems: [GenericItemSchema], //The Mandachord(Octavia) is a step sequencer StepSequencers: [StepSequencersSchema], @@ -1006,6 +983,7 @@ type InventoryDocumentProps = { MiscItems: Types.DocumentArray; Boosters: Types.DocumentArray; OperatorLoadOuts: Types.DocumentArray; + SpecialItems: Types.DocumentArray; AdultOperatorLoadOuts: Types.DocumentArray; //TODO: this should still contain _id MechSuits: Types.DocumentArray; Scoops: Types.DocumentArray; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 6727a75e..89950811 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -24,7 +24,7 @@ import { IUpdateChallengeProgressRequest } from "../types/requestTypes"; import { logger } from "@/src/utils/logger"; -import { WeaponTypeInternal } from "@/src/services/itemDataService"; +import { WeaponTypeInternal, getExalted } from "@/src/services/itemDataService"; import { ISyndicateSacrifice, ISyndicateSacrificeResponse } from "../types/syndicateTypes"; export const createInventory = async ( @@ -74,6 +74,12 @@ export const addSentinel = async (sentinelName: string, accountId: string) => { }; export const addPowerSuit = async (powersuitName: string, accountId: string): Promise => { + const specialItems = await getExalted(powersuitName); + if(specialItems != false){ + for await (const specialItem of specialItems) { + await addSpecialItem(specialItem, accountId) + } + } const inventory = await getInventory(accountId); const suitIndex = inventory.Suits.push({ ItemType: powersuitName, Configs: [], UpgradeVer: 101, XP: 0 }); const changedInventory = await inventory.save(); @@ -81,12 +87,25 @@ export const addPowerSuit = async (powersuitName: string, accountId: string): Pr }; export const addMechSuit = async (mechsuitName: string, accountId: string) => { + const specialItems = await getExalted(mechsuitName); + if(specialItems != false){ + for await (const specialItem of specialItems) { + await addSpecialItem(specialItem, accountId) + } + } const inventory = await getInventory(accountId); const suitIndex = inventory.MechSuits.push({ ItemType: mechsuitName, Configs: [], UpgradeVer: 101, XP: 0 }); const changedInventory = await inventory.save(); return changedInventory.MechSuits[suitIndex - 1].toJSON(); }; +export const addSpecialItem = async (itemName: string, accountId: string) => { + const inventory = await getInventory(accountId); + const specialItemIndex = inventory.SpecialItems.push({ ItemType: itemName, Configs: [], Features: 1, UpgradeVer: 101, XP: 0 }); + const changedInventory = await inventory.save(); + return changedInventory.SpecialItems[specialItemIndex -1].toJSON(); +}; + export const updateSlots = async (accountId: string, slotName: SlotNames, slotAmount: number, extraAmount: number) => { const inventory = await getInventory(accountId); diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 51ad3b68..835d32d0 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -3,6 +3,8 @@ import { logger } from "@/src/utils/logger"; import Items, { Buildable, Category, MinimalItem, Warframe, Weapon } from "warframe-items"; import badItems from "@/static/json/exclude-mods.json"; import dict_en from "@/node_modules/warframe-public-export-plus/dict.en.json"; +import exportSuits from "@/node_modules/warframe-public-export-plus/ExportWarframes.json"; + export type MinWarframe = Omit; export type MinWeapon = Omit; @@ -104,6 +106,15 @@ export const getItemByBlueprint = (uniqueName: string): (MinItem & Buildable) | return item; }; +export const getExalted = (uniqueName: string) => { + const suit = getSuitByUniqueName(uniqueName); + if(suit?.exalted !== undefined){ + return suit.exalted; + } else { + return false + } +} + export const getItemCategoryByUniqueName = (uniqueName: string) => { //Lotus/Types/Items/MiscItems/PolymerBundle @@ -121,6 +132,11 @@ export const getItemCategoryByUniqueName = (uniqueName: string) => { return category; }; +export const getSuitByUniqueName = (uniqueName: string) => { + const suit = exportSuits.find(suit => suit.uniqueName === uniqueName); + return suit; +}; + export const getItemByUniqueName = (uniqueName: string) => { const item = items.find(item => item.uniqueName === uniqueName); return item; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index decec7c1..66f863ee 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -231,7 +231,7 @@ export interface IInventoryResponse { AlignmentReplay: IAlignment; PersonalGoalProgress: IPersonalGoalProgress[]; DailyAffiliationSolaris: number; - SpecialItems: IGenericItem2[]; + SpecialItems: IGenericItem[]; ThemeStyle: string; ThemeBackground: string; ThemeSounds: string; -- 2.47.2 From e59b2b3d0a9b9f1a44b2936af2de55cb6b9a3b48 Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon Date: Tue, 4 Jun 2024 10:59:45 +0000 Subject: [PATCH 2/8] Apply prettier changes --- src/services/inventoryService.ts | 18 ++++++++++++------ src/services/itemDataService.ts | 7 +++---- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 89950811..5544b6d8 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -75,9 +75,9 @@ export const addSentinel = async (sentinelName: string, accountId: string) => { export const addPowerSuit = async (powersuitName: string, accountId: string): Promise => { const specialItems = await getExalted(powersuitName); - if(specialItems != false){ + if (specialItems != false) { for await (const specialItem of specialItems) { - await addSpecialItem(specialItem, accountId) + await addSpecialItem(specialItem, accountId); } } const inventory = await getInventory(accountId); @@ -88,9 +88,9 @@ export const addPowerSuit = async (powersuitName: string, accountId: string): Pr export const addMechSuit = async (mechsuitName: string, accountId: string) => { const specialItems = await getExalted(mechsuitName); - if(specialItems != false){ + if (specialItems != false) { for await (const specialItem of specialItems) { - await addSpecialItem(specialItem, accountId) + await addSpecialItem(specialItem, accountId); } } const inventory = await getInventory(accountId); @@ -101,9 +101,15 @@ export const addMechSuit = async (mechsuitName: string, accountId: string) => { export const addSpecialItem = async (itemName: string, accountId: string) => { const inventory = await getInventory(accountId); - const specialItemIndex = inventory.SpecialItems.push({ ItemType: itemName, Configs: [], Features: 1, UpgradeVer: 101, XP: 0 }); + const specialItemIndex = inventory.SpecialItems.push({ + ItemType: itemName, + Configs: [], + Features: 1, + UpgradeVer: 101, + XP: 0 + }); const changedInventory = await inventory.save(); - return changedInventory.SpecialItems[specialItemIndex -1].toJSON(); + return changedInventory.SpecialItems[specialItemIndex - 1].toJSON(); }; export const updateSlots = async (accountId: string, slotName: SlotNames, slotAmount: number, extraAmount: number) => { diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 835d32d0..0b74da6e 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -5,7 +5,6 @@ import badItems from "@/static/json/exclude-mods.json"; import dict_en from "@/node_modules/warframe-public-export-plus/dict.en.json"; import exportSuits from "@/node_modules/warframe-public-export-plus/ExportWarframes.json"; - export type MinWarframe = Omit; export type MinWeapon = Omit; export type MinItem = Omit; @@ -108,12 +107,12 @@ export const getItemByBlueprint = (uniqueName: string): (MinItem & Buildable) | export const getExalted = (uniqueName: string) => { const suit = getSuitByUniqueName(uniqueName); - if(suit?.exalted !== undefined){ + if (suit?.exalted !== undefined) { return suit.exalted; } else { - return false + return false; } -} +}; export const getItemCategoryByUniqueName = (uniqueName: string) => { //Lotus/Types/Items/MiscItems/PolymerBundle -- 2.47.2 From aedc356c33211232d1591f99f19d2b2f10281ff1 Mon Sep 17 00:00:00 2001 From: dutlist <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Tue, 4 Jun 2024 13:09:37 +0200 Subject: [PATCH 3/8] eslint fix --- src/models/inventoryModels/inventoryModel.ts | 1 - src/services/inventoryService.ts | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 8f0770a1..a34531d7 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -16,7 +16,6 @@ import { ITypeCount, IFocusXP, IFocusUpgrades, - IGenericItem2, ITypeXPItem, IChallengeProgress, IStepSequencer, diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 89950811..b716b28e 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -74,7 +74,7 @@ export const addSentinel = async (sentinelName: string, accountId: string) => { }; export const addPowerSuit = async (powersuitName: string, accountId: string): Promise => { - const specialItems = await getExalted(powersuitName); + const specialItems = getExalted(powersuitName); if(specialItems != false){ for await (const specialItem of specialItems) { await addSpecialItem(specialItem, accountId) @@ -87,7 +87,7 @@ export const addPowerSuit = async (powersuitName: string, accountId: string): Pr }; export const addMechSuit = async (mechsuitName: string, accountId: string) => { - const specialItems = await getExalted(mechsuitName); + const specialItems = getExalted(mechsuitName); if(specialItems != false){ for await (const specialItem of specialItems) { await addSpecialItem(specialItem, accountId) -- 2.47.2 From 67705573ea1b92ef100bb6bd4429e48c5396d743 Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon Date: Tue, 4 Jun 2024 11:11:56 +0000 Subject: [PATCH 4/8] Apply prettier changes --- src/services/inventoryService.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 8e4de0dd..357a2120 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -75,7 +75,7 @@ export const addSentinel = async (sentinelName: string, accountId: string) => { export const addPowerSuit = async (powersuitName: string, accountId: string): Promise => { const specialItems = getExalted(powersuitName); - if(specialItems != false){ + if (specialItems != false) { for await (const specialItem of specialItems) { await addSpecialItem(specialItem, accountId); } @@ -88,7 +88,7 @@ export const addPowerSuit = async (powersuitName: string, accountId: string): Pr export const addMechSuit = async (mechsuitName: string, accountId: string) => { const specialItems = getExalted(mechsuitName); - if(specialItems != false){ + if (specialItems != false) { for await (const specialItem of specialItems) { await addSpecialItem(specialItem, accountId); } -- 2.47.2 From 41c76416afed65307703c3454b6c90b9684cbd5a Mon Sep 17 00:00:00 2001 From: dutlist <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Tue, 4 Jun 2024 13:13:32 +0200 Subject: [PATCH 5/8] remove IGenericItem2 --- src/types/inventoryTypes/inventoryTypes.ts | 24 ---------------------- 1 file changed, 24 deletions(-) diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 66f863ee..c5785178 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -61,30 +61,6 @@ export interface ITypeCount { ItemCount: number; } -export interface IGenericItem2 { - ItemType: string; - ItemName: string; - ItemId: IOid; - XP: number; - UpgradeVer: number; - Features: number; - Polarized: number; - CustomizationSlotPurchases: number; - ModSlotPurchases: number; - FocusLens: string; - Expiry: IMongoDate; - Polarity: IPolarity[]; - Configs: IItemConfig[]; - ModularParts: string[]; - SkillTree: string; - UpgradeType: string; - UpgradeFingerprint: string; - OffensiveUpgrade: string; - DefensiveUpgrade: string; - UpgradesExpiry: IMongoDate; - ArchonCrystalUpgrades: []; -} - export interface IGenericItem { ItemType: string; XP?: number; -- 2.47.2 From a96d0e7c5bd4d6b7a8d442d92d8c9d04aff813d9 Mon Sep 17 00:00:00 2001 From: dutlist <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Fri, 7 Jun 2024 15:28:56 +0200 Subject: [PATCH 6/8] Revert "remove IGenericItem2" This reverts commit 41c76416afed65307703c3454b6c90b9684cbd5a. --- src/types/inventoryTypes/inventoryTypes.ts | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index c5785178..66f863ee 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -61,6 +61,30 @@ export interface ITypeCount { ItemCount: number; } +export interface IGenericItem2 { + ItemType: string; + ItemName: string; + ItemId: IOid; + XP: number; + UpgradeVer: number; + Features: number; + Polarized: number; + CustomizationSlotPurchases: number; + ModSlotPurchases: number; + FocusLens: string; + Expiry: IMongoDate; + Polarity: IPolarity[]; + Configs: IItemConfig[]; + ModularParts: string[]; + SkillTree: string; + UpgradeType: string; + UpgradeFingerprint: string; + OffensiveUpgrade: string; + DefensiveUpgrade: string; + UpgradesExpiry: IMongoDate; + ArchonCrystalUpgrades: []; +} + export interface IGenericItem { ItemType: string; XP?: number; -- 2.47.2 From 22d07b903b85228e8dc1d8938282ab9e6462db62 Mon Sep 17 00:00:00 2001 From: dutlist <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Fri, 7 Jun 2024 15:40:17 +0200 Subject: [PATCH 7/8] revert "remove genericitem2" in inventoryModel.ts --- src/models/inventoryModels/inventoryModel.ts | 24 ++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index a34531d7..bf270350 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -16,6 +16,7 @@ import { ITypeCount, IFocusXP, IFocusUpgrades, + IGenericItem2, ITypeXPItem, IChallengeProgress, IStepSequencer, @@ -380,6 +381,29 @@ DuviriInfoSchema.set("toJSON", { } }); +const GenericItemSchema2 = new Schema({ + ItemType: String, + ItemName: String, + XP: Number, + UpgradeVer: Number, //this is probably __v + Features: Number, + Polarized: Number, + CustomizationSlotPurchases: Number, + ModSlotPurchases: Number, + FocusLens: String, + Expiry: Date, //TODO: needs conversion + Polarity: [polaritySchema], + Configs: [ItemConfigSchema], + ModularParts: [String], + SkillTree: String, + UpgradeType: String, + UpgradeFingerprint: String, + OffensiveUpgrade: String, + DefensiveUpgrade: String, + UpgradesExpiry: Date, //TODO: needs conversion + ArchonCrystalUpgrades: [] +}); + const TypeXPItemSchema = new Schema( { ItemType: String, -- 2.47.2 From 7ada9f3b6d7554d91214f5a02fd60ea4a1c227e2 Mon Sep 17 00:00:00 2001 From: dutlist <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Fri, 7 Jun 2024 15:44:37 +0200 Subject: [PATCH 8/8] eslint "fix" --- src/models/inventoryModels/inventoryModel.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index bf270350..938c0d8a 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -381,6 +381,7 @@ DuviriInfoSchema.set("toJSON", { } }); +// eslint-disable-next-line @typescript-eslint/no-unused-vars const GenericItemSchema2 = new Schema({ ItemType: String, ItemName: String, -- 2.47.2