You are viewing a potentially older version of this package. View all versions.
Satisfaction-TrollCompanion-0.2.10 icon

TrollCompanion

Friendly troll companions with clubs, saved names and progress, shared kills, combat orders and an F6 stats panel with individual recall. Live server configuration. Required on server and clients. Development release.

Date uploaded a month ago
Version 0.2.10
Download link Satisfaction-TrollCompanion-0.2.10.zip
Downloads 144
Dependency string Satisfaction-TrollCompanion-0.2.10

This mod requires the following mods to function

ValheimModding-Jotunn-2.30.2 icon
ValheimModding-Jotunn

Jötunn (/ˈjɔːtʊn/, 'giant'), the Valheim Library was created with the goal of making the lives of mod developers easier. It enables you to create mods for Valheim using an abstracted API so you can focus on the actual content creation.

Preferred version: 2.30.2
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

README

TrollCompanion 0.2.10

Summon friendly trolls with the Trollstaff, keep their names and progress, and give them combat orders. Your companions always carry a club. Wild trolls remain unchanged.

Development release: 0.2.10 adds English mod text, an F6 stats panel with individual recall, shared kill progression and live server configuration. It also changes both default base combat multipliers to 2. Automated checks cover the new rules and migrations; full in-game single-player, co-op and dedicated-server validation is still pending.

Installation

Install the same TrollCompanion version on the server/host and every client. Client-only installation is insufficient for multiplayer.

Dependencies:

  • BepInExPack Valheim 5.4.2351.
  • Jotunn 2.30.2.

These are the dependency versions used for the local compatibility checks.

  1. Stop Valheim and the server before replacing plugin files.
  2. Install through Thunderstore Mod Manager, or use its local-mod import to install TrollCompanion-0.2.10.zip into a test profile.
  3. For a manual server installation, put plugins/TrollCompanion.dll into BepInEx/plugins/TrollCompanion. Keep only one copy. Remove any former manual DLL/PDB before switching that installation to the manager.
  4. Start the server and client with mods enabled. Check both logs for Loading [TrollCompanion 0.2.10] and TrollCompanion loaded.

Keep your existing configuration and companion data. The first update to 0.2.10 performs the configuration migration described below.

Controls and companion panel

Input Action Staff required?
F6 Open or close the companion panel No
Left mouse button Summon one available companion Yes
Middle mouse button Recall all active companions Yes
J on ground Advance, fight along the route, then hold position Yes
J on a hostile creature Focus that enemy, then hold position Yes
H End the current order and follow again Yes
Right mouse button Native blocking Yes

Key bindings are configurable locally. Menus and text input block command hotkeys. F6 is unbound in the inspected native defaults; other mods or custom key bindings may still conflict. G remains available for the game's radial menu.

The panel shows each owned companion's name, slot, variant, order/status, current and maximum HP, stars, kills, next star threshold, death cooldown and club attack values. Each eligible active companion has its own recall control. The server checks ownership and the current instance before recalling it; a stale panel row cannot select a newer summon.

The panel distinguishes live network values, last-known network values and stored/next-summon values. Club attack values are calculated before target armour, resistance and other situational effects; they are not damage per second.

J and H control all active companions. A new J order replaces the old order. Attack-move, focus and holding suspend automatic catch-up to the owner, including portal travel. H restores normal following and catch-up. Unreachable orders hold at the current position rather than teleporting to the destination.

Names and roster

Use the game's normal naming dialog on an owned companion. Its native ten UTF-16-character limit and content filtering remain in effect. Clearing the name restores the default label. Extra star indicators stay separate from the saved name.

Names, identity, progression and health persist through recall and resummoning. Names and progression also survive companion death, world restarts, variant changes and temporarily locked slots. Names already lost by an earlier version cannot be reconstructed; rename those companions once.

Default settings

Setting Default
Companion variant Ashlands; Forest is optional
Active limit at Blood Magic 0 / 50 / 100 2 / 3 / 4
Star thresholds 25 total kills for one star; 75 for two
Maximum stars 2; configurable
Shared kill progression Enabled within 25 m of the defeated enemy
Blood Magic XP factor 0.25 per eligible kill; 0 disables it
Death cooldown 30 s at Blood Magic 0 down to 5 s at 100
Native Eitr / HP cost multipliers 1 / 1
Target range / combat radius 80 m / 25 m
Follow catch-up distance 100 m
Technical-failure refunds Enabled

