Custom enemies
Enemies live in BepInEx > plugins > CultTweaker > CustomEnemies, one folder
each, with a config.json.
The AI is a vanilla enemy's. An enemy here names one of the game's own enemy prefabs to mimic and keeps its brain wholesale - its states, attacks, animations and death - then changes what can be changed from outside.
config.json
{
"EnemyName": "Test Brute",
"Mimic": "Assets/Prefabs/Enemies/DLC/Enemy Swordsman Wolf.prefab",
"Health": 24,
"Scale": 1.5,
"BossHealthBar": true,
"BossBarName": "THE BRUTE",
"SkinName": "",
"Tuning": {
"maxSpeed": 0.075,
"AttackWithinRange": 5.0,
"MaintainTargetDistance": 3.0,
"DoubleAttack": 1
}
}
Fields
| Field | Type | Default | Description |
|---|---|---|---|
EnemyName | string | — | Required. The name it is listed under in the map editor. |
Mimic | string | a bat | The vanilla enemy prefab this one is built from, and whose AI it uses. |
Health | number | 5 | Total HP. |
Scale | number | 1 | Multiplies the spawned enemy's size. A brute is the same enemy at 1.6. |
SkinName | string | — | A skin on the skeleton - your own if the folder ships one, otherwise the mimic's. |
BossHealthBar | bool | false | Shows the game's boss bar across the top of the screen while it is alive. |
BossBarName | string | EnemyName | What that bar is labelled. |
Tuning | object | — | Any public field or property on the mimic's own controller, by name. |
SkeletonPath, AtlasPath, TexturePaths, SkeletonScale | string / array / number | auto-discovered | Set only when the folder holds more than one Spine export. |
Giving it your own art
Drop a Spine export (.json skeleton, .atlas, .png pages) in the folder to
give it your own art. Without one it wears the mimic's skeleton, and SkinName
then picks a skin off that.
Tuning
Tuning is where the behaviour lives. Every vanilla enemy exposes its numbers
as public fields - EnemySwordsmanWolf alone has around fifty - so
AttackWithinRange, MaintainTargetDistance, DoubleAttack, ChargeAndAttack,
KnockbackModifier, Damage, plus maxSpeed and SpeedMultiplier on every
enemy, are all reachable by name.
Values are numbers because a tuning table is numbers; a true/false field takes
0 or 1.
Placing them
Custom enemies appear in the map editor's enemy tool under Custom (mods), place like any other, and save into blueprints.