diff --git a/project/src/generators/BotEquipmentModGenerator.ts b/project/src/generators/BotEquipmentModGenerator.ts index 515bf141..84ba7ede 100644 --- a/project/src/generators/BotEquipmentModGenerator.ts +++ b/project/src/generators/BotEquipmentModGenerator.ts @@ -514,7 +514,7 @@ export class BotEquipmentModGenerator // However, the recursion doesn't go over the slots of the parent mod but over the modPool which is given by the bot config // where we decided to keep cartridges instead of camoras. And since a CylinderMagazine only has one cartridge entry and // this entry is not to be filled, we need a special handling for the CylinderMagazine - const modParentItem = this.databaseService.getItems()[modToAddTemplate._parent]; + const modParentItem = this.itemHelper.getItem(modToAddTemplate._parent)[1]; if (this.botWeaponGeneratorHelper.magazineIsCylinderRelated(modParentItem._name)) { // We don't have child mods, we need to create the camoras for the magazines instead diff --git a/project/src/helpers/Dialogue/Commando/SptCommands/GiveCommand/GiveSptCommand.ts b/project/src/helpers/Dialogue/Commando/SptCommands/GiveCommand/GiveSptCommand.ts index 28c444bb..0ec1c55f 100644 --- a/project/src/helpers/Dialogue/Commando/SptCommands/GiveCommand/GiveSptCommand.ts +++ b/project/src/helpers/Dialogue/Commando/SptCommands/GiveCommand/GiveSptCommand.ts @@ -10,7 +10,7 @@ import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest" import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { BaseClasses } from "@spt/models/enums/BaseClasses"; import { ILogger } from "@spt/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { ItemFilterService } from "@spt/services/ItemFilterService"; import { LocaleService } from "@spt/services/LocaleService"; import { MailSendService } from "@spt/services/MailSendService"; @@ -46,7 +46,7 @@ export class GiveSptCommand implements ISptCommand @inject("PresetHelper") protected presetHelper: PresetHelper, @inject("MailSendService") protected mailSendService: MailSendService, @inject("LocaleService") protected localeService: LocaleService, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ItemFilterService") protected itemFilterService: ItemFilterService, @inject("PrimaryCloner") protected cloner: ICloner, ) @@ -147,8 +147,8 @@ export class GiveSptCommand implements ISptCommand } const localizedGlobal - = this.databaseServer.getTables().locales!.global[locale] - ?? this.databaseServer.getTables().locales!.global.en; + = this.databaseService.getLocales().global[locale] + ?? this.databaseService.getLocales().global.en; const closestItemsMatchedByName = this.itemHelper .getItems() @@ -191,8 +191,8 @@ export class GiveSptCommand implements ISptCommand } } - const localizedGlobal = this.databaseServer.getTables().locales!.global[locale] - ?? this.databaseServer.getTables().locales!.global.en; + const localizedGlobal = this.databaseService.getLocales().global[locale] + ?? this.databaseService.getLocales().global.en; // If item is an item name, we need to search using that item name and the locale which one we want otherwise // item is just the tplId. const tplId = isItemName diff --git a/project/src/helpers/PresetHelper.ts b/project/src/helpers/PresetHelper.ts index 1d94bd57..3fc5f084 100644 --- a/project/src/helpers/PresetHelper.ts +++ b/project/src/helpers/PresetHelper.ts @@ -1,7 +1,7 @@ import { inject, injectable } from "tsyringe"; import { IPreset } from "@spt/models/eft/common/IGlobals"; import { BaseClasses } from "@spt/models/enums/BaseClasses"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { ICloner } from "@spt/utils/cloners/ICloner"; import { ItemHelper } from "./ItemHelper"; @@ -13,7 +13,7 @@ export class PresetHelper protected defaultWeaponPresets: Record; constructor( - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ItemHelper") protected itemHelper: ItemHelper, @inject("PrimaryCloner") protected cloner: ICloner, ) @@ -44,7 +44,7 @@ export class PresetHelper { if (!this.defaultWeaponPresets) { - this.defaultWeaponPresets = Object.values(this.databaseServer.getTables().globals!.ItemPresets) + this.defaultWeaponPresets = Object.values(this.databaseService.getGlobals().ItemPresets) .filter( (preset) => preset._encyclopedia !== undefined @@ -68,7 +68,7 @@ export class PresetHelper { if (!this.defaultEquipmentPresets) { - this.defaultEquipmentPresets = Object.values(this.databaseServer.getTables().globals!.ItemPresets) + this.defaultEquipmentPresets = Object.values(this.databaseService.getGlobals().ItemPresets) .filter( (preset) => preset._encyclopedia !== undefined @@ -86,7 +86,7 @@ export class PresetHelper public isPreset(id: string): boolean { - return id in this.databaseServer.getTables().globals!.ItemPresets; + return id in this.databaseService.getGlobals().ItemPresets; } /** @@ -107,12 +107,12 @@ export class PresetHelper public getPreset(id: string): IPreset { - return this.cloner.clone(this.databaseServer.getTables().globals!.ItemPresets[id]); + return this.cloner.clone(this.databaseService.getGlobals().ItemPresets[id]); } public getAllPresets(): IPreset[] { - return this.cloner.clone(Object.values(this.databaseServer.getTables().globals!.ItemPresets)); + return this.cloner.clone(Object.values(this.databaseService.getGlobals().ItemPresets)); } public getPresets(templateId: string): IPreset[] diff --git a/project/src/helpers/ProfileHelper.ts b/project/src/helpers/ProfileHelper.ts index 33553de1..055fdf52 100644 --- a/project/src/helpers/ProfileHelper.ts +++ b/project/src/helpers/ProfileHelper.ts @@ -11,8 +11,8 @@ import { SkillTypes } from "@spt/models/enums/SkillTypes"; import { IInventoryConfig } from "@spt/models/spt/config/IInventoryConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { ProfileSnapshotService } from "@spt/services/ProfileSnapshotService"; import { ICloner } from "@spt/utils/cloners/ICloner"; @@ -31,7 +31,7 @@ export class ProfileHelper @inject("Watermark") protected watermark: Watermark, @inject("TimeUtil") protected timeUtil: TimeUtil, @inject("SaveServer") protected saveServer: SaveServer, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ProfileSnapshotService") protected profileSnapshotService: ProfileSnapshotService, @inject("LocalisationService") protected localisationService: LocalisationService, @@ -218,7 +218,7 @@ export class ProfileHelper public getExperience(level: number): number { let playerLevel = level; - const expTable = this.databaseServer.getTables().globals!.config.exp.level.exp_table; + const expTable = this.databaseService.getGlobals().config.exp.level.exp_table; let exp = 0; if (playerLevel >= expTable.length) @@ -241,7 +241,7 @@ export class ProfileHelper */ public getMaxLevel(): number { - return this.databaseServer.getTables().globals!.config.exp.level.exp_table.length - 1; + return this.databaseService.getGlobals().config.exp.level.exp_table.length - 1; } public getDefaultSptDataObject(): any @@ -482,8 +482,7 @@ export class ProfileHelper if (useSkillProgressRateMultipler) { - const globals = this.databaseServer.getTables().globals!; - const skillProgressRate = globals.config.SkillsSettings.SkillProgressRate; + const skillProgressRate = this.databaseService.getGlobals().config.SkillsSettings.SkillProgressRate; pointsToAddToSkill *= skillProgressRate; } diff --git a/project/src/helpers/QuestHelper.ts b/project/src/helpers/QuestHelper.ts index 2231d024..cf1ef571 100644 --- a/project/src/helpers/QuestHelper.ts +++ b/project/src/helpers/QuestHelper.ts @@ -23,7 +23,7 @@ import { IQuestConfig } from "@spt/models/spt/config/IQuestConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; import { ConfigServer } from "@spt/servers/ConfigServer"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { LocaleService } from "@spt/services/LocaleService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { MailSendService } from "@spt/services/MailSendService"; @@ -41,9 +41,9 @@ export class QuestHelper @inject("TimeUtil") protected timeUtil: TimeUtil, @inject("HashUtil") protected hashUtil: HashUtil, @inject("ItemHelper") protected itemHelper: ItemHelper, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("QuestConditionHelper") protected questConditionHelper: QuestConditionHelper, @inject("EventOutputHolder") protected eventOutputHolder: EventOutputHolder, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("LocaleService") protected localeService: LocaleService, @inject("RagfairServerHelper") protected ragfairServerHelper: RagfairServerHelper, @inject("DialogueHelper") protected dialogueHelper: DialogueHelper, @@ -770,7 +770,7 @@ export class QuestHelper */ public getQuestsFromDb(): IQuest[] { - return Object.values(this.databaseServer.getTables().templates!.quests); + return Object.values(this.databaseService.getQuests()); } /** @@ -781,15 +781,14 @@ export class QuestHelper */ public getQuestFromDb(questId: string, pmcData: IPmcData): IQuest { - let quest = this.databaseServer.getTables().templates!.quests[questId]; - // May be a repeatable quest + let quest = this.databaseService.getQuests()[questId]; if (!quest) { // Check daily/weekly objects for (const repeatableType of pmcData.RepeatableQuests) { - quest = (repeatableType.activeQuests.find((x) => x._id === questId)); + quest = (repeatableType.activeQuests.find((repeatable) => repeatable._id === questId)); if (quest) { break; @@ -1001,12 +1000,12 @@ export class QuestHelper ): void { // Get hideout crafts and find those that match by areatype/required level/end product tpl - hope for just one match - const hideoutProductions = this.databaseServer.getTables().hideout!.production; + const hideoutProductions = this.databaseService.getHideout().production; const matchingProductions = hideoutProductions.filter( - (x) => - x.areaType === Number.parseInt(craftUnlockReward.traderId) - && x.requirements.some((x) => x.requiredLevel === craftUnlockReward.loyaltyLevel) - && x.endProduct === craftUnlockReward.items[0]._tpl, + (prod) => + prod.areaType === Number.parseInt(craftUnlockReward.traderId) + && prod.requirements.some((x) => x.requiredLevel === craftUnlockReward.loyaltyLevel) + && prod.endProduct === craftUnlockReward.items[0]._tpl, ); // More/less than 1 match, above filtering wasn't strict enough @@ -1099,7 +1098,7 @@ export class QuestHelper public addAllQuestsToProfile(pmcProfile: IPmcData, statuses: QuestStatus[]): void { // Iterate over all quests in db - const quests = this.databaseServer.getTables().templates!.quests; + const quests = this.databaseService.getQuests(); for (const questIdKey in quests) { // Quest from db matches quests in profile, skip diff --git a/project/src/helpers/RagfairOfferHelper.ts b/project/src/helpers/RagfairOfferHelper.ts index ff0b9dfa..742ca3aa 100644 --- a/project/src/helpers/RagfairOfferHelper.ts +++ b/project/src/helpers/RagfairOfferHelper.ts @@ -25,8 +25,8 @@ import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; import { ConfigServer } from "@spt/servers/ConfigServer"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { LocaleService } from "@spt/services/LocaleService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { MailSendService } from "@spt/services/MailSendService"; @@ -48,7 +48,7 @@ export class RagfairOfferHelper @inject("TimeUtil") protected timeUtil: TimeUtil, @inject("HashUtil") protected hashUtil: HashUtil, @inject("EventOutputHolder") protected eventOutputHolder: EventOutputHolder, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("TraderHelper") protected traderHelper: TraderHelper, @inject("SaveServer") protected saveServer: SaveServer, @inject("ItemHelper") protected itemHelper: ItemHelper, @@ -355,7 +355,7 @@ export class RagfairOfferHelper */ public increaseProfileRagfairRating(profile: ISptProfile, amountToIncrementBy: number): void { - const ragfairConfig = this.databaseServer.getTables().globals!.config.RagFair; + const ragfairGlobalsConfig = this.databaseService.getGlobals().config.RagFair; profile.characters.pmc.RagfairInfo.isRatingGrowing = true; if (Number.isNaN(amountToIncrementBy)) @@ -365,7 +365,9 @@ export class RagfairOfferHelper return; } profile.characters.pmc.RagfairInfo.rating - += (ragfairConfig.ratingIncreaseCount / ragfairConfig.ratingSumForIncrease) * amountToIncrementBy; + += (ragfairGlobalsConfig.ratingIncreaseCount + / ragfairGlobalsConfig.ratingSumForIncrease) + * amountToIncrementBy; } /** @@ -572,7 +574,7 @@ export class RagfairOfferHelper const isTraderOffer = offer.user.memberType === MemberCategory.TRADER; if ( - pmcData.Info.Level < this.databaseServer.getTables().globals!.config.RagFair.minUserLevel + pmcData.Info.Level < this.databaseService.getGlobals().config.RagFair.minUserLevel && isDefaultUserOffer ) { @@ -759,10 +761,10 @@ export class RagfairOfferHelper return false; } - // handle trader items to remove items that are not available to the user right now + // Handle trader items to remove items that are not available to the user right now // required search for "lamp" shows 4 items, 3 of which are not available to a new player // filter those out - if (offer.user.id in this.databaseServer.getTables().traders!) + if (offer.user.id in this.databaseService.getTraders()) { if (!(offer.user.id in traderAssorts)) { diff --git a/project/src/helpers/RepairHelper.ts b/project/src/helpers/RepairHelper.ts index fd5e7fd6..e2911b45 100644 --- a/project/src/helpers/RepairHelper.ts +++ b/project/src/helpers/RepairHelper.ts @@ -5,7 +5,7 @@ import { ConfigTypes } from "@spt/models/enums/ConfigTypes"; import { IRepairConfig } from "@spt/models/spt/config/IRepairConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { ICloner } from "@spt/utils/cloners/ICloner"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -17,7 +17,7 @@ export class RepairHelper constructor( @inject("PrimaryLogger") protected logger: ILogger, @inject("RandomUtil") protected randomUtil: RandomUtil, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ConfigServer") protected configServer: ConfigServer, @inject("PrimaryCloner") protected cloner: ICloner, ) @@ -120,7 +120,7 @@ export class RepairHelper ): number { // Degradation value is based on the armor material - const armorMaterialSettings = this.databaseServer.getTables().globals!.config.ArmorMaterials[armorMaterial]; + const armorMaterialSettings = this.databaseService.getGlobals().config.ArmorMaterials[armorMaterial]; const minMultiplier = isRepairKit ? armorMaterialSettings.MinRepairKitDegradation diff --git a/project/src/helpers/TraderAssortHelper.ts b/project/src/helpers/TraderAssortHelper.ts index cca9764d..15f8c4a7 100644 --- a/project/src/helpers/TraderAssortHelper.ts +++ b/project/src/helpers/TraderAssortHelper.ts @@ -12,7 +12,7 @@ import { Traders } from "@spt/models/enums/Traders"; import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; @@ -32,7 +32,7 @@ export class TraderAssortHelper @inject("PrimaryLogger") protected logger: ILogger, @inject("MathUtil") protected mathUtil: MathUtil, @inject("TimeUtil") protected timeUtil: TimeUtil, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ProfileHelper") protected profileHelper: ProfileHelper, @inject("AssortHelper") protected assortHelper: AssortHelper, @inject("PaymentHelper") protected paymentHelper: PaymentHelper, @@ -68,7 +68,7 @@ export class TraderAssortHelper return this.getRagfairDataAsTraderAssort(); } - const traderClone = this.cloner.clone(this.databaseServer.getTables().traders![traderId]); + const traderClone = this.cloner.clone(this.databaseService.getTrader(traderId)); const fullProfile = this.profileHelper.getFullProfile(sessionId); const pmcProfile = fullProfile.characters.pmc; @@ -193,9 +193,8 @@ export class TraderAssortHelper */ protected hydrateMergedQuestAssorts(): void { - const traders = this.databaseServer.getTables().traders; - // Loop every trader + const traders = this.databaseService.getTraders(); for (const traderId in traders) { // Trader has quest assort data @@ -245,7 +244,7 @@ export class TraderAssortHelper public traderAssortsHaveExpired(traderID: string): boolean { const time = this.timeUtil.getTimestamp(); - const trader = this.databaseServer.getTables().traders![traderID]; + const trader = this.databaseService.getTables().traders![traderID]; return trader.base.nextResupply <= time; } diff --git a/project/src/helpers/TraderHelper.ts b/project/src/helpers/TraderHelper.ts index c70887de..44328c10 100644 --- a/project/src/helpers/TraderHelper.ts +++ b/project/src/helpers/TraderHelper.ts @@ -15,7 +15,7 @@ import { Traders } from "@spt/models/enums/Traders"; import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PlayerService } from "@spt/services/PlayerService"; @@ -33,7 +33,7 @@ export class TraderHelper constructor( @inject("PrimaryLogger") protected logger: ILogger, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ProfileHelper") protected profileHelper: ProfileHelper, @inject("HandbookHelper") protected handbookHelper: HandbookHelper, @inject("ItemHelper") protected itemHelper: ItemHelper, @@ -71,13 +71,13 @@ export class TraderHelper this.lvlUp(traderID, pmcData); } - const trader = this.databaseServer.getTables().traders?.[traderID]?.base; - if (!trader) + const traderBase = this.databaseService.getTrader(traderID).base; + if (!traderBase) { this.logger.error(this.localisationService.getText("trader-unable_to_find_trader_by_id", traderID)); } - return trader; + return traderBase; } /** @@ -89,7 +89,7 @@ export class TraderHelper { return traderId === Traders.FENCE ? this.fenceService.getRawFenceAssorts() - : this.databaseServer.getTables().traders![traderId].assort!; + : this.databaseService.getTrader(traderId).assort; } /** @@ -128,7 +128,9 @@ export class TraderHelper */ public resetTrader(sessionID: string, traderID: string): void { - const db = this.databaseServer.getTables(); + const profiles = this.databaseService.getProfiles(); + const trader = this.databaseService.getTrader(traderID); + const fullProfile = this.profileHelper.getFullProfile(sessionID); if (!fullProfile) { @@ -137,7 +139,7 @@ export class TraderHelper const pmcData = fullProfile.characters.pmc; const rawProfileTemplate: ProfileTraderTemplate - = db.templates!.profiles[fullProfile.info.edition][pmcData.Info.Side.toLowerCase()] + = profiles[fullProfile.info.edition][pmcData.Info.Side.toLowerCase()] .trader; pmcData.TradersInfo[traderID] = { @@ -145,8 +147,8 @@ export class TraderHelper loyaltyLevel: rawProfileTemplate.initialLoyaltyLevel[traderID] ?? 1, salesSum: rawProfileTemplate.initialSalesSum, standing: this.getStartingStanding(traderID, rawProfileTemplate), - nextResupply: db.traders![traderID].base.nextResupply, - unlocked: db.traders![traderID].base.unlockedByDefault, + nextResupply: trader.base.nextResupply, + unlocked: trader.base.unlockedByDefault, }; // Check if trader should be locked by default @@ -158,10 +160,12 @@ export class TraderHelper if (rawProfileTemplate.purchaseAllClothingByDefaultForTrader?.includes(traderID)) { // Get traders clothing - const clothing = this.databaseServer.getTables().traders![traderID].suits!; - - // Force suit ids into profile - this.addSuitsToProfile(fullProfile, clothing.map((x) => x.suiteId)); + const clothing = this.databaseService.getTrader(traderID).suits; + if (clothing?.length > 0) + { + // Force suit ids into profile + this.addSuitsToProfile(fullProfile, clothing!.map((suit) => suit.suiteId)); + } } if ((rawProfileTemplate.fleaBlockedDays ?? 0) > 0) @@ -283,7 +287,7 @@ export class TraderHelper public validateTraderStandingsAndPlayerLevelForProfile(sessionId: string): void { const profile = this.profileHelper.getPmcProfile(sessionId); - const traders = Object.keys(this.databaseServer.getTables().traders!); + const traders = Object.keys(this.databaseService.getTraders()); for (const trader of traders) { this.lvlUp(trader, profile); @@ -298,7 +302,7 @@ export class TraderHelper */ public lvlUp(traderID: string, pmcData: IPmcData): void { - const loyaltyLevels = this.databaseServer.getTables().traders![traderID].base.loyaltyLevels; + const loyaltyLevels = this.databaseService.getTrader(traderID).base.loyaltyLevels; // Level up player pmcData.Info.Level = this.playerService.calculateLevel(pmcData); @@ -375,7 +379,7 @@ export class TraderHelper public getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel { - const trader = this.databaseServer.getTables().traders![traderID].base; + const traderBase = this.databaseService.getTrader(traderID).base; let loyaltyLevel = pmcData.TradersInfo[traderID].loyaltyLevel; if (!loyaltyLevel || loyaltyLevel < 1) @@ -383,12 +387,12 @@ export class TraderHelper loyaltyLevel = 1; } - if (loyaltyLevel > trader.loyaltyLevels.length) + if (loyaltyLevel > traderBase.loyaltyLevels.length) { - loyaltyLevel = trader.loyaltyLevels.length; + loyaltyLevel = traderBase.loyaltyLevels.length; } - return trader.loyaltyLevels[loyaltyLevel - 1]; + return traderBase.loyaltyLevels[loyaltyLevel - 1]; } /** @@ -476,7 +480,7 @@ export class TraderHelper } // Get assorts for trader, skip trader if no assorts found - const traderAssorts = this.databaseServer.getTables().traders![Traders[traderName]].assort; + const traderAssorts = this.databaseService.getTrader(Traders[traderName]).assort; if (!traderAssorts) { continue; @@ -528,7 +532,7 @@ export class TraderHelper for (const traderName in Traders) { // Get trader and check buy category allows tpl - const traderBase = this.databaseServer.getTables().traders![Traders[traderName]]?.base; + const traderBase = this.databaseService.getTrader(Traders[traderName]).base; if (traderBase && this.itemHelper.isOfBaseclasses(tpl, traderBase.items_buy.category)) { // Get loyalty level details player has achieved with this trader diff --git a/project/src/services/BotEquipmentModPoolService.ts b/project/src/services/BotEquipmentModPoolService.ts index 365d896a..d991ac67 100644 --- a/project/src/services/BotEquipmentModPoolService.ts +++ b/project/src/services/BotEquipmentModPoolService.ts @@ -7,7 +7,7 @@ import { ConfigTypes } from "@spt/models/enums/ConfigTypes"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { VFS } from "@spt/utils/VFS"; @@ -25,7 +25,7 @@ export class BotEquipmentModPoolService @inject("PrimaryLogger") protected logger: ILogger, @inject("VFS") protected vfs: VFS, @inject("ItemHelper") protected itemHelper: ItemHelper, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("LocalisationService") protected localisationService: LocalisationService, @inject("ConfigServer") protected configServer: ConfigServer, ) @@ -96,7 +96,7 @@ export class BotEquipmentModPoolService pool[item._id][slot._name].push(itemToAdd); // Check item added into array for slots, need to iterate over those - const subItemDetails = this.databaseServer.getTables().templates!.items[itemToAdd]; + const subItemDetails = this.itemHelper.getItem(itemToAdd)[1]; const hasSubItemsToAdd = subItemDetails?._props?.Slots?.length ?? 0 > 0; if (hasSubItemsToAdd && !pool[subItemDetails._id]) { @@ -185,8 +185,8 @@ export class BotEquipmentModPoolService */ protected generateWeaponPool(): void { - const weapons = Object.values(this.databaseServer.getTables().templates!.items).filter( - (x) => x._type === "Item" && this.itemHelper.isOfBaseclass(x._id, BaseClasses.WEAPON), + const weapons = Object.values(this.databaseService.getItems()).filter( + (item) => item._type === "Item" && this.itemHelper.isOfBaseclass(item._id, BaseClasses.WEAPON), ); this.generatePool(weapons, "weapon"); @@ -199,10 +199,10 @@ export class BotEquipmentModPoolService */ protected generateGearPool(): void { - const gear = Object.values(this.databaseServer.getTables().templates!.items).filter( - (x) => - x._type === "Item" - && this.itemHelper.isOfBaseclasses(x._id, [ + const gear = Object.values(this.databaseService.getItems()).filter( + (item) => + item._type === "Item" + && this.itemHelper.isOfBaseclasses(item._id, [ BaseClasses.ARMORED_EQUIPMENT, BaseClasses.VEST, BaseClasses.ARMOR, diff --git a/project/src/services/CustomLocationWaveService.ts b/project/src/services/CustomLocationWaveService.ts index d7265dae..e79af932 100644 --- a/project/src/services/CustomLocationWaveService.ts +++ b/project/src/services/CustomLocationWaveService.ts @@ -1,10 +1,10 @@ import { inject, injectable } from "tsyringe"; -import { BossLocationSpawn, ILocationBase, Wave } from "@spt/models/eft/common/ILocationBase"; +import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; import { ConfigTypes } from "@spt/models/enums/ConfigTypes"; import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { RandomUtil } from "@spt/utils/RandomUtil"; @injectable() @@ -15,7 +15,7 @@ export class CustomLocationWaveService constructor( @inject("PrimaryLogger") protected logger: ILogger, @inject("RandomUtil") protected randomUtil: RandomUtil, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ConfigServer") protected configServer: ConfigServer, ) { @@ -70,8 +70,8 @@ export class CustomLocationWaveService for (const mapKey in bossWavesToApply) { - const location: ILocationBase = this.databaseServer.getTables().locations![mapKey]?.base; - if (!location) + const locationBase = this.databaseService.getLocation(mapKey).base; + if (!locationBase) { this.logger.warning(`Unable to add custom boss wave to location: ${mapKey}, location not found`); @@ -80,12 +80,12 @@ export class CustomLocationWaveService for (const bossWave of bossWavesToApply[mapKey]) { - if (location.BossLocationSpawn.find((x) => x.sptId === bossWave.sptId)) + if (locationBase.BossLocationSpawn.find((x) => x.sptId === bossWave.sptId)) { // Already exists, skip continue; } - location.BossLocationSpawn.push(bossWave); + locationBase.BossLocationSpawn.push(bossWave); this.logger.debug( `Added custom boss wave to ${mapKey} of type ${bossWave.BossName}, time: ${bossWave.Time}, chance: ${bossWave.BossChance}, zone: ${bossWave.BossZone}`, ); @@ -94,8 +94,8 @@ export class CustomLocationWaveService for (const mapKey in normalWavesToApply) { - const location: ILocationBase = this.databaseServer.getTables().locations![mapKey]?.base; - if (!location) + const locationBase = this.databaseService.getLocation(mapKey).base; + if (!locationBase) { this.logger.warning(`Unable to add custom wave to location: ${mapKey}, location not found`); @@ -104,14 +104,14 @@ export class CustomLocationWaveService for (const normalWave of normalWavesToApply[mapKey]) { - if (location.waves.find((x) => x.sptId === normalWave.sptId)) + if (locationBase.waves.find((x) => x.sptId === normalWave.sptId)) { // Already exists, skip continue; } - normalWave.number = location.waves.length; - location.waves.push(normalWave); + normalWave.number = locationBase.waves.length; + locationBase.waves.push(normalWave); } } } diff --git a/project/src/services/InsuranceService.ts b/project/src/services/InsuranceService.ts index 02bb2248..1ecc01e0 100644 --- a/project/src/services/InsuranceService.ts +++ b/project/src/services/InsuranceService.ts @@ -17,8 +17,8 @@ import { ILostOnDeathConfig } from "@spt/models/spt/config/ILostOnDeathConfig"; import { IInsuranceEquipmentPkg } from "@spt/models/spt/services/IInsuranceEquipmentPkg"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { LocaleService } from "@spt/services/LocaleService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { MailSendService } from "@spt/services/MailSendService"; @@ -36,7 +36,7 @@ export class InsuranceService constructor( @inject("PrimaryLogger") protected logger: ILogger, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("SecureContainerHelper") protected secureContainerHelper: SecureContainerHelper, @inject("RandomUtil") protected randomUtil: RandomUtil, @inject("ItemHelper") protected itemHelper: ItemHelper, @@ -109,6 +109,8 @@ export class InsuranceService // Get insurance items for each trader for (const traderId in this.getInsurance(sessionID)) { + const globals = this.databaseService.getGlobals(); + const traderBase = this.traderHelper.getTrader(traderId, sessionID); if (!traderBase) { @@ -118,10 +120,9 @@ export class InsuranceService let insuranceReturnTimestamp = this.getInsuranceReturnTimestamp(pmcData, traderBase); if (markOfTheUnheardOnPlayer) { - insuranceReturnTimestamp *= this.databaseServer.getTables() - .globals!.config.Insurance.CoefOfHavingMarkOfUnknown; + insuranceReturnTimestamp *= globals.config.Insurance.CoefOfHavingMarkOfUnknown; } - const dialogueTemplates = this.databaseServer.getTables().traders![traderId].dialogue; + const dialogueTemplates = this.databaseService.getTrader(traderId).dialogue; if (!dialogueTemplates) { throw new Error(this.localisationService.getText("insurance-trader_lacks_dialogue_property", traderId)); @@ -146,7 +147,7 @@ export class InsuranceService this.randomUtil.getArrayValue(dialogueTemplates?.insuranceStart), undefined, this.timeUtil.getHoursAsSeconds( - this.databaseServer.getTables().globals!.config.Insurance.MaxStorageTimeInHour, + globals.config.Insurance.MaxStorageTimeInHour, ), systemData, ); diff --git a/project/src/services/LocaleService.ts b/project/src/services/LocaleService.ts index 93109a1b..7f373e8c 100644 --- a/project/src/services/LocaleService.ts +++ b/project/src/services/LocaleService.ts @@ -134,20 +134,21 @@ export class LocaleService return "en"; } + const locales = this.databaseServer.getTables().locales!; const baseNameCode = platformLocale.baseName?.toLocaleLowerCase(); - if (baseNameCode && this.databaseServer.getTables().locales!.global[baseNameCode]) + if (baseNameCode && locales.global[baseNameCode]) { return baseNameCode; } const languageCode = platformLocale.language?.toLowerCase(); - if (languageCode && this.databaseServer.getTables().locales!.global[languageCode]) + if (languageCode && locales.global[languageCode]) { return languageCode; } const regionCode = platformLocale.region?.toLocaleLowerCase(); - if (regionCode && this.databaseServer.getTables().locales!.global[regionCode]) + if (regionCode && locales.global[regionCode]) { return regionCode; } diff --git a/project/src/services/MailSendService.ts b/project/src/services/MailSendService.ts index 2c94ddc7..acb07df9 100644 --- a/project/src/services/MailSendService.ts +++ b/project/src/services/MailSendService.ts @@ -11,8 +11,8 @@ import { MessageType } from "@spt/models/enums/MessageType"; import { Traders } from "@spt/models/enums/Traders"; import { IProfileChangeEvent, ISendMessageDetails } from "@spt/models/spt/dialog/ISendMessageDetails"; import { ILogger } from "@spt/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { HashUtil } from "@spt/utils/HashUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -27,7 +27,7 @@ export class MailSendService @inject("HashUtil") protected hashUtil: HashUtil, @inject("TimeUtil") protected timeUtil: TimeUtil, @inject("SaveServer") protected saveServer: SaveServer, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("NotifierHelper") protected notifierHelper: NotifierHelper, @inject("DialogueHelper") protected dialogueHelper: DialogueHelper, @inject("NotificationSendHelper") protected notificationSendHelper: NotificationSendHelper, @@ -416,7 +416,7 @@ export class MailSendService messageDetails: ISendMessageDetails, ): MessageItems { - const db = this.databaseServer.getTables().templates!.items; + const items = this.databaseService.getItems(); let itemsToSendToPlayer: MessageItems = {}; if ((messageDetails.items?.length ?? 0) > 0) @@ -447,7 +447,7 @@ export class MailSendService for (const reward of messageDetails.items) { // Ensure item exists in items db - const itemTemplate = db[reward._tpl]; + const itemTemplate = items[reward._tpl]; if (!itemTemplate) { // Can happen when modded items are insured + mod is removed diff --git a/project/src/services/OpenZoneService.ts b/project/src/services/OpenZoneService.ts index 28e1b4c3..c51036bd 100644 --- a/project/src/services/OpenZoneService.ts +++ b/project/src/services/OpenZoneService.ts @@ -4,7 +4,7 @@ import { ConfigTypes } from "@spt/models/enums/ConfigTypes"; import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -17,7 +17,7 @@ export class OpenZoneService constructor( @inject("PrimaryLogger") protected logger: ILogger, @inject("RandomUtil") protected randomUtil: RandomUtil, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("LocalisationService") protected localisationService: LocalisationService, @inject("ConfigServer") protected configServer: ConfigServer, ) @@ -49,7 +49,7 @@ export class OpenZoneService */ public applyZoneChangesToAllMaps(): void { - const dbLocations = this.databaseServer.getTables().locations!; + const dbLocations = this.databaseService.getLocations(); for (const mapKey in this.locationConfig.openZones) { if (!dbLocations[mapKey]) diff --git a/project/src/services/PaymentService.ts b/project/src/services/PaymentService.ts index d3b16be9..a2ae5e86 100644 --- a/project/src/services/PaymentService.ts +++ b/project/src/services/PaymentService.ts @@ -12,7 +12,7 @@ import { IProcessBuyTradeRequestData } from "@spt/models/eft/trade/IProcessBuyTr import { IProcessSellTradeRequestData } from "@spt/models/eft/trade/IProcessSellTradeRequestData"; import { BackendErrorCodes } from "@spt/models/enums/BackendErrorCodes"; import { ILogger } from "@spt/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { HashUtil } from "@spt/utils/HashUtil"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -24,7 +24,7 @@ export class PaymentService @inject("PrimaryLogger") protected logger: ILogger, @inject("HashUtil") protected hashUtil: HashUtil, @inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("HandbookHelper") protected handbookHelper: HandbookHelper, @inject("TraderHelper") protected traderHelper: TraderHelper, @inject("ItemHelper") protected itemHelper: ItemHelper, @@ -180,15 +180,15 @@ export class PaymentService ): void { const trader = this.traderHelper.getTrader(request.tid, sessionID); - const currency = this.paymentHelper.getCurrency(trader.currency); - let calcAmount = this.handbookHelper.fromRUB(this.handbookHelper.inRUB(amountToSend, currency), currency); - const currencyMaxStackSize = this.databaseServer.getTables().templates!.items[currency]._props.StackMaxSize!; + const currencyTpl = this.paymentHelper.getCurrency(trader.currency); + let calcAmount = this.handbookHelper.fromRUB(this.handbookHelper.inRUB(amountToSend, currencyTpl), currencyTpl); + const currencyMaxStackSize = this.itemHelper.getItem(currencyTpl)[1]._props.StackMaxSize!; let skipSendingMoneyToStash = false; for (const item of pmcData.Inventory.items) { // Item is not currency - if (item._tpl !== currency) + if (item._tpl !== currencyTpl) { continue; } @@ -227,7 +227,7 @@ export class PaymentService // Create single currency item with all currency on it const rootCurrencyReward = { _id: this.hashUtil.generate(), - _tpl: currency, + _tpl: currencyTpl, upd: { StackObjectsCount: Math.round(calcAmount) }, }; diff --git a/project/src/services/PlayerService.ts b/project/src/services/PlayerService.ts index 73c739b5..bed56a65 100644 --- a/project/src/services/PlayerService.ts +++ b/project/src/services/PlayerService.ts @@ -1,7 +1,7 @@ import { inject, injectable } from "tsyringe"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { ILogger } from "@spt/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -12,7 +12,7 @@ export class PlayerService @inject("PrimaryLogger") protected logger: ILogger, @inject("TimeUtil") protected timeUtil: TimeUtil, @inject("LocalisationService") protected localisationService: LocalisationService, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, ) {} @@ -25,7 +25,7 @@ export class PlayerService { let accExp = 0; - for (const [level, { exp }] of this.databaseServer.getTables().globals!.config.exp.level.exp_table.entries()) + for (const [level, { exp }] of this.databaseService.getGlobals().config.exp.level.exp_table.entries()) { accExp += exp; diff --git a/project/src/services/RagfairLinkedItemService.ts b/project/src/services/RagfairLinkedItemService.ts index 0132d36a..5c148f93 100644 --- a/project/src/services/RagfairLinkedItemService.ts +++ b/project/src/services/RagfairLinkedItemService.ts @@ -2,7 +2,7 @@ import { inject, injectable } from "tsyringe"; import { ItemHelper } from "@spt/helpers/ItemHelper"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { BaseClasses } from "@spt/models/enums/BaseClasses"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; @injectable() export class RagfairLinkedItemService @@ -10,7 +10,7 @@ export class RagfairLinkedItemService protected linkedItemsCache: Record> = {}; constructor( - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ItemHelper") protected itemHelper: ItemHelper, ) {} @@ -55,7 +55,7 @@ export class RagfairLinkedItemService return linkedItems[id]; }; - for (const item of Object.values(this.databaseServer.getTables().templates!.items)) + for (const item of Object.values(this.databaseService.getItems())) { const itemLinkedSet = getLinkedItems(item._id); diff --git a/project/src/services/RagfairOfferService.ts b/project/src/services/RagfairOfferService.ts index 7f1dbc57..cd80509c 100644 --- a/project/src/services/RagfairOfferService.ts +++ b/project/src/services/RagfairOfferService.ts @@ -8,8 +8,8 @@ import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; import { ConfigServer } from "@spt/servers/ConfigServer"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; import { SaveServer } from "@spt/servers/SaveServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; @@ -28,7 +28,7 @@ export class RagfairOfferService constructor( @inject("PrimaryLogger") protected logger: ILogger, @inject("TimeUtil") protected timeUtil: TimeUtil, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("SaveServer") protected saveServer: SaveServer, @inject("RagfairServerHelper") protected ragfairServerHelper: RagfairServerHelper, @inject("ProfileHelper") protected profileHelper: ProfileHelper, @@ -168,7 +168,7 @@ export class RagfairOfferService */ public traderOffersNeedRefreshing(traderID: string): boolean { - const trader = this.databaseServer.getTables().traders![traderID]; + const trader = this.databaseService.getTrader(traderID); if (!trader || !trader.base) { this.logger.error(this.localisationService.getText("ragfair-trader_missing_base_file", traderID)); @@ -263,7 +263,7 @@ export class RagfairOfferService } // Reduce player ragfair rep - profile.RagfairInfo.rating -= this.databaseServer.getTables().globals!.config.RagFair.ratingDecreaseCount; + profile.RagfairInfo.rating -= this.databaseService.getGlobals().config.RagFair.ratingDecreaseCount; profile.RagfairInfo.isRatingGrowing = false; const firstOfferItem = playerOffer.items[0]; diff --git a/project/src/services/RagfairPriceService.ts b/project/src/services/RagfairPriceService.ts index fd521902..4dc3f484 100644 --- a/project/src/services/RagfairPriceService.ts +++ b/project/src/services/RagfairPriceService.ts @@ -16,7 +16,7 @@ import { IRagfairConfig, IUnreasonableModPrices } from "@spt/models/spt/config/I import { IRagfairServerPrices } from "@spt/models/spt/ragfair/IRagfairServerPrices"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,7 +32,7 @@ export class RagfairPriceService implements OnLoad constructor( @inject("HandbookHelper") protected handbookHelper: HandbookHelper, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("PrimaryLogger") protected logger: ILogger, @inject("ItemHelper") protected itemHelper: ItemHelper, @inject("PresetHelper") protected presetHelper: PresetHelper, @@ -64,7 +64,7 @@ export class RagfairPriceService implements OnLoad */ public refreshStaticPrices(): void { - for (const item of Object.values(this.databaseServer.getTables().templates!.items).filter( + for (const item of Object.values(this.databaseService.getItems()).filter( (x) => x._type === "Item", )) { @@ -77,7 +77,7 @@ export class RagfairPriceService implements OnLoad */ public refreshDynamicPrices(): void { - const pricesTable = this.databaseServer.getTables().templates!.prices; + const pricesTable = this.databaseService.getPrices(); this.prices.dynamic = { ...this.prices.dynamic, ...pricesTable }; } @@ -138,7 +138,7 @@ export class RagfairPriceService implements OnLoad // If the price doesn't exist in the cache yet, try to find it if (!this.prices.dynamic[itemTpl]) { - this.prices.dynamic[itemTpl] = this.databaseServer.getTables().templates!.prices[itemTpl]; + this.prices.dynamic[itemTpl] = this.databaseService.getPrices()[itemTpl]; } return this.prices.dynamic[itemTpl]; @@ -328,7 +328,7 @@ export class RagfairPriceService implements OnLoad if (unreasonableModifier.enabled) { price = this.adjustUnreasonablePrice( - this.databaseServer.getTables().templates!.handbook.Items, + this.databaseService.getHandbook().Items, unreasonableModifier, itemTemplateId, price, diff --git a/project/src/services/RagfairTaxService.ts b/project/src/services/RagfairTaxService.ts index d52f160f..f647db25 100644 --- a/project/src/services/RagfairTaxService.ts +++ b/project/src/services/RagfairTaxService.ts @@ -6,7 +6,7 @@ import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { IStorePlayerOfferTaxAmountRequestData } from "@spt/models/eft/ragfair/IStorePlayerOfferTaxAmountRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; import { ILogger } from "@spt/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { RagfairPriceService } from "@spt/services/RagfairPriceService"; @injectable() @@ -16,7 +16,7 @@ export class RagfairTaxService constructor( @inject("PrimaryLogger") protected logger: ILogger, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("RagfairPriceService") protected ragfairPriceService: RagfairPriceService, @inject("ItemHelper") protected itemHelper: ItemHelper, ) @@ -65,13 +65,14 @@ export class RagfairTaxService return 0; } + const globals = this.databaseService.getGlobals(); + const itemTemplate = this.itemHelper.getItem(item._tpl)[1]; const itemWorth = this.calculateItemWorth(item, itemTemplate, offerItemCount, pmcData); const requirementsPrice = requirementsValue * (sellInOnePiece ? 1 : offerItemCount); - const itemTaxMult = this.databaseServer.getTables().globals!.config.RagFair.communityItemTax / 100.0; - const requirementTaxMult - = this.databaseServer.getTables().globals!.config.RagFair.communityRequirementTax / 100.0; + const itemTaxMult = globals.config.RagFair.communityItemTax / 100.0; + const requirementTaxMult = globals!.config.RagFair.communityRequirementTax / 100.0; let itemPriceMult = Math.log10(itemWorth / requirementsPrice); let requirementPriceMult = Math.log10(requirementsPrice / itemWorth); diff --git a/project/src/services/RaidTimeAdjustmentService.ts b/project/src/services/RaidTimeAdjustmentService.ts index d00b7359..3d480f55 100644 --- a/project/src/services/RaidTimeAdjustmentService.ts +++ b/project/src/services/RaidTimeAdjustmentService.ts @@ -14,7 +14,7 @@ import { import { IRaidChanges } from "@spt/models/spt/location/IRaidChanges"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { RandomUtil } from "@spt/utils/RandomUtil"; @injectable() @@ -24,7 +24,7 @@ export class RaidTimeAdjustmentService constructor( @inject("PrimaryLogger") protected logger: ILogger, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("RandomUtil") protected randomUtil: RandomUtil, @inject("WeightedRandomHelper") protected weightedRandomHelper: WeightedRandomHelper, @inject("ApplicationContext") protected applicationContext: ApplicationContext, @@ -105,9 +105,8 @@ export class RaidTimeAdjustmentService */ public getRaidAdjustments(sessionId: string, request: IGetRaidTimeRequest): IGetRaidTimeResponse { - const db = this.databaseServer.getTables(); - - const mapBase: ILocationBase = db.locations![request.Location.toLowerCase()].base; + const globals = this.databaseService.getGlobals(); + const mapBase: ILocationBase = this.databaseService.getLocation(request.Location.toLowerCase()).base; const baseEscapeTimeMinutes = mapBase.EscapeTimeLimit; // Prep result object to return @@ -115,7 +114,7 @@ export class RaidTimeAdjustmentService RaidTimeMinutes: baseEscapeTimeMinutes, ExitChanges: [], NewSurviveTimeSeconds: undefined, - OriginalSurvivalTimeSeconds: db.globals!.config.exp.match_end.survived_seconds_requirement, + OriginalSurvivalTimeSeconds: globals.config.exp.match_end.survived_seconds_requirement, }; // Pmc raid, send default diff --git a/project/src/services/RepairService.ts b/project/src/services/RepairService.ts index b913a8cf..2b46a014 100644 --- a/project/src/services/RepairService.ts +++ b/project/src/services/RepairService.ts @@ -19,7 +19,7 @@ import { SkillTypes } from "@spt/models/enums/SkillTypes"; import { BonusSettings, IRepairConfig } from "@spt/models/spt/config/IRepairConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -30,7 +30,7 @@ export class RepairService protected repairConfig: IRepairConfig; constructor( @inject("PrimaryLogger") protected logger: ILogger, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ProfileHelper") protected profileHelper: ProfileHelper, @inject("RandomUtil") protected randomUtil: RandomUtil, @inject("ItemHelper") protected itemHelper: ItemHelper, @@ -75,7 +75,8 @@ export class RepairService const repairQualityMultiplier = Number(traderRepairDetails.quality); const repairRate = priceCoef <= 0 ? 1 : priceCoef / 100 + 1; - const itemToRepairDetails = this.databaseServer.getTables().templates!.items[itemToRepair._tpl]; + const items = this.databaseService.getItems(); + const itemToRepairDetails = items[itemToRepair._tpl]; const repairItemIsArmor = !!itemToRepairDetails._props.ArmorMaterial; this.repairHelper.updateItemDurability( @@ -89,7 +90,7 @@ export class RepairService ); // get repair price - const itemRepairCost = this.databaseServer.getTables().templates!.items[itemToRepair._tpl]._props.RepairCost; + const itemRepairCost = items[itemToRepair._tpl]._props.RepairCost; if (!itemRepairCost) { throw new Error(this.localisationService.getText("repair-unable_to_find_item_repair_cost", itemToRepair._tpl)); @@ -301,7 +302,7 @@ export class RepairService throw new Error(this.localisationService.getText("repair-item_not_found_unable_to_repair", itemToRepairId)); } - const itemsDb = this.databaseServer.getTables().templates!.items; + const itemsDb = this.databaseService.getItems(); const itemToRepairDetails = itemsDb[itemToRepair._tpl]; const repairItemIsArmor = !!itemToRepairDetails._props.ArmorMaterial; const repairAmount = repairKits[0].count / this.getKitDivisor(itemToRepairDetails, repairItemIsArmor, pmcData); @@ -357,7 +358,7 @@ export class RepairService */ protected getKitDivisor(itemToRepairDetails: ITemplateItem, isArmor: boolean, pmcData: IPmcData): number { - const globals = this.databaseServer.getTables().globals!; + const globals = this.databaseService.getGlobals(); const globalRepairSettings = globals.config.RepairSettings; const intellectRepairPointsPerLevel = globals.config.SkillsSettings.Intellect.RepairPointsCostReduction; @@ -519,7 +520,7 @@ export class RepairService */ protected shouldBuffItem(repairDetails: RepairDetails, pmcData: IPmcData): boolean { - const globals = this.databaseServer.getTables().globals!; + const globals = this.databaseService.getGlobals(); const hasTemplate = this.itemHelper.getItem(repairDetails.repairedItem._tpl); if (!hasTemplate[0]) diff --git a/project/src/services/TraderServicesService.ts b/project/src/services/TraderServicesService.ts index a8e63ddf..5140ba12 100644 --- a/project/src/services/TraderServicesService.ts +++ b/project/src/services/TraderServicesService.ts @@ -4,7 +4,7 @@ import { QuestStatus } from "@spt/models/enums/QuestStatus"; import { TraderServiceType } from "@spt/models/enums/TraderServiceType"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; import { ILogger } from "@spt/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { ICloner } from "@spt/utils/cloners/ICloner"; @injectable() @@ -13,7 +13,7 @@ export class TraderServicesService constructor( @inject("ProfileHelper") protected profileHelper: ProfileHelper, @inject("PrimaryLogger") protected logger: ILogger, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("PrimaryCloner") protected cloner: ICloner, ) {} @@ -21,7 +21,7 @@ export class TraderServicesService public getTraderServices(sessionId: string, traderId: string): ITraderServiceModel[] { const pmcData = this.profileHelper.getPmcProfile(sessionId); - let traderServices = this.cloner.clone(this.databaseServer.getTables().traders![traderId]?.services); + let traderServices = this.cloner.clone(this.databaseService.getTrader(traderId).services); if (!traderServices) { return []; @@ -47,7 +47,7 @@ export class TraderServicesService { for (const questId of service.requirements.completedQuests) { - const quest = pmcData.Quests.find((x) => x.qid === questId); + const quest = pmcData.Quests.find((questStatus) => questStatus.qid === questId); if (!quest || quest.status !== QuestStatus.Success) { servicesToDelete.push(service.serviceType); @@ -58,7 +58,7 @@ export class TraderServicesService } // Clear any unavailable services from the list - traderServices = traderServices.filter((x) => !servicesToDelete.includes(x.serviceType)); + traderServices = traderServices.filter((service) => !servicesToDelete.includes(service.serviceType)); return traderServices; } diff --git a/project/src/services/mod/CustomItemService.ts b/project/src/services/mod/CustomItemService.ts index 74a22416..97c6ef9a 100644 --- a/project/src/services/mod/CustomItemService.ts +++ b/project/src/services/mod/CustomItemService.ts @@ -20,7 +20,7 @@ export class CustomItemService constructor( @inject("PrimaryLogger") protected logger: ILogger, @inject("HashUtil") protected hashUtil: HashUtil, - @inject("DatabaseService") protected databaseServer: DatabaseService, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemBaseClassService") protected itemBaseClassService: ItemBaseClassService, @inject("PrimaryCloner") protected cloner: ICloner, @@ -41,7 +41,7 @@ export class CustomItemService public createItemFromClone(newItemDetails: NewItemFromCloneDetails): CreateItemResult { const result = new CreateItemResult(); - const tables = this.databaseServer.getTables(); + const tables = this.databaseService.getTables(); // Generate new id for item if none supplied const newItemId = this.getOrGenerateIdForItem(newItemDetails.newId); @@ -98,7 +98,7 @@ export class CustomItemService public createItem(newItemDetails: NewItemDetails): CreateItemResult { const result = new CreateItemResult(); - const tables = this.databaseServer.getTables(); + const tables = this.databaseService.getTables(); const newItem = newItemDetails.newItem; @@ -161,7 +161,7 @@ export class CustomItemService */ protected addToItemsDb(newItemId: string, itemToAdd: ITemplateItem): void { - this.databaseServer.getItems()[newItemId] = itemToAdd; + this.databaseService.getItems()[newItemId] = itemToAdd; } /** @@ -172,7 +172,7 @@ export class CustomItemService */ protected addToHandbookDb(newItemId: string, parentId: string, priceRoubles: number): void { - this.databaseServer.getTemplates().handbook.Items.push({ Id: newItemId, ParentId: parentId, Price: priceRoubles }); + this.databaseService.getTemplates().handbook.Items.push({ Id: newItemId, ParentId: parentId, Price: priceRoubles }); } /** @@ -188,7 +188,7 @@ export class CustomItemService */ protected addToLocaleDbs(localeDetails: Record, newItemId: string): void { - const languages = this.databaseServer.getLocales().languages; + const languages = this.databaseService.getLocales().languages; for (const shortNameKey in languages) { // Get locale details passed in, if not provided by caller use first record in newItemDetails.locales @@ -199,7 +199,7 @@ export class CustomItemService } // Create new record in locale file - const globals = this.databaseServer.getLocales(); + const globals = this.databaseService.getLocales(); globals.global[shortNameKey][`${newItemId} Name`] = newLocaleDetails.name; globals.global[shortNameKey][`${newItemId} ShortName`] = newLocaleDetails.shortName; globals.global[shortNameKey][`${newItemId} Description`] = newLocaleDetails.description; @@ -213,7 +213,7 @@ export class CustomItemService */ protected addToFleaPriceDb(newItemId: string, fleaPriceRoubles: number): void { - this.databaseServer.getTemplates().prices[newItemId] = fleaPriceRoubles; + this.databaseService.getTemplates().prices[newItemId] = fleaPriceRoubles; } /** @@ -261,7 +261,7 @@ export class CustomItemService } // Get PMCs - const botTypes = this.databaseServer.getBots().types; + const botTypes = this.databaseService.getBots().types; // Add weapon base+mods into bear/usec data botTypes.usec.inventory.mods[weaponTpl] = baseWeaponModObject;