diff --git a/project/src/callbacks/DataCallbacks.ts b/project/src/callbacks/DataCallbacks.ts index ee85f620..84ddbd62 100644 --- a/project/src/callbacks/DataCallbacks.ts +++ b/project/src/callbacks/DataCallbacks.ts @@ -24,7 +24,7 @@ export class DataCallbacks { constructor( @inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil, - @inject("DatabaseService") protected databaseServer: DatabaseService, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("RagfairController") protected ragfairController: RagfairController, @inject("HideoutController") protected hideoutController: HideoutController, ) @@ -36,7 +36,7 @@ export class DataCallbacks */ public getSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData { - return this.httpResponse.getBody(this.databaseServer.getSettings()); + return this.httpResponse.getBody(this.databaseService.getSettings()); } /** @@ -45,10 +45,10 @@ export class DataCallbacks */ public getGlobals(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData { - const globals = this.databaseServer.getGlobals(); + const globals = this.databaseService.getGlobals(); globals.time = Date.now() / 1000; - return this.httpResponse.getBody(this.databaseServer.getGlobals()); + return this.httpResponse.getBody(this.databaseService.getGlobals()); } /** @@ -57,7 +57,7 @@ export class DataCallbacks */ public getTemplateItems(url: string, info: IEmptyRequestData, sessionID: string): string { - return this.httpResponse.getUnclearedBody(this.databaseServer.getItems()); + return this.httpResponse.getUnclearedBody(this.databaseService.getItems()); } /** @@ -70,7 +70,7 @@ export class DataCallbacks sessionID: string, ): IGetBodyResponseData { - return this.httpResponse.getBody(this.databaseServer.getHandbook()); + return this.httpResponse.getBody(this.databaseService.getHandbook()); } /** @@ -83,7 +83,7 @@ export class DataCallbacks sessionID: string, ): IGetBodyResponseData> { - return this.httpResponse.getBody(this.databaseServer.getTemplates().customization); + return this.httpResponse.getBody(this.databaseService.getTemplates().customization); } /** @@ -96,7 +96,7 @@ export class DataCallbacks sessionID: string, ): IGetBodyResponseData { - return this.httpResponse.getBody(this.databaseServer.getTemplates().character); + return this.httpResponse.getBody(this.databaseService.getTemplates().character); } /** @@ -109,7 +109,7 @@ export class DataCallbacks sessionID: string, ): IGetBodyResponseData { - return this.httpResponse.getBody(this.databaseServer.getHideout().settings); + return this.httpResponse.getBody(this.databaseService.getHideout().settings); } public getHideoutAreas( @@ -118,7 +118,7 @@ export class DataCallbacks sessionID: string, ): IGetBodyResponseData { - return this.httpResponse.getBody(this.databaseServer.getHideout().areas); + return this.httpResponse.getBody(this.databaseService.getHideout().areas); } public gethideoutProduction( @@ -127,7 +127,7 @@ export class DataCallbacks sessionID: string, ): IGetBodyResponseData { - return this.httpResponse.getBody(this.databaseServer.getHideout().production); + return this.httpResponse.getBody(this.databaseService.getHideout().production); } public getHideoutScavcase( @@ -136,7 +136,7 @@ export class DataCallbacks sessionID: string, ): IGetBodyResponseData { - return this.httpResponse.getBody(this.databaseServer.getHideout().scavcase); + return this.httpResponse.getBody(this.databaseService.getHideout().scavcase); } /** @@ -148,7 +148,7 @@ export class DataCallbacks sessionID: string, ): IGetBodyResponseData> { - return this.httpResponse.getBody(this.databaseServer.getLocales().languages); + return this.httpResponse.getBody(this.databaseService.getLocales().languages); } /** @@ -157,7 +157,7 @@ export class DataCallbacks public getLocalesMenu(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData { const localeId = url.replace("/client/menu/locale/", ""); - const locales = this.databaseServer.getLocales(); + const locales = this.databaseService.getLocales(); let result = locales.menu[localeId]; if (result === undefined) @@ -177,7 +177,7 @@ export class DataCallbacks public getLocalesGlobal(url: string, info: IEmptyRequestData, sessionID: string): string { const localeId = url.replace("/client/locale/", ""); - const locales = this.databaseServer.getLocales(); + const locales = this.databaseService.getLocales(); let result = locales.global[localeId]; if (result === undefined) diff --git a/project/src/callbacks/MatchCallbacks.ts b/project/src/callbacks/MatchCallbacks.ts index 03fefe8f..a8b3e1a9 100644 --- a/project/src/callbacks/MatchCallbacks.ts +++ b/project/src/callbacks/MatchCallbacks.ts @@ -17,7 +17,7 @@ import { IProfileStatusResponse } from "@spt/models/eft/match/IProfileStatusResp import { IPutMetricsRequestData } from "@spt/models/eft/match/IPutMetricsRequestData"; import { IRequestIdRequest } from "@spt/models/eft/match/IRequestIdRequest"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { JsonUtil } from "@spt/utils/JsonUtil"; @@ -28,7 +28,7 @@ export class MatchCallbacks @inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil, @inject("JsonUtil") protected jsonUtil: JsonUtil, @inject("MatchController") protected matchController: MatchController, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, ) {} @@ -166,7 +166,7 @@ export class MatchCallbacks // eslint-disable-next-line @typescript-eslint/no-unused-vars public getMetrics(url: string, info: any, sessionID: string): IGetBodyResponseData { - return this.httpResponse.getBody(this.jsonUtil.serialize(this.databaseServer.getTables().match!.metrics)); + return this.httpResponse.getBody(this.jsonUtil.serialize(this.databaseService.getMatch().metrics)); } /** diff --git a/project/src/controllers/InsuranceController.ts b/project/src/controllers/InsuranceController.ts index 94ff0225..8e5148a4 100644 --- a/project/src/controllers/InsuranceController.ts +++ b/project/src/controllers/InsuranceController.ts @@ -45,7 +45,7 @@ export class InsuranceController @inject("EventOutputHolder") protected eventOutputHolder: EventOutputHolder, @inject("TimeUtil") protected timeUtil: TimeUtil, @inject("SaveServer") protected saveServer: SaveServer, - @inject("DatabaseService") protected databaseServer: DatabaseService, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ProfileHelper") protected profileHelper: ProfileHelper, @inject("DialogueHelper") protected dialogueHelper: DialogueHelper, @@ -586,12 +586,12 @@ export class InsuranceController const labsId = "laboratory"; // After all of the item filtering that we've done, if there are no items remaining, the insurance has // successfully "failed" to return anything and an appropriate message should be sent to the player. - const traderDialogMessages = this.databaseServer.getTrader(insurance.traderId).dialogue; + const traderDialogMessages = this.databaseService.getTrader(insurance.traderId).dialogue; // Map is labs + insurance is disabled in base.json if ( insurance.systemData?.location?.toLowerCase() === labsId - && !(this.databaseServer.getLocation(labsId).base.Insurance) + && !(this.databaseService.getLocation(labsId).base.Insurance) ) { // Trader has labs-specific messages diff --git a/project/src/controllers/LauncherController.ts b/project/src/controllers/LauncherController.ts index 06dd210f..c13eb2db 100644 --- a/project/src/controllers/LauncherController.ts +++ b/project/src/controllers/LauncherController.ts @@ -32,7 +32,7 @@ export class LauncherController @inject("SaveServer") protected saveServer: SaveServer, @inject("HttpServerHelper") protected httpServerHelper: HttpServerHelper, @inject("ProfileHelper") protected profileHelper: ProfileHelper, - @inject("DatabaseService") protected databaseServer: DatabaseService, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("LocalisationService") protected localisationService: LocalisationService, @inject("PreSptModLoader") protected preSptModLoader: PreSptModLoader, @inject("ConfigServer") protected configServer: ConfigServer, @@ -46,7 +46,7 @@ export class LauncherController return { backendUrl: this.httpServerHelper.getBackendUrl(), name: this.coreConfig.serverName, - editions: Object.keys(this.databaseServer.getProfiles()), + editions: Object.keys(this.databaseService.getProfiles()), profileDescriptions: this.getProfileDescriptions(), }; } @@ -58,7 +58,7 @@ export class LauncherController protected getProfileDescriptions(): Record { const result = {}; - const dbProfiles = this.databaseServer.getProfiles(); + const dbProfiles = this.databaseService.getProfiles(); for (const profileKey in dbProfiles) { const localeKey = dbProfiles[profileKey]?.descriptionLocaleKey; diff --git a/project/src/generators/PMCLootGenerator.ts b/project/src/generators/PMCLootGenerator.ts index 249275ad..bc7e6b2a 100644 --- a/project/src/generators/PMCLootGenerator.ts +++ b/project/src/generators/PMCLootGenerator.ts @@ -5,7 +5,7 @@ import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ConfigTypes } from "@spt/models/enums/ConfigTypes"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ConfigServer } from "@spt/servers/ConfigServer"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { ItemFilterService } from "@spt/services/ItemFilterService"; import { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { SeasonalEventService } from "@spt/services/SeasonalEventService"; @@ -26,7 +26,7 @@ export class PMCLootGenerator constructor( @inject("ItemHelper") protected itemHelper: ItemHelper, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ConfigServer") protected configServer: ConfigServer, @inject("ItemFilterService") protected itemFilterService: ItemFilterService, @inject("RagfairPriceService") protected ragfairPriceService: RagfairPriceService, @@ -46,9 +46,9 @@ export class PMCLootGenerator // Hydrate loot dictionary if empty if (Object.keys(this.pocketLootPool).length === 0) { - const items = this.databaseServer.getTables().templates.items; + const items = this.databaseService.getItems(); const pmcPriceOverrides - = this.databaseServer.getTables().bots.types[botRole === "sptBear" ? "bear" : "usec"].inventory.items + = this.databaseService.getBots()[botRole === "sptBear" ? "bear" : "usec"].inventory.items .Pockets; const allowedItemTypes = this.pmcConfig.pocketLoot.whitelist; @@ -106,9 +106,9 @@ export class PMCLootGenerator // Hydrate loot dictionary if empty if (Object.keys(this.vestLootPool).length === 0) { - const items = this.databaseServer.getTables().templates.items; + const items = this.databaseService.getItems(); const pmcPriceOverrides - = this.databaseServer.getTables().bots.types[botRole === "sptBear" ? "bear" : "usec"].inventory.items + = this.databaseService.getBots().types[botRole === "sptBear" ? "bear" : "usec"].inventory.items .TacticalVest; const allowedItemTypes = this.pmcConfig.vestLoot.whitelist; @@ -176,9 +176,9 @@ export class PMCLootGenerator // Hydrate loot dictionary if empty if (Object.keys(this.backpackLootPool).length === 0) { - const items = this.databaseServer.getTables().templates.items; + const items = this.databaseService.getItems(); const pmcPriceOverrides - = this.databaseServer.getTables().bots.types[botRole === "sptBear" ? "bear" : "usec"].inventory.items + = this.databaseService.getBots().types[botRole === "sptBear" ? "bear" : "usec"].inventory.items .Backpack; const allowedItemTypes = this.pmcConfig.backpackLoot.whitelist; diff --git a/project/src/generators/PlayerScavGenerator.ts b/project/src/generators/PlayerScavGenerator.ts index 76a5d472..1cc80859 100644 --- a/project/src/generators/PlayerScavGenerator.ts +++ b/project/src/generators/PlayerScavGenerator.ts @@ -17,9 +17,9 @@ import { Traders } from "@spt/models/enums/Traders"; import { IPlayerScavConfig, KarmaLevel } from "@spt/models/spt/config/IPlayerScavConfig"; 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 { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { ICloner } from "@spt/utils/cloners/ICloner"; @@ -34,7 +34,7 @@ export class PlayerScavGenerator constructor( @inject("PrimaryLogger") protected logger: ILogger, @inject("RandomUtil") protected randomUtil: RandomUtil, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("HashUtil") protected hashUtil: HashUtil, @inject("ItemHelper") protected itemHelper: ItemHelper, @inject("BotGeneratorHelper") protected botGeneratorHelper: BotGeneratorHelper, @@ -342,7 +342,7 @@ export class PlayerScavGenerator { // Set cooldown time. // Make sure to apply ScavCooldownTimer bonus from Hideout if the player has it. - let scavLockDuration = this.databaseServer.getTables().globals.config.SavagePlayCooldown; + let scavLockDuration = this.databaseService.getGlobals().config.SavagePlayCooldown; let modifier = 1; for (const bonus of pmcData.Bonuses) diff --git a/project/src/generators/RagfairOfferGenerator.ts b/project/src/generators/RagfairOfferGenerator.ts index 259b8425..5a439c43 100644 --- a/project/src/generators/RagfairOfferGenerator.ts +++ b/project/src/generators/RagfairOfferGenerator.ts @@ -23,8 +23,8 @@ import { } from "@spt/models/spt/config/IRagfairConfig"; 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { RagfairOfferService } from "@spt/services/RagfairOfferService"; @@ -48,7 +48,7 @@ export class RagfairOfferGenerator @inject("HashUtil") protected hashUtil: HashUtil, @inject("RandomUtil") protected randomUtil: RandomUtil, @inject("TimeUtil") protected timeUtil: TimeUtil, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("RagfairServerHelper") protected ragfairServerHelper: RagfairServerHelper, @inject("ProfileHelper") protected profileHelper: ProfileHelper, @inject("HandbookHelper") protected handbookHelper: HandbookHelper, @@ -242,7 +242,7 @@ export class RagfairOfferGenerator { if (isTrader) { - return this.databaseServer.getTables().traders[userId].base.avatar; + return this.databaseService.getTrader(userId).base.avatar; } return "/files/trader/avatar/unknown.jpg"; @@ -338,14 +338,14 @@ export class RagfairOfferGenerator { // Player offer = current time + offerDurationTimeInHour; const offerDurationTimeHours - = this.databaseServer.getTables().globals!.config.RagFair.offerDurationTimeInHour; + = this.databaseService.getGlobals().config.RagFair.offerDurationTimeInHour; return this.timeUtil.getTimestamp() + Math.round(offerDurationTimeHours * TimeUtil.ONE_HOUR_AS_SECONDS); } if (this.ragfairServerHelper.isTrader(userID)) { // Trader offer - return this.databaseServer.getTables().traders![userID].base.nextResupply; + return this.databaseService.getTrader(userID).base.nextResupply; } // Generated fake-player offer @@ -577,7 +577,7 @@ export class RagfairOfferGenerator // Add trader offers const time = this.timeUtil.getTimestamp(); - const trader = this.databaseServer.getTables().traders[traderID]; + const trader = this.databaseService.getTrader(traderID); const assorts = trader.assort; // Trader assorts / assort items are missing @@ -957,7 +957,7 @@ export class RagfairOfferGenerator // Generate if needed if (!this.allowedFleaPriceItemsForBarter) { - const fleaPrices = this.databaseServer.getTables().templates.prices; + const fleaPrices = this.databaseService.getPrices(); const fleaArray = Object.entries(fleaPrices).map(([tpl, price]) => ({ tpl: tpl, price: price })); // Only get item prices for items that also exist in items.json diff --git a/project/src/generators/RepeatableQuestGenerator.ts b/project/src/generators/RepeatableQuestGenerator.ts index 5844d10b..f5012a13 100644 --- a/project/src/generators/RepeatableQuestGenerator.ts +++ b/project/src/generators/RepeatableQuestGenerator.ts @@ -18,7 +18,7 @@ import { import { IQuestTypePool } from "@spt/models/spt/repeatable/IQuestTypePool"; 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 { ICloner } from "@spt/utils/cloners/ICloner"; import { MathUtil } from "@spt/utils/MathUtil"; @@ -34,7 +34,7 @@ export class RepeatableQuestGenerator @inject("PrimaryLogger") protected logger: ILogger, @inject("RandomUtil") protected randomUtil: RandomUtil, @inject("MathUtil") protected mathUtil: MathUtil, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ItemHelper") protected itemHelper: ItemHelper, @inject("LocalisationService") protected localisationService: LocalisationService, @inject("ObjectId") protected objectId: ObjectId, @@ -238,7 +238,7 @@ export class RepeatableQuestGenerator if (targetsConfig.data(targetKey).isBoss) { // Get all boss spawn information - const bossSpawns = Object.values(this.databaseServer.getTables().locations) + const bossSpawns = Object.values(this.databaseService.getLocations()) .filter((x) => "base" in x && "Id" in x.base) .map((x) => ({ Id: x.base.Id, BossSpawn: x.base.BossLocationSpawn })); // filter for the current boss to spawn on map @@ -509,7 +509,7 @@ export class RepeatableQuestGenerator if (repeatableConfig.questConfig.Completion.useWhitelist) { const itemWhitelist - = this.databaseServer.getTables().templates.repeatableQuests.data.Completion.itemsWhitelist; + = this.databaseService.getTemplates().repeatableQuests.data.Completion.itemsWhitelist; // Filter and concatenate the arrays according to current player level const itemIdsWhitelisted = itemWhitelist @@ -531,7 +531,7 @@ export class RepeatableQuestGenerator if (repeatableConfig.questConfig.Completion.useBlacklist) { const itemBlacklist - = this.databaseServer.getTables().templates.repeatableQuests.data.Completion.itemsBlacklist; + = this.databaseService.getTemplates().repeatableQuests.data.Completion.itemsBlacklist; // we filter and concatenate the arrays according to current player level const itemIdsBlacklisted = itemBlacklist @@ -792,8 +792,9 @@ export class RepeatableQuestGenerator */ protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[] { - const mapExtracts = this.databaseServer.getTables().locations[locationKey.toLocaleLowerCase()] - .allExtracts as Exit[]; + const mapExtracts = this.databaseService + .getLocation(locationKey.toLocaleLowerCase()) + .allExtracts; return mapExtracts.filter((exit) => exit.Side === playerSide); } @@ -881,7 +882,7 @@ export class RepeatableQuestGenerator protected generateRepeatableTemplate(type: string, traderId: string, side: string): IRepeatableQuest { const questClone = this.cloner.clone( - this.databaseServer.getTables().templates.repeatableQuests.templates[type], + this.databaseService.getTemplates().repeatableQuests.templates[type], ); questClone._id = this.objectId.generate(); questClone.traderId = traderId; diff --git a/project/src/generators/RepeatableQuestRewardGenerator.ts b/project/src/generators/RepeatableQuestRewardGenerator.ts index 1abc65e1..1f9a3a0c 100644 --- a/project/src/generators/RepeatableQuestRewardGenerator.ts +++ b/project/src/generators/RepeatableQuestRewardGenerator.ts @@ -15,7 +15,7 @@ import { IBaseQuestConfig, IQuestConfig, IRepeatableQuestConfig } from "@spt/mod import { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; 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 { ItemFilterService } from "@spt/services/ItemFilterService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { SeasonalEventService } from "@spt/services/SeasonalEventService"; @@ -33,7 +33,7 @@ export class RepeatableQuestRewardGenerator @inject("PrimaryLogger") protected logger: ILogger, @inject("RandomUtil") protected randomUtil: RandomUtil, @inject("MathUtil") protected mathUtil: MathUtil, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ItemHelper") protected itemHelper: ItemHelper, @inject("PresetHelper") protected presetHelper: PresetHelper, @inject("HandbookHelper") protected handbookHelper: HandbookHelper, @@ -426,7 +426,7 @@ export class RepeatableQuestRewardGenerator // check for specific baseclasses which don't make sense as reward item // also check if the price is greater than 0; there are some items whose price can not be found // those are not in the game yet (e.g. AGS grenade launcher) - return Object.entries(this.databaseServer.getTables().templates.items).filter( + return Object.entries(this.databaseService.getItems()).filter( // eslint-disable-next-line @typescript-eslint/no-unused-vars ([tpl, itemTemplate]) => { diff --git a/project/src/generators/ScavCaseRewardGenerator.ts b/project/src/generators/ScavCaseRewardGenerator.ts index be623655..01fc765f 100644 --- a/project/src/generators/ScavCaseRewardGenerator.ts +++ b/project/src/generators/ScavCaseRewardGenerator.ts @@ -14,7 +14,7 @@ import { } from "@spt/models/spt/hideout/ScavCaseRewardCountsAndPrices"; 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 { ItemFilterService } from "@spt/services/ItemFilterService"; import { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { SeasonalEventService } from "@spt/services/SeasonalEventService"; @@ -37,7 +37,7 @@ export class ScavCaseRewardGenerator @inject("HashUtil") protected hashUtil: HashUtil, @inject("ItemHelper") protected itemHelper: ItemHelper, @inject("PresetHelper") protected presetHelper: PresetHelper, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("RagfairPriceService") protected ragfairPriceService: RagfairPriceService, @inject("SeasonalEventService") protected seasonalEventService: SeasonalEventService, @inject("ItemFilterService") protected itemFilterService: ItemFilterService, @@ -57,7 +57,7 @@ export class ScavCaseRewardGenerator this.cacheDbItems(); // Get scavcase details from hideout/scavcase.json - const scavCaseDetails = this.databaseServer.getTables().hideout.scavcase.find((r) => r._id === recipeId); + const scavCaseDetails = this.databaseService.getHideout().scavcase.find((r) => r._id === recipeId); const rewardItemCounts = this.getScavCaseRewardCountsAndPrices(scavCaseDetails); // Get items that fit the price criteria as set by the scavCase config @@ -98,7 +98,7 @@ export class ScavCaseRewardGenerator const inactiveSeasonalItems = this.seasonalEventService.getInactiveSeasonalEventItems(); if (!this.dbItemsCache) { - this.dbItemsCache = Object.values(this.databaseServer.getTables().templates.items).filter((item) => + this.dbItemsCache = Object.values(this.databaseService.getItems()).filter((item) => { // Base "Item" item has no parent, ignore it if (item._parent === "") @@ -154,7 +154,7 @@ export class ScavCaseRewardGenerator if (!this.dbAmmoItemsCache) { - this.dbAmmoItemsCache = Object.values(this.databaseServer.getTables().templates.items).filter((item) => + this.dbAmmoItemsCache = Object.values(this.databaseService.getItems()).filter((item) => { // Base "Item" item has no parent, ignore it if (item._parent === "") @@ -280,9 +280,10 @@ export class ScavCaseRewardGenerator protected getRandomMoney(): ITemplateItem { const money: ITemplateItem[] = []; - money.push(this.databaseServer.getTables().templates.items["5449016a4bdc2d6f028b456f"]); // rub - money.push(this.databaseServer.getTables().templates.items["569668774bdc2da2298b4568"]); // euro - money.push(this.databaseServer.getTables().templates.items["5696686a4bdc2da3298b456a"]); // dollar + const items = this.databaseService.getItems(); + money.push(items["5449016a4bdc2d6f028b456f"]); // rub + money.push(items["569668774bdc2da2298b4568"]); // euro + money.push(items["5696686a4bdc2da3298b456a"]); // dollar return this.randomUtil.getArrayValue(money); } diff --git a/project/src/helpers/BotDifficultyHelper.ts b/project/src/helpers/BotDifficultyHelper.ts index d733737c..92227288 100644 --- a/project/src/helpers/BotDifficultyHelper.ts +++ b/project/src/helpers/BotDifficultyHelper.ts @@ -5,7 +5,7 @@ import { ConfigTypes } from "@spt/models/enums/ConfigTypes"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; 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 { ICloner } from "@spt/utils/cloners/ICloner"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -17,7 +17,7 @@ export class BotDifficultyHelper constructor( @inject("PrimaryLogger") protected logger: ILogger, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("RandomUtil") protected randomUtil: RandomUtil, @inject("LocalisationService") protected localisationService: LocalisationService, @inject("BotHelper") protected botHelper: BotHelper, @@ -121,7 +121,7 @@ export class BotDifficultyHelper */ public getBotDifficultySettings(type: string, difficulty: string): Difficulty { - const botDb = this.databaseServer.getTables().bots; + const botDb = this.databaseService.getBots(); const desiredType = type.toLowerCase(); const bot = botDb.types[desiredType]; @@ -165,7 +165,7 @@ export class BotDifficultyHelper difficultySetting = this.convertBotDifficultyDropdownToBotDifficulty(difficultySetting); - return this.cloner.clone(this.databaseServer.getTables().bots.types[type].difficulty[difficultySetting]); + return this.cloner.clone(this.databaseService.getBots().types[type].difficulty[difficultySetting]); } /** diff --git a/project/src/helpers/BotGeneratorHelper.ts b/project/src/helpers/BotGeneratorHelper.ts index 426d8e81..48096ba2 100644 --- a/project/src/helpers/BotGeneratorHelper.ts +++ b/project/src/helpers/BotGeneratorHelper.ts @@ -17,7 +17,7 @@ import { EquipmentFilters, IBotConfig, IRandomisedResourceValues } from "@spt/mo import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; 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"; @@ -30,7 +30,7 @@ export class BotGeneratorHelper constructor( @inject("PrimaryLogger") protected logger: ILogger, @inject("RandomUtil") protected randomUtil: RandomUtil, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("DurabilityLimitsHelper") protected durabilityLimitsHelper: DurabilityLimitsHelper, @inject("ItemHelper") protected itemHelper: ItemHelper, @inject("InventoryHelper") protected inventoryHelper: InventoryHelper, @@ -289,7 +289,7 @@ export class BotGeneratorHelper ): IChooseRandomCompatibleModResult { // TODO: Can probably be optimized to cache itemTemplates as items are added to inventory - const equippedItemsDb = itemsEquipped.map((item) => this.databaseServer.getTables().templates.items[item._tpl]); + const equippedItemsDb = itemsEquipped.map((item) => this.itemHelper.getItem(item._tpl)[1]); const itemToEquipDb = this.itemHelper.getItem(tplToCheck); const itemToEquip = itemToEquipDb[1]; @@ -365,7 +365,7 @@ export class BotGeneratorHelper } // TODO: Can probably be optimized to cache itemTemplates as items are added to inventory - const equippedItemsDb = itemsEquipped.map((i) => this.databaseServer.getTables().templates.items[i._tpl]); + const equippedItemsDb = itemsEquipped.map((equippedItem) => this.itemHelper.getItem(equippedItem._tpl)[1]); const itemToEquipDb = this.itemHelper.getItem(tplToCheck); const itemToEquip = itemToEquipDb[1]; @@ -395,7 +395,7 @@ export class BotGeneratorHelper } // Does an equipped item have a property that blocks the desired item - check for prop "BlocksX" .e.g BlocksEarpiece / BlocksFaceCover - let blockingItem = equippedItemsDb.find((x) => x._props[`Blocks${equipmentSlot}`]); + let blockingItem = equippedItemsDb.find((item) => item._props[`Blocks${equipmentSlot}`]); if (blockingItem) { // this.logger.warning(`1 incompatibility found between - ${itemToEquip[1]._name} and ${blockingItem._name} - ${equipmentSlot}`); diff --git a/project/src/helpers/BotHelper.ts b/project/src/helpers/BotHelper.ts index 9e00147a..16f0eac6 100644 --- a/project/src/helpers/BotHelper.ts +++ b/project/src/helpers/BotHelper.ts @@ -6,7 +6,7 @@ import { EquipmentFilters, IBotConfig, RandomisationDetails } from "@spt/models/ import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; 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() @@ -17,7 +17,7 @@ export class BotHelper constructor( @inject("PrimaryLogger") protected logger: ILogger, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("RandomUtil") protected randomUtil: RandomUtil, @inject("ConfigServer") protected configServer: ConfigServer, ) @@ -33,7 +33,7 @@ export class BotHelper */ public getBotTemplate(role: string): IBotType { - return this.databaseServer.getTables().bots.types[role.toLowerCase()]; + return this.databaseService.getBots().types[role.toLowerCase()]; } /** @@ -207,7 +207,7 @@ export class BotHelper // recurivse if name is longer than max characters allowed (15 characters) const randomType = this.randomUtil.getInt(0, 1) === 0 ? "usec" : "bear"; const name - = this.randomUtil.getStringArrayValue(this.databaseServer.getTables().bots.types[randomType].firstName); + = this.randomUtil.getStringArrayValue(this.databaseService.getBots().types[randomType].firstName); return name.length > maxLength ? this.getPmcNicknameOfMaxLength(userId, maxLength) : name; diff --git a/project/src/helpers/Dialogue/Commando/SptCommands/TraderCommand/TraderSptCommand.ts b/project/src/helpers/Dialogue/Commando/SptCommands/TraderCommand/TraderSptCommand.ts index b139eae0..529a85e5 100644 --- a/project/src/helpers/Dialogue/Commando/SptCommands/TraderCommand/TraderSptCommand.ts +++ b/project/src/helpers/Dialogue/Commando/SptCommands/TraderCommand/TraderSptCommand.ts @@ -7,7 +7,7 @@ import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest" import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IProfileChangeEvent, ProfileChangeEventType } from "@spt/models/spt/dialog/ISendMessageDetails"; import { ILogger } from "@spt/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { LocaleService } from "@spt/services/LocaleService"; import { MailSendService } from "@spt/services/MailSendService"; import { HashUtil } from "@spt/utils/HashUtil"; @@ -31,7 +31,7 @@ export class TraderSptCommand 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, ) {} @@ -63,7 +63,7 @@ export class TraderSptCommand implements ISptCommand const command: string = result.groups.command; const quantity: number = +result.groups.quantity; - const dbTrader = Object.values(this.databaseServer.getTables().traders!).find( + const dbTrader = Object.values(this.databaseService.getTraders()).find( (t) => t.base.nickname.toLocaleLowerCase() === trader.toLocaleLowerCase(), ); if (dbTrader === undefined) diff --git a/project/src/helpers/HandbookHelper.ts b/project/src/helpers/HandbookHelper.ts index ef9c65fc..f9b64550 100644 --- a/project/src/helpers/HandbookHelper.ts +++ b/project/src/helpers/HandbookHelper.ts @@ -5,7 +5,7 @@ import { ConfigTypes } from "@spt/models/enums/ConfigTypes"; import { Money } from "@spt/models/enums/Money"; import { IItemConfig } from "@spt/models/spt/config/IItemConfig"; 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"; class LookupItem @@ -40,7 +40,7 @@ export class HandbookHelper protected handbookPriceCache = new LookupCollection(); constructor( - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ConfigServer") protected configServer: ConfigServer, @inject("PrimaryCloner") protected cloner: ICloner, ) @@ -53,31 +53,26 @@ export class HandbookHelper */ public hydrateLookup(): void { + const handbook = this.databaseService.getHandbook(); // Add handbook overrides found in items.json config into db for (const itemTpl in this.itemConfig.handbookPriceOverride) { - let itemToUpdate = this.databaseServer.getTables() - .templates! - .handbook - .Items.find((item) => item.Id === itemTpl); + let itemToUpdate = handbook.Items.find((item) => item.Id === itemTpl); if (!itemToUpdate) { - this.databaseServer.getTables().templates!.handbook.Items.push({ + handbook.Items.push({ Id: itemTpl, - ParentId: this.databaseServer.getTables().templates!.items[itemTpl]._parent, + ParentId: this.databaseService.getItems()[itemTpl]._parent, Price: this.itemConfig.handbookPriceOverride[itemTpl], }); - itemToUpdate = this.databaseServer - .getTables() - .templates! - .handbook + itemToUpdate = handbook .Items.find((item) => item.Id === itemTpl); } itemToUpdate.Price = this.itemConfig.handbookPriceOverride[itemTpl]; } - const handbookDbClone = this.cloner.clone(this.databaseServer.getTables().templates!.handbook); + const handbookDbClone = this.cloner.clone(handbook); for (const handbookItem of handbookDbClone.Items) { this.handbookPriceCache.items.byId.set(handbookItem.Id, handbookItem.Price); @@ -105,7 +100,7 @@ export class HandbookHelper /** * Get price from internal cache, if cache empty look up price directly in handbook (expensive) * If no values found, return 0 - * @param tpl item tpl to look up price for + * @param tpl Item tpl to look up price for * @returns price in roubles */ public getTemplatePrice(tpl: string): number @@ -121,7 +116,7 @@ export class HandbookHelper return this.handbookPriceCache.items.byId.get(tpl); } - const handbookItem = this.databaseServer.getTables().templates!.handbook.Items.find((x) => x.Id === tpl); + const handbookItem = this.databaseService.getHandbook().Items.find((item) => item.Id === tpl); if (!handbookItem) { const newValue = 0; @@ -211,6 +206,6 @@ export class HandbookHelper public getCategoryById(handbookId: string): Category { - return this.databaseServer.getTables().templates.handbook.Categories.find((x) => x.Id === handbookId); + return this.databaseService.getHandbook().Categories.find((category) => category.Id === handbookId); } } diff --git a/project/src/helpers/HideoutHelper.ts b/project/src/helpers/HideoutHelper.ts index 7fc4e493..5eeec79e 100644 --- a/project/src/helpers/HideoutHelper.ts +++ b/project/src/helpers/HideoutHelper.ts @@ -20,7 +20,7 @@ import { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; 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 { LocalisationService } from "@spt/services/LocalisationService"; import { PlayerService } from "@spt/services/PlayerService"; import { ICloner } from "@spt/utils/cloners/ICloner"; @@ -44,7 +44,7 @@ export class HideoutHelper @inject("PrimaryLogger") protected logger: ILogger, @inject("HashUtil") protected hashUtil: HashUtil, @inject("TimeUtil") protected timeUtil: TimeUtil, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("EventOutputHolder") protected eventOutputHolder: EventOutputHolder, @inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil, @inject("ProfileHelper") protected profileHelper: ProfileHelper, @@ -72,9 +72,8 @@ export class HideoutHelper sessionID: string, ): IItemEventRouterResponse { - const recipe = this.databaseServer - .getTables() - .hideout.production.find((production) => production._id === body.recipeId); + const recipe = this.databaseService.getHideout().production + .find((production) => production._id === body.recipeId); if (!recipe) { this.logger.error(this.localisationService.getText("hideout-missing_recipe_in_db", body.recipeId)); @@ -258,7 +257,7 @@ export class HideoutHelper hideoutProperties: { btcFarmCGs: number, isGeneratorOn: boolean, waterCollectorHasFilter: boolean }, ): void { - const recipes = this.databaseServer.getTables().hideout.production; + const recipes = this.databaseService.getHideout().production; // Check each production for (const prodId in pmcData.Hideout.Production) @@ -449,7 +448,7 @@ export class HideoutHelper // 1 resource last 14 min 27 sec, 1/14.45/60 = 0.00115 // 10-10-2021 From wiki, 1 resource last 12 minutes 38 seconds, 1/12.63333/60 = 0.00131 let fuelUsedSinceLastTick - = this.databaseServer.getTables().hideout.settings.generatorFuelFlowRate + = this.databaseService.getHideout().settings.generatorFuelFlowRate * this.getTimeElapsedSinceLastServerTick(pmcData, isGeneratorOn); const profileFuelConsumptionBonus = pmcData.Bonuses.find((bonus) => bonus.type === BonusType.FUEL_CONSUMPTION); @@ -603,11 +602,10 @@ export class HideoutHelper applyHideoutManagementBonus = false, ): number { - const globalSkillsDb = this.databaseServer.getTables().globals.config.SkillsSettings; + const globalSkillsDb = this.databaseService.getGlobals().config.SkillsSettings; - const recipe = this.databaseServer - .getTables() - .hideout.production.find((production) => production._id === recipeId); + const recipe = this.databaseService.getHideout().production + .find((production) => production._id === recipeId); if (!recipe) { this.logger.error(this.localisationService.getText("hideout-missing_recipe_in_db", recipeId)); @@ -773,7 +771,7 @@ export class HideoutHelper */ protected getWaterFilterDrainRate(pmcData: IPmcData): number { - const globalSkillsDb = this.databaseServer.getTables().globals.config.SkillsSettings; + const globalSkillsDb = this.databaseService.getGlobals().config.SkillsSettings; // 100 resources last 8 hrs 20 min, 100/8.33/60/60 = 0.00333 const filterDrainRate = 0.00333; @@ -805,7 +803,7 @@ export class HideoutHelper */ protected getTotalProductionTimeSeconds(prodId: string): number { - const recipe = this.databaseServer.getTables().hideout.production.find((prod) => prod._id === prodId); + const recipe = this.databaseService.getHideout().production.find((prod) => prod._id === prodId); return recipe.productionTime || 0; } @@ -839,7 +837,7 @@ export class HideoutHelper 300/17.64694/60/60 = 0.004722 */ let filterDrainRate - = this.databaseServer.getTables().hideout.settings.airFilterUnitFlowRate + = this.databaseService.getHideout().settings.airFilterUnitFlowRate * this.getTimeElapsedSinceLastServerTick(pmcData, isGeneratorOn); // Hideout management resource consumption bonus: @@ -894,10 +892,8 @@ export class HideoutHelper protected updateBitcoinFarm(pmcData: IPmcData, btcFarmCGs: number, isGeneratorOn: boolean): Production | undefined { const btcProd = pmcData.Hideout.Production[HideoutHelper.bitcoinFarm]; - const bitcoinProdData = this.databaseServer - .getTables() - .hideout! - .production.find((production) => production._id === HideoutHelper.bitcoinProductionId); + const bitcoinProdData = this.databaseService.getHideout().production + .find((production) => production._id === HideoutHelper.bitcoinProductionId); const coinSlotCount = this.getBTCSlots(pmcData); // Full on bitcoins, halt progress @@ -948,7 +944,7 @@ export class HideoutHelper // BSG finally fixed their settings, they now get loaded from the settings and used in the client const adjustedCraftTime = (this.profileHelper.isDeveloperAccount(pmcData.sessionId) ? 40 : bitcoinProdData.productionTime) - / (1 + (btcFarmCGs - 1) * this.databaseServer.getTables().hideout.settings.gpuBoostRate); + / (1 + (btcFarmCGs - 1) * this.databaseService.getHideout().settings.gpuBoostRate); // The progress should be adjusted based on the GPU boost rate, but the target is still the base productionTime const timeMultiplier = bitcoinProdData.productionTime / adjustedCraftTime; @@ -1018,7 +1014,7 @@ export class HideoutHelper if (!isGeneratorOn) { - timeElapsed *= this.databaseServer.getTables().hideout!.settings.generatorSpeedWithoutFuel; + timeElapsed *= this.databaseService.getHideout().settings.generatorSpeedWithoutFuel; } return timeElapsed; @@ -1031,9 +1027,8 @@ export class HideoutHelper */ protected getBTCSlots(pmcData: IPmcData): number { - const bitcoinProductions = this.databaseServer - .getTables() - .hideout.production.find((production) => production._id === HideoutHelper.bitcoinFarm); + const bitcoinProductions = this.databaseService.getHideout().production + .find((production) => production._id === HideoutHelper.bitcoinFarm); const productionSlots = bitcoinProductions?.productionLimitCount || 3; // Default to 3 if none found const hasManagementSkillSlots = this.profileHelper.hasEliteSkillLevel(SkillTypes.HIDEOUT_MANAGEMENT, pmcData); const managementSlotsCount = this.getEliteSkillAdditionalBitcoinSlotCount() || 2; @@ -1046,7 +1041,7 @@ export class HideoutHelper */ protected getEliteSkillAdditionalBitcoinSlotCount(): number { - return this.databaseServer.getTables().globals.config.SkillsSettings.HideoutManagement.EliteSlots.BitcoinFarm + return this.databaseService.getGlobals().config.SkillsSettings.HideoutManagement.EliteSlots.BitcoinFarm .Container; } @@ -1072,7 +1067,7 @@ export class HideoutHelper return ( (roundedLevel - * this.databaseServer.getTables().globals.config.SkillsSettings.HideoutManagement + * this.databaseService.getGlobals().config.SkillsSettings.HideoutManagement .ConsumptionReductionPerLevel) / 100 ); @@ -1254,9 +1249,8 @@ export class HideoutHelper const fameAreaProfile = pmcData.Hideout.Areas.find((area) => area.type === HideoutAreas.PLACE_OF_FAME); // Get hideout area 16 bonus array - const fameAreaDb = this.databaseServer - .getTables() - .hideout.areas.find((area) => area.type === HideoutAreas.PLACE_OF_FAME); + const fameAreaDb = this.databaseService.getHideout().areas + .find((area) => area.type === HideoutAreas.PLACE_OF_FAME); // Get SkillGroupLevelingBoost object const combatBoostBonusDb = fameAreaDb.stages[fameAreaProfile.level].bonuses.find( diff --git a/project/src/helpers/InRaidHelper.ts b/project/src/helpers/InRaidHelper.ts index e7c27b71..c0cbd30a 100644 --- a/project/src/helpers/InRaidHelper.ts +++ b/project/src/helpers/InRaidHelper.ts @@ -15,8 +15,8 @@ import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; import { ILostOnDeathConfig } from "@spt/models/spt/config/ILostOnDeathConfig"; 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 { ProfileFixerService } from "@spt/services/ProfileFixerService"; import { ICloner } from "@spt/utils/cloners/ICloner"; @@ -35,7 +35,7 @@ export class InRaidHelper @inject("TimeUtil") protected timeUtil: TimeUtil, @inject("SaveServer") protected saveServer: SaveServer, @inject("ItemHelper") protected itemHelper: ItemHelper, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("InventoryHelper") protected inventoryHelper: InventoryHelper, @inject("ProfileHelper") protected profileHelper: ProfileHelper, @inject("QuestHelper") protected questHelper: QuestHelper, @@ -453,17 +453,17 @@ export class InRaidHelper */ public removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData { - const dbItems = this.databaseServer.getTables().templates!.items; - const itemsToRemovePropertyFrom = postRaidProfile.Inventory.items.filter((x) => + const dbItems = this.databaseService.getItems(); + const itemsToRemovePropertyFrom = postRaidProfile.Inventory.items.filter((item) => { // Has upd object + upd.SpawnedInSession property + not a quest item return ( - "upd" in x - && "SpawnedInSession" in x.upd - && !dbItems[x._tpl]._props.QuestItem + "upd" in item + && "SpawnedInSession" in item.upd + && !dbItems[item._tpl]._props.QuestItem && !( this.inRaidConfig.keepFiRSecureContainerOnDeath - && this.itemHelper.itemIsInsideContainer(x, "SecuredContainer", postRaidProfile.Inventory.items) + && this.itemHelper.itemIsInsideContainer(item, "SecuredContainer", postRaidProfile.Inventory.items) ) ); }); diff --git a/project/src/helpers/ItemHelper.ts b/project/src/helpers/ItemHelper.ts index 8d7fa804..8cde8338 100644 --- a/project/src/helpers/ItemHelper.ts +++ b/project/src/helpers/ItemHelper.ts @@ -8,7 +8,7 @@ import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { BaseClasses } from "@spt/models/enums/BaseClasses"; import { EquipmentSlots } from "@spt/models/enums/EquipmentSlots"; import { ILogger } from "@spt/models/spt/utils/ILogger"; -import { DatabaseServer } from "@spt/servers/DatabaseServer"; +import { DatabaseService } from "@spt/services/DatabaseService"; import { ItemBaseClassService } from "@spt/services/ItemBaseClassService"; import { ItemFilterService } from "@spt/services/ItemFilterService"; import { LocaleService } from "@spt/services/LocaleService"; @@ -41,7 +41,7 @@ export class ItemHelper @inject("RandomUtil") protected randomUtil: RandomUtil, @inject("ObjectId") protected objectId: ObjectId, @inject("MathUtil") protected mathUtil: MathUtil, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("HandbookHelper") protected handbookHelper: HandbookHelper, @inject("ItemBaseClassService") protected itemBaseClassService: ItemBaseClassService, @inject("ItemFilterService") protected itemFilterService: ItemFilterService, @@ -398,7 +398,7 @@ export class ItemHelper */ public getDynamicItemPrice(tpl: string): number { - const dynamicPrice = this.databaseServer.getTables().templates!.prices[tpl]; + const dynamicPrice = this.databaseService.getPrices()[tpl]; if (dynamicPrice) { return dynamicPrice; @@ -432,7 +432,7 @@ export class ItemHelper */ public getItems(): ITemplateItem[] { - return this.cloner.clone(Object.values(this.databaseServer.getTables().templates!.items)); + return this.cloner.clone(Object.values(this.databaseService.getItems())); } /** @@ -443,9 +443,9 @@ export class ItemHelper public getItem(tpl: string): [boolean, ITemplateItem] { // -> Gets item from - if (tpl in this.databaseServer.getTables().templates!.items) + if (tpl in this.databaseService.getItems()) { - return [true, this.databaseServer.getTables().templates!.items[tpl]]; + return [true, this.databaseService.getItems()[tpl]]; } return [false, undefined]; @@ -709,7 +709,7 @@ export class ItemHelper */ public isItemTplStackable(tpl: string): boolean { - const item = this.databaseServer.getTables().templates!.items[tpl]; + const item = this.databaseService.getItems()[tpl]; if (!item) { return undefined; @@ -1563,11 +1563,16 @@ export class ItemHelper return this.localeService.getLocaleDb()[`${itemTpl} Name`]; } + /** + * Get all item tpls with a desired base type + * @param desiredBaseType Item base type wanted + * @returns Array of tpls + */ public getItemTplsOfBaseType(desiredBaseType: string): string[] { - return Object.values(this.databaseServer.getTables().templates!.items) - .filter((x) => x._parent === desiredBaseType) - .map((x) => x._id); + return Object.values(this.databaseService.getItems()) + .filter((item) => item._parent === desiredBaseType) + .map((item) => item._id); } /** diff --git a/project/src/helpers/RagfairHelper.ts b/project/src/helpers/RagfairHelper.ts index 2d611b54..b59ad9b1 100644 --- a/project/src/helpers/RagfairHelper.ts +++ b/project/src/helpers/RagfairHelper.ts @@ -11,7 +11,7 @@ import { Money } from "@spt/models/enums/Money"; import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; 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 { RagfairLinkedItemService } from "@spt/services/RagfairLinkedItemService"; import { ICloner } from "@spt/utils/cloners/ICloner"; @@ -23,7 +23,7 @@ export class RagfairHelper constructor( @inject("PrimaryLogger") protected logger: ILogger, @inject("TraderAssortHelper") protected traderAssortHelper: TraderAssortHelper, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("HandbookHelper") protected handbookHelper: HandbookHelper, @inject("ItemHelper") protected itemHelper: ItemHelper, @inject("RagfairLinkedItemService") protected ragfairLinkedItemService: RagfairLinkedItemService, @@ -96,7 +96,7 @@ export class RagfairHelper { const result: Record = {}; - for (const traderID in this.databaseServer.getTables().traders) + for (const traderID in this.databaseService.getTraders()) { if (this.ragfairConfig.traders[traderID]) { diff --git a/project/src/helpers/RagfairSellHelper.ts b/project/src/helpers/RagfairSellHelper.ts index 39285022..bca9f62d 100644 --- a/project/src/helpers/RagfairSellHelper.ts +++ b/project/src/helpers/RagfairSellHelper.ts @@ -4,7 +4,7 @@ import { ConfigTypes } from "@spt/models/enums/ConfigTypes"; import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; 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"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,7 +17,7 @@ export class RagfairSellHelper @inject("PrimaryLogger") protected logger: ILogger, @inject("RandomUtil") protected randomUtil: RandomUtil, @inject("TimeUtil") protected timeUtil: TimeUtil, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("ConfigServer") protected configServer: ConfigServer, ) { @@ -75,7 +75,7 @@ export class RagfairSellHelper const endTime = startTime + this.timeUtil.getHoursAsSeconds( - this.databaseServer.getTables().globals!.config.RagFair.offerDurationTimeInHour, + this.databaseService.getGlobals().config.RagFair.offerDurationTimeInHour, ); let sellTime = startTime; diff --git a/project/src/services/FenceService.ts b/project/src/services/FenceService.ts index 4d4b9752..699ef677 100644 --- a/project/src/services/FenceService.ts +++ b/project/src/services/FenceService.ts @@ -19,7 +19,7 @@ import { } from "@spt/models/spt/fence/IFenceAssortGenerationValues"; 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 { ICloner } from "@spt/utils/cloners/ICloner"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -62,7 +62,7 @@ export class FenceService @inject("PrimaryLogger") protected logger: ILogger, @inject("TimeUtil") protected timeUtil: TimeUtil, @inject("RandomUtil") protected randomUtil: RandomUtil, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, @inject("HandbookHelper") protected handbookHelper: HandbookHelper, @inject("ItemHelper") protected itemHelper: ItemHelper, @inject("PresetHelper") protected presetHelper: PresetHelper, @@ -694,7 +694,7 @@ export class FenceService { const result: ICreateFenceAssortsResult = { sptItems: [], barter_scheme: {}, loyal_level_items: {} }; - const baseFenceAssortClone = this.cloner.clone(this.databaseServer.getTables().traders![Traders.FENCE].assort!); + const baseFenceAssortClone = this.cloner.clone(this.databaseService.getTrader(Traders.FENCE).assort); const itemTypeLimitCounts = this.initItemLimitCounter(this.traderConfig.fence.itemTypeLimits); if (itemCounts.item > 0) @@ -1498,7 +1498,7 @@ export class FenceService */ public getFenceInfo(pmcData: IPmcData): IFenceLevel { - const fenceSettings = this.databaseServer.getTables().globals!.config.FenceSettings; + const fenceSettings = this.databaseService.getGlobals().config.FenceSettings; const pmcFenceInfo = pmcData.TradersInfo[fenceSettings.FenceId]; if (!pmcFenceInfo) diff --git a/project/src/services/ItemBaseClassService.ts b/project/src/services/ItemBaseClassService.ts index e1af1487..eb1ad4f4 100644 --- a/project/src/services/ItemBaseClassService.ts +++ b/project/src/services/ItemBaseClassService.ts @@ -1,7 +1,7 @@ import { inject, injectable } from "tsyringe"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; 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"; /** @@ -17,7 +17,7 @@ export class ItemBaseClassService constructor( @inject("PrimaryLogger") protected logger: ILogger, @inject("LocalisationService") protected localisationService: LocalisationService, - @inject("DatabaseServer") protected databaseServer: DatabaseServer, + @inject("DatabaseService") protected databaseService: DatabaseService, ) {} @@ -30,7 +30,7 @@ export class ItemBaseClassService // Clear existing cache this.itemBaseClassesCache = {}; - this.items = this.databaseServer.getTables().templates!.items; + this.items = this.databaseService.getItems(); if (!this.items) { this.logger.warning(this.localisationService.getText("baseclass-missing_db_no_cache")); diff --git a/project/tests/helpers/ItemHelper.test.ts b/project/tests/helpers/ItemHelper.test.ts index 1becb91e..07a5c49e 100644 --- a/project/tests/helpers/ItemHelper.test.ts +++ b/project/tests/helpers/ItemHelper.test.ts @@ -277,9 +277,9 @@ describe("ItemHelper", () => describe("getItems", () => { - it("should call databaseServer.getTables() and jsonUtil.clone() methods", () => + it("should call databaseService.getItems() and jsonUtil.clone() methods", () => { - const databaseServerGetTablesSpy = vi.spyOn((itemHelper as any).databaseServer, "getTables"); + const databaseServerGetTablesSpy = vi.spyOn((itemHelper as any).databaseService, "getItems"); const clonerSpy = vi.spyOn((itemHelper as any).cloner, "clone"); itemHelper.getItems();