Insurgency: Sandstorm

Mad Bots / Find Cover / Hot Potato Expanded for Insurgency: Sandstorm

Released (updated ago). Ranked 153 of 664 with 8,144 (7 today) downloads

Published by TayLord (mod ID: 2035022)

bots_edited.jpg

This mod contains my mutators to affect bot behaviors, loadouts, and difficulty. Just some stuff to spice up the bot interactions a bit. These should be fully functional with all mutators.

Mutator

Description

HotPot Bots drop live explosives on death
FindCover Bots call in any and all air support frequently during normal play
MadBots Swap any bot class with one from vanilla, elite, outpost, or frenzy
NoSuicides Removes suicide bombers from play. This is just a config of MadBots

Mutator=HotPot

This is a modified form of the vanilla HotPotato mod. Explosives are dropped randomly by players upon death according to the ratios set in the config. BangDelay sets the delay before frags, ieds, and flash grenades will detonate. This gives players some time to book it before the explosion. All ratios must be <= 1.0. If they sum to less than 1.0, then the remaining amount will be the probability that nothing is dropped upon a bot death. If you want grenades to always be dropped, then assure all ratios sum to 1.0. If bBotsOnly is set to true, then explosives will only be dropped by enemy bots in coop. By default the ratios will do the following:

Grenades dropped breakout:
20% - Molotovs
35% - M67 frags
15% - Smoke grenade
15% - IED
5% - Flash grenade
5% - Infantry triggered mine <- This can be disabled
5% - no grenade dropped

[/MadBots/Mutators/HotPot.HotPot_C]
FlameRatio=0.2
FragRatio=0.35
SmokeRatio=0.15
IEDRatio=0.15
FlashRatio=0.05
MineRatio=0.05

BangDelay=4
bBotsOnly=False
bDisableDropOnKnife=True
NoDropDamageThreshold=250
bEnableMine=True
bDelayMine=False
MinPlayerCount=2

[/MadBots/Mutators/HotPot2.HotPot2_C]
...
Additional Config Value Description
BangDelay Controls how many seconds after explosive are dropped that frags, ieds, and flash explosives will take to detonate. Default is 4
bBotsOnly If set to True, then explosives will only be dropped for bots of the opposite team. Default is False.
bDisableDropOnKnife If set to True, then explosives will not be dropped for knife kills. Default is True.
NoDropDamageThreshold This sets the damage threshold for weapons that will stop an explosive from being dropped. This will make headshots for all weapons not drop explosives. If you always want explosives to drop, then set this >= 1000 and the threshold will never be hit. 250 is the headshot damage of the weaker primaries in-game. So this was set as default.
bEnableMine If set to False, then the mine will not be spawned ever. Default is True
bDelayMine If set to False, then the mine will instantly be deployed on player/bot death. If set to True, then the mine will spawn after BangDelay has passed. Default is False.
MinPlayerCount This set the minimum number of players in a server before the hot potato will be enabled. Default is 2.

Mutator=FindCover

You best be preparing for a beatdown. This mod opens the full arsenal of air support up to the enemy team and they will be periodically be bringing the thunder with no limits. This works by randomly waiting a certain period and then finding the largest cluster of players. If this cluster meets the criteria, then the enemy team will deploy any fire support on a point nearby. A separate ratio can be set for the chopper support and the additional fire support is disabled by default when capturing objectives and counters as the vanilla game already has fire support at these points. There are three thresholds that can be adjusted that determine if a support will be called in or not. The alive player ratio, the players cluster distance between, and the number of players clustered. Default config values are shown below:

[/MadBots/Mutators/FindCover.FindCover_C]
bDisableDuringCapture=True
RatioChopper=0.08
AliveRatioThreshold=0.2
DistanceThreshold=30
PlayerClusterThreshold=2
InitialDelay=45
MinTime=40
MaxTime=90
bEnableMessaging=True
PreMsg=
PostMsg=
StrafeOnObjectiveRatio=0.4
bTargetPlayer=False
AccuracyMargin=15
RatioToObjective=0.3

bEnableA10=True
bEnableArtillery=True
bEnableSmoke=True
bEnableBombs=True
bEnableIED=True
bEnableChemical=True
bEnableMortar=True
bEnableBarrage=True
bEnableChoppers=True

[/MadBots/Mutators/FindCover2.FindCover2_C]
...

Config Variable

Description

