CompanionKit

v0.4.29·Updated 2026-09-06

Persistent-creature companion mechanics for Outward mods: clone/brain-strip body factory, navmesh follower, invisible combat anchor, manual combat. Donor-scene harvesting and template caching moved to

About this mod Author’s original text

CompanionKit — persistent-companion mechanics for Outward mods

📖 Full documentation: CompanionKit wiki page

A BepInEx library for modders. It doesn't add anything a player sees on its own — install it

because a mod you're using (a follower, a summon, a spawner) declares it as a dependency.

It exists because Outward has no way to spawn a fresh creature at runtime: every creature is baked

into the scene it lives in. CompanionKit's answer is donor-scene harvesting — any area is an

ordinary scene you can load additively, clone a live creature out of, and unload again in about a

second. DonorHarvest wraps that whole recipe, plus the audio/Photon/save guards that make it safe,

behind one call. On top of that sits everything needed to turn a cloned body into a companion that

follows, fights, and survives zone changes.

Requires: BepInEx 5 (Outward's Mono branch — see Compatibility) plus ForgeKit,

DonorKit, AggroKit and NetKit — all four declared [BepInDependency] hard dependencies.

No SideLoader.

Installing (for players)

Drop the CompanionKit folder into BepInEx/plugins, alongside ForgeKit, DonorKit,

AggroKit/ and NetKit/ — BepInEx refuses to load CompanionKit if any one of them is absent, and

names the missing GUID in the log. A mod manager does this for you. On its own the kit does nothing except expose the expedition command channel and

config described below.

What's in the kit

| Piece | What it gives you |

|---|---|

| BodyFactory | Clone a live creature into a usable body: consume vs no-consume modes, the deep brain-strip that makes a clone inert and safe (its AI, colliders and networking are the things that bite), a ghost stand-in path for humanoid rigs, and visibility diagnostics/repair. |

| CompanionBody | NavMeshAgent-driven follow: distance-banded catch-up speed (the vanilla cosmetic-pet feel), zone re-placement, leash/warp with a run-home grace window and a behind-the-owner landing, root-bone auto-calibration (the fix for creatures that drift and snap as they walk), per-rig yaw offsets, animator driving. Exposes OnAfterMove so subscribers run after the frame's pose is final, and OnWarpedToOwner after every owner-keyed reposition (reason string: Leash / CantReach / Resummon / ZoneReplace / Latched / CoverageGap). StaySpot pins the goal for a Stay order. |

| CompanionAnchor | The invisible vanilla ally that acts as the companion's real combat body — a stripped clone is untargetable, so the anchor absorbs enemy detection, aggro and damage, welded to the body every frame. Owns HP and stat seams. |

| CompanionCombat | Manual combat for a brain-stripped body: target selection (commanded > defend-the-anchor > assist-the-owner), a damage pipeline that shows up in CombatHUD, species-typed damage profiles, engage/disengage. |

| AttributeCapture | Reads a live Character's real stats (resistances, health, natural weapon damage, movement) into a portable Core.CreatureAttributes. |

| DonorHarvest + its guards | "Body anywhere": additively load any donor scene, clone, unload — with the audio-registry, PhotonView-collision and mid-harvest-save guards that make it survivable. The species→scene table ships embedded (DonorScenes.txt) and is overridable from BepInEx/config. |

| Companion / CommandStance | The aggregate whose lifetime is the bond, not the body — bodies get destroyed and rebuilt, standing orders and anchor state must not. CommandStance is an adapter over the pure Core.StanceMachine (Engage / Follow / Stay = Core.CommandMode; orders + WarpedToOwner/NewBody are Core.StanceSignals; ring = Core.CommandCycle), raises Changed on every transition and keeps LastWhy. Extension recipe: docs/wiki/kits/companionkit.md § stance state machine. |

| ExpeditionHarvest / BodyTemplateCache | Creatures from oversized scenes (region terrains, which cannot be loaded additively — it crashes): a real round trip through the vanilla loading screen that batch-caches dormant body templates for the rest of the session. Now DonorKit's (lane 5E-2 — st

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.

Dependencies

Install these first, or the mod will not work:

BepInEx-BepInExPack_OutwardCeruleanCutlass-ForgeKitCeruleanCutlass-AggroKitCeruleanCutlass-DonorKitCeruleanCutlass-NetKit

File & checksum

Filename
CompanionKit-0.4.29.zip
File size
461.4 KiB