You are viewing a potentially older version of this package. View all versions.
NomadicWar-SkaldSaga-0.2.0 icon

SkaldSaga

Real-time event broadcaster for Valheim servers. Boss kills, deaths, biome discoveries, kill milestones, gear progression, and a full title system with 45+ earnable titles. Chronicle log for admins. Install on server and clients.

Date uploaded a day ago
Version 0.2.0
Download link NomadicWar-SkaldSaga-0.2.0.zip
Downloads 90
Dependency string NomadicWar-SkaldSaga-0.2.0

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2202 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.

Preferred version: 5.4.2202

README

SkaldSaga

Every world has a story. SkaldSaga makes sure it's told.

A Valheim mod that broadcasts meaningful world events to all players in real-time. Boss kills, deaths, biome discoveries, milestones, a full title system, Discord integration, narrative messages, seasons, and server lore. One DLL — install on server and clients.


Features

World Events

  • 🗡 Player Deaths — cause of death with narrative flair
  • 💀 Boss Kills — co-op credit for all nearby players, localized boss names
  • 🌍 Biome Discovery — first time a player enters a new biome, once per character
  • Player Join / Leave — with session duration

Milestones

  • Kill Count — 1, 10, 100, 500, 1,000, 5,000, 10,000
  • 💀 Death Count — 1, 5, 10, 25, 50, 100, 500, 1,000
  • 🛡 Gear Tier — Leather → Flint → Bronze → Iron → Silver/Wolf → Blackmetal/Padded → Carapace → Flametal

Title System

45+ earnable titles across all biomes and creature types. Titles appear in all broadcasts.

Creature Titles — 100 / 500 / 1,000 kills per creature type across all biomes including Mistlands, Ashlands, and Deep North.

Boss Titles — first kill of each boss earns a unique title. Kill all 7 to earn the rarest of all.

Boss Kill Milestones — total boss kills unlock additional titles at 3, 10, and 25.

Title Menu — press ] to open. Scrollable. Click any earned title to equip it. Draggable.

Narrative Mode

Dynamic randomized message templates — 5 variants per event type. No two deaths sound the same. Toggle off to revert to fixed strings.

Discord Integration

Broadcast all server events to a Discord channel via webhook. Color-coded embeds — gold for boss kills, red for deaths, purple for titles, blue for milestones. Configure with a single URL in the cfg file.

Seasons

Start and end named seasons via console commands. Each season archives its Chronicle log separately. Season summaries record top players, bosses killed, and titles earned.

skald season start [name]
skald season end

World Events

Configure a custom message for each boss death in the [WorldEvents] config section. Fires once to all players after the boss is confirmed dead.

Server Lore

Edit BepInEx/config/SkaldSaga/lore.txt — one entry per line. A random entry is whispered to each player when they join. Optional periodic server-wide broadcasts.

Chronicle Log

Structured JSONL format — one JSON object per event. Daily rolling log at BepInEx/config/SkaldSaga/Chronicle/. Session summary written on server shutdown.

Server Config Sync

Server pushes authoritative settings to all clients on join. Players cannot override server-controlled settings. Client-only settings (HUD, keys, scale) remain personal.