bDisableDuringCapture If set to True, this will stop spawning any additional fire support during objective capture and counterattacks.
RatioChopper This sets how probable a chopper is to be called in relative to all other fire supports. By default this is 0.08, so 8% of fire support calls will bring in the BlackHawk or Apache.
AliveRatioThreshold This sets the ratio below which air support will no longer be called in for. By default this is 0.2, which means that less than 20% of players are left alive fire support will stop being called in.
DistanceThreshold This sets distance (in m) between players which is considered a cluster. If players are within this distance of each other, then they will count towards the PlayerClusterThreshold
PlayerClusterThreshold This sets the minimum number of players in a cluster that is required before a fire support is called on that area.
MinTime The minimum random time before fire supports
MaxTime The maximum random time before fire supports
IntialDelay Initial delay at round start in seconds before MinTime will begin setting the fire support.
bEnableMessaging If set to True, then a chat message will be sent to all players informing which fire support is incoming. I.e. "Chopper Incoming!", "Strafe Incoming!", "IED Drone Incoming!", etc.
StrafeOnObjectiveRatio This sets the ratio of times that a strafe specifically on the active objective when players begin capturing it. Default is 0.4. Set to 0.0 to disable entirely.
bTargetPlayer If bTargetPlayer? is True, then fire support will be called on player within AccuracyMargin
If bTargetPlayer? is False, then fire support will be called on player with AccuracyMargin for IED and strafe, but otherwise will use RatioToObjective to place it between the player and the next active objective.
AccuracyMargin This sets how big of a radius (in m) the fire support will be called within on the target player cluster. Note if this is less than 1000, then players are guaranteed dead for A10 strikes if they don't move quickly or are under shelter.
RatioToObjective This sets the location to spawn the fire support at between the target player cluster and the active objective. Default is 0.3, which would be 30% of the way between the player cluster and the active objective. This makes it so players must move through the fire support as opposed to run from it. This is NOT used for IED or strafe. Those use the player cluster directly with AccuracyMargin. 0.0 would be on the target player location, 1.0 would be on the active objective.
bEnableA10, bEnableIED, bEnableBombs, bEnableChoppers, etc. These are all default to True. If set to False then the associated fire support will never be called by the enemy team.

To make text colored, then use along side Advanced Chat mod and set PreMsg and PostMsg like so:

PreMsg=<red>
PostMsg=</>

MadBots (Beta release)

Mutator=MadBots OR MadBots2 OR MadBots3 OR NoSuicides

This mod allows servers to replace bot playerclasses with another. This makes for a very configurable game feel. Swap Suicide Bombers with rifleman, militia counters for Bruisers, rifleman with elite outpost bots, or replace breachers with frenzy bots, etc.

Config

Description

ClassesToRemove This is a comma separated list (no spaces) of all the classes to remove from play. Choose the numbers for the desired class in the table below
ClassesToAdd This is comma separated list (no spaces) of all the classes to add into play. A class is grabbed randomly from this array in place of one that is removed. Choose the numbers for the class in the table below. Since this is an array duplicates can be added to set ratios respectively.
RemoveClassesContaining

This is a comma separated list (no spaces) of all the keywords for classes that will be removed from play. This is normally easier then listing each class.
Keyword ideas:
"counterattack" is special keyword that can be used for all counterattacks spawns
"insurgent" or "security" will grab all the respective faction
"bot" will grab all bots in play
"militia" will grab just the militia counterattacks
"suicide" to grab the suicide bombers or "commander,observer" to replace all commanders and observers

RatioToNotReclass

This is a more special case usage. This will only replace a certain ratio of the provided classes to remove and leave the others. This is useful for cases where all bots have the same class and players dont want all bots to be replaced. Default is 0.0. Example use case: Set RatioT and run along with FullyLoaded. In this setup all bots would be FullyLoaded, but now with this mod ~60% would be reclassed with those specified and the other ~40% would remain as FullyLoaded.

bOnlyEnemyTeam

This is set to True by default and only will replace bots on the enemy team. Friendly AI will not be affected. If friendly AI should be swapped as well then set this to False. Setting to True will also make this compatible with the PVP mod I made that modifies friendly AI.

debug This prints some messaging to the screen including what class is currently being swapped or not swapped for clarity in knowing which class names you are currently working with. Set to True if you are having a hard time understanding what classes the bots are currently using. These class names can be used as keywords in RemoveClassesContaining to replace bots with alternate classes.