Both variants use the forest troll's inspected 600-HP base and club attack profiles. With base health and damage multipliers of 2:

Stars Maximum HP Club damage factor Boss factor before native resistance
0 1200 ×2 ×1
1 2400 ×3 ×1.5
2 3600 ×4 ×2

Resistance penetration defaults to 0.75 for ordinary body hits against hostile non-boss creatures. It restores 75% of the damage removed by resistance: 50% native damage becomes 87.5%, and 25% becomes 81.25%. Immunity, weaknesses, ignored damage and explicit weak spots retain native behavior. Bosses receive no resistance compensation and have a separate 0.5 combat damage multiplier. Generic, chopping and pickaxe damage are excluded from these target-specific rules.

Recall is free, creates no loot and preserves remaining HP. Stored companions do not heal over time. A dead companion retains identity/progress, waits until its saved deadline, then returns with full HP. The deadline runs while offline and is not changed by later skill or configuration edits. Actual death loot is separately configurable and disabled by default. Player, tame, structure and environment protection are enabled by default. The axe is not included.

Shared kill progression

The killer receives each eligible hostile-creature kill, including bosses. With sharing enabled, the same owner's other living active companions within 25 m of the victim also gain one kill. Recalled, dead, recalling, distant and other players' companions are excluded. The range is configurable, and sharing can be disabled.

Each victim event is saved once for all recipients. Blood Magic XP is awarded once per kill, regardless of how many companions share the progression. Players, tamed animals and companions are not eligible victims.

English configuration and live changes

The file is BepInEx/config/de.steve.valheim.trollcompanion.cfg.

On the first 0.2.10 migration, recognized German keys become English and the previous file is saved beside it as .pre-0.2.10.<timestamp>.<id>.bak. Other saved settings are retained. Both base HP and damage multipliers are set to 2 once. Later changes to these values are retained. Preserve [Configuration] MigrationVersion = 1; removing the marker requests migration again. Invalid values block migration without replacing the original file.

[Combat]
BaseHealthMultiplier = 2
BaseDamageMultiplier = 2
HealthPerStar = 1
DamagePerStar = 0.5
ResistancePenetration = 0.75
BossDamageMultiplier = 0.5

[Progression]
ShareKillProgress = true
SharedKillRadius = 25

[Input]
CompanionPanel = F6

Save changes to the server/host configuration during play. Once the file stays unchanged for about one second, a complete validated rules snapshot is synchronized. Invalid edits retain the last accepted rules and produce a diagnostic. Server gameplay settings are authoritative; key bindings, display options and detailed combat logging stay local.

Live health balance changes preserve the existing HP percentage at the old star count. A star change then preserves absolute HP, capped at the new maximum. Gaining stars or repeating an update does not heal. Variant changes take effect on the next summon; existing death deadlines remain fixed.

Placement and failed summons

Placement is checked before casting and again before the companion appears. A clear location within 3 m of a blocked target may be chosen before casting; it stays fixed during the animation. Water, unsuitable slopes or insufficient space produce a specific failure message.

The mod uses copies of the native Trollstaff arrival and impact effects with impact/terrain damage disabled. Recall or player death cancels an arrival.

Costs/RefundFailedSummons=true refunds the Eitr and HP actually paid when a technical failure is confirmed, once and within native resource limits. Before a request is sent, a known local failure can be handled locally; afterwards the server must confirm it. Death, recall, portals, disconnection and leaving range are not refundable. A timeout alone does not grant resources. Refunds cannot revive a player or transfer to a respawned character.

Data and updates

The server/host stores companions per character and world under:

BepInEx/config/TrollCompanion/worlds

Back up this directory with your server. Do not delete it when updating. The mod does not edit game or character saves. Unrecoverable mod storage errors block new summons rather than overwrite progress.

Schema 3 adds the health maximum, applied balance, star count and state revision alongside current HP. Existing schema-1/2 data is upgraded on the next successful save. Names, IDs, kills and deadlines remain intact. Where an older stored record has no trustworthy former maximum, it keeps absolute HP, capped by the new maximum. The mod does not guess an HP percentage. Older versions do not understand schema 3; retain backups before any downgrade.

