Bot wave adjustments

Remove gifter from streets
Remove manual waves from streets
This commit is contained in:
Dev 2024-01-24 19:49:42 +00:00
parent 5d0ffd93d2
commit 7d734a18f1
2 changed files with 25 additions and 176 deletions

View File

@ -41,24 +41,6 @@
} }
], ],
"BossLocationSpawn": [ "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, "BossChance": 11,
"BossDifficult": "normal", "BossDifficult": "normal",
@ -13579,162 +13561,5 @@
"users_spawn_seconds_n": 120, "users_spawn_seconds_n": 120,
"users_spawn_seconds_n2": 200, "users_spawn_seconds_n2": 200,
"users_summon_seconds": 0, "users_summon_seconds": 0,
"waves": [ "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
}
]
} }

View File

@ -22,6 +22,7 @@ import { AccountTypes } from "@spt-aki/models/enums/AccountTypes";
import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes"; import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes";
import { SkillTypes } from "@spt-aki/models/enums/SkillTypes"; import { SkillTypes } from "@spt-aki/models/enums/SkillTypes";
import { Traders } from "@spt-aki/models/enums/Traders"; 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 { ICoreConfig } from "@spt-aki/models/spt/config/ICoreConfig";
import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig"; import { IHttpConfig } from "@spt-aki/models/spt/config/IHttpConfig";
import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig"; import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig";
@ -54,6 +55,7 @@ export class GameController
protected ragfairConfig: IRagfairConfig; protected ragfairConfig: IRagfairConfig;
protected pmcConfig: IPmcConfig; protected pmcConfig: IPmcConfig;
protected lootConfig: ILootConfig; protected lootConfig: ILootConfig;
protected botConfig: IBotConfig;
constructor( constructor(
@inject("WinstonLogger") protected logger: ILogger, @inject("WinstonLogger") protected logger: ILogger,
@ -84,6 +86,7 @@ export class GameController
this.ragfairConfig = this.configServer.getConfig(ConfigTypes.RAGFAIR); this.ragfairConfig = this.configServer.getConfig(ConfigTypes.RAGFAIR);
this.pmcConfig = this.configServer.getConfig(ConfigTypes.PMC); this.pmcConfig = this.configServer.getConfig(ConfigTypes.PMC);
this.lootConfig = this.configServer.getConfig(ConfigTypes.LOOT); this.lootConfig = this.configServer.getConfig(ConfigTypes.LOOT);
this.botConfig = this.configServer.getConfig(ConfigTypes.BOT);
} }
public load(): void public load(): void
@ -127,6 +130,8 @@ export class GameController
this.checkTraderRepairValuesExist(); this.checkTraderRepairValuesExist();
this.adjustLocationBotValues()
// repeatableQuests are stored by in profile.Quests due to the responses of the client (e.g. Quests in // 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 // 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 // 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 * Out of date/incorrectly made trader mods forget this data
*/ */