TM 6-785 Deadly Dozen Reloaded

Field Modification Manual  ·  StixsworldHD (StixsmasterHD4k)

02
Section Install BepInEx 6
Allow 10 min
Start from Section 01 complete — folder found, staging folder ready

Install BepInEx 6

This archive is not a stock BepInEx download. It is build 6.0.0-be.785 with one deliberate addition that removes the most common first-run failure on this game entirely. Understanding that addition is worth the four minutes it takes.

01 What is in the archive

Extract it into your staging folder — not into the game. Inside the single top-level folder you get 229 files in this shape:

Archive contents
  • DeadlyDozenReloaded-BepInEx-Unity_IL2CPP-win-x64-6_0_0-be_785_6abdba4\ this wrapper folder does not get copied
    • winhttp.dll 26 KB — Unity Doorstop 4.5.0, the injector
    • doorstop_config.ini 1.6 KB — what to load and where the runtime is
    • .doorstop_version contains the single line 4.5.0
    • changelog.txt 71 changes since v6.0.0-pre.2 — reference only
    • dotnet\ ~180 files — a self-contained CoreCLR runtime
    • BepInEx\
      • core\ 39 assemblies — the loader, Cpp2IL, Il2CppInterop, Harmony, MonoMod
      • patchers\ empty — preloader patchers go here; you have none
      • plugins\ empty — sections 04 and 05 fill this
      • unity-libs\
        • 2019.4.9.zip 3.2 MB — the special configuration. Read task 4.
  • You copy this in
  • BepInEx creates this on first run
  • Shipped with the game — do not touch
  • Delete this and nothing loads

02 Copy it into the game

You copy the contents of the extracted folder, not the folder itself. Select all five items — winhttp.dll, doorstop_config.ini, .doorstop_version, dotnet and BepInEx — and drop them into <game folder>, next to DeadlyDozenReloaded.exe.

Where things land
Right, not wrong:

  <game folder>\winhttp.dll                    correct
  <game folder>\BepInEx\core\                 correct

  <game folder>\DeadlyDozenReloaded-BepInEx-…\winhttp.dll    WRONG
  <game folder>\BepInEx\BepInEx\core\                        WRONG

.doorstop_version starts with a dot, so some file managers hide it. It is a one-line text file that lets Doorstop report its own version; the install works without it, but copy it anyway. If you cannot see it, turn on hidden files in Explorer's View tab.

03 What each piece actually does

FileJob
winhttp.dllUnity Doorstop 4.5.0. Windows resolves DLL names from the executable's own folder first, so this proxy loads instead of the real system winhttp.dll, forwards every genuine call on to it, and uses the opportunity to start a .NET runtime inside the game process and hand control to BepInEx.
doorstop_config.iniThe injector's only instruction sheet: whether it is enabled, which assembly to hand control to, and where the CoreCLR runtime lives.
dotnet\A complete, self-contained CoreCLR runtime and base class library. This is why you do not need to install .NET yourself — the loader brings its own and never touches a machine-wide installation.
BepInEx\core\39 assemblies. The loader proper (BepInEx.Unity.IL2CPP.dll), the IL2CPP reconstruction toolchain (Cpp2IL.Core, LibCpp2IL, AsmResolver, Il2CppInterop.*), and the patching stack (0Harmony, MonoMod.*, Mono.Cecil).
BepInEx\unity-libs\Reference assemblies for the Unity version the game was built with. Task 4 is entirely about this folder.
BepInEx\patchers\Preloader patchers — code that runs before the game's assemblies load. Nothing in this manual uses one.
BepInEx\plugins\Where mods go. Ungodly GFX and OG Sound Remaster both land here.

doorstop_config.ini, the two lines that matter

The file ships correct for this game and needs no edits. These are the settings worth recognising if you ever have to debug it:

doorstop_config.ini — the load-bearing lines
[General]
enabled = true
target_assembly = BepInEx\core\BepInEx.Unity.IL2CPP.dll

[Il2Cpp]
coreclr_path = dotnet\coreclr.dll
corlib_dir   = dotnet
  • enabled — set this to false to disable every mod for one session without deleting anything. Faster and safer than moving files around when you want to check whether a problem is yours or the game's.
  • target_assembly — points at the IL2CPP loader specifically. If you ever see this pointing at BepInEx.Unity.Mono.dll, you have the wrong package and nothing will load.
  • coreclr_path and corlib_dir — both relative to the game folder, both pointing into dotnet\. This is the pairing that makes the install self-contained. If you delete dotnet\ to save space, the game will launch and silently run unmodded.

04 The special configuration: a pre-seeded unity-libs

This is the one thing that makes this archive different from a stock BepInEx download, and it is worth understanding because it is the difference between a first launch that works and a first launch that dies with a download error.

The problem it solves

To give plugins a normal C# surface, BepInEx has to rebuild the game's type information from its native binary. That process needs a set of reference assemblies matching the Unity version the game was built with, and BepInEx does not ship them — there are hundreds of Unity versions. Instead it downloads the right set at first run. Its own configuration describes the rule exactly:

BepInEx.cfg — [IL2CPP] UnityBaseLibrariesSource, quoted from the loader itself
UnityBaseLibrariesSource = https://unity.bepinex.dev/libraries/{VERSION}.zip

  URL to a ZIP file with managed Unity base libraries. They are used by
  Il2CppInterop to generate interop assemblies.

  The URL can include {VERSION} template which will be replaced with the
  game's Unity engine version.

  If a .zip file with the same filename as the URL (after template
  replacement) already exists in unity-libs, it will be used instead of
  downloading a new copy.

  If you want to ensure BepInEx doesn't try to connect to the internet, set
  this to only the .zip filename (without a URL) and manually place the file
  in the unity-libs directory.

So the first launch normally reaches out to unity.bepinex.dev for 2019.4.9.zip. That is a single point of failure sitting in the middle of your install: the server has to be up, it has to have that exact version, your firewall has to allow the game process to make an outbound HTTPS request, and you have to be online at all. When any of those fails, BepInEx stops with this:

What you would see without the pre-seed
[Error  :   BepInEx] Failed to download Unity base libraries for Unity 2019.4.9
Base libraries for this Unity version may not be available on the server yet.
Download a matching base-libraries .zip and place it in the
"…\BepInEx\unity-libs" directory, or set the [IL2CPP]
UnityBaseLibrariesSource config option to a valid URL.

The fix, already applied

BepInEx\unity-libs\2019.4.9.zip is already in the archive. The filename is not decorative — it is matched literally against the version BepInEx resolves for this game, and because it matches, the download step is skipped entirely and the local copy is used.

The result: the first launch never touches the network. No server dependency, no firewall prompt, no version-availability question, and the same deterministic outcome on every machine you install this on.

05 Do not launch yet — one decision first

The next section is the long first launch. Before you start it, decide whether you want to watch it happen. You have two options and the second one is better if anything goes wrong.

  1. Just launch. Simplest. Everything is written to BepInEx\LogOutput.log anyway, so nothing is lost — you just cannot see progress while it runs, and a first launch with no visible feedback is unnerving.
  2. Launch once, turn on the console, launch again. The console is off by default and its setting lives in BepInEx\config\BepInEx.cfg, which does not exist until after a launch. So: run once to generate the config, quit, switch the console on, run again. Section 03 walks through both runs.

Before moving on

0 of 6 confirmed