serprex/RandomHowl

Death Howl Randomizer

0

stars

21

commits

C#

primary language

Sep 15, 2026

updated

store.steampowered.com/app/2825880/Death_Howl

README

A no logic randomizer mod for Death Howl. Shuffles spirits, pickups, caves, card realms, recipes and card rewards.

Requirements

1. Install BepInEx

  1. Extract BepInEx into the game folder, next to Death Howl.exe.

  2. Linux / Steam Deck only: in Steam, set the game's launch options to:

    WINEDLLOVERRIDES="winhttp=n,b" %command%
    
  3. Start the game once and quit. This lets BepInEx create its folders.

BepInEx must be installed before you build, because the build uses the BepInEx and Unity files from the game folder.

2. Build

Point the build at the game's Death Howl_Data folder:

dotnet build mod -c Release -p:GameDir="/path/to/Death Howl/Death Howl_Data"

Instead of passing GameDir every time, you can set the DEATH_HOWL_DATA environment variable, or create mod/Local.props:

<Project>
  <PropertyGroup>
    <GameDir>/path/to/Death Howl/Death Howl_Data</GameDir>
    <!-- optional: copy the plugin here after each build -->
    <PluginDir>/path/to/Death Howl/BepInEx/plugins/RandomHowl</PluginDir>
  </PropertyGroup>
</Project>

Local.props is gitignored. If BepInEx is not in the usual place next to Death Howl_Data, set BepInExDir as well.

The build stops with an error if it can't find the game or BepInEx.

3. Install

If you set PluginDir, the build already copied the plugin. Otherwise copy mod/bin/Release/RandomHowl.dll to:

Death Howl/BepInEx/plugins/RandomHowl/

Playing

  1. On title screen, open RANDOMIZER.
  2. Enter seed, or leave it empty for a random one, and pick your options.
  3. Start a new game in custom mode, with RANDOMIZER enabled.

If spoiler log is on, it is written next to plugin as spoiler-<seed>.txt.

Mod also expands custom mode, randomized or not:

  • ENERGY, Ro's energy per turn.
  • "These cards cost 1 more" is split into a toggle for each kind of card, so more than one can be on.
  • "Realm cards cost 1 more" has an ALL REALMS choice: both foreign cards and cards from the realm you're in cost 1 more. Basic, quest, spirit and curse cards are left out, as the game's own realm choices do.

In a randomized game, every menu tab and fast travel are open from the start, and the tutorial's "press ..." tips don't show.

Randomizer adds hints to materials screen: a material gets a bright rim when it can still be found in current region. That means a pickup there she hasn't taken, or a drop from a spirit there. With scarce_howls on, only fights with uncollected spoiles count.

Options

Everything on the in-game screen is also stored in BepInEx/config/randomhowl.cfg. These are the settings new games get.

When a new game starts, whether it is randomized is saved to profile_<N>.randomhowl.cfg in the game's saves_v_1_0 folder, next to that save. For a randomized game, every setting except skip_logos, skip_intro, auto_text and spoiler_log is copied there too.

