Schedule I
DigitalHeaven.Games.ScheduleOne Complete is a BepInEx 5 mod that brings DigitalHeaven avatar replacement to Schedule I.
Requirements
Section titled “Requirements”| Mod loader | BepInEx 5 |
| Game version | Mono (alternate branch on Steam) |
| Rendering pipeline | URP |
| Humanoid rig | Full Unity Avatar rig (17 required bones) |
This mod depends on the DigitalHeaven.Unity library for model loading, rig setup, and material creation.
Core Features
Section titled “Core Features”| Feature | Status |
|---|---|
| Overlay | Yes |
| Avatar replacement | Yes |
| Spring bones | Yes |
Multiplayer Features
Section titled “Multiplayer Features”| Feature | Status |
|---|---|
| Avatar sync | Yes |
| Pallet transfers | Yes |
| NPC replacement | Yes |
| Lobby expansion | Yes |
Multiplayer avatar sync includes automatic pallet transfers — when you see another player’s avatar, any missing pallets (including dependencies) are transferred peer-to-peer over the game’s network.
In-Game Configuration
Section titled “In-Game Configuration”Config file: BepInEx/config/io.mltn.digitalheaven.scheduleone.cfg
Set your avatar using a barcode — the full pallet.id:path/to/asset identifier from your compiled pallet.
| Setting | Section | Default | Description |
|---|---|---|---|
PlayerAvatar | [DigitalHeaven] | "" | Barcode for the player avatar |
NPCAvatar | [DigitalHeaven] | "" | Barcode for NPC avatars (empty = disabled) |
MaxPlayers | [Lobby] | 4 | Maximum lobby size when hosting (4–12). Clients adapt automatically. |
Example Configuration
Section titled “Example Configuration”[DigitalHeaven]
## Full barcode for the player avatar (e.g. io.example.avatar:avatar.dh-avatar)PlayerAvatar = io.example.my-avatar:avatar.dh-avatar
## Full barcode for NPC avatars. Leave empty to disable NPC replacement.NPCAvatar =
[Lobby]
## Maximum lobby size when hosting. Set to 4 for vanilla behavior.## Clients joining your lobby adapt automatically.# MaxPlayers = 4Development Setup
Section titled “Development Setup”The mod project lives at Games/DigitalHeaven.Games.ScheduleOne/ and is included in the main DigitalHeaven.sln solution under the Games folder.
Local Configuration
Section titled “Local Configuration”Copy DigitalHeaven.Games.ScheduleOne.csproj.user.example and remove the .example extension. This file configures your local game install path and is git-ignored:
<Project> <PropertyGroup> <!-- Set this to your Schedule I game install path --> <ScheduleOneDir>C:\Program Files (x86)\Steam\steamapps\common\Schedule I</ScheduleOneDir> </PropertyGroup></Project>By default, ScheduleOneDir is used to locate both BepInEx assemblies and the game’s managed assemblies. If your setup has these in different locations (e.g. when using an r2modman profile), you can override them individually:
| Property | Default | Description |
|---|---|---|
ScheduleOneDir | (see .csproj) | Base game path. Controls everything if the other properties are not set. |
ScheduleOneBepInExDir | $(ScheduleOneDir)\BepInEx | Root BepInEx directory containing core\ and plugins\ folders. |
ScheduleOneManagedDir | $(ScheduleOneDir)\Schedule I_Data\Managed | Directory containing the game’s managed assemblies (Unity engine, Assembly-CSharp, etc.). |
For example, with an r2modman profile where BepInEx and plugins live in the profile but managed DLLs are in the Steam install:
<Project> <PropertyGroup> <ScheduleOneDir>D:\SteamLibrary\steamapps\common\Schedule I</ScheduleOneDir> <ScheduleOneBepInExDir>C:\Users\you\AppData\Roaming\r2modmanPlus-local\ScheduleI\profiles\Default\BepInEx</ScheduleOneBepInExDir> </PropertyGroup></Project>Building
Section titled “Building”The project references BepInEx DLLs from $(ScheduleOneBepInExDir)\core\ and game assemblies from $(ScheduleOneManagedDir). After building, a post-build target automatically deploys the mod and its dependencies to $(ScheduleOneBepInExDir)\plugins\DigitalHeaven\.
The project targets netstandard2.1 and references both DigitalHeaven.Core and DigitalHeaven.Unity as project dependencies.