diff --git a/project/assets/database/locations/tarkovstreets/base.json b/project/assets/database/locations/tarkovstreets/base.json index 8c527d52..9b1e62d1 100644 --- a/project/assets/database/locations/tarkovstreets/base.json +++ b/project/assets/database/locations/tarkovstreets/base.json @@ -41,24 +41,6 @@ } ], "BossLocationSpawn": [ - { - "BossChance": 25, - "BossDifficult": "normal", - "BossEscortAmount": "0", - "BossEscortDifficult": "normal", - "BossEscortType": "pmcBot", - "BossName": "gifter", - "BossPlayer": false, - "BossZone": "ZoneConcordiaParking,ZoneHotel_2,ZoneFactory,ZoneCinema", - "Delay": 0, - "ForceSpawn": false, - "IgnoreMaxBots": false, - "RandomTimeSpawn": false, - "Supports": [], - "Time": -1, - "TriggerId": "", - "TriggerName": "" - }, { "BossChance": 11, "BossDifficult": "normal", @@ -13579,162 +13561,5 @@ "users_spawn_seconds_n": 120, "users_spawn_seconds_n2": 200, "users_summon_seconds": 0, - "waves": [ - { - "BotPreset": "normal", - "BotSide": "Savage", - "SpawnPoints": "ZoneSW00", - "WildSpawnType": "assault", - "isPlayers": false, - "number": 0, - "slots_max": 4, - "slots_min": 3, - "time_max": 10, - "time_min": 1 - }, - { - "BotPreset": "hard", - "BotSide": "Savage", - "SpawnPoints": "ZoneCarShowroom", - "WildSpawnType": "assault", - "isPlayers": true, - "number": 1, - "slots_max": 3, - "slots_min": 2, - "time_max": 40, - "time_min": 10 - }, - { - "BotPreset": "normal", - "BotSide": "Savage", - "SpawnPoints": "ZoneStilo", - "WildSpawnType": "assault", - "isPlayers": true, - "number": 2, - "slots_max": 4, - "slots_min": 3, - "time_max": 50, - "time_min": 10 - }, - { - "BotPreset": "hard", - "BotSide": "Savage", - "SpawnPoints": "ZoneSnipeStilo", - "WildSpawnType": "marksman", - "isPlayers": false, - "number": 3, - "slots_max": 1, - "slots_min": 1, - "time_max": 120, - "time_min": 1 - }, - { - "BotPreset": "hard", - "BotSide": "Savage", - "SpawnPoints": "ZoneCard1", - "WildSpawnType": "assault", - "isPlayers": true, - "number": 4, - "slots_max": 4, - "slots_min": 2, - "time_max": 60, - "time_min": 20 - }, - { - "BotPreset": "hard", - "BotSide": "Savage", - "SpawnPoints": "ZoneSnipeCard", - "WildSpawnType": "marksman", - "isPlayers": false, - "number": 5, - "slots_max": 1, - "slots_min": 1, - "time_max": 120, - "time_min": 1 - }, - { - "BotPreset": "normal", - "BotSide": "Savage", - "SpawnPoints": "ZoneHotel_1", - "WildSpawnType": "assault", - "isPlayers": true, - "number": 6, - "slots_max": 3, - "slots_min": 2, - "time_max": 90, - "time_min": 50 - }, - { - "BotPreset": "hard", - "BotSide": "Savage", - "SpawnPoints": "ZoneSnipeBuilding", - "WildSpawnType": "marksman", - "isPlayers": false, - "number": 7, - "slots_max": 1, - "slots_min": 1, - "time_max": 120, - "time_min": 1 - }, - { - "BotPreset": "hard", - "BotSide": "Savage", - "SpawnPoints": "ZoneSnipeSW01", - "WildSpawnType": "marksman", - "isPlayers": false, - "number": 8, - "slots_max": 1, - "slots_min": 1, - "time_max": 120, - "time_min": 1 - }, - { - "BotPreset": "hard", - "BotSide": "Savage", - "SpawnPoints": "ZoneSW01", - "WildSpawnType": "assault", - "isPlayers": true, - "number": 9, - "slots_max": 4, - "slots_min": 1, - "time_max": 90, - "time_min": 40 - }, - { - "BotPreset": "hard", - "BotSide": "Savage", - "SpawnPoints": "ZoneConstruction", - "WildSpawnType": "assault", - "isPlayers": false, - "number": 10, - "slots_max": 4, - "slots_min": 1, - "time_max": 100, - "time_min": 70 - }, - { - "BotPreset": "normal", - "BotSide": "Savage", - "SpawnPoints": "ZoneHotel_2", - "WildSpawnType": "assault", - "isPlayers": false, - "number": 11, - "slots_max": 3, - "slots_min": 2, - "time_max": 110, - "time_min": 80 - }, - { - "BotPreset": "hard", - "BotSide": "Savage", - "SpawnPoints": "ZoneConcordia_1", - "WildSpawnType": "assault", - "isPlayers": true, - "number": 12, - "slots_max": 4, - "slots_min": 2, - "time_max": 120, - "time_min": 110 - } - ] + "waves": [] } diff --git a/project/src/controllers/GameController.ts b/project/src/controllers/GameController.ts index b896a2aa..cfe89bca 100644 --- a/project/src/controllers/GameController.ts +++ b/project/src/controllers/GameController.ts @@ -22,6 +22,7 @@ import { AccountTypes } from "@spt-aki/models/enums/AccountTypes"; import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes"; import { SkillTypes } from "@spt-aki/models/enums/SkillTypes"; import { Traders } from "@spt-aki/models/enums/Traders"; +import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig"; import { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig"; import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig"; @@ -54,6 +55,7 @@ export class GameController protected ragfairConfig: IRagfairConfig; protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; + protected botConfig: IBotConfig; constructor( @inject("WinstonLogger") protected logger: ILogger, @@ -84,6 +86,7 @@ export class GameController this.ragfairConfig = this.configServer.getConfig(ConfigTypes.RAGFAIR); this.pmcConfig = this.configServer.getConfig(ConfigTypes.PMC); this.lootConfig = this.configServer.getConfig(ConfigTypes.LOOT); + this.botConfig = this.configServer.getConfig(ConfigTypes.BOT); } public load(): void @@ -127,6 +130,8 @@ export class GameController this.checkTraderRepairValuesExist(); + this.adjustLocationBotValues() + // repeatableQuests are stored by in profile.Quests due to the responses of the client (e.g. Quests in // offraidData). Since we don't want to clutter the Quests list, we need to remove all completed (failed or // successful) repeatable quests. We also have to remove the Counters from the repeatableQuests @@ -247,6 +252,25 @@ export class GameController } } + protected adjustLocationBotValues(): void + { + const mapsDb = this.databaseServer.getTables().locations; + + for (const locationKey in this.botConfig.maxBotCap) + { + const map: ILocationData = mapsDb[locationKey]; + if (!map) + { + continue; + } + + map.base.BotMax = this.botConfig.maxBotCap[locationKey]; + + // make values no larger than 30 secs + map.base.BotStart = Math.min(map.base.BotStart, 30); + } + } + /** * Out of date/incorrectly made trader mods forget this data */