Confirm with your password

WhereTheCrowFlies

Client companion mod for TheRavensCall. Witnesses and reports combat events, kills, deaths, damage, blocks, parries, fishing, crafting, building, foraging, rituals, and player stats to servers running TheRavensCall.

Client-only Logging Valheim 1.0

· Website · 💗 Donate

Stars
1
Downloads
166
Version
1.2.0
Updated
Author
RavenIronStudios
Virus scan
✓ Scan successful
Runs on
Client-only
Required by
1 mods

Description

🐦‍⬛ Where The Crow Flies

Valheim Mod Deployment Framework Publisher Version

RavenIron's client companion mod for The Raven's Call: effortlessly witnesses and relays player combat, defense, kills, deaths, crafting, building, foraging, consumption, rituals, and 100% of vanilla stats to the hall's ledger.


🐦‍⬛ What Is WhereTheCrowFlies?

WhereTheCrowFlies is an opt-in client companion mod designed to pair with TheRavensCall (the server-side admin and chronicle mod).

In Valheim's peer-to-peer multiplayer simulation model, combat calculations, creature deaths, damage, parries, building, crafting, foraging, and fishing are simulated locally on the client that owns the local zone or character. WhereTheCrowFlies acts as the client-side scout—observing all gameplay events with zero client lag and securely reporting them back to dedicated servers running TheRavensCall via routed RPC.


⚙️ Features

  • Full-Coverage Kill & Death Tracking: Reports creature kills with star level, boss status, tamed flag, weapon damage type, biome, and coordinates. Reports player deaths with 15+ rich computed causes (bosses, monsters, PvP opponents, drowning, falls, burning, freezing, poison, spirit and lightning damage).
  • Combat & Defense Telemetry: Segregates PvE vs PvP damage dealt/taken, tracks hit counts, shields/weapon blocks, perfect timed parries, and total mitigated damage.
  • Smart 10-Second Batching: Aggregates continuous high-frequency telemetry (damage, defense, stat deltas) into compact 10-second batches, eliminating network congestion during massive raids.
  • Crafting, Upgrading & Repairs: Captures crafted items, quality upgrades, quantities, and crafting station origins.
  • Building & Demolitions: Records piece placements and structure demolitions with piece categories and coordinates.
  • Harvesting, Foraging & Agriculture: Relays berry/mushroom foraging and farm crop harvests.
  • Survival & Consumables: Tracks food items eaten, health/stamina/eitr gains, and potion/mead consumption.
  • World Rituals & Exploration: Captures boss altar offerings/summons, portal traversals with tags, and Forsaken power activations.
  • 100% Vanilla PlayerStat Delta Sync: Intercepts every vanilla PlayerStatType counter (~205 on Valheim 1.0) (distances traveled, jumps, arrows fired, skeleton summons, time in base, sleep, tree chops, mining hits, etc.) and synchronizes deltas to the server.
  • Full Stat & Skill Backfill: Broadcasts a full absolute snapshot of all ~205 stats plus every raised Skills.SkillType (level and progress) on spawn and on a configurable interval (default 5 minutes) — so pre-existing totals a player already earned show up immediately, not just future deltas.
  • Out Of The Way: No HUD changes and no performance penalty during normal play — the only interface is the optional title panel you open yourself with /titles.
  • Safe Everywhere: Connects safely to vanilla servers or servers without TheRavensCall with silent no-op dispatch.

📦 Installation

  1. Install BepInEx for Valheim.
  2. Download and extract WhereTheCrowFlies-v1.2.0.zip.
  3. Place WhereTheCrowFlies.dll into your Valheim/BepInEx/plugins/ directory.

🔧 Configuration

A configuration file is generated at BepInEx/config/com.raveniron.wherethecrowflies.cfg upon first launch:

[General]

## Send owner-side combat reports, world telemetry, crafting, building, harvesting, consumption, and player stats to servers running TheRavensCall.
# Setting type: Boolean
# Default value: true
EnableReporting = true

## How often (in seconds) to broadcast a full absolute snapshot of all vanilla player stats and skills (StatSnapshot/SkillSnapshot). These are idempotent full-state resyncs, not time-sensitive deltas, so this can be turned up if 10-second combat/damage batching feels like enough network chatter on its own — a full snapshot also always fires immediately on spawn regardless of this setting.
# Setting type: Single
# Default value: 300
FullSyncIntervalSeconds = 300

