diff --git a/project/src/controllers/BotController.ts b/project/src/controllers/BotController.ts index ef4bf370..933ed422 100644 --- a/project/src/controllers/BotController.ts +++ b/project/src/controllers/BotController.ts @@ -24,6 +24,7 @@ import { LocalisationService } from "@spt-aki/services/LocalisationService"; import { MatchBotDetailsCacheService } from "@spt-aki/services/MatchBotDetailsCacheService"; import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService"; import { JsonUtil } from "@spt-aki/utils/JsonUtil"; +import { RandomUtil } from "@spt-aki/utils/RandomUtil"; @injectable() export class BotController @@ -44,6 +45,7 @@ export class BotController @inject("ProfileHelper") protected profileHelper: ProfileHelper, @inject("ConfigServer") protected configServer: ConfigServer, @inject("ApplicationContext") protected applicationContext: ApplicationContext, + @inject("RandomUtil") protected randomUtil: RandomUtil, @inject("JsonUtil") protected jsonUtil: JsonUtil, ) { @@ -171,11 +173,13 @@ export class BotController side: "Savage", role: condition.Role, playerLevel: pmcProfile.Info.Level, + playerName: pmcProfile.Info.Nickname, botRelativeLevelDeltaMax: this.pmcConfig.botRelativeLevelDeltaMax, botRelativeLevelDeltaMin: this.pmcConfig.botRelativeLevelDeltaMin, botCountToGenerate: this.botConfig.presetBatch[condition.Role], botDifficulty: condition.Difficulty, isPlayerScav: false, + allPmcsHaveSameNameAsPlayer: this.randomUtil.getChance100(this.pmcConfig.allPMCsHavePlayerNameWithRandomPrefixChance) }; // Event bots need special actions to occur, set data up for them @@ -240,6 +244,7 @@ export class BotController side: "Savage", role: requestedBot.Role, playerLevel: pmcProfile.Info.Level, + playerName: pmcProfile.Info.Nickname, botRelativeLevelDeltaMax: this.pmcConfig.botRelativeLevelDeltaMax, botRelativeLevelDeltaMin: this.pmcConfig.botRelativeLevelDeltaMin, botCountToGenerate: this.botConfig.presetBatch[requestedBot.Role], diff --git a/project/src/controllers/GameController.ts b/project/src/controllers/GameController.ts index cfe89bca..fdc8d0bf 100644 --- a/project/src/controllers/GameController.ts +++ b/project/src/controllers/GameController.ts @@ -221,16 +221,6 @@ export class GameController { this.addPlayerToPMCNames(pmcProfile); - if (this.randomUtil.getChance100(this.pmcConfig.allPMCsHavePlayerNameWithRandomPrefixChance)) - { - this.pmcConfig.addPrefixToSameNamePMCAsPlayerChance = 100; - if (pmcProfile?.Info?.Nickname) - { - this.databaseServer.getTables().bots.types.bear.firstName = [pmcProfile.Info.Nickname]; - this.databaseServer.getTables().bots.types.usec.firstName = [pmcProfile.Info.Nickname]; - } - } - this.checkForAndRemoveUndefinedDialogs(fullProfile); } diff --git a/project/src/generators/BotGenerator.ts b/project/src/generators/BotGenerator.ts index b45fe1de..9de74c18 100644 --- a/project/src/generators/BotGenerator.ts +++ b/project/src/generators/BotGenerator.ts @@ -81,7 +81,6 @@ export class BotGenerator isPmc: false, side: "Savage", role: role, - playerLevel: 0, botRelativeLevelDeltaMax: 0, botRelativeLevelDeltaMin: 0, botCountToGenerate: 1, @@ -164,7 +163,7 @@ export class BotGenerator bot.Info.Nickname = this.generateBotNickname( botJsonTemplate, - botGenerationDetails.isPlayerScav, + botGenerationDetails, botRole, sessionId, ); @@ -247,17 +246,19 @@ export class BotGenerator /** * Create a bot nickname * @param botJsonTemplate x.json from database - * @param isPlayerScav Will bot be player scav + * @param botGenerationDetails * @param botRole role of bot e.g. assault * @returns Nickname for bot */ protected generateBotNickname( botJsonTemplate: IBotType, - isPlayerScav: boolean, + botGenerationDetails: BotGenerationDetails, botRole: string, sessionId: string, ): string { + const isPlayerScav = botGenerationDetails.isPlayerScav; + let name = `${this.randomUtil.getArrayValue(botJsonTemplate.firstName)} ${ this.randomUtil.getArrayValue(botJsonTemplate.lastName) || "" }`; @@ -285,14 +286,11 @@ export class BotGenerator name += ` ${botRole}`; } - // If bot name matches current players name, chance to add localised prefix to name - if (name.toLowerCase() === playerProfile.Info.Nickname.toLowerCase()) + // We want to replace pmc bot names with player name + prefix + if (botGenerationDetails.isPmc && botGenerationDetails.allPmcsHaveSameNameAsPlayer) { - if (this.randomUtil.getChance100(this.pmcConfig.addPrefixToSameNamePMCAsPlayerChance)) - { - const prefix = this.localisationService.getRandomTextThatMatchesPartialKey("pmc-name_prefix_"); - name = `${prefix} ${name}`; - } + const prefix = this.localisationService.getRandomTextThatMatchesPartialKey("pmc-name_prefix_"); + name = `${prefix} ${botGenerationDetails.playerName}`; } return name; diff --git a/project/src/models/spt/bots/BotGenerationDetails.ts b/project/src/models/spt/bots/BotGenerationDetails.ts index c1158ebb..7af2b2fe 100644 --- a/project/src/models/spt/bots/BotGenerationDetails.ts +++ b/project/src/models/spt/bots/BotGenerationDetails.ts @@ -7,7 +7,8 @@ export interface BotGenerationDetails /** Side of bot */ side: string; /** Active players current level */ - playerLevel: number; + playerLevel?: number; + playerName?: string; /** Delta of highest level of bot e.g. 50 means 50 levels above player */ botRelativeLevelDeltaMax: number; /** Delta of lowest level of bot e.g. 50 means 50 levels below player */ @@ -19,4 +20,5 @@ export interface BotGenerationDetails /** Will the generated bot be a player scav */ isPlayerScav: boolean; eventRole?: string; + allPmcsHaveSameNameAsPlayer?: boolean; } diff --git a/project/src/models/spt/config/IPmcConfig.ts b/project/src/models/spt/config/IPmcConfig.ts index c57276ca..f785c77c 100644 --- a/project/src/models/spt/config/IPmcConfig.ts +++ b/project/src/models/spt/config/IPmcConfig.ts @@ -48,7 +48,6 @@ export interface IPmcConfig extends IBaseConfig botRelativeLevelDeltaMin: number; /** Force a number of healing items into PMCs secure container to ensure they can heal */ forceHealingItemsIntoSecure: boolean; - addPrefixToSameNamePMCAsPlayerChance: number; allPMCsHavePlayerNameWithRandomPrefixChance: number; }