Update the server/host and every client together, keep one plugin copy, and restart after replacing the DLL. Version-specific deterministic package timestamps allow BepInEx to refresh cached plugin metadata. If synchronization fails, collect BepInEx/LogOutput.log from both server and client.

For a first test, open F6 without a staff, inspect two differently named companions and recall only one. Then compare a nearby shared kill, a distant non-shared kill, a live configuration change and a restart. These steps are acceptance tests to perform, not a claim of completed in-game validation.

Changelog

See Thunderstore's Changelog tab or the included CHANGELOG.md. Release notes are maintained explicitly; Thunderstore does not generate them from the source code.

CHANGELOG

Changelog

This development history includes builds that were not published on Thunderstore.

TrollCompanion is a gameplay preview. Full single-player, co-op, and dedicated-server testing is still pending.

0.2.10

  • Added an F6 companion panel that works without the Trollstaff. View each companion's name, status, health, stars, kills, next star threshold, death cooldown and club attack values; recall one active companion from its row.
  • Translated current mod messages, controls, configuration labels and descriptions, diagnostics and documentation into English. Native game text still follows the game's language.
  • Added automatic migration from the previous German configuration keys. Existing files receive a separate backup; other saved settings are preserved. The health and damage base multipliers are each set to 2 once during this migration. Later edits are retained.
  • Added live configuration reload after a file has remained unchanged for about one second. The host validates and synchronizes a complete rules snapshot; invalid edits leave the last accepted rules in use.
  • Changed the default health and damage base multipliers to 2. Default maximum HP is 1200/2400/3600 and club damage scales by 2/3/4 at 0/1/2 stars. Live balance changes preserve the health percentage; star gains still preserve absolute HP.
  • Added schema-3 storage for health together with its maximum, applied balance, star count and state revision. Existing schema-1/2 records keep their names, identities and progress. If the former maximum cannot be established, migration preserves absolute HP instead of guessing a percentage.
  • Added optional shared kill progress, enabled by default within 25 metres of the defeated enemy. Only the same owner's nearby living active companions share a kill; the killer always receives its own kill. Each kill awards Blood Magic XP once, regardless of recipient count.
  • Added validation for stale individual-recall requests, paired health updates, shared-kill eligibility and event deduplication. Update the server/host and every client together to 0.2.10.

Local automated checks cover these rules and migrations. Full in-game validation, including the panel, live reload and shared progress on a dedicated server with two clients, remains pending. See the project build report for the final build and package results.

0.2.9

  • Fixed custom troll names being lost after recall. Names and native content-author information are now stored with the persistent companion record and restored after resummoning, variant changes, death, restarts, and temporary slot restrictions.
  • Added server validation of the name request's owner, summon generation, network object, and sequence. An accepted name is saved atomically before it is applied to the live companion.
  • Kept the normal naming dialog and its 10-character limit. Clearing a name restores the native default; extra star indicators above two stars remain visible without becoming part of the stored name. No new controls or settings are required.
  • Added schema-2 name storage while retaining support for schema-1 saves. Existing data is upgraded on the first successful save without changing companion IDs, kills, or HP.
  • Kept combat balance and technical-failure refunds unchanged from 0.2.8. Update the server/host and every client to 0.2.9.

Names already lost by older versions cannot be reconstructed; rename those companions once. The release build, API checks, and 82 regression tests passed. In-game name-persistence tests remain pending.

0.2.8

  • Raised the default health multiplier to 10 and club damage multiplier to 6. At 0/1/2 stars, default scaling gives 6000/12000/18000 maximum HP and ×6/×9/×12 club damage.
  • Added server-synchronized [Kampf] ResistenzDurchdringung, default 0.75. On ordinary body hits against hostile non-boss creatures, it restores 75% of the damage lost to resistance. Weaknesses, immunity, ignored damage types, and special weak-spot mechanics retain their native behavior.
  • Added [Kampf] SchadenGegenBosseMultiplikator, default 0.5. Game-identified bosses retain their resistances and receive this additional multiplier on combat damage types; resistance compensation does not apply to them. Generic, chopping, and pickaxe damage are excluded from both target-specific rules.
  • Saved combat settings on the summoned companion's network object so they remain consistent when network ownership changes. New settings apply on the next summon; stored absolute health is retained without free healing.
  • Added optional local [Diagnose] Kampfprotokoll, disabled by default, for actual HP changes from companion hits, plus weapon-profile and damage-type diagnostics.
  • Kept the placement checks and technical-failure refunds from 0.2.7. Existing configuration values remain unchanged: existing servers must explicitly set the health and damage multipliers to 10 and 6 to adopt the new defaults.

