ReJ0-POV_LMTY_BeastAI_Adapter icon

POV LMTY BeastAI Adapter

Compatibility layer for PathOfValheiman and LetMeTameYou that auto-repairs POV BeastAI taming/breeding conflicts without replacing POV AI.

Last updated 3 days ago
Total downloads 61
Total rating 0 
Categories Mods Utility AI Generated
Dependency string ReJ0-POV_LMTY_BeastAI_Adapter-0.3.3
Dependants 0 other packages depend on this package

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2351 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.

Preferred version: 5.4.2351
treextr-PathOfValheiman-4.13.10 icon
treextr-PathOfValheiman

Build your specialization in a Path of Exile-inspired passive tree: 2,600+ nodes, focused weapon and crafting clusters, shared masteries and keystones. Replaces vanilla skill progression. English, Russian, French, Spanish, Portuguese.

Preferred version: 4.13.10
Meldurson-LetMeTameYou-0.1.0 icon
Meldurson-LetMeTameYou

Rewrite of the taming portion of AllTameable. Overhauls the taming system and allows you to tame and modify taming for almost any creature.

Preferred version: 0.1.0

README

POV LMTY BeastAI Adapter

A compatibility layer for PathOfValheiman (POV) and LetMeTameYou (LMTY) on Valheim.

The adapter fixes a specific interoperability problem where POV converts some normally passive AnimalAI creatures into its custom PassiveTree.BeastAI, while LMTY expects a different component layout when adding taming and breeding support.

Current stable version: 0.3.3

What problem does this solve?

In the tested combination of POV 4.13.10 and LMTY 0.1.0, Deer/Hare-style creatures can reach LMTY with this runtime shape:

AI         = PassiveTree.BeastAI
MonsterAI  = true
AnimalAI   = false
Character  = true
Humanoid   = false
Tameable   = true

LMTY sees MonsterAI and therefore does not take its normal AnimalAI conversion path. In the affected path it later expects data associated with a Humanoid, but POV's converted creature does not have one. The original result was a NullReferenceException in LetMeTameYou.TameManager.AddTame().

This adapter does not replace POV's AI. Instead, it intercepts only the confirmed incompatible structure and applies the LMTY creature settings directly.

Generic auto-repair in 0.3.x

There is no prefab-name allowlist.

A creature is automatically repaired only when all of these are true:

  • MonsterAI exists
  • Character exists
  • Humanoid is missing
  • AnimalAI is missing
  • the runtime AI is identified with high confidence as POV (PassiveTree.BeastAI, another PassiveTree.* type, or a type from a PathOfValheiman assembly)

Normal LMTY targets such as MonsterAI + Humanoid creatures are passed through untouched.

If the component layout looks suspicious but the AI cannot be confidently attributed to POV, the adapter logs a warning and does not modify the creature.

What the repair applies

For a confirmed POV/LMTY incompatible target, the adapter reuses LMTY's already-parsed creature configuration and applies:

  • Tameable creation when missing
  • LMTY commandable, tamingTime, and fedDuration
  • food list and consume ranges
  • a BeastAIConsumeBridge for ground-food consumption
  • adaptive taming-progress fallback
  • Procreation when enabled
  • existing offspring when available
  • explicit offspringPrefab when configured (for example Seal -> Seal_Pup)
  • otherwise LMTY's SpawnMini() offspring path

Adaptive taming fallback

The adapter does not immediately force its own taming countdown.

After a successful meal it observes the native TameTimeLeft for six seconds of calm, non-alerted time:

  1. If the native timer moves, the fallback remains disabled.
  2. If the timer does not move, the fallback activates automatically.
  3. Alerted time does not count toward the observation window.
  4. Once the timer reaches zero, the adapter completes taming through the game's Tameable path.

This was added because POV BeastAI creatures could eat successfully while the native taming countdown remained frozen.

v0.3.3 fed-state timer initialization fix

During Gale/Thunderstore package validation, a second failure mode was reproduced: a repaired creature could already be fed (hungry=False) while TameTimeLeft was still absent (-1). Earlier builds returned at that point, so the native-observation window and fallback never started.

v0.3.3 repairs that state only when a real TameLastFeeding timestamp exists. It initializes the missing countdown from the configured taming time, then runs the same six-second native-progress observation before deciding whether fallback is needed. Never-fed creatures are not initialized.

Performance

An earlier development build scanned all ItemDrop objects every ~0.35 seconds per compatible creature and caused noticeable periodic hitches.