By default the mutators listed do the following and their example game.ini configs following:

MadBots -> Swaps all insurgent bots for a variety of outpost and elite bots
MadBots2 -> Swaps all insurgent bots for their hardcore counterparts
MadBots3 -> Swaps all counterattacks with bruisers and removes suicide bombers
NoSuicides -> Removes suicide bombers from play

[/MadBots/Mutators/MadBots.MadBots_C]
RemoveClassesContaining=insurgent
ClassesToAdd=13,19,23,25,26,30,31
ClassesToRemove=

[/MadBots/Mutators/MadBots2.MadBots2_C]
RemoveClassesContaining=insurgent
ClassesToAdd=9,10,11,12,13,14,15,16,17,18
ClassesToRemove=

[/MadBots/Mutators/MadBots3.MadBots3_C]
RemoveClassesContaining=counterattack
ClassesToRemove=21
ClassesToAdd=23

[/MadBots/Mutators/NoSuicides.NoSuicides_C]
RemoveClassesContaining=suicide
ClassesToRemove=
ClassesToAdd=

And now for the massively long list of playerclasses. Note: Suicide bombers are not currently functioning 100% yet. They will be simply killed instead of swapped and they will not be added in place of other bots. Hopefully this can be added in time, but Suicide Bombers are a doozy to mod around in this game.

MadBots Lookup table

Vanilla:
0->PlayerClass_Insurgent_Coop_Bot_Advisor
1->PlayerClass_Insurgent_Coop_Bot_BreacherShotgun
2->PlayerClass_Insurgent_Coop_Bot_BreacherSMG
3->PlayerClass_Insurgent_Coop_Bot_Commander
4->PlayerClass_Insurgent_Coop_Bot_CommanderOutpost
5->PlayerClass_Insurgent_Coop_Bot_Demolitions
6->PlayerClass_Insurgent_Coop_Bot_Gunner
7->PlayerClass_Insurgent_Coop_Bot_Marksman
8->PlayerClass_Insurgent_Coop_Bot_Rifleman

Elites:
9->PlayerClass_Insurgent_Coop_Bot_EliteBreacher
10->PlayerClass_Insurgent_Coop_Bot_EliteBreacherOutpost
11->PlayerClass_Insurgent_Coop_Bot_EliteDemolitions
12->PlayerClass_Insurgent_Coop_Bot_EliteDemolitionsOutpost
13->PlayerClass_Insurgent_Coop_Bot_EliteGunner
14->PlayerClass_Insurgent_Coop_Bot_EliteGunnerOutpost
15->PlayerClass_Insurgent_Coop_Bot_EliteMarksman
16->PlayerClass_Insurgent_Coop_Bot_EliteMarksmanOutpost
17->PlayerClass_Insurgent_Coop_Bot_EliteRiflemanNew
18->PlayerClass_Insurgent_Coop_Bot_EliteRiflemanNewOutpost

Frenzy: 
19->PlayerClass_Insurgent_Coop_Bot_FrenzyBasic
20->PlayerClass_Insurgent_Coop_Bot_FrenzyBasic_Survival
21->PlayerClass_Insurgent_Coop_Bot_SuicideBomber
22->PlayerClass_Insurgent_Coop_Bot_FrenzyBlinker
23->PlayerClass_Insurgent_Coop_Bot_FrenzyBruiser
24->PlayerClass_Insurgent_Coop_Bot_FrenzyFlamer

Outpost: 
25->PlayerClass_Insurgent_Coop_Bot_Outpost_Blaster
26->PlayerClass_Insurgent_Coop_Bot_Outpost_Grenadier
27->PlayerClass_Insurgent_Coop_Bot_Outpost_Grenadier2
28->PlayerClass_Insurgent_Coop_Bot_Outpost_Grenadier3
29->PlayerClass_Insurgent_Coop_Bot_Outpost_GrenadierExplosiveLauncher
30->PlayerClass_Insurgent_Coop_Bot_Outpost_Molotover
31->PlayerClass_Insurgent_Coop_Bot_Outpost_Ninja
32->PlayerClass_Insurgent_Coop_Bot_Outpost_Sniper