Client UI

  • HUD Panel — press \ to toggle last 5 events. Draggable, scalable.
  • Title Menu — press ] to pick your active title. Scrollable.
  • Stats Panel — press [ to view kill counts and earned titles. Scrollable.

Installation

Thunderstore Mod Manager / r2modman (Recommended)

  1. Click Install with Mod Manager
  2. Install on both server and client profiles
  3. Launch — done

Manual

  1. Install BepInExPack for Valheim
  2. Drop SkaldSaga.dll into BepInEx/plugins/SkaldSaga/ on both server and client
  3. Launch — config and data folders generate automatically

Configuration

BepInEx/config/com.nomadicwar.skaldsaga.cfg

Every setting is labeled:

  • [SERVER SYNC | ADMIN ONLY] — server controls this, clients receive it automatically on join
  • [ADMIN ONLY] — server-side only, not sent to clients
  • [CLIENT ONLY] — personal preference, server never touches it

Key Settings

Setting Default Label
All event toggles true SERVER SYNC | ADMIN ONLY
BossCreditRadius 100m SERVER SYNC | ADMIN ONLY
MessagePrefix SERVER SYNC | ADMIN ONLY
EnableNarrativeMode true SERVER SYNC | ADMIN ONLY
WebhookUrl empty ADMIN ONLY
ShowInChat false CLIENT ONLY
ShowOnHud true CLIENT ONLY
HudScale 1.0 CLIENT ONLY

Live Reload — edit and save the config while in-game. Changes apply within 5 seconds, no restart needed.


Compatibility

SkaldSaga is designed to coexist with heavily modded servers. Join events fire 3 seconds after connection, allowing Jotunn, WardIsLove, AzuAntiCheat, and other mods to complete their handshakes first. Tested alongside 78 mods including Jotunn, WardIsLove, AzuAntiCheat, Seasonality, MarketplaceAndServerNPCs, and more.


Data & Logs

All data stored under BepInEx/config/SkaldSaga/:

  • skaldsaga_<charID>.json — per-character progression
  • Chronicle/SkaldSaga_Chronicle_<date>.log — JSONL event log
  • Chronicle/seasons/<name>/ — archived season logs
  • seasons.json — season metadata
  • lore.txt — custom lore entries (one per line)

Automatically migrates save files from older plugin folder locations.


Credits

Built by Nomad (NomadicWar) With support from HailSkadi and Wubarrk

Skål.

CHANGELOG

SkaldSaga Changelog

0.2.0

New Features

  • Chronicle JSONL — structured JSON lines format replacing TSV. Each event is a complete JSON object with timestamp, day, online count, event type, player, message, detail, and extra fields
  • Session Summary — on server shutdown, a full session summary is written to the Chronicle: top killer, most deaths, first boss kill, rarest title, duration, and aggregated lists
  • Discord Webhook — broadcast events to a Discord channel via webhook. Color-coded embeds per event type. Fire-and-forget, never blocks the game thread. Configure [Discord] WebhookUrl in the cfg
  • Narrative Mode — 5 randomized message variants per event type replacing fixed strings. Toggleable via [Narrative] EnableNarrativeMode. Falls back to fixed strings when disabled
  • Seasons System — start and end named seasons via console commands (skald season start [name], skald season end). Chronicles archive to season subfolders. Season summaries written on end
  • World Events — configurable per-boss broadcast messages that fire after a boss is defeated. Set in [WorldEvents] config section
  • Lore Systemlore.txt file in config folder. Random entry whispered to each player on join. Optional periodic server broadcast via [Lore] LoreBroadcastIntervalMinutes
  • Server Config Sync — server pushes authoritative config to all clients on join. 14 settings synced at runtime without touching client config files
  • Config labels — all config entries now labeled [SERVER SYNC | ADMIN ONLY], [ADMIN ONLY], or [CLIENT ONLY] so admins and players know what they can change

Bug Fixes

  • Multiplayer connection stability — join RPCs now fire 3 seconds after handshake, allowing Jotunn, WardIsLove, AzuAntiCheat and all other mods to complete their sync before SkaldSaga fires. Resolves blank screen and connection drop issues on heavily modded servers
  • Title persistence — root cause fixed: JSON parser was splitting on commas inside quoted values, corrupting multi-title sets on load. All earned titles now survive relog correctly
  • Boss title force save — boss kills and title unlocks now trigger an immediate save instead of waiting for the 60-second autosave timer
  • Double broadcast — all events no longer fire twice on listen servers
  • Biome discovery spam — each biome now fires exactly once per character, permanently tracked in save data. Cave and dungeon variants map to their parent biome
  • Elder/Moder display names — boss names now use localized in-game names (The Elder, Moder) instead of prefab keys (gd_king, Dragon)
  • Titles in all broadcasts — active title appears in all event messages, not just death events
  • Drake/Hatchling mapping — Hatchling prefab now correctly maps to the Drake kill category

0.1.2

  • Fixed Stats and Title panels showing empty after scroll refactor
  • Stats panel and Title menu now scroll
  • Chronicle logs moved to BepInEx/config/SkaldSaga/Chronicle/
  • Fixed double broadcast on listen servers
  • Fixed biome discovery firing repeatedly on Mistlands structure transitions
  • All save data consolidated under BepInEx/config/SkaldSaga/

0.1.1

  • Elder displays as "The Elder", Moder displays as "Moder"
  • All broadcasts include active player title
  • Drake/Hatchling prefab mapped to Drake kill category
  • Listen server boss kill dedup stabilized
  • Chat notifications default to OFF
  • Live config reload (checks every 5 seconds)
  • Save files moved to stable config path with automatic migration

0.1.0

  • Initial release
  • Player join/leave with session duration
  • Player death with cause
  • Boss kill with co-op credit and configurable radius
  • Biome first discovery
  • Kill and death milestones
  • Gear tier progression
  • 45+ earnable creature and boss titles
  • Title picker menu, stats panel, HUD event panel
  • Daily rolling Chronicle log
  • Single DLL — server and client