The current bridge instead:

  • searches only while a compatible creature is hungry and needs a target;
  • uses FindObjectsByType<ItemDrop>(FindObjectsSortMode.None);
  • throttles searches using the creature's consumeSearchInterval;
  • caches the selected food target while moving toward it.

The observed hitch disappeared after this change.

Tested environment

The current release was validated with:

  • Valheim 1.0.20
  • BepInEx 5.4.23.5 / BepInExPack Valheim 5.4.2351
  • PathOfValheiman 4.13.10
  • LetMeTameYou 0.1.0
  • BetterTames 0.9.0 present in the test profile (optional, not a hard dependency)

Validated behavior includes:

Creature/path Result
Deer / POV PassiveTree.BeastAI Auto-repair triggered; feeding works; stalled native timer detected; fallback completed taming
High-star Deer 4-star Deer successfully tamed in live testing
Deer breeding Feeding, pregnancy and birth observed in live testing
Hare Generic incompatible structure detected and auto-repair configured
Seal Generic incompatible structure detected; Seal_Pup offspring prefab assigned
Hatchling / Drake Not auto-repaired; passed through to original LMTY; taming, breeding and egg laying observed
High-star Hatchling 3-star Hatchling successfully tamed in live testing

Final v0.3.3 validation confirmed the missing-timer repair on a live 4-star Deer: TameTimeLeft was initialized from 120 seconds, fallback activated only after the six-second native-progress check, the timer reached 0, and taming completed with tamed=True. No NullReferenceException, general Exception, or [Error entry was present in that validation log.

Special egg path limitation

LMTY's custom egg: reproduction path is intentionally not reimplemented for a POV creature that also matches the incompatible auto-repair structure.

If that combination is detected, the adapter logs the situation and defers to original LMTY rather than silently converting an egg layer to a mini-offspring path.

Current tested Hatchling/Drake behavior does not hit this limitation because Hatchling has a normal MonsterAI + Humanoid structure and is handled by original LMTY.

Installation

Thunderstore / Gale / r2modman

Install the package through your Thunderstore-compatible mod manager. Required dependencies should be installed automatically when declared by the package.

Manual

Install BepInEx, PathOfValheiman and LetMeTameYou, then place:

POVLMTYBeastAIAdapter.dll

under:

Valheim/BepInEx/plugins/POVLMTYBeastAIAdapter/

Do not load older versions of this adapter at the same time. They share the same BepInEx plugin GUID:

com.rehyun.povlmtybeastaiadapter

Also remove/disable the old experimental POVLMTYDeerAdapter and POVDeerBreedingFix while using this adapter.

Building from source

Requirements:

  • .NET SDK capable of building netstandard2.1
  • local Valheim installation
  • BepInEx core files from your local Valheim/Gale profile

The project deliberately references your local Valheim/BepInEx assemblies. Game files and third-party mod binaries are not included in this repository.

On the original Windows/Gale test setup, run:

build_and_install_gale_default.bat

Or build manually and override the paths if needed:

dotnet build -c Release `
  -p:ValheimDir="C:\Program Files (x86)\Steam\steamapps\common\Valheim" `
  -p:BepInExCoreDir="$env:APPDATA\com.kesomannen.gale\valheim\profiles\default\BepInEx\core"

Logs / troubleshooting

Useful adapter log prefixes:

[LMTY Trace]
[Generic Compatibility]
[BeastAI Adapter]
[BeastAI Feed]
[Adaptive Taming]

A repaired Deer-style creature should normally show:

[Generic Compatibility] AUTO-REPAIR triggered
[Adaptive Taming] Observing native timer before fallback

If its native taming countdown is broken:

[Adaptive Taming] Native timer did not advance; fallback activated
[BeastAI Feed] Fallback taming tick

A normal LMTY creature should not show AUTO-REPAIR.

Compatibility scope

This project is intentionally conservative. It is a POV/LMTY compatibility adapter, not a general replacement taming system.

The adapter modifies only the high-confidence POV component shape that was reproduced and diagnosed during development. Unknown custom-AI mods are not automatically patched.

Dedicated-server and broad multiplayer behavior have not been exhaustively validated; please report logs for those environments before assuming full support.

Credits

  • PathOfValheiman by treextr
  • LetMeTameYou by Meldurson
  • BepInEx / BepInExPack Valheim and the Valheim modding ecosystem

This repository contains the adapter code only. It does not redistribute PathOfValheiman, LetMeTameYou, Valheim game assemblies, or BepInEx binaries.

Development history

See CHANGELOG.md for release-by-release changes and docs/DEVELOPMENT_HISTORY.md for the full debugging trail and root-cause analysis.