Skip to content
DooDesch edited this page Jul 2, 2026 · 2 revisions

Inkorporated Wiki

🛟 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.

Pages

  • Getting Started - install it, enable the bundled example pack, make your first tattoo.
  • Pack Format - the manifest.json schema and folder layout (the no-code route).
  • API Reference - Inkorporated.API for 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.

Requirements

  • 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

How it works (in one paragraph)

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.

Clone this wiki locally