Update types

This commit is contained in:
Dev 2023-04-09 15:20:44 +01:00
parent ec69b649b3
commit 81b0cd7872
165 changed files with 1414 additions and 702 deletions

View File

@ -43,6 +43,10 @@ export declare class GameController {
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer); constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer);
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void; gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
/**
* BSG have two values for shotgun dispersion, we make sure both have the same value
*/
protected fixShotgunDispersions(): void;
/** /**
* Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it * Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it
* @param pmcProfile Player profile * @param pmcProfile Player profile

View File

@ -102,6 +102,10 @@ export declare class InventoryController {
foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse; foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse;
/** /**
* Toggles "Toggleable" items like night vision goggles and face shields. * Toggles "Toggleable" items like night vision goggles and face shields.
* @param pmcData player profile
* @param body Toggle request
* @param sessionID Session id
* @returns IItemEventRouterResponse
*/ */
toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse; toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse;
/** /**

View File

@ -1,3 +1,4 @@
import { ApplicationContext } from "../context/ApplicationContext";
import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper"; import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper";
import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem"; import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem";
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem"; import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
@ -15,10 +16,11 @@ export declare class BotGeneratorHelper {
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected durabilityLimitsHelper: DurabilityLimitsHelper; protected durabilityLimitsHelper: DurabilityLimitsHelper;
protected itemHelper: ItemHelper; protected itemHelper: ItemHelper;
protected applicationContext: ApplicationContext;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected botConfig: IBotConfig; protected botConfig: IBotConfig;
constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, localisationService: LocalisationService, configServer: ConfigServer); constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, applicationContext: ApplicationContext, localisationService: LocalisationService, configServer: ConfigServer);
/** /**
* Adds properties to an item * Adds properties to an item
* e.g. Repairable / HasHinge / Foldable / MaxDurability * e.g. Repairable / HasHinge / Foldable / MaxDurability

View File

@ -1,33 +1,34 @@
export declare enum WildSpawnTypeNumber { export declare enum WildSpawnTypeNumber {
MARKSMAN = 0,
ASSAULT = 1, ASSAULT = 1,
MARKSMAN = 2, BOSSTEST = 2,
BOSSTEST = 4, BOSSBULLY = 3,
BOSSBULLY = 8, FOLLOWERTEST = 4,
FOLLOWERTEST = 16, FOLLOWERBULLY = 5,
FOLLOWERBULLY = 32, BOSSKILLA = 6,
BOSSKILLA = 64, BOSSKOJANIY = 7,
BOSSKOJANIY = 128, FOLLOWERKOJANIY = 8,
FOLLOWERKOJANIY = 256, PMCBOT = 9,
PMCBOT = 512, CURSEDASSAULT = 10,
CURSEDASSAULT = 1024, BOSSGLUHAR = 11,
BOSSGLUHAR = 2048, FOLLOWERGLUHARASSAULT = 12,
FOLLOWERGLUHARASSAULT = 4096, FOLLOWERGLUHARSECURITY = 13,
FOLLOWERGLUHARSECURITY = 8192, FOLLOWERGLUHARSCOUT = 14,
FOLLOWERGLUHARSCOUT = 16384, FOLLOWERGLUHARSNIPE = 15,
FOLLOWERGLUHARSNIPE = 32768, FOLLOWERSANITAR = 16,
FOLLOWERSANITAR = 65536, BOSSSANITAR = 17,
BOSSSANITAR = 131072, TEST = 18,
TEST = 262144, ASSAULTGROUP = 19,
ASSAULTGROUP = 524288, SECTANTWARRIOR = 20,
SECTANTWARRIOR = 1048576, SECTANTPRIEST = 21,
SECTANTPRIEST = 2097152, BOSSTAGILLA = 22,
BOSSTAGILLA = 4194304, FOLLOWERTAGILLA = 23,
FOLLOWERTAGILLA = 8388608, EXUSEC = 24,
EXUSEC = 16777216, GIFTER = 25,
GIFTER = 33554432, BOSSKNIGHT = 26,
BOSSKNIGHT = 67108864, FOLLOWERBIGPIPE = 27,
FOLLOWERBIGPIPE = 134217728, FOLLOWERBIRDEYE = 28,
FOLLOWERBIRDEYE = 268435456, BOSSZRYACHIY = 29,
BOSSZRYACHIY = 536870912, FOLLOWERZRYACHIY = 30,
FOLLOWERZRYACHIY = 1073741824 ARENAFIGHTEREVENT = 31
} }

View File

@ -70,8 +70,11 @@ export interface EquipmentFilters {
weaponModLimits: ModLimits; weaponModLimits: ModLimits;
weaponSightWhitelist: Record<string, string[]>; weaponSightWhitelist: Record<string, string[]>;
faceShieldIsActiveChancePercent?: number; faceShieldIsActiveChancePercent?: number;
lightLaserIsActiveChancePercent?: number; lightIsActiveDayChancePercent?: number;
nvgIsActiveChancePercent?: number; lightIsActiveNightChancePercent?: number;
laserIsActiveChancePercent?: number;
nvgIsActiveChanceDayPercent?: number;
nvgIsActiveChanceNightPercent?: number;
randomisation: RandomisationDetails[]; randomisation: RandomisationDetails[];
blacklist: EquipmentFilterDetails[]; blacklist: EquipmentFilterDetails[];
whitelist: EquipmentFilterDetails[]; whitelist: EquipmentFilterDetails[];

View File

@ -21,6 +21,8 @@ export interface Sell {
reputation: Reputation; reputation: Reputation;
/** How many hours are simulated to figure out if player offer was sold */ /** How many hours are simulated to figure out if player offer was sold */
simulatedSellHours: number; simulatedSellHours: number;
/**Seconds from clicking remove to remove offer from market */
expireSeconds: number;
} }
export interface Chance { export interface Chance {
base: number; base: number;

View File

@ -43,6 +43,10 @@ export declare class GameController {
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer); constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer);
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void; gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
/**
* BSG have two values for shotgun dispersion, we make sure both have the same value
*/
protected fixShotgunDispersions(): void;
/** /**
* Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it * Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it
* @param pmcProfile Player profile * @param pmcProfile Player profile

View File

@ -102,6 +102,10 @@ export declare class InventoryController {
foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse; foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse;
/** /**
* Toggles "Toggleable" items like night vision goggles and face shields. * Toggles "Toggleable" items like night vision goggles and face shields.
* @param pmcData player profile
* @param body Toggle request
* @param sessionID Session id
* @returns IItemEventRouterResponse
*/ */
toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse; toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse;
/** /**

View File

@ -1,3 +1,4 @@
import { ApplicationContext } from "../context/ApplicationContext";
import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper"; import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper";
import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem"; import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem";
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem"; import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
@ -15,10 +16,11 @@ export declare class BotGeneratorHelper {
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected durabilityLimitsHelper: DurabilityLimitsHelper; protected durabilityLimitsHelper: DurabilityLimitsHelper;
protected itemHelper: ItemHelper; protected itemHelper: ItemHelper;
protected applicationContext: ApplicationContext;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected botConfig: IBotConfig; protected botConfig: IBotConfig;
constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, localisationService: LocalisationService, configServer: ConfigServer); constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, applicationContext: ApplicationContext, localisationService: LocalisationService, configServer: ConfigServer);
/** /**
* Adds properties to an item * Adds properties to an item
* e.g. Repairable / HasHinge / Foldable / MaxDurability * e.g. Repairable / HasHinge / Foldable / MaxDurability

View File

@ -1,33 +1,34 @@
export declare enum WildSpawnTypeNumber { export declare enum WildSpawnTypeNumber {
MARKSMAN = 0,
ASSAULT = 1, ASSAULT = 1,
MARKSMAN = 2, BOSSTEST = 2,
BOSSTEST = 4, BOSSBULLY = 3,
BOSSBULLY = 8, FOLLOWERTEST = 4,
FOLLOWERTEST = 16, FOLLOWERBULLY = 5,
FOLLOWERBULLY = 32, BOSSKILLA = 6,
BOSSKILLA = 64, BOSSKOJANIY = 7,
BOSSKOJANIY = 128, FOLLOWERKOJANIY = 8,
FOLLOWERKOJANIY = 256, PMCBOT = 9,
PMCBOT = 512, CURSEDASSAULT = 10,
CURSEDASSAULT = 1024, BOSSGLUHAR = 11,
BOSSGLUHAR = 2048, FOLLOWERGLUHARASSAULT = 12,
FOLLOWERGLUHARASSAULT = 4096, FOLLOWERGLUHARSECURITY = 13,
FOLLOWERGLUHARSECURITY = 8192, FOLLOWERGLUHARSCOUT = 14,
FOLLOWERGLUHARSCOUT = 16384, FOLLOWERGLUHARSNIPE = 15,
FOLLOWERGLUHARSNIPE = 32768, FOLLOWERSANITAR = 16,
FOLLOWERSANITAR = 65536, BOSSSANITAR = 17,
BOSSSANITAR = 131072, TEST = 18,
TEST = 262144, ASSAULTGROUP = 19,
ASSAULTGROUP = 524288, SECTANTWARRIOR = 20,
SECTANTWARRIOR = 1048576, SECTANTPRIEST = 21,
SECTANTPRIEST = 2097152, BOSSTAGILLA = 22,
BOSSTAGILLA = 4194304, FOLLOWERTAGILLA = 23,
FOLLOWERTAGILLA = 8388608, EXUSEC = 24,
EXUSEC = 16777216, GIFTER = 25,
GIFTER = 33554432, BOSSKNIGHT = 26,
BOSSKNIGHT = 67108864, FOLLOWERBIGPIPE = 27,
FOLLOWERBIGPIPE = 134217728, FOLLOWERBIRDEYE = 28,
FOLLOWERBIRDEYE = 268435456, BOSSZRYACHIY = 29,
BOSSZRYACHIY = 536870912, FOLLOWERZRYACHIY = 30,
FOLLOWERZRYACHIY = 1073741824 ARENAFIGHTEREVENT = 31
} }

View File

@ -70,8 +70,11 @@ export interface EquipmentFilters {
weaponModLimits: ModLimits; weaponModLimits: ModLimits;
weaponSightWhitelist: Record<string, string[]>; weaponSightWhitelist: Record<string, string[]>;
faceShieldIsActiveChancePercent?: number; faceShieldIsActiveChancePercent?: number;
lightLaserIsActiveChancePercent?: number; lightIsActiveDayChancePercent?: number;
nvgIsActiveChancePercent?: number; lightIsActiveNightChancePercent?: number;
laserIsActiveChancePercent?: number;
nvgIsActiveChanceDayPercent?: number;
nvgIsActiveChanceNightPercent?: number;
randomisation: RandomisationDetails[]; randomisation: RandomisationDetails[];
blacklist: EquipmentFilterDetails[]; blacklist: EquipmentFilterDetails[];
whitelist: EquipmentFilterDetails[]; whitelist: EquipmentFilterDetails[];

View File

@ -21,6 +21,8 @@ export interface Sell {
reputation: Reputation; reputation: Reputation;
/** How many hours are simulated to figure out if player offer was sold */ /** How many hours are simulated to figure out if player offer was sold */
simulatedSellHours: number; simulatedSellHours: number;
/**Seconds from clicking remove to remove offer from market */
expireSeconds: number;
} }
export interface Chance { export interface Chance {
base: number; base: number;

View File

@ -43,6 +43,10 @@ export declare class GameController {
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer); constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer);
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void; gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
/**
* BSG have two values for shotgun dispersion, we make sure both have the same value
*/
protected fixShotgunDispersions(): void;
/** /**
* Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it * Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it
* @param pmcProfile Player profile * @param pmcProfile Player profile

View File

@ -102,6 +102,10 @@ export declare class InventoryController {
foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse; foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse;
/** /**
* Toggles "Toggleable" items like night vision goggles and face shields. * Toggles "Toggleable" items like night vision goggles and face shields.
* @param pmcData player profile
* @param body Toggle request
* @param sessionID Session id
* @returns IItemEventRouterResponse
*/ */
toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse; toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse;
/** /**

View File

@ -1,3 +1,4 @@
import { ApplicationContext } from "../context/ApplicationContext";
import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper"; import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper";
import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem"; import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem";
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem"; import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
@ -15,10 +16,11 @@ export declare class BotGeneratorHelper {
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected durabilityLimitsHelper: DurabilityLimitsHelper; protected durabilityLimitsHelper: DurabilityLimitsHelper;
protected itemHelper: ItemHelper; protected itemHelper: ItemHelper;
protected applicationContext: ApplicationContext;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected botConfig: IBotConfig; protected botConfig: IBotConfig;
constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, localisationService: LocalisationService, configServer: ConfigServer); constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, applicationContext: ApplicationContext, localisationService: LocalisationService, configServer: ConfigServer);
/** /**
* Adds properties to an item * Adds properties to an item
* e.g. Repairable / HasHinge / Foldable / MaxDurability * e.g. Repairable / HasHinge / Foldable / MaxDurability

View File

@ -1,33 +1,34 @@
export declare enum WildSpawnTypeNumber { export declare enum WildSpawnTypeNumber {
MARKSMAN = 0,
ASSAULT = 1, ASSAULT = 1,
MARKSMAN = 2, BOSSTEST = 2,
BOSSTEST = 4, BOSSBULLY = 3,
BOSSBULLY = 8, FOLLOWERTEST = 4,
FOLLOWERTEST = 16, FOLLOWERBULLY = 5,
FOLLOWERBULLY = 32, BOSSKILLA = 6,
BOSSKILLA = 64, BOSSKOJANIY = 7,
BOSSKOJANIY = 128, FOLLOWERKOJANIY = 8,
FOLLOWERKOJANIY = 256, PMCBOT = 9,
PMCBOT = 512, CURSEDASSAULT = 10,
CURSEDASSAULT = 1024, BOSSGLUHAR = 11,
BOSSGLUHAR = 2048, FOLLOWERGLUHARASSAULT = 12,
FOLLOWERGLUHARASSAULT = 4096, FOLLOWERGLUHARSECURITY = 13,
FOLLOWERGLUHARSECURITY = 8192, FOLLOWERGLUHARSCOUT = 14,
FOLLOWERGLUHARSCOUT = 16384, FOLLOWERGLUHARSNIPE = 15,
FOLLOWERGLUHARSNIPE = 32768, FOLLOWERSANITAR = 16,
FOLLOWERSANITAR = 65536, BOSSSANITAR = 17,
BOSSSANITAR = 131072, TEST = 18,
TEST = 262144, ASSAULTGROUP = 19,
ASSAULTGROUP = 524288, SECTANTWARRIOR = 20,
SECTANTWARRIOR = 1048576, SECTANTPRIEST = 21,
SECTANTPRIEST = 2097152, BOSSTAGILLA = 22,
BOSSTAGILLA = 4194304, FOLLOWERTAGILLA = 23,
FOLLOWERTAGILLA = 8388608, EXUSEC = 24,
EXUSEC = 16777216, GIFTER = 25,
GIFTER = 33554432, BOSSKNIGHT = 26,
BOSSKNIGHT = 67108864, FOLLOWERBIGPIPE = 27,
FOLLOWERBIGPIPE = 134217728, FOLLOWERBIRDEYE = 28,
FOLLOWERBIRDEYE = 268435456, BOSSZRYACHIY = 29,
BOSSZRYACHIY = 536870912, FOLLOWERZRYACHIY = 30,
FOLLOWERZRYACHIY = 1073741824 ARENAFIGHTEREVENT = 31
} }

View File

@ -70,8 +70,11 @@ export interface EquipmentFilters {
weaponModLimits: ModLimits; weaponModLimits: ModLimits;
weaponSightWhitelist: Record<string, string[]>; weaponSightWhitelist: Record<string, string[]>;
faceShieldIsActiveChancePercent?: number; faceShieldIsActiveChancePercent?: number;
lightLaserIsActiveChancePercent?: number; lightIsActiveDayChancePercent?: number;
nvgIsActiveChancePercent?: number; lightIsActiveNightChancePercent?: number;
laserIsActiveChancePercent?: number;
nvgIsActiveChanceDayPercent?: number;
nvgIsActiveChanceNightPercent?: number;
randomisation: RandomisationDetails[]; randomisation: RandomisationDetails[];
blacklist: EquipmentFilterDetails[]; blacklist: EquipmentFilterDetails[];
whitelist: EquipmentFilterDetails[]; whitelist: EquipmentFilterDetails[];

View File

@ -21,6 +21,8 @@ export interface Sell {
reputation: Reputation; reputation: Reputation;
/** How many hours are simulated to figure out if player offer was sold */ /** How many hours are simulated to figure out if player offer was sold */
simulatedSellHours: number; simulatedSellHours: number;
/**Seconds from clicking remove to remove offer from market */
expireSeconds: number;
} }
export interface Chance { export interface Chance {
base: number; base: number;

View File

@ -43,6 +43,10 @@ export declare class GameController {
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer); constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer);
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void; gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
/**
* BSG have two values for shotgun dispersion, we make sure both have the same value
*/
protected fixShotgunDispersions(): void;
/** /**
* Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it * Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it
* @param pmcProfile Player profile * @param pmcProfile Player profile

View File

@ -102,6 +102,10 @@ export declare class InventoryController {
foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse; foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse;
/** /**
* Toggles "Toggleable" items like night vision goggles and face shields. * Toggles "Toggleable" items like night vision goggles and face shields.
* @param pmcData player profile
* @param body Toggle request
* @param sessionID Session id
* @returns IItemEventRouterResponse
*/ */
toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse; toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse;
/** /**

View File

@ -1,3 +1,4 @@
import { ApplicationContext } from "../context/ApplicationContext";
import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper"; import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper";
import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem"; import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem";
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem"; import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
@ -15,10 +16,11 @@ export declare class BotGeneratorHelper {
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected durabilityLimitsHelper: DurabilityLimitsHelper; protected durabilityLimitsHelper: DurabilityLimitsHelper;
protected itemHelper: ItemHelper; protected itemHelper: ItemHelper;
protected applicationContext: ApplicationContext;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected botConfig: IBotConfig; protected botConfig: IBotConfig;
constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, localisationService: LocalisationService, configServer: ConfigServer); constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, applicationContext: ApplicationContext, localisationService: LocalisationService, configServer: ConfigServer);
/** /**
* Adds properties to an item * Adds properties to an item
* e.g. Repairable / HasHinge / Foldable / MaxDurability * e.g. Repairable / HasHinge / Foldable / MaxDurability

View File

@ -1,33 +1,34 @@
export declare enum WildSpawnTypeNumber { export declare enum WildSpawnTypeNumber {
MARKSMAN = 0,
ASSAULT = 1, ASSAULT = 1,
MARKSMAN = 2, BOSSTEST = 2,
BOSSTEST = 4, BOSSBULLY = 3,
BOSSBULLY = 8, FOLLOWERTEST = 4,
FOLLOWERTEST = 16, FOLLOWERBULLY = 5,
FOLLOWERBULLY = 32, BOSSKILLA = 6,
BOSSKILLA = 64, BOSSKOJANIY = 7,
BOSSKOJANIY = 128, FOLLOWERKOJANIY = 8,
FOLLOWERKOJANIY = 256, PMCBOT = 9,
PMCBOT = 512, CURSEDASSAULT = 10,
CURSEDASSAULT = 1024, BOSSGLUHAR = 11,
BOSSGLUHAR = 2048, FOLLOWERGLUHARASSAULT = 12,
FOLLOWERGLUHARASSAULT = 4096, FOLLOWERGLUHARSECURITY = 13,
FOLLOWERGLUHARSECURITY = 8192, FOLLOWERGLUHARSCOUT = 14,
FOLLOWERGLUHARSCOUT = 16384, FOLLOWERGLUHARSNIPE = 15,
FOLLOWERGLUHARSNIPE = 32768, FOLLOWERSANITAR = 16,
FOLLOWERSANITAR = 65536, BOSSSANITAR = 17,
BOSSSANITAR = 131072, TEST = 18,
TEST = 262144, ASSAULTGROUP = 19,
ASSAULTGROUP = 524288, SECTANTWARRIOR = 20,
SECTANTWARRIOR = 1048576, SECTANTPRIEST = 21,
SECTANTPRIEST = 2097152, BOSSTAGILLA = 22,
BOSSTAGILLA = 4194304, FOLLOWERTAGILLA = 23,
FOLLOWERTAGILLA = 8388608, EXUSEC = 24,
EXUSEC = 16777216, GIFTER = 25,
GIFTER = 33554432, BOSSKNIGHT = 26,
BOSSKNIGHT = 67108864, FOLLOWERBIGPIPE = 27,
FOLLOWERBIGPIPE = 134217728, FOLLOWERBIRDEYE = 28,
FOLLOWERBIRDEYE = 268435456, BOSSZRYACHIY = 29,
BOSSZRYACHIY = 536870912, FOLLOWERZRYACHIY = 30,
FOLLOWERZRYACHIY = 1073741824 ARENAFIGHTEREVENT = 31
} }

View File

@ -70,8 +70,11 @@ export interface EquipmentFilters {
weaponModLimits: ModLimits; weaponModLimits: ModLimits;
weaponSightWhitelist: Record<string, string[]>; weaponSightWhitelist: Record<string, string[]>;
faceShieldIsActiveChancePercent?: number; faceShieldIsActiveChancePercent?: number;
lightLaserIsActiveChancePercent?: number; lightIsActiveDayChancePercent?: number;
nvgIsActiveChancePercent?: number; lightIsActiveNightChancePercent?: number;
laserIsActiveChancePercent?: number;
nvgIsActiveChanceDayPercent?: number;
nvgIsActiveChanceNightPercent?: number;
randomisation: RandomisationDetails[]; randomisation: RandomisationDetails[];
blacklist: EquipmentFilterDetails[]; blacklist: EquipmentFilterDetails[];
whitelist: EquipmentFilterDetails[]; whitelist: EquipmentFilterDetails[];

View File

@ -21,6 +21,8 @@ export interface Sell {
reputation: Reputation; reputation: Reputation;
/** How many hours are simulated to figure out if player offer was sold */ /** How many hours are simulated to figure out if player offer was sold */
simulatedSellHours: number; simulatedSellHours: number;
/**Seconds from clicking remove to remove offer from market */
expireSeconds: number;
} }
export interface Chance { export interface Chance {
base: number; base: number;

View File

@ -43,6 +43,10 @@ export declare class GameController {
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer); constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer);
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void; gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
/**
* BSG have two values for shotgun dispersion, we make sure both have the same value
*/
protected fixShotgunDispersions(): void;
/** /**
* Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it * Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it
* @param pmcProfile Player profile * @param pmcProfile Player profile

View File

@ -102,6 +102,10 @@ export declare class InventoryController {
foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse; foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse;
/** /**
* Toggles "Toggleable" items like night vision goggles and face shields. * Toggles "Toggleable" items like night vision goggles and face shields.
* @param pmcData player profile
* @param body Toggle request
* @param sessionID Session id
* @returns IItemEventRouterResponse
*/ */
toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse; toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse;
/** /**

View File

@ -1,3 +1,4 @@
import { ApplicationContext } from "../context/ApplicationContext";
import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper"; import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper";
import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem"; import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem";
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem"; import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
@ -15,10 +16,11 @@ export declare class BotGeneratorHelper {
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected durabilityLimitsHelper: DurabilityLimitsHelper; protected durabilityLimitsHelper: DurabilityLimitsHelper;
protected itemHelper: ItemHelper; protected itemHelper: ItemHelper;
protected applicationContext: ApplicationContext;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected botConfig: IBotConfig; protected botConfig: IBotConfig;
constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, localisationService: LocalisationService, configServer: ConfigServer); constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, applicationContext: ApplicationContext, localisationService: LocalisationService, configServer: ConfigServer);
/** /**
* Adds properties to an item * Adds properties to an item
* e.g. Repairable / HasHinge / Foldable / MaxDurability * e.g. Repairable / HasHinge / Foldable / MaxDurability

View File

@ -1,33 +1,34 @@
export declare enum WildSpawnTypeNumber { export declare enum WildSpawnTypeNumber {
MARKSMAN = 0,
ASSAULT = 1, ASSAULT = 1,
MARKSMAN = 2, BOSSTEST = 2,
BOSSTEST = 4, BOSSBULLY = 3,
BOSSBULLY = 8, FOLLOWERTEST = 4,
FOLLOWERTEST = 16, FOLLOWERBULLY = 5,
FOLLOWERBULLY = 32, BOSSKILLA = 6,
BOSSKILLA = 64, BOSSKOJANIY = 7,
BOSSKOJANIY = 128, FOLLOWERKOJANIY = 8,
FOLLOWERKOJANIY = 256, PMCBOT = 9,
PMCBOT = 512, CURSEDASSAULT = 10,
CURSEDASSAULT = 1024, BOSSGLUHAR = 11,
BOSSGLUHAR = 2048, FOLLOWERGLUHARASSAULT = 12,
FOLLOWERGLUHARASSAULT = 4096, FOLLOWERGLUHARSECURITY = 13,
FOLLOWERGLUHARSECURITY = 8192, FOLLOWERGLUHARSCOUT = 14,
FOLLOWERGLUHARSCOUT = 16384, FOLLOWERGLUHARSNIPE = 15,
FOLLOWERGLUHARSNIPE = 32768, FOLLOWERSANITAR = 16,
FOLLOWERSANITAR = 65536, BOSSSANITAR = 17,
BOSSSANITAR = 131072, TEST = 18,
TEST = 262144, ASSAULTGROUP = 19,
ASSAULTGROUP = 524288, SECTANTWARRIOR = 20,
SECTANTWARRIOR = 1048576, SECTANTPRIEST = 21,
SECTANTPRIEST = 2097152, BOSSTAGILLA = 22,
BOSSTAGILLA = 4194304, FOLLOWERTAGILLA = 23,
FOLLOWERTAGILLA = 8388608, EXUSEC = 24,
EXUSEC = 16777216, GIFTER = 25,
GIFTER = 33554432, BOSSKNIGHT = 26,
BOSSKNIGHT = 67108864, FOLLOWERBIGPIPE = 27,
FOLLOWERBIGPIPE = 134217728, FOLLOWERBIRDEYE = 28,
FOLLOWERBIRDEYE = 268435456, BOSSZRYACHIY = 29,
BOSSZRYACHIY = 536870912, FOLLOWERZRYACHIY = 30,
FOLLOWERZRYACHIY = 1073741824 ARENAFIGHTEREVENT = 31
} }

View File

@ -70,8 +70,11 @@ export interface EquipmentFilters {
weaponModLimits: ModLimits; weaponModLimits: ModLimits;
weaponSightWhitelist: Record<string, string[]>; weaponSightWhitelist: Record<string, string[]>;
faceShieldIsActiveChancePercent?: number; faceShieldIsActiveChancePercent?: number;
lightLaserIsActiveChancePercent?: number; lightIsActiveDayChancePercent?: number;
nvgIsActiveChancePercent?: number; lightIsActiveNightChancePercent?: number;
laserIsActiveChancePercent?: number;
nvgIsActiveChanceDayPercent?: number;
nvgIsActiveChanceNightPercent?: number;
randomisation: RandomisationDetails[]; randomisation: RandomisationDetails[];
blacklist: EquipmentFilterDetails[]; blacklist: EquipmentFilterDetails[];
whitelist: EquipmentFilterDetails[]; whitelist: EquipmentFilterDetails[];

View File

@ -21,6 +21,8 @@ export interface Sell {
reputation: Reputation; reputation: Reputation;
/** How many hours are simulated to figure out if player offer was sold */ /** How many hours are simulated to figure out if player offer was sold */
simulatedSellHours: number; simulatedSellHours: number;
/**Seconds from clicking remove to remove offer from market */
expireSeconds: number;
} }
export interface Chance { export interface Chance {
base: number; base: number;

View File

@ -43,6 +43,10 @@ export declare class GameController {
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer); constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer);
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void; gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
/**
* BSG have two values for shotgun dispersion, we make sure both have the same value
*/
protected fixShotgunDispersions(): void;
/** /**
* Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it * Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it
* @param pmcProfile Player profile * @param pmcProfile Player profile

View File

@ -102,6 +102,10 @@ export declare class InventoryController {
foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse; foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse;
/** /**
* Toggles "Toggleable" items like night vision goggles and face shields. * Toggles "Toggleable" items like night vision goggles and face shields.
* @param pmcData player profile
* @param body Toggle request
* @param sessionID Session id
* @returns IItemEventRouterResponse
*/ */
toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse; toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse;
/** /**

View File

@ -1,3 +1,4 @@
import { ApplicationContext } from "../context/ApplicationContext";
import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper"; import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper";
import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem"; import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem";
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem"; import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
@ -15,10 +16,11 @@ export declare class BotGeneratorHelper {
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected durabilityLimitsHelper: DurabilityLimitsHelper; protected durabilityLimitsHelper: DurabilityLimitsHelper;
protected itemHelper: ItemHelper; protected itemHelper: ItemHelper;
protected applicationContext: ApplicationContext;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected botConfig: IBotConfig; protected botConfig: IBotConfig;
constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, localisationService: LocalisationService, configServer: ConfigServer); constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, applicationContext: ApplicationContext, localisationService: LocalisationService, configServer: ConfigServer);
/** /**
* Adds properties to an item * Adds properties to an item
* e.g. Repairable / HasHinge / Foldable / MaxDurability * e.g. Repairable / HasHinge / Foldable / MaxDurability

View File

@ -1,33 +1,34 @@
export declare enum WildSpawnTypeNumber { export declare enum WildSpawnTypeNumber {
MARKSMAN = 0,
ASSAULT = 1, ASSAULT = 1,
MARKSMAN = 2, BOSSTEST = 2,
BOSSTEST = 4, BOSSBULLY = 3,
BOSSBULLY = 8, FOLLOWERTEST = 4,
FOLLOWERTEST = 16, FOLLOWERBULLY = 5,
FOLLOWERBULLY = 32, BOSSKILLA = 6,
BOSSKILLA = 64, BOSSKOJANIY = 7,
BOSSKOJANIY = 128, FOLLOWERKOJANIY = 8,
FOLLOWERKOJANIY = 256, PMCBOT = 9,
PMCBOT = 512, CURSEDASSAULT = 10,
CURSEDASSAULT = 1024, BOSSGLUHAR = 11,
BOSSGLUHAR = 2048, FOLLOWERGLUHARASSAULT = 12,
FOLLOWERGLUHARASSAULT = 4096, FOLLOWERGLUHARSECURITY = 13,
FOLLOWERGLUHARSECURITY = 8192, FOLLOWERGLUHARSCOUT = 14,
FOLLOWERGLUHARSCOUT = 16384, FOLLOWERGLUHARSNIPE = 15,
FOLLOWERGLUHARSNIPE = 32768, FOLLOWERSANITAR = 16,
FOLLOWERSANITAR = 65536, BOSSSANITAR = 17,
BOSSSANITAR = 131072, TEST = 18,
TEST = 262144, ASSAULTGROUP = 19,
ASSAULTGROUP = 524288, SECTANTWARRIOR = 20,
SECTANTWARRIOR = 1048576, SECTANTPRIEST = 21,
SECTANTPRIEST = 2097152, BOSSTAGILLA = 22,
BOSSTAGILLA = 4194304, FOLLOWERTAGILLA = 23,
FOLLOWERTAGILLA = 8388608, EXUSEC = 24,
EXUSEC = 16777216, GIFTER = 25,
GIFTER = 33554432, BOSSKNIGHT = 26,
BOSSKNIGHT = 67108864, FOLLOWERBIGPIPE = 27,
FOLLOWERBIGPIPE = 134217728, FOLLOWERBIRDEYE = 28,
FOLLOWERBIRDEYE = 268435456, BOSSZRYACHIY = 29,
BOSSZRYACHIY = 536870912, FOLLOWERZRYACHIY = 30,
FOLLOWERZRYACHIY = 1073741824 ARENAFIGHTEREVENT = 31
} }

View File

@ -70,8 +70,11 @@ export interface EquipmentFilters {
weaponModLimits: ModLimits; weaponModLimits: ModLimits;
weaponSightWhitelist: Record<string, string[]>; weaponSightWhitelist: Record<string, string[]>;
faceShieldIsActiveChancePercent?: number; faceShieldIsActiveChancePercent?: number;
lightLaserIsActiveChancePercent?: number; lightIsActiveDayChancePercent?: number;
nvgIsActiveChancePercent?: number; lightIsActiveNightChancePercent?: number;
laserIsActiveChancePercent?: number;
nvgIsActiveChanceDayPercent?: number;
nvgIsActiveChanceNightPercent?: number;
randomisation: RandomisationDetails[]; randomisation: RandomisationDetails[];
blacklist: EquipmentFilterDetails[]; blacklist: EquipmentFilterDetails[];
whitelist: EquipmentFilterDetails[]; whitelist: EquipmentFilterDetails[];

View File

@ -21,6 +21,8 @@ export interface Sell {
reputation: Reputation; reputation: Reputation;
/** How many hours are simulated to figure out if player offer was sold */ /** How many hours are simulated to figure out if player offer was sold */
simulatedSellHours: number; simulatedSellHours: number;
/**Seconds from clicking remove to remove offer from market */
expireSeconds: number;
} }
export interface Chance { export interface Chance {
base: number; base: number;

View File

@ -43,6 +43,10 @@ export declare class GameController {
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer); constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer);
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void; gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
/**
* BSG have two values for shotgun dispersion, we make sure both have the same value
*/
protected fixShotgunDispersions(): void;
/** /**
* Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it * Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it
* @param pmcProfile Player profile * @param pmcProfile Player profile

View File

@ -102,6 +102,10 @@ export declare class InventoryController {
foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse; foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse;
/** /**
* Toggles "Toggleable" items like night vision goggles and face shields. * Toggles "Toggleable" items like night vision goggles and face shields.
* @param pmcData player profile
* @param body Toggle request
* @param sessionID Session id
* @returns IItemEventRouterResponse
*/ */
toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse; toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse;
/** /**

View File

@ -1,3 +1,4 @@
import { ApplicationContext } from "../context/ApplicationContext";
import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper"; import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper";
import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem"; import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem";
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem"; import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
@ -15,10 +16,11 @@ export declare class BotGeneratorHelper {
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected durabilityLimitsHelper: DurabilityLimitsHelper; protected durabilityLimitsHelper: DurabilityLimitsHelper;
protected itemHelper: ItemHelper; protected itemHelper: ItemHelper;
protected applicationContext: ApplicationContext;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected botConfig: IBotConfig; protected botConfig: IBotConfig;
constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, localisationService: LocalisationService, configServer: ConfigServer); constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, applicationContext: ApplicationContext, localisationService: LocalisationService, configServer: ConfigServer);
/** /**
* Adds properties to an item * Adds properties to an item
* e.g. Repairable / HasHinge / Foldable / MaxDurability * e.g. Repairable / HasHinge / Foldable / MaxDurability

View File

@ -1,33 +1,34 @@
export declare enum WildSpawnTypeNumber { export declare enum WildSpawnTypeNumber {
MARKSMAN = 0,
ASSAULT = 1, ASSAULT = 1,
MARKSMAN = 2, BOSSTEST = 2,
BOSSTEST = 4, BOSSBULLY = 3,
BOSSBULLY = 8, FOLLOWERTEST = 4,
FOLLOWERTEST = 16, FOLLOWERBULLY = 5,
FOLLOWERBULLY = 32, BOSSKILLA = 6,
BOSSKILLA = 64, BOSSKOJANIY = 7,
BOSSKOJANIY = 128, FOLLOWERKOJANIY = 8,
FOLLOWERKOJANIY = 256, PMCBOT = 9,
PMCBOT = 512, CURSEDASSAULT = 10,
CURSEDASSAULT = 1024, BOSSGLUHAR = 11,
BOSSGLUHAR = 2048, FOLLOWERGLUHARASSAULT = 12,
FOLLOWERGLUHARASSAULT = 4096, FOLLOWERGLUHARSECURITY = 13,
FOLLOWERGLUHARSECURITY = 8192, FOLLOWERGLUHARSCOUT = 14,
FOLLOWERGLUHARSCOUT = 16384, FOLLOWERGLUHARSNIPE = 15,
FOLLOWERGLUHARSNIPE = 32768, FOLLOWERSANITAR = 16,
FOLLOWERSANITAR = 65536, BOSSSANITAR = 17,
BOSSSANITAR = 131072, TEST = 18,
TEST = 262144, ASSAULTGROUP = 19,
ASSAULTGROUP = 524288, SECTANTWARRIOR = 20,
SECTANTWARRIOR = 1048576, SECTANTPRIEST = 21,
SECTANTPRIEST = 2097152, BOSSTAGILLA = 22,
BOSSTAGILLA = 4194304, FOLLOWERTAGILLA = 23,
FOLLOWERTAGILLA = 8388608, EXUSEC = 24,
EXUSEC = 16777216, GIFTER = 25,
GIFTER = 33554432, BOSSKNIGHT = 26,
BOSSKNIGHT = 67108864, FOLLOWERBIGPIPE = 27,
FOLLOWERBIGPIPE = 134217728, FOLLOWERBIRDEYE = 28,
FOLLOWERBIRDEYE = 268435456, BOSSZRYACHIY = 29,
BOSSZRYACHIY = 536870912, FOLLOWERZRYACHIY = 30,
FOLLOWERZRYACHIY = 1073741824 ARENAFIGHTEREVENT = 31
} }

View File

@ -70,8 +70,11 @@ export interface EquipmentFilters {
weaponModLimits: ModLimits; weaponModLimits: ModLimits;
weaponSightWhitelist: Record<string, string[]>; weaponSightWhitelist: Record<string, string[]>;
faceShieldIsActiveChancePercent?: number; faceShieldIsActiveChancePercent?: number;
lightLaserIsActiveChancePercent?: number; lightIsActiveDayChancePercent?: number;
nvgIsActiveChancePercent?: number; lightIsActiveNightChancePercent?: number;
laserIsActiveChancePercent?: number;
nvgIsActiveChanceDayPercent?: number;
nvgIsActiveChanceNightPercent?: number;
randomisation: RandomisationDetails[]; randomisation: RandomisationDetails[];
blacklist: EquipmentFilterDetails[]; blacklist: EquipmentFilterDetails[];
whitelist: EquipmentFilterDetails[]; whitelist: EquipmentFilterDetails[];

View File

@ -21,6 +21,8 @@ export interface Sell {
reputation: Reputation; reputation: Reputation;
/** How many hours are simulated to figure out if player offer was sold */ /** How many hours are simulated to figure out if player offer was sold */
simulatedSellHours: number; simulatedSellHours: number;
/**Seconds from clicking remove to remove offer from market */
expireSeconds: number;
} }
export interface Chance { export interface Chance {
base: number; base: number;

View File

@ -43,6 +43,10 @@ export declare class GameController {
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer); constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer);
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void; gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
/**
* BSG have two values for shotgun dispersion, we make sure both have the same value
*/
protected fixShotgunDispersions(): void;
/** /**
* Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it * Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it
* @param pmcProfile Player profile * @param pmcProfile Player profile

View File

@ -102,6 +102,10 @@ export declare class InventoryController {
foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse; foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse;
/** /**
* Toggles "Toggleable" items like night vision goggles and face shields. * Toggles "Toggleable" items like night vision goggles and face shields.
* @param pmcData player profile
* @param body Toggle request
* @param sessionID Session id
* @returns IItemEventRouterResponse
*/ */
toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse; toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse;
/** /**

View File

@ -1,3 +1,4 @@
import { ApplicationContext } from "../context/ApplicationContext";
import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper"; import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper";
import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem"; import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem";
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem"; import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
@ -15,10 +16,11 @@ export declare class BotGeneratorHelper {
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected durabilityLimitsHelper: DurabilityLimitsHelper; protected durabilityLimitsHelper: DurabilityLimitsHelper;
protected itemHelper: ItemHelper; protected itemHelper: ItemHelper;
protected applicationContext: ApplicationContext;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected botConfig: IBotConfig; protected botConfig: IBotConfig;
constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, localisationService: LocalisationService, configServer: ConfigServer); constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, applicationContext: ApplicationContext, localisationService: LocalisationService, configServer: ConfigServer);
/** /**
* Adds properties to an item * Adds properties to an item
* e.g. Repairable / HasHinge / Foldable / MaxDurability * e.g. Repairable / HasHinge / Foldable / MaxDurability

View File

@ -1,33 +1,34 @@
export declare enum WildSpawnTypeNumber { export declare enum WildSpawnTypeNumber {
MARKSMAN = 0,
ASSAULT = 1, ASSAULT = 1,
MARKSMAN = 2, BOSSTEST = 2,
BOSSTEST = 4, BOSSBULLY = 3,
BOSSBULLY = 8, FOLLOWERTEST = 4,
FOLLOWERTEST = 16, FOLLOWERBULLY = 5,
FOLLOWERBULLY = 32, BOSSKILLA = 6,
BOSSKILLA = 64, BOSSKOJANIY = 7,
BOSSKOJANIY = 128, FOLLOWERKOJANIY = 8,
FOLLOWERKOJANIY = 256, PMCBOT = 9,
PMCBOT = 512, CURSEDASSAULT = 10,
CURSEDASSAULT = 1024, BOSSGLUHAR = 11,
BOSSGLUHAR = 2048, FOLLOWERGLUHARASSAULT = 12,
FOLLOWERGLUHARASSAULT = 4096, FOLLOWERGLUHARSECURITY = 13,
FOLLOWERGLUHARSECURITY = 8192, FOLLOWERGLUHARSCOUT = 14,
FOLLOWERGLUHARSCOUT = 16384, FOLLOWERGLUHARSNIPE = 15,
FOLLOWERGLUHARSNIPE = 32768, FOLLOWERSANITAR = 16,
FOLLOWERSANITAR = 65536, BOSSSANITAR = 17,
BOSSSANITAR = 131072, TEST = 18,
TEST = 262144, ASSAULTGROUP = 19,
ASSAULTGROUP = 524288, SECTANTWARRIOR = 20,
SECTANTWARRIOR = 1048576, SECTANTPRIEST = 21,
SECTANTPRIEST = 2097152, BOSSTAGILLA = 22,
BOSSTAGILLA = 4194304, FOLLOWERTAGILLA = 23,
FOLLOWERTAGILLA = 8388608, EXUSEC = 24,
EXUSEC = 16777216, GIFTER = 25,
GIFTER = 33554432, BOSSKNIGHT = 26,
BOSSKNIGHT = 67108864, FOLLOWERBIGPIPE = 27,
FOLLOWERBIGPIPE = 134217728, FOLLOWERBIRDEYE = 28,
FOLLOWERBIRDEYE = 268435456, BOSSZRYACHIY = 29,
BOSSZRYACHIY = 536870912, FOLLOWERZRYACHIY = 30,
FOLLOWERZRYACHIY = 1073741824 ARENAFIGHTEREVENT = 31
} }

View File

@ -70,8 +70,11 @@ export interface EquipmentFilters {
weaponModLimits: ModLimits; weaponModLimits: ModLimits;
weaponSightWhitelist: Record<string, string[]>; weaponSightWhitelist: Record<string, string[]>;
faceShieldIsActiveChancePercent?: number; faceShieldIsActiveChancePercent?: number;
lightLaserIsActiveChancePercent?: number; lightIsActiveDayChancePercent?: number;
nvgIsActiveChancePercent?: number; lightIsActiveNightChancePercent?: number;
laserIsActiveChancePercent?: number;
nvgIsActiveChanceDayPercent?: number;
nvgIsActiveChanceNightPercent?: number;
randomisation: RandomisationDetails[]; randomisation: RandomisationDetails[];
blacklist: EquipmentFilterDetails[]; blacklist: EquipmentFilterDetails[];
whitelist: EquipmentFilterDetails[]; whitelist: EquipmentFilterDetails[];

View File

@ -21,6 +21,8 @@ export interface Sell {
reputation: Reputation; reputation: Reputation;
/** How many hours are simulated to figure out if player offer was sold */ /** How many hours are simulated to figure out if player offer was sold */
simulatedSellHours: number; simulatedSellHours: number;
/**Seconds from clicking remove to remove offer from market */
expireSeconds: number;
} }
export interface Chance { export interface Chance {
base: number; base: number;

View File

@ -43,6 +43,10 @@ export declare class GameController {
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer); constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer);
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void; gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
/**
* BSG have two values for shotgun dispersion, we make sure both have the same value
*/
protected fixShotgunDispersions(): void;
/** /**
* Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it * Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it
* @param pmcProfile Player profile * @param pmcProfile Player profile

View File

@ -102,6 +102,10 @@ export declare class InventoryController {
foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse; foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse;
/** /**
* Toggles "Toggleable" items like night vision goggles and face shields. * Toggles "Toggleable" items like night vision goggles and face shields.
* @param pmcData player profile
* @param body Toggle request
* @param sessionID Session id
* @returns IItemEventRouterResponse
*/ */
toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse; toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse;
/** /**

View File

@ -1,3 +1,4 @@
import { ApplicationContext } from "../context/ApplicationContext";
import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper"; import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper";
import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem"; import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem";
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem"; import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
@ -15,10 +16,11 @@ export declare class BotGeneratorHelper {
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected durabilityLimitsHelper: DurabilityLimitsHelper; protected durabilityLimitsHelper: DurabilityLimitsHelper;
protected itemHelper: ItemHelper; protected itemHelper: ItemHelper;
protected applicationContext: ApplicationContext;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected botConfig: IBotConfig; protected botConfig: IBotConfig;
constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, localisationService: LocalisationService, configServer: ConfigServer); constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, applicationContext: ApplicationContext, localisationService: LocalisationService, configServer: ConfigServer);
/** /**
* Adds properties to an item * Adds properties to an item
* e.g. Repairable / HasHinge / Foldable / MaxDurability * e.g. Repairable / HasHinge / Foldable / MaxDurability

View File

@ -1,33 +1,34 @@
export declare enum WildSpawnTypeNumber { export declare enum WildSpawnTypeNumber {
MARKSMAN = 0,
ASSAULT = 1, ASSAULT = 1,
MARKSMAN = 2, BOSSTEST = 2,
BOSSTEST = 4, BOSSBULLY = 3,
BOSSBULLY = 8, FOLLOWERTEST = 4,
FOLLOWERTEST = 16, FOLLOWERBULLY = 5,
FOLLOWERBULLY = 32, BOSSKILLA = 6,
BOSSKILLA = 64, BOSSKOJANIY = 7,
BOSSKOJANIY = 128, FOLLOWERKOJANIY = 8,
FOLLOWERKOJANIY = 256, PMCBOT = 9,
PMCBOT = 512, CURSEDASSAULT = 10,
CURSEDASSAULT = 1024, BOSSGLUHAR = 11,
BOSSGLUHAR = 2048, FOLLOWERGLUHARASSAULT = 12,
FOLLOWERGLUHARASSAULT = 4096, FOLLOWERGLUHARSECURITY = 13,
FOLLOWERGLUHARSECURITY = 8192, FOLLOWERGLUHARSCOUT = 14,
FOLLOWERGLUHARSCOUT = 16384, FOLLOWERGLUHARSNIPE = 15,
FOLLOWERGLUHARSNIPE = 32768, FOLLOWERSANITAR = 16,
FOLLOWERSANITAR = 65536, BOSSSANITAR = 17,
BOSSSANITAR = 131072, TEST = 18,
TEST = 262144, ASSAULTGROUP = 19,
ASSAULTGROUP = 524288, SECTANTWARRIOR = 20,
SECTANTWARRIOR = 1048576, SECTANTPRIEST = 21,
SECTANTPRIEST = 2097152, BOSSTAGILLA = 22,
BOSSTAGILLA = 4194304, FOLLOWERTAGILLA = 23,
FOLLOWERTAGILLA = 8388608, EXUSEC = 24,
EXUSEC = 16777216, GIFTER = 25,
GIFTER = 33554432, BOSSKNIGHT = 26,
BOSSKNIGHT = 67108864, FOLLOWERBIGPIPE = 27,
FOLLOWERBIGPIPE = 134217728, FOLLOWERBIRDEYE = 28,
FOLLOWERBIRDEYE = 268435456, BOSSZRYACHIY = 29,
BOSSZRYACHIY = 536870912, FOLLOWERZRYACHIY = 30,
FOLLOWERZRYACHIY = 1073741824 ARENAFIGHTEREVENT = 31
} }

View File

@ -70,8 +70,11 @@ export interface EquipmentFilters {
weaponModLimits: ModLimits; weaponModLimits: ModLimits;
weaponSightWhitelist: Record<string, string[]>; weaponSightWhitelist: Record<string, string[]>;
faceShieldIsActiveChancePercent?: number; faceShieldIsActiveChancePercent?: number;
lightLaserIsActiveChancePercent?: number; lightIsActiveDayChancePercent?: number;
nvgIsActiveChancePercent?: number; lightIsActiveNightChancePercent?: number;
laserIsActiveChancePercent?: number;
nvgIsActiveChanceDayPercent?: number;
nvgIsActiveChanceNightPercent?: number;
randomisation: RandomisationDetails[]; randomisation: RandomisationDetails[];
blacklist: EquipmentFilterDetails[]; blacklist: EquipmentFilterDetails[];
whitelist: EquipmentFilterDetails[]; whitelist: EquipmentFilterDetails[];

View File

@ -21,6 +21,8 @@ export interface Sell {
reputation: Reputation; reputation: Reputation;
/** How many hours are simulated to figure out if player offer was sold */ /** How many hours are simulated to figure out if player offer was sold */
simulatedSellHours: number; simulatedSellHours: number;
/**Seconds from clicking remove to remove offer from market */
expireSeconds: number;
} }
export interface Chance { export interface Chance {
base: number; base: number;

View File

@ -2,7 +2,10 @@ import { DialogueController } from "../controllers/DialogueController";
import { OnUpdate } from "../di/OnUpdate"; import { OnUpdate } from "../di/OnUpdate";
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData"; import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
import { IChatServer } from "../models/eft/dialog/IChatServer"; import { IChatServer } from "../models/eft/dialog/IChatServer";
import { IClearMailMessageRequest } from "../models/eft/dialog/IClearMailMessageRequest";
import { IDeleteFriendRequest } from "../models/eft/dialog/IDeleteFriendRequest";
import { IFriendRequestData } from "../models/eft/dialog/IFriendRequestData"; import { IFriendRequestData } from "../models/eft/dialog/IFriendRequestData";
import { IFriendRequestSendResponse } from "../models/eft/dialog/IFriendRequestSendResponse";
import { IGetAllAttachmentsRequestData } from "../models/eft/dialog/IGetAllAttachmentsRequestData"; import { IGetAllAttachmentsRequestData } from "../models/eft/dialog/IGetAllAttachmentsRequestData";
import { IGetAllAttachmentsResponse } from "../models/eft/dialog/IGetAllAttachmentsResponse"; import { IGetAllAttachmentsResponse } from "../models/eft/dialog/IGetAllAttachmentsResponse";
import { IGetChatServerListRequestData } from "../models/eft/dialog/IGetChatServerListRequestData"; import { IGetChatServerListRequestData } from "../models/eft/dialog/IGetChatServerListRequestData";
@ -13,6 +16,7 @@ import { IGetMailDialogViewRequestData } from "../models/eft/dialog/IGetMailDial
import { IGetMailDialogViewResponseData } from "../models/eft/dialog/IGetMailDialogViewResponseData"; import { IGetMailDialogViewResponseData } from "../models/eft/dialog/IGetMailDialogViewResponseData";
import { IPinDialogRequestData } from "../models/eft/dialog/IPinDialogRequestData"; import { IPinDialogRequestData } from "../models/eft/dialog/IPinDialogRequestData";
import { IRemoveDialogRequestData } from "../models/eft/dialog/IRemoveDialogRequestData"; import { IRemoveDialogRequestData } from "../models/eft/dialog/IRemoveDialogRequestData";
import { IRemoveMailMessageRequest } from "../models/eft/dialog/IRemoveMailMessageRequest";
import { ISendMessageRequest } from "../models/eft/dialog/ISendMessageRequest"; import { ISendMessageRequest } from "../models/eft/dialog/ISendMessageRequest";
import { ISetDialogReadRequestData } from "../models/eft/dialog/ISetDialogReadRequestData"; import { ISetDialogReadRequestData } from "../models/eft/dialog/ISetDialogReadRequestData";
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData"; import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
@ -37,9 +41,13 @@ export declare class DialogueCallbacks implements OnUpdate {
* @returns * @returns
*/ */
getChatServerList(url: string, info: IGetChatServerListRequestData, sessionID: string): IGetBodyResponseData<IChatServer[]>; getChatServerList(url: string, info: IGetChatServerListRequestData, sessionID: string): IGetBodyResponseData<IChatServer[]>;
/** Handle client/mail/dialog/list */
getMailDialogList(url: string, info: IGetMailDialogListRequestData, sessionID: string): IGetBodyResponseData<DialogueInfo[]>; getMailDialogList(url: string, info: IGetMailDialogListRequestData, sessionID: string): IGetBodyResponseData<DialogueInfo[]>;
/** Handle client/mail/dialog/view */
getMailDialogView(url: string, info: IGetMailDialogViewRequestData, sessionID: string): IGetBodyResponseData<IGetMailDialogViewResponseData>; getMailDialogView(url: string, info: IGetMailDialogViewRequestData, sessionID: string): IGetBodyResponseData<IGetMailDialogViewResponseData>;
/** Handle client/mail/dialog/info */
getMailDialogInfo(url: string, info: IGetMailDialogInfoRequestData, sessionID: string): IGetBodyResponseData<DialogueInfo>; getMailDialogInfo(url: string, info: IGetMailDialogInfoRequestData, sessionID: string): IGetBodyResponseData<DialogueInfo>;
/** Handle client/mail/dialog/remove */
removeDialog(url: string, info: IRemoveDialogRequestData, sessionID: string): IGetBodyResponseData<any[]>; removeDialog(url: string, info: IRemoveDialogRequestData, sessionID: string): IGetBodyResponseData<any[]>;
pinDialog(url: string, info: IPinDialogRequestData, sessionID: string): IGetBodyResponseData<any[]>; pinDialog(url: string, info: IPinDialogRequestData, sessionID: string): IGetBodyResponseData<any[]>;
unpinDialog(url: string, info: IPinDialogRequestData, sessionID: string): IGetBodyResponseData<any[]>; unpinDialog(url: string, info: IPinDialogRequestData, sessionID: string): IGetBodyResponseData<any[]>;
@ -49,10 +57,14 @@ export declare class DialogueCallbacks implements OnUpdate {
* @returns IGetAllAttachmentsResponse * @returns IGetAllAttachmentsResponse
*/ */
getAllAttachments(url: string, info: IGetAllAttachmentsRequestData, sessionID: string): IGetBodyResponseData<IGetAllAttachmentsResponse>; getAllAttachments(url: string, info: IGetAllAttachmentsRequestData, sessionID: string): IGetBodyResponseData<IGetAllAttachmentsResponse>;
/** Handle client/friend/request/list/outbox */
listOutbox(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any[]>; listOutbox(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any[]>;
listInbox(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any[]>; listInbox(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any[]>;
friendRequest(url: string, request: IFriendRequestData, sessionID: string): INullResponseData; sendFriendRequest(url: string, request: IFriendRequestData, sessionID: string): IGetBodyResponseData<IFriendRequestSendResponse>;
deleteFriend(url: string, request: IDeleteFriendRequest, sessionID: string): INullResponseData;
sendMessage(url: string, request: ISendMessageRequest, sessionID: string): IGetBodyResponseData<number>; sendMessage(url: string, request: ISendMessageRequest, sessionID: string): IGetBodyResponseData<number>;
clearMail(url: string, request: IClearMailMessageRequest, sessionID: string): IGetBodyResponseData<any[]>;
removeMail(url: string, request: IRemoveMailMessageRequest, sessionID: string): IGetBodyResponseData<any[]>;
onUpdate(timeSinceLastRun: number): Promise<boolean>; onUpdate(timeSinceLastRun: number): Promise<boolean>;
getRoute(): string; getRoute(): string;
} }

View File

@ -11,13 +11,15 @@ import { IServerDetails } from "../models/eft/game/IServerDetails";
import { IVersionValidateRequestData } from "../models/eft/game/IVersionValidateRequestData"; import { IVersionValidateRequestData } from "../models/eft/game/IVersionValidateRequestData";
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData"; import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
import { INullResponseData } from "../models/eft/httpResponse/INullResponseData"; import { INullResponseData } from "../models/eft/httpResponse/INullResponseData";
import { SaveServer } from "../servers/SaveServer";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
import { Watermark } from "../utils/Watermark"; import { Watermark } from "../utils/Watermark";
declare class GameCallbacks { declare class GameCallbacks {
protected httpResponse: HttpResponseUtil; protected httpResponse: HttpResponseUtil;
protected watermark: Watermark; protected watermark: Watermark;
protected saveServer: SaveServer;
protected gameController: GameController; protected gameController: GameController;
constructor(httpResponse: HttpResponseUtil, watermark: Watermark, gameController: GameController); constructor(httpResponse: HttpResponseUtil, watermark: Watermark, saveServer: SaveServer, gameController: GameController);
/** /**
* Handle client/game/version/validate * Handle client/game/version/validate
* @returns INullResponseData * @returns INullResponseData
@ -30,6 +32,7 @@ declare class GameCallbacks {
gameStart(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IGameStartResponse>; gameStart(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IGameStartResponse>;
/** /**
* Handle client/game/logout * Handle client/game/logout
* Save profiles on game close
* @returns IGameLogoutResponseData * @returns IGameLogoutResponseData
*/ */
gameLogout(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IGameLogoutResponseData>; gameLogout(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IGameLogoutResponseData>;

View File

@ -3,6 +3,9 @@ import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
import { IPmcData } from "../models/eft/common/IPmcData"; import { IPmcData } from "../models/eft/common/IPmcData";
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData"; import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
import { INullResponseData } from "../models/eft/httpResponse/INullResponseData"; import { INullResponseData } from "../models/eft/httpResponse/INullResponseData";
import { IAcceptGroupInviteRequest } from "../models/eft/match/IAcceptGroupInviteRequest";
import { IAcceptGroupInviteResponse } from "../models/eft/match/IAcceptGroupInviteResponse";
import { ICancelGroupInviteRequest } from "../models/eft/match/ICancelGroupInviteRequest";
import { ICreateGroupRequestData } from "../models/eft/match/ICreateGroupRequestData"; import { ICreateGroupRequestData } from "../models/eft/match/ICreateGroupRequestData";
import { IEndOfflineRaidRequestData } from "../models/eft/match/IEndOfflineRaidRequestData"; import { IEndOfflineRaidRequestData } from "../models/eft/match/IEndOfflineRaidRequestData";
import { IGetGroupStatusRequestData } from "../models/eft/match/IGetGroupStatusRequestData"; import { IGetGroupStatusRequestData } from "../models/eft/match/IGetGroupStatusRequestData";
@ -11,6 +14,8 @@ import { IGetRaidConfigurationRequestData } from "../models/eft/match/IGetRaidCo
import { IJoinMatchRequestData } from "../models/eft/match/IJoinMatchRequestData"; import { IJoinMatchRequestData } from "../models/eft/match/IJoinMatchRequestData";
import { IJoinMatchResult } from "../models/eft/match/IJoinMatchResult"; import { IJoinMatchResult } from "../models/eft/match/IJoinMatchResult";
import { IPutMetricsRequestData } from "../models/eft/match/IPutMetricsRequestData"; import { IPutMetricsRequestData } from "../models/eft/match/IPutMetricsRequestData";
import { IRemovePlayerFromGroupRequest } from "../models/eft/match/IRemovePlayerFromGroupRequest";
import { ISendGroupInviteRequest } from "../models/eft/match/ISendGroupInviteRequest";
import { IUpdatePingRequestData } from "../models/eft/match/IUpdatePingRequestData"; import { IUpdatePingRequestData } from "../models/eft/match/IUpdatePingRequestData";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
@ -26,9 +31,12 @@ export declare class MatchCallbacks {
exitToMenu(url: string, info: IEmptyRequestData, sessionID: string): INullResponseData; exitToMenu(url: string, info: IEmptyRequestData, sessionID: string): INullResponseData;
startGroupSearch(url: string, info: IEmptyRequestData, sessionID: string): INullResponseData; startGroupSearch(url: string, info: IEmptyRequestData, sessionID: string): INullResponseData;
stopGroupSearch(url: string, info: IEmptyRequestData, sessionID: string): INullResponseData; stopGroupSearch(url: string, info: IEmptyRequestData, sessionID: string): INullResponseData;
sendGroupInvite(url: string, info: any, sessionID: string): INullResponseData; sendGroupInvite(url: string, info: ISendGroupInviteRequest, sessionID: string): IGetBodyResponseData<string>;
acceptGroupInvite(url: string, info: any, sessionID: string): INullResponseData; /** Handle client/match/group/invite/accept */
cancelGroupInvite(url: string, info: any, sessionID: string): INullResponseData; acceptGroupInvite(url: string, info: IAcceptGroupInviteRequest, sessionID: string): IGetBodyResponseData<IAcceptGroupInviteResponse[]>;
/** Handle client/match/group/invite/cancel */
cancelGroupInvite(url: string, info: ICancelGroupInviteRequest, sessionID: string): IGetBodyResponseData<boolean>;
cancelAllGroupInvite(url: string, info: any, sessionID: string): INullResponseData;
putMetrics(url: string, info: IPutMetricsRequestData, sessionID: string): INullResponseData; putMetrics(url: string, info: IPutMetricsRequestData, sessionID: string): INullResponseData;
getProfile(url: string, info: IGetProfileRequestData, sessionID: string): IGetBodyResponseData<IPmcData[]>; getProfile(url: string, info: IGetProfileRequestData, sessionID: string): IGetBodyResponseData<IPmcData[]>;
serverAvailable(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any> | IGetBodyResponseData<true>; serverAvailable(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any> | IGetBodyResponseData<true>;
@ -41,6 +49,7 @@ export declare class MatchCallbacks {
getGroupStatus(url: string, info: IGetGroupStatusRequestData, sessionID: string): IGetBodyResponseData<any>; getGroupStatus(url: string, info: IGetGroupStatusRequestData, sessionID: string): IGetBodyResponseData<any>;
createGroup(url: string, info: ICreateGroupRequestData, sessionID: string): IGetBodyResponseData<any>; createGroup(url: string, info: ICreateGroupRequestData, sessionID: string): IGetBodyResponseData<any>;
deleteGroup(url: string, info: any, sessionID: string): INullResponseData; deleteGroup(url: string, info: any, sessionID: string): INullResponseData;
removePlayerFromGroup(url: string, info: IRemovePlayerFromGroupRequest, sessionID: string): INullResponseData;
endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData;
getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData;
} }

View File

@ -1,9 +1,13 @@
import { OnLoad } from "../di/OnLoad"; import { OnLoad } from "../di/OnLoad";
import { OnUpdate } from "../di/OnUpdate"; import { OnUpdate } from "../di/OnUpdate";
import { ICoreConfig } from "../models/spt/config/ICoreConfig";
import { ConfigServer } from "../servers/ConfigServer";
import { SaveServer } from "../servers/SaveServer"; import { SaveServer } from "../servers/SaveServer";
export declare class SaveCallbacks implements OnLoad, OnUpdate { export declare class SaveCallbacks implements OnLoad, OnUpdate {
protected saveServer: SaveServer; protected saveServer: SaveServer;
constructor(saveServer: SaveServer); protected configServer: ConfigServer;
protected coreConfig: ICoreConfig;
constructor(saveServer: SaveServer, configServer: ConfigServer);
onLoad(): Promise<void>; onLoad(): Promise<void>;
getRoute(): string; getRoute(): string;
onUpdate(secondsSinceLastRun: number): Promise<boolean>; onUpdate(secondsSinceLastRun: number): Promise<boolean>;

View File

@ -13,6 +13,7 @@ import { ConfigServer } from "../servers/ConfigServer";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
import { BotGenerationCacheService } from "../services/BotGenerationCacheService"; import { BotGenerationCacheService } from "../services/BotGenerationCacheService";
import { LocalisationService } from "../services/LocalisationService"; import { LocalisationService } from "../services/LocalisationService";
import { MatchBotDetailsCacheService } from "../services/MatchBotDetailsCacheService";
import { JsonUtil } from "../utils/JsonUtil"; import { JsonUtil } from "../utils/JsonUtil";
export declare class BotController { export declare class BotController {
protected logger: ILogger; protected logger: ILogger;
@ -21,6 +22,7 @@ export declare class BotController {
protected botHelper: BotHelper; protected botHelper: BotHelper;
protected botDifficultyHelper: BotDifficultyHelper; protected botDifficultyHelper: BotDifficultyHelper;
protected botGenerationCacheService: BotGenerationCacheService; protected botGenerationCacheService: BotGenerationCacheService;
protected matchBotDetailsCacheService: MatchBotDetailsCacheService;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected profileHelper: ProfileHelper; protected profileHelper: ProfileHelper;
protected configServer: ConfigServer; protected configServer: ConfigServer;
@ -28,7 +30,7 @@ export declare class BotController {
protected jsonUtil: JsonUtil; protected jsonUtil: JsonUtil;
protected botConfig: IBotConfig; protected botConfig: IBotConfig;
static readonly pmcTypeLabel = "PMC"; static readonly pmcTypeLabel = "PMC";
constructor(logger: ILogger, databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, botDifficultyHelper: BotDifficultyHelper, botGenerationCacheService: BotGenerationCacheService, localisationService: LocalisationService, profileHelper: ProfileHelper, configServer: ConfigServer, applicationContext: ApplicationContext, jsonUtil: JsonUtil); constructor(logger: ILogger, databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, botDifficultyHelper: BotDifficultyHelper, botGenerationCacheService: BotGenerationCacheService, matchBotDetailsCacheService: MatchBotDetailsCacheService, localisationService: LocalisationService, profileHelper: ProfileHelper, configServer: ConfigServer, applicationContext: ApplicationContext, jsonUtil: JsonUtil);
/** /**
* Return the number of bot loadout varieties to be generated * Return the number of bot loadout varieties to be generated
* @param type bot Type we want the loadout gen count for * @param type bot Type we want the loadout gen count for

View File

@ -2,7 +2,7 @@ import { DialogueHelper } from "../helpers/DialogueHelper";
import { IGetAllAttachmentsResponse } from "../models/eft/dialog/IGetAllAttachmentsResponse"; import { IGetAllAttachmentsResponse } from "../models/eft/dialog/IGetAllAttachmentsResponse";
import { IGetFriendListDataResponse } from "../models/eft/dialog/IGetFriendListDataResponse"; import { IGetFriendListDataResponse } from "../models/eft/dialog/IGetFriendListDataResponse";
import { IGetMailDialogViewResponseData } from "../models/eft/dialog/IGetMailDialogViewResponseData"; import { IGetMailDialogViewResponseData } from "../models/eft/dialog/IGetMailDialogViewResponseData";
import { DialogueInfo, Message } from "../models/eft/profile/IAkiProfile"; import { DialogueInfo, IAkiProfile, IUserDialogInfo, Message } from "../models/eft/profile/IAkiProfile";
import { SaveServer } from "../servers/SaveServer"; import { SaveServer } from "../servers/SaveServer";
import { TimeUtil } from "../utils/TimeUtil"; import { TimeUtil } from "../utils/TimeUtil";
export declare class DialogueController { export declare class DialogueController {
@ -35,6 +35,7 @@ export declare class DialogueController {
* @returns IGetMailDialogViewResponseData object * @returns IGetMailDialogViewResponseData object
*/ */
generateDialogueView(dialogueID: string, sessionID: string): IGetMailDialogViewResponseData; generateDialogueView(dialogueID: string, sessionID: string): IGetMailDialogViewResponseData;
protected getProfilesForMail(pmcProfile: IAkiProfile, dialogUsers: IUserDialogInfo[]): IUserDialogInfo[];
/** /**
* Get a count of messages with attachments from a particular dialog * Get a count of messages with attachments from a particular dialog
* @param sessionID Session id * @param sessionID Session id

View File

@ -43,6 +43,15 @@ export declare class GameController {
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer); constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer);
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void; gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
/**
* BSG have two values for shotgun dispersion, we make sure both have the same value
*/
protected fixShotgunDispersions(): void;
/**
* Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it
* @param pmcProfile Player profile
*/
protected warnOnActiveBotReloadSkill(pmcProfile: IPmcData): void;
/** /**
* When player logs in, iterate over all active effects and reduce timer * When player logs in, iterate over all active effects and reduce timer
* TODO - add body part HP regen * TODO - add body part HP regen

View File

@ -3,6 +3,7 @@ import { PlayerScavGenerator } from "../generators/PlayerScavGenerator";
import { HealthHelper } from "../helpers/HealthHelper"; import { HealthHelper } from "../helpers/HealthHelper";
import { InRaidHelper } from "../helpers/InRaidHelper"; import { InRaidHelper } from "../helpers/InRaidHelper";
import { ItemHelper } from "../helpers/ItemHelper"; import { ItemHelper } from "../helpers/ItemHelper";
import { NotificationSendHelper } from "../helpers/NotificationSendHelper";
import { ProfileHelper } from "../helpers/ProfileHelper"; import { ProfileHelper } from "../helpers/ProfileHelper";
import { QuestHelper } from "../helpers/QuestHelper"; import { QuestHelper } from "../helpers/QuestHelper";
import { TraderHelper } from "../helpers/TraderHelper"; import { TraderHelper } from "../helpers/TraderHelper";
@ -17,6 +18,9 @@ import { ConfigServer } from "../servers/ConfigServer";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
import { SaveServer } from "../servers/SaveServer"; import { SaveServer } from "../servers/SaveServer";
import { InsuranceService } from "../services/InsuranceService"; import { InsuranceService } from "../services/InsuranceService";
import { LocaleService } from "../services/LocaleService";
import { MatchBotDetailsCacheService } from "../services/MatchBotDetailsCacheService";
import { PmcChatResponseService } from "../services/PmcChatResponseService";
import { JsonUtil } from "../utils/JsonUtil"; import { JsonUtil } from "../utils/JsonUtil";
import { TimeUtil } from "../utils/TimeUtil"; import { TimeUtil } from "../utils/TimeUtil";
/** /**
@ -28,10 +32,14 @@ export declare class InraidController {
protected jsonUtil: JsonUtil; protected jsonUtil: JsonUtil;
protected timeUtil: TimeUtil; protected timeUtil: TimeUtil;
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected localeService: LocaleService;
protected pmcChatResponseService: PmcChatResponseService;
protected matchBotDetailsCacheService: MatchBotDetailsCacheService;
protected questHelper: QuestHelper; protected questHelper: QuestHelper;
protected itemHelper: ItemHelper; protected itemHelper: ItemHelper;
protected profileHelper: ProfileHelper; protected profileHelper: ProfileHelper;
protected playerScavGenerator: PlayerScavGenerator; protected playerScavGenerator: PlayerScavGenerator;
protected notificationSendHelper: NotificationSendHelper;
protected healthHelper: HealthHelper; protected healthHelper: HealthHelper;
protected traderHelper: TraderHelper; protected traderHelper: TraderHelper;
protected insuranceService: InsuranceService; protected insuranceService: InsuranceService;
@ -40,7 +48,7 @@ export declare class InraidController {
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected airdropConfig: IAirdropConfig; protected airdropConfig: IAirdropConfig;
protected inraidConfig: IInRaidConfig; protected inraidConfig: IInRaidConfig;
constructor(logger: ILogger, saveServer: SaveServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, questHelper: QuestHelper, itemHelper: ItemHelper, profileHelper: ProfileHelper, playerScavGenerator: PlayerScavGenerator, healthHelper: HealthHelper, traderHelper: TraderHelper, insuranceService: InsuranceService, inRaidHelper: InRaidHelper, applicationContext: ApplicationContext, configServer: ConfigServer); constructor(logger: ILogger, saveServer: SaveServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, localeService: LocaleService, pmcChatResponseService: PmcChatResponseService, matchBotDetailsCacheService: MatchBotDetailsCacheService, questHelper: QuestHelper, itemHelper: ItemHelper, profileHelper: ProfileHelper, playerScavGenerator: PlayerScavGenerator, notificationSendHelper: NotificationSendHelper, healthHelper: HealthHelper, traderHelper: TraderHelper, insuranceService: InsuranceService, inRaidHelper: InRaidHelper, applicationContext: ApplicationContext, configServer: ConfigServer);
/** /**
* Save locationId to active profiles inraid object AND app context * Save locationId to active profiles inraid object AND app context
* @param sessionID Session id * @param sessionID Session id
@ -89,6 +97,7 @@ export declare class InraidController {
* @param offraidData post-raid data of raid * @param offraidData post-raid data of raid
*/ */
protected savePlayerScavProgress(sessionID: string, offraidData: ISaveProgressRequestData): void; protected savePlayerScavProgress(sessionID: string, offraidData: ISaveProgressRequestData): void;
protected sendLostInsuranceMessage(sessionID: string): void;
/** /**
* Is the player dead after a raid - dead is anything other than "survived" / "runner" * Is the player dead after a raid - dead is anything other than "survived" / "runner"
* @param statusOnExit exit value from offraidData object * @param statusOnExit exit value from offraidData object

View File

@ -102,6 +102,10 @@ export declare class InventoryController {
foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse; foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse;
/** /**
* Toggles "Toggleable" items like night vision goggles and face shields. * Toggles "Toggleable" items like night vision goggles and face shields.
* @param pmcData player profile
* @param body Toggle request
* @param sessionID Session id
* @returns IItemEventRouterResponse
*/ */
toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse; toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse;
/** /**

View File

@ -3,20 +3,28 @@ import { IChangeRequestData } from "../models/eft/launcher/IChangeRequestData";
import { ILoginRequestData } from "../models/eft/launcher/ILoginRequestData"; import { ILoginRequestData } from "../models/eft/launcher/ILoginRequestData";
import { IRegisterData } from "../models/eft/launcher/IRegisterData"; import { IRegisterData } from "../models/eft/launcher/IRegisterData";
import { Info } from "../models/eft/profile/IAkiProfile"; import { Info } from "../models/eft/profile/IAkiProfile";
import { IConnectResponse } from "../models/eft/profile/IConnectResponse";
import { ICoreConfig } from "../models/spt/config/ICoreConfig"; import { ICoreConfig } from "../models/spt/config/ICoreConfig";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
import { SaveServer } from "../servers/SaveServer"; import { SaveServer } from "../servers/SaveServer";
import { LocalisationService } from "../services/LocalisationService";
import { HashUtil } from "../utils/HashUtil"; import { HashUtil } from "../utils/HashUtil";
export declare class LauncherController { export declare class LauncherController {
protected hashUtil: HashUtil; protected hashUtil: HashUtil;
protected saveServer: SaveServer; protected saveServer: SaveServer;
protected httpServerHelper: HttpServerHelper; protected httpServerHelper: HttpServerHelper;
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected coreConfig: ICoreConfig; protected coreConfig: ICoreConfig;
constructor(hashUtil: HashUtil, saveServer: SaveServer, httpServerHelper: HttpServerHelper, databaseServer: DatabaseServer, configServer: ConfigServer); constructor(hashUtil: HashUtil, saveServer: SaveServer, httpServerHelper: HttpServerHelper, databaseServer: DatabaseServer, localisationService: LocalisationService, configServer: ConfigServer);
connect(): any; connect(): IConnectResponse;
/**
* Get descriptive text for each of the profile edtions a player can choose
* @returns
*/
protected getProfileDescriptions(): Record<string, string>;
find(sessionIdKey: string): Info; find(sessionIdKey: string): Info;
login(info: ILoginRequestData): string; login(info: ILoginRequestData): string;
register(info: IRegisterData): string; register(info: IRegisterData): string;

View File

@ -1,9 +1,12 @@
import { LocationGenerator } from "../generators/LocationGenerator"; import { LocationGenerator } from "../generators/LocationGenerator";
import { LootGenerator } from "../generators/LootGenerator"; import { LootGenerator } from "../generators/LootGenerator";
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
import { ILocationBase } from "../models/eft/common/ILocationBase"; import { ILocationBase } from "../models/eft/common/ILocationBase";
import { ILocationsGenerateAllResponse } from "../models/eft/common/ILocationsSourceDestinationBase"; import { ILocationsGenerateAllResponse } from "../models/eft/common/ILocationsSourceDestinationBase";
import { AirdropTypeEnum } from "../models/enums/AirdropType";
import { IAirdropConfig } from "../models/spt/config/IAirdropConfig"; import { IAirdropConfig } from "../models/spt/config/IAirdropConfig";
import { LootItem } from "../models/spt/services/LootItem"; import { LootItem } from "../models/spt/services/LootItem";
import { LootRequest } from "../models/spt/services/LootRequest";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
@ -14,6 +17,7 @@ import { TimeUtil } from "../utils/TimeUtil";
export declare class LocationController { export declare class LocationController {
protected jsonUtil: JsonUtil; protected jsonUtil: JsonUtil;
protected hashUtil: HashUtil; protected hashUtil: HashUtil;
protected weightedRandomHelper: WeightedRandomHelper;
protected logger: ILogger; protected logger: ILogger;
protected locationGenerator: LocationGenerator; protected locationGenerator: LocationGenerator;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
@ -22,14 +26,29 @@ export declare class LocationController {
protected timeUtil: TimeUtil; protected timeUtil: TimeUtil;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected airdropConfig: IAirdropConfig; protected airdropConfig: IAirdropConfig;
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer); constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer);
get(location: string): ILocationBase; get(location: string): ILocationBase;
generate(name: string): ILocationBase; generate(name: string): ILocationBase;
/**
* Get all maps base location properties without loot data
* @returns ILocationsGenerateAllResponse
*/
generateAll(): ILocationsGenerateAllResponse; generateAll(): ILocationsGenerateAllResponse;
/** /**
* Get loot for an airdop container * Get loot for an airdop container
* Generates it randomly based on config/airdrop.json values * Generates it randomly based on config/airdrop.json values
* @returns Array of LootItem * @returns Array of LootItem objects
*/ */
getAirdropLoot(): LootItem[]; getAirdropLoot(): LootItem[];
/**
* Randomly pick a type of airdrop loot using weighted values from config
* @returns airdrop type value
*/
protected chooseAirdropType(): AirdropTypeEnum;
/**
* Get the configuration for a specific type of airdrop
* @param airdropType Type of airdrop to get settings for
* @returns LootRequest
*/
protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest;
} }

View File

@ -5,7 +5,9 @@ import { ProfileHelper } from "../helpers/ProfileHelper";
import { QuestHelper } from "../helpers/QuestHelper"; import { QuestHelper } from "../helpers/QuestHelper";
import { TraderHelper } from "../helpers/TraderHelper"; import { TraderHelper } from "../helpers/TraderHelper";
import { IPmcData } from "../models/eft/common/IPmcData"; import { IPmcData } from "../models/eft/common/IPmcData";
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
import { IMiniProfile } from "../models/eft/launcher/IMiniProfile"; import { IMiniProfile } from "../models/eft/launcher/IMiniProfile";
import { IAkiProfile } from "../models/eft/profile/IAkiProfile";
import { IProfileChangeNicknameRequestData } from "../models/eft/profile/IProfileChangeNicknameRequestData"; import { IProfileChangeNicknameRequestData } from "../models/eft/profile/IProfileChangeNicknameRequestData";
import { IProfileChangeVoiceRequestData } from "../models/eft/profile/IProfileChangeVoiceRequestData"; import { IProfileChangeVoiceRequestData } from "../models/eft/profile/IProfileChangeVoiceRequestData";
import { IProfileCreateRequestData } from "../models/eft/profile/IProfileCreateRequestData"; import { IProfileCreateRequestData } from "../models/eft/profile/IProfileCreateRequestData";
@ -36,6 +38,7 @@ export declare class ProfileController {
getMiniProfile(sessionID: string): any; getMiniProfile(sessionID: string): any;
getCompleteProfile(sessionID: string): IPmcData[]; getCompleteProfile(sessionID: string): IPmcData[];
createProfile(info: IProfileCreateRequestData, sessionID: string): void; createProfile(info: IProfileCreateRequestData, sessionID: string): void;
protected givePlayerStartingQuestRewards(profileDetails: IAkiProfile, sessionID: string, response: IItemEventRouterResponse): void;
/** /**
* Generate a player scav object * Generate a player scav object
* pmc profile MUST exist first before pscav can be generated * pmc profile MUST exist first before pscav can be generated

View File

@ -4,7 +4,8 @@ import { ProfileHelper } from "../helpers/ProfileHelper";
import { QuestConditionHelper } from "../helpers/QuestConditionHelper"; import { QuestConditionHelper } from "../helpers/QuestConditionHelper";
import { QuestHelper } from "../helpers/QuestHelper"; import { QuestHelper } from "../helpers/QuestHelper";
import { IPmcData } from "../models/eft/common/IPmcData"; import { IPmcData } from "../models/eft/common/IPmcData";
import { IQuest, Reward } from "../models/eft/common/tables/IQuest"; import { Item } from "../models/eft/common/tables/IItem";
import { AvailableForConditions, IQuest, Reward } from "../models/eft/common/tables/IQuest";
import { IRepeatableQuest } from "../models/eft/common/tables/IRepeatableQuests"; import { IRepeatableQuest } from "../models/eft/common/tables/IRepeatableQuests";
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
import { IAcceptQuestRequestData } from "../models/eft/quests/IAcceptQuestRequestData"; import { IAcceptQuestRequestData } from "../models/eft/quests/IAcceptQuestRequestData";
@ -46,10 +47,10 @@ export declare class QuestController {
getClientQuests(sessionID: string): IQuest[]; getClientQuests(sessionID: string): IQuest[];
/** /**
* Is the quest for the opposite side the player is on * Is the quest for the opposite side the player is on
* @param side player side (usec/bear) * @param playerSide Player side (usec/bear)
* @param questId questId to check * @param questId QuestId to check
*/ */
protected questIsForOtherSide(side: string, questId: string): boolean; protected questIsForOtherSide(playerSide: string, questId: string): boolean;
/** /**
* Handle the client accepting a quest and starting it * Handle the client accepting a quest and starting it
* Send starting rewards if any to player and * Send starting rewards if any to player and
@ -124,6 +125,22 @@ export declare class QuestController {
* @returns IItemEventRouterResponse * @returns IItemEventRouterResponse
*/ */
handoverQuest(pmcData: IPmcData, handoverQuestRequest: IHandoverQuestRequestData, sessionID: string): IItemEventRouterResponse; handoverQuest(pmcData: IPmcData, handoverQuestRequest: IHandoverQuestRequestData, sessionID: string): IItemEventRouterResponse;
/**
* Show warning to user and write to log that repeatable quest failed a condition check
* @param handoverQuestRequest Quest request
* @param output Response to send to user
* @returns IItemEventRouterResponse
*/
protected showRepeatableQuestInvalidConditionError(handoverQuestRequest: IHandoverQuestRequestData, output: IItemEventRouterResponse): IItemEventRouterResponse;
/**
* Show warning to user and write to log quest item handed over did not match what is required
* @param handoverQuestRequest Quest request
* @param itemHandedOver Non-matching item found
* @param handoverRequirements Quest handover requirements
* @param output Response to send to user
* @returns IItemEventRouterResponse
*/
protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: AvailableForConditions, output: IItemEventRouterResponse): IItemEventRouterResponse;
/** /**
* Increment a backend counter stored value by an amount, * Increment a backend counter stored value by an amount,
* Create counter if it does not exist * Create counter if it does not exist

View File

@ -96,7 +96,7 @@ export declare class BotEquipmentModGenerator {
*/ */
protected getModItemSlot(modSlot: string, parentTemplate: ITemplateItem): Slot; protected getModItemSlot(modSlot: string, parentTemplate: ITemplateItem): Slot;
/** /**
* randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot
* never return true for an item that has 0% spawn chance * never return true for an item that has 0% spawn chance
* @param itemSlot slot the item sits in * @param itemSlot slot the item sits in
* @param modSlot slot the mod sits in * @param modSlot slot the mod sits in

View File

@ -2,7 +2,7 @@ import { BotDifficultyHelper } from "../helpers/BotDifficultyHelper";
import { BotHelper } from "../helpers/BotHelper"; import { BotHelper } from "../helpers/BotHelper";
import { ProfileHelper } from "../helpers/ProfileHelper"; import { ProfileHelper } from "../helpers/ProfileHelper";
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper"; import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
import { Health as PmcHealth, IBotBase, Info, Skills } from "../models/eft/common/tables/IBotBase"; import { Health as PmcHealth, IBaseJsonSkills, IBaseSkill, IBotBase, Info, Skills as botSkills } from "../models/eft/common/tables/IBotBase";
import { Health, IBotType } from "../models/eft/common/tables/IBotType"; import { Health, IBotType } from "../models/eft/common/tables/IBotType";
import { BotGenerationDetails } from "../models/spt/bots/BotGenerationDetails"; import { BotGenerationDetails } from "../models/spt/bots/BotGenerationDetails";
import { IBotConfig } from "../models/spt/config/IBotConfig"; import { IBotConfig } from "../models/spt/config/IBotConfig";
@ -84,7 +84,18 @@ export declare class BotGenerator {
* @returns PmcHealth object * @returns PmcHealth object
*/ */
protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth;
protected generateSkills(skillsObj: Skills): Skills; /**
* Get a bots skills with randomsied progress value between the min and max values
* @param botSkills Skills that should have their progress value randomised
* @returns
*/
protected generateSkills(botSkills: IBaseJsonSkills): botSkills;
/**
* Randomise the progress value of passed in skills based on the min/max value
* @param skills Skills to randomise
* @returns Skills with randomised progress values as an array
*/
protected getSkillsWithRandomisedProgressValue(skills: IBaseSkill[]): IBaseSkill[];
/** /**
* Generate a random Id for a bot and apply to bots _id and aid value * Generate a random Id for a bot and apply to bots _id and aid value
* @param bot bot to update * @param bot bot to update

View File

@ -34,7 +34,7 @@ export declare class BotInventoryGenerator {
/** /**
* Add equipment/weapons/loot to bot * Add equipment/weapons/loot to bot
* @param sessionId Session id * @param sessionId Session id
* @param botJsonTemplate bot/x.json data from db * @param botJsonTemplate Base json db file for the bot having its loot generated
* @param botRole Role bot has (assault/pmcBot) * @param botRole Role bot has (assault/pmcBot)
* @param isPmc Is bot being converted into a pmc * @param isPmc Is bot being converted into a pmc
* @param botLevel Level of bot being generated * @param botLevel Level of bot being generated

View File

@ -3,7 +3,7 @@ import { BotWeaponGeneratorHelper } from "../helpers/BotWeaponGeneratorHelper";
import { HandbookHelper } from "../helpers/HandbookHelper"; import { HandbookHelper } from "../helpers/HandbookHelper";
import { ItemHelper } from "../helpers/ItemHelper"; import { ItemHelper } from "../helpers/ItemHelper";
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase"; import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
import { Chances, Inventory, ItemMinMax, ModsChances } from "../models/eft/common/tables/IBotType"; import { IBotType, Inventory, ModsChances } from "../models/eft/common/tables/IBotType";
import { Item } from "../models/eft/common/tables/IItem"; import { Item } from "../models/eft/common/tables/IItem";
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem"; import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
import { IBotConfig } from "../models/spt/config/IBotConfig"; import { IBotConfig } from "../models/spt/config/IBotConfig";
@ -33,15 +33,13 @@ export declare class BotLootGenerator {
/** /**
* Add loot to bots containers * Add loot to bots containers
* @param sessionId Session id * @param sessionId Session id
* @param templateInventory x.json from database/bots * @param botJsonTemplate Base json db file for the bot having its loot generated
* @param itemCounts Liits on item types to be added as loot
* @param isPmc Will bot be a pmc * @param isPmc Will bot be a pmc
* @param botRole Role of bot, e.g. asssult * @param botRole Role of bot, e.g. asssult
* @param botInventory Inventory to add loot to * @param botInventory Inventory to add loot to
* @param equipmentChances
* @param botLevel Level of bot * @param botLevel Level of bot
*/ */
generateLoot(sessionId: string, templateInventory: Inventory, itemCounts: ItemMinMax, isPmc: boolean, botRole: string, botInventory: PmcInventory, equipmentChances: Chances, botLevel: number): void; generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void;
protected getRandomisedCount(min: number, max: number, nValue: number): number; protected getRandomisedCount(min: number, max: number, nValue: number): number;
/** /**
* Take random items from a pool and add to an inventory until totalItemCount or totalValueLimit is reached * Take random items from a pool and add to an inventory until totalItemCount or totalValueLimit is reached

View File

@ -23,7 +23,7 @@ export declare class LootGenerator {
* @param options parameters to adjust how loot is generated * @param options parameters to adjust how loot is generated
* @returns An array of loot items * @returns An array of loot items
*/ */
createRandomloot(options: LootRequest): LootItem[]; createRandomLoot(options: LootRequest): LootItem[];
/** /**
* Construct item limit record to hold max and current item count * Construct item limit record to hold max and current item count
* @param limits limits as defined in config * @param limits limits as defined in config

View File

@ -31,7 +31,7 @@ export declare class PMCLootGenerator {
*/ */
generatePMCVestLootPool(): string[]; generatePMCVestLootPool(): string[];
/** /**
* Check if item has a width/hide that lets it fit into a 1x2 slot * Check if item has a width/height that lets it fit into a 1x2/2x1 slot
* 1x1 / 1x2 / 2x1 * 1x1 / 1x2 / 2x1
* @param item Item to check size of * @param item Item to check size of
* @returns true if it fits * @returns true if it fits

View File

@ -1,3 +1,4 @@
import { ApplicationContext } from "../context/ApplicationContext";
import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper"; import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper";
import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem"; import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem";
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem"; import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
@ -15,10 +16,11 @@ export declare class BotGeneratorHelper {
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected durabilityLimitsHelper: DurabilityLimitsHelper; protected durabilityLimitsHelper: DurabilityLimitsHelper;
protected itemHelper: ItemHelper; protected itemHelper: ItemHelper;
protected applicationContext: ApplicationContext;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected botConfig: IBotConfig; protected botConfig: IBotConfig;
constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, localisationService: LocalisationService, configServer: ConfigServer); constructor(logger: ILogger, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, applicationContext: ApplicationContext, localisationService: LocalisationService, configServer: ConfigServer);
/** /**
* Adds properties to an item * Adds properties to an item
* e.g. Repairable / HasHinge / Foldable / MaxDurability * e.g. Repairable / HasHinge / Foldable / MaxDurability

View File

@ -31,7 +31,7 @@ export declare class DialogueHelper {
/** /**
* Get the preview contents of the last message in a dialogue. * Get the preview contents of the last message in a dialogue.
* @param dialogue * @param dialogue
* @returns * @returns MessagePreview
*/ */
getMessagePreview(dialogue: Dialogue): MessagePreview; getMessagePreview(dialogue: Dialogue): MessagePreview;
/** /**

View File

@ -171,17 +171,19 @@ declare class ItemHelper {
*/ */
isItemTplStackable(tpl: string): boolean; isItemTplStackable(tpl: string): boolean;
/** /**
* split item stack if it exceeds StackMaxSize * split item stack if it exceeds its StackMaxSize property
* @param itemToSplit item being split into smaller stacks
* @returns Array of split items
*/ */
splitStack(item: Item): Item[]; splitStack(itemToSplit: Item): Item[];
/** /**
* Find Barter items in the inventory * Find Barter items in the inventory
* @param {string} by * @param {string} by tpl or id
* @param {Object} pmcData * @param {Object} pmcData
* @param {string} barterItemId * @param {string} barterItemId
* @returns Array of Item objects * @returns Array of Item objects
*/ */
findBarterItems(by: string, pmcData: IPmcData, barterItemId: string): Item[]; findBarterItems(by: "tpl" | "id", pmcData: IPmcData, barterItemId: string): Item[];
/** /**
* *
* @param pmcData * @param pmcData

View File

@ -1,12 +1,36 @@
import { INotification } from "../models/eft/notifier/INotifier"; import { INotification } from "../models/eft/notifier/INotifier";
import { Dialogue, IUserDialogInfo } from "../models/eft/profile/IAkiProfile";
import { MessageType } from "../models/enums/MessageType";
import { SaveServer } from "../servers/SaveServer";
import { WebSocketServer } from "../servers/WebSocketServer"; import { WebSocketServer } from "../servers/WebSocketServer";
import { NotificationService } from "../services/NotificationService"; import { NotificationService } from "../services/NotificationService";
import { HashUtil } from "../utils/HashUtil";
export declare class NotificationSendHelper { export declare class NotificationSendHelper {
protected webSocketServer: WebSocketServer; protected webSocketServer: WebSocketServer;
protected hashUtil: HashUtil;
protected saveServer: SaveServer;
protected notificationService: NotificationService; protected notificationService: NotificationService;
constructor(webSocketServer: WebSocketServer, notificationService: NotificationService); constructor(webSocketServer: WebSocketServer, hashUtil: HashUtil, saveServer: SaveServer, notificationService: NotificationService);
/** /**
* Send notification message to the appropriate channel * Send notification message to the appropriate channel
* @param sessionID
* @param notificationMessage
*/ */
sendMessage(sessionID: string, notificationMessage: INotification): void; sendMessage(sessionID: string, notificationMessage: INotification): void;
/**
* Send a message directly to the player
* @param sessionId Session id
* @param senderDetails Who is sendin the message to player
* @param messageText Text to send player
* @param messageType Underlying type of message being sent
*/
sendMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, messageText: string, messageType: MessageType): void;
/**
* Helper function for sendMessageToPlayer(), get new dialog for storage in profile or find existing by sender id
* @param sessionId Session id
* @param messageType Type of message to generate
* @param senderDetails Who is sending the message
* @returns Dialogue
*/
protected getDialog(sessionId: string, messageType: MessageType, senderDetails: IUserDialogInfo): Dialogue;
} }

View File

@ -1,6 +1,11 @@
import { IInventoryConfig } from "../models/spt/config/IInventoryConfig";
import { ConfigServer } from "../servers/ConfigServer";
export declare class PaymentHelper { export declare class PaymentHelper {
protected configServer: ConfigServer;
protected inventoryConfig: IInventoryConfig;
constructor(configServer: ConfigServer);
/** /**
* Check whether tpl is Money * Is the passed in tpl money (also checks custom currencies in inventoryConfig.customMoneyTpls)
* @param {string} tpl * @param {string} tpl
* @returns void * @returns void
*/ */

View File

@ -1,5 +1,6 @@
import { IPmcData } from "../models/eft/common/IPmcData"; import { IPmcData } from "../models/eft/common/IPmcData";
import { Quest } from "../models/eft/common/tables/IBotBase"; import { Quest } from "../models/eft/common/tables/IBotBase";
import { Item } from "../models/eft/common/tables/IItem";
import { AvailableForConditions, AvailableForProps, IQuest, Reward } from "../models/eft/common/tables/IQuest"; import { AvailableForConditions, AvailableForProps, IQuest, Reward } from "../models/eft/common/tables/IQuest";
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
import { IAcceptQuestRequestData } from "../models/eft/quests/IAcceptQuestRequestData"; import { IAcceptQuestRequestData } from "../models/eft/quests/IAcceptQuestRequestData";
@ -42,10 +43,10 @@ export declare class QuestHelper {
/** /**
* Get status of a quest in player profile by its id * Get status of a quest in player profile by its id
* @param pmcData Profile to search * @param pmcData Profile to search
* @param questID Quest id to look up * @param questId Quest id to look up
* @returns QuestStatus enum * @returns QuestStatus enum
*/ */
getQuestStatus(pmcData: IPmcData, questID: string): QuestStatus; getQuestStatus(pmcData: IPmcData, questId: string): QuestStatus;
/** /**
* returns true is the level condition is satisfied * returns true is the level condition is satisfied
* @param playerLevel Players level * @param playerLevel Players level
@ -81,14 +82,19 @@ export declare class QuestHelper {
* @returns true if loyalty is high enough to fulfill quest requirement * @returns true if loyalty is high enough to fulfill quest requirement
*/ */
traderStandingRequirementCheck(questProperties: AvailableForProps, profile: IPmcData): boolean; traderStandingRequirementCheck(questProperties: AvailableForProps, profile: IPmcData): boolean;
/**
* take reward item from quest and set FiR status + fix stack sizes + fix mod Ids
* @param reward Reward item to fix
* @returns Fixed rewards
*/
protected processReward(reward: Reward): Reward[]; protected processReward(reward: Reward): Reward[];
/** /**
* Gets a flat list of reward items for the given quest at a specific state (e.g. Fail/Success) * Gets a flat list of reward items for the given quest at a specific state (e.g. Fail/Success)
* @param quest quest to get rewards for * @param quest quest to get rewards for
* @param state Quest status that holds the items (Started, Success, Fail) * @param status Quest status that holds the items (Started, Success, Fail)
* @returns array of items with the correct maxStack * @returns array of items with the correct maxStack
*/ */
getQuestRewardItems(quest: IQuest, state: QuestStatus): Reward[]; getQuestRewardItems(quest: IQuest, status: QuestStatus): Reward[];
/** /**
* Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile
* @param pmcData Player profile * @param pmcData Player profile
@ -97,19 +103,19 @@ export declare class QuestHelper {
*/ */
getQuestReadyForProfile(pmcData: IPmcData, newState: QuestStatus, acceptedQuest: IAcceptQuestRequestData): Quest; getQuestReadyForProfile(pmcData: IPmcData, newState: QuestStatus, acceptedQuest: IAcceptQuestRequestData): Quest;
/** /**
* TODO: what is going on here * Get quests that can be shown to player after starting a quest
* @param acceptedQuestId Quest to add to profile * @param startedQuestId Quest started by player
* @param sessionID Session id * @param sessionID Session id
* @returns Array of quests in profile + quest passed in as param * @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started
*/ */
acceptedUnlocked(acceptedQuestId: string, sessionID: string): IQuest[]; acceptedUnlocked(startedQuestId: string, sessionID: string): IQuest[];
/** /**
* TODO: what is going on here * Get quests that can be shown to player after failing a quest
* @param failedQuestId * @param failedQuestId Id of the quest failed by player
* @param sessionID Session id * @param sessionId Session id
* @returns * @returns
*/ */
failedUnlocked(failedQuestId: string, sessionID: string): IQuest[]; failedUnlocked(failedQuestId: string, sessionId: string): IQuest[];
/** /**
* Adjust quest money rewards by passed in multiplier * Adjust quest money rewards by passed in multiplier
* @param quest Quest to multiple money rewards * @param quest Quest to multiple money rewards
@ -127,6 +133,13 @@ export declare class QuestHelper {
* @param output ItemEvent router response * @param output ItemEvent router response
*/ */
changeItemStack(pmcData: IPmcData, itemId: string, newStackSize: number, sessionID: string, output: IItemEventRouterResponse): void; changeItemStack(pmcData: IPmcData, itemId: string, newStackSize: number, sessionID: string, output: IItemEventRouterResponse): void;
/**
* Add item stack change object into output route event response
* @param output Response to add item change event into
* @param sessionId Session id
* @param item Item that was adjusted
*/
protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void;
/** /**
* Get quests, strip all requirement conditions except level * Get quests, strip all requirement conditions except level
* @param quests quests to process * @param quests quests to process

View File

@ -8,8 +8,10 @@ import { SaveServer } from "../servers/SaveServer";
import { FenceService } from "../services/FenceService"; import { FenceService } from "../services/FenceService";
import { LocalisationService } from "../services/LocalisationService"; import { LocalisationService } from "../services/LocalisationService";
import { PlayerService } from "../services/PlayerService"; import { PlayerService } from "../services/PlayerService";
import { RandomUtil } from "../utils/RandomUtil";
import { TimeUtil } from "../utils/TimeUtil"; import { TimeUtil } from "../utils/TimeUtil";
import { HandbookHelper } from "./HandbookHelper"; import { HandbookHelper } from "./HandbookHelper";
import { ItemHelper } from "./ItemHelper";
import { ProfileHelper } from "./ProfileHelper"; import { ProfileHelper } from "./ProfileHelper";
export declare class TraderHelper { export declare class TraderHelper {
protected logger: ILogger; protected logger: ILogger;
@ -17,15 +19,19 @@ export declare class TraderHelper {
protected saveServer: SaveServer; protected saveServer: SaveServer;
protected profileHelper: ProfileHelper; protected profileHelper: ProfileHelper;
protected handbookHelper: HandbookHelper; protected handbookHelper: HandbookHelper;
protected itemHelper: ItemHelper;
protected playerService: PlayerService; protected playerService: PlayerService;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected fenceService: FenceService; protected fenceService: FenceService;
protected timeUtil: TimeUtil; protected timeUtil: TimeUtil;
protected randomUtil: RandomUtil;
protected configServer: ConfigServer; protected configServer: ConfigServer;
protected traderConfig: ITraderConfig; protected traderConfig: ITraderConfig;
/** Dictionary of item tpl and the highest trader rouble price */ /** Dictionary of item tpl and the highest trader sell rouble price */
protected highestTraderPriceItems: Record<string, number>; protected highestTraderPriceItems: Record<string, number>;
constructor(logger: ILogger, databaseServer: DatabaseServer, saveServer: SaveServer, profileHelper: ProfileHelper, handbookHelper: HandbookHelper, playerService: PlayerService, localisationService: LocalisationService, fenceService: FenceService, timeUtil: TimeUtil, configServer: ConfigServer); /** Dictionary of item tpl and the highest trader buy back rouble price */
protected highestTraderBuyPriceItems: Record<string, number>;
constructor(logger: ILogger, databaseServer: DatabaseServer, saveServer: SaveServer, profileHelper: ProfileHelper, handbookHelper: HandbookHelper, itemHelper: ItemHelper, playerService: PlayerService, localisationService: LocalisationService, fenceService: FenceService, timeUtil: TimeUtil, randomUtil: RandomUtil, configServer: ConfigServer);
getTrader(traderID: string, sessionID: string): ITraderBase; getTrader(traderID: string, sessionID: string): ITraderBase;
getTraderAssortsById(traderId: string): ITraderAssort; getTraderAssortsById(traderId: string): ITraderAssort;
/** /**
@ -82,8 +88,15 @@ export declare class TraderHelper {
}): void; }): void;
/** /**
* Get the highest rouble price for an item from traders * Get the highest rouble price for an item from traders
* UNUSED
* @param tpl Item to look up highest pride for * @param tpl Item to look up highest pride for
* @returns highest rouble cost for item * @returns highest rouble cost for item
*/ */
getHighestTraderPriceRouble(tpl: string): number; getHighestTraderPriceRouble(tpl: string): number;
/**
* Get the highest price item can be sold to trader for (roubles)
* @param tpl Item to look up best trader sell-to price
* @returns Rouble price
*/
getHighestSellToTraderPrice(tpl: string): number;
} }

View File

@ -1,5 +1,6 @@
export declare class WeightedRandomHelper { export declare class WeightedRandomHelper {
/** /**
* USE getWeightedValue() WHERE POSSIBLE
* Gets a tplId from a weighted dictionary * Gets a tplId from a weighted dictionary
* @param {tplId: weighting[]} itemArray * @param {tplId: weighting[]} itemArray
* @returns tplId * @returns tplId
@ -7,6 +8,9 @@ export declare class WeightedRandomHelper {
getWeightedInventoryItem(itemArray: { getWeightedInventoryItem(itemArray: {
[tplId: string]: unknown; [tplId: string]: unknown;
} | ArrayLike<unknown>): string; } | ArrayLike<unknown>): string;
getWeightedValue<T>(itemArray: {
[key: string]: unknown;
} | ArrayLike<unknown>): T;
/** /**
* Picks the random item based on its weight. * Picks the random item based on its weight.
* The items with higher weight will be picked more often (with a higher probability). * The items with higher weight will be picked more often (with a higher probability).

View File

@ -122,24 +122,27 @@ export interface Inventory {
questStashItems: string; questStashItems: string;
fastPanel: Record<string, string>; fastPanel: Record<string, string>;
} }
export interface IBaseJsonSkills {
Common: Record<string, Common>;
Mastering: Record<string, Mastering>;
Points: number;
}
export interface Skills { export interface Skills {
Common: Common[]; Common: Common[];
Mastering: Mastering[]; Mastering: Mastering[];
Points: number; Points: number;
} }
export interface Common { export interface IBaseSkill {
Id: string; Id: string;
Progress: number; Progress: number;
PointsEarnedDuringSession?: number;
LastAccess?: number;
max?: number; max?: number;
min?: number; min?: number;
} }
export interface Mastering { export interface Common extends IBaseSkill {
Id: string; PointsEarnedDuringSession?: number;
Progress: number; LastAccess?: number;
max?: number; }
min?: number; export interface Mastering extends IBaseSkill {
} }
export interface Stats { export interface Stats {
CarriedQuestItems: string[]; CarriedQuestItems: string[];

View File

@ -104,13 +104,17 @@ export interface Generation {
items: ItemMinMax; items: ItemMinMax;
} }
export interface ItemMinMax { export interface ItemMinMax {
grenades: MinMax; grenades: MinMaxWithWhitelist;
healing: MinMax; healing: MinMaxWithWhitelist;
drugs: MinMax; drugs: MinMaxWithWhitelist;
stims: MinMax; stims: MinMaxWithWhitelist;
looseLoot: MinMax; looseLoot: MinMaxWithWhitelist;
magazines: MinMax; magazines: MinMaxWithWhitelist;
specialItems: MinMax; specialItems: MinMaxWithWhitelist;
}
export interface MinMaxWithWhitelist extends MinMax {
/** Array of item tpls */
whitelist: string[];
} }
export interface Health { export interface Health {
BodyParts: BodyPart[]; BodyParts: BodyPart[];

View File

@ -0,0 +1,3 @@
export interface IClearMailMessageRequest {
dialogId: string;
}

View File

@ -0,0 +1,3 @@
export interface IDeleteFriendRequest {
friend_id: string;
}

View File

@ -0,0 +1,5 @@
export interface IFriendRequestSendResponse {
status: number;
requestid: string;
retryAfter: number;
}

View File

@ -1,7 +1,6 @@
import { IPmcData } from "../common/IPmcData";
import { Message } from "../profile/IAkiProfile"; import { Message } from "../profile/IAkiProfile";
export interface IGetMailDialogViewResponseData { export interface IGetMailDialogViewResponseData {
messages: Message[]; messages: Message[];
profiles: IPmcData[]; profiles: any[];
hasMessagesWithRewards: boolean; hasMessagesWithRewards: boolean;
} }

View File

@ -0,0 +1,3 @@
export interface IRemoveMailMessageRequest {
dialogId: string;
}

View File

@ -0,0 +1,3 @@
export interface IAcceptGroupInviteRequest {
requestId: string;
}

View File

@ -0,0 +1,16 @@
export interface IAcceptGroupInviteResponse {
_id: string;
aid: number;
Info: PlayerInviteInfo;
isLeader: boolean;
isReady: boolean;
}
export interface PlayerInviteInfo {
Nickname: string;
Side: string;
Level: number;
MemberCategory: number;
GameVersion: string;
SavageLockTime: number;
SavageNickname: string;
}

View File

@ -0,0 +1,3 @@
export interface ICancelGroupInviteRequest {
requestId: string;
}

View File

@ -0,0 +1,3 @@
export interface IRemovePlayerFromGroupRequest {
aidToKick: string;
}

View File

@ -0,0 +1,4 @@
export interface ISendGroupInviteRequest {
to: string;
inLobby: boolean;
}

View File

@ -1,3 +1,4 @@
import { Message } from "../profile/IAkiProfile";
export interface INotifierChannel { export interface INotifierChannel {
server: string; server: string;
channel_id: string; channel_id: string;
@ -5,7 +6,6 @@ export interface INotifierChannel {
notifierServer: string; notifierServer: string;
ws: string; ws: string;
} }
import { Message } from "../profile/IAkiProfile";
export interface INotification { export interface INotification {
type: "RagfairOfferSold" | "new_message" | "ping"; type: "RagfairOfferSold" | "new_message" | "ping";
eventId: string; eventId: string;

View File

@ -1,3 +1,4 @@
import { MemberCategory } from "../../../models/enums/MemberCategory";
import { MessageType } from "../../enums/MessageType"; import { MessageType } from "../../enums/MessageType";
import { IPmcData } from "../common/IPmcData"; import { IPmcData } from "../common/IPmcData";
import { Item } from "../common/tables/IItem"; import { Item } from "../common/tables/IItem";
@ -36,19 +37,32 @@ export interface WeaponBuild {
items: Item[]; items: Item[];
} }
export interface Dialogue { export interface Dialogue {
_id: string;
messages: Message[];
pinned: boolean;
new: number;
attachmentsNew: number; attachmentsNew: number;
type: MessageType;
new: number;
_id: string;
Users?: IUserDialogInfo[];
pinned: boolean;
messages: Message[];
}
export interface IUserDialogInfo {
_id: string;
info: IUserDialogDetails;
}
export interface IUserDialogDetails {
Nickname: string;
Side: string;
Level: number;
MemberCategory: MemberCategory;
} }
export interface DialogueInfo { export interface DialogueInfo {
attachmentsNew: number; attachmentsNew: number;
new: number; new: number;
_id: string;
type: MessageType; type: MessageType;
pinned: boolean; pinned: boolean;
Users?: any[];
message: MessagePreview; message: MessagePreview;
_id: string;
} }
export interface Message { export interface Message {
_id: string; _id: string;
@ -57,7 +71,7 @@ export interface Message {
dt: number; dt: number;
UtcDateTime?: number; UtcDateTime?: number;
Member?: IUpdatableChatMember; Member?: IUpdatableChatMember;
templateId: string; templateId?: string;
text?: string; text?: string;
hasRewards: boolean; hasRewards: boolean;
rewardCollected: boolean; rewardCollected: boolean;
@ -72,6 +86,7 @@ export interface MessagePreview {
dt: number; dt: number;
templateId: string; templateId: string;
text?: string; text?: string;
systemData?: ISystemData;
} }
export interface MessageItems { export interface MessageItems {
stash?: string; stash?: string;

View File

@ -0,0 +1,6 @@
export interface IConnectResponse {
backendUrl: string;
name: string;
editions: string[];
profileDescriptions: Record<string, string>;
}

View File

@ -0,0 +1,6 @@
export declare enum AirdropTypeEnum {
MIXED = "mixed",
WEAPONARMOR = "weaponarmor",
FOODMEDICAL = "foodmedical",
BARTER = "barter"
}

View File

@ -13,6 +13,7 @@ export declare enum ConfigTypes {
LOCATION = "aki-location", LOCATION = "aki-location",
MATCH = "aki-match", MATCH = "aki-match",
PLAYERSCAV = "aki-playerscav", PLAYERSCAV = "aki-playerscav",
PMC_CHAT_RESPONSE = "aki-pmcchatresponse",
QUEST = "aki-quest", QUEST = "aki-quest",
RAGFAIR = "aki-ragfair", RAGFAIR = "aki-ragfair",
REPAIR = "aki-repair", REPAIR = "aki-repair",

View File

@ -1,33 +1,34 @@
export declare enum WildSpawnTypeNumber { export declare enum WildSpawnTypeNumber {
MARKSMAN = 0,
ASSAULT = 1, ASSAULT = 1,
MARKSMAN = 2, BOSSTEST = 2,
BOSSTEST = 4, BOSSBULLY = 3,
BOSSBULLY = 8, FOLLOWERTEST = 4,
FOLLOWERTEST = 16, FOLLOWERBULLY = 5,
FOLLOWERBULLY = 32, BOSSKILLA = 6,
BOSSKILLA = 64, BOSSKOJANIY = 7,
BOSSKOJANIY = 128, FOLLOWERKOJANIY = 8,
FOLLOWERKOJANIY = 256, PMCBOT = 9,
PMCBOT = 512, CURSEDASSAULT = 10,
CURSEDASSAULT = 1024, BOSSGLUHAR = 11,
BOSSGLUHAR = 2048, FOLLOWERGLUHARASSAULT = 12,
FOLLOWERGLUHARASSAULT = 4096, FOLLOWERGLUHARSECURITY = 13,
FOLLOWERGLUHARSECURITY = 8192, FOLLOWERGLUHARSCOUT = 14,
FOLLOWERGLUHARSCOUT = 16384, FOLLOWERGLUHARSNIPE = 15,
FOLLOWERGLUHARSNIPE = 32768, FOLLOWERSANITAR = 16,
FOLLOWERSANITAR = 65536, BOSSSANITAR = 17,
BOSSSANITAR = 131072, TEST = 18,
TEST = 262144, ASSAULTGROUP = 19,
ASSAULTGROUP = 524288, SECTANTWARRIOR = 20,
SECTANTWARRIOR = 1048576, SECTANTPRIEST = 21,
SECTANTPRIEST = 2097152, BOSSTAGILLA = 22,
BOSSTAGILLA = 4194304, FOLLOWERTAGILLA = 23,
FOLLOWERTAGILLA = 8388608, EXUSEC = 24,
EXUSEC = 16777216, GIFTER = 25,
GIFTER = 33554432, BOSSKNIGHT = 26,
BOSSKNIGHT = 67108864, FOLLOWERBIGPIPE = 27,
FOLLOWERBIGPIPE = 134217728, FOLLOWERBIRDEYE = 28,
FOLLOWERBIRDEYE = 268435456, BOSSZRYACHIY = 29,
SPTUSEC = 536870912, FOLLOWERZRYACHIY = 30,
SPTBEAR = 1073741824 ARENAFIGHTEREVENT = 31
} }

View File

@ -1,5 +1,5 @@
import { ITemplateItem } from "../../eft/common/tables/ITemplateItem"; import { ITemplateItem } from "../../eft/common/tables/ITemplateItem";
export declare class BotLootCache { export interface IBotLootCache {
backpackLoot: ITemplateItem[]; backpackLoot: ITemplateItem[];
pocketLoot: ITemplateItem[]; pocketLoot: ITemplateItem[];
vestLoot: ITemplateItem[]; vestLoot: ITemplateItem[];

Some files were not shown because too many files have changed in this diff Show More