0
0
mirror of https://github.com/sp-tarkov/server.git synced 2025-02-13 06:50:43 -05:00

Replaced uses of DatabaseServer with DatabaseService

This commit is contained in:
Dev 2024-05-28 22:24:52 +01:00
parent b9148514ce
commit 7d515ad680
23 changed files with 150 additions and 154 deletions

View File

@ -24,7 +24,7 @@ export class DataCallbacks
{ {
constructor( constructor(
@inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil, @inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil,
@inject("DatabaseService") protected databaseServer: DatabaseService, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("RagfairController") protected ragfairController: RagfairController, @inject("RagfairController") protected ragfairController: RagfairController,
@inject("HideoutController") protected hideoutController: HideoutController, @inject("HideoutController") protected hideoutController: HideoutController,
) )
@ -36,7 +36,7 @@ export class DataCallbacks
*/ */
public getSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ISettingsBase> public getSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ISettingsBase>
{ {
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<IGlobals> public getGlobals(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IGlobals>
{ {
const globals = this.databaseServer.getGlobals(); const globals = this.databaseService.getGlobals();
globals.time = Date.now() / 1000; 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 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, sessionID: string,
): IGetBodyResponseData<IHandbookBase> ): IGetBodyResponseData<IHandbookBase>
{ {
return this.httpResponse.getBody(this.databaseServer.getHandbook()); return this.httpResponse.getBody(this.databaseService.getHandbook());
} }
/** /**
@ -83,7 +83,7 @@ export class DataCallbacks
sessionID: string, sessionID: string,
): IGetBodyResponseData<Record<string, ICustomizationItem>> ): IGetBodyResponseData<Record<string, ICustomizationItem>>
{ {
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, sessionID: string,
): IGetBodyResponseData<string[]> ): IGetBodyResponseData<string[]>
{ {
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, sessionID: string,
): IGetBodyResponseData<IHideoutSettingsBase> ): IGetBodyResponseData<IHideoutSettingsBase>
{ {
return this.httpResponse.getBody(this.databaseServer.getHideout().settings); return this.httpResponse.getBody(this.databaseService.getHideout().settings);
} }
public getHideoutAreas( public getHideoutAreas(
@ -118,7 +118,7 @@ export class DataCallbacks
sessionID: string, sessionID: string,
): IGetBodyResponseData<IHideoutArea[]> ): IGetBodyResponseData<IHideoutArea[]>
{ {
return this.httpResponse.getBody(this.databaseServer.getHideout().areas); return this.httpResponse.getBody(this.databaseService.getHideout().areas);
} }
public gethideoutProduction( public gethideoutProduction(
@ -127,7 +127,7 @@ export class DataCallbacks
sessionID: string, sessionID: string,
): IGetBodyResponseData<IHideoutProduction[]> ): IGetBodyResponseData<IHideoutProduction[]>
{ {
return this.httpResponse.getBody(this.databaseServer.getHideout().production); return this.httpResponse.getBody(this.databaseService.getHideout().production);
} }
public getHideoutScavcase( public getHideoutScavcase(
@ -136,7 +136,7 @@ export class DataCallbacks
sessionID: string, sessionID: string,
): IGetBodyResponseData<IHideoutScavCase[]> ): IGetBodyResponseData<IHideoutScavCase[]>
{ {
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, sessionID: string,
): IGetBodyResponseData<Record<string, string>> ): IGetBodyResponseData<Record<string, string>>
{ {
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<string> public getLocalesMenu(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<string>
{ {
const localeId = url.replace("/client/menu/locale/", ""); const localeId = url.replace("/client/menu/locale/", "");
const locales = this.databaseServer.getLocales(); const locales = this.databaseService.getLocales();
let result = locales.menu[localeId]; let result = locales.menu[localeId];
if (result === undefined) if (result === undefined)
@ -177,7 +177,7 @@ export class DataCallbacks
public getLocalesGlobal(url: string, info: IEmptyRequestData, sessionID: string): string public getLocalesGlobal(url: string, info: IEmptyRequestData, sessionID: string): string
{ {
const localeId = url.replace("/client/locale/", ""); const localeId = url.replace("/client/locale/", "");
const locales = this.databaseServer.getLocales(); const locales = this.databaseService.getLocales();
let result = locales.global[localeId]; let result = locales.global[localeId];
if (result === undefined) if (result === undefined)

View File

@ -17,7 +17,7 @@ import { IProfileStatusResponse } from "@spt/models/eft/match/IProfileStatusResp
import { IPutMetricsRequestData } from "@spt/models/eft/match/IPutMetricsRequestData"; import { IPutMetricsRequestData } from "@spt/models/eft/match/IPutMetricsRequestData";
import { IRequestIdRequest } from "@spt/models/eft/match/IRequestIdRequest"; import { IRequestIdRequest } from "@spt/models/eft/match/IRequestIdRequest";
import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
import { JsonUtil } from "@spt/utils/JsonUtil"; import { JsonUtil } from "@spt/utils/JsonUtil";
@ -28,7 +28,7 @@ export class MatchCallbacks
@inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil, @inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil,
@inject("JsonUtil") protected jsonUtil: JsonUtil, @inject("JsonUtil") protected jsonUtil: JsonUtil,
@inject("MatchController") protected matchController: MatchController, @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 // eslint-disable-next-line @typescript-eslint/no-unused-vars
public getMetrics(url: string, info: any, sessionID: string): IGetBodyResponseData<string> public getMetrics(url: string, info: any, sessionID: string): IGetBodyResponseData<string>
{ {
return this.httpResponse.getBody(this.jsonUtil.serialize(this.databaseServer.getTables().match!.metrics)); return this.httpResponse.getBody(this.jsonUtil.serialize(this.databaseService.getMatch().metrics));
} }
/** /**

View File

@ -45,7 +45,7 @@ export class InsuranceController
@inject("EventOutputHolder") protected eventOutputHolder: EventOutputHolder, @inject("EventOutputHolder") protected eventOutputHolder: EventOutputHolder,
@inject("TimeUtil") protected timeUtil: TimeUtil, @inject("TimeUtil") protected timeUtil: TimeUtil,
@inject("SaveServer") protected saveServer: SaveServer, @inject("SaveServer") protected saveServer: SaveServer,
@inject("DatabaseService") protected databaseServer: DatabaseService, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@inject("ProfileHelper") protected profileHelper: ProfileHelper, @inject("ProfileHelper") protected profileHelper: ProfileHelper,
@inject("DialogueHelper") protected dialogueHelper: DialogueHelper, @inject("DialogueHelper") protected dialogueHelper: DialogueHelper,
@ -586,12 +586,12 @@ export class InsuranceController
const labsId = "laboratory"; const labsId = "laboratory";
// After all of the item filtering that we've done, if there are no items remaining, the insurance has // 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. // 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 // Map is labs + insurance is disabled in base.json
if ( if (
insurance.systemData?.location?.toLowerCase() === labsId insurance.systemData?.location?.toLowerCase() === labsId
&& !(this.databaseServer.getLocation(labsId).base.Insurance) && !(this.databaseService.getLocation(labsId).base.Insurance)
) )
{ {
// Trader has labs-specific messages // Trader has labs-specific messages

View File

@ -32,7 +32,7 @@ export class LauncherController
@inject("SaveServer") protected saveServer: SaveServer, @inject("SaveServer") protected saveServer: SaveServer,
@inject("HttpServerHelper") protected httpServerHelper: HttpServerHelper, @inject("HttpServerHelper") protected httpServerHelper: HttpServerHelper,
@inject("ProfileHelper") protected profileHelper: ProfileHelper, @inject("ProfileHelper") protected profileHelper: ProfileHelper,
@inject("DatabaseService") protected databaseServer: DatabaseService, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("LocalisationService") protected localisationService: LocalisationService, @inject("LocalisationService") protected localisationService: LocalisationService,
@inject("PreSptModLoader") protected preSptModLoader: PreSptModLoader, @inject("PreSptModLoader") protected preSptModLoader: PreSptModLoader,
@inject("ConfigServer") protected configServer: ConfigServer, @inject("ConfigServer") protected configServer: ConfigServer,
@ -46,7 +46,7 @@ export class LauncherController
return { return {
backendUrl: this.httpServerHelper.getBackendUrl(), backendUrl: this.httpServerHelper.getBackendUrl(),
name: this.coreConfig.serverName, name: this.coreConfig.serverName,
editions: Object.keys(this.databaseServer.getProfiles()), editions: Object.keys(this.databaseService.getProfiles()),
profileDescriptions: this.getProfileDescriptions(), profileDescriptions: this.getProfileDescriptions(),
}; };
} }
@ -58,7 +58,7 @@ export class LauncherController
protected getProfileDescriptions(): Record<string, string> protected getProfileDescriptions(): Record<string, string>
{ {
const result = {}; const result = {};
const dbProfiles = this.databaseServer.getProfiles(); const dbProfiles = this.databaseService.getProfiles();
for (const profileKey in dbProfiles) for (const profileKey in dbProfiles)
{ {
const localeKey = dbProfiles[profileKey]?.descriptionLocaleKey; const localeKey = dbProfiles[profileKey]?.descriptionLocaleKey;

View File

@ -5,7 +5,7 @@ import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";
import { ConfigTypes } from "@spt/models/enums/ConfigTypes"; import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig";
import { ConfigServer } from "@spt/servers/ConfigServer"; 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 { ItemFilterService } from "@spt/services/ItemFilterService";
import { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { RagfairPriceService } from "@spt/services/RagfairPriceService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService"; import { SeasonalEventService } from "@spt/services/SeasonalEventService";
@ -26,7 +26,7 @@ export class PMCLootGenerator
constructor( constructor(
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("ConfigServer") protected configServer: ConfigServer, @inject("ConfigServer") protected configServer: ConfigServer,
@inject("ItemFilterService") protected itemFilterService: ItemFilterService, @inject("ItemFilterService") protected itemFilterService: ItemFilterService,
@inject("RagfairPriceService") protected ragfairPriceService: RagfairPriceService, @inject("RagfairPriceService") protected ragfairPriceService: RagfairPriceService,
@ -46,9 +46,9 @@ export class PMCLootGenerator
// Hydrate loot dictionary if empty // Hydrate loot dictionary if empty
if (Object.keys(this.pocketLootPool).length === 0) if (Object.keys(this.pocketLootPool).length === 0)
{ {
const items = this.databaseServer.getTables().templates.items; const items = this.databaseService.getItems();
const pmcPriceOverrides const pmcPriceOverrides
= this.databaseServer.getTables().bots.types[botRole === "sptBear" ? "bear" : "usec"].inventory.items = this.databaseService.getBots()[botRole === "sptBear" ? "bear" : "usec"].inventory.items
.Pockets; .Pockets;
const allowedItemTypes = this.pmcConfig.pocketLoot.whitelist; const allowedItemTypes = this.pmcConfig.pocketLoot.whitelist;
@ -106,9 +106,9 @@ export class PMCLootGenerator
// Hydrate loot dictionary if empty // Hydrate loot dictionary if empty
if (Object.keys(this.vestLootPool).length === 0) if (Object.keys(this.vestLootPool).length === 0)
{ {
const items = this.databaseServer.getTables().templates.items; const items = this.databaseService.getItems();
const pmcPriceOverrides const pmcPriceOverrides
= this.databaseServer.getTables().bots.types[botRole === "sptBear" ? "bear" : "usec"].inventory.items = this.databaseService.getBots().types[botRole === "sptBear" ? "bear" : "usec"].inventory.items
.TacticalVest; .TacticalVest;
const allowedItemTypes = this.pmcConfig.vestLoot.whitelist; const allowedItemTypes = this.pmcConfig.vestLoot.whitelist;
@ -176,9 +176,9 @@ export class PMCLootGenerator
// Hydrate loot dictionary if empty // Hydrate loot dictionary if empty
if (Object.keys(this.backpackLootPool).length === 0) if (Object.keys(this.backpackLootPool).length === 0)
{ {
const items = this.databaseServer.getTables().templates.items; const items = this.databaseService.getItems();
const pmcPriceOverrides const pmcPriceOverrides
= this.databaseServer.getTables().bots.types[botRole === "sptBear" ? "bear" : "usec"].inventory.items = this.databaseService.getBots().types[botRole === "sptBear" ? "bear" : "usec"].inventory.items
.Backpack; .Backpack;
const allowedItemTypes = this.pmcConfig.backpackLoot.whitelist; const allowedItemTypes = this.pmcConfig.backpackLoot.whitelist;

View File

@ -17,9 +17,9 @@ import { Traders } from "@spt/models/enums/Traders";
import { IPlayerScavConfig, KarmaLevel } from "@spt/models/spt/config/IPlayerScavConfig"; import { IPlayerScavConfig, KarmaLevel } from "@spt/models/spt/config/IPlayerScavConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer"; import { ConfigServer } from "@spt/servers/ConfigServer";
import { DatabaseServer } from "@spt/servers/DatabaseServer";
import { SaveServer } from "@spt/servers/SaveServer"; import { SaveServer } from "@spt/servers/SaveServer";
import { BotLootCacheService } from "@spt/services/BotLootCacheService"; import { BotLootCacheService } from "@spt/services/BotLootCacheService";
import { DatabaseService } from "@spt/services/DatabaseService";
import { FenceService } from "@spt/services/FenceService"; import { FenceService } from "@spt/services/FenceService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
@ -34,7 +34,7 @@ export class PlayerScavGenerator
constructor( constructor(
@inject("PrimaryLogger") protected logger: ILogger, @inject("PrimaryLogger") protected logger: ILogger,
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("HashUtil") protected hashUtil: HashUtil, @inject("HashUtil") protected hashUtil: HashUtil,
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@inject("BotGeneratorHelper") protected botGeneratorHelper: BotGeneratorHelper, @inject("BotGeneratorHelper") protected botGeneratorHelper: BotGeneratorHelper,
@ -342,7 +342,7 @@ export class PlayerScavGenerator
{ {
// Set cooldown time. // Set cooldown time.
// Make sure to apply ScavCooldownTimer bonus from Hideout if the player has it. // 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; let modifier = 1;
for (const bonus of pmcData.Bonuses) for (const bonus of pmcData.Bonuses)

View File

@ -23,8 +23,8 @@ import {
} from "@spt/models/spt/config/IRagfairConfig"; } from "@spt/models/spt/config/IRagfairConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer"; import { ConfigServer } from "@spt/servers/ConfigServer";
import { DatabaseServer } from "@spt/servers/DatabaseServer";
import { SaveServer } from "@spt/servers/SaveServer"; import { SaveServer } from "@spt/servers/SaveServer";
import { DatabaseService } from "@spt/services/DatabaseService";
import { FenceService } from "@spt/services/FenceService"; import { FenceService } from "@spt/services/FenceService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { RagfairOfferService } from "@spt/services/RagfairOfferService"; import { RagfairOfferService } from "@spt/services/RagfairOfferService";
@ -48,7 +48,7 @@ export class RagfairOfferGenerator
@inject("HashUtil") protected hashUtil: HashUtil, @inject("HashUtil") protected hashUtil: HashUtil,
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("TimeUtil") protected timeUtil: TimeUtil, @inject("TimeUtil") protected timeUtil: TimeUtil,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("RagfairServerHelper") protected ragfairServerHelper: RagfairServerHelper, @inject("RagfairServerHelper") protected ragfairServerHelper: RagfairServerHelper,
@inject("ProfileHelper") protected profileHelper: ProfileHelper, @inject("ProfileHelper") protected profileHelper: ProfileHelper,
@inject("HandbookHelper") protected handbookHelper: HandbookHelper, @inject("HandbookHelper") protected handbookHelper: HandbookHelper,
@ -242,7 +242,7 @@ export class RagfairOfferGenerator
{ {
if (isTrader) if (isTrader)
{ {
return this.databaseServer.getTables().traders[userId].base.avatar; return this.databaseService.getTrader(userId).base.avatar;
} }
return "/files/trader/avatar/unknown.jpg"; return "/files/trader/avatar/unknown.jpg";
@ -338,14 +338,14 @@ export class RagfairOfferGenerator
{ {
// Player offer = current time + offerDurationTimeInHour; // Player offer = current time + offerDurationTimeInHour;
const offerDurationTimeHours 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); return this.timeUtil.getTimestamp() + Math.round(offerDurationTimeHours * TimeUtil.ONE_HOUR_AS_SECONDS);
} }
if (this.ragfairServerHelper.isTrader(userID)) if (this.ragfairServerHelper.isTrader(userID))
{ {
// Trader offer // Trader offer
return this.databaseServer.getTables().traders![userID].base.nextResupply; return this.databaseService.getTrader(userID).base.nextResupply;
} }
// Generated fake-player offer // Generated fake-player offer
@ -577,7 +577,7 @@ export class RagfairOfferGenerator
// Add trader offers // Add trader offers
const time = this.timeUtil.getTimestamp(); const time = this.timeUtil.getTimestamp();
const trader = this.databaseServer.getTables().traders[traderID]; const trader = this.databaseService.getTrader(traderID);
const assorts = trader.assort; const assorts = trader.assort;
// Trader assorts / assort items are missing // Trader assorts / assort items are missing
@ -957,7 +957,7 @@ export class RagfairOfferGenerator
// Generate if needed // Generate if needed
if (!this.allowedFleaPriceItemsForBarter) 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 })); const fleaArray = Object.entries(fleaPrices).map(([tpl, price]) => ({ tpl: tpl, price: price }));
// Only get item prices for items that also exist in items.json // Only get item prices for items that also exist in items.json

View File

@ -18,7 +18,7 @@ import {
import { IQuestTypePool } from "@spt/models/spt/repeatable/IQuestTypePool"; import { IQuestTypePool } from "@spt/models/spt/repeatable/IQuestTypePool";
import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer"; 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 { LocalisationService } from "@spt/services/LocalisationService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { MathUtil } from "@spt/utils/MathUtil"; import { MathUtil } from "@spt/utils/MathUtil";
@ -34,7 +34,7 @@ export class RepeatableQuestGenerator
@inject("PrimaryLogger") protected logger: ILogger, @inject("PrimaryLogger") protected logger: ILogger,
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("MathUtil") protected mathUtil: MathUtil, @inject("MathUtil") protected mathUtil: MathUtil,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@inject("LocalisationService") protected localisationService: LocalisationService, @inject("LocalisationService") protected localisationService: LocalisationService,
@inject("ObjectId") protected objectId: ObjectId, @inject("ObjectId") protected objectId: ObjectId,
@ -238,7 +238,7 @@ export class RepeatableQuestGenerator
if (targetsConfig.data(targetKey).isBoss) if (targetsConfig.data(targetKey).isBoss)
{ {
// Get all boss spawn information // 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) .filter((x) => "base" in x && "Id" in x.base)
.map((x) => ({ Id: x.base.Id, BossSpawn: x.base.BossLocationSpawn })); .map((x) => ({ Id: x.base.Id, BossSpawn: x.base.BossLocationSpawn }));
// filter for the current boss to spawn on map // filter for the current boss to spawn on map
@ -509,7 +509,7 @@ export class RepeatableQuestGenerator
if (repeatableConfig.questConfig.Completion.useWhitelist) if (repeatableConfig.questConfig.Completion.useWhitelist)
{ {
const itemWhitelist 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 // Filter and concatenate the arrays according to current player level
const itemIdsWhitelisted = itemWhitelist const itemIdsWhitelisted = itemWhitelist
@ -531,7 +531,7 @@ export class RepeatableQuestGenerator
if (repeatableConfig.questConfig.Completion.useBlacklist) if (repeatableConfig.questConfig.Completion.useBlacklist)
{ {
const itemBlacklist 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 // we filter and concatenate the arrays according to current player level
const itemIdsBlacklisted = itemBlacklist const itemIdsBlacklisted = itemBlacklist
@ -792,8 +792,9 @@ export class RepeatableQuestGenerator
*/ */
protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[] protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]
{ {
const mapExtracts = this.databaseServer.getTables().locations[locationKey.toLocaleLowerCase()] const mapExtracts = this.databaseService
.allExtracts as Exit[]; .getLocation(locationKey.toLocaleLowerCase())
.allExtracts;
return mapExtracts.filter((exit) => exit.Side === playerSide); return mapExtracts.filter((exit) => exit.Side === playerSide);
} }
@ -881,7 +882,7 @@ export class RepeatableQuestGenerator
protected generateRepeatableTemplate(type: string, traderId: string, side: string): IRepeatableQuest protected generateRepeatableTemplate(type: string, traderId: string, side: string): IRepeatableQuest
{ {
const questClone = this.cloner.clone<IRepeatableQuest>( const questClone = this.cloner.clone<IRepeatableQuest>(
this.databaseServer.getTables().templates.repeatableQuests.templates[type], this.databaseService.getTemplates().repeatableQuests.templates[type],
); );
questClone._id = this.objectId.generate(); questClone._id = this.objectId.generate();
questClone.traderId = traderId; questClone.traderId = traderId;

View File

@ -15,7 +15,7 @@ import { IBaseQuestConfig, IQuestConfig, IRepeatableQuestConfig } from "@spt/mod
import { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray";
import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer"; 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 { ItemFilterService } from "@spt/services/ItemFilterService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService"; import { SeasonalEventService } from "@spt/services/SeasonalEventService";
@ -33,7 +33,7 @@ export class RepeatableQuestRewardGenerator
@inject("PrimaryLogger") protected logger: ILogger, @inject("PrimaryLogger") protected logger: ILogger,
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("MathUtil") protected mathUtil: MathUtil, @inject("MathUtil") protected mathUtil: MathUtil,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@inject("PresetHelper") protected presetHelper: PresetHelper, @inject("PresetHelper") protected presetHelper: PresetHelper,
@inject("HandbookHelper") protected handbookHelper: HandbookHelper, @inject("HandbookHelper") protected handbookHelper: HandbookHelper,
@ -426,7 +426,7 @@ export class RepeatableQuestRewardGenerator
// check for specific baseclasses which don't make sense as reward item // 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 // 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) // 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 // eslint-disable-next-line @typescript-eslint/no-unused-vars
([tpl, itemTemplate]) => ([tpl, itemTemplate]) =>
{ {

View File

@ -14,7 +14,7 @@ import {
} from "@spt/models/spt/hideout/ScavCaseRewardCountsAndPrices"; } from "@spt/models/spt/hideout/ScavCaseRewardCountsAndPrices";
import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer"; 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 { ItemFilterService } from "@spt/services/ItemFilterService";
import { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { RagfairPriceService } from "@spt/services/RagfairPriceService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService"; import { SeasonalEventService } from "@spt/services/SeasonalEventService";
@ -37,7 +37,7 @@ export class ScavCaseRewardGenerator
@inject("HashUtil") protected hashUtil: HashUtil, @inject("HashUtil") protected hashUtil: HashUtil,
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@inject("PresetHelper") protected presetHelper: PresetHelper, @inject("PresetHelper") protected presetHelper: PresetHelper,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("RagfairPriceService") protected ragfairPriceService: RagfairPriceService, @inject("RagfairPriceService") protected ragfairPriceService: RagfairPriceService,
@inject("SeasonalEventService") protected seasonalEventService: SeasonalEventService, @inject("SeasonalEventService") protected seasonalEventService: SeasonalEventService,
@inject("ItemFilterService") protected itemFilterService: ItemFilterService, @inject("ItemFilterService") protected itemFilterService: ItemFilterService,
@ -57,7 +57,7 @@ export class ScavCaseRewardGenerator
this.cacheDbItems(); this.cacheDbItems();
// Get scavcase details from hideout/scavcase.json // 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); const rewardItemCounts = this.getScavCaseRewardCountsAndPrices(scavCaseDetails);
// Get items that fit the price criteria as set by the scavCase config // 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(); const inactiveSeasonalItems = this.seasonalEventService.getInactiveSeasonalEventItems();
if (!this.dbItemsCache) 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 // Base "Item" item has no parent, ignore it
if (item._parent === "") if (item._parent === "")
@ -154,7 +154,7 @@ export class ScavCaseRewardGenerator
if (!this.dbAmmoItemsCache) 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 // Base "Item" item has no parent, ignore it
if (item._parent === "") if (item._parent === "")
@ -280,9 +280,10 @@ export class ScavCaseRewardGenerator
protected getRandomMoney(): ITemplateItem protected getRandomMoney(): ITemplateItem
{ {
const money: ITemplateItem[] = []; const money: ITemplateItem[] = [];
money.push(this.databaseServer.getTables().templates.items["5449016a4bdc2d6f028b456f"]); // rub const items = this.databaseService.getItems();
money.push(this.databaseServer.getTables().templates.items["569668774bdc2da2298b4568"]); // euro money.push(items["5449016a4bdc2d6f028b456f"]); // rub
money.push(this.databaseServer.getTables().templates.items["5696686a4bdc2da3298b456a"]); // dollar money.push(items["569668774bdc2da2298b4568"]); // euro
money.push(items["5696686a4bdc2da3298b456a"]); // dollar
return this.randomUtil.getArrayValue(money); return this.randomUtil.getArrayValue(money);
} }

View File

@ -5,7 +5,7 @@ import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer"; 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 { LocalisationService } from "@spt/services/LocalisationService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { RandomUtil } from "@spt/utils/RandomUtil"; import { RandomUtil } from "@spt/utils/RandomUtil";
@ -17,7 +17,7 @@ export class BotDifficultyHelper
constructor( constructor(
@inject("PrimaryLogger") protected logger: ILogger, @inject("PrimaryLogger") protected logger: ILogger,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("LocalisationService") protected localisationService: LocalisationService, @inject("LocalisationService") protected localisationService: LocalisationService,
@inject("BotHelper") protected botHelper: BotHelper, @inject("BotHelper") protected botHelper: BotHelper,
@ -121,7 +121,7 @@ export class BotDifficultyHelper
*/ */
public getBotDifficultySettings(type: string, difficulty: string): Difficulty public getBotDifficultySettings(type: string, difficulty: string): Difficulty
{ {
const botDb = this.databaseServer.getTables().bots; const botDb = this.databaseService.getBots();
const desiredType = type.toLowerCase(); const desiredType = type.toLowerCase();
const bot = botDb.types[desiredType]; const bot = botDb.types[desiredType];
@ -165,7 +165,7 @@ export class BotDifficultyHelper
difficultySetting = this.convertBotDifficultyDropdownToBotDifficulty(difficultySetting); 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]);
} }
/** /**

View File

@ -17,7 +17,7 @@ import { EquipmentFilters, IBotConfig, IRandomisedResourceValues } from "@spt/mo
import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer"; 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 { LocalisationService } from "@spt/services/LocalisationService";
import { RandomUtil } from "@spt/utils/RandomUtil"; import { RandomUtil } from "@spt/utils/RandomUtil";
@ -30,7 +30,7 @@ export class BotGeneratorHelper
constructor( constructor(
@inject("PrimaryLogger") protected logger: ILogger, @inject("PrimaryLogger") protected logger: ILogger,
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("DurabilityLimitsHelper") protected durabilityLimitsHelper: DurabilityLimitsHelper, @inject("DurabilityLimitsHelper") protected durabilityLimitsHelper: DurabilityLimitsHelper,
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@inject("InventoryHelper") protected inventoryHelper: InventoryHelper, @inject("InventoryHelper") protected inventoryHelper: InventoryHelper,
@ -289,7 +289,7 @@ export class BotGeneratorHelper
): IChooseRandomCompatibleModResult ): IChooseRandomCompatibleModResult
{ {
// TODO: Can probably be optimized to cache itemTemplates as items are added to inventory // 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 itemToEquipDb = this.itemHelper.getItem(tplToCheck);
const itemToEquip = itemToEquipDb[1]; 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 // 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 itemToEquipDb = this.itemHelper.getItem(tplToCheck);
const itemToEquip = itemToEquipDb[1]; 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 // 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) if (blockingItem)
{ {
// this.logger.warning(`1 incompatibility found between - ${itemToEquip[1]._name} and ${blockingItem._name} - ${equipmentSlot}`); // this.logger.warning(`1 incompatibility found between - ${itemToEquip[1]._name} and ${blockingItem._name} - ${equipmentSlot}`);

View File

@ -6,7 +6,7 @@ import { EquipmentFilters, IBotConfig, RandomisationDetails } from "@spt/models/
import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer"; 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 { RandomUtil } from "@spt/utils/RandomUtil";
@injectable() @injectable()
@ -17,7 +17,7 @@ export class BotHelper
constructor( constructor(
@inject("PrimaryLogger") protected logger: ILogger, @inject("PrimaryLogger") protected logger: ILogger,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("ConfigServer") protected configServer: ConfigServer, @inject("ConfigServer") protected configServer: ConfigServer,
) )
@ -33,7 +33,7 @@ export class BotHelper
*/ */
public getBotTemplate(role: string): IBotType 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) // recurivse if name is longer than max characters allowed (15 characters)
const randomType = this.randomUtil.getInt(0, 1) === 0 ? "usec" : "bear"; const randomType = this.randomUtil.getInt(0, 1) === 0 ? "usec" : "bear";
const name 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 return name.length > maxLength
? this.getPmcNicknameOfMaxLength(userId, maxLength) ? this.getPmcNicknameOfMaxLength(userId, maxLength)
: name; : name;

View File

@ -7,7 +7,7 @@ import { ISendMessageRequest } from "@spt/models/eft/dialog/ISendMessageRequest"
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile"; import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
import { IProfileChangeEvent, ProfileChangeEventType } from "@spt/models/spt/dialog/ISendMessageDetails"; import { IProfileChangeEvent, ProfileChangeEventType } from "@spt/models/spt/dialog/ISendMessageDetails";
import { ILogger } from "@spt/models/spt/utils/ILogger"; 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 { LocaleService } from "@spt/services/LocaleService";
import { MailSendService } from "@spt/services/MailSendService"; import { MailSendService } from "@spt/services/MailSendService";
import { HashUtil } from "@spt/utils/HashUtil"; import { HashUtil } from "@spt/utils/HashUtil";
@ -31,7 +31,7 @@ export class TraderSptCommand implements ISptCommand
@inject("PresetHelper") protected presetHelper: PresetHelper, @inject("PresetHelper") protected presetHelper: PresetHelper,
@inject("MailSendService") protected mailSendService: MailSendService, @inject("MailSendService") protected mailSendService: MailSendService,
@inject("LocaleService") protected localeService: LocaleService, @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 command: string = result.groups.command;
const quantity: number = +result.groups.quantity; 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(), (t) => t.base.nickname.toLocaleLowerCase() === trader.toLocaleLowerCase(),
); );
if (dbTrader === undefined) if (dbTrader === undefined)

View File

@ -5,7 +5,7 @@ import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
import { Money } from "@spt/models/enums/Money"; import { Money } from "@spt/models/enums/Money";
import { IItemConfig } from "@spt/models/spt/config/IItemConfig"; import { IItemConfig } from "@spt/models/spt/config/IItemConfig";
import { ConfigServer } from "@spt/servers/ConfigServer"; 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 { ICloner } from "@spt/utils/cloners/ICloner";
class LookupItem<T, I> class LookupItem<T, I>
@ -40,7 +40,7 @@ export class HandbookHelper
protected handbookPriceCache = new LookupCollection(); protected handbookPriceCache = new LookupCollection();
constructor( constructor(
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("ConfigServer") protected configServer: ConfigServer, @inject("ConfigServer") protected configServer: ConfigServer,
@inject("PrimaryCloner") protected cloner: ICloner, @inject("PrimaryCloner") protected cloner: ICloner,
) )
@ -53,31 +53,26 @@ export class HandbookHelper
*/ */
public hydrateLookup(): void public hydrateLookup(): void
{ {
const handbook = this.databaseService.getHandbook();
// Add handbook overrides found in items.json config into db // Add handbook overrides found in items.json config into db
for (const itemTpl in this.itemConfig.handbookPriceOverride) for (const itemTpl in this.itemConfig.handbookPriceOverride)
{ {
let itemToUpdate = this.databaseServer.getTables() let itemToUpdate = handbook.Items.find((item) => item.Id === itemTpl);
.templates!
.handbook
.Items.find((item) => item.Id === itemTpl);
if (!itemToUpdate) if (!itemToUpdate)
{ {
this.databaseServer.getTables().templates!.handbook.Items.push({ handbook.Items.push({
Id: itemTpl, Id: itemTpl,
ParentId: this.databaseServer.getTables().templates!.items[itemTpl]._parent, ParentId: this.databaseService.getItems()[itemTpl]._parent,
Price: this.itemConfig.handbookPriceOverride[itemTpl], Price: this.itemConfig.handbookPriceOverride[itemTpl],
}); });
itemToUpdate = this.databaseServer itemToUpdate = handbook
.getTables()
.templates!
.handbook
.Items.find((item) => item.Id === itemTpl); .Items.find((item) => item.Id === itemTpl);
} }
itemToUpdate.Price = this.itemConfig.handbookPriceOverride[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) for (const handbookItem of handbookDbClone.Items)
{ {
this.handbookPriceCache.items.byId.set(handbookItem.Id, handbookItem.Price); 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) * Get price from internal cache, if cache empty look up price directly in handbook (expensive)
* If no values found, return 0 * 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 * @returns price in roubles
*/ */
public getTemplatePrice(tpl: string): number public getTemplatePrice(tpl: string): number
@ -121,7 +116,7 @@ export class HandbookHelper
return this.handbookPriceCache.items.byId.get(tpl); 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) if (!handbookItem)
{ {
const newValue = 0; const newValue = 0;
@ -211,6 +206,6 @@ export class HandbookHelper
public getCategoryById(handbookId: string): Category 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);
} }
} }

View File

@ -20,7 +20,7 @@ import { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ILogger } from "@spt/models/spt/utils/ILogger";
import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder";
import { ConfigServer } from "@spt/servers/ConfigServer"; 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 { LocalisationService } from "@spt/services/LocalisationService";
import { PlayerService } from "@spt/services/PlayerService"; import { PlayerService } from "@spt/services/PlayerService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
@ -44,7 +44,7 @@ export class HideoutHelper
@inject("PrimaryLogger") protected logger: ILogger, @inject("PrimaryLogger") protected logger: ILogger,
@inject("HashUtil") protected hashUtil: HashUtil, @inject("HashUtil") protected hashUtil: HashUtil,
@inject("TimeUtil") protected timeUtil: TimeUtil, @inject("TimeUtil") protected timeUtil: TimeUtil,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("EventOutputHolder") protected eventOutputHolder: EventOutputHolder, @inject("EventOutputHolder") protected eventOutputHolder: EventOutputHolder,
@inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil, @inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil,
@inject("ProfileHelper") protected profileHelper: ProfileHelper, @inject("ProfileHelper") protected profileHelper: ProfileHelper,
@ -72,9 +72,8 @@ export class HideoutHelper
sessionID: string, sessionID: string,
): IItemEventRouterResponse ): IItemEventRouterResponse
{ {
const recipe = this.databaseServer const recipe = this.databaseService.getHideout().production
.getTables() .find((production) => production._id === body.recipeId);
.hideout.production.find((production) => production._id === body.recipeId);
if (!recipe) if (!recipe)
{ {
this.logger.error(this.localisationService.getText("hideout-missing_recipe_in_db", body.recipeId)); 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 }, hideoutProperties: { btcFarmCGs: number, isGeneratorOn: boolean, waterCollectorHasFilter: boolean },
): void ): void
{ {
const recipes = this.databaseServer.getTables().hideout.production; const recipes = this.databaseService.getHideout().production;
// Check each production // Check each production
for (const prodId in pmcData.Hideout.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 // 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 // 10-10-2021 From wiki, 1 resource last 12 minutes 38 seconds, 1/12.63333/60 = 0.00131
let fuelUsedSinceLastTick let fuelUsedSinceLastTick
= this.databaseServer.getTables().hideout.settings.generatorFuelFlowRate = this.databaseService.getHideout().settings.generatorFuelFlowRate
* this.getTimeElapsedSinceLastServerTick(pmcData, isGeneratorOn); * this.getTimeElapsedSinceLastServerTick(pmcData, isGeneratorOn);
const profileFuelConsumptionBonus = pmcData.Bonuses.find((bonus) => bonus.type === BonusType.FUEL_CONSUMPTION); const profileFuelConsumptionBonus = pmcData.Bonuses.find((bonus) => bonus.type === BonusType.FUEL_CONSUMPTION);
@ -603,11 +602,10 @@ export class HideoutHelper
applyHideoutManagementBonus = false, applyHideoutManagementBonus = false,
): number ): number
{ {
const globalSkillsDb = this.databaseServer.getTables().globals.config.SkillsSettings; const globalSkillsDb = this.databaseService.getGlobals().config.SkillsSettings;
const recipe = this.databaseServer const recipe = this.databaseService.getHideout().production
.getTables() .find((production) => production._id === recipeId);
.hideout.production.find((production) => production._id === recipeId);
if (!recipe) if (!recipe)
{ {
this.logger.error(this.localisationService.getText("hideout-missing_recipe_in_db", recipeId)); this.logger.error(this.localisationService.getText("hideout-missing_recipe_in_db", recipeId));
@ -773,7 +771,7 @@ export class HideoutHelper
*/ */
protected getWaterFilterDrainRate(pmcData: IPmcData): number 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 // 100 resources last 8 hrs 20 min, 100/8.33/60/60 = 0.00333
const filterDrainRate = 0.00333; const filterDrainRate = 0.00333;
@ -805,7 +803,7 @@ export class HideoutHelper
*/ */
protected getTotalProductionTimeSeconds(prodId: string): number 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; return recipe.productionTime || 0;
} }
@ -839,7 +837,7 @@ export class HideoutHelper
300/17.64694/60/60 = 0.004722 300/17.64694/60/60 = 0.004722
*/ */
let filterDrainRate let filterDrainRate
= this.databaseServer.getTables().hideout.settings.airFilterUnitFlowRate = this.databaseService.getHideout().settings.airFilterUnitFlowRate
* this.getTimeElapsedSinceLastServerTick(pmcData, isGeneratorOn); * this.getTimeElapsedSinceLastServerTick(pmcData, isGeneratorOn);
// Hideout management resource consumption bonus: // Hideout management resource consumption bonus:
@ -894,10 +892,8 @@ export class HideoutHelper
protected updateBitcoinFarm(pmcData: IPmcData, btcFarmCGs: number, isGeneratorOn: boolean): Production | undefined protected updateBitcoinFarm(pmcData: IPmcData, btcFarmCGs: number, isGeneratorOn: boolean): Production | undefined
{ {
const btcProd = pmcData.Hideout.Production[HideoutHelper.bitcoinFarm]; const btcProd = pmcData.Hideout.Production[HideoutHelper.bitcoinFarm];
const bitcoinProdData = this.databaseServer const bitcoinProdData = this.databaseService.getHideout().production
.getTables() .find((production) => production._id === HideoutHelper.bitcoinProductionId);
.hideout!
.production.find((production) => production._id === HideoutHelper.bitcoinProductionId);
const coinSlotCount = this.getBTCSlots(pmcData); const coinSlotCount = this.getBTCSlots(pmcData);
// Full on bitcoins, halt progress // 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 // BSG finally fixed their settings, they now get loaded from the settings and used in the client
const adjustedCraftTime const adjustedCraftTime
= (this.profileHelper.isDeveloperAccount(pmcData.sessionId) ? 40 : bitcoinProdData.productionTime) = (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 // The progress should be adjusted based on the GPU boost rate, but the target is still the base productionTime
const timeMultiplier = bitcoinProdData.productionTime / adjustedCraftTime; const timeMultiplier = bitcoinProdData.productionTime / adjustedCraftTime;
@ -1018,7 +1014,7 @@ export class HideoutHelper
if (!isGeneratorOn) if (!isGeneratorOn)
{ {
timeElapsed *= this.databaseServer.getTables().hideout!.settings.generatorSpeedWithoutFuel; timeElapsed *= this.databaseService.getHideout().settings.generatorSpeedWithoutFuel;
} }
return timeElapsed; return timeElapsed;
@ -1031,9 +1027,8 @@ export class HideoutHelper
*/ */
protected getBTCSlots(pmcData: IPmcData): number protected getBTCSlots(pmcData: IPmcData): number
{ {
const bitcoinProductions = this.databaseServer const bitcoinProductions = this.databaseService.getHideout().production
.getTables() .find((production) => production._id === HideoutHelper.bitcoinFarm);
.hideout.production.find((production) => production._id === HideoutHelper.bitcoinFarm);
const productionSlots = bitcoinProductions?.productionLimitCount || 3; // Default to 3 if none found const productionSlots = bitcoinProductions?.productionLimitCount || 3; // Default to 3 if none found
const hasManagementSkillSlots = this.profileHelper.hasEliteSkillLevel(SkillTypes.HIDEOUT_MANAGEMENT, pmcData); const hasManagementSkillSlots = this.profileHelper.hasEliteSkillLevel(SkillTypes.HIDEOUT_MANAGEMENT, pmcData);
const managementSlotsCount = this.getEliteSkillAdditionalBitcoinSlotCount() || 2; const managementSlotsCount = this.getEliteSkillAdditionalBitcoinSlotCount() || 2;
@ -1046,7 +1041,7 @@ export class HideoutHelper
*/ */
protected getEliteSkillAdditionalBitcoinSlotCount(): number protected getEliteSkillAdditionalBitcoinSlotCount(): number
{ {
return this.databaseServer.getTables().globals.config.SkillsSettings.HideoutManagement.EliteSlots.BitcoinFarm return this.databaseService.getGlobals().config.SkillsSettings.HideoutManagement.EliteSlots.BitcoinFarm
.Container; .Container;
} }
@ -1072,7 +1067,7 @@ export class HideoutHelper
return ( return (
(roundedLevel (roundedLevel
* this.databaseServer.getTables().globals.config.SkillsSettings.HideoutManagement * this.databaseService.getGlobals().config.SkillsSettings.HideoutManagement
.ConsumptionReductionPerLevel) .ConsumptionReductionPerLevel)
/ 100 / 100
); );
@ -1254,9 +1249,8 @@ export class HideoutHelper
const fameAreaProfile = pmcData.Hideout.Areas.find((area) => area.type === HideoutAreas.PLACE_OF_FAME); const fameAreaProfile = pmcData.Hideout.Areas.find((area) => area.type === HideoutAreas.PLACE_OF_FAME);
// Get hideout area 16 bonus array // Get hideout area 16 bonus array
const fameAreaDb = this.databaseServer const fameAreaDb = this.databaseService.getHideout().areas
.getTables() .find((area) => area.type === HideoutAreas.PLACE_OF_FAME);
.hideout.areas.find((area) => area.type === HideoutAreas.PLACE_OF_FAME);
// Get SkillGroupLevelingBoost object // Get SkillGroupLevelingBoost object
const combatBoostBonusDb = fameAreaDb.stages[fameAreaProfile.level].bonuses.find( const combatBoostBonusDb = fameAreaDb.stages[fameAreaProfile.level].bonuses.find(

View File

@ -15,8 +15,8 @@ import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig";
import { ILostOnDeathConfig } from "@spt/models/spt/config/ILostOnDeathConfig"; import { ILostOnDeathConfig } from "@spt/models/spt/config/ILostOnDeathConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer"; import { ConfigServer } from "@spt/servers/ConfigServer";
import { DatabaseServer } from "@spt/servers/DatabaseServer";
import { SaveServer } from "@spt/servers/SaveServer"; import { SaveServer } from "@spt/servers/SaveServer";
import { DatabaseService } from "@spt/services/DatabaseService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { ProfileFixerService } from "@spt/services/ProfileFixerService"; import { ProfileFixerService } from "@spt/services/ProfileFixerService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
@ -35,7 +35,7 @@ export class InRaidHelper
@inject("TimeUtil") protected timeUtil: TimeUtil, @inject("TimeUtil") protected timeUtil: TimeUtil,
@inject("SaveServer") protected saveServer: SaveServer, @inject("SaveServer") protected saveServer: SaveServer,
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("InventoryHelper") protected inventoryHelper: InventoryHelper, @inject("InventoryHelper") protected inventoryHelper: InventoryHelper,
@inject("ProfileHelper") protected profileHelper: ProfileHelper, @inject("ProfileHelper") protected profileHelper: ProfileHelper,
@inject("QuestHelper") protected questHelper: QuestHelper, @inject("QuestHelper") protected questHelper: QuestHelper,
@ -453,17 +453,17 @@ export class InRaidHelper
*/ */
public removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData public removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData
{ {
const dbItems = this.databaseServer.getTables().templates!.items; const dbItems = this.databaseService.getItems();
const itemsToRemovePropertyFrom = postRaidProfile.Inventory.items.filter((x) => const itemsToRemovePropertyFrom = postRaidProfile.Inventory.items.filter((item) =>
{ {
// Has upd object + upd.SpawnedInSession property + not a quest item // Has upd object + upd.SpawnedInSession property + not a quest item
return ( return (
"upd" in x "upd" in item
&& "SpawnedInSession" in x.upd && "SpawnedInSession" in item.upd
&& !dbItems[x._tpl]._props.QuestItem && !dbItems[item._tpl]._props.QuestItem
&& !( && !(
this.inRaidConfig.keepFiRSecureContainerOnDeath this.inRaidConfig.keepFiRSecureContainerOnDeath
&& this.itemHelper.itemIsInsideContainer(x, "SecuredContainer", postRaidProfile.Inventory.items) && this.itemHelper.itemIsInsideContainer(item, "SecuredContainer", postRaidProfile.Inventory.items)
) )
); );
}); });

View File

@ -8,7 +8,7 @@ import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";
import { BaseClasses } from "@spt/models/enums/BaseClasses"; import { BaseClasses } from "@spt/models/enums/BaseClasses";
import { EquipmentSlots } from "@spt/models/enums/EquipmentSlots"; import { EquipmentSlots } from "@spt/models/enums/EquipmentSlots";
import { ILogger } from "@spt/models/spt/utils/ILogger"; 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 { ItemBaseClassService } from "@spt/services/ItemBaseClassService";
import { ItemFilterService } from "@spt/services/ItemFilterService"; import { ItemFilterService } from "@spt/services/ItemFilterService";
import { LocaleService } from "@spt/services/LocaleService"; import { LocaleService } from "@spt/services/LocaleService";
@ -41,7 +41,7 @@ export class ItemHelper
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("ObjectId") protected objectId: ObjectId, @inject("ObjectId") protected objectId: ObjectId,
@inject("MathUtil") protected mathUtil: MathUtil, @inject("MathUtil") protected mathUtil: MathUtil,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("HandbookHelper") protected handbookHelper: HandbookHelper, @inject("HandbookHelper") protected handbookHelper: HandbookHelper,
@inject("ItemBaseClassService") protected itemBaseClassService: ItemBaseClassService, @inject("ItemBaseClassService") protected itemBaseClassService: ItemBaseClassService,
@inject("ItemFilterService") protected itemFilterService: ItemFilterService, @inject("ItemFilterService") protected itemFilterService: ItemFilterService,
@ -398,7 +398,7 @@ export class ItemHelper
*/ */
public getDynamicItemPrice(tpl: string): number public getDynamicItemPrice(tpl: string): number
{ {
const dynamicPrice = this.databaseServer.getTables().templates!.prices[tpl]; const dynamicPrice = this.databaseService.getPrices()[tpl];
if (dynamicPrice) if (dynamicPrice)
{ {
return dynamicPrice; return dynamicPrice;
@ -432,7 +432,7 @@ export class ItemHelper
*/ */
public getItems(): ITemplateItem[] 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] public getItem(tpl: string): [boolean, ITemplateItem]
{ {
// -> Gets item from <input: _tpl> // -> Gets item from <input: _tpl>
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]; return [false, undefined];
@ -709,7 +709,7 @@ export class ItemHelper
*/ */
public isItemTplStackable(tpl: string): boolean public isItemTplStackable(tpl: string): boolean
{ {
const item = this.databaseServer.getTables().templates!.items[tpl]; const item = this.databaseService.getItems()[tpl];
if (!item) if (!item)
{ {
return undefined; return undefined;
@ -1563,11 +1563,16 @@ export class ItemHelper
return this.localeService.getLocaleDb()[`${itemTpl} Name`]; 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[] public getItemTplsOfBaseType(desiredBaseType: string): string[]
{ {
return Object.values(this.databaseServer.getTables().templates!.items) return Object.values(this.databaseService.getItems())
.filter((x) => x._parent === desiredBaseType) .filter((item) => item._parent === desiredBaseType)
.map((x) => x._id); .map((item) => item._id);
} }
/** /**

View File

@ -11,7 +11,7 @@ import { Money } from "@spt/models/enums/Money";
import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer"; 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 { RagfairLinkedItemService } from "@spt/services/RagfairLinkedItemService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
@ -23,7 +23,7 @@ export class RagfairHelper
constructor( constructor(
@inject("PrimaryLogger") protected logger: ILogger, @inject("PrimaryLogger") protected logger: ILogger,
@inject("TraderAssortHelper") protected traderAssortHelper: TraderAssortHelper, @inject("TraderAssortHelper") protected traderAssortHelper: TraderAssortHelper,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("HandbookHelper") protected handbookHelper: HandbookHelper, @inject("HandbookHelper") protected handbookHelper: HandbookHelper,
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@inject("RagfairLinkedItemService") protected ragfairLinkedItemService: RagfairLinkedItemService, @inject("RagfairLinkedItemService") protected ragfairLinkedItemService: RagfairLinkedItemService,
@ -96,7 +96,7 @@ export class RagfairHelper
{ {
const result: Record<string, ITraderAssort> = {}; const result: Record<string, ITraderAssort> = {};
for (const traderID in this.databaseServer.getTables().traders) for (const traderID in this.databaseService.getTraders())
{ {
if (this.ragfairConfig.traders[traderID]) if (this.ragfairConfig.traders[traderID])
{ {

View File

@ -4,7 +4,7 @@ import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig"; import { IRagfairConfig } from "@spt/models/spt/config/IRagfairConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer"; 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 { RandomUtil } from "@spt/utils/RandomUtil";
import { TimeUtil } from "@spt/utils/TimeUtil"; import { TimeUtil } from "@spt/utils/TimeUtil";
@ -17,7 +17,7 @@ export class RagfairSellHelper
@inject("PrimaryLogger") protected logger: ILogger, @inject("PrimaryLogger") protected logger: ILogger,
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("TimeUtil") protected timeUtil: TimeUtil, @inject("TimeUtil") protected timeUtil: TimeUtil,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("ConfigServer") protected configServer: ConfigServer, @inject("ConfigServer") protected configServer: ConfigServer,
) )
{ {
@ -75,7 +75,7 @@ export class RagfairSellHelper
const endTime const endTime
= startTime = startTime
+ this.timeUtil.getHoursAsSeconds( + this.timeUtil.getHoursAsSeconds(
this.databaseServer.getTables().globals!.config.RagFair.offerDurationTimeInHour, this.databaseService.getGlobals().config.RagFair.offerDurationTimeInHour,
); );
let sellTime = startTime; let sellTime = startTime;

View File

@ -19,7 +19,7 @@ import {
} from "@spt/models/spt/fence/IFenceAssortGenerationValues"; } from "@spt/models/spt/fence/IFenceAssortGenerationValues";
import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer"; 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 { LocalisationService } from "@spt/services/LocalisationService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { RandomUtil } from "@spt/utils/RandomUtil"; import { RandomUtil } from "@spt/utils/RandomUtil";
@ -62,7 +62,7 @@ export class FenceService
@inject("PrimaryLogger") protected logger: ILogger, @inject("PrimaryLogger") protected logger: ILogger,
@inject("TimeUtil") protected timeUtil: TimeUtil, @inject("TimeUtil") protected timeUtil: TimeUtil,
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("HandbookHelper") protected handbookHelper: HandbookHelper, @inject("HandbookHelper") protected handbookHelper: HandbookHelper,
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@inject("PresetHelper") protected presetHelper: PresetHelper, @inject("PresetHelper") protected presetHelper: PresetHelper,
@ -694,7 +694,7 @@ export class FenceService
{ {
const result: ICreateFenceAssortsResult = { sptItems: [], barter_scheme: {}, loyal_level_items: {} }; 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); const itemTypeLimitCounts = this.initItemLimitCounter(this.traderConfig.fence.itemTypeLimits);
if (itemCounts.item > 0) if (itemCounts.item > 0)
@ -1498,7 +1498,7 @@ export class FenceService
*/ */
public getFenceInfo(pmcData: IPmcData): IFenceLevel 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]; const pmcFenceInfo = pmcData.TradersInfo[fenceSettings.FenceId];
if (!pmcFenceInfo) if (!pmcFenceInfo)

View File

@ -1,7 +1,7 @@
import { inject, injectable } from "tsyringe"; import { inject, injectable } from "tsyringe";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";
import { ILogger } from "@spt/models/spt/utils/ILogger"; 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 { LocalisationService } from "@spt/services/LocalisationService";
/** /**
@ -17,7 +17,7 @@ export class ItemBaseClassService
constructor( constructor(
@inject("PrimaryLogger") protected logger: ILogger, @inject("PrimaryLogger") protected logger: ILogger,
@inject("LocalisationService") protected localisationService: LocalisationService, @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 // Clear existing cache
this.itemBaseClassesCache = {}; this.itemBaseClassesCache = {};
this.items = this.databaseServer.getTables().templates!.items; this.items = this.databaseService.getItems();
if (!this.items) if (!this.items)
{ {
this.logger.warning(this.localisationService.getText("baseclass-missing_db_no_cache")); this.logger.warning(this.localisationService.getText("baseclass-missing_db_no_cache"));

View File

@ -277,9 +277,9 @@ describe("ItemHelper", () =>
describe("getItems", () => 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"); const clonerSpy = vi.spyOn((itemHelper as any).cloner, "clone");
itemHelper.getItems(); itemHelper.getItems();