Skip to content

Kits

Reusable libraries for Outward mods. A kit isn't installed on its own — a mod that needs it declares a dependency ([BepInDependency]) and BepInEx loads the kit first.

If you're a player, you don't interact with these directly; they arrive as dependencies of the mods you install. This section is for modders building on them.

Which kit do I need?

Kit Use it to… Depends on SideLoader
ForgeKit add dev commands, self-tests, on-screen toasts, config-backed data tables, and register keybinds no
AggroKit control what enemies target (force-target, calm, taunt) ForgeKit no
NetKit sync your own state across a Photon co-op session ForgeKit no
SkillKit ship a custom learnable skill (active or passive) ForgeKit yes (runtime)
StoryKit add an NPC / trainer with dialogue and a skill tree ForgeKit yes (compile)
CompanionKit give the player a persistent creature companion ForgeKit, AggroKit, NetKit no
SpawnKit spawn creatures at runtime as real vanilla enemies ForgeKit, CompanionKit, NetKit no

The layering

Kits stack bottom-up. Everything rests on ForgeKit; CompanionKit is the mid-tier that persistent-companion features build on; SpawnKit sits on top of it.

ForgeKit                      dev tooling — no dependencies
  ├── AggroKit                aggro / threat control
  ├── NetKit                  Photon co-op transport
  ├── SkillKit                custom skills            (+ SideLoader)
  ├── StoryKit                NPCs / trainers          (+ SideLoader)
  └── CompanionKit            persistent companions    (needs ForgeKit + AggroKit + NetKit)
        └── SpawnKit          runtime creature spawns  (needs CompanionKit + NetKit)

Mods then combine these: Beastwhispering uses ForgeKit, SkillKit, CompanionKit, AggroKit, NetKit, and StoryKit; Hireling uses ForgeKit, CompanionKit, AggroKit, and NetKit.

Conventions shared by every kit

  • Each ships as its own BepInEx/plugins/<Kit>/ folder with plugin GUID cobalt.<name>.
  • Each has a dev-command channel — write a verb into BepInEx/config/<Kit>_cmd.txt and it runs on the next poll (even while the game is paused). Unknown verb or help lists them all. This is ForgeKit's command channel.
  • Runtime settings live in BepInEx/config/cobalt.<name>.cfg, generated on first launch.

See also