CeruleanCutlass-Beastwhispering icon

Beastwhispering

Tame wild creatures of Aurai and keep them as real, persistent companions: feed and bond with them, fight alongside them with Hunt as One and For the Kill, manage their comfort and temperature, and grow a lasting bond across saves.

Last updated 2 weeks ago
Total downloads 685
Total rating 3 
Categories Mechanics Skills Utility Misc
Dependency string CeruleanCutlass-Beastwhispering-0.2.18
Dependants 0 other packages depend on this package

This mod requires the following mods to function

BepInEx-BepInExPack_Outward-5.4.19 icon
BepInEx-BepInExPack_Outward

BepInEx pack for Outward.

Preferred version: 5.4.19
sinai-dev-SideLoader-3.8.4 icon
sinai-dev-SideLoader

API and Mod Development Toolkit for Outward.

Preferred version: 3.8.4
CeruleanCutlass-ForgeKit-0.4.13 icon
CeruleanCutlass-ForgeKit

Dependency-free dev-tooling for Outward BepInEx mods: file-driven dev command loop, self-test harness, on-screen toasts, player-ready lifecycle wait, embedded/override table loaders, and a shared dev-verb pack (movement/combat/skill/status probes).

Preferred version: 0.4.13
CeruleanCutlass-CompanionKit-0.4.29 icon
CeruleanCutlass-CompanionKit

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 DonorKit; aggro control to AggroKit.

Preferred version: 0.4.29
CeruleanCutlass-AggroKit-0.1.6 icon
CeruleanCutlass-AggroKit

Reusable aggro/threat control tooling for Outward BepInEx mods: per-pair targetability gates, detection veto/redirect, taunt and force-target primitives. Inert until a mod uses it — a library dependency, installed automatically.

Preferred version: 0.1.6
CeruleanCutlass-SkillKit-0.1.6 icon
CeruleanCutlass-SkillKit

Ship a learnable custom skill for Outward without rediscovering the traps: SideLoader pack-load wiring, effect-bucket routing, the stuck-cast guard, dynamic quickslot icons, native cast sync. Requires SideLoader. Auto-installed as a dependency.

Preferred version: 0.1.6
CeruleanCutlass-StoryKit-0.1.12 icon
CeruleanCutlass-StoryKit

Add an NPC to Outward as plain data: StoryKit builds the character, spawns it at a fixed spot, wires its dialogue, and compiles a trainer skill tree that sells from the vanilla Trainer UI. Requires SideLoader at runtime. A library dependency.

Preferred version: 0.1.12
CeruleanCutlass-NetKit-0.2.10 icon
CeruleanCutlass-NetKit

Shared Photon co-op transport layer for Outward BepInEx mods: channels over one relay, a hello/peer ledger, per-channel counters/heartbeat, PUN diagnostics, and a replicated-record store for consumer state mirroring.

Preferred version: 0.2.10
CeruleanCutlass-DonorKit-0.1.9 icon
CeruleanCutlass-DonorKit

The donor-scene harvest engine for Outward BepInEx mods: additively load any area, clone a live creature into a dormant template, and unload cleanly. Library dependency, installed automatically when another mod (SpawnKit, CompanionKit) needs it.

Preferred version: 0.1.9

README

Beastwhispering — tame the wild animals of Aurai

Tame wild creatures and keep them as real, persistent companions. A tamed pet follows you, fights beside you, and survives zone changes and save/reload — it's not a summon, it's a character in your game the same way you are.

⚠ Updating from a build made before 2026-07-30? Your save loses every Beastwhispering item (chow, recipe scrolls, blankets, sigils, feathers), every Beastwhispering skill you have learned, and the fletching enchantment on arrows you already fletched — the mod moved onto its community-allocated item-id range and the old numbers no longer resolve. Your pets are not affected: bonds, loyalty, names and stats are stored by name, not by item id. A fresh character avoids the loss entirely. Full detail in CHANGELOG.md.

⚠ Known issue — taming works in single-player only. Right now the taming itself (using chow on a wild creature to bond it) only succeeds in a single-player session. Once a creature is tamed, it is fully playable in multiplayer: your pet comes with you into co-op, follows, fights, feeds, bonds and persists exactly as it does solo. So the workaround is simply to tame your companion in single-player first, then take it into your co-op session. This is a bug, not a design decision, and we are working diligently to resolve it.

