-
Notifications
You must be signed in to change notification settings - Fork 0
Home
🛟 Need help or found a bug? Get support at support.doodesch.de.
Mod repo · Example repo · Support
Inkorporated is the custom-tattoo framework for Schedule I. On its own it adds no tattoos - it is the dependency that tattoo packs and tattoo-adding mods build on. Install it alongside a pack (or another mod that uses it) and the new tattoos appear in the in-game tattoo shop, where the game renders, saves and co-op-syncs them exactly like vanilla tattoos.
This wiki is the guide for making tattoos. There are two ways, and you can use either:
| Route | What it is | Needs C#? | Page |
|---|---|---|---|
| Content pack | A folder of PNGs + a small manifest.json you ship as a mod |
No | Pack Format |
| The API | A MelonLoader mod that calls Inkorporated.API at runtime |
Yes | API Reference |
A complete, working example of both routes lives in the example repo: ScheduleOne-InkorporatedExample.
- Getting Started - install it, enable the bundled example pack, make your first tattoo.
-
Pack Format - the
manifest.jsonschema and folder layout (the no-code route). -
API Reference -
Inkorporated.APIfor code mods (register at runtime, NPCs, dynamic packs). - Authoring Tattoos - the part people get wrong: a tattoo is a full UV-space skin texture, not a sticker. How to align art, recommended sizes, full sleeves, UV templates.
- Multiplayer Saves and NPCs - how tattoos persist + sync, and applying a tattoo to an S1API NPC.
- Troubleshooting - tattoo not showing, landing on the wrong limb, button missing, MP visibility.
- Schedule I (IL2CPP, current Steam public build)
- MelonLoader
0.7.3+ - S1API (ifBars/S1API_Forked)
- Optional: Mod Manager & Phone App for the in-game settings UI
For each custom tattoo, Inkorporated loads your PNG into a Texture2D, clones a built-in AvatarLayer of
the matching placement (via S1API's AvatarLayerFactory) with your texture swapped in, and registers it at
a custom Resources path (S1API's RuntimeResourceRegistry patches Resources.Load). It then adds a button
to the tattoo shop's matching category. From there the game's own avatar pipeline loads, renders, saves and
networks the tattoo like any vanilla one - which is why no asset bundles or render hooks are needed.