Mutators:
33->PlayerClass_AntiMaterielOnly
34->PlayerClass_BoltActionOnly
35->PlayerClass_BudgetAntiquing
36->PlayerClass_FullyLoaded
37->PlayerClass_Gunslinger
38->PlayerClass_MakarovsOnly
39->PlayerClass_PistolOnly
40->PlayerClass_ShotgunOnly
41->PlayerClass_WelrodOnly

Security Vanilla:
42->PlayerClass_Security_Coop_Bot_Advisor
43->PlayerClass_Security_Coop_Bot_BreacherShotgun
44->PlayerClass_Security_Coop_Bot_BreacherSMG
45->PlayerClass_Security_Coop_Bot_Commander
46->PlayerClass_Security_Coop_Bot_Demolitions
47->PlayerClass_Security_Coop_Bot_Gunner
48->PlayerClass_Security_Coop_Bot_Marksman
49->PlayerClass_Security_Coop_Bot_Observer
50->PlayerClass_Security_Coop_Bot_Rifleman

Security Elite:
51->PlayerClass_Security_Coop_Bot_EliteBreacher
52->PlayerClass_Security_Coop_Bot_EliteDemolitions
53->PlayerClass_Security_Coop_Bot_EliteGunner
54->PlayerClass_Security_Coop_Bot_EliteMarksman
55->PlayerClass_Security_Coop_Bot_EliteRifleman

Counterattacks: 
56->PlayerClass_Insurgent_Coop_Bot_MilitiaBoltActionRifleman
57->PlayerClass_Insurgent_Coop_Bot_MilitiaBreacherShotgun
58->PlayerClass_Insurgent_Coop_Bot_MilitiaBreacherSMG
59->PlayerClass_Insurgent_Coop_Bot_MilitiaPistolier1
60->PlayerClass_Insurgent_Coop_Bot_MilitiaPistolier2
61->PlayerClass_Insurgent_Coop_Bot_MilitiaPistolier2Outpost
62->PlayerClass_Insurgent_Coop_Bot_ObserverOutpost

Appreciate my work and want to donate or have a mod made? See my profile for link. If leaving a comment regarding bugs or feedback go ahead and tag me so I get a notification.

Releases

FilenameSizeVersionAddedOptions
filedata.26.zip47.96kb2.3.3

filedata.25.zip47.3kb2.3.2

filedata.24.zip47.32kb2.3.1

filedata.23.zip46.02kb2.3

filedata.22.zip44.58kb2.2

filedata.21.zip44.34kb2.1.2

filedata.20.zip44.34kb2.1.1

filedata.19.zip44.12kb2.1

filedata.18.zip42.23kb2.0

filedata.17.zip48.36kb1.9.1

filedata.16.zip48.35kb1.9

filedata.15.zip38.23kb1.8

filedata.14.zip35.66kb1.7.1

filedata.13.zip35.6kb1.7

filedata.12.zip35.27kb1.6.2

filedata.11.zip34.81kb1.6.1

filedata.10.zip34.05kb1.6

filedata.9.zip33.54kb-

filedata.8.zip33.5kb1.5.1

filedata.7.zip33.83kb1.5

filedata.6.zip33.02kb1.4

filedata.5.zip31.16kb-

filedata.4.zip19.25kb1.3

filedata.3.zip11.76kb1.2

filedata.2.zip12.9kb1.1

filedata.1.zip12.97kb1.0

filedata.zip5.36kb-

38 comments

Join the community or sign in with your gaming account to join the conversation:

泉晓非Rozwel

Strange. Madbots didn't work.
------------------------------------------------
It's because I set RatioToNotReclass to 1. 0.
And when i changed it to 0. 8 and it started working again.
It seems that the adjustment should not be too extreme.
------------------------------------------------ 0. 8 replaces less bot than 0. 6; 0. 9 and 0. 7 may cause server downtime at RemoveClassesC
------------------------------------------------
And how do I control the proportion of the new bot in this version?
For example, three rifles, seven blaster, four gunner..

TL
TayLord @taylord

MadBots does not have that level of control. It replaces classes of bots by probability. RatioToNotReclass is just a probability, not a fixed ratio. So setting to 1.0 means there is a 100% chance the bot will not be reclassed. Setting to 0.5 will make it so there is a 50% chance the bot class will be replaced. I don't see myself moving forward with MadBots. Maybe in the future I'll try a rework, but the game has limits that I couldn't find a way around so I just left it as is.

FH
-FH-DarkkDragon @darkkdrago1638136197