SettingValuesWhat it does
enabledtrue / falseWhether a new custom mode game is randomized. Same as the RANDOMIZER row on the custom mode screen
seedtextSame seed, same shuffle. Empty picks a random one
spiritsOff / On / RestrictedShuffle spirits between fights. Environmental objects shuffle with each other. Restricted swaps elder spirits only with elder spirits, and plain spirits only with plain ones. With elder_percent set, it keeps elder spirits in elder spirit fights instead
card_giftsOff / On / EverythingShuffle which card each reward gives. Everything adds elder spirit gifts and Fylge cards. A reward card that nothing gives any more can be crafted instead, using the recipe of a card that took its place
elder_percent-1 to 100Share of spirits that appear as elder spirits. With spirits set to Restricted, it only counts spirits in elder spirit fights. -1 keeps the vanilla amount (about 23%)
totemstrue / falseShuffle totem pickups
ingredientstrue / falseShuffle ingredient pickups
entrancesOff / On / DecoupledShuffle where caves lead. On keeps caves in pairs, so walking back out of a cave puts you where you came in. Decoupled sends every cave mouth and exit somewhere random.
card_realmstrue / falseShuffle which realm each card belongs to
recipestrue / falseShuffle which ingredients each card needs
player_energy1 to 20Ro's energy per turn in a custom mode game, before totems and skills. Same as the ENERGY row on the custom mode screen. Copied into every custom mode save, randomized or not. Vanilla is 5
scarce_howlstrue / falseHowls are kept on death and crafting is free, but beaten fights pay no howls or ingredients again. Howls are only spent on skill points. Spirits are placed so there's enough ingredients to craft every card up to its default copy limit
all_cards_revealedtrue / falseAll craftable cards are in the card book from the start
tear_healthtrue / falseEnemies get 1% more health for each blood tear placed on the skill tree, up to 75% more
open_worldtrue / falsePaths from forest are open from the start
skip_logostrue / falseSkip the publisher logos
skip_introtrue / falseSkip the opening cutscene
auto_texttrue / falseDialogue boxes click through on their own, skipping the letter-by-letter text. Choices still wait
spoiler_logtrue / falseWrite a spoiler log

The [custom] section holds the rest of the custom mode screen.

SettingValuesWhat it does
rebirth_cardstrue / falseUse rebirth mode's cards
rebirth_enemiestrue / falseUse rebirth mode's enemies
enemy_health_percentnumberEnemy health, as a percent of normal
player_healthnumberRo's health
high_deck_minimumtrue / falseDecks need at least 20 cards instead of 15
crafting_limitnumberCopies of each card that can be crafted. -1 is the normal limit
realm_cost0 to 3Which realm cards cost 1 more: 0 foreign, 1 the realm you're in, 2 none, 3 all realms
kind_costnumberWhich kinds of card cost 1 more. Easier to set on the screen
return_to_grovetrue / falseGo back to the grove when Ro dies

Uninstall

Delete BepInEx/plugins/RandomHowl/.

Contributors

serprex

21 commits

serprex/RandomHowl

Death Howl Randomizer

0

stars

21

commits

C#

primary language

Sep 15, 2026

updated

store.steampowered.com/app/2825880/Death_Howl

README

A no logic randomizer mod for Death Howl. Shuffles spirits, pickups, caves, card realms, recipes and card rewards.

Requirements

1. Install BepInEx

  1. Extract BepInEx into the game folder, next to Death Howl.exe.

  2. Linux / Steam Deck only: in Steam, set the game's launch options to:

    WINEDLLOVERRIDES="winhttp=n,b" %command%
    
  3. Start the game once and quit. This lets BepInEx create its folders.

BepInEx must be installed before you build, because the build uses the BepInEx and Unity files from the game folder.

2. Build

Point the build at the game's Death Howl_Data folder:

dotnet build mod -c Release -p:GameDir="/path/to/Death Howl/Death Howl_Data"

Instead of passing GameDir every time, you can set the DEATH_HOWL_DATA environment variable, or create mod/Local.props:

<Project>
  <PropertyGroup>
    <GameDir>/path/to/Death Howl/Death Howl_Data</GameDir>
    <!-- optional: copy the plugin here after each build -->
    <PluginDir>/path/to/Death Howl/BepInEx/plugins/RandomHowl</PluginDir>
  </PropertyGroup>
</Project>

Local.props is gitignored. If BepInEx is not in the usual place next to Death Howl_Data, set BepInExDir as well.

The build stops with an error if it can't find the game or BepInEx.

3. Install

If you set PluginDir, the build already copied the plugin. Otherwise copy mod/bin/Release/RandomHowl.dll to:

Death Howl/BepInEx/plugins/RandomHowl/

Playing

  1. On title screen, open RANDOMIZER.
  2. Enter seed, or leave it empty for a random one, and pick your options.
  3. Start a new game in custom mode, with RANDOMIZER enabled.

If spoiler log is on, it is written next to plugin as spoiler-<seed>.txt.