This is actively-developed software. It is playable and it is being tested, but you will find rough edges. Back up your saves before you install. See the release notes for known issues.

Currently tamable: Hyena, Armored Hyena, Veaber, Pearlbird — each with their own diet, combat style, and species-specific bonuses.

  • Taming & bonding — win a wild animal over with the right food, then build loyalty over time through feeding, care, and fighting alongside it.
  • Combat — Hunt as One and For the Kill give your pet (and you) real combat presence, not a passive follower.
  • Care — feed, manage temperature/comfort, and keep your companion alive through the world's hazards. Heating and cooling blankets are crafted; their recipes are also meant to turn up in world loot containers — chests, and the odd containers like broken tents, hollowed trunks and junk piles. (The drop path is new and hasn't been confirmed in a real game yet — craft from a known recipe if you don't see one.)
  • Persistence — your pet remembers you. Loyalty, stats, and bond state survive quitting, reloading, and traveling between regions.
  • Co-op — play with your companion in a multiplayer session. (Taming itself is single-player only for now — see the known issue above.)

Roadmap

The tameable roster is small right now, and that's deliberate, not a shortcut. Every release keeps adding more of Aurai's creatures — but each one is built as a deep, lore-accurate companion in its own right, not a reskin with a different portrait. We'd rather ship fewer pets that each feel like a real reason to pick that species — a distinct playstyle niche, abilities and stats grounded in how the creature actually behaves in Outward's world — than a long list of interchangeable ones. If your favorite creature isn't tameable yet, it's very likely on the list; it just hasn't gotten its due care yet.

Requires: SkillKit, CompanionKit, ForgeKit, StoryKit and AggroKit — all five declared [BepInDependency] hard dependencies, installed automatically by a mod manager. Those in turn pull in NetKit and DonorKit. SideLoader must also be present at runtime. BepInEx refuses to load a plugin whose hard dependency is missing, so a partial hand-install means Beastwhispering never starts at all — check BepInEx/LogOutput.log, which names the missing GUID.

Settings

BepInEx/config/cobalt.beastwhispering.cfg, created on first launch. It is a large file; these are the keys most people want:

[Keys]
## F7 tame · F8 feed · F9 recall · F10 self-test · F12 diagnostics.
TameKey = F7
FeedKey = F8
RecallKey = F9

[Taming]
## Chance a tamable creature drops its taming-food recipe scroll on death (0-1).
RecipeDropChance = 0.33

[Temperature]
## Chance each blanket recipe scroll drops from a placed world loot container (0-1).
BlanketRecipeDropChance = 0.05

Every generated entry carries its own # Default value: comment and a full description. ⚠ BepInEx never migrates a changed default into an existing cfg, so an install made before a value changed keeps whatever number is already written in the file — compare against those comments before reporting a bug. The values above are illustrative of the shape; the file itself is authoritative.

Dev/diagnostic commands are read from BepInEx/config/bw_cmd.txt (write a verb on its own line; help lists the full set). They exist for debugging, not for play.

Combat style — the Pearlbird's opposite stance

Each species has a combatStyle axis in its manifest (data/species/<Name>.jsonCombatStyleTable): chase (default — close to melee on the target) or opposite (the Pearlbird: station on the FAR side of the target so the mob sits between you and the bird, then hold there). The stationing itself is CompanionKit's — the deadband, the far rule and the cap are documented in the CompanionKit README; the knobs are bound HERE (BepInEx/config/cobalt.beastwhispering.cfg, [Combat]: StationRingFraction = 0.6, StationLineAngleDeg = 20, StationRestationMeters = 3, StationRestationSeconds = 2, StationArriveMeters = 0.8, StationMaxRestations = 6, StationFarMeters = 3, StationProgressMeters = 1 — the real defaults; the last one is the converge-or-chase gate: two far re-stations in a row that close less than this much ground on the station mean the mob is dragging it away faster than the bird can walk, so the bird gives up the stance and plainly chases). Beastwhispering adds the station-pin: once the bird is planted and the mob is at its reach, a short taunt pins the mob onto the bird so you can kite. Same file, [Combat] (defaults shown):

