
SpawnConfig
Configure enemy spawning with custom groups, weights and moreDetails
SpawnConfig
This mod allows you to change several things about the enemy spawning behavior in the game. It is intended to be used for modpack balance fine-tuning. Only the host needs to have it installed. Small warning: Taking advantage of this mod requires you to have a basic understanding of json file syntax. In return it offers a very high degree of configurability!
Here's a list of what's made possible by the mod:
- You can modify or remove the vanilla enemy groups and add your own custom groups
- Support for custom enemies added by other mods!
- You can change how many enemy groups spawn based on the level. You can also add multiple possible group count configurations for the same level for some randomness / variety
- You can assign weights to fine-tune how likely each enemy group is to appear
- You can control whether a group should only be able to appear before a certain level or after a certain level
- You can make a group only spawnable if the host player has played more than a certain number of runs
- A group can be set to not allow any other groups to spawn if it happens to be selected. Use this if you crafted something truly devious and grand
- You can add extra variety to a group by configuring a chance for it to sometimes be bigger or smaller by a configurable range
- There is a global setting in the mod that lets you disable enemy spawning entirely
Getting started
-
These important files and folders will be generated in your BepInEx config folder after launching the game:
Index154.SpawnConfig.cfg
=> The global config of the mod which is comparatively simple. Contains descriptions for each available setting. Please take a look at it!- Subfolder
SpawnConfig
:SpawnGroups.json
=> Edit this file to modify, add and remove enemy groupsSpawnGroups-Explained.json
=> This file contains information about the properties ofSpawnGroups.json
and how they work. Please check it out to learn more about the rules the other file has to follow!GroupsPerLevel.json
=> Edit this file to change how many enemy groups spawn per levelGroupsPerLevel-Explained.json
=> Contains corresponding explanations for the contents ofGroupsPerLevel.json
! You should read it!- Subfolder
Defaults
:SpawnGroups-Readonly.json
=> This file just exists as a reference and is not meant to be edited! It contains the configs for all groups the game has loaded before your custom config was applied. So the enemy groups added by other mods will be found in here as well. The file is overwritten on every game launchGroupsPerLevel-Readonly.json
=> This file just exists as a reference and is not meant to be edited! It contains the vanilla groups per level configs. The file is overwritten on every game launch
-
Make your edits in the files
SpawnConfig\SpawnGroups.json
andSpawnConfig\GroupsPerLevel.json
. Just read the explanations and follow the example of the vanilla entries and you'll be fine. Or replace the file with one made by somebody else if you want! Changes will take effect only after restarting the game -
Have fun!
(optional) Keep reading for further details.
Known incompatibilities
- SpawnConfigPlus by onecoolsnowmanMods
- TierSpawnConfig by Dev1A3
- MoneyBag Valuable by Oooppp (no clue why this one is problematic. I tried to contact the creator but have not received a reply)
- Most likely any other mod that makes major changes to how enemy spawning works in the game
Enemy names
You need to know the internal name of an enemy in order to be able to add it to the spawnObjects list of a group in your SpawnGroups config. The names in your config need to be exact matches, otherwise it will not work!
The names of all enemies, including modded ones, will be logged to the console when you start the game. Here's a list of the vanilla enemy names.
Enemy - Head
= HeadmanEnemy - Robe
= Grim reaperEnemy - Hunter
= HuntsmanEnemy - Runner
= Reaper / Scarecrow-looking guyEnemy - Beamer
= Laser clownEnemy - Slow Walker
= TrudgeEnemy - Animal
= AnimalEnemy - Bowtie
= Fat guyEnemy - Floater
= Mentalist / AlienEnemy - Hidden
= Invisible manEnemy - Tumbler
= Frog chefEnemy - Upscream
= Small crawling headEnemy - Valuable Thrower
= Rugrat / BabyEnemy - Ceiling Eye
= PeeperEnemy - Duck
= DuckEnemy - Slow Mouth
= Spewer / Puke thingEnemy - Thin Man
= Shadow childEnemy - Bang
= Exploding skullEnemy - Gnome
= Gnome
If a group contains an invalid enemy name then you will see a corresponding error in the log when you launch the game. A group containing an invalid enemy name will be ignored entirely by default. You can change a setting in the global config file to make it so all invalid enemies will simply be removed from the group if you prefer. In that case the group will still be able to spawn as long as it contains at least one valid enemy.
For mod developers
- As long as you register your custom enemies properly with REPOLib they will be supported by SpawnConfig
- SpawnConfig FULLY replaces the functions
AmountSetup()
andPickEnemies()
inEnemyDirector.cs
!
What else?
- If something doesn't work as expected then take a look at the BepInEx log output. Most issues will come with a corresponding error message in the log to help with troubleshooting
- Report issues, request features, check known issues and check planned features on GitHub: https://github.com/Index154/REPO_SpawnConfig
- Talk about the mod, find configs made by others or share your own configs and ideas on Discord: https://discord.com/channels/1344557689979670578/1352686279065600093 (in the REPO Modding Server)
Here's a video for a quick and simplified overview of how enemy spawning works in REPO: https://www.youtube.com/watch?v=Yx-PW4qYEHY