import { MinMaxWithWhitelist } from "../../../models/eft/common/tables/IBotType"; import { MinMax } from "../../common/MinMax"; import { IBaseConfig } from "./IBaseConfig"; import { IBotDurability } from "./IBotDurability"; import { IPmcConfig } from "./IPmcConfig"; export interface IBotConfig extends IBaseConfig { kind: "aki-bot" /** How many variants of each bot should be generated on raid start */ presetBatch: PresetBatch /** What bot types should be classified as bosses */ bosses: string[] /** Control weapon/armor durability min/max values for each bot type */ durability: IBotDurability /** Control the weighting of how expensive an average loot item is on a PMC or Scav */ lootNValue: LootNvalue /** Control what bots are added to a bots revenge list key: bottype, value: bottypes to revenge on seeing their death */ revenge: Record /** PMC bot specific config settings */ pmc: IPmcConfig /** Control how many items are allowed to spawn on a bot * key: bottype, value: */ itemSpawnLimits: Record> /** Blacklist/whitelist items on a bot */ equipment: Record /** Show a bots botType value after their name */ showTypeInNickname: boolean /** Max number of bots that can be spawned in a raid at any one time */ maxBotCap: Record chanceAssaultScavHasPlayerScavName: number; /** How many stacks of secret ammo should a bot have in its bot secure container */ secureContainerAmmoStackCount: number /** Batch generation size when type not available in cache */ botGenerationBatchSizePerType: number } export interface PresetBatch { assault: number bossBully: number bossGluhar: number bossKilla: number bossKojaniy: number bossSanitar: number bossTagilla: number bossKnight: number bossTest: number cursedAssault: number followerBully: number followerGluharAssault: number followerGluharScout: number followerGluharSecurity: number followerGluharSnipe: number followerKojaniy: number followerSanitar: number followerTagilla: number followerBirdEye: number followerBigPipe: number followerTest: number marksman: number pmcBot: number sectantPriest: number sectantWarrior: number gifter: number test: number exUsec: number } export interface LootNvalue { scav: number pmc: number } export interface EquipmentFilters { weaponModLimits: ModLimits weaponSightWhitelist: Record faceShieldIsActiveChancePercent?: number; lightIsActiveDayChancePercent?: number; lightIsActiveNightChancePercent?: number; laserIsActiveChancePercent?: number; nvgIsActiveChancePercent?: number; randomisation: RandomisationDetails[] blacklist: EquipmentFilterDetails[] whitelist: EquipmentFilterDetails[] clothing: WeightingAdjustmentDetails[] weightingAdjustments: WeightingAdjustmentDetails[] } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ scopeLimit?: number /** How many lasers or lights are allowed on a weapon - hard coded to work with TACTICAL_COMBO, and FLASHLIGHT */ lightLaserLimit?: number } export interface RandomisationDetails { levelRange: MinMax generation?: Record randomisedWeaponModSlots?: string[] randomisedArmorSlots?: string[] /** Equipment chances */ equipment?: Record /** Modc chances */ mods?: Record } export interface EquipmentFilterDetails { levelRange: MinMax equipment: Record cartridge: Record } export interface WeightingAdjustmentDetails { levelRange: MinMax ammo?: AdjustmentDetails equipment?: AdjustmentDetails clothing?: AdjustmentDetails } export interface AdjustmentDetails { add: Record> edit: Record> }