Not able to get the MadBots mutator working to swap classes, is this working? The debug does indicate in console output classes added/removed, just still has all vanilla bots. Pasted a couple things seen in server logs.

LogScript: Warning: Script Msg: Attempted to access index 0 from array 'ClassesToRemove_Int' of length 0 in '/MadBots/Mutators/MadBots_BASE.MADBOTS_BASE_C'!

LogStreaming: Error: /MadBots/Mutators/MadBots_BASE
LogStreaming: Error: Couldn't find file for package /Game/Game/Factions/PlayerClasses/Insurgent/Coop/Bots/Outpost/PlayerClass_Insurgent_Coop_Bot_Outpost_Molotover requested by async loading code.

TL
TayLord @taylord

Could you send me your config for me to try and replicate? It works, but I haven't tested every class, I just added all the ones from the editor, but some may not actually be in-game and could cause something like this.

SH
shotdk @shotdk

Unable to chat with FindCover. If remove FindCover, chat is fine.

TL
TayLord @taylord

Should be back now.

TL
TayLord @taylord

Whoops. I added some chat commands that can control the mod, didn't realize it would mute chats!

AbuFares
AbuFares @abufares

how i can filedata21 manually to game

TL
TayLord @taylord

You might need to be a bit more clear.

NEXT13
NEXT13 @next13

It would be nice if there is a way to get all the BOTs in the car when they get in the car.
Maybe the achievements could be unlocked.

TL
TayLord @taylord

MadBots Note: Suicide bombers are not currently functioning 100% yet for MadBots. They will be swapped, but still have IEDs attached to them and explode. They also cannot be added currently. The game implements suicide bombers in a different way than other classes that requires some work. This will be added later.

TL
TayLord @taylord

UPDATE: Suicide Bombers can now be removed, but due to the way they are implemented in game they cannot be swapped for another class. They are simply killed on spawn. Suicide bombers still are not able to be spawned in place of other classes either. WIP. Everything else should be good to go.

泉晓非Rozwel

Sorry for the late reply.
The basics and 2 temporarily run perfectly.

----------------------------------------
InitialDelay.
MinTime.
MaxTime.

Setting these three values too small can easily cause the server to crash.
---------------------------------------
Just a suggestion: it would be better if EnableMessaging allowed custom text.
---------------------------------------
I noticed that the team of the helicopter seems to be blurred.
Because sometimes AI uses RPG attack helicopters.

TL
TayLord @taylord

I added support for colored text through the Advanced Chat mod by enabling servers to set the prefix and suffix.

Servers crashing isn't something I can fix here. Depending on the class of server calling in 2 choppers could crash the server, but on others its fine. It all depends. If you set them low, then multiple air support will be called in simultaneously. In local play I can typically can get 5 simultaneous fire supports before it begins to glitch and crash.

AI shooting down choppers would be something that's hard coded. :/ Improved AI or NWI probably set it so that Insurgents shoot down choppers (since they always enemy in vanilla) and don't check for team.

泉晓非Rozwel

Can the "SpawnCount" of MadBots be adjusted to a percentage?
It's about scaling the number of bot.

And I really like the design idea you put forward in your Award Respawns reply. Can you also add "FindCover1/MadBots1" and "FindCover2/MadBots2" to give players more custom space? Of course, it is mainly "FindCover",It is hoped that it can be set up separately to maintain the characteristics of different fire support calls for different teams.

TL
TayLord @taylord

Let me know how those work out for you. I haven't had time to test lately.

泉晓非Rozwel

OK, I have something to do recently, but I will test the new version tomorrow.

TL
TayLord @taylord

Will do.

[TORO]ñ.Chory.es
[TORO]ñ.Chory.es @torochoryes

Love this mutator.
Could I make hotpotato activate when there are x # of human players?
When there's only one human player, it's hard to survive in close combat.
Thank you

TL
TayLord @taylord

I definitely can add that in the next update, which may be a couple weeks till I get to it. Were you thinking that it would get disabled by the number of alive players or the number of players on the players team alive or dead?

[TORO]ñ.Chory.es
[TORO]ñ.Chory.es @torochoryes

The number of total humans on the team.
If there is only one human player, either it deactivates, or the % of explosives dropped drops drastically.
If there is more than one human player, even if there is only one left alive, let everything remain the same, thus forcing more team play.

TL
TayLord @taylord

Should be added now with MinPlayerCount.