@@ -9,6 +9,7 @@ import { ILogger } from "../models/spt/utils/ILogger";
99import { ConfigServer } from "../servers/ConfigServer" ;
1010import { DatabaseServer } from "../servers/DatabaseServer" ;
1111import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService" ;
12+ import { PmcAiService } from "../services/PmcAiService" ;
1213import { HashUtil } from "../utils/HashUtil" ;
1314import { JsonUtil } from "../utils/JsonUtil" ;
1415import { RandomUtil } from "../utils/RandomUtil" ;
@@ -30,9 +31,10 @@ export declare class BotGenerator {
3031 protected botEquipmentFilterService : BotEquipmentFilterService ;
3132 protected botHelper : BotHelper ;
3233 protected gameEventHelper : GameEventHelper ;
34+ protected pmcAiService : PmcAiService ;
3335 protected configServer : ConfigServer ;
3436 protected botConfig : IBotConfig ;
35- constructor ( logger : ILogger , hashUtil : HashUtil , randomUtil : RandomUtil , jsonUtil : JsonUtil , profileHelper : ProfileHelper , databaseServer : DatabaseServer , botInventoryGenerator : BotInventoryGenerator , botEquipmentFilterService : BotEquipmentFilterService , botHelper : BotHelper , gameEventHelper : GameEventHelper , configServer : ConfigServer ) ;
37+ 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 ) ;
3638 /**
3739 * Generate a player scav bot object
3840 * @param role e.g. assault / pmcbot
@@ -41,13 +43,13 @@ export declare class BotGenerator {
4143 * @returns
4244 */
4345 generatePlayerScav ( sessionId : string , role : string , difficulty : string , botTemplate : IBotType ) : IBotBase ;
44- generate ( sessionId : string , info : IGenerateBotsRequestData ) : IBotBase [ ] ;
4546 /**
46- * 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
47- * @param botRole the bot role to check if should be a pmc
48- * @returns true if should be a pmc
47+ * Generate an array of bot objects for populate a raid with
48+ * @param sessionId session id
49+ * @param info request object
50+ * @returns bot array
4951 */
50- protected shouldBotBePmc ( botRole : string ) : boolean ;
52+ generate ( sessionId : string , info : IGenerateBotsRequestData ) : IBotBase [ ] ;
5153 /**
5254 * Get a randomised PMC side based on bot config value 'isUsec'
5355 * @returns pmc side as string
@@ -58,12 +60,30 @@ export declare class BotGenerator {
5860 * @returns IBotBase object
5961 */
6062 protected getCloneOfBotBase ( ) : IBotBase ;
63+ /**
64+ * Create a IBotBase object with equipment/loot/exp etc
65+ * @param sessionId Session id
66+ * @param bot bots base file
67+ * @param role botRole bot will use
68+ * @param node Bot template from db/bots/x.json
69+ * @param isPmc Is bot to be a PMC
70+ * @param isPlayerScav is bot to be a p scav bot
71+ * @returns IBotBase object
72+ */
6173 protected generateBot ( sessionId : string , bot : IBotBase , role : string , node : IBotType , isPmc : boolean , isPlayerScav ?: boolean ) : IBotBase ;
6274 /**
6375 * Log the number of PMCs generated to the debug console
76+ * @param output Generated bot array, ready to send to client
6477 */
6578 protected logPmcGeneratedCount ( output : IBotBase [ ] ) : void ;
66- protected generateRandomLevel ( min : number , max : number ) : BotGenerator . IRandomisedBotLevelResult ;
79+ /**
80+ * Return a randomised bot level and exp value
81+ * @param role botRole being generated for
82+ * @param min Min exp value
83+ * @param max Max exp value
84+ * @returns IRandomisedBotLevelResult object
85+ */
86+ protected generateRandomLevel ( role : string , min : number , max : number ) : BotGenerator . IRandomisedBotLevelResult ;
6787 /**
6888 * Converts health object to the required format
6989 * @param healthObj health object from bot json
@@ -72,19 +92,23 @@ export declare class BotGenerator {
7292 */
7393 protected generateHealth ( healthObj : Health , playerScav ?: boolean ) : PmcHealth ;
7494 protected generateSkills ( skillsObj : Skills ) : Skills ;
75- /**
76- * Convert from pmc side (usec/bear) to the side as defined in the bot config (usecType/bearType)
77- * @param pmcSide eft side (usec/bear)
78- * @returns pmc side as defined in config
79- */
80- protected getPmcRole ( pmcSide : string ) : string ;
8195 /**
8296 * Iterate through bots inventory and loot to find and remove christmas items (as defined in GameEventHelper)
8397 * @param nodeInventory Bots inventory to iterate over
8498 */
8599 protected removeChristmasItemsFromBotInventory ( nodeInventory : Inventory ) : void ;
100+ /**
101+ * Generate a random Id for a bot and apply to bots _id and aid value
102+ * @param bot bot to update
103+ * @returns updated IBotBase object
104+ */
86105 protected generateId ( bot : IBotBase ) : IBotBase ;
87106 protected generateInventoryID ( profile : IBotBase ) : IBotBase ;
107+ /**
108+ * Get the difficulty passed in, if its not "asoline", get selected difficulty from config
109+ * @param requestedDifficulty
110+ * @returns
111+ */
88112 protected getPMCDifficulty ( requestedDifficulty : string ) : string ;
89113 /**
90114 * Add a side-specific (usec/bear) dogtag item to a bots inventory
0 commit comments