Updated various classes to make use of databaseService

This commit is contained in:
Dev 2024-05-28 14:52:22 +01:00
parent 584eade530
commit f56da3c1a8
12 changed files with 51 additions and 56 deletions

View File

@ -7,7 +7,6 @@ import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader";
import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData";
import { ILocation } from "@spt/models/eft/common/ILocation"; import { ILocation } from "@spt/models/eft/common/ILocation";
import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { BodyPartHealth } from "@spt/models/eft/common/tables/IBotBase"; import { BodyPartHealth } from "@spt/models/eft/common/tables/IBotBase";
import { ICheckVersionResponse } from "@spt/models/eft/game/ICheckVersionResponse"; import { ICheckVersionResponse } from "@spt/models/eft/game/ICheckVersionResponse";
@ -357,7 +356,7 @@ export class GameController
continue; continue;
} }
const mapLooseLoot: ILooseLoot = this.databaseService.getLocation(mapId).looseLoot; const mapLooseLoot = this.databaseService.getLocation(mapId).looseLoot;
if (!mapLooseLoot) if (!mapLooseLoot)
{ {
this.logger.warning(this.localisationService.getText("location-map_has_no_loose_loot_data", mapId)); this.logger.warning(this.localisationService.getText("location-map_has_no_loose_loot_data", mapId));
@ -392,7 +391,7 @@ export class GameController
const adjustments = this.lootConfig.looseLootSpawnPointAdjustments; const adjustments = this.lootConfig.looseLootSpawnPointAdjustments;
for (const mapId in adjustments) for (const mapId in adjustments)
{ {
const mapLooseLootData: ILooseLoot = this.databaseService.getLocation(mapId).looseLoot; const mapLooseLootData = this.databaseService.getLocation(mapId).looseLoot;
if (!mapLooseLootData) if (!mapLooseLootData)
{ {
this.logger.warning(this.localisationService.getText("location-map_has_no_loose_loot_data", mapId)); this.logger.warning(this.localisationService.getText("location-map_has_no_loose_loot_data", mapId));

View File

@ -4,7 +4,6 @@ import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { QuestHelper } from "@spt/helpers/QuestHelper"; import { QuestHelper } from "@spt/helpers/QuestHelper";
import { RepeatableQuestHelper } from "@spt/helpers/RepeatableQuestHelper"; import { RepeatableQuestHelper } from "@spt/helpers/RepeatableQuestHelper";
import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData";
import { ILocationBase } from "@spt/models/eft/common/ILocationBase";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { import {
IChangeRequirement, IChangeRequirement,
@ -394,7 +393,7 @@ export class RepeatableQuestController
return true; return true;
} }
const locationBase: ILocationBase = this.databaseService.getLocation(location.toLowerCase()).base; const locationBase = this.databaseService.getLocation(location.toLowerCase()).base;
if (!locationBase) if (!locationBase)
{ {
return true; return true;

View File

@ -21,17 +21,17 @@ import { EquipmentFilterDetails, EquipmentFilters, IBotConfig } from "@spt/model
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 { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService";
import { BotEquipmentModPoolService } from "@spt/services/BotEquipmentModPoolService"; import { BotEquipmentModPoolService } from "@spt/services/BotEquipmentModPoolService";
import { BotWeaponModLimitService } from "@spt/services/BotWeaponModLimitService"; import { BotWeaponModLimitService } from "@spt/services/BotWeaponModLimitService";
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 { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil"; import { HashUtil } from "@spt/utils/HashUtil";
import { RandomUtil } from "@spt/utils/RandomUtil"; import { RandomUtil } from "@spt/utils/RandomUtil";
import { IFilterPlateModsForSlotByLevelResult, Result } from "../models/spt/bots/IFilterPlateModsForSlotByLevelResult";
import { IGenerateEquipmentProperties } from "./BotInventoryGenerator"; import { IGenerateEquipmentProperties } from "./BotInventoryGenerator";
import { IFilterPlateModsForSlotByLevelResult, Result } from "./IFilterPlateModsForSlotByLevelResult";
@injectable() @injectable()
export class BotEquipmentModGenerator export class BotEquipmentModGenerator
@ -43,7 +43,7 @@ export class BotEquipmentModGenerator
@inject("HashUtil") protected hashUtil: HashUtil, @inject("HashUtil") protected hashUtil: HashUtil,
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("ProbabilityHelper") protected probabilityHelper: ProbabilityHelper, @inject("ProbabilityHelper") protected probabilityHelper: ProbabilityHelper,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@inject("BotEquipmentFilterService") protected botEquipmentFilterService: BotEquipmentFilterService, @inject("BotEquipmentFilterService") protected botEquipmentFilterService: BotEquipmentFilterService,
@inject("ItemFilterService") protected itemFilterService: ItemFilterService, @inject("ItemFilterService") protected itemFilterService: ItemFilterService,
@ -514,7 +514,7 @@ export class BotEquipmentModGenerator
// However, the recursion doesn't go over the slots of the parent mod but over the modPool which is given by the bot config // However, the recursion doesn't go over the slots of the parent mod but over the modPool which is given by the bot config
// where we decided to keep cartridges instead of camoras. And since a CylinderMagazine only has one cartridge entry and // where we decided to keep cartridges instead of camoras. And since a CylinderMagazine only has one cartridge entry and
// this entry is not to be filled, we need a special handling for the CylinderMagazine // this entry is not to be filled, we need a special handling for the CylinderMagazine
const modParentItem = this.databaseServer.getTables().templates.items[modToAddTemplate._parent]; const modParentItem = this.databaseService.getItems()[modToAddTemplate._parent];
if (this.botWeaponGeneratorHelper.magazineIsCylinderRelated(modParentItem._name)) if (this.botWeaponGeneratorHelper.magazineIsCylinderRelated(modParentItem._name))
{ {
// We don't have child mods, we need to create the camoras for the magazines instead // We don't have child mods, we need to create the camoras for the magazines instead

View File

@ -25,8 +25,8 @@ import { IBotConfig } from "@spt/models/spt/config/IBotConfig";
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 { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService";
import { DatabaseService } from "@spt/services/DatabaseService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { SeasonalEventService } from "@spt/services/SeasonalEventService"; import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
@ -46,7 +46,7 @@ export class BotGenerator
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("TimeUtil") protected timeUtil: TimeUtil, @inject("TimeUtil") protected timeUtil: TimeUtil,
@inject("ProfileHelper") protected profileHelper: ProfileHelper, @inject("ProfileHelper") protected profileHelper: ProfileHelper,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("BotInventoryGenerator") protected botInventoryGenerator: BotInventoryGenerator, @inject("BotInventoryGenerator") protected botInventoryGenerator: BotInventoryGenerator,
@inject("BotLevelGenerator") protected botLevelGenerator: BotLevelGenerator, @inject("BotLevelGenerator") protected botLevelGenerator: BotLevelGenerator,
@inject("BotEquipmentFilterService") protected botEquipmentFilterService: BotEquipmentFilterService, @inject("BotEquipmentFilterService") protected botEquipmentFilterService: BotEquipmentFilterService,
@ -124,7 +124,7 @@ export class BotGenerator
*/ */
protected getCloneOfBotBase(): IBotBase protected getCloneOfBotBase(): IBotBase
{ {
return this.cloner.clone(this.databaseServer.getTables().bots.base); return this.cloner.clone(this.databaseService.getBots().base);
} }
/** /**
@ -243,9 +243,8 @@ export class BotGenerator
bot.Customization.Feet = this.weightedRandomHelper.getWeightedValue<string>(appearance.feet); bot.Customization.Feet = this.weightedRandomHelper.getWeightedValue<string>(appearance.feet);
bot.Customization.Hands = this.weightedRandomHelper.getWeightedValue<string>(appearance.hands); bot.Customization.Hands = this.weightedRandomHelper.getWeightedValue<string>(appearance.hands);
const tables = this.databaseServer.getTables(); const bodyGlobalDict = this.databaseService.getGlobals().config.Customization.SavageBody;
const bodyGlobalDict = tables.globals.config.Customization.SavageBody; const chosenBodyTemplate = this.databaseService.getCustomization()[bot.Customization.Body];
const chosenBodyTemplate = tables.templates.customization[bot.Customization.Body];
// Find the body/hands mapping // Find the body/hands mapping
const matchingBody: IWildBody = bodyGlobalDict[chosenBodyTemplate?._name]; const matchingBody: IWildBody = bodyGlobalDict[chosenBodyTemplate?._name];
@ -288,9 +287,10 @@ export class BotGenerator
return name; return name;
} }
const botTypes = this.databaseService.getBots().types; ;
const pmcNames = [ const pmcNames = [
...this.databaseServer.getTables().bots.types.usec.firstName, ...botTypes.usec.firstName,
...this.databaseServer.getTables().bots.types.bear.firstName, ...botTypes.bear.firstName,
]; ];
return `${name} (${this.randomUtil.getArrayValue(pmcNames)})`; return `${name} (${this.randomUtil.getArrayValue(pmcNames)})`;

View File

@ -19,8 +19,8 @@ import {
} from "@spt/models/spt/config/IBotConfig"; } from "@spt/models/spt/config/IBotConfig";
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 { BotEquipmentModPoolService } from "@spt/services/BotEquipmentModPoolService"; import { BotEquipmentModPoolService } from "@spt/services/BotEquipmentModPoolService";
import { DatabaseService } from "@spt/services/DatabaseService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { HashUtil } from "@spt/utils/HashUtil"; import { HashUtil } from "@spt/utils/HashUtil";
import { RandomUtil } from "@spt/utils/RandomUtil"; import { RandomUtil } from "@spt/utils/RandomUtil";
@ -34,7 +34,7 @@ export class BotInventoryGenerator
@inject("WinstonLogger") protected logger: ILogger, @inject("WinstonLogger") protected logger: ILogger,
@inject("HashUtil") protected hashUtil: HashUtil, @inject("HashUtil") protected hashUtil: HashUtil,
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("BotWeaponGenerator") protected botWeaponGenerator: BotWeaponGenerator, @inject("BotWeaponGenerator") protected botWeaponGenerator: BotWeaponGenerator,
@inject("BotLootGenerator") protected botLootGenerator: BotLootGenerator, @inject("BotLootGenerator") protected botLootGenerator: BotLootGenerator,
@inject("BotGeneratorHelper") protected botGeneratorHelper: BotGeneratorHelper, @inject("BotGeneratorHelper") protected botGeneratorHelper: BotGeneratorHelper,

View File

@ -4,7 +4,7 @@ import { IRandomisedBotLevelResult } from "@spt/models/eft/bot/IRandomisedBotLev
import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; import { IBotBase } from "@spt/models/eft/common/tables/IBotBase";
import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails";
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 { RandomUtil } from "@spt/utils/RandomUtil"; import { RandomUtil } from "@spt/utils/RandomUtil";
@injectable() @injectable()
@ -13,7 +13,7 @@ export class BotLevelGenerator
constructor( constructor(
@inject("WinstonLogger") protected logger: ILogger, @inject("WinstonLogger") protected logger: ILogger,
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
) )
{} {}
@ -30,7 +30,7 @@ export class BotLevelGenerator
bot: IBotBase, bot: IBotBase,
): IRandomisedBotLevelResult ): IRandomisedBotLevelResult
{ {
const expTable = this.databaseServer.getTables().globals.config.exp.level.exp_table; const expTable = this.databaseService.getGlobals().config.exp.level.exp_table;
const highestLevel = this.getHighestRelativeBotLevel(botGenerationDetails, levelDetails, expTable.length); const highestLevel = this.getHighestRelativeBotLevel(botGenerationDetails, levelDetails, expTable.length);
const lowestLevel = this.getLowestRelativeBotLevel(botGenerationDetails, levelDetails, expTable.length); const lowestLevel = this.getLowestRelativeBotLevel(botGenerationDetails, levelDetails, expTable.length);

View File

@ -20,8 +20,8 @@ import { IBotConfig } from "@spt/models/spt/config/IBotConfig";
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 { BotLootCacheService } from "@spt/services/BotLootCacheService"; import { BotLootCacheService } from "@spt/services/BotLootCacheService";
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 { HashUtil } from "@spt/utils/HashUtil"; import { HashUtil } from "@spt/utils/HashUtil";
@ -39,7 +39,7 @@ export class BotLootGenerator
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@inject("InventoryHelper") protected inventoryHelper: InventoryHelper, @inject("InventoryHelper") protected inventoryHelper: InventoryHelper,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("HandbookHelper") protected handbookHelper: HandbookHelper, @inject("HandbookHelper") protected handbookHelper: HandbookHelper,
@inject("BotGeneratorHelper") protected botGeneratorHelper: BotGeneratorHelper, @inject("BotGeneratorHelper") protected botGeneratorHelper: BotGeneratorHelper,
@inject("BotWeaponGenerator") protected botWeaponGenerator: BotWeaponGenerator, @inject("BotWeaponGenerator") protected botWeaponGenerator: BotWeaponGenerator,

View File

@ -20,8 +20,8 @@ import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig";
import { IRepairConfig } from "@spt/models/spt/config/IRepairConfig"; import { IRepairConfig } from "@spt/models/spt/config/IRepairConfig";
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 { BotWeaponModLimitService } from "@spt/services/BotWeaponModLimitService"; import { BotWeaponModLimitService } from "@spt/services/BotWeaponModLimitService";
import { DatabaseService } from "@spt/services/DatabaseService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { RepairService } from "@spt/services/RepairService"; import { RepairService } from "@spt/services/RepairService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
@ -39,7 +39,7 @@ export class BotWeaponGenerator
constructor( constructor(
@inject("WinstonLogger") protected logger: ILogger, @inject("WinstonLogger") protected logger: ILogger,
@inject("HashUtil") protected hashUtil: HashUtil, @inject("HashUtil") protected hashUtil: HashUtil,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@inject("WeightedRandomHelper") protected weightedRandomHelper: WeightedRandomHelper, @inject("WeightedRandomHelper") protected weightedRandomHelper: WeightedRandomHelper,
@inject("BotGeneratorHelper") protected botGeneratorHelper: BotGeneratorHelper, @inject("BotGeneratorHelper") protected botGeneratorHelper: BotGeneratorHelper,
@ -325,7 +325,7 @@ export class BotWeaponGenerator
// TODO: Right now, preset weapons trigger a lot of warnings regarding missing ammo in magazines & such // TODO: Right now, preset weapons trigger a lot of warnings regarding missing ammo in magazines & such
let preset: IPreset; let preset: IPreset;
for (const presetObj of Object.values(this.databaseServer.getTables().globals.ItemPresets)) for (const presetObj of Object.values(this.databaseService.getGlobals().ItemPresets))
{ {
if (presetObj._items[0]._tpl === weaponTpl) if (presetObj._items[0]._tpl === weaponTpl)
{ {

View File

@ -12,7 +12,7 @@ import { Traders } from "@spt/models/enums/Traders";
import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
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 { FenceService } from "@spt/services/FenceService"; import { FenceService } from "@spt/services/FenceService";
import { ItemFilterService } from "@spt/services/ItemFilterService"; import { ItemFilterService } from "@spt/services/ItemFilterService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
@ -27,7 +27,7 @@ export class FenceBaseAssortGenerator
constructor( constructor(
@inject("WinstonLogger") protected logger: ILogger, @inject("WinstonLogger") protected logger: ILogger,
@inject("HashUtil") protected hashUtil: HashUtil, @inject("HashUtil") protected hashUtil: HashUtil,
@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,
@ -47,7 +47,7 @@ export class FenceBaseAssortGenerator
public generateFenceBaseAssorts(): void public generateFenceBaseAssorts(): void
{ {
const blockedSeasonalItems = this.seasonalEventService.getInactiveSeasonalEventItems(); const blockedSeasonalItems = this.seasonalEventService.getInactiveSeasonalEventItems();
const baseFenceAssort = this.databaseServer.getTables().traders[Traders.FENCE].assort; const baseFenceAssort = this.databaseService.getTrader(Traders.FENCE).assort;
for (const rootItemDb of this.itemHelper.getItems().filter((item) => this.isValidFenceItem(item))) for (const rootItemDb of this.itemHelper.getItems().filter((item) => this.isValidFenceItem(item)))
{ {

View File

@ -4,7 +4,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper";
import { PresetHelper } from "@spt/helpers/PresetHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper";
import { import {
IContainerMinMax, IContainerMinMax,
ILocation,
IStaticAmmoDetails, IStaticAmmoDetails,
IStaticContainer, IStaticContainer,
IStaticContainerData, IStaticContainerData,
@ -20,7 +19,7 @@ import { Money } from "@spt/models/enums/Money";
import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig";
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 { SeasonalEventService } from "@spt/services/SeasonalEventService"; import { SeasonalEventService } from "@spt/services/SeasonalEventService";
import { ICloner } from "@spt/utils/cloners/ICloner"; import { ICloner } from "@spt/utils/cloners/ICloner";
@ -50,7 +49,7 @@ export class LocationGenerator
constructor( constructor(
@inject("WinstonLogger") protected logger: ILogger, @inject("WinstonLogger") protected logger: ILogger,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("ObjectId") protected objectId: ObjectId, @inject("ObjectId") protected objectId: ObjectId,
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@ -81,8 +80,7 @@ export class LocationGenerator
const result: SpawnpointTemplate[] = []; const result: SpawnpointTemplate[] = [];
const locationId = locationBase.Id.toLowerCase(); const locationId = locationBase.Id.toLowerCase();
const db = this.databaseServer.getTables(); const mapData = this.databaseService.getLocation(locationId);
const mapData: ILocation = db.locations[locationId];
const staticWeaponsOnMapClone = this.cloner.clone(mapData.staticContainers.staticWeapons); const staticWeaponsOnMapClone = this.cloner.clone(mapData.staticContainers.staticWeapons);
if (!staticWeaponsOnMapClone) if (!staticWeaponsOnMapClone)
@ -165,14 +163,13 @@ export class LocationGenerator
} }
// Group containers by their groupId // Group containers by their groupId
const staticContainerGroupData: IStaticContainer = db.locations[locationId].statics; if (!mapData.statics)
if (!staticContainerGroupData)
{ {
this.logger.warning(this.localisationService.getText("location-unable_to_generate_static_loot", locationId)); this.logger.warning(this.localisationService.getText("location-unable_to_generate_static_loot", locationId));
return result; return result;
} }
const mapping = this.getGroupIdToContainerMappings(staticContainerGroupData, staticRandomisableContainersOnMap); const mapping = this.getGroupIdToContainerMappings(mapData.statics, staticRandomisableContainersOnMap);
// For each of the container groups, choose from the pool of containers, hydrate container with loot and add to result array // For each of the container groups, choose from the pool of containers, hydrate container with loot and add to result array
for (const groupId in mapping) for (const groupId in mapping)

View File

@ -11,7 +11,7 @@ import { ISealedAirdropContainerSettings, RewardDetails } from "@spt/models/spt/
import { LootItem } from "@spt/models/spt/services/LootItem"; import { LootItem } from "@spt/models/spt/services/LootItem";
import { LootRequest } from "@spt/models/spt/services/LootRequest"; import { LootRequest } from "@spt/models/spt/services/LootRequest";
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 { ItemFilterService } from "@spt/services/ItemFilterService"; import { ItemFilterService } from "@spt/services/ItemFilterService";
import { LocalisationService } from "@spt/services/LocalisationService"; import { LocalisationService } from "@spt/services/LocalisationService";
import { RagfairLinkedItemService } from "@spt/services/RagfairLinkedItemService"; import { RagfairLinkedItemService } from "@spt/services/RagfairLinkedItemService";
@ -26,7 +26,7 @@ export class LootGenerator
constructor( constructor(
@inject("WinstonLogger") protected logger: ILogger, @inject("WinstonLogger") protected logger: ILogger,
@inject("HashUtil") protected hashUtil: HashUtil, @inject("HashUtil") protected hashUtil: HashUtil,
@inject("DatabaseServer") protected databaseServer: DatabaseServer, @inject("DatabaseService") protected databaseService: DatabaseService,
@inject("RandomUtil") protected randomUtil: RandomUtil, @inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("ItemHelper") protected itemHelper: ItemHelper, @inject("ItemHelper") protected itemHelper: ItemHelper,
@inject("PresetHelper") protected presetHelper: PresetHelper, @inject("PresetHelper") protected presetHelper: PresetHelper,
@ -49,7 +49,7 @@ export class LootGenerator
const itemTypeCounts = this.initItemLimitCounter(options.itemLimits); const itemTypeCounts = this.initItemLimitCounter(options.itemLimits);
const tables = this.databaseServer.getTables(); const itemsDb = this.databaseService.getItems();
const itemBlacklist = new Set<string>([ const itemBlacklist = new Set<string>([
...this.itemFilterService.getBlacklistedItems(), ...this.itemFilterService.getBlacklistedItems(),
...options.itemBlacklist, ...options.itemBlacklist,
@ -70,8 +70,8 @@ export class LootGenerator
if (desiredWeaponCrateCount > 0) if (desiredWeaponCrateCount > 0)
{ {
// Get list of all sealed containers from db // Get list of all sealed containers from db
const sealedWeaponContainerPool = Object.values(tables.templates.items).filter((x) => const sealedWeaponContainerPool = Object.values(itemsDb).filter((item) =>
x._name.includes("event_container_airdrop"), item._name.includes("event_container_airdrop"),
); );
for (let index = 0; index < desiredWeaponCrateCount; index++) for (let index = 0; index < desiredWeaponCrateCount; index++)
@ -88,12 +88,12 @@ export class LootGenerator
} }
// Get items from items.json that have a type of item + not in global blacklist + basetype is in whitelist // Get items from items.json that have a type of item + not in global blacklist + basetype is in whitelist
const items = Object.entries(tables.templates.items).filter( const items = Object.entries(itemsDb).filter(
(x) => (item) =>
!itemBlacklist.has(x[1]._id) !itemBlacklist.has(item[1]._id)
&& x[1]._type.toLowerCase() === "item" && item[1]._type.toLowerCase() === "item"
&& !x[1]._props.QuestItem && !item[1]._props.QuestItem
&& options.itemTypeWhitelist.includes(x[1]._parent), && options.itemTypeWhitelist.includes(item[1]._parent),
); );
if (items.length > 0) if (items.length > 0)
@ -490,13 +490,13 @@ export class LootGenerator
} }
// Get all items of the desired type + not quest items + not globally blacklisted // Get all items of the desired type + not quest items + not globally blacklisted
const rewardItemPool = Object.values(this.databaseServer.getTables().templates.items).filter( const rewardItemPool = Object.values(this.databaseService.getItems()).filter(
(x) => (item) =>
x._parent === rewardTypeId item._parent === rewardTypeId
&& x._type.toLowerCase() === "item" && item._type.toLowerCase() === "item"
&& !this.itemFilterService.isItemBlacklisted(x._id) && !this.itemFilterService.isItemBlacklisted(item._id)
&& !(containerSettings.allowBossItems || this.itemFilterService.isBossItem(x._id)) && !(containerSettings.allowBossItems || this.itemFilterService.isBossItem(item._id))
&& !x._props.QuestItem, && !item._props.QuestItem,
); );
if (rewardItemPool.length === 0) if (rewardItemPool.length === 0)