Note: This mod is for the server only, because its a mutator. Please do not subscribe to it on your client-side.
The goal of this mod is to improve the AI to make the coop has better experience and better gameplay.
You will be able to fully customize the configs and settings of this mod. We will see if we can change the AI and improve them like making them peek while they are behind the cover. They will know how to change their position and give themselves a better position to target the player. They will know when to use grenade at the right time and call for support and such.
All configs will go in your game.ini and under the line
You do not have to put all the configs. Only use the config you want to change the default value to something you want. The configs that aren't present in your game.ini file, it will be automatic use the default value below.
The BotSkillCfg is originally part of the game but we weren't able to fully config it to the way we want it to be. With this mod, you will able to modify the config to the way you want without changing it in the theater. If you are not an advanced user then I suggest you look at other mod that changes bot skill config.
You can disable BotSkillCfg if you don't want to change any bot behavior and just use other features like auto-scale AI Difficulty and Custom Bot Names.
Note: Anything has to do with the distance in the config, they are all in unreal units.
;Will the BotSkillCfg also affect friendly AI?
;This only work if you are not using custom BotSKillCfg assets
Custom BotSkillCfg Assets
If you are using other mods and you want to change their BotSkillCfg, you can override those mods by putting their BotSkillCfg asset file path in here. If you don't want to change any of those BotSkillCfg then don't put them here.
Remember, putting an invalid BotSkillCfg file path will crash your server. Also, you must have ImprovedAI mutator loads last so it can grab all the assets from other mods like ISMC. That is only if you are going to change that mod BotSkillCfg. Otherwise, ignore this.
;If this is disabled by default, so we will not use any custom asset and all bots will use ImprovedAI assets instead
;If this is enabled, then ImprovedAI assets will not be used. ONLY specific bots that using these assets will have their BotSkillCfg override.
;bEnableBotSkillCfg must also be enabled. Otherwise, your bot configs will not override on these assets.
;As default BotSkillCfgAssets is EMPTY!!!
;You can put in as many assets as you want in each line and all of them will have their BotSkillCfg override
;This is an example of using BotSkillCfgAssets
;You can find more BotSkillCfg in the sandstorm mod tool
;ISMC mod BotSkillCfg path
;Distance from this sound that we confirm our target is an enemy
;Distance from this sound that we can hear the target
;Speed this AI turns at
;Time before we start attacking at close targets
;Time before we start attacking at distant targets
;Range we consider to be maximum distance for spot checks
;Range we consider to be close range for spot checks
;Multiplier applied to spotting chance
This is where bot accuracy settings.
AccuracyMultiplier will increase the hit chance but if you want the hit chance to be higher then you should change the bloatbox in
WeaponCategoryConfigs. A lot of people ask what is the bloatbox. It's pretty much like strike zone in baseball. The strike zone will show up in every player model. Increasing the bloatbox will make the zone bigger and will lead to a higher miss chance. The bloatbox also multiply and base on the difficulty. Take a look at the Difficulty section with this.
;The higher, the more accurate. 1.0 is easy, 4.0 is hard
;Multiply our spread by this much when fully suppressed
;Change weapon type config for bot like changing the accuracy for that weapon and such
;List of weapon types
;Weapon configs type
;MaxDistance (Distance we can shoot at, otherwise we try to get closer)
;MinAttackDegrees (Start attacking when our aim on the target by this much)
;MaxAttackDegrees (Stop attacking when our aim off the target by this much)
;ProjectileSpreadZeroTimeFar (How fast we zero in on the target when target is far)
;ProjectileSpreadZeroTimeClose (How fast we zero in on the target when target is close)
;BloatBoxMin (Our bloat box after zeroing) (Require X and Y)
;BloatBoxMax (Our bloat box at first sight) (Require X and Y)
;Make sure you get rid of spacing for this line
WeaponCategoryConfigs=((Launcher, (MinAttackDegrees=1.000000, MaxAttackDegrees=2.000000, ProjectileSpreadZeroTimeFar=0.000000, ProjectileSpreadZeroTimeClose=0.000000, BloatBoxMax=(X=200.000000,Y=100.000000))), (MarksmanRifle, (MinAttackDegreesClose=10.000000, ProjectileSpreadZeroTimeFar=8.000000, BloatBoxMin=(X=50.000000,Y=50.000000), BloatBoxMax=(X=150.000000,Y=100.000000))), (BoltRifle, (MinAttackDegreesClose=10.000000, MaxAttackDegrees=0.500000, BloatBoxMin=(X=25.000000,Y=25.000000), BloatBoxMax=(X=125.000000,Y=80.000000))), (Shotgun, (MaxDistance=15000.000000, MinAttackDegrees=1.000000, MaxAttackDegrees=2.000000, ProjectileSpreadZeroTimeFar=5.000000, ProjectileSpreadZeroTimeClose=2.500000, BloatBoxMin=(X=75.000000,Y=75.000000), BloatBoxMax=(X=150.000000,Y=150.000000))), (LightMachineGun, (MinAttackDegrees=2.000000, MaxAttackDegrees=3.000000, ProjectileSpreadZeroTimeFar=8.000000, BloatBoxMin=(X=75.000000,Y=75.000000), BloatBoxMax=(X=150.000000,Y=150.000000))),(HeavyMachineGun, (MaxDistance=50000.000000, MinAttackDegrees=2.000000, MaxAttackDegrees=3.000000, ProjectileSpreadZeroTimeFar=8.000000, BloatBoxMin=(X=75.000000,Y=75.000000), BloatBoxMax=(X=200.000000,Y=150.000000))), (SubmachineGun, (MinAttackDegrees=1.000000, MaxAttackDegrees=2.000000, ProjectileSpreadZeroTimeFar=5.000000, ProjectileSpreadZeroTimeClose=1.500000, BloatBoxMin=(X=25.000000,Y=25.000000), BloatBoxMax=(X=100.000000,Y=75.000000))))
;The default config for all weapons that isn't in WeaponCategoryConfigs
;Make sure you get rid of spacing for this line
DefaultCategoryConfig=(MaxDistance=30000.000000, MinAttackDegrees=1.000000, MinAttackDegreesClose=20.000000, MaxAttackDegrees=2.000000, ProjectileSpreadZeroTimeFar=4.000000, ProjectileSpreadZeroTimeClose=1.500000, BloatBoxMin=(X=25.000000,Y=25.000000), BloatBoxMax=(X=100.000000,Y=75.000000))
Reactions for specific stance (Standing, Crouched, and Prone)
The chance bot will spot you. What determines the close-range distance or the max amount of distance will be in the Reactions section above.
;Chance of spotting in percentage
If you are a modder, you can create custom bot behaviors and let the server owner put it here to use it. ImprovedAI has 2 custom bot behaviors (WIP). The example is at the bottom of the list.
Also thank NWI AI dev that made a list for us to use it.
;List of behavior you can use
;Improved AI Custom bot behavior (WIP) (Not ready for use)
;Distance from our enemy we need to be to door breach
;When throwing a grenade, try to give this much time before it detonates after impact (so bots don't throw aiburst grenades)
;Only throw grenades at unreachable targets (used in Frenzy)
;Is allowed to throw grenades at targets currently in LoS
;Minimum distance away from the target that the bot must be to throw a grenade
;Grenade Inaccuracy Max Distance
;Only throw grenades once every N seconds per squad
;X and Y location where the grenade will land around that area. Minimum value
;X and Y location where the grenade will land around that area. Maximum value. If X=1.0 and Y=1.0 on both then grenade will be really accurate.
;Minimum distance away from the target that the bot must be to fire a rocket
;Only shoot rocket once every N seconds per squad
;Minimum number of enemies who should be in a cluster to be considered a valid rocket target
;No idea what this is
;If we are in cover and have > this suppression, get lower (While firing at a target)
;If we are in cover and have > this suppression, get lower
;If we are in cover and have <= this suppression, stand back up
;Minimum time we should stay in cover after cowering to avoid flip flopping
Ambush bots are the bot that camp in the corners. I'm sure you saw them a few times. These are the settings for those bots. If you want to increase the amount of bot camping in the corner then you should take a look at
BotAmbushRatioCheckpointMinDeaths=0.4 , and
BotAmbushRatio=0.10. The bot will start ambush base on the number of deaths between these configs and the ratio of bots. These configs will go in specific coop game mode settings like
;Apply ambush bonuses when our target is within this distance
;The higher this is, the faster bots react to targets when ambushing
;The higher this is, the more accurate bots are when ambushing
;The higher this is, the faster bots turn when ambushing
;Time fully restore morale when shattered
;Morale lost when a nearby teammate is headshot
;Morale lost when a nearby teammate is killed
;Morale lost when a nearby teammate is killed in a gruesome way (burning, chemicals etc.)
;Morale < than this means the bot will start to retreat
;Morale > than this means the bot can fight again after retreating
Auto-scale AI Difficulty
This has absolutely nothing to do with BotSkillCfg. This is just simply auto-scale the
[/Script/Insurgency.INSCoopMode] base on the number of players in-game.
PlayerCountForMaxAIDifficulty for scaling. If the number of players in-game is between those 2 then the AIDifficulty will try to scale base on the following formula:
;Minimum number of players to start scaling. Anything less than this or equal to this will just use MinAIDifficulty
;Maximum number of players to stop scaling. Anything greater than this or equal to this will just use MaxAIDifficulty
;The minimum AIDifficulty can have for scaling
;The maximum AIDifficulty can have for scaling
Custom Bot Behavior Configs
These are custom bot behavior I made using the blueprints that we have. It can change how a bot behaves. It still needs more work and testing. If you do not wish to use these, you can disable them. These bot behaviors will not change BotSkillCfg. It is just another behavior on top of it.
Aim at Closest Target
;Amount of second delay before finding another closest target
;Enable bot to aim at the closest target base on the distance
;Line of sight check for bot (Disabling this will just make bot target the closest target without LOS)
;Aim at target base on the priority type
;Example for Sprint, it will only aim at the target if they are sprinting and the rest that are on top of Sprint (Idle, Interesting, LastSeenThreat, and Footsteps)
;List of Priority Type
Note: Aiming at the target doesn't mean they will shoot at them. BotSkillCfg will before the one trigger the weapon fire and the accuracy or you can use the Force Firing behavior I made.
;Enable to force bot to find the closest area to cover
;Amount of X seconds before looking for new cover
;Having least seconds will make bot keep trying to moving from cover to cover instead of shooting their target
;Bot will only stay in cover when bot's morale is less than or equal to this value after getting a new cover
;No morale at all = 0.0 Thats when bot is taking a lot of damage and teammate is dying a lot
;Max morale = 100.0
Note: This cover behavior is just to force the bot to find a new hiding area. The base game cover will still apply to this. BotSkillCfg cover will be the one changing the bot stance like prone. Using this behavior will make the game longer because the bot tends to stay in cover more.
;Strafing is from UE4
;It allow the bot to run and slide and shoot at the same time
;This is disabled by default. Enable it will make game pace faster and the bot will run and gun at you more often
;Force bot to fire at player
;Require bLOS and from bForceAimAtClosestTarget from Aim at closest target config
;Chance to trigger when bForceFiring is enabled, every X second base on AimDelay
;Chance the bot will keep firing their weapon after FiringChance is triggered
Note: Force Firing is base on Aim at Closest Target. It will only fire if the closest target is found. If that feature is disabled then this force firing will not work.
Custom Bot Names
This feature will work regardless if you are using another mod that is replacing the BotSkillCfg or not. This is made using blueprints/nodes.
All bot names are randomly picked and you have to set them in
BotNameList. If the bot amount exceeds the bot name list then the bot name won't be changed.
The bot names will be automatic updates with new bot joins or leaves. If a bot is using a player's name and that player left the game. That bot name will be replaced.
Remember if you have a duplicated bot name on the list, it will only appear once.
Random bot rank and random bot ping for the scoreboard are client-side. Everyone will get a different bot ranks and bot pings.
ScoreboardUpdateInterval might affect client-side performance like FPS loss.
;Enable the custom bot names feature
;If you don't like custom bot names and you want to use other feature from the mutator then you can disable this
;Every N seconds, we will update the scoreboard (This does not affect the original scoreboard in-game. Only for updating botname, bot rank, and bot ping)
;Lower will update faster but will affect performance for clients (Set however you want but if your players experience some lag or FPS drop due to this then it better to increase it)
;Recommend 0.2 for faster update
;Bot also use player name and add it to the bot name list only if the player is present in game
;List of bot names
;Allow bot to use random rank in the scoreboard
;If this is disabled, bot will just have the BOT tag instead
;Allow bot to have random ping in the scoreboard
If something isn't working, please report it so I can fix it. All feedbacks are welcome!
If you like my mod and you want to support me, you can make a donation on my profile.