## Key that opens the title panel (the same panel the /titles command opens). None = command only. Read through the game's own input layer (ZInput), so it works with Valheim 1.0's input system.
# Setting type: KeyCode
# Default value: None
TitlePanelKey = None

🏷️ Picking your title

On a server running TheRavensCall 1.7.0+, choose which of your earned titles the server shows with your name in its Discord narration, Chronicle log and web dashboard — nothing changes on your in-game nameplate. Two ways to do it:

  • The title panel: /titles (chat) or titles (F5 console) opens a small window listing everything you've earned. Click one to set it, "No title" to clear it, Esc or Close to leave. It asks the server on open and refreshes after every click, so it always shows the true state. You can also open it with a key of your own choosing — set TitlePanelKey in the config above (None by default, command only). While it's open your character holds still — movement, attacks, the map and chat are paused, the same way the game's own sign-text dialog pauses them — so close it (Esc) before a fight.
  • The title command, with no window: /title (list what you've earned), /title Wolf Hunter (set — multi-word titles work), /title clear (shows no title, and stays that way: titles you earn later are listed, not shown, until you pick one). F5 console: same commands without the leading /.

The server decides which titles you've actually earned; this mod only sends the request and prints (or shows in the panel) whatever TheRavensCall answers. Against an older TheRavensCall, a server with AcceptClientReports turned off, or no TheRavensCall at all, nothing answers and you'll see a one-time hint after a few seconds that names both possible causes — everything else in this mod keeps working normally.

Vendored, and not ours: the panel's gilt frame is Wubarrk's VikingOS shared source (Libs/SharedUI/GiltFrameTheme.cs, MIT), compiled in unchanged.


🛡️ Server Admin Note

If your server uses AzuAntiCheat or a client mod whitelist, add WhereTheCrowFlies.dll to your server's allowed plugins list.


💜 Support Raven Iron

Every Raven Iron mod is free, and stays free — all of it, always. Nothing is held back for patrons, and nothing ever will be.

If you'd like to help cover server hosting and test hardware:

Changelog

All notable changes to WhereTheCrowFlies will be documented in this file.

1.2.0 Latest

Added

  • /title command (chat) and title command (F5 console): pick which of your earned titles the server shows with your name in its Discord narration, Chronicle log and web dashboard on servers running TheRavensCall 1.7.0+ — nothing changes on your in-game nameplate. title alone lists what you've earned and which one is active, title <name> (multi-word titles supported, e.g. title Wolf Hunter) sets it, title clear shows no title (and on TheRavensCall 1.7.0 it stays that way: titles you earn later are listed, not shown, until you pick one). The server has the only say on which titles you've actually earned — this mod just sends the request and prints whatever TheRavensCall answers.
  • RavensCall_EventReport_V2 Event Type 13 (TitleRequest): the wire packet /title sends — schema version 2, op 1 = list, 2 = set, 3 = clear. See HANDOFF.md §2.2 for the full layout.
  • RavensCall_TitleReply_V1: a new server → client routed RPC, registered once per world session the same way TheRavensCall registers its own listeners. TheRavensCall sends the reply text directly to the requesting player; this mod prints it back into whichever window (chat box or F5 console) the command was typed in, prefixed [WhereTheCrowFlies]. The reply now also carries the requesting player's full earned-title list and active title, so the title panel below is always fresh after any op with no second round trip.
  • The title panel (/titles chat, titles F5 console, or the new TitlePanelKey config): a small window, on the family's shared gilt-frame theme (vendored from ValkyriesCargo, MIT, by Wubarrk), listing every title you've earned as a button — click one to set it, "No title" to clear it, Esc or Close to leave. It asks the server on open and refreshes after every click over the same wire the title command uses. While it's open your character holds still — movement, attacks, the map and chat are paused, the same way the game's own sign-text dialog pauses them.
  • ravenscall title <player> [<title>|clear]: the existing admin routing stub's description now mentions the matching admin subcommand TheRavensCall 1.7.0 adds — no wire change on this mod's side, the stub only ever routes the raw command text to the server.

Compatibility

  • Pairs with TheRavensCall 1.7.0+ for /title to get an answer, and needs AcceptClientReports on (it disables the player /title path the same way it disables every other client report; the admin's ravenscall title still works). On an older TheRavensCall, or a 1.7.0+ server with AcceptClientReports=false, the request still sends (Event Type 13 is just another RavensCall_EventReport_V2 payload) but nothing replies, so after 5 seconds this mod prints a one-time hint naming both possible causes. An older TheRavensCall with LogCombatReports enabled will additionally log an "unknown eventType 13" line server-side — harmless, just noise.
  • Every other event type, and every server this mod already worked with, is unchanged.
1.1.3

Fixed

  • Harvests were credited to the zone owner, not the picker. The pickable hook was a prefix on Pickable.RPC_Pick, which runs only on the client that owns the pickable's zone, so every berry another player picked in that zone was reported under the owner's name, and a second player picking an already-picked bush produced a phantom harvest. The hook is now a postfix on Pickable.Interact, which runs on the picking player's own client, and it skips a pickable that was already picked, plus any repeat of the same pickable within two seconds, because a non-owner's picked flag only updates when the owner's reply lands and holding Use re-runs the interaction every 0.2 s. The amount uses the same drop-scaling formula the owner uses; the rare skill-bonus yield is rolled inside the interaction on the picker's own client into a local a postfix cannot read, so it is not counted (the owner adds whatever value the picker sent, unvalidated).
  • Failed crafts were counted, multi-crafts were undercounted. InventoryGui.DoCrafting returns early (max quality, missing requirements, inventory full, missing DLC, upgrader resource missing) with the recipe still selected, and it fires when the craft bar completes, so "inventory filled while the bar ran" is ordinary play; the old postfix reported all of those as crafts and sent the recipe amount, ignoring multi-craft and the station bonus. The item is now counted at its target quality before and after: zero difference means nothing was made, and the difference is the real amount. An upgrader that fails or breaks the item no longer reports an upgrade.
  • Absolute stats double counted every full-sync cycle. The full snapshot never cleared the pending delta window, and both timers reset to zero instead of subtracting their interval, so they drifted and the snapshot landed inside a delta window; the next delta flush was then added on top of the snapshot on the server. Pending deltas now go out before every snapshot (the spawn backfill included), and both clocks subtract their interval.
  • ravenscall season start | end can now be typed from a client. A routing stub registers the name flagged server-only and remote, so the game sends it to the server, which checks the admin list and runs TheRavensCall's real command (any TheRavensCall that registers the command, confirmed back to 1.2.2; the server-side flags added in 1.2.4 do not gate a routed command). Non-admins get "You are not admin" from the server.
  • Docs said 105 vanilla stats. Valheim 1.0 has about 205; the handoff and README now say so.
1.1.2

Fixed

  • Player deaths were never reported. The death hook was a Harmony patch on Character.OnDeath, but Player.OnDeath is a full override that never calls base, so the patch only ever ran for creatures and SendDeath was dead code from the first release. Death narratives, death_history, PvP killer attribution and the Discord death post have all been silent on every server. Player deaths now have their own Player.OnDeath patch, which runs on the victim's own client only (the method itself returns early for every non-owner). Creature kills were never affected. No wire change: the V1 type-2 death packet is the one every TheRavensCall since 1.1.0 already credits; the V2 Death packet is additionally understood from TheRavensCall 1.2.0, which first registered the V2 receiver. Pairs with any TheRavensCall 1.1.0 or newer; 1.2.3 additionally binds every self-report to the sending peer, which a 1.1.2 client passes unchanged.

4 older entries, full version history & downloads →

Manual installation instructions
1

Install BepInExPack Valheim

BepInExPack Valheim is required to run mods in Valheim.

Download BepInExPack Valheim 5.4.2351 · View mod page

Check out the mod page for detailed installation instructions.

2

Install WhereTheCrowFlies

This mod only needs to be installed on the client.

Download WhereTheCrowFlies 1.2.0

Extract the ZIP and place the file(s) into the BepInEx/plugins/ folder inside your Valheim game folder.