0
0
mirror of https://github.com/sp-tarkov/server.git synced 2025-02-13 03:30: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(
@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<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>
{
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<IHandbookBase>
{
return this.httpResponse.getBody(this.databaseServer.getHandbook());
return this.httpResponse.getBody(this.databaseService.getHandbook());
}
/**
@ -83,7 +83,7 @@ export class DataCallbacks
sessionID: string,
): 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,
): 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,
): IGetBodyResponseData<IHideoutSettingsBase>
{
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<IHideoutArea[]>
{
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<IHideoutProduction[]>
{
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<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,
): 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>
{
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)

View File

@ -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<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("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

View File

@ -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<string, string>
{
const result = {};
const dbProfiles = this.databaseServer.getProfiles();
const dbProfiles = this.databaseService.getProfiles();
for (const profileKey in dbProfiles)
{
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 { 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;

View File

@ -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)

View File

@ -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

View File

@ -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<IRepeatableQuest>(
this.databaseServer.getTables().templates.repeatableQuests.templates[type],
this.databaseService.getTemplates().repeatableQuests.templates[type],
);
questClone._id = this.objectId.generate();
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 { 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]) =>
{

View File

@ -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);
}

View File

@ -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]);
}
/**

View File

@ -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}`);

View File

@ -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;

View File

@ -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)

View File

@ -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<T, I>
@ -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);
}
}

View File

@ -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(

View File

@ -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)
)
);
});

View File

@ -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 <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];
@ -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);
}
/**

View File

@ -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<string, ITraderAssort> = {};
for (const traderID in this.databaseServer.getTables().traders)
for (const traderID in this.databaseService.getTraders())
{
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 { 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;

View File

@ -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)

View File

@ -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"));

View File

@ -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();