The release build, API checks, and 66 regression tests passed. The balance target is strong performance against ordinary Ashlands and Deep North enemies while preserving sustained boss fights. No 0.2.8 in-game combat results are available yet; flying targets, hit detection, terrain, and attack uptime require testing.

0.2.7

  • Raised the default base health multiplier to 3. With the inspected 600-HP forest troll base and default star scaling, maximum health is 1800/3600/5400 at 0/1/2 stars.
  • Preserved existing configuration values. Existing servers must explicitly set [Kampf] GrundLebenMultiplikator = 3 to adopt the new default. It applies on the next summon and retains stored absolute health, up to the new maximum, without free healing.
  • Added shared strict placement checks before casting and spawning, with a search for a suitable spot within 3 meters. The selected point remains fixed during the casting animation, and placement failures report their cause.
  • Added the server-synchronized [Kosten] ErstattungBeiFehler option, enabled by default. A confirmed technical spawn failure can refund the Eitr and health actually paid locally for that cast, once, subject to native resource caps.
  • A known local failure before sending the summon request can be refunded directly. After a request was sent, the server must confirm the failure.
  • Excluded death, recall, portal use, disconnection, and leaving range from refunds. A timeout without confirmed server failure does not trigger a refund.

Build/API checks and 56 local regression tests passed. No 0.2.7 in-game test has been completed. The latest local 0.2.6 log confirms several summons and the first server roster response, but full multiplayer acceptance remains pending.

0.2.6

  • Fixed package timestamps that caused BepInEx to reuse cached 0.2.4 plugin metadata even when the correct 0.2.5 DLL was installed. ZIP entries now use a deterministic timestamp that changes with the plugin version.
  • Gameplay and saved companion data are unchanged. Keep your configuration and companion saves; no data reset is required.
  • Update the server/host and all clients together to 0.2.6.

An in-game retest of the update and dedicated-server synchronization is still pending.

0.2.5

  • Fixed player-to-companion roster lookup for dedicated servers and co-op hosts, addressing the persistent "Begleiterbestand wird synchronisiert" message.
  • Added connection checks for respawning, reconnecting, and duplicate character sessions, plus clearer synchronization diagnostics.
  • Existing companion data is retained; no data reset is required. Update the server and all clients together.
  • Added English package details and a packaged changelog.

The multiplayer fix has passed local code checks; an in-game retest is still pending.

0.2.4

  • Updated the package and plugin version for Thunderstore distribution. Gameplay is unchanged from 0.2.3.

0.2.3

  • Fixed summoning being blocked by the native arrival effect's GlobalWind component.
  • Improved diagnostics and messages to distinguish arrival-effect failures from unavailable troll variants.

0.2.2

  • Made the Ashlands troll the default companion variant; Forest remains configurable.
  • Changed the default target-command key to J to avoid the game's radial-menu binding. H still restores following.
  • Added the Trollstaff's native arrival effects, timing, impact sounds, and wake-up animation, using separate effect copies with impact damage disabled.
  • Reserved companion slots during arrival and added cancellation for interrupted summons.

Existing configuration files keep their saved variant and key settings.

0.2.1

  • Fixed club validation rejecting the troll's two native club attacks as ambiguous equipment.
  • Preserved both club attack animations and equipped a club before the companion's first fight.

0.2.0

  • Added the initial gameplay preview: friendly club-wielding trolls, summon and recall commands, following, attack-move, focus attacks, and position holding.
  • Added persistent companion slots, kill progression, stars, death cooldowns, and configurable gameplay and damage-protection settings.
  • Added host-managed companion storage and multiplayer messaging for testing across single-player, co-op, and dedicated servers.

0.1.0

  • Added the minimal BepInEx plugin with the startup message TrollCompanion geladen.
  • Added the initial build and deployment setup. This version did not change troll behavior.