Docs: Added new documentation for DS3's enemy randomization (random_enemy_preset) (#5738)

---------

Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
This commit is contained in:
Christina
2026-05-09 16:54:20 +02:00
committed by GitHub
parent e0810022f8
commit d0407a74d6
6 changed files with 436 additions and 6 deletions
+1 -3
View File
@@ -296,11 +296,9 @@ class ImpatientMimicsOption(Toggle):
class RandomEnemyPresetOption(OptionDict):
"""The YAML preset for the static enemy randomizer.
See the static randomizer documentation in `randomizer\\presets\\README.txt` for details.
See the online enemy randomization documentation for all available options.
Include this as nested YAML. For example:
.. code-block:: YAML
random_enemy_preset:
RemoveSource: Ancient Wyvern; Darkeater Midir
DontRandomize: Iudex Gundyr
+11 -1
View File
@@ -1,9 +1,11 @@
# Dark Souls III
Game Page | [Items] | [Locations]
Game Page | [Setup] | [Items] | [Locations] | [Enemy Randomization]
[Setup]: /tutorial/Dark%20Souls%20III/setup/en
[Items]: /tutorial/Dark%20Souls%20III/items/en
[Locations]: /tutorial/Dark%20Souls%20III/locations/en
[Enemy Randomization]: /tutorial/Dark%20Souls%20III/enemy-randomization/en
## What do I need to do to randomize DS3?
@@ -138,6 +140,14 @@ Check out the [item guide], which explains the named groups available for items.
[item guide]: /tutorial/Dark%20Souls%20III/items/en
## How can I change what enemies get randomized?
The [enemy randomization guide] explains how to further customize enemy randomization
for challenge runs or convenience. You can target specific enemies or entire
categories and even remove annoying enemy types outright.
[enemy randomization guide]: /tutorial/Dark%20Souls%20III/enemy-randomization/en
## What's new from 2.x.x?
Version 3.0.0 of the Dark Souls III Archipelago client has a number of
@@ -0,0 +1,411 @@
# Dark Souls III Enemy Randomization
[Game Page] | [Setup] | [Items] | [Locations] | Enemy Randomization
[Game Page]: /games/Dark%20Souls%20III/info/en
[Setup]: /tutorial/Dark%20Souls%20III/setup/en
[Items]: /tutorial/Dark%20Souls%20III/items/en
[Locations]: /tutorial/Dark%20Souls%20III/locations/en
If `randomize_enemies` in your Dark Souls 3 player config YAML is enabled, bosses, minibosses and basic enemies will
be shuffled with themselves respectively.
To further customize enemy randomization beyond that, there is a section called `random_enemy_preset`.
This tutorial will show all the ways how to configure that preset.
## Table of Contents
- [The Basics](#the-basics)
- [Individual Assignments](#individual-assignments)
- [Pools](#pools)
* [Pool Groups](#pool-groups)
+ [RandomByType](#randombytype)
* [Weights](#weights)
- [Settings](#settings)
* [Boss](#boss)
* [Miniboss](#miniboss)
* [Basic](#basic)
+ [BuffBasicEnemiesAsBosses](#buffbasicenemiesasbosses)
* [Enemies](#enemies)
* [DontRandomize](#dontrandomize)
* [RemoveSource](#removesource)
* [OopsAll](#oopsall)
- [Enemy Categories](#enemy-categories)
## The Basics
There are two main ways to assign an enemy to be randomized: [individual enemy assignments](#individual-assignments)
to target a singular enemy placement and setting up [Pools](#pools) to target a category of enemies.
Custom pools are recommended unless you specifically want to single out one enemy placement.
All bosses also have their own category, so individual assignment is not necessary in those cases.
Be aware of correct indentation of your YAML file. Every example in this document will need to be nested under the
`random_enemy_preset:` section.
Disable the preset by leaving just empty brackets `{}`. Like usual with YAML, you can add comments by using `#`.
For further examples, check out the "presets" folder of the standalone randomizer.
## Individual Assignments
Individual enemy assignment allows you to target individual enemies, rather than a category as under pools.
This overrides pools and any other configuration, will usually ignore progression, and can possibly cause you to have to
fight Yhorm the Giant without Storm Ruler.
You use it in the [`Enemies`](#enemies) section by selecting a specific enemy using its unique
ID, or its specific name followed by its ID.
See the '/randomizer/preset/Template.txt' file of the static randomizer for all available IDs.
There are also some special target names available for individual assignments:
- `any`: This is the default and allows any enemy in the pool to appear there.
- `norandom`: Assigns an enemy to itself. This has the same effect as adding the enemy name to [`DontRandomize`](#dontrandomize).
## Pools
A pool is a collection of enemies. A pool can both be a randomization target and an eligible group of random enemies to
be drawn from for randomization. See [Enemy Categories](#enemy-categories) for all available pools.
Pool assignment generally respects progression, like requiring Storm Ruler to be accessible before Yhorm the Giant.
By default, using a boss as another boss, or a miniboss as another miniboss, takes the source enemy out of the default
pool for that category, so each enemy will still be used once if possible. However, the enemy can still appear more
than once if used in a custom pool.
### Pool Groups
Pools can be joined into a pool group by joining several names, separated by a semicolon.
```yaml
# All basic enemies are just different hollows now
Basic:
- Weight: 100
Pool: Hollow Soldiers; Large Hollow Soldiers
```
#### RandomByType
By default, selection will be random across all eligible enemies. In our example above it would select from:
- Hollow Soldier
- Road of Sacrifices Hollow Soldier
- Cathedral Hollow Soldier
- Lothric Castle Hollow Soldier
- Grand Archives Hollow Soldier
and
- Large Hollow Soldier
- Cathedral Large Hollow Soldier
- Lothric Castle Large Hollow Soldier
However, this would make it more likely to select a regular soldier instead of a large one (5 out of 8), just because
there are fewer entries in the latter category.
You can specify `RandomByType: true` to select randomly from the list itself (Hollow Soldiers, Large Hollow Soldiers)
and make our previous example a true 50/50 split.
```yaml
# All basic enemies are just different hollows now
Basic:
- Weight: 100
Pool: Hollow Soldiers; Large Hollow Soldiers
RandomByType: true # To make it truly 50/50 between the categories
```
### Weights
Weights can be used to select multiple different outcomes within a pool, weighted to give different probabilities each.
Weights don't necessarily have to add up to 100, but doing it that way makes estimating probabilities very intuitive.
```yaml
Boss:
- Weight: 79 # 79% of bosses will still be bosses
Pool: default
- Weight: 20 # Replace 20% of all bosses with minibosses
Pool: Miniboss
- Weight: 1 # Replace 1% of all bosses with regular enemies. It's always funny
Pool: Basic
```
Be aware that weights will not work in the [`Enemies`](#enemies) section.
## Settings
### Boss
This setting indicates which enemies can be used as replacements for bosses.
By default, this is the pool of all 29 bosses.
```yaml
Boss:
- Weight: 80
Pool: default
- Weight: 20 # Replace 20% of all bosses with minibosses
Pool: Miniboss
```
### Miniboss
This setting indicates which enemies can be used as replacements for minibosses.
By default, this is the pool of all 32 minibosses (including duplicates).
```yaml
Miniboss:
- Weight: 80
Pool: default
- Weight: 20 # Replace 20% of all minibosses with bosses
Pool: Boss
```
### Basic
This setting indicates which enemies can be used as replacements for all other enemies, so non-bosses and non-minibosses.
By default, this is the pool of all ~2000 basic enemies (including duplicates).
```yaml
Basic:
- Weight: 94
Pool: default
- Weight: 5 # Replace 5% of all basic enemies with minibosses
Pool: Miniboss
- Weight: 1 # Replace 1% of all basic enemies with bosses
Pool: Boss
```
#### BuffBasicEnemiesAsBosses
If enabled, this causes basic enemies to become a lot stronger when randomized into the slot of a boss.
```yaml
Boss:
- Weight: 100 # All bosses are just basic enemies...
Pool: Basic
BuffBasicEnemiesAsBosses: true # ...but they are strong
```
### Enemies
Under the `Enemies:` setting you can add more nuanced replacements of random enemies.
There are two ways you can adjust enemies:
- Assign to a group of enemies using their category pool (see [Enemy Categories](#enemy-categories))
- Assign to one specifc enemy by using its number (see [Individual Assignments](#individual-assignments))
```yaml
Enemies:
# Replace only the very first Ravenous Crystal Lizard with the final boss
Ravenous Crystal Lizard 4000380: Lords of Cinder
# Replace all regular soldiers with skeletons or small crabs
Hollow Soldiers: Skeletons; Lesser Crab
# Knights remain knights, but variants (i.e. weapons) are still shuffled within the category
High Wall Lothric Knight: High Wall Lothric Knight
```
### DontRandomize
A semicolon-separated list of enemies or enemy types to not randomize (assign to themselves).
It is taken out of its default pool and also custom pools in this case, but it can still be assigned to
[individual enemies](#individual-assignments).
```yaml
DontRandomize: Iudex Gundyr # Iudex Gundyr will be at his vanilla location
Boss:
- Weight: 100
Pool: default # Boss slots other than Iudex Gundyr will never become him
```
### RemoveSource
A semicolon-separated list of enemies or enemy types to remove from all pools.
It can still be assigned to individual enemies.
This is overridden by [`DontRandomize`](#dontrandomize) directives.
```yaml
# Remove the most annoying enemies from all pools
RemoveSource: Bridge Darkeater Midir; Ancient Wyvern Mob; Curse-rotted Greatwood; High Lord Wolnir; Carthus Sandworm
```
### OopsAll
Assigning an enemy or a pool to `OopsAll` sets all pools to that specific enemy or category of enemy. This can still be
overridden using [individual enemy assginments](#individual-assignments), but otherwise every enemy is replaced by
this setting.
```yaml
# This run suddenly got very spooky
OopsAll: Skeletons
```
---
## Enemy Categories
The following enemy category pools are available:
- Any
- Bosses
- Minibosses
- Bosses and Minibosses
- Basic
- Abyss Watchers
- Aldrich, Devourer of Gods
- Ancient Wyvern
- Ancient Wyvern Mob
- Angel Pilgrim
- Basilisk
- Black Knight
- Blackflame Friede
- Boreal Outrider Knight
- Bridge Darkeater Midir
- Cage Spider
- Carthus Sandworm
- Cathedral Evangelist
- Cathedral Knight
- Cemetery Hollow
- Champion Gundyr
- Champion's Gravetender and Gravetender Greatwolf
- Consumed King Oceiros
- Corpse-grub
- Corvian
- Corvian Knight
- Corvian Settler
- Crabs
- Lesser Crab
- Greater Crab
- Ariandel Greater Crab
- Crystal Lizard
- Crystal Sage
- Crystal Sage in Archives
- Curse-rotted Greatwood
- Dancer of the Boreal Valley
- Darkeater Midir
- Darkwraith
- Deacon
- Cathedral Deacon
- Wide Deacon
- Irirthyll Deacon
- Irirthyll Tall Deacon
- Deacons of the Deep
- Deep Accursed
- Demon
- Demon Cleric
- Demon Prince
- Demonic Statue
- Dragonslayer Armour
- Dreg Heap Thrall
- Elder Ghru
- Father Ariandel
- Farron Follower
- Fire Witch
- Gargoyles
- Profaned Capital Gargoyle
- Archives Gargoyle
- Ghru Grunt
- Giant Fly
- Giant Slave
- Grand Archives Scholar
- Grave Warden
- Halflight, Spear of the Church
- Harald Legion Knight
- High Lord Wolnir
- Hobbled Cleric
- Hollow Manservant
- Hollow Soldiers
- Hollow Soldier
- Road of Sacrifices Hollow Soldier
- Cathedral Hollow Soldier
- Lothric Castle Hollow Soldier
- Grand Archives Hollow Soldier
- Hound Rat
- Infested Corpse
- Irirthyll Dungeon Peasant Hollow
- Irithyll Giant Slave
- Irithyll Starved Hound
- Irithyllian Slave
- Iudex Gundyr
- Jailer
- Judicator
- King of the Storm
- Large Hollow Soldiers
- Large Hollow Soldier
- Cathedral Large Hollow Soldier
- Lothric Castle Large Hollow Soldier
- Large Hound Rat
- Large Serpent-Man
- Large Starved Hound
- Locust Preacher
- Lords of Cinder (actually called "Soul of Cinder" ingame)
- Lorian, Elder Prince
- Lothric Knights
- High Wall Lothric Knight
- Lothric Castle Lothric Knight
- Dreg Heap Lothric Knight
- Red-Eyed Lothric Knight
- Lothric Priest
- Lothric, Younger Prince
- Lycanthrope
- Lycanthrope Hunter
- Maggot Belly Starved Hound
- Millwood Knight
- Mimic Chest
- Monstrosity of Sin
- Murkman
- Murkman Summoner
- Nameless King
- Old Demon King
- Passive Locust Preacher
- Peasant Hollow
- Poisonhorn Bug
- Pontiff Knight
- Pontiff Sulyvahn
- Pus of Man
- Ravenous Crystal Lizard
- Reanimated Corpse
- Ringed City Cleric
- Ringed Knight
- Road of Sacrifices Sorcerer
- Rock Lizard
- Rotten Slug
- Serpent-Man
- Serpent-Man Summoner
- Sewer Centipede
- Silver Knight
- Sister Friede
- Skeletons
- Skeleton
- Bonewheel Skeleton
- Carthus Curved Sword Skeleton
- Carthus Shotel Skeleton
- Ringed City Skeleton
- Slave Knight Gael
- Slave Knight Gael 1
- Slave Knight Gael 2
- Small Locust Preacher
- Smouldering Ghru Grunt
- Starved Hound
- Stray Demon
- Sulyvahn's Beast
- Thrall
- Tree Woman
- Vordt of the Boreal Valley
- Winged Knight
- Wolves
- Smaller Wolf
- Larger Wolf
- Greatwolf
- Wretch
- Writhing Flesh
- Catacombs Writhing Flesh
- Smouldering Writhing Flesh
- Anor Londo Writhing Flesh
- Yhorm the Giant
+3 -1
View File
@@ -1,9 +1,11 @@
# Dark Souls III Items
[Game Page] | Items | [Locations]
[Game Page] | [Setup] | Items | [Locations] | [Enemy Randomization]
[Game Page]: /games/Dark%20Souls%20III/info/en
[Setup]: /tutorial/Dark%20Souls%20III/setup/en
[Locations]: /tutorial/Dark%20Souls%20III/locations/en
[Enemy Randomization]: /tutorial/Dark%20Souls%20III/enemy-randomization/en
## Item Groups
+3 -1
View File
@@ -1,9 +1,11 @@
# Dark Souls III Locations
[Game Page] | [Items] | Locations
[Game Page] | [Setup] | [Items] | Locations | [Enemy Randomization]
[Game Page]: /games/Dark%20Souls%20III/info/en
[Setup]: /tutorial/Dark%20Souls%20III/setup/en
[Items]: /tutorial/Dark%20Souls%20III/items/en
[Enemy Randomization]: /tutorial/Dark%20Souls%20III/enemy-randomization/en
## Table of Contents
+7
View File
@@ -1,5 +1,12 @@
# Dark Souls III Randomizer Setup Guide
[Game Page] | Setup | [Items] | [Locations] | [Enemy Randomization]
[Game Page]: /games/Dark%20Souls%20III/info/en
[Items]: /tutorial/Dark%20Souls%20III/items/en
[Locations]: /tutorial/Dark%20Souls%20III/locations/en
[Enemy Randomization]: /tutorial/Dark%20Souls%20III/enemy-randomization/en
## Required Software
- [Dark Souls III](https://store.steampowered.com/app/374320/DARK_SOULS_III/)