Updated various interfaces to use correct naming scheme

Added `IGroupPostion`
This commit is contained in:
Dev 2024-09-24 11:26:45 +01:00
parent 63774da653
commit 5fd9271491
40 changed files with 293 additions and 273 deletions

View File

@ -8,7 +8,7 @@ import { PreSptModLoader } from "@spt/loaders/PreSptModLoader";
import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData";
import { ILocation } from "@spt/models/eft/common/ILocation";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { BodyPartHealth } from "@spt/models/eft/common/tables/IBotBase";
import { IBodyPartHealth } from "@spt/models/eft/common/tables/IBotBase";
import { ICheckVersionResponse } from "@spt/models/eft/game/ICheckVersionResponse";
import { ICurrentGroupResponse } from "@spt/models/eft/game/ICurrentGroupResponse";
import { IGameConfigResponse } from "@spt/models/eft/game/IGameConfigResponse";
@ -669,7 +669,7 @@ export class GameController {
// Check all body parts
for (const bodyPartKey in pmcProfile.Health.BodyParts) {
const bodyPart = pmcProfile.Health.BodyParts[bodyPartKey] as BodyPartHealth;
const bodyPart = pmcProfile.Health.BodyParts[bodyPartKey] as IBodyPartHealth;
// Check part hp
if (bodyPart.Health.Current < bodyPart.Health.Maximum) {

View File

@ -6,7 +6,7 @@ import { PaymentHelper } from "@spt/helpers/PaymentHelper";
import { PresetHelper } from "@spt/helpers/PresetHelper";
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { HideoutArea, ITaskConditionCounter, Product, ScavCase } from "@spt/models/eft/common/tables/IBotBase";
import { IBotHideoutArea, IProduct, IScavCase, ITaskConditionCounter } from "@spt/models/eft/common/tables/IBotBase";
import { Item } from "@spt/models/eft/common/tables/IItem";
import { HideoutUpgradeCompleteRequestData } from "@spt/models/eft/hideout/HideoutUpgradeCompleteRequestData";
import { IHandleQTEEventRequestData } from "@spt/models/eft/hideout/IHandleQTEEventRequestData";
@ -270,7 +270,7 @@ export class HideoutController {
output: IItemEventRouterResponse,
sessionID: string,
pmcData: IPmcData,
profileParentHideoutArea: HideoutArea,
profileParentHideoutArea: IBotHideoutArea,
dbHideoutArea: IHideoutArea,
hideoutStage: Stage,
): void {
@ -553,7 +553,7 @@ export class HideoutController {
pmcData: IPmcData,
removeResourceRequest: IHideoutTakeItemOutRequestData,
output: IItemEventRouterResponse,
hideoutArea: HideoutArea,
hideoutArea: IBotHideoutArea,
): IItemEventRouterResponse {
const slotIndexToRemove = removeResourceRequest.slots[0];
@ -749,7 +749,7 @@ export class HideoutController {
* @param rewards reward items to add to profile
* @param recipeId recipe id to save into Production dict
*/
protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void {
protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void {
pmcData.Hideout.Production[`ScavCase${recipeId}`] = { Products: rewards };
}
@ -1085,7 +1085,7 @@ export class HideoutController {
for (const production of ongoingProductions) {
if (this.hideoutHelper.isProductionType(production[1])) {
// Production or ScavCase
if ((production[1] as ScavCase).RecipeId === request.recipeId) {
if ((production[1] as IScavCase).RecipeId === request.recipeId) {
prodId = production[0]; // Set to objects key
break;
}

View File

@ -1,5 +1,5 @@
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Note } from "@spt/models/eft/common/tables/IBotBase";
import { INote } from "@spt/models/eft/common/tables/IBotBase";
import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
import { INoteActionData } from "@spt/models/eft/notes/INoteActionData";
import { EventOutputHolder } from "@spt/routers/EventOutputHolder";
@ -10,14 +10,14 @@ export class NoteController {
constructor(@inject("EventOutputHolder") protected eventOutputHolder: EventOutputHolder) {}
public addNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse {
const newNote: Note = { Time: body.note.Time, Text: body.note.Text };
const newNote: INote = { Time: body.note.Time, Text: body.note.Text };
pmcData.Notes.Notes.push(newNote);
return this.eventOutputHolder.getOutput(sessionID);
}
public editNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse {
const noteToEdit: Note = pmcData.Notes.Notes[body.index];
const noteToEdit: INote = pmcData.Notes.Notes[body.index];
noteToEdit.Time = body.note.Time;
noteToEdit.Text = body.note.Text;

View File

@ -9,9 +9,9 @@ import {
IBaseJsonSkills,
IBaseSkill,
IBotBase,
Info,
Health as PmcHealth,
Skills as botSkills,
IInfo,
IHealth as PmcHealth,
ISkills as botSkills,
} from "@spt/models/eft/common/tables/IBotBase";
import { Appearance, BodyPart, Health, IBotType, Inventory } from "@spt/models/eft/common/tables/IBotType";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
@ -516,7 +516,7 @@ export class BotGenerator {
* @param botInfo bot info object to update
* @returns Chosen game version
*/
protected setRandomisedGameVersionAndCategory(botInfo: Info): string {
protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string {
// Special case
if (botInfo.Nickname?.toLowerCase() === "nikita") {
botInfo.GameVersion = GameEditions.UNHEARD;

View File

@ -5,7 +5,7 @@ import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper";
import { BotHelper } from "@spt/helpers/BotHelper";
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper";
import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase";
import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase";
import { Chances, Equipment, Generation, IBotType, Inventory } from "@spt/models/eft/common/tables/IBotType";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";
import { ConfigTypes } from "@spt/models/enums/ConfigTypes";

View File

@ -5,7 +5,7 @@ import { HandbookHelper } from "@spt/helpers/HandbookHelper";
import { InventoryHelper } from "@spt/helpers/InventoryHelper";
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper";
import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase";
import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase";
import { IBotType, Inventory, ModsChances } from "@spt/models/eft/common/tables/IBotType";
import { Item } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";

View File

@ -6,7 +6,7 @@ import { BotWeaponGeneratorHelper } from "@spt/helpers/BotWeaponGeneratorHelper"
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper";
import { IPreset } from "@spt/models/eft/common/IGlobals";
import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase";
import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase";
import { GenerationData, Inventory, ModsChances } from "@spt/models/eft/common/tables/IBotType";
import { Item } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";

View File

@ -10,7 +10,7 @@ import {
IStaticLootDetails,
} from "@spt/models/eft/common/ILocation";
import { ILocationBase } from "@spt/models/eft/common/ILocationBase";
import { ILooseLoot, Spawnpoint, SpawnpointTemplate, SpawnpointsForced } from "@spt/models/eft/common/ILooseLoot";
import { ILooseLoot, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot";
import { Item } from "@spt/models/eft/common/tables/IItem";
import { BaseClasses } from "@spt/models/enums/BaseClasses";
import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
@ -71,9 +71,9 @@ export class LocationLootGenerator {
public generateStaticContainers(
locationBase: ILocationBase,
staticAmmoDist: Record<string, IStaticAmmoDetails[]>,
): SpawnpointTemplate[] {
): ISpawnpointTemplate[] {
let staticLootItemCount = 0;
const result: SpawnpointTemplate[] = [];
const result: ISpawnpointTemplate[] = [];
const locationId = locationBase.Id.toLowerCase();
const mapData = this.databaseService.getLocation(locationId);
@ -575,9 +575,9 @@ export class LocationLootGenerator {
dynamicLootDist: ILooseLoot,
staticAmmoDist: Record<string, IStaticAmmoDetails[]>,
locationName: string,
): SpawnpointTemplate[] {
const loot: SpawnpointTemplate[] = [];
const dynamicForcedSpawnPoints: SpawnpointsForced[] = [];
): ISpawnpointTemplate[] {
const loot: ISpawnpointTemplate[] = [];
const dynamicForcedSpawnPoints: ISpawnpointsForced[] = [];
// Build the list of forced loot from both `spawnpointsForced` and any point marked `IsAlwaysSpawn`
dynamicForcedSpawnPoints.push(...dynamicLootDist.spawnpointsForced);
@ -598,10 +598,10 @@ export class LocationLootGenerator {
);
// Positions not in forced but have 100% chance to spawn
const guaranteedLoosePoints: Spawnpoint[] = [];
const guaranteedLoosePoints: ISpawnpoint[] = [];
const blacklistedSpawnpoints = this.locationConfig.looseLootBlacklist[locationName];
const spawnpointArray = new ProbabilityObjectArray<string, Spawnpoint>(this.mathUtil, this.cloner);
const spawnpointArray = new ProbabilityObjectArray<string, ISpawnpoint>(this.mathUtil, this.cloner);
for (const spawnpoint of allDynamicSpawnpoints) {
// Point is blacklsited, skip
@ -626,7 +626,7 @@ export class LocationLootGenerator {
// Select a number of spawn points to add loot to
// Add ALL loose loot with 100% chance to pool
let chosenSpawnpoints: Spawnpoint[] = [...guaranteedLoosePoints];
let chosenSpawnpoints: ISpawnpoint[] = [...guaranteedLoosePoints];
const randomSpawnpointCount = desiredSpawnpointCount - chosenSpawnpoints.length;
// Only draw random spawn points if needed
@ -732,8 +732,8 @@ export class LocationLootGenerator {
* @param locationName Name of map currently having force loot created for
*/
protected addForcedLoot(
lootLocationTemplates: SpawnpointTemplate[],
forcedSpawnPoints: SpawnpointsForced[],
lootLocationTemplates: ISpawnpointTemplate[],
forcedSpawnPoints: ISpawnpointsForced[],
locationName: string,
): void {
const lootToForceSingleAmountOnMap = this.locationConfig.forcedLootSingleSpawnById[locationName];
@ -752,7 +752,7 @@ export class LocationLootGenerator {
}
// Create probability array of all spawn positions for this spawn id
const spawnpointArray = new ProbabilityObjectArray<string, SpawnpointsForced>(
const spawnpointArray = new ProbabilityObjectArray<string, ISpawnpointsForced>(
this.mathUtil,
this.cloner,
);
@ -824,7 +824,7 @@ export class LocationLootGenerator {
*/
protected createDynamicLootItem(
chosenComposedKey: string,
spawnPoint: Spawnpoint,
spawnPoint: ISpawnpoint,
staticAmmoDist: Record<string, IStaticAmmoDetails[]>,
): IContainerItem {
const chosenItem = spawnPoint.template.Items.find((item) => item._id === chosenComposedKey);

View File

@ -4,7 +4,7 @@ import { BotHelper } from "@spt/helpers/BotHelper";
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { IBotBase, Settings, Skills, Stats } from "@spt/models/eft/common/tables/IBotBase";
import { IBotBase, IBotInfoSettings, ISkills, IStats } from "@spt/models/eft/common/tables/IBotBase";
import { IBotType } from "@spt/models/eft/common/tables/IBotType";
import { Item } from "@spt/models/eft/common/tables/IItem";
import { AccountTypes } from "@spt/models/enums/AccountTypes";
@ -89,7 +89,7 @@ export class PlayerScavGenerator {
scavData.savage = undefined;
scavData.aid = pmcDataClone.aid;
scavData.TradersInfo = pmcDataClone.TradersInfo;
scavData.Info.Settings = {} as Settings;
scavData.Info.Settings = {} as IBotInfoSettings;
scavData.Info.Bans = [];
scavData.Info.RegistrationDate = pmcDataClone.Info.RegistrationDate;
scavData.Info.GameVersion = pmcDataClone.Info.GameVersion;
@ -262,7 +262,7 @@ export class PlayerScavGenerator {
}
}
protected getScavSkills(scavProfile: IPmcData): Skills {
protected getScavSkills(scavProfile: IPmcData): ISkills {
if (scavProfile.Skills) {
return scavProfile.Skills;
}
@ -270,11 +270,11 @@ export class PlayerScavGenerator {
return this.getDefaultScavSkills();
}
protected getDefaultScavSkills(): Skills {
protected getDefaultScavSkills(): ISkills {
return { Common: [], Mastering: [], Points: 0 };
}
protected getScavStats(scavProfile: IPmcData): Stats {
protected getScavStats(scavProfile: IPmcData): IStats {
if (scavProfile.Stats) {
return scavProfile.Stats;
}

View File

@ -1,8 +1,8 @@
import { RepeatableQuestRewardGenerator } from "@spt/generators/RepeatableQuestRewardGenerator";
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { RepeatableQuestHelper } from "@spt/helpers/RepeatableQuestHelper";
import { Exit } from "@spt/models/eft/common/ILocationBase";
import { TraderInfo } from "@spt/models/eft/common/tables/IBotBase";
import { IExit } from "@spt/models/eft/common/ILocationBase";
import { ITraderInfo } from "@spt/models/eft/common/tables/IBotBase";
import { IQuestCondition, IQuestConditionCounterCondition } from "@spt/models/eft/common/tables/IQuest";
import { IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests";
import { BaseClasses } from "@spt/models/enums/BaseClasses";
@ -58,7 +58,7 @@ export class RepeatableQuestGenerator {
*/
public generateRepeatableQuest(
pmcLevel: number,
pmcTraderInfo: Record<string, TraderInfo>,
pmcTraderInfo: Record<string, ITraderInfo>,
questTypePool: IQuestTypePool,
repeatableConfig: IRepeatableQuestConfig,
): IRepeatableQuest {
@ -748,7 +748,7 @@ export class RepeatableQuestGenerator {
* @param playerSide Scav/Pmc
* @returns Array of Exit objects
*/
protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[] {
protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[] {
const mapExtracts = this.databaseService.getLocation(locationKey.toLocaleLowerCase()).allExtracts;
return mapExtracts.filter((exit) => exit.Side === playerSide);
@ -816,7 +816,7 @@ export class RepeatableQuestGenerator {
* @param {string} exit The exit name to generate the condition for
* @returns {object} Exit condition
*/
protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition {
protected generateExplorationExitCondition(exit: IExit): IQuestConditionCounterCondition {
return { conditionType: "ExitName", exitName: exit.Name, id: this.objectId.generate(), dynamicLocale: true };
}

View File

@ -1,4 +1,4 @@
import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { IInventory } from "@spt/models/eft/common/tables/IBotBase";
import { GenerationData } from "@spt/models/eft/common/tables/IBotType";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";
@ -8,7 +8,7 @@ export class InventoryMagGen {
private magazineTemplate: ITemplateItem,
private weaponTemplate: ITemplateItem,
private ammoTemplate: ITemplateItem,
private pmcInventory: Inventory,
private pmcInventory: IInventory,
) {}
public getMagCount(): GenerationData {
@ -27,7 +27,7 @@ export class InventoryMagGen {
return this.ammoTemplate;
}
public getPmcInventory(): Inventory {
public getPmcInventory(): IInventory {
return this.pmcInventory;
}
}

View File

@ -4,7 +4,7 @@ import { ContainerHelper } from "@spt/helpers/ContainerHelper";
import { DurabilityLimitsHelper } from "@spt/helpers/DurabilityLimitsHelper";
import { InventoryHelper } from "@spt/helpers/InventoryHelper";
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { IInventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Repairable, Upd } from "@spt/models/eft/common/tables/IItem";
import { Grid, ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";
import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData";
@ -412,7 +412,7 @@ export class BotGeneratorHelper {
rootItemId: string,
rootItemTplId: string,
itemWithChildren: Item[],
inventory: Inventory,
inventory: IInventory,
containersIdFull?: Set<string>,
): ItemAddedResult {
/** Track how many containers are unable to be found */

View File

@ -1,7 +1,7 @@
import { BotGeneratorHelper } from "@spt/helpers/BotGeneratorHelper";
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { IInventory } from "@spt/models/eft/common/tables/IBotBase";
import { GenerationData } from "@spt/models/eft/common/tables/IBotType";
import { Item } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";
@ -103,7 +103,7 @@ export class BotWeaponGeneratorHelper {
public addAmmoIntoEquipmentSlots(
ammoTpl: string,
cartridgeCount: number,
inventory: Inventory,
inventory: IInventory,
equipmentSlotsToAddTo: EquipmentSlots[] = [EquipmentSlots.TACTICAL_VEST, EquipmentSlots.POCKETS],
): void {
const ammoItems = this.itemHelper.splitStack({

View File

@ -1,5 +1,5 @@
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { BodyPartsHealth, Health } from "@spt/models/eft/common/tables/IBotBase";
import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase";
import { ISyncHealthRequestData } from "@spt/models/eft/health/ISyncHealthRequestData";
import { Effects, ISptProfile } from "@spt/models/eft/profile/ISptProfile";
import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
@ -74,7 +74,7 @@ export class HealthHelper {
*/
public updateProfileHealthPostRaid(
pmcData: IPmcData,
postRaidHealth: Health,
postRaidHealth: IHealth,
sessionID: string,
isDead: boolean,
): void {
@ -132,7 +132,7 @@ export class HealthHelper {
* @param postRaidBodyParts Post-raid body part data
* @param profileData Player profile on server
*/
protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: BodyPartsHealth, profileData: IPmcData): void {
protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void {
// Iterate over each body part
const effectsToIgnore = ["Dehydration", "Exhaustion"];
for (const bodyPartId in postRaidBodyParts) {

View File

@ -2,7 +2,7 @@ import { InventoryHelper } from "@spt/helpers/InventoryHelper";
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { HideoutArea, IHideoutImprovement, Production, Productive } from "@spt/models/eft/common/tables/IBotBase";
import { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IHideoutArea, StageBonus } from "@spt/models/eft/hideout/IHideoutArea";
import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData";
@ -126,7 +126,7 @@ export class HideoutHelper {
productionTime: number,
needFuelForAllProductionTime: boolean,
isCultistCircle = false,
): Production {
): IProduction {
return {
Progress: 0,
inProgress: true,
@ -148,8 +148,8 @@ export class HideoutHelper {
* @param productive
* @returns
*/
public isProductionType(productive: Productive): productive is Production {
return (productive as Production).Progress !== undefined || (productive as Production).RecipeId !== undefined;
public isProductionType(productive: IProductive): productive is IProduction {
return (productive as IProduction).Progress !== undefined || (productive as IProduction).RecipeId !== undefined;
}
/**
@ -231,7 +231,7 @@ export class HideoutHelper {
return hideoutProperties;
}
protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean {
protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean {
// Can put filters in from L3
if (waterCollector.level === 3) {
// Has filter in at least one slot
@ -396,7 +396,7 @@ export class HideoutHelper {
this.flagCultistCircleCraftAsComplete(production);
}
protected flagCultistCircleCraftAsComplete(production: Productive) {
protected flagCultistCircleCraftAsComplete(production: IProductive) {
// Craft is complete, flas as such
production.AvailableForFinish = true;
@ -465,7 +465,7 @@ export class HideoutHelper {
* @param pmcData Player profile
* @param isGeneratorOn Is the generator turned on since last update
*/
protected updateFuel(generatorArea: HideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void {
protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void {
// 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 =
@ -565,7 +565,7 @@ export class HideoutHelper {
protected updateWaterCollector(
sessionId: string,
pmcData: IPmcData,
area: HideoutArea,
area: IBotHideoutArea,
hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean },
): void {
// Skip water collector when not level 3 (cant collect until 3)
@ -670,8 +670,8 @@ export class HideoutHelper {
* @param pmcData Player profile
*/
protected updateWaterFilters(
waterFilterArea: HideoutArea,
production: Production,
waterFilterArea: IBotHideoutArea,
production: IProduction,
isGeneratorOn: boolean,
pmcData: IPmcData,
): void {
@ -837,7 +837,7 @@ export class HideoutHelper {
};
}
protected updateAirFilters(airFilterArea: HideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void {
protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void {
// 300 resources last 20 hrs, 300/20/60/60 = 0.00416
/* 10-10-2021 from WIKI (https://escapefromtarkov.fandom.com/wiki/FP-100_filter_absorber)
Lasts for 17 hours 38 minutes and 49 seconds (23 hours 31 minutes and 45 seconds with elite hideout management skill),
@ -891,7 +891,7 @@ export class HideoutHelper {
protected updateBitcoinFarm(
pmcData: IPmcData,
btcProduction: Productive,
btcProduction: IProductive,
btcFarmCGs: number,
isGeneratorOn: boolean,
): void {
@ -982,7 +982,7 @@ export class HideoutHelper {
* @param btcProd Bitcoin production object
* @param coinCraftTimeSeconds Time to craft a bitcoin
*/
protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void {
protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void {
btcProd.Products.push({
_id: this.hashUtil.generate(),
_tpl: ItemTpl.BARTER_PHYSICAL_BITCOIN,
@ -1113,8 +1113,8 @@ export class HideoutHelper {
return productionTime * skillTimeReductionMultipler;
}
public isProduction(productive: Productive): productive is Production {
return (productive as Production).Progress !== undefined || (productive as Production).RecipeId !== undefined;
public isProduction(productive: IProductive): productive is IProduction {
return (productive as IProduction).Progress !== undefined || (productive as IProduction).RecipeId !== undefined;
}
/**

View File

@ -6,7 +6,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { TraderAssortHelper } from "@spt/helpers/TraderAssortHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { IInventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Location, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
@ -345,7 +345,7 @@ export class InventoryHelper {
stashFS2D: number[][],
sortingTableFS2D: number[][],
itemWithChildren: Item[],
playerInventory: Inventory,
playerInventory: IInventory,
useSortingTable: boolean,
output: IItemEventRouterResponse,
): void {

View File

@ -1,6 +1,6 @@
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { BanType, Common, CounterKeyValue, Stats } from "@spt/models/eft/common/tables/IBotBase";
import { BanType, Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase";
import { ISptProfile } from "@spt/models/eft/profile/ISptProfile";
import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData";
import { AccountTypes } from "@spt/models/enums/AccountTypes";
@ -276,7 +276,7 @@ export class ProfileHelper {
* Get baseline counter values for a fresh profile
* @returns Default profile Stats object
*/
public getDefaultCounters(): Stats {
public getDefaultCounters(): IStats {
return {
Eft: {
CarriedQuestItems: [],
@ -388,7 +388,7 @@ export class ProfileHelper {
* @param counters Counters to search for key
* @param keyToIncrement Key
*/
public incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void {
public incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void {
const stat = counters.find((x) => x.Key.includes(keyToIncrement));
if (stat) {
stat.Value++;

View File

@ -1,5 +1,5 @@
import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase";
import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot";
import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase";
import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot";
import { Ixyz } from "@spt/models/eft/common/Ixyz";
import { Item } from "@spt/models/eft/common/tables/IItem";
@ -16,7 +16,7 @@ export interface ILocation {
/** All possible static containers on map + their assign groupings */
statics: IStaticContainer;
/** All possible map extracts */
allExtracts: Exit[];
allExtracts: IExit[];
}
export interface IStaticContainer {
@ -59,9 +59,9 @@ export interface IStaticPropsBase {
Rotation: Ixyz;
IsGroupPosition: boolean;
IsAlwaysSpawn: boolean;
GroupPositions: any[];
GroupPositions: IGroupPostion[];
Root: string;
Items: any[];
Items: Item[];
}
export interface IStaticWeaponProps extends IStaticPropsBase {
@ -90,10 +90,10 @@ export interface IStaticForcedProps {
}
export interface IStaticContainerProps extends IStaticPropsBase {
Items: StaticItem[];
Items: IStaticItem[];
}
export interface StaticItem {
export interface IStaticItem {
_id: string;
_tpl: string;
}

View File

@ -1,19 +1,20 @@
import { MinMax } from "@spt/models/common/MinMax";
import { Ixyz } from "@spt/models/eft/common/Ixyz";
import { ISpawnpointTemplate } from "./ILooseLoot";
export interface ILocationBase {
AccessKeys: string[];
AirdropParameters: AirdropParameter[];
AirdropParameters: IAirdropParameter[];
Area: number;
AveragePlayTime: number;
AveragePlayerLevel: number;
Banners: Banner[];
BossLocationSpawn: BossLocationSpawn[];
Banners: IBanner[];
BossLocationSpawn: IBossLocationSpawn[];
BotAssault: number;
BotEasy: number;
BotHard: number;
BotImpossible: number;
BotLocationModifier: BotLocationModifier;
BotLocationModifier: IBotLocationModifier;
BotMarksman: number;
BotMax: number;
BotMaxPlayer: number;
@ -42,14 +43,14 @@ export interface ILocationBase {
Insurance: boolean;
IsSecret: boolean;
Locked: boolean;
Loot: any[];
MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[];
Loot: ISpawnpointTemplate[];
MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[];
MaxBotPerZone: number;
MaxDistToFreePoint: number;
MaxPlayers: number;
MinDistToExitPoint: number;
MinDistToFreePoint: number;
MinMaxBots: MinMaxBot[];
MinMaxBots: IMinMaxBot[];
MinPlayers: number;
MaxCoopGroup: number;
Name: string;
@ -58,7 +59,7 @@ export interface ILocationBase {
OcculsionCullingEnabled: boolean;
OldSpawn: boolean;
OpenZones: string;
Preview: Preview;
Preview: IPreview;
PlayersRequestCount: number;
RequiredPlayerLevel?: number;
RequiredPlayerLevelMin?: number;
@ -68,8 +69,8 @@ export interface ILocationBase {
ScavMaxPlayersInGroup: number;
Rules: string;
SafeLocation: boolean;
Scene: Scene;
SpawnPointParams: SpawnPointParam[];
Scene: IScene;
SpawnPointParams: ISpawnPointParam[];
UnixDateTime: number;
_Id: string;
doors: any[];
@ -80,12 +81,12 @@ export interface ILocationBase {
ForceOnlineRaidInPVE: boolean;
exit_count: number;
exit_time: number;
exits: Exit[];
exits: IExit[];
filter_ex: string[];
limits: ILimit[];
matching_min_seconds: number;
GenerateLocalLootCache: boolean;
maxItemCountInLocation: MaxItemCountInLocation[];
maxItemCountInLocation: IMaxItemCountInLocation[];
sav_summon_seconds: number;
tmp_location_field_remove_me: number;
transits: ITransit[];
@ -93,7 +94,7 @@ export interface ILocationBase {
users_spawn_seconds_n: number;
users_spawn_seconds_n2: number;
users_summon_seconds: number;
waves: Wave[];
waves: IWave[];
}
export interface ITransit {
@ -118,7 +119,7 @@ export interface ILimit extends MinMax {
items: any[];
}
export interface AirdropParameter {
export interface IAirdropParameter {
AirdropPointDeactivateDistance: number;
MinPlayersCountToSpawnAirdrop: number;
PlaneAirdropChance: number;
@ -131,17 +132,17 @@ export interface AirdropParameter {
UnsuccessfulTryPenalty: number;
}
export interface Banner {
export interface IBanner {
id: string;
pic: Pic;
pic: IPic;
}
export interface Pic {
export interface IPic {
path: string;
rcid: string;
}
export interface BossLocationSpawn {
export interface IBossLocationSpawn {
BossChance: number;
BossDifficult: string;
BossEscortAmount: string;
@ -159,18 +160,18 @@ export interface BossLocationSpawn {
DependKarmaPVE?: boolean;
ForceSpawn?: boolean;
IgnoreMaxBots?: boolean;
Supports?: BossSupport[];
Supports?: IBossSupport[];
sptId?: string;
spawnMode: string[];
}
export interface BossSupport {
export interface IBossSupport {
BossEscortAmount: string;
BossEscortDifficult: string[];
BossEscortType: string;
}
export interface BotLocationModifier {
export interface IBotLocationModifier {
AccuracySpeed: number;
AdditionalHostilitySettings: IAdditionalHostilitySettings[];
DistToActivate: number;
@ -208,29 +209,29 @@ export interface IChancedEnemy {
Role: string;
}
export interface MinMaxBot extends MinMax {
export interface IMinMaxBot extends MinMax {
WildSpawnType: WildSpawnType | string;
}
export interface MinPlayerWaitTime {
export interface IMinPlayerWaitTime {
minPlayers: number;
time: number;
}
export interface Preview {
export interface IPreview {
path: string;
rcid: string;
}
export interface Scene {
export interface IScene {
path: string;
rcid: string;
}
export interface SpawnPointParam {
export interface ISpawnPointParam {
BotZoneName: string;
Categories: string[];
ColliderParams: ColliderParams;
ColliderParams: IColliderParams;
CorePointId: number;
DelayToCanSpawnSec: number;
Id: string;
@ -240,17 +241,17 @@ export interface SpawnPointParam {
Sides: string[];
}
export interface ColliderParams {
export interface IColliderParams {
_parent: string;
_props: Props;
_props: IProps;
}
export interface Props {
export interface IProps {
Center: Ixyz;
Radius: number;
}
export interface Exit {
export interface IExit {
/** % Chance out of 100 exit will appear in raid */
Chance: number;
ChancePVE: number;
@ -275,12 +276,12 @@ export interface Exit {
Side?: string;
}
export interface MaxItemCountInLocation {
export interface IMaxItemCountInLocation {
TemplateId: string;
Value: number;
}
export interface Wave {
export interface IWave {
BotPreset: string;
BotSide: string;
SpawnPoints: string;
@ -300,4 +301,6 @@ export enum WildSpawnType {
ASSAULT = "assault",
MARKSMAN = "marksman",
PMCBOT = "pmcbot",
BOSSKILLA = "bosskilla",
BOSSKNIGHT = "bossknight",
}

View File

@ -2,10 +2,10 @@ import { ILocations } from "@spt/models/spt/server/ILocations";
export interface ILocationsGenerateAllResponse {
locations: ILocations;
paths: Path[];
paths: IPath[];
}
export interface Path {
export interface IPath {
Source: string;
Destination: string;
}

View File

@ -2,23 +2,23 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz";
import { Item } from "@spt/models/eft/common/tables/IItem";
export interface ILooseLoot {
spawnpointCount: SpawnpointCount;
spawnpointsForced: SpawnpointsForced[];
spawnpoints: Spawnpoint[];
spawnpointCount: ISpawnpointCount;
spawnpointsForced: ISpawnpointsForced[];
spawnpoints: ISpawnpoint[];
}
export interface SpawnpointCount {
export interface ISpawnpointCount {
mean: number;
std: number;
}
export interface SpawnpointsForced {
export interface ISpawnpointsForced {
locationId: string;
probability: number;
template: SpawnpointTemplate;
template: ISpawnpointTemplate;
}
export interface SpawnpointTemplate {
export interface ISpawnpointTemplate {
Id: string;
IsContainer: boolean;
useGravity: boolean;
@ -27,23 +27,30 @@ export interface SpawnpointTemplate {
Rotation: Ixyz;
IsAlwaysSpawn: boolean;
IsGroupPosition: boolean;
GroupPositions: any[];
GroupPositions: IGroupPostion[];
Root: string;
Items: Item[];
}
export interface Spawnpoint {
export interface IGroupPostion {
Name: string;
Weight: number;
Postion: Ixyz;
Rotation: Ixyz;
}
export interface ISpawnpoint {
locationId: string;
probability: number;
template: SpawnpointTemplate;
template: ISpawnpointTemplate;
itemDistribution: ItemDistribution[];
}
export interface ItemDistribution {
composedKey: ComposedKey;
composedKey: IComposedKey;
relativeProbability: number;
}
export interface ComposedKey {
export interface IComposedKey {
key: string;
}

View File

@ -14,25 +14,25 @@ export interface IBotBase {
sessionId: string;
savage?: string;
karmaValue: number;
Info: Info;
Customization: Customization;
Health: Health;
Inventory: Inventory;
Skills: Skills;
Stats: Stats;
Info: IInfo;
Customization: ICustomization;
Health: IHealth;
Inventory: IInventory;
Skills: ISkills;
Stats: IStats;
Encyclopedia: Record<string, boolean>;
TaskConditionCounters: Record<string, ITaskConditionCounter>;
InsuredItems: IInsuredItem[];
Hideout: Hideout;
Hideout: IHideout;
Quests: IQuestStatus[];
TradersInfo: Record<string, TraderInfo>;
TradersInfo: Record<string, ITraderInfo>;
UnlockedInfo: IUnlockedInfo;
RagfairInfo: RagfairInfo;
RagfairInfo: IRagfairInfo;
/** Achievement id and timestamp */
Achievements: Record<string, number>;
RepeatableQuests: IPmcDataRepeatableQuest[];
Bonuses: Bonus[];
Notes: Notes;
Bonuses: IBonus[];
Notes: INotes;
CarExtractCounts: Record<string, number>;
CoopExtractCounts: Record<string, number>;
SurvivorClass: SurvivorClass;
@ -63,7 +63,7 @@ export interface IUnlockedInfo {
unlockedProductionRecipe: string[];
}
export interface Info {
export interface IInfo {
EntryPoint: string;
Nickname: string;
LowerNickname: string;
@ -82,19 +82,19 @@ export interface Info {
lockedMoveCommands: boolean;
SavageLockTime: number;
LastTimePlayedAsSavage: number;
Settings: Settings;
Settings: IBotInfoSettings;
NicknameChangeDate: number;
NeedWipeOptions: any[];
lastCompletedWipe: LastCompleted;
lastCompletedWipe: ILastCompleted;
Bans: IBan[];
BannedState: boolean;
BannedUntil: number;
IsStreamerModeAvailable: boolean;
lastCompletedEvent?: LastCompleted;
lastCompletedEvent?: ILastCompleted;
isMigratedSkills: boolean;
}
export interface Settings {
export interface IBotInfoSettings {
Role: string;
BotDifficulty: string;
Experience: number;
@ -117,48 +117,48 @@ export enum BanType {
CHANGE_NICKNAME = 6,
}
export interface Customization {
export interface ICustomization {
Head: string;
Body: string;
Feet: string;
Hands: string;
}
export interface Health {
Hydration: CurrentMax;
Energy: CurrentMax;
Temperature: CurrentMax;
BodyParts: BodyPartsHealth;
export interface IHealth {
Hydration: ICurrentMax;
Energy: ICurrentMax;
Temperature: ICurrentMax;
BodyParts: IBodyPartsHealth;
UpdateTime: number;
Immortal?: boolean;
}
export interface BodyPartsHealth {
Head: BodyPartHealth;
Chest: BodyPartHealth;
Stomach: BodyPartHealth;
LeftArm: BodyPartHealth;
RightArm: BodyPartHealth;
LeftLeg: BodyPartHealth;
RightLeg: BodyPartHealth;
export interface IBodyPartsHealth {
Head: IBodyPartHealth;
Chest: IBodyPartHealth;
Stomach: IBodyPartHealth;
LeftArm: IBodyPartHealth;
RightArm: IBodyPartHealth;
LeftLeg: IBodyPartHealth;
RightLeg: IBodyPartHealth;
}
export interface BodyPartHealth {
Health: CurrentMax;
Effects?: Record<string, BodyPartEffectProperties>;
export interface IBodyPartHealth {
Health: ICurrentMax;
Effects?: Record<string, IBodyPartEffectProperties>;
}
export interface BodyPartEffectProperties {
export interface IBodyPartEffectProperties {
ExtraData?: any;
Time: number;
}
export interface CurrentMax {
export interface ICurrentMax {
Current: number;
Maximum: number;
}
export interface Inventory {
export interface IInventory {
items: Item[];
equipment: string;
stash: string;
@ -173,13 +173,13 @@ export interface Inventory {
export interface IBaseJsonSkills {
Common: Record<string, Common>;
Mastering: Record<string, Mastering>;
Mastering: Record<string, IMastering>;
Points: number;
}
export interface Skills {
export interface ISkills {
Common: Common[];
Mastering: Mastering[];
Mastering: IMastering[];
Points: number;
}
@ -195,27 +195,27 @@ export interface Common extends IBaseSkill {
LastAccess?: number;
}
export interface Mastering extends IBaseSkill {}
export interface IMastering extends IBaseSkill {}
export interface Stats {
export interface IStats {
Eft?: IEftStats;
}
export interface IEftStats {
CarriedQuestItems: string[];
Victims: Victim[];
Victims: IVictim[];
TotalSessionExperience: number;
LastSessionDate: number;
SessionCounters: SessionCounters;
OverallCounters: OverallCounters;
SessionCounters: ISessionCounters;
OverallCounters: IOverallCounters;
SessionExperienceMult?: number;
ExperienceBonusMult?: number;
Aggressor?: Aggressor;
Aggressor?: IAggressor;
DroppedItems?: IDroppedItem[];
FoundInRaidItems?: FoundInRaidItem[];
DamageHistory?: DamageHistory;
DeathCause?: DeathCause;
LastPlayerState?: LastPlayerState;
FoundInRaidItems?: IFoundInRaidItem[];
DamageHistory?: IDamageHistory;
DeathCause?: IDeathCause;
LastPlayerState?: ILastPlayerState;
TotalInGameTime: number;
SurvivorClass?: string;
sptLastRaidFenceRepChange?: number;
@ -227,12 +227,12 @@ export interface IDroppedItem {
ZoneId: string;
}
export interface FoundInRaidItem {
export interface IFoundInRaidItem {
QuestId: string;
ItemId: string;
}
export interface Victim {
export interface IVictim {
AccountId: string;
ProfileId: string;
Name: string;
@ -245,20 +245,20 @@ export interface Victim {
Role: string;
}
export interface SessionCounters {
Items: CounterKeyValue[];
export interface ISessionCounters {
Items: ICounterKeyValue[];
}
export interface OverallCounters {
Items: CounterKeyValue[];
export interface IOverallCounters {
Items: ICounterKeyValue[];
}
export interface CounterKeyValue {
export interface ICounterKeyValue {
Key: string[];
Value: number;
}
export interface Aggressor {
export interface IAggressor {
AccountId: string;
ProfileId: string;
MainProfileNickname: string;
@ -270,13 +270,13 @@ export interface Aggressor {
Category: string;
}
export interface DamageHistory {
export interface IDamageHistory {
LethalDamagePart: string;
LethalDamage: LethalDamage;
BodyParts: BodyPartsDamageHistory;
LethalDamage: ILethalDamage;
BodyParts: IBodyPartsDamageHistory;
}
export interface LethalDamage {
export interface ILethalDamage {
Amount: number;
Type: string;
SourceId: string;
@ -285,18 +285,18 @@ export interface LethalDamage {
ImpactsCount: number;
}
export interface BodyPartsDamageHistory {
Head: DamageStats[];
Chest: DamageStats[];
Stomach: DamageStats[];
LeftArm: DamageStats[];
RightArm: DamageStats[];
LeftLeg: DamageStats[];
RightLeg: DamageStats[];
Common: DamageStats[];
export interface IBodyPartsDamageHistory {
Head: IDamageStats[];
Chest: IDamageStats[];
Stomach: IDamageStats[];
LeftArm: IDamageStats[];
RightArm: IDamageStats[];
LeftLeg: IDamageStats[];
RightLeg: IDamageStats[];
Common: IDamageStats[];
}
export interface DamageStats {
export interface IDamageStats {
Amount: number;
Type: string;
SourceId: string;
@ -305,27 +305,27 @@ export interface DamageStats {
ImpactsCount: number;
}
export interface DeathCause {
export interface IDeathCause {
DamageType: string;
Side: string;
Role: string;
WeaponId: string;
}
export interface LastPlayerState {
Info: LastPlayerStateInfo;
export interface ILastPlayerState {
Info: ILastPlayerStateInfo;
Customization: Record<string, string>;
Equipment: any;
}
export interface LastPlayerStateInfo {
export interface ILastPlayerStateInfo {
Nickname: string;
Side: string;
Level: number;
MemberCategory: MemberCategory;
}
export interface BackendCounter {
export interface IBackendCounter {
id: string;
qid?: string;
value: number;
@ -337,9 +337,9 @@ export interface IInsuredItem {
itemId: string;
}
export interface Hideout {
Production: Record<string, Productive>;
Areas: HideoutArea[];
export interface IHideout {
Production: Record<string, IProductive>;
Areas: IBotHideoutArea[];
Improvements: Record<string, IHideoutImprovement>;
HideoutCounters: IHideoutCounters;
Seed: number;
@ -359,8 +359,8 @@ export interface IHideoutImprovement {
improveCompleteTimestamp: number;
}
export interface Productive {
Products: Product[];
export interface IProductive {
Products: IProduct[];
/** Seconds passed of production */
Progress?: number;
/** Is craft in some state of being worked on by client (crafting/ready to pick up) */
@ -389,23 +389,23 @@ export interface Productive {
sptIsCultistCircle?: boolean;
}
export interface Production extends Productive {
export interface IProduction extends IProductive {
RecipeId: string;
SkipTime: number;
ProductionTime: number;
}
export interface ScavCase extends Productive {
export interface IScavCase extends IProductive {
RecipeId: string;
}
export interface Product {
export interface IProduct {
_id: string;
_tpl: string;
upd?: Upd;
}
export interface HideoutArea {
export interface IBotHideoutArea {
type: HideoutAreas;
level: number;
active: boolean;
@ -413,28 +413,28 @@ export interface HideoutArea {
/** Must be integer */
completeTime: number;
constructing: boolean;
slots: HideoutSlot[];
slots: IHideoutSlot[];
lastRecipe: string;
}
export interface HideoutSlot {
export interface IHideoutSlot {
/** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */
locationIndex: number;
item?: HideoutItem[];
item?: IHideoutItem[];
}
export interface HideoutItem {
export interface IHideoutItem {
_id: string;
_tpl: string;
upd?: Upd;
}
export interface LastCompleted {
export interface ILastCompleted {
$oid: string;
}
export interface Notes {
Notes: Note[];
export interface INotes {
Notes: INote[];
}
export type CarExtractCounts = {};
@ -457,7 +457,7 @@ export interface IQuestStatus {
availableAfter?: number;
}
export interface TraderInfo {
export interface ITraderInfo {
loyaltyLevel?: number;
salesSum: number;
standing: number;
@ -466,13 +466,13 @@ export interface TraderInfo {
disabled: boolean;
}
export interface RagfairInfo {
export interface IRagfairInfo {
rating: number;
isRatingGrowing: boolean;
offers: IRagfairOffer[];
}
export interface Bonus {
export interface IBonus {
id?: string;
type: BonusType;
templateId?: string;
@ -485,7 +485,7 @@ export interface Bonus {
skillType?: BonusSkillType;
}
export interface Note {
export interface INote {
Time: number;
Text: string;
}

View File

@ -1,5 +1,5 @@
import { MinMax } from "@spt/models/common/MinMax";
import { Skills } from "@spt/models/eft/common/tables/IBotBase";
import { ISkills } from "@spt/models/eft/common/tables/IBotBase";
export interface IBotType {
appearance: Appearance;
@ -11,7 +11,7 @@ export interface IBotType {
health: Health;
inventory: Inventory;
lastName: string[];
skills: Skills;
skills: ISkills;
}
export interface Appearance {

View File

@ -1,4 +1,10 @@
import { Health, IMoneyTransferLimits, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase";
import {
IHealth,
IMoneyTransferLimits,
IProductive,
IQuestStatus,
ISkills,
} from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IQuest } from "@spt/models/eft/common/tables/IQuest";
import { IPmcDataRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests";
@ -27,11 +33,11 @@ export interface ProfileChange {
weaponBuilds: IWeaponBuildChange[];
equipmentBuilds: IEquipmentBuildChange[];
items: ItemChanges;
production: Record<string, Productive>;
production: Record<string, IProductive>;
/** Hideout area improvement id */
improvements: Record<string, Improvement>;
skills: Skills;
health: Health;
skills: ISkills;
health: IHealth;
traderRelations: Record<string, TraderData>;
moneyTransferLimitData: IMoneyTransferLimits;
repeatableQuests?: IPmcDataRepeatableQuest[];

View File

@ -1,4 +1,4 @@
import { Skills } from "@spt/models/eft/common/tables/IBotBase";
import { ISkills } from "@spt/models/eft/common/tables/IBotBase";
export interface IPlayerIncrementSkillLevelRequestData {
_id: string;
@ -8,7 +8,7 @@ export interface IPlayerIncrementSkillLevelRequestData {
builds: any[];
items: Items;
production: Production;
skills: Skills;
skills: ISkills;
traderRelations: TraderRelations;
}

View File

@ -1,4 +1,4 @@
import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase";
import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase";
import { Item } from "@spt/models/eft/common/tables/IItem";
export interface IGetOtherProfileResponse {
@ -6,7 +6,7 @@ export interface IGetOtherProfileResponse {
aid: number;
info: IOtherProfileInfo;
customization: IOtherProfileCustomization;
skills: Skills;
skills: ISkills;
equipment: IOtherProfileEquipment;
achievements: Record<string, number>;
favoriteItems: Item[];
@ -42,5 +42,5 @@ export interface IOtherProfileStats {
export interface IOtherProfileSubStats {
totalInGameTime: number;
overAllCounters: OverallCounters;
overAllCounters: IOverallCounters;
}

View File

@ -1,4 +1,4 @@
import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase";
import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase";
import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType";
import { EquipmentFilters, RandomisationDetails } from "@spt/models/spt/config/IBotConfig";

View File

@ -1,5 +1,5 @@
import { MinMax } from "@spt/models/common/MinMax";
import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase";
import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase";
import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig";
export interface ILocationConfig extends IBaseConfig {
@ -10,10 +10,10 @@ export interface ILocationConfig extends IBaseConfig {
rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings;
/** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */
splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings;
looseLootMultiplier: LootMultiplier;
staticLootMultiplier: LootMultiplier;
looseLootMultiplier: ILootMultiplier;
staticLootMultiplier: ILootMultiplier;
/** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */
customWaves: CustomWaves;
customWaves: ICustomWaves;
/** Open zones to add to map */
openZones: Record<string, string[]>;
/** Key = map id, value = item tpls that should only have one forced loot spawn position */
@ -68,10 +68,10 @@ export interface ISplitWaveSettings {
waveSizeThreshold: number;
}
export interface CustomWaves {
export interface ICustomWaves {
/** Bosses spawn on raid start */
boss: Record<string, BossLocationSpawn[]>;
normal: Record<string, Wave[]>;
boss: Record<string, IBossLocationSpawn[]>;
normal: Record<string, IWave[]>;
}
export interface IBotTypeLimit extends MinMax {
@ -79,7 +79,7 @@ export interface IBotTypeLimit extends MinMax {
}
/** Multiplier to apply to the loot count for a given map */
export interface LootMultiplier {
export interface ILootMultiplier {
bigmap: number;
develop: number;
factory4_day: number;

View File

@ -1,10 +1,10 @@
import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot";
import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot";
import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig";
export interface ILootConfig extends IBaseConfig {
kind: "spt-loot";
/** Spawn positions to add into a map, key=mapid */
looseLoot: Record<string, Spawnpoint[]>;
looseLoot: Record<string, ISpawnpoint[]>;
/** Loose loot probability adjustments to apply on game start */
looseLootSpawnPointAdjustments: Record<string, Record<string, number>>;
}

View File

@ -1,4 +1,4 @@
import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase";
import { IBossLocationSpawn } from "@spt/models/eft/common/ILocationBase";
import { SeasonalEventType } from "@spt/models/enums/SeasonalEventType";
import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig";
@ -9,7 +9,7 @@ export interface ISeasonalEventConfig extends IBaseConfig {
eventGear: Record<string, Record<string, Record<string, Record<string, number>>>>;
events: ISeasonalEvent[];
eventBotMapping: Record<string, string>;
eventBossSpawns: Record<string, Record<string, BossLocationSpawn[]>>;
eventBossSpawns: Record<string, Record<string, IBossLocationSpawn[]>>;
gifterSettings: GifterSetting[];
}

View File

@ -1,4 +1,4 @@
import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase";
import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase";
import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType";
export interface IBotGenerator {

View File

@ -4,7 +4,7 @@ import {
IStaticForcedProps,
IStaticLootDetails,
} from "@spt/models/eft/common/ILocation";
import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot";
import { ILooseLoot, ISpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot";
export interface ILocationGenerator {
generateContainerLoot(
@ -18,5 +18,5 @@ export interface ILocationGenerator {
dynamicLootDist: ILooseLoot,
staticAmmoDist: Record<string, IStaticAmmoDetails[]>,
locationName: string,
): SpawnpointTemplate[];
): ISpawnpointTemplate[];
}

View File

@ -3,8 +3,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import {
IHideoutImprovement,
IMoneyTransferLimits,
Productive,
TraderInfo,
IProductive,
ITraderInfo,
} from "@spt/models/eft/common/tables/IBotBase";
import { ProfileChange, TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase";
import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
@ -103,7 +103,7 @@ export class EventOutputHolder {
* @param traderData server data for traders
* @returns dict of trader id + TraderData
*/
protected constructTraderRelations(traderData: Record<string, TraderInfo>): Record<string, TraderData> {
protected constructTraderRelations(traderData: Record<string, ITraderInfo>): Record<string, TraderData> {
const result: Record<string, TraderData> = {};
for (const traderId in traderData) {
@ -148,9 +148,9 @@ export class EventOutputHolder {
* @returns dictionary of hideout productions
*/
protected getProductionsFromProfileAndFlagComplete(
productions: Record<string, Productive>,
productions: Record<string, IProductive>,
sessionId: string,
): Record<string, Productive> | undefined {
): Record<string, IProductive> | undefined {
for (const productionKey in productions) {
const production = productions[productionKey];
if (!production) {
@ -196,7 +196,7 @@ export class EventOutputHolder {
* Required as continuous productions don't reset and stay at 100% completion but client thinks it hasn't started
* @param productions Productions in a profile
*/
protected cleanUpCompleteCraftsInProfile(productions: Record<string, Productive>): void {
protected cleanUpCompleteCraftsInProfile(productions: Record<string, IProductive>): void {
for (const productionKey in productions) {
const production = productions[productionKey];
if (production?.sptIsComplete && production?.sptIsContinuous) {

View File

@ -4,7 +4,7 @@ import { ItemHelper } from "@spt/helpers/ItemHelper";
import { PresetHelper } from "@spt/helpers/PresetHelper";
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { HideoutArea } from "@spt/models/eft/common/tables/IBotBase";
import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase";
import { Item } from "@spt/models/eft/common/tables/IItem";
import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea";
import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData";
@ -538,7 +538,7 @@ export class CircleOfCultistService {
* @param areas Hideout areas to iterate over
* @returns Active area array
*/
protected getPlayerAccessibleHideoutAreas(areas: HideoutArea[]): HideoutArea[] {
protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[] {
return areas.filter((area) => {
if (area.type === HideoutAreas.CHRISTMAS_TREE && !this.seasonalEventService.christmasEventEnabled()) {
// Christmas tree area and not Christmas, skip

View File

@ -1,4 +1,4 @@
import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase";
import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase";
import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig";
import { ILogger } from "@spt/models/spt/utils/ILogger";
@ -25,7 +25,7 @@ export class CustomLocationWaveService {
* @param locationId e.g. factory4_day, bigmap
* @param waveToAdd Boss wave to add to map
*/
public addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void {
public addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void {
this.locationConfig.customWaves.boss[locationId].push(waveToAdd);
}
@ -34,7 +34,7 @@ export class CustomLocationWaveService {
* @param locationId e.g. factory4_day, bigmap
* @param waveToAdd Wave to add to map
*/
public addNormalWaveToMap(locationId: string, waveToAdd: Wave): void {
public addNormalWaveToMap(locationId: string, waveToAdd: IWave): void {
this.locationConfig.customWaves.normal[locationId].push(waveToAdd);
}

View File

@ -9,7 +9,7 @@ import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { TraderHelper } from "@spt/helpers/TraderHelper";
import { ILocationBase } from "@spt/models/eft/common/ILocationBase";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Common, IQuestStatus, TraderInfo } from "@spt/models/eft/common/tables/IBotBase";
import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase";
import { Item } from "@spt/models/eft/common/tables/IItem";
import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData";
import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData";
@ -661,8 +661,8 @@ export class LocationLifecycleService {
* @param tradersClientProfile Client
*/
protected applyTraderStandingAdjustments(
tradersServerProfile: Record<string, TraderInfo>,
tradersClientProfile: Record<string, TraderInfo>,
tradersServerProfile: Record<string, ITraderInfo>,
tradersClientProfile: Record<string, ITraderInfo>,
): void {
for (const traderId in tradersClientProfile) {
const serverProfileTrader = tradersServerProfile[traderId];

View File

@ -1,7 +1,7 @@
import { NotificationSendHelper } from "@spt/helpers/NotificationSendHelper";
import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Aggressor, Victim } from "@spt/models/eft/common/tables/IBotBase";
import { IAggressor, IVictim } from "@spt/models/eft/common/tables/IBotBase";
import { IUserDialogInfo } from "@spt/models/eft/profile/ISptProfile";
import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
import { MemberCategory } from "@spt/models/enums/MemberCategory";
@ -43,7 +43,7 @@ export class PmcChatResponseService {
* @param pmcVictims Array of bots killed by player
* @param pmcData Player profile
*/
public sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void {
public sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void {
for (const victim of pmcVictims) {
if (!this.randomUtil.getChance100(this.pmcResponsesConfig.victim.responseChancePercent)) {
continue;
@ -68,7 +68,7 @@ export class PmcChatResponseService {
* @param pmcData Players profile
* @param killer The bot who killed the player
*/
public sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void {
public sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void {
if (!killer) {
return;
}
@ -240,7 +240,7 @@ export class PmcChatResponseService {
* @param pmcVictims Possible victims to choose from
* @returns IUserDialogInfo
*/
protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo {
protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo {
const randomVictim = this.randomUtil.getArrayValue(pmcVictims);
return this.getVictimDetails(randomVictim);
@ -251,7 +251,7 @@ export class PmcChatResponseService {
* @param pmcVictim victim to convert
* @returns IUserDialogInfo
*/
protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo {
protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo {
const categories = [
MemberCategory.UNIQUE_ID,
MemberCategory.DEFAULT,

View File

@ -4,7 +4,7 @@ import { ItemHelper } from "@spt/helpers/ItemHelper";
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { TraderHelper } from "@spt/helpers/TraderHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Bonus, HideoutSlot } from "@spt/models/eft/common/tables/IBotBase";
import { IBonus, IHideoutSlot } from "@spt/models/eft/common/tables/IBotBase";
import { IPmcDataRepeatableQuest, IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";
import { StageBonus } from "@spt/models/eft/hideout/IHideoutArea";
@ -328,7 +328,7 @@ export class ProfileFixerService {
area.slots = this.addObjectsToArray(emptyItemCount, area.slots);
}
protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[] {
protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[] {
for (let i = 0; i < count; i++) {
if (!slots.some((x) => x.locationIndex === i)) {
slots.push({ locationIndex: i });
@ -632,7 +632,7 @@ export class ProfileFixerService {
* @param bonus bonus to find
* @returns matching bonus
*/
protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined {
protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined {
// match by id first, used by "TextBonus" bonuses
if (bonus.id) {
return profileBonuses.find((x) => x.id === bonus.id);

View File

@ -5,7 +5,11 @@ import { ILocationBase } from "@spt/models/eft/common/ILocationBase";
import { IGetRaidTimeRequest } from "@spt/models/eft/game/IGetRaidTimeRequest";
import { ExtractChange, IGetRaidTimeResponse } from "@spt/models/eft/game/IGetRaidTimeResponse";
import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
import { ILocationConfig, IScavRaidTimeLocationSettings, LootMultiplier } from "@spt/models/spt/config/ILocationConfig";
import {
ILocationConfig,
ILootMultiplier,
IScavRaidTimeLocationSettings,
} from "@spt/models/spt/config/ILocationConfig";
import { IRaidChanges } from "@spt/models/spt/location/IRaidChanges";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
@ -55,7 +59,7 @@ export class RaidTimeAdjustmentService {
* @param mapLootMultiplers Multiplers to adjust
* @param loosePercent Percent to change values to
*/
protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void {
protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void {
for (const key in mapLootMultiplers) {
mapLootMultiplers[key] = this.randomUtil.getPercentOfValue(mapLootMultiplers[key], loosePercent);
}

View File

@ -2,7 +2,7 @@ import { BotHelper } from "@spt/helpers/BotHelper";
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { IConfig } from "@spt/models/eft/common/IGlobals";
import { ILocation } from "@spt/models/eft/common/ILocation";
import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase";
import { IBossLocationSpawn } from "@spt/models/eft/common/ILocationBase";
import { Inventory } from "@spt/models/eft/common/tables/IBotType";
import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
import { ItemTpl } from "@spt/models/enums/ItemTpl";
@ -390,7 +390,7 @@ export class SeasonalEventService {
for (const boss of bossesToAdd) {
const locations = this.databaseService.getLocations();
const mapBosses: BossLocationSpawn[] = locations[mapKey].base.BossLocationSpawn;
const mapBosses: IBossLocationSpawn[] = locations[mapKey].base.BossLocationSpawn;
if (!mapBosses.some((bossSpawn) => bossSpawn.BossName === boss.BossName)) {
locations[mapKey].base.BossLocationSpawn.push(...bossesToAdd);
}