[Combat]
## Opposite stance: briefly pin the enemy's attention onto the pet once it reaches its station.
StationPin = true
## Opposite stance: how long (s) one station pin holds the enemy's attention on the pet.
StationPinSeconds = 3
## Opposite stance: minimum seconds between station pins.
StationPinCooldownSeconds = 3

[Brace] EnableTaunt = false silences the pin too (it is the one taunt kill-switch). In co-op a GUEST's bird has no local anchor (the master's proxy anchor is its body), so the pin skips the anchor and "already locked on the bird" rungs there and routes anchor-less to the master ([TAUNT] … routed to the master). Verbs: petstyle [chase|opposite] (print or override the live body's style — a re-formed body goes back to the table) and stationdump (knobs → table → live station / corridor angle → pin state). Log tag [STATION] (set: why=first / restation #n why=… / planted / cap fallback / pin #n); plan docs/pearlbird-station-testplan.md.

Converge (the "mob moves itself" half). The planted pin only arms after the bird has reached its station — i.e. after the chase already succeeded, and against a mob that keeps repositioning it never does (the why=far churn). Two additive pieces close that: the converge pin arms the same taunt while the bird is still walking to its station, once the mob is within StationConvergeReachMultiplier × AttackRange (7.8 m by default) — shorter hold, wider cooldown — so the mob turns onto the bird's anchor and walks into the corridor the bird is building; and the fast hold stops the body from re-stationing for "the enemy left me" while the enemy is running faster than StationEnemyFastMetersPerSecond (off by default: a running mob drags the station away as fast as the bird walks). The gate ladder is pure (Beastwhispering.Core.ConvergePin, ConvergePinTests); StationPin.cs only gathers the inputs. Same file, [Combat] (defaults shown):

[Combat]
## Opposite stance: also pin the enemy's attention onto the pet while it is still WALKING to its station.
StationConvergePin = true
## Opposite stance: the converge pin arms when the enemy is within AttackRange x this of the pet.
StationConvergeReachMultiplier = 3
## Opposite stance: how long (s) one converge pin holds the enemy's attention on the pet.
StationConvergePinSeconds = 1.5
## Opposite stance: minimum seconds between converge pins.
StationConvergePinCooldownSeconds = 5
## Opposite stance: while the enemy moves faster than this (m/s) the pet does NOT re-station for "the enemy left me". 0 = off.
StationEnemyFastMetersPerSecond = 0

Converge pins log under their own tag, [CONVERGE] pin #n: … (walking to station, reach …), and a walking-phase refusal is [CONVERGE] pin held back: moving to station (converge: …) — the planted [STATION] literals and every existing why string are untouched. stationdump adds a [CONVERGE] config: line, fastHolds= on the live line and (converge n) in the pin tally.

Backpedal / strafe — the allowsBackpedal species axis

Each species may declare "allowsBackpedal": true in its manifest (data/species/<Name>.jsonbwspecies build → embedded SpeciesBackpedal.txtBackpedalTable). It means "this rig ships back/strafe clips", and lets CompanionKit feed the animator the body-frame blend (a signed moveForward + moveSide) instead of an unsigned forward speed — the fix for the Pearlbird's moonwalk (docs/pearlbird-movement-handoff.md). Only the Pearlbird opts in today; everything else stays forward-only. Per-species override without a rebuild — BepInEx/config/SpeciesBackpedal.txt, same Species=true|false format, reloadbackpedal re-reads it live (effigies next frame, the local pet on its next body stamp):

# BepInEx/config/SpeciesBackpedal.txt
Pearlbird=true

Note on Pearlbirds: Pearlbirds live only in Chersonese. If you tame or keep a Pearlbird companion, the game will briefly load into Chersonese and back on its own to fetch their body — a short, automatic loading screen, not a bug.

Credits

Artwork by Proboina — the skill and passive icons, the item icons, and the paw-shaped companion status badges.

Beastwhispering requires SideLoader by sinai-dev at runtime, and runs on BepInEx.