Merge branch 'master' into master
This commit is contained in:
commit
c849f9e51b
@ -4,7 +4,7 @@ export declare class ContextVariable {
|
|||||||
private timestamp;
|
private timestamp;
|
||||||
private type;
|
private type;
|
||||||
constructor(value: any, type: ContextVariableType);
|
constructor(value: any, type: ContextVariableType);
|
||||||
getValue(): any;
|
getValue<T>(): T;
|
||||||
getTimestamp(): Date;
|
getTimestamp(): Date;
|
||||||
getType(): ContextVariableType;
|
getType(): ContextVariableType;
|
||||||
}
|
}
|
||||||
|
@ -5,15 +5,21 @@ import { IBotBase } from "../models/eft/common/tables/IBotBase";
|
|||||||
import { IBotCore } from "../models/eft/common/tables/IBotCore";
|
import { IBotCore } from "../models/eft/common/tables/IBotCore";
|
||||||
import { Difficulty } from "../models/eft/common/tables/IBotType";
|
import { Difficulty } from "../models/eft/common/tables/IBotType";
|
||||||
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
|
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";
|
||||||
|
import { BotGenerationCacheService } from "../services/BotGenerationCacheService";
|
||||||
|
import { PmcAiService } from "../services/PmcAiService";
|
||||||
export declare class BotController {
|
export declare class BotController {
|
||||||
|
protected logger: ILogger;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected botGenerator: BotGenerator;
|
protected botGenerator: BotGenerator;
|
||||||
protected botHelper: BotHelper;
|
protected botHelper: BotHelper;
|
||||||
|
protected pmcAiService: PmcAiService;
|
||||||
|
protected botGenerationCacheService: BotGenerationCacheService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, configServer: ConfigServer);
|
constructor(logger: ILogger, databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, pmcAiService: PmcAiService, botGenerationCacheService: BotGenerationCacheService, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* 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
|
||||||
@ -29,7 +35,7 @@ export declare class BotController {
|
|||||||
* @returns Difficulty object
|
* @returns Difficulty object
|
||||||
*/
|
*/
|
||||||
getBotDifficulty(type: string, difficulty: string): Difficulty;
|
getBotDifficulty(type: string, difficulty: string): Difficulty;
|
||||||
protected getPmcDifficultySettings(pmcType: "bear" | "usec", difficulty: string): Difficulty;
|
protected getPmcDifficultySettings(pmcType: "bear" | "usec", difficulty: string, usecType: string, bearType: string): Difficulty;
|
||||||
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
||||||
getBotCap(): number;
|
getBotCap(): number;
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,10 @@ import { IMatchConfig } from "../models/spt/config/IMatchConfig";
|
|||||||
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 { SaveServer } from "../servers/SaveServer";
|
import { SaveServer } from "../servers/SaveServer";
|
||||||
|
import { BotGenerationCacheService } from "../services/BotGenerationCacheService";
|
||||||
import { BotLootCacheService } from "../services/BotLootCacheService";
|
import { BotLootCacheService } from "../services/BotLootCacheService";
|
||||||
import { MatchLocationService } from "../services/MatchLocationService";
|
import { MatchLocationService } from "../services/MatchLocationService";
|
||||||
|
import { PmcAiService } from "../services/PmcAiService";
|
||||||
import { ProfileSnapshotService } from "../services/ProfileSnapshotService";
|
import { ProfileSnapshotService } from "../services/ProfileSnapshotService";
|
||||||
export declare class MatchController {
|
export declare class MatchController {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
@ -27,11 +29,13 @@ export declare class MatchController {
|
|||||||
protected botLootCacheService: BotLootCacheService;
|
protected botLootCacheService: BotLootCacheService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected profileSnapshotService: ProfileSnapshotService;
|
protected profileSnapshotService: ProfileSnapshotService;
|
||||||
|
protected pmcAiService: PmcAiService;
|
||||||
|
protected botGenerationCacheService: BotGenerationCacheService;
|
||||||
protected applicationContext: ApplicationContext;
|
protected applicationContext: ApplicationContext;
|
||||||
protected matchConfig: IMatchConfig;
|
protected matchConfig: IMatchConfig;
|
||||||
protected inraidConfig: IInRaidConfig;
|
protected inraidConfig: IInRaidConfig;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, matchLocationService: MatchLocationService, traderHelper: TraderHelper, botLootCacheService: BotLootCacheService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext);
|
constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, matchLocationService: MatchLocationService, traderHelper: TraderHelper, botLootCacheService: BotLootCacheService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, pmcAiService: PmcAiService, botGenerationCacheService: BotGenerationCacheService, applicationContext: ApplicationContext);
|
||||||
getEnabled(): boolean;
|
getEnabled(): boolean;
|
||||||
getProfile(info: IGetProfileRequestData): IPmcData[];
|
getProfile(info: IGetProfileRequestData): IPmcData[];
|
||||||
createGroup(sessionID: string, info: ICreateGroupRequestData): any;
|
createGroup(sessionID: string, info: ICreateGroupRequestData): any;
|
||||||
|
@ -9,6 +9,7 @@ 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";
|
||||||
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
||||||
|
import { PmcAiService } from "../services/PmcAiService";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
@ -30,9 +31,10 @@ export declare class BotGenerator {
|
|||||||
protected botEquipmentFilterService: BotEquipmentFilterService;
|
protected botEquipmentFilterService: BotEquipmentFilterService;
|
||||||
protected botHelper: BotHelper;
|
protected botHelper: BotHelper;
|
||||||
protected gameEventHelper: GameEventHelper;
|
protected gameEventHelper: GameEventHelper;
|
||||||
|
protected pmcAiService: PmcAiService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botEquipmentFilterService: BotEquipmentFilterService, botHelper: BotHelper, gameEventHelper: GameEventHelper, configServer: ConfigServer);
|
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botEquipmentFilterService: BotEquipmentFilterService, botHelper: BotHelper, gameEventHelper: GameEventHelper, pmcAiService: PmcAiService, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* Generate a player scav bot object
|
* Generate a player scav bot object
|
||||||
* @param role e.g. assault / pmcbot
|
* @param role e.g. assault / pmcbot
|
||||||
@ -41,13 +43,13 @@ export declare class BotGenerator {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
generatePlayerScav(sessionId: string, role: string, difficulty: string, botTemplate: IBotType): IBotBase;
|
generatePlayerScav(sessionId: string, role: string, difficulty: string, botTemplate: IBotType): IBotBase;
|
||||||
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
|
||||||
/**
|
/**
|
||||||
* Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check
|
* Generate an array of bot objects for populate a raid with
|
||||||
* @param botRole the bot role to check if should be a pmc
|
* @param sessionId session id
|
||||||
* @returns true if should be a pmc
|
* @param info request object
|
||||||
|
* @returns bot array
|
||||||
*/
|
*/
|
||||||
protected shouldBotBePmc(botRole: string): boolean;
|
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
||||||
/**
|
/**
|
||||||
* Get a randomised PMC side based on bot config value 'isUsec'
|
* Get a randomised PMC side based on bot config value 'isUsec'
|
||||||
* @returns pmc side as string
|
* @returns pmc side as string
|
||||||
@ -58,12 +60,30 @@ export declare class BotGenerator {
|
|||||||
* @returns IBotBase object
|
* @returns IBotBase object
|
||||||
*/
|
*/
|
||||||
protected getCloneOfBotBase(): IBotBase;
|
protected getCloneOfBotBase(): IBotBase;
|
||||||
|
/**
|
||||||
|
* Create a IBotBase object with equipment/loot/exp etc
|
||||||
|
* @param sessionId Session id
|
||||||
|
* @param bot bots base file
|
||||||
|
* @param role botRole bot will use
|
||||||
|
* @param node Bot template from db/bots/x.json
|
||||||
|
* @param isPmc Is bot to be a PMC
|
||||||
|
* @param isPlayerScav is bot to be a p scav bot
|
||||||
|
* @returns IBotBase object
|
||||||
|
*/
|
||||||
protected generateBot(sessionId: string, bot: IBotBase, role: string, node: IBotType, isPmc: boolean, isPlayerScav?: boolean): IBotBase;
|
protected generateBot(sessionId: string, bot: IBotBase, role: string, node: IBotType, isPmc: boolean, isPlayerScav?: boolean): IBotBase;
|
||||||
/**
|
/**
|
||||||
* Log the number of PMCs generated to the debug console
|
* Log the number of PMCs generated to the debug console
|
||||||
|
* @param output Generated bot array, ready to send to client
|
||||||
*/
|
*/
|
||||||
protected logPmcGeneratedCount(output: IBotBase[]): void;
|
protected logPmcGeneratedCount(output: IBotBase[]): void;
|
||||||
protected generateRandomLevel(min: number, max: number): BotGenerator.IRandomisedBotLevelResult;
|
/**
|
||||||
|
* Return a randomised bot level and exp value
|
||||||
|
* @param role botRole being generated for
|
||||||
|
* @param min Min exp value
|
||||||
|
* @param max Max exp value
|
||||||
|
* @returns IRandomisedBotLevelResult object
|
||||||
|
*/
|
||||||
|
protected generateRandomLevel(role: string, min: number, max: number): BotGenerator.IRandomisedBotLevelResult;
|
||||||
/**
|
/**
|
||||||
* Converts health object to the required format
|
* Converts health object to the required format
|
||||||
* @param healthObj health object from bot json
|
* @param healthObj health object from bot json
|
||||||
@ -72,19 +92,23 @@ export declare class BotGenerator {
|
|||||||
*/
|
*/
|
||||||
protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth;
|
protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth;
|
||||||
protected generateSkills(skillsObj: Skills): Skills;
|
protected generateSkills(skillsObj: Skills): Skills;
|
||||||
/**
|
|
||||||
* Convert from pmc side (usec/bear) to the side as defined in the bot config (usecType/bearType)
|
|
||||||
* @param pmcSide eft side (usec/bear)
|
|
||||||
* @returns pmc side as defined in config
|
|
||||||
*/
|
|
||||||
protected getPmcRole(pmcSide: string): string;
|
|
||||||
/**
|
/**
|
||||||
* Iterate through bots inventory and loot to find and remove christmas items (as defined in GameEventHelper)
|
* Iterate through bots inventory and loot to find and remove christmas items (as defined in GameEventHelper)
|
||||||
* @param nodeInventory Bots inventory to iterate over
|
* @param nodeInventory Bots inventory to iterate over
|
||||||
*/
|
*/
|
||||||
protected removeChristmasItemsFromBotInventory(nodeInventory: Inventory): void;
|
protected removeChristmasItemsFromBotInventory(nodeInventory: Inventory): void;
|
||||||
|
/**
|
||||||
|
* Generate a random Id for a bot and apply to bots _id and aid value
|
||||||
|
* @param bot bot to update
|
||||||
|
* @returns updated IBotBase object
|
||||||
|
*/
|
||||||
protected generateId(bot: IBotBase): IBotBase;
|
protected generateId(bot: IBotBase): IBotBase;
|
||||||
protected generateInventoryID(profile: IBotBase): IBotBase;
|
protected generateInventoryID(profile: IBotBase): IBotBase;
|
||||||
|
/**
|
||||||
|
* Get the difficulty passed in, if its not "asoline", get selected difficulty from config
|
||||||
|
* @param requestedDifficulty
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
protected getPMCDifficulty(requestedDifficulty: string): string;
|
protected getPMCDifficulty(requestedDifficulty: string): string;
|
||||||
/**
|
/**
|
||||||
* Add a side-specific (usec/bear) dogtag item to a bots inventory
|
* Add a side-specific (usec/bear) dogtag item to a bots inventory
|
||||||
|
@ -1,13 +1,16 @@
|
|||||||
|
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
||||||
|
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
||||||
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
||||||
import { Inventory, Chances, Generation, Mods } from "../models/eft/common/tables/IBotType";
|
import { Chances, Generation, Inventory, Mods } from "../models/eft/common/tables/IBotType";
|
||||||
|
import { EquipmentSlots } from "../models/enums/EquipmentSlots";
|
||||||
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
|
||||||
import { BotWeaponGenerator } from "./BotWeaponGenerator";
|
|
||||||
import { BotLootGenerator } from "./BotLootGenerator";
|
import { BotLootGenerator } from "./BotLootGenerator";
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { BotWeaponGenerator } from "./BotWeaponGenerator";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
|
||||||
export declare class BotInventoryGenerator {
|
export declare class BotInventoryGenerator {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
@ -17,8 +20,14 @@ export declare class BotInventoryGenerator {
|
|||||||
protected botLootGenerator: BotLootGenerator;
|
protected botLootGenerator: BotLootGenerator;
|
||||||
protected botGeneratorHelper: BotGeneratorHelper;
|
protected botGeneratorHelper: BotGeneratorHelper;
|
||||||
protected weightedRandomHelper: WeightedRandomHelper;
|
protected weightedRandomHelper: WeightedRandomHelper;
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, weightedRandomHelper: WeightedRandomHelper);
|
protected configServer: ConfigServer;
|
||||||
generateInventory(sessionId: string, templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory;
|
protected botConfig: IBotConfig;
|
||||||
|
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, weightedRandomHelper: WeightedRandomHelper, configServer: ConfigServer);
|
||||||
|
generateInventory(sessionId: string, templateInventory: Inventory, equipmentChances: Chances, itemGenerationLimitsMinMax: Generation, botRole: string, isPmc: boolean): PmcInventory;
|
||||||
|
protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: {
|
||||||
|
slot: EquipmentSlots;
|
||||||
|
shouldSpawn: boolean;
|
||||||
|
}, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: Generation): void;
|
||||||
protected generateEquipment(equipmentSlot: string, equipmentPool: Record<string, number>, modPool: Mods, spawnChances: Chances, botRole: string, inventory: PmcInventory): void;
|
protected generateEquipment(equipmentSlot: string, equipmentPool: Record<string, number>, modPool: Mods, spawnChances: Chances, botRole: string, inventory: PmcInventory): void;
|
||||||
protected generateInventoryBase(): PmcInventory;
|
protected generateInventoryBase(): PmcInventory;
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ export declare class BotWeaponGenerator {
|
|||||||
* @param botRole for durability values
|
* @param botRole for durability values
|
||||||
* @returns Base weapon item in array
|
* @returns Base weapon item in array
|
||||||
*/
|
*/
|
||||||
constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[];
|
protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[];
|
||||||
/**
|
/**
|
||||||
* Get the mods necessary to kit out a weapon to its preset level
|
* Get the mods necessary to kit out a weapon to its preset level
|
||||||
* @param weaponTpl weapon to find preset for
|
* @param weaponTpl weapon to find preset for
|
||||||
|
@ -6,14 +6,16 @@ import { LootRequest } from "../models/spt/services/LootRequest";
|
|||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { ItemFilterService } from "../services/ItemFilterService";
|
import { ItemFilterService } from "../services/ItemFilterService";
|
||||||
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
export declare class LootGenerator {
|
export declare class LootGenerator {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
|
protected hashUtil: HashUtil;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected randomUtil: RandomUtil;
|
protected randomUtil: RandomUtil;
|
||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected itemFilterService: ItemFilterService;
|
protected itemFilterService: ItemFilterService;
|
||||||
constructor(logger: ILogger, databaseServer: DatabaseServer, randomUtil: RandomUtil, itemHelper: ItemHelper, itemFilterService: ItemFilterService);
|
constructor(logger: ILogger, hashUtil: HashUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, itemHelper: ItemHelper, itemFilterService: ItemFilterService);
|
||||||
/**
|
/**
|
||||||
* Generate a list of items based on options passed in
|
* Generate a list of items based on options passed in
|
||||||
* @param options parameters to adjust what loot is generated
|
* @param options parameters to adjust what loot is generated
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
|
import { Preset } from "../models/eft/common/IGlobals";
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
import { Item } from "../models/eft/common/tables/IItem";
|
||||||
|
import { IRagfairConfig } from "../models/spt/config/IRagfairConfig";
|
||||||
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
@ -8,18 +11,40 @@ export declare class RagfairAssortGenerator {
|
|||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
|
protected configServer: ConfigServer;
|
||||||
protected generatedAssortItems: Item[];
|
protected generatedAssortItems: Item[];
|
||||||
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer);
|
protected ragfairConfig: IRagfairConfig;
|
||||||
|
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* Get an array of unique items that can be sold on the flea
|
* Get an array of unique items that can be sold on the flea
|
||||||
* @returns array of unique items
|
* @returns array of unique items
|
||||||
*/
|
*/
|
||||||
getAssortItems(): Item[];
|
getAssortItems(): Item[];
|
||||||
|
/**
|
||||||
|
* Check internal generatedAssortItems array has objects
|
||||||
|
* @returns true if array has objects
|
||||||
|
*/
|
||||||
protected assortsAreGenerated(): boolean;
|
protected assortsAreGenerated(): boolean;
|
||||||
/**
|
/**
|
||||||
* Generate an array of items the flea can sell
|
* Generate an array of items the flea can sell
|
||||||
* @returns array of unique items
|
* @returns array of unique items
|
||||||
*/
|
*/
|
||||||
protected generateRagfairAssortItems(): Item[];
|
protected generateRagfairAssortItems(): Item[];
|
||||||
|
/**
|
||||||
|
* Get presets from globals.json
|
||||||
|
* @returns Preset object array
|
||||||
|
*/
|
||||||
|
protected getPresets(): Preset[];
|
||||||
|
/**
|
||||||
|
* Get default presets from globals.json
|
||||||
|
* @returns Preset object array
|
||||||
|
*/
|
||||||
|
protected getDefaultPresets(): Preset[];
|
||||||
|
/**
|
||||||
|
* Create a base assort item and return it with populated values + 999999 stack count + unlimited count = true
|
||||||
|
* @param tplId tplid to add to item
|
||||||
|
* @param id id to add to item
|
||||||
|
* @returns hydrated Item object
|
||||||
|
*/
|
||||||
protected createRagfairAssortItem(tplId: string, id?: string): Item;
|
protected createRagfairAssortItem(tplId: string, id?: string): Item;
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,17 @@ import { InventoryHelper } from "./InventoryHelper";
|
|||||||
import { ItemHelper } from "./ItemHelper";
|
import { ItemHelper } from "./ItemHelper";
|
||||||
import { ProbabilityHelper } from "./ProbabilityHelper";
|
import { ProbabilityHelper } from "./ProbabilityHelper";
|
||||||
import { ProfileHelper } from "./ProfileHelper";
|
import { ProfileHelper } from "./ProfileHelper";
|
||||||
|
export declare class BotModLimits {
|
||||||
|
scope: ItemCount;
|
||||||
|
scopeMax: number;
|
||||||
|
scopeBaseTypes: string[];
|
||||||
|
flashlightLaser: ItemCount;
|
||||||
|
flashlightLaserMax: number;
|
||||||
|
flashlgihtLaserBaseTypes: string[];
|
||||||
|
}
|
||||||
|
export declare class ItemCount {
|
||||||
|
count: number;
|
||||||
|
}
|
||||||
export declare class BotGeneratorHelper {
|
export declare class BotGeneratorHelper {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected jsonUtil: JsonUtil;
|
protected jsonUtil: JsonUtil;
|
||||||
@ -58,6 +69,27 @@ export declare class BotGeneratorHelper {
|
|||||||
* @returns Weapon with mods
|
* @returns Weapon with mods
|
||||||
*/
|
*/
|
||||||
generateModsForWeapon(sessionId: string, weapon: Item[], modPool: Mods, weaponParentId: string, parentTemplate: ITemplateItem, modSpawnChances: ModsChances, ammoTpl: string, botRole: string): Item[];
|
generateModsForWeapon(sessionId: string, weapon: Item[], modPool: Mods, weaponParentId: string, parentTemplate: ITemplateItem, modSpawnChances: ModsChances, ammoTpl: string, botRole: string): Item[];
|
||||||
|
/**
|
||||||
|
* Find mod tpls of a provided type and add to modPool
|
||||||
|
* @param desiredSlotName slot to look up and add we are adding tpls for (e.g mod_scope)
|
||||||
|
* @param modTemplate db object for modItem we get compatible mods from
|
||||||
|
* @param modPool Pool of mods we are adding to
|
||||||
|
*/
|
||||||
|
protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: Mods, botEquipBlacklist: EquipmentFilterDetails): void;
|
||||||
|
/**
|
||||||
|
* Check if mod item is on limited list + has surpassed the limit set for it
|
||||||
|
* @param botRole role the bot has e.g. assault
|
||||||
|
* @param modTpl mods tpl
|
||||||
|
* @param modLimits limits set for weapon being generated for this bot
|
||||||
|
* @returns true if over item limit
|
||||||
|
*/
|
||||||
|
protected modHasReachedItemLimit(botRole: string, modTpl: string, modLimits: BotModLimits): boolean;
|
||||||
|
/**
|
||||||
|
* Initalise mod limits to be used when generating the weapon
|
||||||
|
* @param botRole "assault", "bossTagilla" or "pmc"
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
protected initModLimits(botRole: string): BotModLimits;
|
||||||
/**
|
/**
|
||||||
* Generate a pool of mods for this bots mod type if bot has values inside `randomisedWeaponModSlots` array found in bot.json/equipment[botrole]
|
* Generate a pool of mods for this bots mod type if bot has values inside `randomisedWeaponModSlots` array found in bot.json/equipment[botrole]
|
||||||
* @param allowedMods Mods to be added to mod pool
|
* @param allowedMods Mods to be added to mod pool
|
||||||
@ -65,7 +97,21 @@ export declare class BotGeneratorHelper {
|
|||||||
* @param modSlot Slot to generate mods for
|
* @param modSlot Slot to generate mods for
|
||||||
* @param itemModPool base mod pool to replace values of
|
* @param itemModPool base mod pool to replace values of
|
||||||
*/
|
*/
|
||||||
protected generateDynamicModPool(allowedMods: string[], botEquipBlacklist: EquipmentFilterDetails, modSlot: string, itemModPool: Record<string, string[]>): void;
|
protected generateDynamicWeaponModPool(allowedMods: string[], botEquipBlacklist: EquipmentFilterDetails, modSlot: string, itemModPool: Record<string, string[]>): void;
|
||||||
|
/**
|
||||||
|
* Find all compatible mods for equipment item and add to modPool
|
||||||
|
* @param itemDetails item to find mods for
|
||||||
|
* @param modPool ModPool to add mods to
|
||||||
|
*/
|
||||||
|
generateDynamicModPool(itemDetails: ITemplateItem, modPool: Mods): void;
|
||||||
|
/**
|
||||||
|
* Take a list of tpls and filter out blacklisted values using itemFilterService + botEquipmentBlacklist
|
||||||
|
* @param allowedMods base mods to filter
|
||||||
|
* @param botEquipBlacklist equipment blacklist
|
||||||
|
* @param modSlot slot mods belong to
|
||||||
|
* @returns Filtered array of mod tpls
|
||||||
|
*/
|
||||||
|
protected filterWeaponModsByBlacklist(allowedMods: string[], botEquipBlacklist: EquipmentFilterDetails, modSlot: string): string[];
|
||||||
/**
|
/**
|
||||||
* Check if the specific item type on the weapon has reached the set limit
|
* Check if the specific item type on the weapon has reached the set limit
|
||||||
* @param modTpl item to check is limited
|
* @param modTpl item to check is limited
|
||||||
|
@ -13,11 +13,34 @@ export declare class BotHelper {
|
|||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(logger: ILogger, jsonUtil: JsonUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, configServer: ConfigServer);
|
constructor(logger: ILogger, jsonUtil: JsonUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, configServer: ConfigServer);
|
||||||
|
/**
|
||||||
|
* Get difficulty settings for desired bot type, if not found use assault bot types
|
||||||
|
* @param type bot type to retreive difficulty of
|
||||||
|
* @param difficulty difficulty to get settings for (easy/normal etc)
|
||||||
|
* @returns Difficulty object
|
||||||
|
*/
|
||||||
getBotDifficultySettings(type: string, difficulty: string): Difficulty;
|
getBotDifficultySettings(type: string, difficulty: string): Difficulty;
|
||||||
|
/**
|
||||||
|
* Get a template object for the specified botRole from bots.types db
|
||||||
|
* @param role botRole to get template for
|
||||||
|
* @returns IBotType object
|
||||||
|
*/
|
||||||
getBotTemplate(role: string): IBotType;
|
getBotTemplate(role: string): IBotType;
|
||||||
|
/**
|
||||||
|
* Get difficulty settings for a PMC
|
||||||
|
* @param type "usec" / "bear"
|
||||||
|
* @param difficulty what difficulty to retrieve
|
||||||
|
* @returns Difficulty object
|
||||||
|
*/
|
||||||
getPmcDifficultySettings(type: string, difficulty: string): Difficulty;
|
getPmcDifficultySettings(type: string, difficulty: string): Difficulty;
|
||||||
|
/**
|
||||||
|
* Choose a random difficulty from - easy/normal/hard/impossible
|
||||||
|
* @returns random difficulty
|
||||||
|
*/
|
||||||
|
chooseRandomDifficulty(): string;
|
||||||
/**
|
/**
|
||||||
* Randomise the chance the PMC will attack their own side
|
* Randomise the chance the PMC will attack their own side
|
||||||
|
* Look up value in bot.json/chanceSameSideIsHostilePercent
|
||||||
* @param difficultySettings pmc difficulty settings
|
* @param difficultySettings pmc difficulty settings
|
||||||
*/
|
*/
|
||||||
randomisePmcHostility(difficultySettings: Difficulty): void;
|
randomisePmcHostility(difficultySettings: Difficulty): void;
|
||||||
@ -31,7 +54,7 @@ export declare class BotHelper {
|
|||||||
*/
|
*/
|
||||||
addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void;
|
addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void;
|
||||||
/**
|
/**
|
||||||
* Add a bot to the ENEMY_BOT_TYPES array
|
* Add a bot to the ENEMY_BOT_TYPES array, do not add itself if its on the enemy list
|
||||||
* @param difficultySettings bot settings to alter
|
* @param difficultySettings bot settings to alter
|
||||||
* @param typesToAdd bot type to add to enemy list
|
* @param typesToAdd bot type to add to enemy list
|
||||||
*/
|
*/
|
||||||
@ -42,4 +65,10 @@ export declare class BotHelper {
|
|||||||
* @param typesToAdd bot type to add to revenge list
|
* @param typesToAdd bot type to add to revenge list
|
||||||
*/
|
*/
|
||||||
addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void;
|
addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void;
|
||||||
|
/**
|
||||||
|
* Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check
|
||||||
|
* @param botRole the bot role to check if should be a pmc
|
||||||
|
* @returns true if should be a pmc
|
||||||
|
*/
|
||||||
|
shouldBotBePmc(botRole: string): boolean;
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ declare class ItemHelper {
|
|||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseServer: DatabaseServer);
|
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseServer: DatabaseServer);
|
||||||
/**
|
/**
|
||||||
* Checks if a id is a valid item. Valid meaning that it's an item that be stored in stash
|
* Checks if an id is a valid item. Valid meaning that it's an item that be stored in stash
|
||||||
* @param {string} tpl the template id / tpl
|
* @param {string} tpl the template id / tpl
|
||||||
* @returns boolean; true for items that may be in player posession and not quest items
|
* @returns boolean; true for items that may be in player posession and not quest items
|
||||||
*/
|
*/
|
||||||
@ -79,6 +79,11 @@ declare class ItemHelper {
|
|||||||
* @returns {array} The array of StackSlotItems
|
* @returns {array} The array of StackSlotItems
|
||||||
*/
|
*/
|
||||||
generateItemsFromStackSlot(item: ITemplateItem, parentId: string): Item[];
|
generateItemsFromStackSlot(item: ITemplateItem, parentId: string): Item[];
|
||||||
|
/**
|
||||||
|
* Get cloned copy of all item data from items.json
|
||||||
|
* @returns array of ITemplateItem objects
|
||||||
|
*/
|
||||||
|
getItems(): ITemplateItem[];
|
||||||
/**
|
/**
|
||||||
* Gets item data from items.json
|
* Gets item data from items.json
|
||||||
* @param tpl items template id to look up
|
* @param tpl items template id to look up
|
||||||
|
@ -28,6 +28,8 @@ export interface IBotBase {
|
|||||||
CarExtractCounts: CarExtractCounts;
|
CarExtractCounts: CarExtractCounts;
|
||||||
SurvivorClass: SurvivorClass;
|
SurvivorClass: SurvivorClass;
|
||||||
WishList: string[];
|
WishList: string[];
|
||||||
|
/** SPT specific property used during bot generation in raid */
|
||||||
|
sptIsPmc?: boolean;
|
||||||
}
|
}
|
||||||
export interface Info {
|
export interface Info {
|
||||||
EntryPoint: string;
|
EntryPoint: string;
|
||||||
|
@ -80,7 +80,7 @@ export interface Props {
|
|||||||
HasShoulderContact?: boolean;
|
HasShoulderContact?: boolean;
|
||||||
SightingRange?: number;
|
SightingRange?: number;
|
||||||
DoubleActionAccuracyPenaltyMult?: number;
|
DoubleActionAccuracyPenaltyMult?: number;
|
||||||
ModesCount: any;
|
ModesCount?: any;
|
||||||
DurabilityBurnModificator?: number;
|
DurabilityBurnModificator?: number;
|
||||||
HeatFactor?: number;
|
HeatFactor?: number;
|
||||||
CoolFactor?: number;
|
CoolFactor?: number;
|
||||||
@ -156,7 +156,7 @@ export interface Props {
|
|||||||
RigLayoutName?: string;
|
RigLayoutName?: string;
|
||||||
MaxDurability?: number;
|
MaxDurability?: number;
|
||||||
armorZone?: string[];
|
armorZone?: string[];
|
||||||
armorClass: any;
|
armorClass?: any;
|
||||||
mousePenalty?: number;
|
mousePenalty?: number;
|
||||||
weaponErgonomicPenalty?: number;
|
weaponErgonomicPenalty?: number;
|
||||||
BluntThroughput?: number;
|
BluntThroughput?: number;
|
||||||
@ -254,8 +254,8 @@ export interface Props {
|
|||||||
foodUseTime?: number;
|
foodUseTime?: number;
|
||||||
foodEffectType?: string;
|
foodEffectType?: string;
|
||||||
StimulatorBuffs?: string;
|
StimulatorBuffs?: string;
|
||||||
effects_health: any;
|
effects_health?: any;
|
||||||
effects_damage: any;
|
effects_damage?: any;
|
||||||
MaximumNumberOfUsage?: number;
|
MaximumNumberOfUsage?: number;
|
||||||
knifeHitDelay?: number;
|
knifeHitDelay?: number;
|
||||||
knifeHitSlashRate?: number;
|
knifeHitSlashRate?: number;
|
||||||
|
@ -25,6 +25,7 @@ export declare enum BaseClasses {
|
|||||||
SIGHTS = "5448fe7a4bdc2d6f028b456b",
|
SIGHTS = "5448fe7a4bdc2d6f028b456b",
|
||||||
MEDS = "543be5664bdc2dd4348b4569",
|
MEDS = "543be5664bdc2dd4348b4569",
|
||||||
MONEY = "543be5dd4bdc2deb348b4569",
|
MONEY = "543be5dd4bdc2deb348b4569",
|
||||||
|
NIGHTVISION = "5a2c3a9486f774688b05e574",
|
||||||
KEY = "543be5e94bdc2df1348b4568",
|
KEY = "543be5e94bdc2df1348b4568",
|
||||||
KEY_MECHANICAL = "5c99f98d86f7745c314214b3",
|
KEY_MECHANICAL = "5c99f98d86f7745c314214b3",
|
||||||
KEYCARD = "5c164d2286f774194c5e69fa",
|
KEYCARD = "5c164d2286f774194c5e69fa",
|
||||||
@ -66,7 +67,6 @@ export declare enum BaseClasses {
|
|||||||
LUBRICANT = "57864e4c24597754843f8723",
|
LUBRICANT = "57864e4c24597754843f8723",
|
||||||
BATTERY = "57864ee62459775490116fc1",
|
BATTERY = "57864ee62459775490116fc1",
|
||||||
ASSAULT_SCOPE = "55818add4bdc2d5b648b456f",
|
ASSAULT_SCOPE = "55818add4bdc2d5b648b456f",
|
||||||
REFLEX_SIGHT = "55818ad54bdc2ddc698b4569",
|
|
||||||
TACTICAL_COMBO = "55818b164bdc2ddc698b456c",
|
TACTICAL_COMBO = "55818b164bdc2ddc698b456c",
|
||||||
FLASHLIGHT = "55818b084bdc2d5b648b4571",
|
FLASHLIGHT = "55818b084bdc2d5b648b4571",
|
||||||
MAGAZINE = "5448bc234bdc2d3c308b4569",
|
MAGAZINE = "5448bc234bdc2d3c308b4569",
|
||||||
|
151
TypeScript/10ScopesAndTypes/types/models/enums/WeaponTypes.d.ts
vendored
Normal file
151
TypeScript/10ScopesAndTypes/types/models/enums/WeaponTypes.d.ts
vendored
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
export declare enum Weapons127x55 {
|
||||||
|
ASH_12 = "5cadfbf7ae92152ac412eeef"
|
||||||
|
}
|
||||||
|
export declare enum Weapons86x70 {
|
||||||
|
MK_18 = "5fc22d7c187fea44d52eda44",
|
||||||
|
AXMC = "627e14b21713922ded6f2c15"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x39 {
|
||||||
|
AS_VAL = "57c44b372459772d2b39b8ce",
|
||||||
|
VSS_VINTOREZ = "57838ad32459774a17445cd2"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x54R {
|
||||||
|
SVDS = "5c46fbd72e2216398b5a8c9c",
|
||||||
|
MP_18 = "61f7c9e189e6fb1a5e3ea78d",
|
||||||
|
MOSIN_INFANTRY = "5bfd297f0db834001a669119",
|
||||||
|
MOSIN_SNIPER = "5ae08f0a5acfc408fb1398a1",
|
||||||
|
SV_98 = "55801eed4bdc2d89578b4588"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x51 {
|
||||||
|
VPO_101 = "5c501a4d2e221602b412b540",
|
||||||
|
DT_MDR_762 = "5dcbd56fdbd3d91b3e5468d5",
|
||||||
|
SA_58 = "5b0bbe4e5acfc40dc528a72d",
|
||||||
|
SCARH_BLACK = "6183afd850224f204c1da514",
|
||||||
|
SCARH_FDE = "6165ac306ef05c2ce828ef74",
|
||||||
|
HK_G28 = "6176aca650224f204c1da3fb",
|
||||||
|
M1A = "5aafa857e5b5b00018480968",
|
||||||
|
RFB = "5f2a9575926fd9352339381f",
|
||||||
|
RSASS = "5a367e5dc4a282000e49738f",
|
||||||
|
SR_25 = "5df8ce05b11454561e39243b",
|
||||||
|
DVL_10 = "588892092459774ac91d4b11",
|
||||||
|
M700 = "5bfea6e90db834001b7347f3",
|
||||||
|
T5000M = "5df24cf80dee1b22f862e9bc"
|
||||||
|
}
|
||||||
|
export declare enum Weapons366TKM {
|
||||||
|
VPO_209 = "59e6687d86f77411d949b251",
|
||||||
|
VPO_215 = "5de652c31b7e3716273428be"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x39 {
|
||||||
|
OP_SKS = "587e02ff24597743df3deaeb",
|
||||||
|
SKS = "574d967124597745970e7c94",
|
||||||
|
AK_103 = "5ac66d2e5acfc43b321d4b53",
|
||||||
|
AK_104 = "5ac66d725acfc43b321d4b60",
|
||||||
|
AKM = "59d6088586f774275f37482f",
|
||||||
|
AKMN = "5a0ec13bfcdbcb00165aa685",
|
||||||
|
AKMS = "59ff346386f77477562ff5e2",
|
||||||
|
AKMSN = "5abcbc27d8ce8700182eceeb",
|
||||||
|
MK47_MUTANT = "606587252535c57a13424cfd",
|
||||||
|
RD_704 = "628a60ae6b1d481ff772e9c8",
|
||||||
|
VPO_136 = "59e6152586f77473dc057aa1"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x35 {
|
||||||
|
MCX = "5fbcc1d9016cce60e8341ab3"
|
||||||
|
}
|
||||||
|
export declare enum Weapons556x45 {
|
||||||
|
ADAR_2_15 = "5c07c60e0db834002330051f",
|
||||||
|
AK_101 = "5ac66cb05acfc40198510a10",
|
||||||
|
AK_102 = "5ac66d015acfc400180ae6e4",
|
||||||
|
DT_MDR_556 = "5c488a752e221602b412af63",
|
||||||
|
HK_416A5 = "5bb2475ed4351e00853264e3",
|
||||||
|
HK_G36 = "623063e994fc3f7b302a9696",
|
||||||
|
M4A1 = "5447a9cd4bdc2dbd208b4567",
|
||||||
|
SCARL_BLACK = "6184055050224f204c1da540",
|
||||||
|
SCARL_FDE = "618428466ef05c2ce828f218",
|
||||||
|
TX15_DML = "5d43021ca4b9362eab4b5e25"
|
||||||
|
}
|
||||||
|
export declare enum Weapons545x39 {
|
||||||
|
AK_105 = "5ac66d9b5acfc4001633997a",
|
||||||
|
AK_74 = "5bf3e03b0db834001d2c4a9c",
|
||||||
|
AK_74M = "5ac4cd105acfc40016339859",
|
||||||
|
AK_74N = "5644bd2b4bdc2d3b4c8b4572",
|
||||||
|
AKS_74 = "5bf3e0490db83400196199af",
|
||||||
|
AKS_74N = "5ab8e9fcd8ce870019439434",
|
||||||
|
AKS_74U = "57dc2fa62459775949412633",
|
||||||
|
AKS_74UB = "5839a40f24597726f856b511",
|
||||||
|
AKS_74UN = "583990e32459771419544dd2",
|
||||||
|
SAG_AK = "628b5638ad252a16da6dd245",
|
||||||
|
SAG_AK_SHORT = "628b9c37a733087d0d7fe84b",
|
||||||
|
RPK_16 = "5beed0f50db834001c062b12"
|
||||||
|
}
|
||||||
|
export declare enum Weapons57x28FN {
|
||||||
|
FN_57_BLACK = "5d3eb3b0a4b93615055e84d2",
|
||||||
|
FN_57_FDE = "5d67abc1a4b93614ec50137f",
|
||||||
|
FN_P90 = "5cc82d76e24e8d00134b4b83"
|
||||||
|
}
|
||||||
|
export declare enum Weapons46x30HK {
|
||||||
|
MP7A1 = "5ba26383d4351e00334c93d9",
|
||||||
|
MP7A2 = "5bd70322209c4d00d7167b8f"
|
||||||
|
}
|
||||||
|
export declare enum Weapons1143x23 {
|
||||||
|
M1911A1 = "5e81c3cbac2bb513793cdc75",
|
||||||
|
M45A1 = "5f36a0e5fbf956000b716b65",
|
||||||
|
USP45 = "6193a720f8ee7e52e42109ed",
|
||||||
|
UMP45 = "5fc3e272f8b6a877a729eac5",
|
||||||
|
VECTOR45 = "5fb64bc92b1b027b1f50bcf2"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x33R {
|
||||||
|
CR_50DS = "61a4c8884f95bc3b2c5dc96f"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x21 {
|
||||||
|
SR_1MP = "59f98b4986f7746f546d2cef"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x19 {
|
||||||
|
GLOCK_17 = "5a7ae0c351dfba0017554310",
|
||||||
|
GLOCK_18C = "5b1fa9b25acfc40018633c01",
|
||||||
|
M9A3 = "5cadc190ae921500103bb3b6",
|
||||||
|
MP_443 = "576a581d2459771e7b1bc4f1",
|
||||||
|
P226R = "56d59856d2720bd8418b456a",
|
||||||
|
PL_15 = "602a9740da11d6478d5a06dc",
|
||||||
|
CR_200DS = "624c2e8614da335f1e034d8c",
|
||||||
|
MP5 = "5926bb2186f7744b1c6c6e60",
|
||||||
|
MP5K = "5d2f0d8048f0356c925bc3b0",
|
||||||
|
MP9 = "5e00903ae9dc277128008b87",
|
||||||
|
MP9_N = "5de7bd7bfd6b4e6e2276dc25",
|
||||||
|
MPX = "58948c8e86f77409493f7266",
|
||||||
|
PP_19_01 = "59984ab886f7743e98271174",
|
||||||
|
SAIGA_9 = "59f9cabd86f7743a10721f46",
|
||||||
|
STM_9 = "60339954d62c9b14ed777c06",
|
||||||
|
VECTOR_9MM = "5fc3f2d5900b1d5091531e57"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x18 {
|
||||||
|
APB = "5abccb7dd8ce87001773e277",
|
||||||
|
APS = "5a17f98cfcdbcb0980087290",
|
||||||
|
PB_SILENCED = "56e0598dd2720bb5668b45a6",
|
||||||
|
PM = "5448bd6b4bdc2dfc2f8b4569",
|
||||||
|
PM_T = "579204f224597773d619e051",
|
||||||
|
PP9_KLIN = "57f4c844245977379d5c14d1",
|
||||||
|
PP91_KEDR = "57d14d2524597714373db789",
|
||||||
|
PP91_KEDRB = "57f3c6bd24597738e730fa2f"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x25 {
|
||||||
|
TT = "571a12c42459771f627b58a0",
|
||||||
|
TT_GOLD = "5b3b713c5acfc4330140bd8d",
|
||||||
|
PPSH_41 = "5ea03f7400685063ec28bfa8"
|
||||||
|
}
|
||||||
|
export declare enum Weapons12Gauge {
|
||||||
|
M3_SUPER90 = "6259b864ebedf17603599e88",
|
||||||
|
M590A1 = "5e870397991fd70db46995c8",
|
||||||
|
M870 = "5a7828548dc32e5a9c28b516",
|
||||||
|
MP_133 = "54491c4f4bdc2db1078b4568",
|
||||||
|
MP_153 = "56dee2bdd2720bc8328b4567",
|
||||||
|
MP_155 = "606dae0ab0e443224b421bb7",
|
||||||
|
MP_43_1C = "5580223e4bdc2d1c128b457f",
|
||||||
|
MTS_255_12 = "60db29ce99594040e04c4a27",
|
||||||
|
SAIGA_12GA = "576165642459773c7a400233"
|
||||||
|
}
|
||||||
|
export declare enum Weapons20Gauge {
|
||||||
|
TOZ_106 = "5a38e6bac4a2826c6e06d79b"
|
||||||
|
}
|
||||||
|
export declare enum Weapons23x75 {
|
||||||
|
KS_23M = "5e848cc2988a8701445df1e8"
|
||||||
|
}
|
@ -65,6 +65,7 @@ export interface LootNvalue {
|
|||||||
export interface EquipmentFilters {
|
export interface EquipmentFilters {
|
||||||
weaponModLimits: ModLimits;
|
weaponModLimits: ModLimits;
|
||||||
randomisedWeaponModSlots?: string[];
|
randomisedWeaponModSlots?: string[];
|
||||||
|
randomisedArmorSlots?: string[];
|
||||||
blacklist: EquipmentFilterDetails[];
|
blacklist: EquipmentFilterDetails[];
|
||||||
whitelist: EquipmentFilterDetails[];
|
whitelist: EquipmentFilterDetails[];
|
||||||
}
|
}
|
||||||
|
@ -7,14 +7,18 @@ export interface IPmcConfig {
|
|||||||
looseWeaponInBackpackLootMinMax: MinMax;
|
looseWeaponInBackpackLootMinMax: MinMax;
|
||||||
isUsec: number;
|
isUsec: number;
|
||||||
chanceSameSideIsHostilePercent: number;
|
chanceSameSideIsHostilePercent: number;
|
||||||
usecType: string;
|
/** key: location, value: type for usec/bear */
|
||||||
bearType: string;
|
pmcType: Record<string, PmcTypes>;
|
||||||
maxBackpackLootTotalRub: number;
|
maxBackpackLootTotalRub: number;
|
||||||
maxPocketLootTotalRub: number;
|
maxPocketLootTotalRub: number;
|
||||||
maxVestLootTotalRub: number;
|
maxVestLootTotalRub: number;
|
||||||
convertIntoPmcChance: Record<string, MinMax>;
|
convertIntoPmcChance: Record<string, MinMax>;
|
||||||
enemyTypes: string[];
|
enemyTypes: string[];
|
||||||
}
|
}
|
||||||
|
export interface PmcTypes {
|
||||||
|
usec: string;
|
||||||
|
bear: string;
|
||||||
|
}
|
||||||
export interface DynamicLoot {
|
export interface DynamicLoot {
|
||||||
whitelist: string[];
|
whitelist: string[];
|
||||||
blacklist: string[];
|
blacklist: string[];
|
||||||
|
@ -39,6 +39,7 @@ export interface Dynamic {
|
|||||||
offerItemCount: MinMax;
|
offerItemCount: MinMax;
|
||||||
price: MinMax;
|
price: MinMax;
|
||||||
presetPrice: MinMax;
|
presetPrice: MinMax;
|
||||||
|
showDefaultPresetsOnly: boolean;
|
||||||
endTimeSeconds: MinMax;
|
endTimeSeconds: MinMax;
|
||||||
condition: Condition;
|
condition: Condition;
|
||||||
stackablePercent: MinMax;
|
stackablePercent: MinMax;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
export declare class LootItem {
|
export declare class LootItem {
|
||||||
|
id?: string;
|
||||||
tpl: string;
|
tpl: string;
|
||||||
isPreset: boolean;
|
isPreset: boolean;
|
||||||
stackCount: number;
|
stackCount: number;
|
||||||
|
47
TypeScript/10ScopesAndTypes/types/services/BotGenerationCacheService.d.ts
vendored
Normal file
47
TypeScript/10ScopesAndTypes/types/services/BotGenerationCacheService.d.ts
vendored
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import { BotHelper } from "../helpers/BotHelper";
|
||||||
|
import { IBotBase } from "../models/eft/common/tables/IBotBase";
|
||||||
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
|
export declare class BotGenerationCacheService {
|
||||||
|
protected logger: ILogger;
|
||||||
|
protected randomUtil: RandomUtil;
|
||||||
|
protected jsonUtil: JsonUtil;
|
||||||
|
protected botHelper: BotHelper;
|
||||||
|
protected storedBots: IBotBase[];
|
||||||
|
constructor(logger: ILogger, randomUtil: RandomUtil, jsonUtil: JsonUtil, botHelper: BotHelper);
|
||||||
|
/**
|
||||||
|
* Store array of bots in cache, shuffle results before storage
|
||||||
|
* @param botsToStore
|
||||||
|
*/
|
||||||
|
storeBots(botsToStore: IBotBase[]): void;
|
||||||
|
/**
|
||||||
|
* Find and return a bot based on its role
|
||||||
|
* Remove bot from internal array so it can't be retreived again
|
||||||
|
* @param role role to retreive (assault/bossTagilla etc)
|
||||||
|
* @returns IBotBase object
|
||||||
|
*/
|
||||||
|
getBot(role: string): IBotBase[];
|
||||||
|
/**
|
||||||
|
* Find a bot by its index from cache
|
||||||
|
* @param indexOfBotToReturn index to find bot by
|
||||||
|
* @returns bot profile
|
||||||
|
*/
|
||||||
|
protected getBotFromCache(indexOfBotToReturn: number): IBotBase;
|
||||||
|
/**
|
||||||
|
* Remove bot profile by index from cache
|
||||||
|
* @param indexOfBotToReturn Index of bot profile to remove
|
||||||
|
*/
|
||||||
|
protected removeBotFromCache(indexOfBotToReturn: number): void;
|
||||||
|
/**
|
||||||
|
* Get index of bot profile that matches criteria
|
||||||
|
* @param role role of bot we want
|
||||||
|
* @param getPmc is requested bot a pmc
|
||||||
|
* @returns index of found bot
|
||||||
|
*/
|
||||||
|
protected getIndexOfBotToReturn(role: string, getPmc: boolean): number;
|
||||||
|
/**
|
||||||
|
* Remove all cached bot profiles
|
||||||
|
*/
|
||||||
|
clearStoredBots(): void;
|
||||||
|
}
|
@ -34,6 +34,17 @@ export declare class BotLootCacheService {
|
|||||||
* @param isPmc Is the bot a PMC (alteres what loot is cached)
|
* @param isPmc Is the bot a PMC (alteres what loot is cached)
|
||||||
*/
|
*/
|
||||||
protected addLootToCache(botRole: string, isPmc: boolean, lootPool: Items): void;
|
protected addLootToCache(botRole: string, isPmc: boolean, lootPool: Items): void;
|
||||||
|
/**
|
||||||
|
* Sort a pool of item objects by its flea price
|
||||||
|
* @param poolToSort pool of items to sort
|
||||||
|
*/
|
||||||
|
protected sortPoolByRagfairPrice(poolToSort: ITemplateItem[]): void;
|
||||||
|
/**
|
||||||
|
* Add unique items into combined pool
|
||||||
|
* @param combinedItemPool Pool of items to add to
|
||||||
|
* @param itemsToAdd items to add to combined pool if unique
|
||||||
|
*/
|
||||||
|
protected addUniqueItemsToPool(combinedItemPool: ITemplateItem[], itemsToAdd: ITemplateItem[]): void;
|
||||||
/**
|
/**
|
||||||
* Ammo/grenades have this property
|
* Ammo/grenades have this property
|
||||||
* @param props
|
* @param props
|
||||||
|
@ -55,6 +55,17 @@ export declare class FenceService {
|
|||||||
* Replace a percentage of fence assorts with freshly generated items
|
* Replace a percentage of fence assorts with freshly generated items
|
||||||
*/
|
*/
|
||||||
performPartialRefresh(): void;
|
performPartialRefresh(): void;
|
||||||
|
/**
|
||||||
|
* Increment fence next refresh timestamp by current timestamp + partialRefreshTimeSeconds from config
|
||||||
|
*/
|
||||||
|
protected incrementPartialRefreshTime(): void;
|
||||||
|
/**
|
||||||
|
* Compare the current fence offer count to what the config wants it to be,
|
||||||
|
* If value is lower add extra count to value to generate more items to fill gap
|
||||||
|
* @param existingItemCountToReplace count of items to generate
|
||||||
|
* @returns number of items to generate
|
||||||
|
*/
|
||||||
|
protected getCountOfItemsToGenerate(existingItemCountToReplace: number): number;
|
||||||
/**
|
/**
|
||||||
* Choose an item (not mod) at random and remove from assorts
|
* Choose an item (not mod) at random and remove from assorts
|
||||||
*/
|
*/
|
||||||
|
27
TypeScript/10ScopesAndTypes/types/services/PmcAiService.d.ts
vendored
Normal file
27
TypeScript/10ScopesAndTypes/types/services/PmcAiService.d.ts
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
|
/** Storing/retreving pmcRoles set at the start of a raid - its done at that point as we know what location the player is heading to */
|
||||||
|
export declare class PmcAiService {
|
||||||
|
protected logger: ILogger;
|
||||||
|
protected configServer: ConfigServer;
|
||||||
|
protected botConfig: IBotConfig;
|
||||||
|
protected usecRole: string;
|
||||||
|
protected bearRole: string;
|
||||||
|
constructor(logger: ILogger, configServer: ConfigServer);
|
||||||
|
/**
|
||||||
|
* Convert from pmc side (usec/bear) to the side as defined in the bot config (usecType/bearType)
|
||||||
|
* @param pmcSide eft side (usec/bear)
|
||||||
|
* @returns pmc side as defined in config
|
||||||
|
*/
|
||||||
|
getPmcRole(pmcSide: "usec" | "bear" | string): string;
|
||||||
|
/**
|
||||||
|
* Set the roles for pmcs
|
||||||
|
* @param location map location to look up and use as pmc types
|
||||||
|
*/
|
||||||
|
setPmcRolesByLocation(location: string): void;
|
||||||
|
/**
|
||||||
|
* Clear the saved role from usec/bear PMCs
|
||||||
|
*/
|
||||||
|
clearPmcRoles(): void;
|
||||||
|
}
|
@ -136,7 +136,7 @@ export declare class RandomUtil {
|
|||||||
* Drawing can be with or without replacement
|
* Drawing can be with or without replacement
|
||||||
* @param {array} list The array we want to draw randomly from
|
* @param {array} list The array we want to draw randomly from
|
||||||
* @param {integer} count The number of times we want to draw
|
* @param {integer} count The number of times we want to draw
|
||||||
* @param {boolean} replacement Draw with ot without replacement from the input array
|
* @param {boolean} replacement Draw with or without replacement from the input array
|
||||||
* @return {array} Array consisting of N random elements
|
* @return {array} Array consisting of N random elements
|
||||||
*/
|
*/
|
||||||
drawRandomFromList<T>(list: Array<T>, count?: number, replacement?: boolean): Array<T>;
|
drawRandomFromList<T>(list: Array<T>, count?: number, replacement?: boolean): Array<T>;
|
||||||
|
@ -4,7 +4,7 @@ export declare class ContextVariable {
|
|||||||
private timestamp;
|
private timestamp;
|
||||||
private type;
|
private type;
|
||||||
constructor(value: any, type: ContextVariableType);
|
constructor(value: any, type: ContextVariableType);
|
||||||
getValue(): any;
|
getValue<T>(): T;
|
||||||
getTimestamp(): Date;
|
getTimestamp(): Date;
|
||||||
getType(): ContextVariableType;
|
getType(): ContextVariableType;
|
||||||
}
|
}
|
||||||
|
@ -5,15 +5,21 @@ import { IBotBase } from "../models/eft/common/tables/IBotBase";
|
|||||||
import { IBotCore } from "../models/eft/common/tables/IBotCore";
|
import { IBotCore } from "../models/eft/common/tables/IBotCore";
|
||||||
import { Difficulty } from "../models/eft/common/tables/IBotType";
|
import { Difficulty } from "../models/eft/common/tables/IBotType";
|
||||||
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
|
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";
|
||||||
|
import { BotGenerationCacheService } from "../services/BotGenerationCacheService";
|
||||||
|
import { PmcAiService } from "../services/PmcAiService";
|
||||||
export declare class BotController {
|
export declare class BotController {
|
||||||
|
protected logger: ILogger;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected botGenerator: BotGenerator;
|
protected botGenerator: BotGenerator;
|
||||||
protected botHelper: BotHelper;
|
protected botHelper: BotHelper;
|
||||||
|
protected pmcAiService: PmcAiService;
|
||||||
|
protected botGenerationCacheService: BotGenerationCacheService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, configServer: ConfigServer);
|
constructor(logger: ILogger, databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, pmcAiService: PmcAiService, botGenerationCacheService: BotGenerationCacheService, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* 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
|
||||||
@ -29,7 +35,7 @@ export declare class BotController {
|
|||||||
* @returns Difficulty object
|
* @returns Difficulty object
|
||||||
*/
|
*/
|
||||||
getBotDifficulty(type: string, difficulty: string): Difficulty;
|
getBotDifficulty(type: string, difficulty: string): Difficulty;
|
||||||
protected getPmcDifficultySettings(pmcType: "bear" | "usec", difficulty: string): Difficulty;
|
protected getPmcDifficultySettings(pmcType: "bear" | "usec", difficulty: string, usecType: string, bearType: string): Difficulty;
|
||||||
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
||||||
getBotCap(): number;
|
getBotCap(): number;
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,10 @@ import { IMatchConfig } from "../models/spt/config/IMatchConfig";
|
|||||||
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 { SaveServer } from "../servers/SaveServer";
|
import { SaveServer } from "../servers/SaveServer";
|
||||||
|
import { BotGenerationCacheService } from "../services/BotGenerationCacheService";
|
||||||
import { BotLootCacheService } from "../services/BotLootCacheService";
|
import { BotLootCacheService } from "../services/BotLootCacheService";
|
||||||
import { MatchLocationService } from "../services/MatchLocationService";
|
import { MatchLocationService } from "../services/MatchLocationService";
|
||||||
|
import { PmcAiService } from "../services/PmcAiService";
|
||||||
import { ProfileSnapshotService } from "../services/ProfileSnapshotService";
|
import { ProfileSnapshotService } from "../services/ProfileSnapshotService";
|
||||||
export declare class MatchController {
|
export declare class MatchController {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
@ -27,11 +29,13 @@ export declare class MatchController {
|
|||||||
protected botLootCacheService: BotLootCacheService;
|
protected botLootCacheService: BotLootCacheService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected profileSnapshotService: ProfileSnapshotService;
|
protected profileSnapshotService: ProfileSnapshotService;
|
||||||
|
protected pmcAiService: PmcAiService;
|
||||||
|
protected botGenerationCacheService: BotGenerationCacheService;
|
||||||
protected applicationContext: ApplicationContext;
|
protected applicationContext: ApplicationContext;
|
||||||
protected matchConfig: IMatchConfig;
|
protected matchConfig: IMatchConfig;
|
||||||
protected inraidConfig: IInRaidConfig;
|
protected inraidConfig: IInRaidConfig;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, matchLocationService: MatchLocationService, traderHelper: TraderHelper, botLootCacheService: BotLootCacheService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext);
|
constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, matchLocationService: MatchLocationService, traderHelper: TraderHelper, botLootCacheService: BotLootCacheService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, pmcAiService: PmcAiService, botGenerationCacheService: BotGenerationCacheService, applicationContext: ApplicationContext);
|
||||||
getEnabled(): boolean;
|
getEnabled(): boolean;
|
||||||
getProfile(info: IGetProfileRequestData): IPmcData[];
|
getProfile(info: IGetProfileRequestData): IPmcData[];
|
||||||
createGroup(sessionID: string, info: ICreateGroupRequestData): any;
|
createGroup(sessionID: string, info: ICreateGroupRequestData): any;
|
||||||
|
@ -9,6 +9,7 @@ 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";
|
||||||
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
||||||
|
import { PmcAiService } from "../services/PmcAiService";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
@ -30,9 +31,10 @@ export declare class BotGenerator {
|
|||||||
protected botEquipmentFilterService: BotEquipmentFilterService;
|
protected botEquipmentFilterService: BotEquipmentFilterService;
|
||||||
protected botHelper: BotHelper;
|
protected botHelper: BotHelper;
|
||||||
protected gameEventHelper: GameEventHelper;
|
protected gameEventHelper: GameEventHelper;
|
||||||
|
protected pmcAiService: PmcAiService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botEquipmentFilterService: BotEquipmentFilterService, botHelper: BotHelper, gameEventHelper: GameEventHelper, configServer: ConfigServer);
|
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botEquipmentFilterService: BotEquipmentFilterService, botHelper: BotHelper, gameEventHelper: GameEventHelper, pmcAiService: PmcAiService, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* Generate a player scav bot object
|
* Generate a player scav bot object
|
||||||
* @param role e.g. assault / pmcbot
|
* @param role e.g. assault / pmcbot
|
||||||
@ -41,13 +43,13 @@ export declare class BotGenerator {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
generatePlayerScav(sessionId: string, role: string, difficulty: string, botTemplate: IBotType): IBotBase;
|
generatePlayerScav(sessionId: string, role: string, difficulty: string, botTemplate: IBotType): IBotBase;
|
||||||
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
|
||||||
/**
|
/**
|
||||||
* Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check
|
* Generate an array of bot objects for populate a raid with
|
||||||
* @param botRole the bot role to check if should be a pmc
|
* @param sessionId session id
|
||||||
* @returns true if should be a pmc
|
* @param info request object
|
||||||
|
* @returns bot array
|
||||||
*/
|
*/
|
||||||
protected shouldBotBePmc(botRole: string): boolean;
|
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
||||||
/**
|
/**
|
||||||
* Get a randomised PMC side based on bot config value 'isUsec'
|
* Get a randomised PMC side based on bot config value 'isUsec'
|
||||||
* @returns pmc side as string
|
* @returns pmc side as string
|
||||||
@ -58,12 +60,30 @@ export declare class BotGenerator {
|
|||||||
* @returns IBotBase object
|
* @returns IBotBase object
|
||||||
*/
|
*/
|
||||||
protected getCloneOfBotBase(): IBotBase;
|
protected getCloneOfBotBase(): IBotBase;
|
||||||
|
/**
|
||||||
|
* Create a IBotBase object with equipment/loot/exp etc
|
||||||
|
* @param sessionId Session id
|
||||||
|
* @param bot bots base file
|
||||||
|
* @param role botRole bot will use
|
||||||
|
* @param node Bot template from db/bots/x.json
|
||||||
|
* @param isPmc Is bot to be a PMC
|
||||||
|
* @param isPlayerScav is bot to be a p scav bot
|
||||||
|
* @returns IBotBase object
|
||||||
|
*/
|
||||||
protected generateBot(sessionId: string, bot: IBotBase, role: string, node: IBotType, isPmc: boolean, isPlayerScav?: boolean): IBotBase;
|
protected generateBot(sessionId: string, bot: IBotBase, role: string, node: IBotType, isPmc: boolean, isPlayerScav?: boolean): IBotBase;
|
||||||
/**
|
/**
|
||||||
* Log the number of PMCs generated to the debug console
|
* Log the number of PMCs generated to the debug console
|
||||||
|
* @param output Generated bot array, ready to send to client
|
||||||
*/
|
*/
|
||||||
protected logPmcGeneratedCount(output: IBotBase[]): void;
|
protected logPmcGeneratedCount(output: IBotBase[]): void;
|
||||||
protected generateRandomLevel(min: number, max: number): BotGenerator.IRandomisedBotLevelResult;
|
/**
|
||||||
|
* Return a randomised bot level and exp value
|
||||||
|
* @param role botRole being generated for
|
||||||
|
* @param min Min exp value
|
||||||
|
* @param max Max exp value
|
||||||
|
* @returns IRandomisedBotLevelResult object
|
||||||
|
*/
|
||||||
|
protected generateRandomLevel(role: string, min: number, max: number): BotGenerator.IRandomisedBotLevelResult;
|
||||||
/**
|
/**
|
||||||
* Converts health object to the required format
|
* Converts health object to the required format
|
||||||
* @param healthObj health object from bot json
|
* @param healthObj health object from bot json
|
||||||
@ -72,19 +92,23 @@ export declare class BotGenerator {
|
|||||||
*/
|
*/
|
||||||
protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth;
|
protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth;
|
||||||
protected generateSkills(skillsObj: Skills): Skills;
|
protected generateSkills(skillsObj: Skills): Skills;
|
||||||
/**
|
|
||||||
* Convert from pmc side (usec/bear) to the side as defined in the bot config (usecType/bearType)
|
|
||||||
* @param pmcSide eft side (usec/bear)
|
|
||||||
* @returns pmc side as defined in config
|
|
||||||
*/
|
|
||||||
protected getPmcRole(pmcSide: string): string;
|
|
||||||
/**
|
/**
|
||||||
* Iterate through bots inventory and loot to find and remove christmas items (as defined in GameEventHelper)
|
* Iterate through bots inventory and loot to find and remove christmas items (as defined in GameEventHelper)
|
||||||
* @param nodeInventory Bots inventory to iterate over
|
* @param nodeInventory Bots inventory to iterate over
|
||||||
*/
|
*/
|
||||||
protected removeChristmasItemsFromBotInventory(nodeInventory: Inventory): void;
|
protected removeChristmasItemsFromBotInventory(nodeInventory: Inventory): void;
|
||||||
|
/**
|
||||||
|
* Generate a random Id for a bot and apply to bots _id and aid value
|
||||||
|
* @param bot bot to update
|
||||||
|
* @returns updated IBotBase object
|
||||||
|
*/
|
||||||
protected generateId(bot: IBotBase): IBotBase;
|
protected generateId(bot: IBotBase): IBotBase;
|
||||||
protected generateInventoryID(profile: IBotBase): IBotBase;
|
protected generateInventoryID(profile: IBotBase): IBotBase;
|
||||||
|
/**
|
||||||
|
* Get the difficulty passed in, if its not "asoline", get selected difficulty from config
|
||||||
|
* @param requestedDifficulty
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
protected getPMCDifficulty(requestedDifficulty: string): string;
|
protected getPMCDifficulty(requestedDifficulty: string): string;
|
||||||
/**
|
/**
|
||||||
* Add a side-specific (usec/bear) dogtag item to a bots inventory
|
* Add a side-specific (usec/bear) dogtag item to a bots inventory
|
||||||
|
@ -1,13 +1,16 @@
|
|||||||
|
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
||||||
|
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
||||||
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
||||||
import { Inventory, Chances, Generation, Mods } from "../models/eft/common/tables/IBotType";
|
import { Chances, Generation, Inventory, Mods } from "../models/eft/common/tables/IBotType";
|
||||||
|
import { EquipmentSlots } from "../models/enums/EquipmentSlots";
|
||||||
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
|
||||||
import { BotWeaponGenerator } from "./BotWeaponGenerator";
|
|
||||||
import { BotLootGenerator } from "./BotLootGenerator";
|
import { BotLootGenerator } from "./BotLootGenerator";
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { BotWeaponGenerator } from "./BotWeaponGenerator";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
|
||||||
export declare class BotInventoryGenerator {
|
export declare class BotInventoryGenerator {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
@ -17,8 +20,14 @@ export declare class BotInventoryGenerator {
|
|||||||
protected botLootGenerator: BotLootGenerator;
|
protected botLootGenerator: BotLootGenerator;
|
||||||
protected botGeneratorHelper: BotGeneratorHelper;
|
protected botGeneratorHelper: BotGeneratorHelper;
|
||||||
protected weightedRandomHelper: WeightedRandomHelper;
|
protected weightedRandomHelper: WeightedRandomHelper;
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, weightedRandomHelper: WeightedRandomHelper);
|
protected configServer: ConfigServer;
|
||||||
generateInventory(sessionId: string, templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory;
|
protected botConfig: IBotConfig;
|
||||||
|
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, weightedRandomHelper: WeightedRandomHelper, configServer: ConfigServer);
|
||||||
|
generateInventory(sessionId: string, templateInventory: Inventory, equipmentChances: Chances, itemGenerationLimitsMinMax: Generation, botRole: string, isPmc: boolean): PmcInventory;
|
||||||
|
protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: {
|
||||||
|
slot: EquipmentSlots;
|
||||||
|
shouldSpawn: boolean;
|
||||||
|
}, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: Generation): void;
|
||||||
protected generateEquipment(equipmentSlot: string, equipmentPool: Record<string, number>, modPool: Mods, spawnChances: Chances, botRole: string, inventory: PmcInventory): void;
|
protected generateEquipment(equipmentSlot: string, equipmentPool: Record<string, number>, modPool: Mods, spawnChances: Chances, botRole: string, inventory: PmcInventory): void;
|
||||||
protected generateInventoryBase(): PmcInventory;
|
protected generateInventoryBase(): PmcInventory;
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ export declare class BotWeaponGenerator {
|
|||||||
* @param botRole for durability values
|
* @param botRole for durability values
|
||||||
* @returns Base weapon item in array
|
* @returns Base weapon item in array
|
||||||
*/
|
*/
|
||||||
constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[];
|
protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[];
|
||||||
/**
|
/**
|
||||||
* Get the mods necessary to kit out a weapon to its preset level
|
* Get the mods necessary to kit out a weapon to its preset level
|
||||||
* @param weaponTpl weapon to find preset for
|
* @param weaponTpl weapon to find preset for
|
||||||
|
@ -6,14 +6,16 @@ import { LootRequest } from "../models/spt/services/LootRequest";
|
|||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { ItemFilterService } from "../services/ItemFilterService";
|
import { ItemFilterService } from "../services/ItemFilterService";
|
||||||
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
export declare class LootGenerator {
|
export declare class LootGenerator {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
|
protected hashUtil: HashUtil;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected randomUtil: RandomUtil;
|
protected randomUtil: RandomUtil;
|
||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected itemFilterService: ItemFilterService;
|
protected itemFilterService: ItemFilterService;
|
||||||
constructor(logger: ILogger, databaseServer: DatabaseServer, randomUtil: RandomUtil, itemHelper: ItemHelper, itemFilterService: ItemFilterService);
|
constructor(logger: ILogger, hashUtil: HashUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, itemHelper: ItemHelper, itemFilterService: ItemFilterService);
|
||||||
/**
|
/**
|
||||||
* Generate a list of items based on options passed in
|
* Generate a list of items based on options passed in
|
||||||
* @param options parameters to adjust what loot is generated
|
* @param options parameters to adjust what loot is generated
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
|
import { Preset } from "../models/eft/common/IGlobals";
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
import { Item } from "../models/eft/common/tables/IItem";
|
||||||
|
import { IRagfairConfig } from "../models/spt/config/IRagfairConfig";
|
||||||
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
@ -8,18 +11,40 @@ export declare class RagfairAssortGenerator {
|
|||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
|
protected configServer: ConfigServer;
|
||||||
protected generatedAssortItems: Item[];
|
protected generatedAssortItems: Item[];
|
||||||
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer);
|
protected ragfairConfig: IRagfairConfig;
|
||||||
|
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* Get an array of unique items that can be sold on the flea
|
* Get an array of unique items that can be sold on the flea
|
||||||
* @returns array of unique items
|
* @returns array of unique items
|
||||||
*/
|
*/
|
||||||
getAssortItems(): Item[];
|
getAssortItems(): Item[];
|
||||||
|
/**
|
||||||
|
* Check internal generatedAssortItems array has objects
|
||||||
|
* @returns true if array has objects
|
||||||
|
*/
|
||||||
protected assortsAreGenerated(): boolean;
|
protected assortsAreGenerated(): boolean;
|
||||||
/**
|
/**
|
||||||
* Generate an array of items the flea can sell
|
* Generate an array of items the flea can sell
|
||||||
* @returns array of unique items
|
* @returns array of unique items
|
||||||
*/
|
*/
|
||||||
protected generateRagfairAssortItems(): Item[];
|
protected generateRagfairAssortItems(): Item[];
|
||||||
|
/**
|
||||||
|
* Get presets from globals.json
|
||||||
|
* @returns Preset object array
|
||||||
|
*/
|
||||||
|
protected getPresets(): Preset[];
|
||||||
|
/**
|
||||||
|
* Get default presets from globals.json
|
||||||
|
* @returns Preset object array
|
||||||
|
*/
|
||||||
|
protected getDefaultPresets(): Preset[];
|
||||||
|
/**
|
||||||
|
* Create a base assort item and return it with populated values + 999999 stack count + unlimited count = true
|
||||||
|
* @param tplId tplid to add to item
|
||||||
|
* @param id id to add to item
|
||||||
|
* @returns hydrated Item object
|
||||||
|
*/
|
||||||
protected createRagfairAssortItem(tplId: string, id?: string): Item;
|
protected createRagfairAssortItem(tplId: string, id?: string): Item;
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,17 @@ import { InventoryHelper } from "./InventoryHelper";
|
|||||||
import { ItemHelper } from "./ItemHelper";
|
import { ItemHelper } from "./ItemHelper";
|
||||||
import { ProbabilityHelper } from "./ProbabilityHelper";
|
import { ProbabilityHelper } from "./ProbabilityHelper";
|
||||||
import { ProfileHelper } from "./ProfileHelper";
|
import { ProfileHelper } from "./ProfileHelper";
|
||||||
|
export declare class BotModLimits {
|
||||||
|
scope: ItemCount;
|
||||||
|
scopeMax: number;
|
||||||
|
scopeBaseTypes: string[];
|
||||||
|
flashlightLaser: ItemCount;
|
||||||
|
flashlightLaserMax: number;
|
||||||
|
flashlgihtLaserBaseTypes: string[];
|
||||||
|
}
|
||||||
|
export declare class ItemCount {
|
||||||
|
count: number;
|
||||||
|
}
|
||||||
export declare class BotGeneratorHelper {
|
export declare class BotGeneratorHelper {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected jsonUtil: JsonUtil;
|
protected jsonUtil: JsonUtil;
|
||||||
@ -58,6 +69,27 @@ export declare class BotGeneratorHelper {
|
|||||||
* @returns Weapon with mods
|
* @returns Weapon with mods
|
||||||
*/
|
*/
|
||||||
generateModsForWeapon(sessionId: string, weapon: Item[], modPool: Mods, weaponParentId: string, parentTemplate: ITemplateItem, modSpawnChances: ModsChances, ammoTpl: string, botRole: string): Item[];
|
generateModsForWeapon(sessionId: string, weapon: Item[], modPool: Mods, weaponParentId: string, parentTemplate: ITemplateItem, modSpawnChances: ModsChances, ammoTpl: string, botRole: string): Item[];
|
||||||
|
/**
|
||||||
|
* Find mod tpls of a provided type and add to modPool
|
||||||
|
* @param desiredSlotName slot to look up and add we are adding tpls for (e.g mod_scope)
|
||||||
|
* @param modTemplate db object for modItem we get compatible mods from
|
||||||
|
* @param modPool Pool of mods we are adding to
|
||||||
|
*/
|
||||||
|
protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: Mods, botEquipBlacklist: EquipmentFilterDetails): void;
|
||||||
|
/**
|
||||||
|
* Check if mod item is on limited list + has surpassed the limit set for it
|
||||||
|
* @param botRole role the bot has e.g. assault
|
||||||
|
* @param modTpl mods tpl
|
||||||
|
* @param modLimits limits set for weapon being generated for this bot
|
||||||
|
* @returns true if over item limit
|
||||||
|
*/
|
||||||
|
protected modHasReachedItemLimit(botRole: string, modTpl: string, modLimits: BotModLimits): boolean;
|
||||||
|
/**
|
||||||
|
* Initalise mod limits to be used when generating the weapon
|
||||||
|
* @param botRole "assault", "bossTagilla" or "pmc"
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
protected initModLimits(botRole: string): BotModLimits;
|
||||||
/**
|
/**
|
||||||
* Generate a pool of mods for this bots mod type if bot has values inside `randomisedWeaponModSlots` array found in bot.json/equipment[botrole]
|
* Generate a pool of mods for this bots mod type if bot has values inside `randomisedWeaponModSlots` array found in bot.json/equipment[botrole]
|
||||||
* @param allowedMods Mods to be added to mod pool
|
* @param allowedMods Mods to be added to mod pool
|
||||||
@ -65,7 +97,21 @@ export declare class BotGeneratorHelper {
|
|||||||
* @param modSlot Slot to generate mods for
|
* @param modSlot Slot to generate mods for
|
||||||
* @param itemModPool base mod pool to replace values of
|
* @param itemModPool base mod pool to replace values of
|
||||||
*/
|
*/
|
||||||
protected generateDynamicModPool(allowedMods: string[], botEquipBlacklist: EquipmentFilterDetails, modSlot: string, itemModPool: Record<string, string[]>): void;
|
protected generateDynamicWeaponModPool(allowedMods: string[], botEquipBlacklist: EquipmentFilterDetails, modSlot: string, itemModPool: Record<string, string[]>): void;
|
||||||
|
/**
|
||||||
|
* Find all compatible mods for equipment item and add to modPool
|
||||||
|
* @param itemDetails item to find mods for
|
||||||
|
* @param modPool ModPool to add mods to
|
||||||
|
*/
|
||||||
|
generateDynamicModPool(itemDetails: ITemplateItem, modPool: Mods): void;
|
||||||
|
/**
|
||||||
|
* Take a list of tpls and filter out blacklisted values using itemFilterService + botEquipmentBlacklist
|
||||||
|
* @param allowedMods base mods to filter
|
||||||
|
* @param botEquipBlacklist equipment blacklist
|
||||||
|
* @param modSlot slot mods belong to
|
||||||
|
* @returns Filtered array of mod tpls
|
||||||
|
*/
|
||||||
|
protected filterWeaponModsByBlacklist(allowedMods: string[], botEquipBlacklist: EquipmentFilterDetails, modSlot: string): string[];
|
||||||
/**
|
/**
|
||||||
* Check if the specific item type on the weapon has reached the set limit
|
* Check if the specific item type on the weapon has reached the set limit
|
||||||
* @param modTpl item to check is limited
|
* @param modTpl item to check is limited
|
||||||
|
@ -13,11 +13,34 @@ export declare class BotHelper {
|
|||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(logger: ILogger, jsonUtil: JsonUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, configServer: ConfigServer);
|
constructor(logger: ILogger, jsonUtil: JsonUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, configServer: ConfigServer);
|
||||||
|
/**
|
||||||
|
* Get difficulty settings for desired bot type, if not found use assault bot types
|
||||||
|
* @param type bot type to retreive difficulty of
|
||||||
|
* @param difficulty difficulty to get settings for (easy/normal etc)
|
||||||
|
* @returns Difficulty object
|
||||||
|
*/
|
||||||
getBotDifficultySettings(type: string, difficulty: string): Difficulty;
|
getBotDifficultySettings(type: string, difficulty: string): Difficulty;
|
||||||
|
/**
|
||||||
|
* Get a template object for the specified botRole from bots.types db
|
||||||
|
* @param role botRole to get template for
|
||||||
|
* @returns IBotType object
|
||||||
|
*/
|
||||||
getBotTemplate(role: string): IBotType;
|
getBotTemplate(role: string): IBotType;
|
||||||
|
/**
|
||||||
|
* Get difficulty settings for a PMC
|
||||||
|
* @param type "usec" / "bear"
|
||||||
|
* @param difficulty what difficulty to retrieve
|
||||||
|
* @returns Difficulty object
|
||||||
|
*/
|
||||||
getPmcDifficultySettings(type: string, difficulty: string): Difficulty;
|
getPmcDifficultySettings(type: string, difficulty: string): Difficulty;
|
||||||
|
/**
|
||||||
|
* Choose a random difficulty from - easy/normal/hard/impossible
|
||||||
|
* @returns random difficulty
|
||||||
|
*/
|
||||||
|
chooseRandomDifficulty(): string;
|
||||||
/**
|
/**
|
||||||
* Randomise the chance the PMC will attack their own side
|
* Randomise the chance the PMC will attack their own side
|
||||||
|
* Look up value in bot.json/chanceSameSideIsHostilePercent
|
||||||
* @param difficultySettings pmc difficulty settings
|
* @param difficultySettings pmc difficulty settings
|
||||||
*/
|
*/
|
||||||
randomisePmcHostility(difficultySettings: Difficulty): void;
|
randomisePmcHostility(difficultySettings: Difficulty): void;
|
||||||
@ -31,7 +54,7 @@ export declare class BotHelper {
|
|||||||
*/
|
*/
|
||||||
addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void;
|
addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void;
|
||||||
/**
|
/**
|
||||||
* Add a bot to the ENEMY_BOT_TYPES array
|
* Add a bot to the ENEMY_BOT_TYPES array, do not add itself if its on the enemy list
|
||||||
* @param difficultySettings bot settings to alter
|
* @param difficultySettings bot settings to alter
|
||||||
* @param typesToAdd bot type to add to enemy list
|
* @param typesToAdd bot type to add to enemy list
|
||||||
*/
|
*/
|
||||||
@ -42,4 +65,10 @@ export declare class BotHelper {
|
|||||||
* @param typesToAdd bot type to add to revenge list
|
* @param typesToAdd bot type to add to revenge list
|
||||||
*/
|
*/
|
||||||
addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void;
|
addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void;
|
||||||
|
/**
|
||||||
|
* Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check
|
||||||
|
* @param botRole the bot role to check if should be a pmc
|
||||||
|
* @returns true if should be a pmc
|
||||||
|
*/
|
||||||
|
shouldBotBePmc(botRole: string): boolean;
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ declare class ItemHelper {
|
|||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseServer: DatabaseServer);
|
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseServer: DatabaseServer);
|
||||||
/**
|
/**
|
||||||
* Checks if a id is a valid item. Valid meaning that it's an item that be stored in stash
|
* Checks if an id is a valid item. Valid meaning that it's an item that be stored in stash
|
||||||
* @param {string} tpl the template id / tpl
|
* @param {string} tpl the template id / tpl
|
||||||
* @returns boolean; true for items that may be in player posession and not quest items
|
* @returns boolean; true for items that may be in player posession and not quest items
|
||||||
*/
|
*/
|
||||||
@ -79,6 +79,11 @@ declare class ItemHelper {
|
|||||||
* @returns {array} The array of StackSlotItems
|
* @returns {array} The array of StackSlotItems
|
||||||
*/
|
*/
|
||||||
generateItemsFromStackSlot(item: ITemplateItem, parentId: string): Item[];
|
generateItemsFromStackSlot(item: ITemplateItem, parentId: string): Item[];
|
||||||
|
/**
|
||||||
|
* Get cloned copy of all item data from items.json
|
||||||
|
* @returns array of ITemplateItem objects
|
||||||
|
*/
|
||||||
|
getItems(): ITemplateItem[];
|
||||||
/**
|
/**
|
||||||
* Gets item data from items.json
|
* Gets item data from items.json
|
||||||
* @param tpl items template id to look up
|
* @param tpl items template id to look up
|
||||||
|
@ -28,6 +28,8 @@ export interface IBotBase {
|
|||||||
CarExtractCounts: CarExtractCounts;
|
CarExtractCounts: CarExtractCounts;
|
||||||
SurvivorClass: SurvivorClass;
|
SurvivorClass: SurvivorClass;
|
||||||
WishList: string[];
|
WishList: string[];
|
||||||
|
/** SPT specific property used during bot generation in raid */
|
||||||
|
sptIsPmc?: boolean;
|
||||||
}
|
}
|
||||||
export interface Info {
|
export interface Info {
|
||||||
EntryPoint: string;
|
EntryPoint: string;
|
||||||
|
@ -80,7 +80,7 @@ export interface Props {
|
|||||||
HasShoulderContact?: boolean;
|
HasShoulderContact?: boolean;
|
||||||
SightingRange?: number;
|
SightingRange?: number;
|
||||||
DoubleActionAccuracyPenaltyMult?: number;
|
DoubleActionAccuracyPenaltyMult?: number;
|
||||||
ModesCount: any;
|
ModesCount?: any;
|
||||||
DurabilityBurnModificator?: number;
|
DurabilityBurnModificator?: number;
|
||||||
HeatFactor?: number;
|
HeatFactor?: number;
|
||||||
CoolFactor?: number;
|
CoolFactor?: number;
|
||||||
@ -156,7 +156,7 @@ export interface Props {
|
|||||||
RigLayoutName?: string;
|
RigLayoutName?: string;
|
||||||
MaxDurability?: number;
|
MaxDurability?: number;
|
||||||
armorZone?: string[];
|
armorZone?: string[];
|
||||||
armorClass: any;
|
armorClass?: any;
|
||||||
mousePenalty?: number;
|
mousePenalty?: number;
|
||||||
weaponErgonomicPenalty?: number;
|
weaponErgonomicPenalty?: number;
|
||||||
BluntThroughput?: number;
|
BluntThroughput?: number;
|
||||||
@ -254,8 +254,8 @@ export interface Props {
|
|||||||
foodUseTime?: number;
|
foodUseTime?: number;
|
||||||
foodEffectType?: string;
|
foodEffectType?: string;
|
||||||
StimulatorBuffs?: string;
|
StimulatorBuffs?: string;
|
||||||
effects_health: any;
|
effects_health?: any;
|
||||||
effects_damage: any;
|
effects_damage?: any;
|
||||||
MaximumNumberOfUsage?: number;
|
MaximumNumberOfUsage?: number;
|
||||||
knifeHitDelay?: number;
|
knifeHitDelay?: number;
|
||||||
knifeHitSlashRate?: number;
|
knifeHitSlashRate?: number;
|
||||||
|
@ -25,6 +25,7 @@ export declare enum BaseClasses {
|
|||||||
SIGHTS = "5448fe7a4bdc2d6f028b456b",
|
SIGHTS = "5448fe7a4bdc2d6f028b456b",
|
||||||
MEDS = "543be5664bdc2dd4348b4569",
|
MEDS = "543be5664bdc2dd4348b4569",
|
||||||
MONEY = "543be5dd4bdc2deb348b4569",
|
MONEY = "543be5dd4bdc2deb348b4569",
|
||||||
|
NIGHTVISION = "5a2c3a9486f774688b05e574",
|
||||||
KEY = "543be5e94bdc2df1348b4568",
|
KEY = "543be5e94bdc2df1348b4568",
|
||||||
KEY_MECHANICAL = "5c99f98d86f7745c314214b3",
|
KEY_MECHANICAL = "5c99f98d86f7745c314214b3",
|
||||||
KEYCARD = "5c164d2286f774194c5e69fa",
|
KEYCARD = "5c164d2286f774194c5e69fa",
|
||||||
@ -66,7 +67,6 @@ export declare enum BaseClasses {
|
|||||||
LUBRICANT = "57864e4c24597754843f8723",
|
LUBRICANT = "57864e4c24597754843f8723",
|
||||||
BATTERY = "57864ee62459775490116fc1",
|
BATTERY = "57864ee62459775490116fc1",
|
||||||
ASSAULT_SCOPE = "55818add4bdc2d5b648b456f",
|
ASSAULT_SCOPE = "55818add4bdc2d5b648b456f",
|
||||||
REFLEX_SIGHT = "55818ad54bdc2ddc698b4569",
|
|
||||||
TACTICAL_COMBO = "55818b164bdc2ddc698b456c",
|
TACTICAL_COMBO = "55818b164bdc2ddc698b456c",
|
||||||
FLASHLIGHT = "55818b084bdc2d5b648b4571",
|
FLASHLIGHT = "55818b084bdc2d5b648b4571",
|
||||||
MAGAZINE = "5448bc234bdc2d3c308b4569",
|
MAGAZINE = "5448bc234bdc2d3c308b4569",
|
||||||
|
151
TypeScript/11BundleLoadingSample/types/models/enums/WeaponTypes.d.ts
vendored
Normal file
151
TypeScript/11BundleLoadingSample/types/models/enums/WeaponTypes.d.ts
vendored
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
export declare enum Weapons127x55 {
|
||||||
|
ASH_12 = "5cadfbf7ae92152ac412eeef"
|
||||||
|
}
|
||||||
|
export declare enum Weapons86x70 {
|
||||||
|
MK_18 = "5fc22d7c187fea44d52eda44",
|
||||||
|
AXMC = "627e14b21713922ded6f2c15"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x39 {
|
||||||
|
AS_VAL = "57c44b372459772d2b39b8ce",
|
||||||
|
VSS_VINTOREZ = "57838ad32459774a17445cd2"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x54R {
|
||||||
|
SVDS = "5c46fbd72e2216398b5a8c9c",
|
||||||
|
MP_18 = "61f7c9e189e6fb1a5e3ea78d",
|
||||||
|
MOSIN_INFANTRY = "5bfd297f0db834001a669119",
|
||||||
|
MOSIN_SNIPER = "5ae08f0a5acfc408fb1398a1",
|
||||||
|
SV_98 = "55801eed4bdc2d89578b4588"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x51 {
|
||||||
|
VPO_101 = "5c501a4d2e221602b412b540",
|
||||||
|
DT_MDR_762 = "5dcbd56fdbd3d91b3e5468d5",
|
||||||
|
SA_58 = "5b0bbe4e5acfc40dc528a72d",
|
||||||
|
SCARH_BLACK = "6183afd850224f204c1da514",
|
||||||
|
SCARH_FDE = "6165ac306ef05c2ce828ef74",
|
||||||
|
HK_G28 = "6176aca650224f204c1da3fb",
|
||||||
|
M1A = "5aafa857e5b5b00018480968",
|
||||||
|
RFB = "5f2a9575926fd9352339381f",
|
||||||
|
RSASS = "5a367e5dc4a282000e49738f",
|
||||||
|
SR_25 = "5df8ce05b11454561e39243b",
|
||||||
|
DVL_10 = "588892092459774ac91d4b11",
|
||||||
|
M700 = "5bfea6e90db834001b7347f3",
|
||||||
|
T5000M = "5df24cf80dee1b22f862e9bc"
|
||||||
|
}
|
||||||
|
export declare enum Weapons366TKM {
|
||||||
|
VPO_209 = "59e6687d86f77411d949b251",
|
||||||
|
VPO_215 = "5de652c31b7e3716273428be"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x39 {
|
||||||
|
OP_SKS = "587e02ff24597743df3deaeb",
|
||||||
|
SKS = "574d967124597745970e7c94",
|
||||||
|
AK_103 = "5ac66d2e5acfc43b321d4b53",
|
||||||
|
AK_104 = "5ac66d725acfc43b321d4b60",
|
||||||
|
AKM = "59d6088586f774275f37482f",
|
||||||
|
AKMN = "5a0ec13bfcdbcb00165aa685",
|
||||||
|
AKMS = "59ff346386f77477562ff5e2",
|
||||||
|
AKMSN = "5abcbc27d8ce8700182eceeb",
|
||||||
|
MK47_MUTANT = "606587252535c57a13424cfd",
|
||||||
|
RD_704 = "628a60ae6b1d481ff772e9c8",
|
||||||
|
VPO_136 = "59e6152586f77473dc057aa1"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x35 {
|
||||||
|
MCX = "5fbcc1d9016cce60e8341ab3"
|
||||||
|
}
|
||||||
|
export declare enum Weapons556x45 {
|
||||||
|
ADAR_2_15 = "5c07c60e0db834002330051f",
|
||||||
|
AK_101 = "5ac66cb05acfc40198510a10",
|
||||||
|
AK_102 = "5ac66d015acfc400180ae6e4",
|
||||||
|
DT_MDR_556 = "5c488a752e221602b412af63",
|
||||||
|
HK_416A5 = "5bb2475ed4351e00853264e3",
|
||||||
|
HK_G36 = "623063e994fc3f7b302a9696",
|
||||||
|
M4A1 = "5447a9cd4bdc2dbd208b4567",
|
||||||
|
SCARL_BLACK = "6184055050224f204c1da540",
|
||||||
|
SCARL_FDE = "618428466ef05c2ce828f218",
|
||||||
|
TX15_DML = "5d43021ca4b9362eab4b5e25"
|
||||||
|
}
|
||||||
|
export declare enum Weapons545x39 {
|
||||||
|
AK_105 = "5ac66d9b5acfc4001633997a",
|
||||||
|
AK_74 = "5bf3e03b0db834001d2c4a9c",
|
||||||
|
AK_74M = "5ac4cd105acfc40016339859",
|
||||||
|
AK_74N = "5644bd2b4bdc2d3b4c8b4572",
|
||||||
|
AKS_74 = "5bf3e0490db83400196199af",
|
||||||
|
AKS_74N = "5ab8e9fcd8ce870019439434",
|
||||||
|
AKS_74U = "57dc2fa62459775949412633",
|
||||||
|
AKS_74UB = "5839a40f24597726f856b511",
|
||||||
|
AKS_74UN = "583990e32459771419544dd2",
|
||||||
|
SAG_AK = "628b5638ad252a16da6dd245",
|
||||||
|
SAG_AK_SHORT = "628b9c37a733087d0d7fe84b",
|
||||||
|
RPK_16 = "5beed0f50db834001c062b12"
|
||||||
|
}
|
||||||
|
export declare enum Weapons57x28FN {
|
||||||
|
FN_57_BLACK = "5d3eb3b0a4b93615055e84d2",
|
||||||
|
FN_57_FDE = "5d67abc1a4b93614ec50137f",
|
||||||
|
FN_P90 = "5cc82d76e24e8d00134b4b83"
|
||||||
|
}
|
||||||
|
export declare enum Weapons46x30HK {
|
||||||
|
MP7A1 = "5ba26383d4351e00334c93d9",
|
||||||
|
MP7A2 = "5bd70322209c4d00d7167b8f"
|
||||||
|
}
|
||||||
|
export declare enum Weapons1143x23 {
|
||||||
|
M1911A1 = "5e81c3cbac2bb513793cdc75",
|
||||||
|
M45A1 = "5f36a0e5fbf956000b716b65",
|
||||||
|
USP45 = "6193a720f8ee7e52e42109ed",
|
||||||
|
UMP45 = "5fc3e272f8b6a877a729eac5",
|
||||||
|
VECTOR45 = "5fb64bc92b1b027b1f50bcf2"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x33R {
|
||||||
|
CR_50DS = "61a4c8884f95bc3b2c5dc96f"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x21 {
|
||||||
|
SR_1MP = "59f98b4986f7746f546d2cef"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x19 {
|
||||||
|
GLOCK_17 = "5a7ae0c351dfba0017554310",
|
||||||
|
GLOCK_18C = "5b1fa9b25acfc40018633c01",
|
||||||
|
M9A3 = "5cadc190ae921500103bb3b6",
|
||||||
|
MP_443 = "576a581d2459771e7b1bc4f1",
|
||||||
|
P226R = "56d59856d2720bd8418b456a",
|
||||||
|
PL_15 = "602a9740da11d6478d5a06dc",
|
||||||
|
CR_200DS = "624c2e8614da335f1e034d8c",
|
||||||
|
MP5 = "5926bb2186f7744b1c6c6e60",
|
||||||
|
MP5K = "5d2f0d8048f0356c925bc3b0",
|
||||||
|
MP9 = "5e00903ae9dc277128008b87",
|
||||||
|
MP9_N = "5de7bd7bfd6b4e6e2276dc25",
|
||||||
|
MPX = "58948c8e86f77409493f7266",
|
||||||
|
PP_19_01 = "59984ab886f7743e98271174",
|
||||||
|
SAIGA_9 = "59f9cabd86f7743a10721f46",
|
||||||
|
STM_9 = "60339954d62c9b14ed777c06",
|
||||||
|
VECTOR_9MM = "5fc3f2d5900b1d5091531e57"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x18 {
|
||||||
|
APB = "5abccb7dd8ce87001773e277",
|
||||||
|
APS = "5a17f98cfcdbcb0980087290",
|
||||||
|
PB_SILENCED = "56e0598dd2720bb5668b45a6",
|
||||||
|
PM = "5448bd6b4bdc2dfc2f8b4569",
|
||||||
|
PM_T = "579204f224597773d619e051",
|
||||||
|
PP9_KLIN = "57f4c844245977379d5c14d1",
|
||||||
|
PP91_KEDR = "57d14d2524597714373db789",
|
||||||
|
PP91_KEDRB = "57f3c6bd24597738e730fa2f"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x25 {
|
||||||
|
TT = "571a12c42459771f627b58a0",
|
||||||
|
TT_GOLD = "5b3b713c5acfc4330140bd8d",
|
||||||
|
PPSH_41 = "5ea03f7400685063ec28bfa8"
|
||||||
|
}
|
||||||
|
export declare enum Weapons12Gauge {
|
||||||
|
M3_SUPER90 = "6259b864ebedf17603599e88",
|
||||||
|
M590A1 = "5e870397991fd70db46995c8",
|
||||||
|
M870 = "5a7828548dc32e5a9c28b516",
|
||||||
|
MP_133 = "54491c4f4bdc2db1078b4568",
|
||||||
|
MP_153 = "56dee2bdd2720bc8328b4567",
|
||||||
|
MP_155 = "606dae0ab0e443224b421bb7",
|
||||||
|
MP_43_1C = "5580223e4bdc2d1c128b457f",
|
||||||
|
MTS_255_12 = "60db29ce99594040e04c4a27",
|
||||||
|
SAIGA_12GA = "576165642459773c7a400233"
|
||||||
|
}
|
||||||
|
export declare enum Weapons20Gauge {
|
||||||
|
TOZ_106 = "5a38e6bac4a2826c6e06d79b"
|
||||||
|
}
|
||||||
|
export declare enum Weapons23x75 {
|
||||||
|
KS_23M = "5e848cc2988a8701445df1e8"
|
||||||
|
}
|
@ -65,6 +65,7 @@ export interface LootNvalue {
|
|||||||
export interface EquipmentFilters {
|
export interface EquipmentFilters {
|
||||||
weaponModLimits: ModLimits;
|
weaponModLimits: ModLimits;
|
||||||
randomisedWeaponModSlots?: string[];
|
randomisedWeaponModSlots?: string[];
|
||||||
|
randomisedArmorSlots?: string[];
|
||||||
blacklist: EquipmentFilterDetails[];
|
blacklist: EquipmentFilterDetails[];
|
||||||
whitelist: EquipmentFilterDetails[];
|
whitelist: EquipmentFilterDetails[];
|
||||||
}
|
}
|
||||||
|
@ -7,14 +7,18 @@ export interface IPmcConfig {
|
|||||||
looseWeaponInBackpackLootMinMax: MinMax;
|
looseWeaponInBackpackLootMinMax: MinMax;
|
||||||
isUsec: number;
|
isUsec: number;
|
||||||
chanceSameSideIsHostilePercent: number;
|
chanceSameSideIsHostilePercent: number;
|
||||||
usecType: string;
|
/** key: location, value: type for usec/bear */
|
||||||
bearType: string;
|
pmcType: Record<string, PmcTypes>;
|
||||||
maxBackpackLootTotalRub: number;
|
maxBackpackLootTotalRub: number;
|
||||||
maxPocketLootTotalRub: number;
|
maxPocketLootTotalRub: number;
|
||||||
maxVestLootTotalRub: number;
|
maxVestLootTotalRub: number;
|
||||||
convertIntoPmcChance: Record<string, MinMax>;
|
convertIntoPmcChance: Record<string, MinMax>;
|
||||||
enemyTypes: string[];
|
enemyTypes: string[];
|
||||||
}
|
}
|
||||||
|
export interface PmcTypes {
|
||||||
|
usec: string;
|
||||||
|
bear: string;
|
||||||
|
}
|
||||||
export interface DynamicLoot {
|
export interface DynamicLoot {
|
||||||
whitelist: string[];
|
whitelist: string[];
|
||||||
blacklist: string[];
|
blacklist: string[];
|
||||||
|
@ -39,6 +39,7 @@ export interface Dynamic {
|
|||||||
offerItemCount: MinMax;
|
offerItemCount: MinMax;
|
||||||
price: MinMax;
|
price: MinMax;
|
||||||
presetPrice: MinMax;
|
presetPrice: MinMax;
|
||||||
|
showDefaultPresetsOnly: boolean;
|
||||||
endTimeSeconds: MinMax;
|
endTimeSeconds: MinMax;
|
||||||
condition: Condition;
|
condition: Condition;
|
||||||
stackablePercent: MinMax;
|
stackablePercent: MinMax;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
export declare class LootItem {
|
export declare class LootItem {
|
||||||
|
id?: string;
|
||||||
tpl: string;
|
tpl: string;
|
||||||
isPreset: boolean;
|
isPreset: boolean;
|
||||||
stackCount: number;
|
stackCount: number;
|
||||||
|
47
TypeScript/11BundleLoadingSample/types/services/BotGenerationCacheService.d.ts
vendored
Normal file
47
TypeScript/11BundleLoadingSample/types/services/BotGenerationCacheService.d.ts
vendored
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import { BotHelper } from "../helpers/BotHelper";
|
||||||
|
import { IBotBase } from "../models/eft/common/tables/IBotBase";
|
||||||
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
|
export declare class BotGenerationCacheService {
|
||||||
|
protected logger: ILogger;
|
||||||
|
protected randomUtil: RandomUtil;
|
||||||
|
protected jsonUtil: JsonUtil;
|
||||||
|
protected botHelper: BotHelper;
|
||||||
|
protected storedBots: IBotBase[];
|
||||||
|
constructor(logger: ILogger, randomUtil: RandomUtil, jsonUtil: JsonUtil, botHelper: BotHelper);
|
||||||
|
/**
|
||||||
|
* Store array of bots in cache, shuffle results before storage
|
||||||
|
* @param botsToStore
|
||||||
|
*/
|
||||||
|
storeBots(botsToStore: IBotBase[]): void;
|
||||||
|
/**
|
||||||
|
* Find and return a bot based on its role
|
||||||
|
* Remove bot from internal array so it can't be retreived again
|
||||||
|
* @param role role to retreive (assault/bossTagilla etc)
|
||||||
|
* @returns IBotBase object
|
||||||
|
*/
|
||||||
|
getBot(role: string): IBotBase[];
|
||||||
|
/**
|
||||||
|
* Find a bot by its index from cache
|
||||||
|
* @param indexOfBotToReturn index to find bot by
|
||||||
|
* @returns bot profile
|
||||||
|
*/
|
||||||
|
protected getBotFromCache(indexOfBotToReturn: number): IBotBase;
|
||||||
|
/**
|
||||||
|
* Remove bot profile by index from cache
|
||||||
|
* @param indexOfBotToReturn Index of bot profile to remove
|
||||||
|
*/
|
||||||
|
protected removeBotFromCache(indexOfBotToReturn: number): void;
|
||||||
|
/**
|
||||||
|
* Get index of bot profile that matches criteria
|
||||||
|
* @param role role of bot we want
|
||||||
|
* @param getPmc is requested bot a pmc
|
||||||
|
* @returns index of found bot
|
||||||
|
*/
|
||||||
|
protected getIndexOfBotToReturn(role: string, getPmc: boolean): number;
|
||||||
|
/**
|
||||||
|
* Remove all cached bot profiles
|
||||||
|
*/
|
||||||
|
clearStoredBots(): void;
|
||||||
|
}
|
@ -34,6 +34,17 @@ export declare class BotLootCacheService {
|
|||||||
* @param isPmc Is the bot a PMC (alteres what loot is cached)
|
* @param isPmc Is the bot a PMC (alteres what loot is cached)
|
||||||
*/
|
*/
|
||||||
protected addLootToCache(botRole: string, isPmc: boolean, lootPool: Items): void;
|
protected addLootToCache(botRole: string, isPmc: boolean, lootPool: Items): void;
|
||||||
|
/**
|
||||||
|
* Sort a pool of item objects by its flea price
|
||||||
|
* @param poolToSort pool of items to sort
|
||||||
|
*/
|
||||||
|
protected sortPoolByRagfairPrice(poolToSort: ITemplateItem[]): void;
|
||||||
|
/**
|
||||||
|
* Add unique items into combined pool
|
||||||
|
* @param combinedItemPool Pool of items to add to
|
||||||
|
* @param itemsToAdd items to add to combined pool if unique
|
||||||
|
*/
|
||||||
|
protected addUniqueItemsToPool(combinedItemPool: ITemplateItem[], itemsToAdd: ITemplateItem[]): void;
|
||||||
/**
|
/**
|
||||||
* Ammo/grenades have this property
|
* Ammo/grenades have this property
|
||||||
* @param props
|
* @param props
|
||||||
|
@ -55,6 +55,17 @@ export declare class FenceService {
|
|||||||
* Replace a percentage of fence assorts with freshly generated items
|
* Replace a percentage of fence assorts with freshly generated items
|
||||||
*/
|
*/
|
||||||
performPartialRefresh(): void;
|
performPartialRefresh(): void;
|
||||||
|
/**
|
||||||
|
* Increment fence next refresh timestamp by current timestamp + partialRefreshTimeSeconds from config
|
||||||
|
*/
|
||||||
|
protected incrementPartialRefreshTime(): void;
|
||||||
|
/**
|
||||||
|
* Compare the current fence offer count to what the config wants it to be,
|
||||||
|
* If value is lower add extra count to value to generate more items to fill gap
|
||||||
|
* @param existingItemCountToReplace count of items to generate
|
||||||
|
* @returns number of items to generate
|
||||||
|
*/
|
||||||
|
protected getCountOfItemsToGenerate(existingItemCountToReplace: number): number;
|
||||||
/**
|
/**
|
||||||
* Choose an item (not mod) at random and remove from assorts
|
* Choose an item (not mod) at random and remove from assorts
|
||||||
*/
|
*/
|
||||||
|
27
TypeScript/11BundleLoadingSample/types/services/PmcAiService.d.ts
vendored
Normal file
27
TypeScript/11BundleLoadingSample/types/services/PmcAiService.d.ts
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
|
/** Storing/retreving pmcRoles set at the start of a raid - its done at that point as we know what location the player is heading to */
|
||||||
|
export declare class PmcAiService {
|
||||||
|
protected logger: ILogger;
|
||||||
|
protected configServer: ConfigServer;
|
||||||
|
protected botConfig: IBotConfig;
|
||||||
|
protected usecRole: string;
|
||||||
|
protected bearRole: string;
|
||||||
|
constructor(logger: ILogger, configServer: ConfigServer);
|
||||||
|
/**
|
||||||
|
* Convert from pmc side (usec/bear) to the side as defined in the bot config (usecType/bearType)
|
||||||
|
* @param pmcSide eft side (usec/bear)
|
||||||
|
* @returns pmc side as defined in config
|
||||||
|
*/
|
||||||
|
getPmcRole(pmcSide: "usec" | "bear" | string): string;
|
||||||
|
/**
|
||||||
|
* Set the roles for pmcs
|
||||||
|
* @param location map location to look up and use as pmc types
|
||||||
|
*/
|
||||||
|
setPmcRolesByLocation(location: string): void;
|
||||||
|
/**
|
||||||
|
* Clear the saved role from usec/bear PMCs
|
||||||
|
*/
|
||||||
|
clearPmcRoles(): void;
|
||||||
|
}
|
@ -136,7 +136,7 @@ export declare class RandomUtil {
|
|||||||
* Drawing can be with or without replacement
|
* Drawing can be with or without replacement
|
||||||
* @param {array} list The array we want to draw randomly from
|
* @param {array} list The array we want to draw randomly from
|
||||||
* @param {integer} count The number of times we want to draw
|
* @param {integer} count The number of times we want to draw
|
||||||
* @param {boolean} replacement Draw with ot without replacement from the input array
|
* @param {boolean} replacement Draw with or without replacement from the input array
|
||||||
* @return {array} Array consisting of N random elements
|
* @return {array} Array consisting of N random elements
|
||||||
*/
|
*/
|
||||||
drawRandomFromList<T>(list: Array<T>, count?: number, replacement?: boolean): Array<T>;
|
drawRandomFromList<T>(list: Array<T>, count?: number, replacement?: boolean): Array<T>;
|
||||||
|
@ -4,7 +4,7 @@ export declare class ContextVariable {
|
|||||||
private timestamp;
|
private timestamp;
|
||||||
private type;
|
private type;
|
||||||
constructor(value: any, type: ContextVariableType);
|
constructor(value: any, type: ContextVariableType);
|
||||||
getValue(): any;
|
getValue<T>(): T;
|
||||||
getTimestamp(): Date;
|
getTimestamp(): Date;
|
||||||
getType(): ContextVariableType;
|
getType(): ContextVariableType;
|
||||||
}
|
}
|
||||||
|
@ -5,15 +5,21 @@ import { IBotBase } from "../models/eft/common/tables/IBotBase";
|
|||||||
import { IBotCore } from "../models/eft/common/tables/IBotCore";
|
import { IBotCore } from "../models/eft/common/tables/IBotCore";
|
||||||
import { Difficulty } from "../models/eft/common/tables/IBotType";
|
import { Difficulty } from "../models/eft/common/tables/IBotType";
|
||||||
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
|
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";
|
||||||
|
import { BotGenerationCacheService } from "../services/BotGenerationCacheService";
|
||||||
|
import { PmcAiService } from "../services/PmcAiService";
|
||||||
export declare class BotController {
|
export declare class BotController {
|
||||||
|
protected logger: ILogger;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected botGenerator: BotGenerator;
|
protected botGenerator: BotGenerator;
|
||||||
protected botHelper: BotHelper;
|
protected botHelper: BotHelper;
|
||||||
|
protected pmcAiService: PmcAiService;
|
||||||
|
protected botGenerationCacheService: BotGenerationCacheService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, configServer: ConfigServer);
|
constructor(logger: ILogger, databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, pmcAiService: PmcAiService, botGenerationCacheService: BotGenerationCacheService, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* 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
|
||||||
@ -29,7 +35,7 @@ export declare class BotController {
|
|||||||
* @returns Difficulty object
|
* @returns Difficulty object
|
||||||
*/
|
*/
|
||||||
getBotDifficulty(type: string, difficulty: string): Difficulty;
|
getBotDifficulty(type: string, difficulty: string): Difficulty;
|
||||||
protected getPmcDifficultySettings(pmcType: "bear" | "usec", difficulty: string): Difficulty;
|
protected getPmcDifficultySettings(pmcType: "bear" | "usec", difficulty: string, usecType: string, bearType: string): Difficulty;
|
||||||
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
||||||
getBotCap(): number;
|
getBotCap(): number;
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,10 @@ import { IMatchConfig } from "../models/spt/config/IMatchConfig";
|
|||||||
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 { SaveServer } from "../servers/SaveServer";
|
import { SaveServer } from "../servers/SaveServer";
|
||||||
|
import { BotGenerationCacheService } from "../services/BotGenerationCacheService";
|
||||||
import { BotLootCacheService } from "../services/BotLootCacheService";
|
import { BotLootCacheService } from "../services/BotLootCacheService";
|
||||||
import { MatchLocationService } from "../services/MatchLocationService";
|
import { MatchLocationService } from "../services/MatchLocationService";
|
||||||
|
import { PmcAiService } from "../services/PmcAiService";
|
||||||
import { ProfileSnapshotService } from "../services/ProfileSnapshotService";
|
import { ProfileSnapshotService } from "../services/ProfileSnapshotService";
|
||||||
export declare class MatchController {
|
export declare class MatchController {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
@ -27,11 +29,13 @@ export declare class MatchController {
|
|||||||
protected botLootCacheService: BotLootCacheService;
|
protected botLootCacheService: BotLootCacheService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected profileSnapshotService: ProfileSnapshotService;
|
protected profileSnapshotService: ProfileSnapshotService;
|
||||||
|
protected pmcAiService: PmcAiService;
|
||||||
|
protected botGenerationCacheService: BotGenerationCacheService;
|
||||||
protected applicationContext: ApplicationContext;
|
protected applicationContext: ApplicationContext;
|
||||||
protected matchConfig: IMatchConfig;
|
protected matchConfig: IMatchConfig;
|
||||||
protected inraidConfig: IInRaidConfig;
|
protected inraidConfig: IInRaidConfig;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, matchLocationService: MatchLocationService, traderHelper: TraderHelper, botLootCacheService: BotLootCacheService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext);
|
constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, matchLocationService: MatchLocationService, traderHelper: TraderHelper, botLootCacheService: BotLootCacheService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, pmcAiService: PmcAiService, botGenerationCacheService: BotGenerationCacheService, applicationContext: ApplicationContext);
|
||||||
getEnabled(): boolean;
|
getEnabled(): boolean;
|
||||||
getProfile(info: IGetProfileRequestData): IPmcData[];
|
getProfile(info: IGetProfileRequestData): IPmcData[];
|
||||||
createGroup(sessionID: string, info: ICreateGroupRequestData): any;
|
createGroup(sessionID: string, info: ICreateGroupRequestData): any;
|
||||||
|
@ -9,6 +9,7 @@ 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";
|
||||||
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
||||||
|
import { PmcAiService } from "../services/PmcAiService";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
@ -30,9 +31,10 @@ export declare class BotGenerator {
|
|||||||
protected botEquipmentFilterService: BotEquipmentFilterService;
|
protected botEquipmentFilterService: BotEquipmentFilterService;
|
||||||
protected botHelper: BotHelper;
|
protected botHelper: BotHelper;
|
||||||
protected gameEventHelper: GameEventHelper;
|
protected gameEventHelper: GameEventHelper;
|
||||||
|
protected pmcAiService: PmcAiService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botEquipmentFilterService: BotEquipmentFilterService, botHelper: BotHelper, gameEventHelper: GameEventHelper, configServer: ConfigServer);
|
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botEquipmentFilterService: BotEquipmentFilterService, botHelper: BotHelper, gameEventHelper: GameEventHelper, pmcAiService: PmcAiService, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* Generate a player scav bot object
|
* Generate a player scav bot object
|
||||||
* @param role e.g. assault / pmcbot
|
* @param role e.g. assault / pmcbot
|
||||||
@ -41,13 +43,13 @@ export declare class BotGenerator {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
generatePlayerScav(sessionId: string, role: string, difficulty: string, botTemplate: IBotType): IBotBase;
|
generatePlayerScav(sessionId: string, role: string, difficulty: string, botTemplate: IBotType): IBotBase;
|
||||||
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
|
||||||
/**
|
/**
|
||||||
* Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check
|
* Generate an array of bot objects for populate a raid with
|
||||||
* @param botRole the bot role to check if should be a pmc
|
* @param sessionId session id
|
||||||
* @returns true if should be a pmc
|
* @param info request object
|
||||||
|
* @returns bot array
|
||||||
*/
|
*/
|
||||||
protected shouldBotBePmc(botRole: string): boolean;
|
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
||||||
/**
|
/**
|
||||||
* Get a randomised PMC side based on bot config value 'isUsec'
|
* Get a randomised PMC side based on bot config value 'isUsec'
|
||||||
* @returns pmc side as string
|
* @returns pmc side as string
|
||||||
@ -58,12 +60,30 @@ export declare class BotGenerator {
|
|||||||
* @returns IBotBase object
|
* @returns IBotBase object
|
||||||
*/
|
*/
|
||||||
protected getCloneOfBotBase(): IBotBase;
|
protected getCloneOfBotBase(): IBotBase;
|
||||||
|
/**
|
||||||
|
* Create a IBotBase object with equipment/loot/exp etc
|
||||||
|
* @param sessionId Session id
|
||||||
|
* @param bot bots base file
|
||||||
|
* @param role botRole bot will use
|
||||||
|
* @param node Bot template from db/bots/x.json
|
||||||
|
* @param isPmc Is bot to be a PMC
|
||||||
|
* @param isPlayerScav is bot to be a p scav bot
|
||||||
|
* @returns IBotBase object
|
||||||
|
*/
|
||||||
protected generateBot(sessionId: string, bot: IBotBase, role: string, node: IBotType, isPmc: boolean, isPlayerScav?: boolean): IBotBase;
|
protected generateBot(sessionId: string, bot: IBotBase, role: string, node: IBotType, isPmc: boolean, isPlayerScav?: boolean): IBotBase;
|
||||||
/**
|
/**
|
||||||
* Log the number of PMCs generated to the debug console
|
* Log the number of PMCs generated to the debug console
|
||||||
|
* @param output Generated bot array, ready to send to client
|
||||||
*/
|
*/
|
||||||
protected logPmcGeneratedCount(output: IBotBase[]): void;
|
protected logPmcGeneratedCount(output: IBotBase[]): void;
|
||||||
protected generateRandomLevel(min: number, max: number): BotGenerator.IRandomisedBotLevelResult;
|
/**
|
||||||
|
* Return a randomised bot level and exp value
|
||||||
|
* @param role botRole being generated for
|
||||||
|
* @param min Min exp value
|
||||||
|
* @param max Max exp value
|
||||||
|
* @returns IRandomisedBotLevelResult object
|
||||||
|
*/
|
||||||
|
protected generateRandomLevel(role: string, min: number, max: number): BotGenerator.IRandomisedBotLevelResult;
|
||||||
/**
|
/**
|
||||||
* Converts health object to the required format
|
* Converts health object to the required format
|
||||||
* @param healthObj health object from bot json
|
* @param healthObj health object from bot json
|
||||||
@ -72,19 +92,23 @@ export declare class BotGenerator {
|
|||||||
*/
|
*/
|
||||||
protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth;
|
protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth;
|
||||||
protected generateSkills(skillsObj: Skills): Skills;
|
protected generateSkills(skillsObj: Skills): Skills;
|
||||||
/**
|
|
||||||
* Convert from pmc side (usec/bear) to the side as defined in the bot config (usecType/bearType)
|
|
||||||
* @param pmcSide eft side (usec/bear)
|
|
||||||
* @returns pmc side as defined in config
|
|
||||||
*/
|
|
||||||
protected getPmcRole(pmcSide: string): string;
|
|
||||||
/**
|
/**
|
||||||
* Iterate through bots inventory and loot to find and remove christmas items (as defined in GameEventHelper)
|
* Iterate through bots inventory and loot to find and remove christmas items (as defined in GameEventHelper)
|
||||||
* @param nodeInventory Bots inventory to iterate over
|
* @param nodeInventory Bots inventory to iterate over
|
||||||
*/
|
*/
|
||||||
protected removeChristmasItemsFromBotInventory(nodeInventory: Inventory): void;
|
protected removeChristmasItemsFromBotInventory(nodeInventory: Inventory): void;
|
||||||
|
/**
|
||||||
|
* Generate a random Id for a bot and apply to bots _id and aid value
|
||||||
|
* @param bot bot to update
|
||||||
|
* @returns updated IBotBase object
|
||||||
|
*/
|
||||||
protected generateId(bot: IBotBase): IBotBase;
|
protected generateId(bot: IBotBase): IBotBase;
|
||||||
protected generateInventoryID(profile: IBotBase): IBotBase;
|
protected generateInventoryID(profile: IBotBase): IBotBase;
|
||||||
|
/**
|
||||||
|
* Get the difficulty passed in, if its not "asoline", get selected difficulty from config
|
||||||
|
* @param requestedDifficulty
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
protected getPMCDifficulty(requestedDifficulty: string): string;
|
protected getPMCDifficulty(requestedDifficulty: string): string;
|
||||||
/**
|
/**
|
||||||
* Add a side-specific (usec/bear) dogtag item to a bots inventory
|
* Add a side-specific (usec/bear) dogtag item to a bots inventory
|
||||||
|
@ -1,13 +1,16 @@
|
|||||||
|
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
||||||
|
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
||||||
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
||||||
import { Inventory, Chances, Generation, Mods } from "../models/eft/common/tables/IBotType";
|
import { Chances, Generation, Inventory, Mods } from "../models/eft/common/tables/IBotType";
|
||||||
|
import { EquipmentSlots } from "../models/enums/EquipmentSlots";
|
||||||
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
|
||||||
import { BotWeaponGenerator } from "./BotWeaponGenerator";
|
|
||||||
import { BotLootGenerator } from "./BotLootGenerator";
|
import { BotLootGenerator } from "./BotLootGenerator";
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { BotWeaponGenerator } from "./BotWeaponGenerator";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
|
||||||
export declare class BotInventoryGenerator {
|
export declare class BotInventoryGenerator {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
@ -17,8 +20,14 @@ export declare class BotInventoryGenerator {
|
|||||||
protected botLootGenerator: BotLootGenerator;
|
protected botLootGenerator: BotLootGenerator;
|
||||||
protected botGeneratorHelper: BotGeneratorHelper;
|
protected botGeneratorHelper: BotGeneratorHelper;
|
||||||
protected weightedRandomHelper: WeightedRandomHelper;
|
protected weightedRandomHelper: WeightedRandomHelper;
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, weightedRandomHelper: WeightedRandomHelper);
|
protected configServer: ConfigServer;
|
||||||
generateInventory(sessionId: string, templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory;
|
protected botConfig: IBotConfig;
|
||||||
|
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, weightedRandomHelper: WeightedRandomHelper, configServer: ConfigServer);
|
||||||
|
generateInventory(sessionId: string, templateInventory: Inventory, equipmentChances: Chances, itemGenerationLimitsMinMax: Generation, botRole: string, isPmc: boolean): PmcInventory;
|
||||||
|
protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: {
|
||||||
|
slot: EquipmentSlots;
|
||||||
|
shouldSpawn: boolean;
|
||||||
|
}, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: Generation): void;
|
||||||
protected generateEquipment(equipmentSlot: string, equipmentPool: Record<string, number>, modPool: Mods, spawnChances: Chances, botRole: string, inventory: PmcInventory): void;
|
protected generateEquipment(equipmentSlot: string, equipmentPool: Record<string, number>, modPool: Mods, spawnChances: Chances, botRole: string, inventory: PmcInventory): void;
|
||||||
protected generateInventoryBase(): PmcInventory;
|
protected generateInventoryBase(): PmcInventory;
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ export declare class BotWeaponGenerator {
|
|||||||
* @param botRole for durability values
|
* @param botRole for durability values
|
||||||
* @returns Base weapon item in array
|
* @returns Base weapon item in array
|
||||||
*/
|
*/
|
||||||
constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[];
|
protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[];
|
||||||
/**
|
/**
|
||||||
* Get the mods necessary to kit out a weapon to its preset level
|
* Get the mods necessary to kit out a weapon to its preset level
|
||||||
* @param weaponTpl weapon to find preset for
|
* @param weaponTpl weapon to find preset for
|
||||||
|
@ -6,14 +6,16 @@ import { LootRequest } from "../models/spt/services/LootRequest";
|
|||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { ItemFilterService } from "../services/ItemFilterService";
|
import { ItemFilterService } from "../services/ItemFilterService";
|
||||||
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
export declare class LootGenerator {
|
export declare class LootGenerator {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
|
protected hashUtil: HashUtil;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected randomUtil: RandomUtil;
|
protected randomUtil: RandomUtil;
|
||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected itemFilterService: ItemFilterService;
|
protected itemFilterService: ItemFilterService;
|
||||||
constructor(logger: ILogger, databaseServer: DatabaseServer, randomUtil: RandomUtil, itemHelper: ItemHelper, itemFilterService: ItemFilterService);
|
constructor(logger: ILogger, hashUtil: HashUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, itemHelper: ItemHelper, itemFilterService: ItemFilterService);
|
||||||
/**
|
/**
|
||||||
* Generate a list of items based on options passed in
|
* Generate a list of items based on options passed in
|
||||||
* @param options parameters to adjust what loot is generated
|
* @param options parameters to adjust what loot is generated
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
|
import { Preset } from "../models/eft/common/IGlobals";
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
import { Item } from "../models/eft/common/tables/IItem";
|
||||||
|
import { IRagfairConfig } from "../models/spt/config/IRagfairConfig";
|
||||||
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
@ -8,18 +11,40 @@ export declare class RagfairAssortGenerator {
|
|||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
|
protected configServer: ConfigServer;
|
||||||
protected generatedAssortItems: Item[];
|
protected generatedAssortItems: Item[];
|
||||||
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer);
|
protected ragfairConfig: IRagfairConfig;
|
||||||
|
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* Get an array of unique items that can be sold on the flea
|
* Get an array of unique items that can be sold on the flea
|
||||||
* @returns array of unique items
|
* @returns array of unique items
|
||||||
*/
|
*/
|
||||||
getAssortItems(): Item[];
|
getAssortItems(): Item[];
|
||||||
|
/**
|
||||||
|
* Check internal generatedAssortItems array has objects
|
||||||
|
* @returns true if array has objects
|
||||||
|
*/
|
||||||
protected assortsAreGenerated(): boolean;
|
protected assortsAreGenerated(): boolean;
|
||||||
/**
|
/**
|
||||||
* Generate an array of items the flea can sell
|
* Generate an array of items the flea can sell
|
||||||
* @returns array of unique items
|
* @returns array of unique items
|
||||||
*/
|
*/
|
||||||
protected generateRagfairAssortItems(): Item[];
|
protected generateRagfairAssortItems(): Item[];
|
||||||
|
/**
|
||||||
|
* Get presets from globals.json
|
||||||
|
* @returns Preset object array
|
||||||
|
*/
|
||||||
|
protected getPresets(): Preset[];
|
||||||
|
/**
|
||||||
|
* Get default presets from globals.json
|
||||||
|
* @returns Preset object array
|
||||||
|
*/
|
||||||
|
protected getDefaultPresets(): Preset[];
|
||||||
|
/**
|
||||||
|
* Create a base assort item and return it with populated values + 999999 stack count + unlimited count = true
|
||||||
|
* @param tplId tplid to add to item
|
||||||
|
* @param id id to add to item
|
||||||
|
* @returns hydrated Item object
|
||||||
|
*/
|
||||||
protected createRagfairAssortItem(tplId: string, id?: string): Item;
|
protected createRagfairAssortItem(tplId: string, id?: string): Item;
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,17 @@ import { InventoryHelper } from "./InventoryHelper";
|
|||||||
import { ItemHelper } from "./ItemHelper";
|
import { ItemHelper } from "./ItemHelper";
|
||||||
import { ProbabilityHelper } from "./ProbabilityHelper";
|
import { ProbabilityHelper } from "./ProbabilityHelper";
|
||||||
import { ProfileHelper } from "./ProfileHelper";
|
import { ProfileHelper } from "./ProfileHelper";
|
||||||
|
export declare class BotModLimits {
|
||||||
|
scope: ItemCount;
|
||||||
|
scopeMax: number;
|
||||||
|
scopeBaseTypes: string[];
|
||||||
|
flashlightLaser: ItemCount;
|
||||||
|
flashlightLaserMax: number;
|
||||||
|
flashlgihtLaserBaseTypes: string[];
|
||||||
|
}
|
||||||
|
export declare class ItemCount {
|
||||||
|
count: number;
|
||||||
|
}
|
||||||
export declare class BotGeneratorHelper {
|
export declare class BotGeneratorHelper {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected jsonUtil: JsonUtil;
|
protected jsonUtil: JsonUtil;
|
||||||
@ -58,6 +69,27 @@ export declare class BotGeneratorHelper {
|
|||||||
* @returns Weapon with mods
|
* @returns Weapon with mods
|
||||||
*/
|
*/
|
||||||
generateModsForWeapon(sessionId: string, weapon: Item[], modPool: Mods, weaponParentId: string, parentTemplate: ITemplateItem, modSpawnChances: ModsChances, ammoTpl: string, botRole: string): Item[];
|
generateModsForWeapon(sessionId: string, weapon: Item[], modPool: Mods, weaponParentId: string, parentTemplate: ITemplateItem, modSpawnChances: ModsChances, ammoTpl: string, botRole: string): Item[];
|
||||||
|
/**
|
||||||
|
* Find mod tpls of a provided type and add to modPool
|
||||||
|
* @param desiredSlotName slot to look up and add we are adding tpls for (e.g mod_scope)
|
||||||
|
* @param modTemplate db object for modItem we get compatible mods from
|
||||||
|
* @param modPool Pool of mods we are adding to
|
||||||
|
*/
|
||||||
|
protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: Mods, botEquipBlacklist: EquipmentFilterDetails): void;
|
||||||
|
/**
|
||||||
|
* Check if mod item is on limited list + has surpassed the limit set for it
|
||||||
|
* @param botRole role the bot has e.g. assault
|
||||||
|
* @param modTpl mods tpl
|
||||||
|
* @param modLimits limits set for weapon being generated for this bot
|
||||||
|
* @returns true if over item limit
|
||||||
|
*/
|
||||||
|
protected modHasReachedItemLimit(botRole: string, modTpl: string, modLimits: BotModLimits): boolean;
|
||||||
|
/**
|
||||||
|
* Initalise mod limits to be used when generating the weapon
|
||||||
|
* @param botRole "assault", "bossTagilla" or "pmc"
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
protected initModLimits(botRole: string): BotModLimits;
|
||||||
/**
|
/**
|
||||||
* Generate a pool of mods for this bots mod type if bot has values inside `randomisedWeaponModSlots` array found in bot.json/equipment[botrole]
|
* Generate a pool of mods for this bots mod type if bot has values inside `randomisedWeaponModSlots` array found in bot.json/equipment[botrole]
|
||||||
* @param allowedMods Mods to be added to mod pool
|
* @param allowedMods Mods to be added to mod pool
|
||||||
@ -65,7 +97,21 @@ export declare class BotGeneratorHelper {
|
|||||||
* @param modSlot Slot to generate mods for
|
* @param modSlot Slot to generate mods for
|
||||||
* @param itemModPool base mod pool to replace values of
|
* @param itemModPool base mod pool to replace values of
|
||||||
*/
|
*/
|
||||||
protected generateDynamicModPool(allowedMods: string[], botEquipBlacklist: EquipmentFilterDetails, modSlot: string, itemModPool: Record<string, string[]>): void;
|
protected generateDynamicWeaponModPool(allowedMods: string[], botEquipBlacklist: EquipmentFilterDetails, modSlot: string, itemModPool: Record<string, string[]>): void;
|
||||||
|
/**
|
||||||
|
* Find all compatible mods for equipment item and add to modPool
|
||||||
|
* @param itemDetails item to find mods for
|
||||||
|
* @param modPool ModPool to add mods to
|
||||||
|
*/
|
||||||
|
generateDynamicModPool(itemDetails: ITemplateItem, modPool: Mods): void;
|
||||||
|
/**
|
||||||
|
* Take a list of tpls and filter out blacklisted values using itemFilterService + botEquipmentBlacklist
|
||||||
|
* @param allowedMods base mods to filter
|
||||||
|
* @param botEquipBlacklist equipment blacklist
|
||||||
|
* @param modSlot slot mods belong to
|
||||||
|
* @returns Filtered array of mod tpls
|
||||||
|
*/
|
||||||
|
protected filterWeaponModsByBlacklist(allowedMods: string[], botEquipBlacklist: EquipmentFilterDetails, modSlot: string): string[];
|
||||||
/**
|
/**
|
||||||
* Check if the specific item type on the weapon has reached the set limit
|
* Check if the specific item type on the weapon has reached the set limit
|
||||||
* @param modTpl item to check is limited
|
* @param modTpl item to check is limited
|
||||||
|
@ -13,11 +13,34 @@ export declare class BotHelper {
|
|||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(logger: ILogger, jsonUtil: JsonUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, configServer: ConfigServer);
|
constructor(logger: ILogger, jsonUtil: JsonUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, configServer: ConfigServer);
|
||||||
|
/**
|
||||||
|
* Get difficulty settings for desired bot type, if not found use assault bot types
|
||||||
|
* @param type bot type to retreive difficulty of
|
||||||
|
* @param difficulty difficulty to get settings for (easy/normal etc)
|
||||||
|
* @returns Difficulty object
|
||||||
|
*/
|
||||||
getBotDifficultySettings(type: string, difficulty: string): Difficulty;
|
getBotDifficultySettings(type: string, difficulty: string): Difficulty;
|
||||||
|
/**
|
||||||
|
* Get a template object for the specified botRole from bots.types db
|
||||||
|
* @param role botRole to get template for
|
||||||
|
* @returns IBotType object
|
||||||
|
*/
|
||||||
getBotTemplate(role: string): IBotType;
|
getBotTemplate(role: string): IBotType;
|
||||||
|
/**
|
||||||
|
* Get difficulty settings for a PMC
|
||||||
|
* @param type "usec" / "bear"
|
||||||
|
* @param difficulty what difficulty to retrieve
|
||||||
|
* @returns Difficulty object
|
||||||
|
*/
|
||||||
getPmcDifficultySettings(type: string, difficulty: string): Difficulty;
|
getPmcDifficultySettings(type: string, difficulty: string): Difficulty;
|
||||||
|
/**
|
||||||
|
* Choose a random difficulty from - easy/normal/hard/impossible
|
||||||
|
* @returns random difficulty
|
||||||
|
*/
|
||||||
|
chooseRandomDifficulty(): string;
|
||||||
/**
|
/**
|
||||||
* Randomise the chance the PMC will attack their own side
|
* Randomise the chance the PMC will attack their own side
|
||||||
|
* Look up value in bot.json/chanceSameSideIsHostilePercent
|
||||||
* @param difficultySettings pmc difficulty settings
|
* @param difficultySettings pmc difficulty settings
|
||||||
*/
|
*/
|
||||||
randomisePmcHostility(difficultySettings: Difficulty): void;
|
randomisePmcHostility(difficultySettings: Difficulty): void;
|
||||||
@ -31,7 +54,7 @@ export declare class BotHelper {
|
|||||||
*/
|
*/
|
||||||
addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void;
|
addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void;
|
||||||
/**
|
/**
|
||||||
* Add a bot to the ENEMY_BOT_TYPES array
|
* Add a bot to the ENEMY_BOT_TYPES array, do not add itself if its on the enemy list
|
||||||
* @param difficultySettings bot settings to alter
|
* @param difficultySettings bot settings to alter
|
||||||
* @param typesToAdd bot type to add to enemy list
|
* @param typesToAdd bot type to add to enemy list
|
||||||
*/
|
*/
|
||||||
@ -42,4 +65,10 @@ export declare class BotHelper {
|
|||||||
* @param typesToAdd bot type to add to revenge list
|
* @param typesToAdd bot type to add to revenge list
|
||||||
*/
|
*/
|
||||||
addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void;
|
addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void;
|
||||||
|
/**
|
||||||
|
* Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check
|
||||||
|
* @param botRole the bot role to check if should be a pmc
|
||||||
|
* @returns true if should be a pmc
|
||||||
|
*/
|
||||||
|
shouldBotBePmc(botRole: string): boolean;
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ declare class ItemHelper {
|
|||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseServer: DatabaseServer);
|
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseServer: DatabaseServer);
|
||||||
/**
|
/**
|
||||||
* Checks if a id is a valid item. Valid meaning that it's an item that be stored in stash
|
* Checks if an id is a valid item. Valid meaning that it's an item that be stored in stash
|
||||||
* @param {string} tpl the template id / tpl
|
* @param {string} tpl the template id / tpl
|
||||||
* @returns boolean; true for items that may be in player posession and not quest items
|
* @returns boolean; true for items that may be in player posession and not quest items
|
||||||
*/
|
*/
|
||||||
@ -79,6 +79,11 @@ declare class ItemHelper {
|
|||||||
* @returns {array} The array of StackSlotItems
|
* @returns {array} The array of StackSlotItems
|
||||||
*/
|
*/
|
||||||
generateItemsFromStackSlot(item: ITemplateItem, parentId: string): Item[];
|
generateItemsFromStackSlot(item: ITemplateItem, parentId: string): Item[];
|
||||||
|
/**
|
||||||
|
* Get cloned copy of all item data from items.json
|
||||||
|
* @returns array of ITemplateItem objects
|
||||||
|
*/
|
||||||
|
getItems(): ITemplateItem[];
|
||||||
/**
|
/**
|
||||||
* Gets item data from items.json
|
* Gets item data from items.json
|
||||||
* @param tpl items template id to look up
|
* @param tpl items template id to look up
|
||||||
|
@ -28,6 +28,8 @@ export interface IBotBase {
|
|||||||
CarExtractCounts: CarExtractCounts;
|
CarExtractCounts: CarExtractCounts;
|
||||||
SurvivorClass: SurvivorClass;
|
SurvivorClass: SurvivorClass;
|
||||||
WishList: string[];
|
WishList: string[];
|
||||||
|
/** SPT specific property used during bot generation in raid */
|
||||||
|
sptIsPmc?: boolean;
|
||||||
}
|
}
|
||||||
export interface Info {
|
export interface Info {
|
||||||
EntryPoint: string;
|
EntryPoint: string;
|
||||||
|
@ -80,7 +80,7 @@ export interface Props {
|
|||||||
HasShoulderContact?: boolean;
|
HasShoulderContact?: boolean;
|
||||||
SightingRange?: number;
|
SightingRange?: number;
|
||||||
DoubleActionAccuracyPenaltyMult?: number;
|
DoubleActionAccuracyPenaltyMult?: number;
|
||||||
ModesCount: any;
|
ModesCount?: any;
|
||||||
DurabilityBurnModificator?: number;
|
DurabilityBurnModificator?: number;
|
||||||
HeatFactor?: number;
|
HeatFactor?: number;
|
||||||
CoolFactor?: number;
|
CoolFactor?: number;
|
||||||
@ -156,7 +156,7 @@ export interface Props {
|
|||||||
RigLayoutName?: string;
|
RigLayoutName?: string;
|
||||||
MaxDurability?: number;
|
MaxDurability?: number;
|
||||||
armorZone?: string[];
|
armorZone?: string[];
|
||||||
armorClass: any;
|
armorClass?: any;
|
||||||
mousePenalty?: number;
|
mousePenalty?: number;
|
||||||
weaponErgonomicPenalty?: number;
|
weaponErgonomicPenalty?: number;
|
||||||
BluntThroughput?: number;
|
BluntThroughput?: number;
|
||||||
@ -254,8 +254,8 @@ export interface Props {
|
|||||||
foodUseTime?: number;
|
foodUseTime?: number;
|
||||||
foodEffectType?: string;
|
foodEffectType?: string;
|
||||||
StimulatorBuffs?: string;
|
StimulatorBuffs?: string;
|
||||||
effects_health: any;
|
effects_health?: any;
|
||||||
effects_damage: any;
|
effects_damage?: any;
|
||||||
MaximumNumberOfUsage?: number;
|
MaximumNumberOfUsage?: number;
|
||||||
knifeHitDelay?: number;
|
knifeHitDelay?: number;
|
||||||
knifeHitSlashRate?: number;
|
knifeHitSlashRate?: number;
|
||||||
|
@ -25,6 +25,7 @@ export declare enum BaseClasses {
|
|||||||
SIGHTS = "5448fe7a4bdc2d6f028b456b",
|
SIGHTS = "5448fe7a4bdc2d6f028b456b",
|
||||||
MEDS = "543be5664bdc2dd4348b4569",
|
MEDS = "543be5664bdc2dd4348b4569",
|
||||||
MONEY = "543be5dd4bdc2deb348b4569",
|
MONEY = "543be5dd4bdc2deb348b4569",
|
||||||
|
NIGHTVISION = "5a2c3a9486f774688b05e574",
|
||||||
KEY = "543be5e94bdc2df1348b4568",
|
KEY = "543be5e94bdc2df1348b4568",
|
||||||
KEY_MECHANICAL = "5c99f98d86f7745c314214b3",
|
KEY_MECHANICAL = "5c99f98d86f7745c314214b3",
|
||||||
KEYCARD = "5c164d2286f774194c5e69fa",
|
KEYCARD = "5c164d2286f774194c5e69fa",
|
||||||
@ -66,7 +67,6 @@ export declare enum BaseClasses {
|
|||||||
LUBRICANT = "57864e4c24597754843f8723",
|
LUBRICANT = "57864e4c24597754843f8723",
|
||||||
BATTERY = "57864ee62459775490116fc1",
|
BATTERY = "57864ee62459775490116fc1",
|
||||||
ASSAULT_SCOPE = "55818add4bdc2d5b648b456f",
|
ASSAULT_SCOPE = "55818add4bdc2d5b648b456f",
|
||||||
REFLEX_SIGHT = "55818ad54bdc2ddc698b4569",
|
|
||||||
TACTICAL_COMBO = "55818b164bdc2ddc698b456c",
|
TACTICAL_COMBO = "55818b164bdc2ddc698b456c",
|
||||||
FLASHLIGHT = "55818b084bdc2d5b648b4571",
|
FLASHLIGHT = "55818b084bdc2d5b648b4571",
|
||||||
MAGAZINE = "5448bc234bdc2d3c308b4569",
|
MAGAZINE = "5448bc234bdc2d3c308b4569",
|
||||||
|
151
TypeScript/12ClassExtensionOverride/types/models/enums/WeaponTypes.d.ts
vendored
Normal file
151
TypeScript/12ClassExtensionOverride/types/models/enums/WeaponTypes.d.ts
vendored
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
export declare enum Weapons127x55 {
|
||||||
|
ASH_12 = "5cadfbf7ae92152ac412eeef"
|
||||||
|
}
|
||||||
|
export declare enum Weapons86x70 {
|
||||||
|
MK_18 = "5fc22d7c187fea44d52eda44",
|
||||||
|
AXMC = "627e14b21713922ded6f2c15"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x39 {
|
||||||
|
AS_VAL = "57c44b372459772d2b39b8ce",
|
||||||
|
VSS_VINTOREZ = "57838ad32459774a17445cd2"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x54R {
|
||||||
|
SVDS = "5c46fbd72e2216398b5a8c9c",
|
||||||
|
MP_18 = "61f7c9e189e6fb1a5e3ea78d",
|
||||||
|
MOSIN_INFANTRY = "5bfd297f0db834001a669119",
|
||||||
|
MOSIN_SNIPER = "5ae08f0a5acfc408fb1398a1",
|
||||||
|
SV_98 = "55801eed4bdc2d89578b4588"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x51 {
|
||||||
|
VPO_101 = "5c501a4d2e221602b412b540",
|
||||||
|
DT_MDR_762 = "5dcbd56fdbd3d91b3e5468d5",
|
||||||
|
SA_58 = "5b0bbe4e5acfc40dc528a72d",
|
||||||
|
SCARH_BLACK = "6183afd850224f204c1da514",
|
||||||
|
SCARH_FDE = "6165ac306ef05c2ce828ef74",
|
||||||
|
HK_G28 = "6176aca650224f204c1da3fb",
|
||||||
|
M1A = "5aafa857e5b5b00018480968",
|
||||||
|
RFB = "5f2a9575926fd9352339381f",
|
||||||
|
RSASS = "5a367e5dc4a282000e49738f",
|
||||||
|
SR_25 = "5df8ce05b11454561e39243b",
|
||||||
|
DVL_10 = "588892092459774ac91d4b11",
|
||||||
|
M700 = "5bfea6e90db834001b7347f3",
|
||||||
|
T5000M = "5df24cf80dee1b22f862e9bc"
|
||||||
|
}
|
||||||
|
export declare enum Weapons366TKM {
|
||||||
|
VPO_209 = "59e6687d86f77411d949b251",
|
||||||
|
VPO_215 = "5de652c31b7e3716273428be"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x39 {
|
||||||
|
OP_SKS = "587e02ff24597743df3deaeb",
|
||||||
|
SKS = "574d967124597745970e7c94",
|
||||||
|
AK_103 = "5ac66d2e5acfc43b321d4b53",
|
||||||
|
AK_104 = "5ac66d725acfc43b321d4b60",
|
||||||
|
AKM = "59d6088586f774275f37482f",
|
||||||
|
AKMN = "5a0ec13bfcdbcb00165aa685",
|
||||||
|
AKMS = "59ff346386f77477562ff5e2",
|
||||||
|
AKMSN = "5abcbc27d8ce8700182eceeb",
|
||||||
|
MK47_MUTANT = "606587252535c57a13424cfd",
|
||||||
|
RD_704 = "628a60ae6b1d481ff772e9c8",
|
||||||
|
VPO_136 = "59e6152586f77473dc057aa1"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x35 {
|
||||||
|
MCX = "5fbcc1d9016cce60e8341ab3"
|
||||||
|
}
|
||||||
|
export declare enum Weapons556x45 {
|
||||||
|
ADAR_2_15 = "5c07c60e0db834002330051f",
|
||||||
|
AK_101 = "5ac66cb05acfc40198510a10",
|
||||||
|
AK_102 = "5ac66d015acfc400180ae6e4",
|
||||||
|
DT_MDR_556 = "5c488a752e221602b412af63",
|
||||||
|
HK_416A5 = "5bb2475ed4351e00853264e3",
|
||||||
|
HK_G36 = "623063e994fc3f7b302a9696",
|
||||||
|
M4A1 = "5447a9cd4bdc2dbd208b4567",
|
||||||
|
SCARL_BLACK = "6184055050224f204c1da540",
|
||||||
|
SCARL_FDE = "618428466ef05c2ce828f218",
|
||||||
|
TX15_DML = "5d43021ca4b9362eab4b5e25"
|
||||||
|
}
|
||||||
|
export declare enum Weapons545x39 {
|
||||||
|
AK_105 = "5ac66d9b5acfc4001633997a",
|
||||||
|
AK_74 = "5bf3e03b0db834001d2c4a9c",
|
||||||
|
AK_74M = "5ac4cd105acfc40016339859",
|
||||||
|
AK_74N = "5644bd2b4bdc2d3b4c8b4572",
|
||||||
|
AKS_74 = "5bf3e0490db83400196199af",
|
||||||
|
AKS_74N = "5ab8e9fcd8ce870019439434",
|
||||||
|
AKS_74U = "57dc2fa62459775949412633",
|
||||||
|
AKS_74UB = "5839a40f24597726f856b511",
|
||||||
|
AKS_74UN = "583990e32459771419544dd2",
|
||||||
|
SAG_AK = "628b5638ad252a16da6dd245",
|
||||||
|
SAG_AK_SHORT = "628b9c37a733087d0d7fe84b",
|
||||||
|
RPK_16 = "5beed0f50db834001c062b12"
|
||||||
|
}
|
||||||
|
export declare enum Weapons57x28FN {
|
||||||
|
FN_57_BLACK = "5d3eb3b0a4b93615055e84d2",
|
||||||
|
FN_57_FDE = "5d67abc1a4b93614ec50137f",
|
||||||
|
FN_P90 = "5cc82d76e24e8d00134b4b83"
|
||||||
|
}
|
||||||
|
export declare enum Weapons46x30HK {
|
||||||
|
MP7A1 = "5ba26383d4351e00334c93d9",
|
||||||
|
MP7A2 = "5bd70322209c4d00d7167b8f"
|
||||||
|
}
|
||||||
|
export declare enum Weapons1143x23 {
|
||||||
|
M1911A1 = "5e81c3cbac2bb513793cdc75",
|
||||||
|
M45A1 = "5f36a0e5fbf956000b716b65",
|
||||||
|
USP45 = "6193a720f8ee7e52e42109ed",
|
||||||
|
UMP45 = "5fc3e272f8b6a877a729eac5",
|
||||||
|
VECTOR45 = "5fb64bc92b1b027b1f50bcf2"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x33R {
|
||||||
|
CR_50DS = "61a4c8884f95bc3b2c5dc96f"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x21 {
|
||||||
|
SR_1MP = "59f98b4986f7746f546d2cef"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x19 {
|
||||||
|
GLOCK_17 = "5a7ae0c351dfba0017554310",
|
||||||
|
GLOCK_18C = "5b1fa9b25acfc40018633c01",
|
||||||
|
M9A3 = "5cadc190ae921500103bb3b6",
|
||||||
|
MP_443 = "576a581d2459771e7b1bc4f1",
|
||||||
|
P226R = "56d59856d2720bd8418b456a",
|
||||||
|
PL_15 = "602a9740da11d6478d5a06dc",
|
||||||
|
CR_200DS = "624c2e8614da335f1e034d8c",
|
||||||
|
MP5 = "5926bb2186f7744b1c6c6e60",
|
||||||
|
MP5K = "5d2f0d8048f0356c925bc3b0",
|
||||||
|
MP9 = "5e00903ae9dc277128008b87",
|
||||||
|
MP9_N = "5de7bd7bfd6b4e6e2276dc25",
|
||||||
|
MPX = "58948c8e86f77409493f7266",
|
||||||
|
PP_19_01 = "59984ab886f7743e98271174",
|
||||||
|
SAIGA_9 = "59f9cabd86f7743a10721f46",
|
||||||
|
STM_9 = "60339954d62c9b14ed777c06",
|
||||||
|
VECTOR_9MM = "5fc3f2d5900b1d5091531e57"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x18 {
|
||||||
|
APB = "5abccb7dd8ce87001773e277",
|
||||||
|
APS = "5a17f98cfcdbcb0980087290",
|
||||||
|
PB_SILENCED = "56e0598dd2720bb5668b45a6",
|
||||||
|
PM = "5448bd6b4bdc2dfc2f8b4569",
|
||||||
|
PM_T = "579204f224597773d619e051",
|
||||||
|
PP9_KLIN = "57f4c844245977379d5c14d1",
|
||||||
|
PP91_KEDR = "57d14d2524597714373db789",
|
||||||
|
PP91_KEDRB = "57f3c6bd24597738e730fa2f"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x25 {
|
||||||
|
TT = "571a12c42459771f627b58a0",
|
||||||
|
TT_GOLD = "5b3b713c5acfc4330140bd8d",
|
||||||
|
PPSH_41 = "5ea03f7400685063ec28bfa8"
|
||||||
|
}
|
||||||
|
export declare enum Weapons12Gauge {
|
||||||
|
M3_SUPER90 = "6259b864ebedf17603599e88",
|
||||||
|
M590A1 = "5e870397991fd70db46995c8",
|
||||||
|
M870 = "5a7828548dc32e5a9c28b516",
|
||||||
|
MP_133 = "54491c4f4bdc2db1078b4568",
|
||||||
|
MP_153 = "56dee2bdd2720bc8328b4567",
|
||||||
|
MP_155 = "606dae0ab0e443224b421bb7",
|
||||||
|
MP_43_1C = "5580223e4bdc2d1c128b457f",
|
||||||
|
MTS_255_12 = "60db29ce99594040e04c4a27",
|
||||||
|
SAIGA_12GA = "576165642459773c7a400233"
|
||||||
|
}
|
||||||
|
export declare enum Weapons20Gauge {
|
||||||
|
TOZ_106 = "5a38e6bac4a2826c6e06d79b"
|
||||||
|
}
|
||||||
|
export declare enum Weapons23x75 {
|
||||||
|
KS_23M = "5e848cc2988a8701445df1e8"
|
||||||
|
}
|
@ -65,6 +65,7 @@ export interface LootNvalue {
|
|||||||
export interface EquipmentFilters {
|
export interface EquipmentFilters {
|
||||||
weaponModLimits: ModLimits;
|
weaponModLimits: ModLimits;
|
||||||
randomisedWeaponModSlots?: string[];
|
randomisedWeaponModSlots?: string[];
|
||||||
|
randomisedArmorSlots?: string[];
|
||||||
blacklist: EquipmentFilterDetails[];
|
blacklist: EquipmentFilterDetails[];
|
||||||
whitelist: EquipmentFilterDetails[];
|
whitelist: EquipmentFilterDetails[];
|
||||||
}
|
}
|
||||||
|
@ -7,14 +7,18 @@ export interface IPmcConfig {
|
|||||||
looseWeaponInBackpackLootMinMax: MinMax;
|
looseWeaponInBackpackLootMinMax: MinMax;
|
||||||
isUsec: number;
|
isUsec: number;
|
||||||
chanceSameSideIsHostilePercent: number;
|
chanceSameSideIsHostilePercent: number;
|
||||||
usecType: string;
|
/** key: location, value: type for usec/bear */
|
||||||
bearType: string;
|
pmcType: Record<string, PmcTypes>;
|
||||||
maxBackpackLootTotalRub: number;
|
maxBackpackLootTotalRub: number;
|
||||||
maxPocketLootTotalRub: number;
|
maxPocketLootTotalRub: number;
|
||||||
maxVestLootTotalRub: number;
|
maxVestLootTotalRub: number;
|
||||||
convertIntoPmcChance: Record<string, MinMax>;
|
convertIntoPmcChance: Record<string, MinMax>;
|
||||||
enemyTypes: string[];
|
enemyTypes: string[];
|
||||||
}
|
}
|
||||||
|
export interface PmcTypes {
|
||||||
|
usec: string;
|
||||||
|
bear: string;
|
||||||
|
}
|
||||||
export interface DynamicLoot {
|
export interface DynamicLoot {
|
||||||
whitelist: string[];
|
whitelist: string[];
|
||||||
blacklist: string[];
|
blacklist: string[];
|
||||||
|
@ -39,6 +39,7 @@ export interface Dynamic {
|
|||||||
offerItemCount: MinMax;
|
offerItemCount: MinMax;
|
||||||
price: MinMax;
|
price: MinMax;
|
||||||
presetPrice: MinMax;
|
presetPrice: MinMax;
|
||||||
|
showDefaultPresetsOnly: boolean;
|
||||||
endTimeSeconds: MinMax;
|
endTimeSeconds: MinMax;
|
||||||
condition: Condition;
|
condition: Condition;
|
||||||
stackablePercent: MinMax;
|
stackablePercent: MinMax;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
export declare class LootItem {
|
export declare class LootItem {
|
||||||
|
id?: string;
|
||||||
tpl: string;
|
tpl: string;
|
||||||
isPreset: boolean;
|
isPreset: boolean;
|
||||||
stackCount: number;
|
stackCount: number;
|
||||||
|
47
TypeScript/12ClassExtensionOverride/types/services/BotGenerationCacheService.d.ts
vendored
Normal file
47
TypeScript/12ClassExtensionOverride/types/services/BotGenerationCacheService.d.ts
vendored
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import { BotHelper } from "../helpers/BotHelper";
|
||||||
|
import { IBotBase } from "../models/eft/common/tables/IBotBase";
|
||||||
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
|
export declare class BotGenerationCacheService {
|
||||||
|
protected logger: ILogger;
|
||||||
|
protected randomUtil: RandomUtil;
|
||||||
|
protected jsonUtil: JsonUtil;
|
||||||
|
protected botHelper: BotHelper;
|
||||||
|
protected storedBots: IBotBase[];
|
||||||
|
constructor(logger: ILogger, randomUtil: RandomUtil, jsonUtil: JsonUtil, botHelper: BotHelper);
|
||||||
|
/**
|
||||||
|
* Store array of bots in cache, shuffle results before storage
|
||||||
|
* @param botsToStore
|
||||||
|
*/
|
||||||
|
storeBots(botsToStore: IBotBase[]): void;
|
||||||
|
/**
|
||||||
|
* Find and return a bot based on its role
|
||||||
|
* Remove bot from internal array so it can't be retreived again
|
||||||
|
* @param role role to retreive (assault/bossTagilla etc)
|
||||||
|
* @returns IBotBase object
|
||||||
|
*/
|
||||||
|
getBot(role: string): IBotBase[];
|
||||||
|
/**
|
||||||
|
* Find a bot by its index from cache
|
||||||
|
* @param indexOfBotToReturn index to find bot by
|
||||||
|
* @returns bot profile
|
||||||
|
*/
|
||||||
|
protected getBotFromCache(indexOfBotToReturn: number): IBotBase;
|
||||||
|
/**
|
||||||
|
* Remove bot profile by index from cache
|
||||||
|
* @param indexOfBotToReturn Index of bot profile to remove
|
||||||
|
*/
|
||||||
|
protected removeBotFromCache(indexOfBotToReturn: number): void;
|
||||||
|
/**
|
||||||
|
* Get index of bot profile that matches criteria
|
||||||
|
* @param role role of bot we want
|
||||||
|
* @param getPmc is requested bot a pmc
|
||||||
|
* @returns index of found bot
|
||||||
|
*/
|
||||||
|
protected getIndexOfBotToReturn(role: string, getPmc: boolean): number;
|
||||||
|
/**
|
||||||
|
* Remove all cached bot profiles
|
||||||
|
*/
|
||||||
|
clearStoredBots(): void;
|
||||||
|
}
|
@ -34,6 +34,17 @@ export declare class BotLootCacheService {
|
|||||||
* @param isPmc Is the bot a PMC (alteres what loot is cached)
|
* @param isPmc Is the bot a PMC (alteres what loot is cached)
|
||||||
*/
|
*/
|
||||||
protected addLootToCache(botRole: string, isPmc: boolean, lootPool: Items): void;
|
protected addLootToCache(botRole: string, isPmc: boolean, lootPool: Items): void;
|
||||||
|
/**
|
||||||
|
* Sort a pool of item objects by its flea price
|
||||||
|
* @param poolToSort pool of items to sort
|
||||||
|
*/
|
||||||
|
protected sortPoolByRagfairPrice(poolToSort: ITemplateItem[]): void;
|
||||||
|
/**
|
||||||
|
* Add unique items into combined pool
|
||||||
|
* @param combinedItemPool Pool of items to add to
|
||||||
|
* @param itemsToAdd items to add to combined pool if unique
|
||||||
|
*/
|
||||||
|
protected addUniqueItemsToPool(combinedItemPool: ITemplateItem[], itemsToAdd: ITemplateItem[]): void;
|
||||||
/**
|
/**
|
||||||
* Ammo/grenades have this property
|
* Ammo/grenades have this property
|
||||||
* @param props
|
* @param props
|
||||||
|
@ -55,6 +55,17 @@ export declare class FenceService {
|
|||||||
* Replace a percentage of fence assorts with freshly generated items
|
* Replace a percentage of fence assorts with freshly generated items
|
||||||
*/
|
*/
|
||||||
performPartialRefresh(): void;
|
performPartialRefresh(): void;
|
||||||
|
/**
|
||||||
|
* Increment fence next refresh timestamp by current timestamp + partialRefreshTimeSeconds from config
|
||||||
|
*/
|
||||||
|
protected incrementPartialRefreshTime(): void;
|
||||||
|
/**
|
||||||
|
* Compare the current fence offer count to what the config wants it to be,
|
||||||
|
* If value is lower add extra count to value to generate more items to fill gap
|
||||||
|
* @param existingItemCountToReplace count of items to generate
|
||||||
|
* @returns number of items to generate
|
||||||
|
*/
|
||||||
|
protected getCountOfItemsToGenerate(existingItemCountToReplace: number): number;
|
||||||
/**
|
/**
|
||||||
* Choose an item (not mod) at random and remove from assorts
|
* Choose an item (not mod) at random and remove from assorts
|
||||||
*/
|
*/
|
||||||
|
27
TypeScript/12ClassExtensionOverride/types/services/PmcAiService.d.ts
vendored
Normal file
27
TypeScript/12ClassExtensionOverride/types/services/PmcAiService.d.ts
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
|
/** Storing/retreving pmcRoles set at the start of a raid - its done at that point as we know what location the player is heading to */
|
||||||
|
export declare class PmcAiService {
|
||||||
|
protected logger: ILogger;
|
||||||
|
protected configServer: ConfigServer;
|
||||||
|
protected botConfig: IBotConfig;
|
||||||
|
protected usecRole: string;
|
||||||
|
protected bearRole: string;
|
||||||
|
constructor(logger: ILogger, configServer: ConfigServer);
|
||||||
|
/**
|
||||||
|
* Convert from pmc side (usec/bear) to the side as defined in the bot config (usecType/bearType)
|
||||||
|
* @param pmcSide eft side (usec/bear)
|
||||||
|
* @returns pmc side as defined in config
|
||||||
|
*/
|
||||||
|
getPmcRole(pmcSide: "usec" | "bear" | string): string;
|
||||||
|
/**
|
||||||
|
* Set the roles for pmcs
|
||||||
|
* @param location map location to look up and use as pmc types
|
||||||
|
*/
|
||||||
|
setPmcRolesByLocation(location: string): void;
|
||||||
|
/**
|
||||||
|
* Clear the saved role from usec/bear PMCs
|
||||||
|
*/
|
||||||
|
clearPmcRoles(): void;
|
||||||
|
}
|
@ -136,7 +136,7 @@ export declare class RandomUtil {
|
|||||||
* Drawing can be with or without replacement
|
* Drawing can be with or without replacement
|
||||||
* @param {array} list The array we want to draw randomly from
|
* @param {array} list The array we want to draw randomly from
|
||||||
* @param {integer} count The number of times we want to draw
|
* @param {integer} count The number of times we want to draw
|
||||||
* @param {boolean} replacement Draw with ot without replacement from the input array
|
* @param {boolean} replacement Draw with or without replacement from the input array
|
||||||
* @return {array} Array consisting of N random elements
|
* @return {array} Array consisting of N random elements
|
||||||
*/
|
*/
|
||||||
drawRandomFromList<T>(list: Array<T>, count?: number, replacement?: boolean): Array<T>;
|
drawRandomFromList<T>(list: Array<T>, count?: number, replacement?: boolean): Array<T>;
|
||||||
|
@ -4,7 +4,7 @@ export declare class ContextVariable {
|
|||||||
private timestamp;
|
private timestamp;
|
||||||
private type;
|
private type;
|
||||||
constructor(value: any, type: ContextVariableType);
|
constructor(value: any, type: ContextVariableType);
|
||||||
getValue(): any;
|
getValue<T>(): T;
|
||||||
getTimestamp(): Date;
|
getTimestamp(): Date;
|
||||||
getType(): ContextVariableType;
|
getType(): ContextVariableType;
|
||||||
}
|
}
|
||||||
|
@ -5,15 +5,21 @@ import { IBotBase } from "../models/eft/common/tables/IBotBase";
|
|||||||
import { IBotCore } from "../models/eft/common/tables/IBotCore";
|
import { IBotCore } from "../models/eft/common/tables/IBotCore";
|
||||||
import { Difficulty } from "../models/eft/common/tables/IBotType";
|
import { Difficulty } from "../models/eft/common/tables/IBotType";
|
||||||
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
|
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";
|
||||||
|
import { BotGenerationCacheService } from "../services/BotGenerationCacheService";
|
||||||
|
import { PmcAiService } from "../services/PmcAiService";
|
||||||
export declare class BotController {
|
export declare class BotController {
|
||||||
|
protected logger: ILogger;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected botGenerator: BotGenerator;
|
protected botGenerator: BotGenerator;
|
||||||
protected botHelper: BotHelper;
|
protected botHelper: BotHelper;
|
||||||
|
protected pmcAiService: PmcAiService;
|
||||||
|
protected botGenerationCacheService: BotGenerationCacheService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, configServer: ConfigServer);
|
constructor(logger: ILogger, databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, pmcAiService: PmcAiService, botGenerationCacheService: BotGenerationCacheService, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* 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
|
||||||
@ -29,7 +35,7 @@ export declare class BotController {
|
|||||||
* @returns Difficulty object
|
* @returns Difficulty object
|
||||||
*/
|
*/
|
||||||
getBotDifficulty(type: string, difficulty: string): Difficulty;
|
getBotDifficulty(type: string, difficulty: string): Difficulty;
|
||||||
protected getPmcDifficultySettings(pmcType: "bear" | "usec", difficulty: string): Difficulty;
|
protected getPmcDifficultySettings(pmcType: "bear" | "usec", difficulty: string, usecType: string, bearType: string): Difficulty;
|
||||||
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
||||||
getBotCap(): number;
|
getBotCap(): number;
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,10 @@ import { IMatchConfig } from "../models/spt/config/IMatchConfig";
|
|||||||
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 { SaveServer } from "../servers/SaveServer";
|
import { SaveServer } from "../servers/SaveServer";
|
||||||
|
import { BotGenerationCacheService } from "../services/BotGenerationCacheService";
|
||||||
import { BotLootCacheService } from "../services/BotLootCacheService";
|
import { BotLootCacheService } from "../services/BotLootCacheService";
|
||||||
import { MatchLocationService } from "../services/MatchLocationService";
|
import { MatchLocationService } from "../services/MatchLocationService";
|
||||||
|
import { PmcAiService } from "../services/PmcAiService";
|
||||||
import { ProfileSnapshotService } from "../services/ProfileSnapshotService";
|
import { ProfileSnapshotService } from "../services/ProfileSnapshotService";
|
||||||
export declare class MatchController {
|
export declare class MatchController {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
@ -27,11 +29,13 @@ export declare class MatchController {
|
|||||||
protected botLootCacheService: BotLootCacheService;
|
protected botLootCacheService: BotLootCacheService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected profileSnapshotService: ProfileSnapshotService;
|
protected profileSnapshotService: ProfileSnapshotService;
|
||||||
|
protected pmcAiService: PmcAiService;
|
||||||
|
protected botGenerationCacheService: BotGenerationCacheService;
|
||||||
protected applicationContext: ApplicationContext;
|
protected applicationContext: ApplicationContext;
|
||||||
protected matchConfig: IMatchConfig;
|
protected matchConfig: IMatchConfig;
|
||||||
protected inraidConfig: IInRaidConfig;
|
protected inraidConfig: IInRaidConfig;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, matchLocationService: MatchLocationService, traderHelper: TraderHelper, botLootCacheService: BotLootCacheService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext);
|
constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, matchLocationService: MatchLocationService, traderHelper: TraderHelper, botLootCacheService: BotLootCacheService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, pmcAiService: PmcAiService, botGenerationCacheService: BotGenerationCacheService, applicationContext: ApplicationContext);
|
||||||
getEnabled(): boolean;
|
getEnabled(): boolean;
|
||||||
getProfile(info: IGetProfileRequestData): IPmcData[];
|
getProfile(info: IGetProfileRequestData): IPmcData[];
|
||||||
createGroup(sessionID: string, info: ICreateGroupRequestData): any;
|
createGroup(sessionID: string, info: ICreateGroupRequestData): any;
|
||||||
|
@ -9,6 +9,7 @@ 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";
|
||||||
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
||||||
|
import { PmcAiService } from "../services/PmcAiService";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
@ -30,9 +31,10 @@ export declare class BotGenerator {
|
|||||||
protected botEquipmentFilterService: BotEquipmentFilterService;
|
protected botEquipmentFilterService: BotEquipmentFilterService;
|
||||||
protected botHelper: BotHelper;
|
protected botHelper: BotHelper;
|
||||||
protected gameEventHelper: GameEventHelper;
|
protected gameEventHelper: GameEventHelper;
|
||||||
|
protected pmcAiService: PmcAiService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botEquipmentFilterService: BotEquipmentFilterService, botHelper: BotHelper, gameEventHelper: GameEventHelper, configServer: ConfigServer);
|
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botEquipmentFilterService: BotEquipmentFilterService, botHelper: BotHelper, gameEventHelper: GameEventHelper, pmcAiService: PmcAiService, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* Generate a player scav bot object
|
* Generate a player scav bot object
|
||||||
* @param role e.g. assault / pmcbot
|
* @param role e.g. assault / pmcbot
|
||||||
@ -41,13 +43,13 @@ export declare class BotGenerator {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
generatePlayerScav(sessionId: string, role: string, difficulty: string, botTemplate: IBotType): IBotBase;
|
generatePlayerScav(sessionId: string, role: string, difficulty: string, botTemplate: IBotType): IBotBase;
|
||||||
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
|
||||||
/**
|
/**
|
||||||
* Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check
|
* Generate an array of bot objects for populate a raid with
|
||||||
* @param botRole the bot role to check if should be a pmc
|
* @param sessionId session id
|
||||||
* @returns true if should be a pmc
|
* @param info request object
|
||||||
|
* @returns bot array
|
||||||
*/
|
*/
|
||||||
protected shouldBotBePmc(botRole: string): boolean;
|
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
||||||
/**
|
/**
|
||||||
* Get a randomised PMC side based on bot config value 'isUsec'
|
* Get a randomised PMC side based on bot config value 'isUsec'
|
||||||
* @returns pmc side as string
|
* @returns pmc side as string
|
||||||
@ -58,12 +60,30 @@ export declare class BotGenerator {
|
|||||||
* @returns IBotBase object
|
* @returns IBotBase object
|
||||||
*/
|
*/
|
||||||
protected getCloneOfBotBase(): IBotBase;
|
protected getCloneOfBotBase(): IBotBase;
|
||||||
|
/**
|
||||||
|
* Create a IBotBase object with equipment/loot/exp etc
|
||||||
|
* @param sessionId Session id
|
||||||
|
* @param bot bots base file
|
||||||
|
* @param role botRole bot will use
|
||||||
|
* @param node Bot template from db/bots/x.json
|
||||||
|
* @param isPmc Is bot to be a PMC
|
||||||
|
* @param isPlayerScav is bot to be a p scav bot
|
||||||
|
* @returns IBotBase object
|
||||||
|
*/
|
||||||
protected generateBot(sessionId: string, bot: IBotBase, role: string, node: IBotType, isPmc: boolean, isPlayerScav?: boolean): IBotBase;
|
protected generateBot(sessionId: string, bot: IBotBase, role: string, node: IBotType, isPmc: boolean, isPlayerScav?: boolean): IBotBase;
|
||||||
/**
|
/**
|
||||||
* Log the number of PMCs generated to the debug console
|
* Log the number of PMCs generated to the debug console
|
||||||
|
* @param output Generated bot array, ready to send to client
|
||||||
*/
|
*/
|
||||||
protected logPmcGeneratedCount(output: IBotBase[]): void;
|
protected logPmcGeneratedCount(output: IBotBase[]): void;
|
||||||
protected generateRandomLevel(min: number, max: number): BotGenerator.IRandomisedBotLevelResult;
|
/**
|
||||||
|
* Return a randomised bot level and exp value
|
||||||
|
* @param role botRole being generated for
|
||||||
|
* @param min Min exp value
|
||||||
|
* @param max Max exp value
|
||||||
|
* @returns IRandomisedBotLevelResult object
|
||||||
|
*/
|
||||||
|
protected generateRandomLevel(role: string, min: number, max: number): BotGenerator.IRandomisedBotLevelResult;
|
||||||
/**
|
/**
|
||||||
* Converts health object to the required format
|
* Converts health object to the required format
|
||||||
* @param healthObj health object from bot json
|
* @param healthObj health object from bot json
|
||||||
@ -72,19 +92,23 @@ export declare class BotGenerator {
|
|||||||
*/
|
*/
|
||||||
protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth;
|
protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth;
|
||||||
protected generateSkills(skillsObj: Skills): Skills;
|
protected generateSkills(skillsObj: Skills): Skills;
|
||||||
/**
|
|
||||||
* Convert from pmc side (usec/bear) to the side as defined in the bot config (usecType/bearType)
|
|
||||||
* @param pmcSide eft side (usec/bear)
|
|
||||||
* @returns pmc side as defined in config
|
|
||||||
*/
|
|
||||||
protected getPmcRole(pmcSide: string): string;
|
|
||||||
/**
|
/**
|
||||||
* Iterate through bots inventory and loot to find and remove christmas items (as defined in GameEventHelper)
|
* Iterate through bots inventory and loot to find and remove christmas items (as defined in GameEventHelper)
|
||||||
* @param nodeInventory Bots inventory to iterate over
|
* @param nodeInventory Bots inventory to iterate over
|
||||||
*/
|
*/
|
||||||
protected removeChristmasItemsFromBotInventory(nodeInventory: Inventory): void;
|
protected removeChristmasItemsFromBotInventory(nodeInventory: Inventory): void;
|
||||||
|
/**
|
||||||
|
* Generate a random Id for a bot and apply to bots _id and aid value
|
||||||
|
* @param bot bot to update
|
||||||
|
* @returns updated IBotBase object
|
||||||
|
*/
|
||||||
protected generateId(bot: IBotBase): IBotBase;
|
protected generateId(bot: IBotBase): IBotBase;
|
||||||
protected generateInventoryID(profile: IBotBase): IBotBase;
|
protected generateInventoryID(profile: IBotBase): IBotBase;
|
||||||
|
/**
|
||||||
|
* Get the difficulty passed in, if its not "asoline", get selected difficulty from config
|
||||||
|
* @param requestedDifficulty
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
protected getPMCDifficulty(requestedDifficulty: string): string;
|
protected getPMCDifficulty(requestedDifficulty: string): string;
|
||||||
/**
|
/**
|
||||||
* Add a side-specific (usec/bear) dogtag item to a bots inventory
|
* Add a side-specific (usec/bear) dogtag item to a bots inventory
|
||||||
|
@ -1,13 +1,16 @@
|
|||||||
|
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
||||||
|
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
||||||
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
||||||
import { Inventory, Chances, Generation, Mods } from "../models/eft/common/tables/IBotType";
|
import { Chances, Generation, Inventory, Mods } from "../models/eft/common/tables/IBotType";
|
||||||
|
import { EquipmentSlots } from "../models/enums/EquipmentSlots";
|
||||||
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
|
||||||
import { BotWeaponGenerator } from "./BotWeaponGenerator";
|
|
||||||
import { BotLootGenerator } from "./BotLootGenerator";
|
import { BotLootGenerator } from "./BotLootGenerator";
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { BotWeaponGenerator } from "./BotWeaponGenerator";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
|
||||||
export declare class BotInventoryGenerator {
|
export declare class BotInventoryGenerator {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
@ -17,8 +20,14 @@ export declare class BotInventoryGenerator {
|
|||||||
protected botLootGenerator: BotLootGenerator;
|
protected botLootGenerator: BotLootGenerator;
|
||||||
protected botGeneratorHelper: BotGeneratorHelper;
|
protected botGeneratorHelper: BotGeneratorHelper;
|
||||||
protected weightedRandomHelper: WeightedRandomHelper;
|
protected weightedRandomHelper: WeightedRandomHelper;
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, weightedRandomHelper: WeightedRandomHelper);
|
protected configServer: ConfigServer;
|
||||||
generateInventory(sessionId: string, templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory;
|
protected botConfig: IBotConfig;
|
||||||
|
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, weightedRandomHelper: WeightedRandomHelper, configServer: ConfigServer);
|
||||||
|
generateInventory(sessionId: string, templateInventory: Inventory, equipmentChances: Chances, itemGenerationLimitsMinMax: Generation, botRole: string, isPmc: boolean): PmcInventory;
|
||||||
|
protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: {
|
||||||
|
slot: EquipmentSlots;
|
||||||
|
shouldSpawn: boolean;
|
||||||
|
}, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: Generation): void;
|
||||||
protected generateEquipment(equipmentSlot: string, equipmentPool: Record<string, number>, modPool: Mods, spawnChances: Chances, botRole: string, inventory: PmcInventory): void;
|
protected generateEquipment(equipmentSlot: string, equipmentPool: Record<string, number>, modPool: Mods, spawnChances: Chances, botRole: string, inventory: PmcInventory): void;
|
||||||
protected generateInventoryBase(): PmcInventory;
|
protected generateInventoryBase(): PmcInventory;
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ export declare class BotWeaponGenerator {
|
|||||||
* @param botRole for durability values
|
* @param botRole for durability values
|
||||||
* @returns Base weapon item in array
|
* @returns Base weapon item in array
|
||||||
*/
|
*/
|
||||||
constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[];
|
protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[];
|
||||||
/**
|
/**
|
||||||
* Get the mods necessary to kit out a weapon to its preset level
|
* Get the mods necessary to kit out a weapon to its preset level
|
||||||
* @param weaponTpl weapon to find preset for
|
* @param weaponTpl weapon to find preset for
|
||||||
|
@ -6,14 +6,16 @@ import { LootRequest } from "../models/spt/services/LootRequest";
|
|||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { ItemFilterService } from "../services/ItemFilterService";
|
import { ItemFilterService } from "../services/ItemFilterService";
|
||||||
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
export declare class LootGenerator {
|
export declare class LootGenerator {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
|
protected hashUtil: HashUtil;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected randomUtil: RandomUtil;
|
protected randomUtil: RandomUtil;
|
||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected itemFilterService: ItemFilterService;
|
protected itemFilterService: ItemFilterService;
|
||||||
constructor(logger: ILogger, databaseServer: DatabaseServer, randomUtil: RandomUtil, itemHelper: ItemHelper, itemFilterService: ItemFilterService);
|
constructor(logger: ILogger, hashUtil: HashUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, itemHelper: ItemHelper, itemFilterService: ItemFilterService);
|
||||||
/**
|
/**
|
||||||
* Generate a list of items based on options passed in
|
* Generate a list of items based on options passed in
|
||||||
* @param options parameters to adjust what loot is generated
|
* @param options parameters to adjust what loot is generated
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
|
import { Preset } from "../models/eft/common/IGlobals";
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
import { Item } from "../models/eft/common/tables/IItem";
|
||||||
|
import { IRagfairConfig } from "../models/spt/config/IRagfairConfig";
|
||||||
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
@ -8,18 +11,40 @@ export declare class RagfairAssortGenerator {
|
|||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
|
protected configServer: ConfigServer;
|
||||||
protected generatedAssortItems: Item[];
|
protected generatedAssortItems: Item[];
|
||||||
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer);
|
protected ragfairConfig: IRagfairConfig;
|
||||||
|
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* Get an array of unique items that can be sold on the flea
|
* Get an array of unique items that can be sold on the flea
|
||||||
* @returns array of unique items
|
* @returns array of unique items
|
||||||
*/
|
*/
|
||||||
getAssortItems(): Item[];
|
getAssortItems(): Item[];
|
||||||
|
/**
|
||||||
|
* Check internal generatedAssortItems array has objects
|
||||||
|
* @returns true if array has objects
|
||||||
|
*/
|
||||||
protected assortsAreGenerated(): boolean;
|
protected assortsAreGenerated(): boolean;
|
||||||
/**
|
/**
|
||||||
* Generate an array of items the flea can sell
|
* Generate an array of items the flea can sell
|
||||||
* @returns array of unique items
|
* @returns array of unique items
|
||||||
*/
|
*/
|
||||||
protected generateRagfairAssortItems(): Item[];
|
protected generateRagfairAssortItems(): Item[];
|
||||||
|
/**
|
||||||
|
* Get presets from globals.json
|
||||||
|
* @returns Preset object array
|
||||||
|
*/
|
||||||
|
protected getPresets(): Preset[];
|
||||||
|
/**
|
||||||
|
* Get default presets from globals.json
|
||||||
|
* @returns Preset object array
|
||||||
|
*/
|
||||||
|
protected getDefaultPresets(): Preset[];
|
||||||
|
/**
|
||||||
|
* Create a base assort item and return it with populated values + 999999 stack count + unlimited count = true
|
||||||
|
* @param tplId tplid to add to item
|
||||||
|
* @param id id to add to item
|
||||||
|
* @returns hydrated Item object
|
||||||
|
*/
|
||||||
protected createRagfairAssortItem(tplId: string, id?: string): Item;
|
protected createRagfairAssortItem(tplId: string, id?: string): Item;
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,17 @@ import { InventoryHelper } from "./InventoryHelper";
|
|||||||
import { ItemHelper } from "./ItemHelper";
|
import { ItemHelper } from "./ItemHelper";
|
||||||
import { ProbabilityHelper } from "./ProbabilityHelper";
|
import { ProbabilityHelper } from "./ProbabilityHelper";
|
||||||
import { ProfileHelper } from "./ProfileHelper";
|
import { ProfileHelper } from "./ProfileHelper";
|
||||||
|
export declare class BotModLimits {
|
||||||
|
scope: ItemCount;
|
||||||
|
scopeMax: number;
|
||||||
|
scopeBaseTypes: string[];
|
||||||
|
flashlightLaser: ItemCount;
|
||||||
|
flashlightLaserMax: number;
|
||||||
|
flashlgihtLaserBaseTypes: string[];
|
||||||
|
}
|
||||||
|
export declare class ItemCount {
|
||||||
|
count: number;
|
||||||
|
}
|
||||||
export declare class BotGeneratorHelper {
|
export declare class BotGeneratorHelper {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected jsonUtil: JsonUtil;
|
protected jsonUtil: JsonUtil;
|
||||||
@ -58,6 +69,27 @@ export declare class BotGeneratorHelper {
|
|||||||
* @returns Weapon with mods
|
* @returns Weapon with mods
|
||||||
*/
|
*/
|
||||||
generateModsForWeapon(sessionId: string, weapon: Item[], modPool: Mods, weaponParentId: string, parentTemplate: ITemplateItem, modSpawnChances: ModsChances, ammoTpl: string, botRole: string): Item[];
|
generateModsForWeapon(sessionId: string, weapon: Item[], modPool: Mods, weaponParentId: string, parentTemplate: ITemplateItem, modSpawnChances: ModsChances, ammoTpl: string, botRole: string): Item[];
|
||||||
|
/**
|
||||||
|
* Find mod tpls of a provided type and add to modPool
|
||||||
|
* @param desiredSlotName slot to look up and add we are adding tpls for (e.g mod_scope)
|
||||||
|
* @param modTemplate db object for modItem we get compatible mods from
|
||||||
|
* @param modPool Pool of mods we are adding to
|
||||||
|
*/
|
||||||
|
protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: Mods, botEquipBlacklist: EquipmentFilterDetails): void;
|
||||||
|
/**
|
||||||
|
* Check if mod item is on limited list + has surpassed the limit set for it
|
||||||
|
* @param botRole role the bot has e.g. assault
|
||||||
|
* @param modTpl mods tpl
|
||||||
|
* @param modLimits limits set for weapon being generated for this bot
|
||||||
|
* @returns true if over item limit
|
||||||
|
*/
|
||||||
|
protected modHasReachedItemLimit(botRole: string, modTpl: string, modLimits: BotModLimits): boolean;
|
||||||
|
/**
|
||||||
|
* Initalise mod limits to be used when generating the weapon
|
||||||
|
* @param botRole "assault", "bossTagilla" or "pmc"
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
protected initModLimits(botRole: string): BotModLimits;
|
||||||
/**
|
/**
|
||||||
* Generate a pool of mods for this bots mod type if bot has values inside `randomisedWeaponModSlots` array found in bot.json/equipment[botrole]
|
* Generate a pool of mods for this bots mod type if bot has values inside `randomisedWeaponModSlots` array found in bot.json/equipment[botrole]
|
||||||
* @param allowedMods Mods to be added to mod pool
|
* @param allowedMods Mods to be added to mod pool
|
||||||
@ -65,7 +97,21 @@ export declare class BotGeneratorHelper {
|
|||||||
* @param modSlot Slot to generate mods for
|
* @param modSlot Slot to generate mods for
|
||||||
* @param itemModPool base mod pool to replace values of
|
* @param itemModPool base mod pool to replace values of
|
||||||
*/
|
*/
|
||||||
protected generateDynamicModPool(allowedMods: string[], botEquipBlacklist: EquipmentFilterDetails, modSlot: string, itemModPool: Record<string, string[]>): void;
|
protected generateDynamicWeaponModPool(allowedMods: string[], botEquipBlacklist: EquipmentFilterDetails, modSlot: string, itemModPool: Record<string, string[]>): void;
|
||||||
|
/**
|
||||||
|
* Find all compatible mods for equipment item and add to modPool
|
||||||
|
* @param itemDetails item to find mods for
|
||||||
|
* @param modPool ModPool to add mods to
|
||||||
|
*/
|
||||||
|
generateDynamicModPool(itemDetails: ITemplateItem, modPool: Mods): void;
|
||||||
|
/**
|
||||||
|
* Take a list of tpls and filter out blacklisted values using itemFilterService + botEquipmentBlacklist
|
||||||
|
* @param allowedMods base mods to filter
|
||||||
|
* @param botEquipBlacklist equipment blacklist
|
||||||
|
* @param modSlot slot mods belong to
|
||||||
|
* @returns Filtered array of mod tpls
|
||||||
|
*/
|
||||||
|
protected filterWeaponModsByBlacklist(allowedMods: string[], botEquipBlacklist: EquipmentFilterDetails, modSlot: string): string[];
|
||||||
/**
|
/**
|
||||||
* Check if the specific item type on the weapon has reached the set limit
|
* Check if the specific item type on the weapon has reached the set limit
|
||||||
* @param modTpl item to check is limited
|
* @param modTpl item to check is limited
|
||||||
|
@ -13,11 +13,34 @@ export declare class BotHelper {
|
|||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(logger: ILogger, jsonUtil: JsonUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, configServer: ConfigServer);
|
constructor(logger: ILogger, jsonUtil: JsonUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, configServer: ConfigServer);
|
||||||
|
/**
|
||||||
|
* Get difficulty settings for desired bot type, if not found use assault bot types
|
||||||
|
* @param type bot type to retreive difficulty of
|
||||||
|
* @param difficulty difficulty to get settings for (easy/normal etc)
|
||||||
|
* @returns Difficulty object
|
||||||
|
*/
|
||||||
getBotDifficultySettings(type: string, difficulty: string): Difficulty;
|
getBotDifficultySettings(type: string, difficulty: string): Difficulty;
|
||||||
|
/**
|
||||||
|
* Get a template object for the specified botRole from bots.types db
|
||||||
|
* @param role botRole to get template for
|
||||||
|
* @returns IBotType object
|
||||||
|
*/
|
||||||
getBotTemplate(role: string): IBotType;
|
getBotTemplate(role: string): IBotType;
|
||||||
|
/**
|
||||||
|
* Get difficulty settings for a PMC
|
||||||
|
* @param type "usec" / "bear"
|
||||||
|
* @param difficulty what difficulty to retrieve
|
||||||
|
* @returns Difficulty object
|
||||||
|
*/
|
||||||
getPmcDifficultySettings(type: string, difficulty: string): Difficulty;
|
getPmcDifficultySettings(type: string, difficulty: string): Difficulty;
|
||||||
|
/**
|
||||||
|
* Choose a random difficulty from - easy/normal/hard/impossible
|
||||||
|
* @returns random difficulty
|
||||||
|
*/
|
||||||
|
chooseRandomDifficulty(): string;
|
||||||
/**
|
/**
|
||||||
* Randomise the chance the PMC will attack their own side
|
* Randomise the chance the PMC will attack their own side
|
||||||
|
* Look up value in bot.json/chanceSameSideIsHostilePercent
|
||||||
* @param difficultySettings pmc difficulty settings
|
* @param difficultySettings pmc difficulty settings
|
||||||
*/
|
*/
|
||||||
randomisePmcHostility(difficultySettings: Difficulty): void;
|
randomisePmcHostility(difficultySettings: Difficulty): void;
|
||||||
@ -31,7 +54,7 @@ export declare class BotHelper {
|
|||||||
*/
|
*/
|
||||||
addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void;
|
addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void;
|
||||||
/**
|
/**
|
||||||
* Add a bot to the ENEMY_BOT_TYPES array
|
* Add a bot to the ENEMY_BOT_TYPES array, do not add itself if its on the enemy list
|
||||||
* @param difficultySettings bot settings to alter
|
* @param difficultySettings bot settings to alter
|
||||||
* @param typesToAdd bot type to add to enemy list
|
* @param typesToAdd bot type to add to enemy list
|
||||||
*/
|
*/
|
||||||
@ -42,4 +65,10 @@ export declare class BotHelper {
|
|||||||
* @param typesToAdd bot type to add to revenge list
|
* @param typesToAdd bot type to add to revenge list
|
||||||
*/
|
*/
|
||||||
addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void;
|
addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void;
|
||||||
|
/**
|
||||||
|
* Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check
|
||||||
|
* @param botRole the bot role to check if should be a pmc
|
||||||
|
* @returns true if should be a pmc
|
||||||
|
*/
|
||||||
|
shouldBotBePmc(botRole: string): boolean;
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ declare class ItemHelper {
|
|||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseServer: DatabaseServer);
|
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseServer: DatabaseServer);
|
||||||
/**
|
/**
|
||||||
* Checks if a id is a valid item. Valid meaning that it's an item that be stored in stash
|
* Checks if an id is a valid item. Valid meaning that it's an item that be stored in stash
|
||||||
* @param {string} tpl the template id / tpl
|
* @param {string} tpl the template id / tpl
|
||||||
* @returns boolean; true for items that may be in player posession and not quest items
|
* @returns boolean; true for items that may be in player posession and not quest items
|
||||||
*/
|
*/
|
||||||
@ -79,6 +79,11 @@ declare class ItemHelper {
|
|||||||
* @returns {array} The array of StackSlotItems
|
* @returns {array} The array of StackSlotItems
|
||||||
*/
|
*/
|
||||||
generateItemsFromStackSlot(item: ITemplateItem, parentId: string): Item[];
|
generateItemsFromStackSlot(item: ITemplateItem, parentId: string): Item[];
|
||||||
|
/**
|
||||||
|
* Get cloned copy of all item data from items.json
|
||||||
|
* @returns array of ITemplateItem objects
|
||||||
|
*/
|
||||||
|
getItems(): ITemplateItem[];
|
||||||
/**
|
/**
|
||||||
* Gets item data from items.json
|
* Gets item data from items.json
|
||||||
* @param tpl items template id to look up
|
* @param tpl items template id to look up
|
||||||
|
@ -28,6 +28,8 @@ export interface IBotBase {
|
|||||||
CarExtractCounts: CarExtractCounts;
|
CarExtractCounts: CarExtractCounts;
|
||||||
SurvivorClass: SurvivorClass;
|
SurvivorClass: SurvivorClass;
|
||||||
WishList: string[];
|
WishList: string[];
|
||||||
|
/** SPT specific property used during bot generation in raid */
|
||||||
|
sptIsPmc?: boolean;
|
||||||
}
|
}
|
||||||
export interface Info {
|
export interface Info {
|
||||||
EntryPoint: string;
|
EntryPoint: string;
|
||||||
|
@ -80,7 +80,7 @@ export interface Props {
|
|||||||
HasShoulderContact?: boolean;
|
HasShoulderContact?: boolean;
|
||||||
SightingRange?: number;
|
SightingRange?: number;
|
||||||
DoubleActionAccuracyPenaltyMult?: number;
|
DoubleActionAccuracyPenaltyMult?: number;
|
||||||
ModesCount: any;
|
ModesCount?: any;
|
||||||
DurabilityBurnModificator?: number;
|
DurabilityBurnModificator?: number;
|
||||||
HeatFactor?: number;
|
HeatFactor?: number;
|
||||||
CoolFactor?: number;
|
CoolFactor?: number;
|
||||||
@ -156,7 +156,7 @@ export interface Props {
|
|||||||
RigLayoutName?: string;
|
RigLayoutName?: string;
|
||||||
MaxDurability?: number;
|
MaxDurability?: number;
|
||||||
armorZone?: string[];
|
armorZone?: string[];
|
||||||
armorClass: any;
|
armorClass?: any;
|
||||||
mousePenalty?: number;
|
mousePenalty?: number;
|
||||||
weaponErgonomicPenalty?: number;
|
weaponErgonomicPenalty?: number;
|
||||||
BluntThroughput?: number;
|
BluntThroughput?: number;
|
||||||
@ -254,8 +254,8 @@ export interface Props {
|
|||||||
foodUseTime?: number;
|
foodUseTime?: number;
|
||||||
foodEffectType?: string;
|
foodEffectType?: string;
|
||||||
StimulatorBuffs?: string;
|
StimulatorBuffs?: string;
|
||||||
effects_health: any;
|
effects_health?: any;
|
||||||
effects_damage: any;
|
effects_damage?: any;
|
||||||
MaximumNumberOfUsage?: number;
|
MaximumNumberOfUsage?: number;
|
||||||
knifeHitDelay?: number;
|
knifeHitDelay?: number;
|
||||||
knifeHitSlashRate?: number;
|
knifeHitSlashRate?: number;
|
||||||
|
@ -25,6 +25,7 @@ export declare enum BaseClasses {
|
|||||||
SIGHTS = "5448fe7a4bdc2d6f028b456b",
|
SIGHTS = "5448fe7a4bdc2d6f028b456b",
|
||||||
MEDS = "543be5664bdc2dd4348b4569",
|
MEDS = "543be5664bdc2dd4348b4569",
|
||||||
MONEY = "543be5dd4bdc2deb348b4569",
|
MONEY = "543be5dd4bdc2deb348b4569",
|
||||||
|
NIGHTVISION = "5a2c3a9486f774688b05e574",
|
||||||
KEY = "543be5e94bdc2df1348b4568",
|
KEY = "543be5e94bdc2df1348b4568",
|
||||||
KEY_MECHANICAL = "5c99f98d86f7745c314214b3",
|
KEY_MECHANICAL = "5c99f98d86f7745c314214b3",
|
||||||
KEYCARD = "5c164d2286f774194c5e69fa",
|
KEYCARD = "5c164d2286f774194c5e69fa",
|
||||||
@ -66,7 +67,6 @@ export declare enum BaseClasses {
|
|||||||
LUBRICANT = "57864e4c24597754843f8723",
|
LUBRICANT = "57864e4c24597754843f8723",
|
||||||
BATTERY = "57864ee62459775490116fc1",
|
BATTERY = "57864ee62459775490116fc1",
|
||||||
ASSAULT_SCOPE = "55818add4bdc2d5b648b456f",
|
ASSAULT_SCOPE = "55818add4bdc2d5b648b456f",
|
||||||
REFLEX_SIGHT = "55818ad54bdc2ddc698b4569",
|
|
||||||
TACTICAL_COMBO = "55818b164bdc2ddc698b456c",
|
TACTICAL_COMBO = "55818b164bdc2ddc698b456c",
|
||||||
FLASHLIGHT = "55818b084bdc2d5b648b4571",
|
FLASHLIGHT = "55818b084bdc2d5b648b4571",
|
||||||
MAGAZINE = "5448bc234bdc2d3c308b4569",
|
MAGAZINE = "5448bc234bdc2d3c308b4569",
|
||||||
|
151
TypeScript/13AddTrader/types/models/enums/WeaponTypes.d.ts
vendored
Normal file
151
TypeScript/13AddTrader/types/models/enums/WeaponTypes.d.ts
vendored
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
export declare enum Weapons127x55 {
|
||||||
|
ASH_12 = "5cadfbf7ae92152ac412eeef"
|
||||||
|
}
|
||||||
|
export declare enum Weapons86x70 {
|
||||||
|
MK_18 = "5fc22d7c187fea44d52eda44",
|
||||||
|
AXMC = "627e14b21713922ded6f2c15"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x39 {
|
||||||
|
AS_VAL = "57c44b372459772d2b39b8ce",
|
||||||
|
VSS_VINTOREZ = "57838ad32459774a17445cd2"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x54R {
|
||||||
|
SVDS = "5c46fbd72e2216398b5a8c9c",
|
||||||
|
MP_18 = "61f7c9e189e6fb1a5e3ea78d",
|
||||||
|
MOSIN_INFANTRY = "5bfd297f0db834001a669119",
|
||||||
|
MOSIN_SNIPER = "5ae08f0a5acfc408fb1398a1",
|
||||||
|
SV_98 = "55801eed4bdc2d89578b4588"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x51 {
|
||||||
|
VPO_101 = "5c501a4d2e221602b412b540",
|
||||||
|
DT_MDR_762 = "5dcbd56fdbd3d91b3e5468d5",
|
||||||
|
SA_58 = "5b0bbe4e5acfc40dc528a72d",
|
||||||
|
SCARH_BLACK = "6183afd850224f204c1da514",
|
||||||
|
SCARH_FDE = "6165ac306ef05c2ce828ef74",
|
||||||
|
HK_G28 = "6176aca650224f204c1da3fb",
|
||||||
|
M1A = "5aafa857e5b5b00018480968",
|
||||||
|
RFB = "5f2a9575926fd9352339381f",
|
||||||
|
RSASS = "5a367e5dc4a282000e49738f",
|
||||||
|
SR_25 = "5df8ce05b11454561e39243b",
|
||||||
|
DVL_10 = "588892092459774ac91d4b11",
|
||||||
|
M700 = "5bfea6e90db834001b7347f3",
|
||||||
|
T5000M = "5df24cf80dee1b22f862e9bc"
|
||||||
|
}
|
||||||
|
export declare enum Weapons366TKM {
|
||||||
|
VPO_209 = "59e6687d86f77411d949b251",
|
||||||
|
VPO_215 = "5de652c31b7e3716273428be"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x39 {
|
||||||
|
OP_SKS = "587e02ff24597743df3deaeb",
|
||||||
|
SKS = "574d967124597745970e7c94",
|
||||||
|
AK_103 = "5ac66d2e5acfc43b321d4b53",
|
||||||
|
AK_104 = "5ac66d725acfc43b321d4b60",
|
||||||
|
AKM = "59d6088586f774275f37482f",
|
||||||
|
AKMN = "5a0ec13bfcdbcb00165aa685",
|
||||||
|
AKMS = "59ff346386f77477562ff5e2",
|
||||||
|
AKMSN = "5abcbc27d8ce8700182eceeb",
|
||||||
|
MK47_MUTANT = "606587252535c57a13424cfd",
|
||||||
|
RD_704 = "628a60ae6b1d481ff772e9c8",
|
||||||
|
VPO_136 = "59e6152586f77473dc057aa1"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x35 {
|
||||||
|
MCX = "5fbcc1d9016cce60e8341ab3"
|
||||||
|
}
|
||||||
|
export declare enum Weapons556x45 {
|
||||||
|
ADAR_2_15 = "5c07c60e0db834002330051f",
|
||||||
|
AK_101 = "5ac66cb05acfc40198510a10",
|
||||||
|
AK_102 = "5ac66d015acfc400180ae6e4",
|
||||||
|
DT_MDR_556 = "5c488a752e221602b412af63",
|
||||||
|
HK_416A5 = "5bb2475ed4351e00853264e3",
|
||||||
|
HK_G36 = "623063e994fc3f7b302a9696",
|
||||||
|
M4A1 = "5447a9cd4bdc2dbd208b4567",
|
||||||
|
SCARL_BLACK = "6184055050224f204c1da540",
|
||||||
|
SCARL_FDE = "618428466ef05c2ce828f218",
|
||||||
|
TX15_DML = "5d43021ca4b9362eab4b5e25"
|
||||||
|
}
|
||||||
|
export declare enum Weapons545x39 {
|
||||||
|
AK_105 = "5ac66d9b5acfc4001633997a",
|
||||||
|
AK_74 = "5bf3e03b0db834001d2c4a9c",
|
||||||
|
AK_74M = "5ac4cd105acfc40016339859",
|
||||||
|
AK_74N = "5644bd2b4bdc2d3b4c8b4572",
|
||||||
|
AKS_74 = "5bf3e0490db83400196199af",
|
||||||
|
AKS_74N = "5ab8e9fcd8ce870019439434",
|
||||||
|
AKS_74U = "57dc2fa62459775949412633",
|
||||||
|
AKS_74UB = "5839a40f24597726f856b511",
|
||||||
|
AKS_74UN = "583990e32459771419544dd2",
|
||||||
|
SAG_AK = "628b5638ad252a16da6dd245",
|
||||||
|
SAG_AK_SHORT = "628b9c37a733087d0d7fe84b",
|
||||||
|
RPK_16 = "5beed0f50db834001c062b12"
|
||||||
|
}
|
||||||
|
export declare enum Weapons57x28FN {
|
||||||
|
FN_57_BLACK = "5d3eb3b0a4b93615055e84d2",
|
||||||
|
FN_57_FDE = "5d67abc1a4b93614ec50137f",
|
||||||
|
FN_P90 = "5cc82d76e24e8d00134b4b83"
|
||||||
|
}
|
||||||
|
export declare enum Weapons46x30HK {
|
||||||
|
MP7A1 = "5ba26383d4351e00334c93d9",
|
||||||
|
MP7A2 = "5bd70322209c4d00d7167b8f"
|
||||||
|
}
|
||||||
|
export declare enum Weapons1143x23 {
|
||||||
|
M1911A1 = "5e81c3cbac2bb513793cdc75",
|
||||||
|
M45A1 = "5f36a0e5fbf956000b716b65",
|
||||||
|
USP45 = "6193a720f8ee7e52e42109ed",
|
||||||
|
UMP45 = "5fc3e272f8b6a877a729eac5",
|
||||||
|
VECTOR45 = "5fb64bc92b1b027b1f50bcf2"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x33R {
|
||||||
|
CR_50DS = "61a4c8884f95bc3b2c5dc96f"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x21 {
|
||||||
|
SR_1MP = "59f98b4986f7746f546d2cef"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x19 {
|
||||||
|
GLOCK_17 = "5a7ae0c351dfba0017554310",
|
||||||
|
GLOCK_18C = "5b1fa9b25acfc40018633c01",
|
||||||
|
M9A3 = "5cadc190ae921500103bb3b6",
|
||||||
|
MP_443 = "576a581d2459771e7b1bc4f1",
|
||||||
|
P226R = "56d59856d2720bd8418b456a",
|
||||||
|
PL_15 = "602a9740da11d6478d5a06dc",
|
||||||
|
CR_200DS = "624c2e8614da335f1e034d8c",
|
||||||
|
MP5 = "5926bb2186f7744b1c6c6e60",
|
||||||
|
MP5K = "5d2f0d8048f0356c925bc3b0",
|
||||||
|
MP9 = "5e00903ae9dc277128008b87",
|
||||||
|
MP9_N = "5de7bd7bfd6b4e6e2276dc25",
|
||||||
|
MPX = "58948c8e86f77409493f7266",
|
||||||
|
PP_19_01 = "59984ab886f7743e98271174",
|
||||||
|
SAIGA_9 = "59f9cabd86f7743a10721f46",
|
||||||
|
STM_9 = "60339954d62c9b14ed777c06",
|
||||||
|
VECTOR_9MM = "5fc3f2d5900b1d5091531e57"
|
||||||
|
}
|
||||||
|
export declare enum Weapons9x18 {
|
||||||
|
APB = "5abccb7dd8ce87001773e277",
|
||||||
|
APS = "5a17f98cfcdbcb0980087290",
|
||||||
|
PB_SILENCED = "56e0598dd2720bb5668b45a6",
|
||||||
|
PM = "5448bd6b4bdc2dfc2f8b4569",
|
||||||
|
PM_T = "579204f224597773d619e051",
|
||||||
|
PP9_KLIN = "57f4c844245977379d5c14d1",
|
||||||
|
PP91_KEDR = "57d14d2524597714373db789",
|
||||||
|
PP91_KEDRB = "57f3c6bd24597738e730fa2f"
|
||||||
|
}
|
||||||
|
export declare enum Weapons762x25 {
|
||||||
|
TT = "571a12c42459771f627b58a0",
|
||||||
|
TT_GOLD = "5b3b713c5acfc4330140bd8d",
|
||||||
|
PPSH_41 = "5ea03f7400685063ec28bfa8"
|
||||||
|
}
|
||||||
|
export declare enum Weapons12Gauge {
|
||||||
|
M3_SUPER90 = "6259b864ebedf17603599e88",
|
||||||
|
M590A1 = "5e870397991fd70db46995c8",
|
||||||
|
M870 = "5a7828548dc32e5a9c28b516",
|
||||||
|
MP_133 = "54491c4f4bdc2db1078b4568",
|
||||||
|
MP_153 = "56dee2bdd2720bc8328b4567",
|
||||||
|
MP_155 = "606dae0ab0e443224b421bb7",
|
||||||
|
MP_43_1C = "5580223e4bdc2d1c128b457f",
|
||||||
|
MTS_255_12 = "60db29ce99594040e04c4a27",
|
||||||
|
SAIGA_12GA = "576165642459773c7a400233"
|
||||||
|
}
|
||||||
|
export declare enum Weapons20Gauge {
|
||||||
|
TOZ_106 = "5a38e6bac4a2826c6e06d79b"
|
||||||
|
}
|
||||||
|
export declare enum Weapons23x75 {
|
||||||
|
KS_23M = "5e848cc2988a8701445df1e8"
|
||||||
|
}
|
@ -65,6 +65,7 @@ export interface LootNvalue {
|
|||||||
export interface EquipmentFilters {
|
export interface EquipmentFilters {
|
||||||
weaponModLimits: ModLimits;
|
weaponModLimits: ModLimits;
|
||||||
randomisedWeaponModSlots?: string[];
|
randomisedWeaponModSlots?: string[];
|
||||||
|
randomisedArmorSlots?: string[];
|
||||||
blacklist: EquipmentFilterDetails[];
|
blacklist: EquipmentFilterDetails[];
|
||||||
whitelist: EquipmentFilterDetails[];
|
whitelist: EquipmentFilterDetails[];
|
||||||
}
|
}
|
||||||
|
@ -7,14 +7,18 @@ export interface IPmcConfig {
|
|||||||
looseWeaponInBackpackLootMinMax: MinMax;
|
looseWeaponInBackpackLootMinMax: MinMax;
|
||||||
isUsec: number;
|
isUsec: number;
|
||||||
chanceSameSideIsHostilePercent: number;
|
chanceSameSideIsHostilePercent: number;
|
||||||
usecType: string;
|
/** key: location, value: type for usec/bear */
|
||||||
bearType: string;
|
pmcType: Record<string, PmcTypes>;
|
||||||
maxBackpackLootTotalRub: number;
|
maxBackpackLootTotalRub: number;
|
||||||
maxPocketLootTotalRub: number;
|
maxPocketLootTotalRub: number;
|
||||||
maxVestLootTotalRub: number;
|
maxVestLootTotalRub: number;
|
||||||
convertIntoPmcChance: Record<string, MinMax>;
|
convertIntoPmcChance: Record<string, MinMax>;
|
||||||
enemyTypes: string[];
|
enemyTypes: string[];
|
||||||
}
|
}
|
||||||
|
export interface PmcTypes {
|
||||||
|
usec: string;
|
||||||
|
bear: string;
|
||||||
|
}
|
||||||
export interface DynamicLoot {
|
export interface DynamicLoot {
|
||||||
whitelist: string[];
|
whitelist: string[];
|
||||||
blacklist: string[];
|
blacklist: string[];
|
||||||
|
@ -39,6 +39,7 @@ export interface Dynamic {
|
|||||||
offerItemCount: MinMax;
|
offerItemCount: MinMax;
|
||||||
price: MinMax;
|
price: MinMax;
|
||||||
presetPrice: MinMax;
|
presetPrice: MinMax;
|
||||||
|
showDefaultPresetsOnly: boolean;
|
||||||
endTimeSeconds: MinMax;
|
endTimeSeconds: MinMax;
|
||||||
condition: Condition;
|
condition: Condition;
|
||||||
stackablePercent: MinMax;
|
stackablePercent: MinMax;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
export declare class LootItem {
|
export declare class LootItem {
|
||||||
|
id?: string;
|
||||||
tpl: string;
|
tpl: string;
|
||||||
isPreset: boolean;
|
isPreset: boolean;
|
||||||
stackCount: number;
|
stackCount: number;
|
||||||
|
47
TypeScript/13AddTrader/types/services/BotGenerationCacheService.d.ts
vendored
Normal file
47
TypeScript/13AddTrader/types/services/BotGenerationCacheService.d.ts
vendored
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import { BotHelper } from "../helpers/BotHelper";
|
||||||
|
import { IBotBase } from "../models/eft/common/tables/IBotBase";
|
||||||
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
|
export declare class BotGenerationCacheService {
|
||||||
|
protected logger: ILogger;
|
||||||
|
protected randomUtil: RandomUtil;
|
||||||
|
protected jsonUtil: JsonUtil;
|
||||||
|
protected botHelper: BotHelper;
|
||||||
|
protected storedBots: IBotBase[];
|
||||||
|
constructor(logger: ILogger, randomUtil: RandomUtil, jsonUtil: JsonUtil, botHelper: BotHelper);
|
||||||
|
/**
|
||||||
|
* Store array of bots in cache, shuffle results before storage
|
||||||
|
* @param botsToStore
|
||||||
|
*/
|
||||||
|
storeBots(botsToStore: IBotBase[]): void;
|
||||||
|
/**
|
||||||
|
* Find and return a bot based on its role
|
||||||
|
* Remove bot from internal array so it can't be retreived again
|
||||||
|
* @param role role to retreive (assault/bossTagilla etc)
|
||||||
|
* @returns IBotBase object
|
||||||
|
*/
|
||||||
|
getBot(role: string): IBotBase[];
|
||||||
|
/**
|
||||||
|
* Find a bot by its index from cache
|
||||||
|
* @param indexOfBotToReturn index to find bot by
|
||||||
|
* @returns bot profile
|
||||||
|
*/
|
||||||
|
protected getBotFromCache(indexOfBotToReturn: number): IBotBase;
|
||||||
|
/**
|
||||||
|
* Remove bot profile by index from cache
|
||||||
|
* @param indexOfBotToReturn Index of bot profile to remove
|
||||||
|
*/
|
||||||
|
protected removeBotFromCache(indexOfBotToReturn: number): void;
|
||||||
|
/**
|
||||||
|
* Get index of bot profile that matches criteria
|
||||||
|
* @param role role of bot we want
|
||||||
|
* @param getPmc is requested bot a pmc
|
||||||
|
* @returns index of found bot
|
||||||
|
*/
|
||||||
|
protected getIndexOfBotToReturn(role: string, getPmc: boolean): number;
|
||||||
|
/**
|
||||||
|
* Remove all cached bot profiles
|
||||||
|
*/
|
||||||
|
clearStoredBots(): void;
|
||||||
|
}
|
@ -34,6 +34,17 @@ export declare class BotLootCacheService {
|
|||||||
* @param isPmc Is the bot a PMC (alteres what loot is cached)
|
* @param isPmc Is the bot a PMC (alteres what loot is cached)
|
||||||
*/
|
*/
|
||||||
protected addLootToCache(botRole: string, isPmc: boolean, lootPool: Items): void;
|
protected addLootToCache(botRole: string, isPmc: boolean, lootPool: Items): void;
|
||||||
|
/**
|
||||||
|
* Sort a pool of item objects by its flea price
|
||||||
|
* @param poolToSort pool of items to sort
|
||||||
|
*/
|
||||||
|
protected sortPoolByRagfairPrice(poolToSort: ITemplateItem[]): void;
|
||||||
|
/**
|
||||||
|
* Add unique items into combined pool
|
||||||
|
* @param combinedItemPool Pool of items to add to
|
||||||
|
* @param itemsToAdd items to add to combined pool if unique
|
||||||
|
*/
|
||||||
|
protected addUniqueItemsToPool(combinedItemPool: ITemplateItem[], itemsToAdd: ITemplateItem[]): void;
|
||||||
/**
|
/**
|
||||||
* Ammo/grenades have this property
|
* Ammo/grenades have this property
|
||||||
* @param props
|
* @param props
|
||||||
|
@ -55,6 +55,17 @@ export declare class FenceService {
|
|||||||
* Replace a percentage of fence assorts with freshly generated items
|
* Replace a percentage of fence assorts with freshly generated items
|
||||||
*/
|
*/
|
||||||
performPartialRefresh(): void;
|
performPartialRefresh(): void;
|
||||||
|
/**
|
||||||
|
* Increment fence next refresh timestamp by current timestamp + partialRefreshTimeSeconds from config
|
||||||
|
*/
|
||||||
|
protected incrementPartialRefreshTime(): void;
|
||||||
|
/**
|
||||||
|
* Compare the current fence offer count to what the config wants it to be,
|
||||||
|
* If value is lower add extra count to value to generate more items to fill gap
|
||||||
|
* @param existingItemCountToReplace count of items to generate
|
||||||
|
* @returns number of items to generate
|
||||||
|
*/
|
||||||
|
protected getCountOfItemsToGenerate(existingItemCountToReplace: number): number;
|
||||||
/**
|
/**
|
||||||
* Choose an item (not mod) at random and remove from assorts
|
* Choose an item (not mod) at random and remove from assorts
|
||||||
*/
|
*/
|
||||||
|
27
TypeScript/13AddTrader/types/services/PmcAiService.d.ts
vendored
Normal file
27
TypeScript/13AddTrader/types/services/PmcAiService.d.ts
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
|
/** Storing/retreving pmcRoles set at the start of a raid - its done at that point as we know what location the player is heading to */
|
||||||
|
export declare class PmcAiService {
|
||||||
|
protected logger: ILogger;
|
||||||
|
protected configServer: ConfigServer;
|
||||||
|
protected botConfig: IBotConfig;
|
||||||
|
protected usecRole: string;
|
||||||
|
protected bearRole: string;
|
||||||
|
constructor(logger: ILogger, configServer: ConfigServer);
|
||||||
|
/**
|
||||||
|
* Convert from pmc side (usec/bear) to the side as defined in the bot config (usecType/bearType)
|
||||||
|
* @param pmcSide eft side (usec/bear)
|
||||||
|
* @returns pmc side as defined in config
|
||||||
|
*/
|
||||||
|
getPmcRole(pmcSide: "usec" | "bear" | string): string;
|
||||||
|
/**
|
||||||
|
* Set the roles for pmcs
|
||||||
|
* @param location map location to look up and use as pmc types
|
||||||
|
*/
|
||||||
|
setPmcRolesByLocation(location: string): void;
|
||||||
|
/**
|
||||||
|
* Clear the saved role from usec/bear PMCs
|
||||||
|
*/
|
||||||
|
clearPmcRoles(): void;
|
||||||
|
}
|
@ -136,7 +136,7 @@ export declare class RandomUtil {
|
|||||||
* Drawing can be with or without replacement
|
* Drawing can be with or without replacement
|
||||||
* @param {array} list The array we want to draw randomly from
|
* @param {array} list The array we want to draw randomly from
|
||||||
* @param {integer} count The number of times we want to draw
|
* @param {integer} count The number of times we want to draw
|
||||||
* @param {boolean} replacement Draw with ot without replacement from the input array
|
* @param {boolean} replacement Draw with or without replacement from the input array
|
||||||
* @return {array} Array consisting of N random elements
|
* @return {array} Array consisting of N random elements
|
||||||
*/
|
*/
|
||||||
drawRandomFromList<T>(list: Array<T>, count?: number, replacement?: boolean): Array<T>;
|
drawRandomFromList<T>(list: Array<T>, count?: number, replacement?: boolean): Array<T>;
|
||||||
|
@ -4,7 +4,7 @@ export declare class ContextVariable {
|
|||||||
private timestamp;
|
private timestamp;
|
||||||
private type;
|
private type;
|
||||||
constructor(value: any, type: ContextVariableType);
|
constructor(value: any, type: ContextVariableType);
|
||||||
getValue(): any;
|
getValue<T>(): T;
|
||||||
getTimestamp(): Date;
|
getTimestamp(): Date;
|
||||||
getType(): ContextVariableType;
|
getType(): ContextVariableType;
|
||||||
}
|
}
|
||||||
|
@ -5,15 +5,21 @@ import { IBotBase } from "../models/eft/common/tables/IBotBase";
|
|||||||
import { IBotCore } from "../models/eft/common/tables/IBotCore";
|
import { IBotCore } from "../models/eft/common/tables/IBotCore";
|
||||||
import { Difficulty } from "../models/eft/common/tables/IBotType";
|
import { Difficulty } from "../models/eft/common/tables/IBotType";
|
||||||
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
|
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";
|
||||||
|
import { BotGenerationCacheService } from "../services/BotGenerationCacheService";
|
||||||
|
import { PmcAiService } from "../services/PmcAiService";
|
||||||
export declare class BotController {
|
export declare class BotController {
|
||||||
|
protected logger: ILogger;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected botGenerator: BotGenerator;
|
protected botGenerator: BotGenerator;
|
||||||
protected botHelper: BotHelper;
|
protected botHelper: BotHelper;
|
||||||
|
protected pmcAiService: PmcAiService;
|
||||||
|
protected botGenerationCacheService: BotGenerationCacheService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, configServer: ConfigServer);
|
constructor(logger: ILogger, databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, pmcAiService: PmcAiService, botGenerationCacheService: BotGenerationCacheService, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* 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
|
||||||
@ -29,7 +35,7 @@ export declare class BotController {
|
|||||||
* @returns Difficulty object
|
* @returns Difficulty object
|
||||||
*/
|
*/
|
||||||
getBotDifficulty(type: string, difficulty: string): Difficulty;
|
getBotDifficulty(type: string, difficulty: string): Difficulty;
|
||||||
protected getPmcDifficultySettings(pmcType: "bear" | "usec", difficulty: string): Difficulty;
|
protected getPmcDifficultySettings(pmcType: "bear" | "usec", difficulty: string, usecType: string, bearType: string): Difficulty;
|
||||||
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
||||||
getBotCap(): number;
|
getBotCap(): number;
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,10 @@ import { IMatchConfig } from "../models/spt/config/IMatchConfig";
|
|||||||
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 { SaveServer } from "../servers/SaveServer";
|
import { SaveServer } from "../servers/SaveServer";
|
||||||
|
import { BotGenerationCacheService } from "../services/BotGenerationCacheService";
|
||||||
import { BotLootCacheService } from "../services/BotLootCacheService";
|
import { BotLootCacheService } from "../services/BotLootCacheService";
|
||||||
import { MatchLocationService } from "../services/MatchLocationService";
|
import { MatchLocationService } from "../services/MatchLocationService";
|
||||||
|
import { PmcAiService } from "../services/PmcAiService";
|
||||||
import { ProfileSnapshotService } from "../services/ProfileSnapshotService";
|
import { ProfileSnapshotService } from "../services/ProfileSnapshotService";
|
||||||
export declare class MatchController {
|
export declare class MatchController {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
@ -27,11 +29,13 @@ export declare class MatchController {
|
|||||||
protected botLootCacheService: BotLootCacheService;
|
protected botLootCacheService: BotLootCacheService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected profileSnapshotService: ProfileSnapshotService;
|
protected profileSnapshotService: ProfileSnapshotService;
|
||||||
|
protected pmcAiService: PmcAiService;
|
||||||
|
protected botGenerationCacheService: BotGenerationCacheService;
|
||||||
protected applicationContext: ApplicationContext;
|
protected applicationContext: ApplicationContext;
|
||||||
protected matchConfig: IMatchConfig;
|
protected matchConfig: IMatchConfig;
|
||||||
protected inraidConfig: IInRaidConfig;
|
protected inraidConfig: IInRaidConfig;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, matchLocationService: MatchLocationService, traderHelper: TraderHelper, botLootCacheService: BotLootCacheService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext);
|
constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, matchLocationService: MatchLocationService, traderHelper: TraderHelper, botLootCacheService: BotLootCacheService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, pmcAiService: PmcAiService, botGenerationCacheService: BotGenerationCacheService, applicationContext: ApplicationContext);
|
||||||
getEnabled(): boolean;
|
getEnabled(): boolean;
|
||||||
getProfile(info: IGetProfileRequestData): IPmcData[];
|
getProfile(info: IGetProfileRequestData): IPmcData[];
|
||||||
createGroup(sessionID: string, info: ICreateGroupRequestData): any;
|
createGroup(sessionID: string, info: ICreateGroupRequestData): any;
|
||||||
|
@ -9,6 +9,7 @@ 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";
|
||||||
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
||||||
|
import { PmcAiService } from "../services/PmcAiService";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
@ -30,9 +31,10 @@ export declare class BotGenerator {
|
|||||||
protected botEquipmentFilterService: BotEquipmentFilterService;
|
protected botEquipmentFilterService: BotEquipmentFilterService;
|
||||||
protected botHelper: BotHelper;
|
protected botHelper: BotHelper;
|
||||||
protected gameEventHelper: GameEventHelper;
|
protected gameEventHelper: GameEventHelper;
|
||||||
|
protected pmcAiService: PmcAiService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botEquipmentFilterService: BotEquipmentFilterService, botHelper: BotHelper, gameEventHelper: GameEventHelper, configServer: ConfigServer);
|
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botEquipmentFilterService: BotEquipmentFilterService, botHelper: BotHelper, gameEventHelper: GameEventHelper, pmcAiService: PmcAiService, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* Generate a player scav bot object
|
* Generate a player scav bot object
|
||||||
* @param role e.g. assault / pmcbot
|
* @param role e.g. assault / pmcbot
|
||||||
@ -41,13 +43,13 @@ export declare class BotGenerator {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
generatePlayerScav(sessionId: string, role: string, difficulty: string, botTemplate: IBotType): IBotBase;
|
generatePlayerScav(sessionId: string, role: string, difficulty: string, botTemplate: IBotType): IBotBase;
|
||||||
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
|
||||||
/**
|
/**
|
||||||
* Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check
|
* Generate an array of bot objects for populate a raid with
|
||||||
* @param botRole the bot role to check if should be a pmc
|
* @param sessionId session id
|
||||||
* @returns true if should be a pmc
|
* @param info request object
|
||||||
|
* @returns bot array
|
||||||
*/
|
*/
|
||||||
protected shouldBotBePmc(botRole: string): boolean;
|
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
||||||
/**
|
/**
|
||||||
* Get a randomised PMC side based on bot config value 'isUsec'
|
* Get a randomised PMC side based on bot config value 'isUsec'
|
||||||
* @returns pmc side as string
|
* @returns pmc side as string
|
||||||
@ -58,12 +60,30 @@ export declare class BotGenerator {
|
|||||||
* @returns IBotBase object
|
* @returns IBotBase object
|
||||||
*/
|
*/
|
||||||
protected getCloneOfBotBase(): IBotBase;
|
protected getCloneOfBotBase(): IBotBase;
|
||||||
|
/**
|
||||||
|
* Create a IBotBase object with equipment/loot/exp etc
|
||||||
|
* @param sessionId Session id
|
||||||
|
* @param bot bots base file
|
||||||
|
* @param role botRole bot will use
|
||||||
|
* @param node Bot template from db/bots/x.json
|
||||||
|
* @param isPmc Is bot to be a PMC
|
||||||
|
* @param isPlayerScav is bot to be a p scav bot
|
||||||
|
* @returns IBotBase object
|
||||||
|
*/
|
||||||
protected generateBot(sessionId: string, bot: IBotBase, role: string, node: IBotType, isPmc: boolean, isPlayerScav?: boolean): IBotBase;
|
protected generateBot(sessionId: string, bot: IBotBase, role: string, node: IBotType, isPmc: boolean, isPlayerScav?: boolean): IBotBase;
|
||||||
/**
|
/**
|
||||||
* Log the number of PMCs generated to the debug console
|
* Log the number of PMCs generated to the debug console
|
||||||
|
* @param output Generated bot array, ready to send to client
|
||||||
*/
|
*/
|
||||||
protected logPmcGeneratedCount(output: IBotBase[]): void;
|
protected logPmcGeneratedCount(output: IBotBase[]): void;
|
||||||
protected generateRandomLevel(min: number, max: number): BotGenerator.IRandomisedBotLevelResult;
|
/**
|
||||||
|
* Return a randomised bot level and exp value
|
||||||
|
* @param role botRole being generated for
|
||||||
|
* @param min Min exp value
|
||||||
|
* @param max Max exp value
|
||||||
|
* @returns IRandomisedBotLevelResult object
|
||||||
|
*/
|
||||||
|
protected generateRandomLevel(role: string, min: number, max: number): BotGenerator.IRandomisedBotLevelResult;
|
||||||
/**
|
/**
|
||||||
* Converts health object to the required format
|
* Converts health object to the required format
|
||||||
* @param healthObj health object from bot json
|
* @param healthObj health object from bot json
|
||||||
@ -72,19 +92,23 @@ export declare class BotGenerator {
|
|||||||
*/
|
*/
|
||||||
protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth;
|
protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth;
|
||||||
protected generateSkills(skillsObj: Skills): Skills;
|
protected generateSkills(skillsObj: Skills): Skills;
|
||||||
/**
|
|
||||||
* Convert from pmc side (usec/bear) to the side as defined in the bot config (usecType/bearType)
|
|
||||||
* @param pmcSide eft side (usec/bear)
|
|
||||||
* @returns pmc side as defined in config
|
|
||||||
*/
|
|
||||||
protected getPmcRole(pmcSide: string): string;
|
|
||||||
/**
|
/**
|
||||||
* Iterate through bots inventory and loot to find and remove christmas items (as defined in GameEventHelper)
|
* Iterate through bots inventory and loot to find and remove christmas items (as defined in GameEventHelper)
|
||||||
* @param nodeInventory Bots inventory to iterate over
|
* @param nodeInventory Bots inventory to iterate over
|
||||||
*/
|
*/
|
||||||
protected removeChristmasItemsFromBotInventory(nodeInventory: Inventory): void;
|
protected removeChristmasItemsFromBotInventory(nodeInventory: Inventory): void;
|
||||||
|
/**
|
||||||
|
* Generate a random Id for a bot and apply to bots _id and aid value
|
||||||
|
* @param bot bot to update
|
||||||
|
* @returns updated IBotBase object
|
||||||
|
*/
|
||||||
protected generateId(bot: IBotBase): IBotBase;
|
protected generateId(bot: IBotBase): IBotBase;
|
||||||
protected generateInventoryID(profile: IBotBase): IBotBase;
|
protected generateInventoryID(profile: IBotBase): IBotBase;
|
||||||
|
/**
|
||||||
|
* Get the difficulty passed in, if its not "asoline", get selected difficulty from config
|
||||||
|
* @param requestedDifficulty
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
protected getPMCDifficulty(requestedDifficulty: string): string;
|
protected getPMCDifficulty(requestedDifficulty: string): string;
|
||||||
/**
|
/**
|
||||||
* Add a side-specific (usec/bear) dogtag item to a bots inventory
|
* Add a side-specific (usec/bear) dogtag item to a bots inventory
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user