From 797d75fd4f7f1b7c49ea65a319a1dbb4f474d931 Mon Sep 17 00:00:00 2001 From: Dev Date: Thu, 25 Jul 2024 10:34:54 +0100 Subject: [PATCH] Added a weighting bias to the level chosen for bots, favors the higher value --- project/src/generators/BotEquipmentModGenerator.ts | 1 + project/src/generators/BotLevelGenerator.ts | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/project/src/generators/BotEquipmentModGenerator.ts b/project/src/generators/BotEquipmentModGenerator.ts index e2c6448d..01a81647 100644 --- a/project/src/generators/BotEquipmentModGenerator.ts +++ b/project/src/generators/BotEquipmentModGenerator.ts @@ -183,6 +183,7 @@ export class BotEquipmentModGenerator { continue; } + // Get chosen mods db template and check it fits into slot const modTemplate = this.itemHelper.getItem(modTpl); if (!this.isModValidForSlot(modTemplate, itemSlotTemplate, modSlotName, parentTemplate, settings.botRole)) { continue; diff --git a/project/src/generators/BotLevelGenerator.ts b/project/src/generators/BotLevelGenerator.ts index 47f2755e..dcd33b62 100644 --- a/project/src/generators/BotLevelGenerator.ts +++ b/project/src/generators/BotLevelGenerator.ts @@ -4,6 +4,7 @@ import { IBotBase } from "@spt/models/eft/common/tables/IBotBase"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { DatabaseService } from "@spt/services/DatabaseService"; +import { MathUtil } from "@spt/utils/MathUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { inject, injectable } from "tsyringe"; @@ -13,6 +14,7 @@ export class BotLevelGenerator { @inject("PrimaryLogger") protected logger: ILogger, @inject("RandomUtil") protected randomUtil: RandomUtil, @inject("DatabaseService") protected databaseService: DatabaseService, + @inject("MathUtil") protected mathUtil: MathUtil, ) {} /** @@ -33,8 +35,7 @@ export class BotLevelGenerator { // Get random level based on the exp table. let exp = 0; - const level = this.randomUtil.getInt(lowestLevel, highestLevel); - + const level = this.chooseBotLevel(lowestLevel, highestLevel, 1, 1.15); for (let i = 0; i < level; i++) { exp += expTable[i].exp; } @@ -47,6 +48,10 @@ export class BotLevelGenerator { return { level, exp }; } + protected chooseBotLevel(min: number, max: number, shift: number, number: number): number { + return this.randomUtil.getBiasedRandomNumber(min, max, shift, number); + } + /** * Get the highest level a bot can be relative to the players level, but no further than the max size from globals.exp_table * @param botGenerationDetails Details to help generate a bot