nooky added a new file:
QuoteDisplay MoreSPT 3.9.x ONLY
REQUIRED MODS FOR SWAG + DONUTS
Waypoints by DrakiaXYZ
Unity Toolkit by ArysSTRONGLY RECOMMENDED MODS
SAIN by Solarint
Looting Bots by Skwizzy
Questing Bots by DanW
Unicorn (for more spawn points) by PenOkOh
Update: Currently being rewritten and updated for 3.10.
Test releases will be available in the near future, in the SPT discord > #mods-development > DONUTS thread
This mod is no longer under active development - please see pinned comment for details
None of this would be possible without PROPS, the creator of SWAG and DONUTS
SWAG (Simple Wave AI Generator) is a server mod that enhances the spawns in your SPT raids by giving you full control over each and every bot that spawns. This mod comes with a full set of spawn "patterns" built-in so all you have to do is install and play.
DONUTS is a client mod that provides a full in-raid spawn point editor and dynamic spawn system. Donuts comes with a full set of spawn "patterns" specifically created with and for Donuts built-in so all you have to do is install and play.
Together, SWAG + DONUTS provide complete spawn control, unpredictability and freedom. Bots in D2. Crackhouse. Streets Apartments. Interchange Railway. Exfils. Anywhere.
What is SWAG + Donuts?SWAG + Donuts is a complete overhaul of the SPT bot spawning system. If you're not a fan of vanilla spawns for whatever reason then this is the mod for you. SWAG + Donuts is a combination of client (Donuts) and server (SWAG) mods that each handle certain parts of the spawning system in SPT in various ways and offer a wide variety of flexibility and config options. All PMC and SCAV spawn points are completely custom made for all maps and can be modified with many different parameters.
By default, SWAG + Donuts is packaged with a set of "spawn presets" that you can select in-game (F8 for GUI) among lots of other options you can tinker with, some you can toggle on/off mid-raid.
This is a big mod and be complicated for some - fear not, if all you want is to install a cool spawn mod and just play then you can do just that, the defaults are mostly tuned for a live-like experience. If you prefer that PMCs do NOT respawn during a raid then be sure to select any of the "starting-pmcs-only-*" presets from the Donuts F12 menu.
Features include
- in-game GUI (F9 default)
- custom spawn points and custom zones for all maps, created with a built-in spawn point editor
- various "spawn presets" available or create your own
- options for spawns you can toggle mid-raid, such as force bot type, spawn hard cap, hot spot boost and more (more info on these options below).
- add, remove, change any boss spawns or other bot types (add all bosses to all maps, spawn 10 Kabans and everywhere in-between)
- in-raid custom spawn point editor - edit parameters such as spawn timers, bot count, spawn distance from the player
- adjust bot squad size and chance, max PMC/SCAV counts per map, per preset and much more
For more info. please see the DONUTS and SWAG tabs above.
How To Install
If you have a previously installed version - I highly recommend you do a "fresh install" - completely uninstall the mod first. Just be sure to save any settings you have created or changed.
1. Download the zip from the link on this mod page
2. Extract to your SPT folder
3. Play
How To Uninstall
1. Delete 'SWAG' from user/mods
2. Delete 'dvize.Donuts' from BepInEx/plugins
3. Clear your temp files (via SPT launcher) just in case
Mod Compatibility
Any mod that changes SPAWNS is likely NOT compatible with SWAG
IF YOU USE REALISM MOD
first, make sure you have the latest REALISM installed. If you do then Realism will config everything for you - no changes needed.
If you want to use Realism Boss changes with SWAG:
go to the SWAG config.json and change these to true:
IF YOU USE SVM (Server Value Modifier)
Any of the following options should be DISABLED and are NOT compatible with this mod:
- any options under 'Events' (spawn related stuff)
- any options in the 'Bots' tab
Donuts Main Settings
Donuts On/Off(default: Enabled)
Enables or disables Donuts completely. This must be toggled before a raid.
Despawn Option
(default: Enabled)
If enabled, any PMCs or SCAVs that spawn over your Donuts presets caps will be despawned on a 10 second interval down to your max cap. Note: despawning only occurs after a spawn points has been triggered, there may be brief periods of time where your bot count will be inflated. If you're not a fan of despawning please see the Hard Cap option below.
If disabled, Donuts spawns essentially have 0 max cap.
Bot Hard Cap Option
(default: Disabled)
If enabled, Donuts will skip any spawn points triggered over your Donuts preset caps. In other words, if you have an active alive bot count that is already at your Donuts preset bot limits then Donuts will skip spawns until a bot dies (sort of like vanilla).
If you do not wish to use despawning then I highly suggest using this option instead. You can also use both options along with the hotspot options in the Advanced Settings (see Advanced Settings section below)
Cool Down Timer
(default: 300 seconds)
Donuts spawn global cooldown. This number defines the time period that occurs after a spawn points is triggered and the max bots before cooldown value has been met (see: Donuts Spawn Point Config Explained). Once this time has passed then the spawn point can be triggered again.
Donuts PMC Group Chance
(default: Default)
This is a string value that defines the probabilities of certain PMC squad sizes. By default, all Donuts PMC spawn points are configured to spawn up to 5 bots, however, this can be changed to any number. Default is "Default", which is balanced set of probabilities for a live-like experience. "Max" forces the max possible number of bots configured by that spawn point (so, 5 bots by default). "None" forces all bots to spawn solo. All of these probabilities are configurable (see: Donuts Advanced Settings)
Donuts SCAV Group Chance
(default: Default)
Same as PMC Group Chance
Donuts PMC Spawn Difficulty
(default: Normal)
This defines the base game difficulty that is applied to your bot spawns. This is not the same as SAIN difficulty. Donuts dificulty is the same as base game difficulty, this option simply provides a more flexible way to define difficulty for your spawns separated by bot type.
Donuts SCAV Spawn Difficulty
(default: Normal)
Same as above.
Other Bot Type Spawn Difficulty
(default: Normal)
Same as above. Note: This applies to all bots other than PMCs and SCAVs that are spawned by Donuts, not SWAG.
PMC Raid Preset Selection
(default: Live Like (Random))
Select a Donuts spawn preset here. Choose from any of the pre-packaged spawn presets that come with the mod or feel free to experiment and create your own. Default is the Live Like (Random) preset, which is a random pool of live-like presets (more info please see: Donuts Presets Explained)
SCAV Raid Preset Selection(default: scav-raids)
Same as above but specifically for SCAV raids. Default is the "scav-raids" preset specifically balaned for SCAV raids.
Show Scenario Selection
(default: Enabled)
If enabled, shows the preset being selected at the bottom-right of your screen when you load into a raid.
vvvvvvv FOR OTHER OPTIONS PLEASE KEEP READING BELOW vvvvvvv
Donuts Additional Spawn Settings
Force PMC Faction
(default: Default)
Forces a certain PMC faction, if desired. Default is random USEC or BEAR. Can be toggled mid-raid.
Force Bot Type for All Spawns(default: Disabled)
Forces a specific bot type for all spawns. Can be toggled mid-raid.
Max Respawns for PMC/SCAV per Raid
(default: 0 - unlimited)
Sets a limit on how many PMC/SCAVs can respawn during a raid. Default is 0 which is no limit.
Spawn Hard Stop
Hard Stop: Time Left in Raid
(default: Disabled, 300 seconds)
If enabled, Donuts will stop spawning PMCs or SCAVs once ther eis n time left in your raid (defined by Time Left in Raid).
Hot Spot Spawn Boost
(default: Disabled)
If enabled, forces all hot spot spawn points to have a 100% chance to spawn (if triggered).
Hot Spot Ignore Hard Cap
(default: Disabled)
If enabled, all hot spot spawns ignore the Donuts hard cap (if enabled, see above). I recommend using the following for an optimial experience while saving some frames:
Despawn Enabled
Hard Stop Enabled
Hot Spot Boost Enabled
Hot Spot Ignore Hard Cap Enabled
Use Global Min Distance From Player
(default: Enabled)
If enabled, you can set the minimum distance (in meters) that bots should spawn away from the player (you). This option must be enabled for the values for maps to work.Use Global Min Distance From Other Bots
(default: Enabled)
If enabled, you can set the minimum distance (in meters) that bots should spawn away from other bot spawns. This is useful if you want to avoid bots spawning too close to each other and killing each other too quickly. This option must be enabled for the values for maps to work.
Donuts Advanced Settings
Raid Load Time Delay
(default: 60 seconds)
This is the amount of time (in seconds) that Donuts is allowed to generate bot data during raid load. This is important for your starting bots to spawn with you, at the same time.
If this delay is too short then some bots may spawn late at the start. A longer delay means your raid load might take a little longer but your spawns should be more stable at the start.
Bot Cache Replenish Interval
(default: 10 seconds)
This is the time interval that Donuts "replenshes" bot data - in other words, Donuts generates bot data on a regular interval so that most of your bot spawns are instant.
Max Spawn Tries Per Bot
(default: 20)
Maximum number of times Donuts will try to spawn a bot (if it fails) before it skips. You generally never need to change this unless you know what you're doing.
Despawn Bot Interval
(default: 15 seconds)
This is the time interval that Donuts despawns bots (if enabled). Too short and your may experience a minor performance loss. Too long and Donuts may not be despawning bots fast enough - it depends on your settings.
Group Chance Weight Distribution
Low, Default, High
This defines the probabilities of certain group sizes separated by option.
Formula: individual weight / total weight = % chance
Example:
Default: 210, 210, 45, 25, 10
Group sizes of: 1, 2, 3, 4, 5 respectively
Total weight: 210 + 210 + 45 + 25 + 10 = 500
Solo bot spawn: 210 / 500 = 0.42 = 42%
5-man: 10 / 500 = 0.02 = 2%
etc...
Spawn Point Editor
If you plan to use the spawn point editor be sure to set key binds for creating and deleting spawn marker keys (see above screenshot).
For details on all parameters please see the section below: Donuts Spawn Point Parameters Explained
Donuts - Presets Explained
RANDOM PRESETS
Random presets are a collection of presets that are chosen at random given the weights defined by you.
The configs for these can be found here: BepInEx\plugins\dvize.Donuts\RandomScenarioconfig.json
Live Like
An equal chance for any of the live-like presets (live-like, alt2, alt3, alt4)
Starting PMCs Only
An equal chance for either of the starting-pmcs-only-live-like presets
Whole Lotta SCAVsAn equal chance for either of the morescavs presets with a small chance for "all-scavs"
ALL PRESETS
Any of the following presets can be selected from the Donuts F12 menu. Simply select a preset of your choice before the next raid and play, no need to set it every time.
live-like, live-like-alt
Presets that aim to provide a "live-like" experience with PMC respawns. live-like-alt has different starting bot spawn locations. If you do not wish to have PMC respawns in your raids then try starting-pmcs-only presets!
crazyraids
Increased spawn frequency on all maps, for all spawns, ~80-90% chance to spawn for each and all spawns. if the live-like presets don't offer enough action for you then try this.
impossibleraids
Increased spawn frequency on all maps to 100% for all spawns - if crazyraids doesn't offer enough action for you then try this.
quietraids
Decreased spawn frequency on all maps - for a more relaxed Tarky experience.
starting-pmcs-only-live-like, starting-pmcs-only-live-like-alt
Only spawn PMCs at the start - no PMC respawns. Alt version spawns starting PMCs at more random locations.
starting-pmcs-only-morescavs
Starting pmcs only but with more scavs.
morepmcs
"live-like" but with more PMCs, fewer SCAVs. Good for PMC kill quests.
morescavs
"live-like" but with more SCAVs, fewer PMCs. Good for SCAV kill quests.
scav-raids
Live-like but with a minor twist - PMC spawns are sprinkled throughout maps rather than at live starting locations to simulate a SCAV entering mid-raid.
Donuts Spawn Point Parameters Explained
"MapName" - name of the map. be sure you use proper names, i.e. "bigmap" for Customs
"GroupNum" - spawn group. all spawns with the same GroupNum will share one trigger. in other words, if you have 3 spawn points in one group, and one of those trigger, then the other 2 won't.
"Name" - name of spawn. you can name them whatever you want
"Position": { - x,y,z coordinates of spawn position. this is provided by the in-raid spawn point editor
"x": 89.5103455,
"y": 4.672584,
"z": -158.156723
}
"WildSpawnType" - bot type, i.e. pmc, sptusec, assault, etc.
"MinDistance" - min spawn point radius (can be 0)
"MaxDistance" - max spawn point radius - this is the size of the spawn point. when using the spawn editor, enable "real size" markers to see the actual radius of your spawn point
"MaxRandomNumBots" - max number of bots to spawn. this is 1-max inclusive and it's random
"BotTriggerDistance" - distance to player for spawn trigger. once the player is within this distance then the spawn timer will start
"BotTimerTrigger" - spawn timer. if the player is within trigger distance this timer will continue to run
"SpawnChance" - spawn chance %
"MaxSpawnsBeforeCooldown" - once this many bots have spawned the spawn point will enter a cooldown (wait for 180s, default, configurable in F12 menu)
"IgnoreTimerFirstSpawn" - if true, once player is within BotTriggerDistance the spawn will trigger regardless of timer. If false, the timer must run at least once for the first spawn trigger.
"MinSpawnDistanceFromPlayer" - the min distance from player that bots should spawn. this is to hopefully prevent bots spawning too close to you.
---
The Rules of DONUTS
Rules
1. Bots will only spawn in same level/height as the spawn marker
2. Bots will only spawn in maximum distance (radius) around the spawn marker
3. One random spawn marker will be picked in a group
- if the timer is passed its eligible to spawn (Unless IgnoreTimerFirstSpawn is true for the point. It will be set to false after a successful spawn)
- if they are within the BotTimerTrigger distance the point is eligible to spawn.
- If the SpawnChance is reached, it is eligible to spawn.
- Validate that the spawn is not in a wall, in the air, in the player's line of site, minimum distance from the player. It will attempt to find a valid point up to the Bepinex Configured Max Tries specified.
- One to MaxRandomNumBots from the Spawn Marker info will be generated of type WildSpawnType
4. Timers will be reset if there is a successful spawn or a failure from within a group.
5. If a spawn sucessfully spawns up to their MaxSpawnsBeforeCooldown number, then it is in 'cooldown' until the timer specified in the bepinex config is reached.
Assumptions
- Spawns within a group will be on/around the same bot trigger distance otherwise only the closest spawn will be enabled.
- Each unique or standalone spawn should be given its own group number.
Donuts - Not Enough Bots? Too Many? - Start and Wave files Explained, ScenarioConfig, RandomScenarioConfig Explained
Donuts spawns bots using two json config files defined per map located here: dvize.Donuts\patterns\<preset_name>\map_waves.json or map_start.json
_start: This is your starting bots config
MinCount, MaxCount: This is the range of ALL starting bots for that type
MinGroupSize, MaxGroupSize: This is the range of group size for each starting spawn
Zones: Spawn zones - Donuts will select a random set of coordinates from each zone defined here. For starting bots specifically, Donuts will use each Zone until all points have been used then Donuts will repeat points afterward. For more info on custom zones and how to use them please see the section below: Donuts Custom Zones
_waves: These are all of your bot waves for each map
Please see the section Donuts Spawn Point Parameters Explained for more info on these parameters.
ScenarioConfig file defines all of the PMC and SCAV max bot caps for each map, for all presets. If you want to change the number of total PMCs and/or SCAVs in your raids then this is where you would do it. If you create a new preset be sure to add it to this file.
RandomScenarioConfig file defines "random pool" packages of presets that you can randomly cycle through. You can create a new random pool in this file, add any presets you want (try adding all of them, why not) and give each preset a weight. Weights work like this: individual weight / total weight = % chance
Then select the random preset pool from the preset selector in the Donuts F12 menu.
Donuts Custom Zones
All Donuts spawn points are hand-created and completely customizable. All spawn points are defined here: dvize.Donuts\zoneSpawnPoints
Each map contains a list of custom zones that each have their own list of coordinates (created by the Donuts spawn point editor). You can add/change/remove any zones or spawn points.
Example: customs_start.json
Hotspot Example:
How to use custom zones and zone keywords
Once you have zones and spawn points defined (like the above) you can use those zones in the Donuts pattern spawn files
i.e. customs_waves.json:
You can specify zones by zone name or use a built-in zone keyword:
- "start": uses all zones defined in the _start.json zone spawn point files
- "hotspot": uses all zones labeled with "hotspot" anywhere in the name
- "all" : uses all zones listed in the zone spawn point file for the corresponding map
Donuts Custom Zone Maps
SWAG Config and Boss Config
For General SWAG options: user\mods\SWAG\config\config.json
For Boss options: user\mods\SWAG\config\bossConfig.json
For spawn configs (to modify, add, remove):
Named bosses (Killa, Tagilla, etc.)
user\mods\SWAG\config\bosses\
Other "bosses" (Raiders, Rogues, Cultists, SCAV snipers, etc.)
user\mods\SWAG\config\other\
"Custom" bosses and Event bosses (Santa, Punisher mod boss, etc.)
user\mods\SWAG\config\custom\
SWAG config.json Options Explained
disableAllSpawns
Quick way of disabling all of a certain type of spawns. If true, then all spawn chances for that type are set to 0 for all maps.
bossDifficulty
bossEscortDifficulty
In-game difficulty that gets assigned to bosses and their guards - "asonline", "easy", "normal", "hard", "impossible" are all valid options. "asonline" randomly chooses between easy, normal, hard and impossible.
Spawns - useGlobalSpawnChance
if true (default) then the spawn chances defined per map (see above) are used. If false, then the spawn chance defined in the boss config files are used instead.
By default, SWAG adds all bot types to all maps, however, they're only configured to spawn once at the start of the raid in a random zone (default). This is entirely configurable, as well as adding more bosses if you wish (see: SWAG: How-To - Modifying boss spawn configs).
For example, if you quickly wanted to add more cultists to other maps, simply change the above numbers and you're set. If you want to change up when and where they spawn then that's where modifying spawn configs comes in.
SWAG bossConfig.json Options Explained
TotalBossesPerMap
If set to -1 (default), then any number of bosses can spawn. If set to 0, then no bosses spawn. If set to 1 for example, then only 1 boss can spawn. If you have multiple bosses set to spawn for one map then SWAG will randomly pick one.
Boss Spawns - useGlobalBossSpawnChance
By default, SWAG adds all bot types to all maps, however, they're only configured to spawn once at the start of the raid in a random zone (default). This is entirely configurable, as well as adding more bosses if you wish (see: SWAG: How-To - Modifying boss spawn configs).
For example, if you quickly wanted to add more gluhar to other maps, simply change the above numbers and you're set. If you want to change up when and where they spawn then that's where modifying spawn configs comes in.
SWAG: How-To - Modifying boss spawn configs
All bosses in SWAG are pre-configured for all maps. By default, bosses are configured to spawn on other maps with a random zone and at time -1 (see examples below)
Example: gluhar
And so on. You can add, remove or change any of the boss files to your liking but they must be valid values, otherwise you will experience problems.
FAQ
How do I know this mod is actually working?
Two ways - you'll see some SWAG load up in your server console along with your server mods (and hopefully no red text)
Additionally, you need to check that Donuts shows up in your BepInEx F12 menu, if it doesn't then it's not installed correctly
Is this mod compatible with x, y, z?
See: Mod Compatibility tab above
Can I use base game vanilla spawns with this mod?
No - once upon time this mod supported that but I no longer want to maintain an old spawning system. If you prefer base game spawns I highly recommend BetterSpawnsPlus by PreyToLive or other spawn mods.
Does this mod impact performance?
Short answer is yes. The longer answer is it can make both a positive and negative impact on your performance depending on your settings. For example, if you used lower bot caps, tweaked some presets to spawn bots closer to you, etc, you can save a lot on frames. The despawn and hard cap options also help in this regard.
I like long raids (60 min+), will these spawns work for me?
Yes - SWAG + Donuts spawns go on forever, raid time is irrelevant.
REMINDER - THIS IS A WORK IN PROGRESS - I'm always open for improvements, please give me feedback in the comments or find me in the SPT Discord!