Mod also expands custom mode, randomized or not:

  • ENERGY, Ro's energy per turn.
  • "These cards cost 1 more" is split into a toggle for each kind of card, so more than one can be on.
  • "Realm cards cost 1 more" has an ALL REALMS choice: both foreign cards and cards from the realm you're in cost 1 more. Basic, quest, spirit and curse cards are left out, as the game's own realm choices do.

In a randomized game, every menu tab and fast travel are open from the start, and the tutorial's "press ..." tips don't show.

Randomizer adds hints to materials screen: a material gets a bright rim when it can still be found in current region. That means a pickup there she hasn't taken, or a drop from a spirit there. With scarce_howls on, only fights with uncollected spoiles count.

Options

Everything on the in-game screen is also stored in BepInEx/config/randomhowl.cfg. These are the settings new games get.

When a new game starts, whether it is randomized is saved to profile_<N>.randomhowl.cfg in the game's saves_v_1_0 folder, next to that save. For a randomized game, every setting except skip_logos, skip_intro, auto_text and spoiler_log is copied there too.

SettingValuesWhat it does
enabledtrue / falseWhether a new custom mode game is randomized. Same as the RANDOMIZER row on the custom mode screen
seedtextSame seed, same shuffle. Empty picks a random one
spiritsOff / On / RestrictedShuffle spirits between fights. Environmental objects shuffle with each other. Restricted swaps elder spirits only with elder spirits, and plain spirits only with plain ones. With elder_percent set, it keeps elder spirits in elder spirit fights instead
card_giftsOff / On / EverythingShuffle which card each reward gives. Everything adds elder spirit gifts and Fylge cards. A reward card that nothing gives any more can be crafted instead, using the recipe of a card that took its place
elder_percent-1 to 100Share of spirits that appear as elder spirits. With spirits set to Restricted, it only counts spirits in elder spirit fights. -1 keeps the vanilla amount (about 23%)
totemstrue / falseShuffle totem pickups
ingredientstrue / falseShuffle ingredient pickups
entrancesOff / On / DecoupledShuffle where caves lead. On keeps caves in pairs, so walking back out of a cave puts you where you came in. Decoupled sends every cave mouth and exit somewhere random.
card_realmstrue / falseShuffle which realm each card belongs to
recipestrue / falseShuffle which ingredients each card needs
player_energy1 to 20Ro's energy per turn in a custom mode game, before totems and skills. Same as the ENERGY row on the custom mode screen. Copied into every custom mode save, randomized or not. Vanilla is 5
scarce_howlstrue / falseHowls are kept on death and crafting is free, but beaten fights pay no howls or ingredients again. Howls are only spent on skill points. Spirits are placed so there's enough ingredients to craft every card up to its default copy limit
all_cards_revealedtrue / falseAll craftable cards are in the card book from the start
tear_healthtrue / falseEnemies get 1% more health for each blood tear placed on the skill tree, up to 75% more
open_worldtrue / falsePaths from forest are open from the start
skip_logostrue / falseSkip the publisher logos
skip_introtrue / falseSkip the opening cutscene
auto_texttrue / falseDialogue boxes click through on their own, skipping the letter-by-letter text. Choices still wait
spoiler_logtrue / falseWrite a spoiler log

The [custom] section holds the rest of the custom mode screen.

SettingValuesWhat it does
rebirth_cardstrue / falseUse rebirth mode's cards
rebirth_enemiestrue / falseUse rebirth mode's enemies
enemy_health_percentnumberEnemy health, as a percent of normal
player_healthnumberRo's health
high_deck_minimumtrue / falseDecks need at least 20 cards instead of 15
crafting_limitnumberCopies of each card that can be crafted. -1 is the normal limit
realm_cost0 to 3Which realm cards cost 1 more: 0 foreign, 1 the realm you're in, 2 none, 3 all realms
kind_costnumberWhich kinds of card cost 1 more. Easier to set on the screen
return_to_grovetrue / falseGo back to the grove when Ro dies

Uninstall

Delete BepInEx/plugins/RandomHowl/.

Contributors

serprex

21 commits

Languages

C#

100.0%