Confirm with your password

RagnaroksWrath

The world reacts and remembers. Seasons, devastating storms, spreading plague with visible miasma, fire scars, tiring soil, earned titles. Server-authoritative world simulation. One DLL, server and clients.

Changelog & versions

· Website · 💗 Donate

Stars
2
Downloads
267
Version
0.29.0
Updated
Author
RavenIronStudios
Virus scan
✓ Scan successful
Runs on
Client & Server
Required by
3 mods

Compatibility

Required 1

Install these too — Gale pulls them in for you.

Description

Ragnarok's Wrath

The land remembers who walked it.

A Valheim world-simulation mod by Raven Iron. The world reacts and remembers: seasons turn, storms rage, plague takes root and creeps, fire leaves scars, farmed soil tires, the wild wages war on the blight, the land holds grudges against the people who hurt it — and raises stone monuments where its stories end. Every zone quietly keeps score of what has happened there, across restarts, forever. One DLL — install on server and clients.

Not a tracker, dashboard, or HUD mod. There is no UI. The world tells you itself: a sickly fog in a blighted valley, ash drifting over an old burn scar, a deer that staggers, a bush that refuses your hand specifically, runes glowing on a stone that remembers a fire.


What it does today

🍂 Seasons

Spring, Summer, Fall, Winter on a configurable clock — driving gameplay, never visuals: fire risk, plague growth, frost, farming yield all swing with the season. Runs its own clock, or defers automatically to Seasonality (RustyMods) when installed — no second clock, no conflict.

⛈ Devastating Storms

Real vanilla events — banner, music, timer — fired on our schedule, positional and local: fire risk, wind and plague spread all rise inside the storm's area and nowhere else. A storm over contested ground escalates the war beneath it. And with FireFront installed, a storm can strike: a rare bolt of lightning lands near someone under it and starts a real fire — never in rain, never near anything player-built. The sky is never touched (Seasonality-safe); a config toggle exists for owners who run no weather mod and want the thunderstorm look.

🦠 Plague — in the land, and in you

A spreading, curable sickness that lives in the ground — and it starts on its own: every so often (rarer than daily by default, likelier on corrupted or burnt land, carried by storms) an outbreak quietly takes root where people live and walk. It grows where players linger, creeps along its frontier, feeds on corruption, rides storms — and dies back through winter or neglect. Clients see a grey-green miasma where it runs deep: no marker, no map icon, just the land looking wrong.

Stand in it and it gets into you: exposure builds over tens of minutes into a real sickness — stamina first, then healing — shown as a vanilla status icon, never a HUD. Leaving drains it; rest drains it faster; poison-resist mead slows the intake. Relogging is not a cure. High-frost ground chills you where vanilla wouldn't — a campfire or frost-resist mead answers it, and your breath fogs in the cold air.

🔥 Fire scars (with FireFront)

FireFront (Raven Iron) ships as a dependency — mod managers install the pair together — and fires char the land itself: burning zones accrue Scorch, which suppresses recovery and outlives the flames — and gray ash drifts over old burn scars, thinning as the land heals. Installing by hand? You need both mods, and which FireFront you have decides how much works: 0.17.2+ for burn scars at all, 0.17.3+ to attribute arson to whoever lit it, 0.18.0+ for storm lightning to be able to set anything alight (0.21.0+ unless the storm sky is forced, because each bolt asks FireFront whether it rains where it would land), and 1.0.2+ to blame each fire on whoever lit it when several burn at once (an older FireFront names one igniter for the whole map, so the blame stays near that player's own fire). An older FireFront does not error — the feature is simply never reachable (per-fire blame instead falls back as above) — so the log names whichever of these it cannot find, at boot or the first time it reaches for it. Without FireFront the system sleeps; Ragnarok's Wrath ships no second fire simulation.

🌱 Land that keeps score

Fertility tires under dense crops — and tired fields grow slow: crops in depleted soil take up to double the time, so resting a field genuinely pays. Blighted and burnt ground corrupts, corruption feeds the plague, and the world derives its own condition — Flourishing, Stable, Ailing, Stricken — announcing the turning points to everyone.

💀 Consequences

Sick land acts like it: berry bushes and mushrooms stop yielding on plagued or burnt ground, wildlife staggers visibly sick, crops in deeply blighted soil wither and die, and creatures born on corrupted ground come up starred. Player structures are never touched.

⚔️ The land takes sides

Every act is remembered, per zone, per player: planting and healing presence book care; arson books harm to the arsonist by name (FireFront identifies who lit it — even across the fire's whole spread). Grudged ground drifts harsher under your feet, refuses you berries it gives freely to others, and marks you — Ashbringer — while tended ground heals faster for its keeper and sheds their sickness sooner. Regional standing earns Warden or Despoiler. And where blight and genuine care collide, the zone goes to war: the blight's spawns star harder, the wild pours in to answer, storms escalate it, and the war ends one way or the other with a single line to whoever stands there.

🐗 The nemesis

The creature that kills you is marked in that moment: it gains a star, and its nameplate remembers — slayer of Nomad, counted on repeat offenses. A boss is marked but never gains a star: its health bar carries the name, and the fight stays the size it was built to be. The mark lives in the creature's own body and survives server restarts. If it despawns, it got away. Kill it for the only cure.

🗿 Relics — the world writes its own monuments

Where a story completes, a stone rises: a great fire fully healed, a plague driven out — blessed. A war lost to the blight — cursed. The land recovering from Stricken raises one rare stone on the ground that healed the most. Standing stones carry real auras (blessed ground heals quicker and sheds sickness faster; cursed ground sickens you and breeds meaner things) and wear glowing runes — gold or blood-red. The stones can be broken, but the land books the vandal, and it does not forget.

🏅 Titles

Earned from what happened to you, never from tracked stats: Stormrider, Plaguewalker, Winterborn, Ashbringer, Warden, Despoiler. Latest earned shows under your nameplate.

🛠 The wrath console

wrath status, wrath zone, wrath relics answer anywhere; wrath zone set, wrath care set, wrath harm set, wrath save run on the server — and typed in-game by an admin, they forward through vanilla's own admin gate, execute where the world lives, and reply to your screen. Server owners never need to hand-edit a save file again (though they can: every store is plain tab-separated text).


Install

Drop RagnaroksWrath.dll into BepInEx/plugins/ on the server and every client. The same DLL does both jobs: the server runs the simulation, clients render what it pushes and act where they stand.

Config is two files in BepInEx/config/: com.raveniron.ragnarokswrath.cfg holds every gameplay system's on/off switch and the handful of settings most servers change, and com.raveniron.ragnarokswrath.advanced.cfg holds the tuning — every rate, threshold and aura. docs/CONFIG.md walks through all of them. Upgrading from 0.27.x moves your settings over on the first start, values kept, and backs the old file up beside them.

Keep the config identical on the server and every client. Many gameplay settings act on each player's own game — sickness and chill, the exposure tiers, tired soil and the crop list, every land consequence with its thresholds and the wildlife list, grudges and spawn wars, the nemesis, relic stones — so a client with a diverging config plays by different rules on the same world. The guide marks which. The visual effects are the exception: each player chooses their own. If the server and a client disagree about the mod version, the client warns once on screen — mismatched pairs fail safe, but features silently stop showing until they match.

Plays well with

  • Seasonality — detected and deferred to automatically (GUID verified against their source)
  • FireFront — a listed dependency (installed automatically by mod managers); unlocks fire scarring, arson attribution, and storm lightning. Removing it is safe: those systems simply sleep.
  • AwayFromHome — deliberately compatible: drift never ticks on zone load state, unattended bases never burn, and sweeps are staggered off its rescan

Known limitations

  • On a Steam Cloud singleplayer world, the mod's world-state files live beside the local save and do not travel with the cloud — move machines and the land starts a fresh memory. Dedicated servers and local worlds are unaffected.
  • The mod adds no prefabs, no assets, no bundles — every visual is generated in code. This is deliberate and load-bearing; it will not change.

Early build

Every system is live and dedicated-server-verified — most rates to four decimal places against prediction — but this is an early, evolving mod. Report anything strange: the logs are chatty in all the right places.


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

1.0
  • No code changed. Only the version number moves.
  • FireFront 1.0.0 carries everything this mod reaches for. It was checked two ways:
    • Decompiling the 1.0.0 that Hexium serves. A mod manager's own download of it is byte-identical to the uploaded package. It has FireFront.Fire.FireManager with its static Instance, CollectActiveFirePositions(List<Vector3>), CurrentFireIgniterPlayerId and IgniteGroundNear(Vector3, float), one overload each, under the unchanged plugin GUID.
    • Booting a dedicated server on this build with FireFront 1.0.0. The bridge resolved on its first pass and raised no warning in the minute the server ran.
  • The BepInExPack line moves from 5.4.2333 to 5.4.2350. That changes the file, not what installs. For that one dependency Hexium lists the current pack whatever the zip says: 5.4.2350 for the live 0.27.3, whose zip says 5.4.2333, and the same for this studio's other mods. It does not do that for FireFront.
  • An older FireFront still works if you install by hand. The README says which FireFront each feature needs. The manifest line only decides what a mod manager fetches.
  • The README now matches 0.27.3 on bosses. It said every creature that kills you gains a star; a boss is marked but never does.
0.29.0 Latest

The wild answers a spawn war again. On contested ground, wildlife (deer, boar and hares by default) refills quickly while the war lasts, as it did before Valheim 1.0. Nothing needs doing to upgrade.

The wild's answer, working again

Since Valheim 1.0 (Ragnarok's Wrath 0.27.0), the wild side of a spawn war did nothing. The mod raised wildlife spawns through the game's own attraction mechanism, the one the Bog Witch's meads use, and Valheim 1.0 stopped reading the two values that mechanism relied on. The war still starred hostile spawns harder and still resolved, but no extra animals came.

  • In a contested zone, every animal on the wildlife list spawns at ContestWildSpawnChance (default 100%) instead of the game's own lower chance. It never lowers the game's chance, and 0 turns it off.
  • The game's own limit on how many can stand there is untouched, so a war refills hunted-out ground quickly and never crowds it past what the game would allow. The first spawn check after you arrive, which makes up for time away, rolls at the game's own chance, because at 100% that catch-up could overshoot the limit. Raids and other event spawns are never affected.
  • It is read on the game of the player standing there, like the rest of a war's local effects, so every player needs the setting in their own config.
  • ContestWildMaxSpawned is retired. It never added an animal even when the game read it, and nothing reads it now. The first start removes its line and says so in the log. Your ContestWildSpawnChance stays exactly as you set it.

Packaging

  • Tested on Valheim 1.0.16. The BepInExPack dependency is now 5.4.2351; FireFront stays at 1.0.2.
0.28.0

The config is two readable files now, with every value kept. Storm lightning checks for rain where it would strike. And a code review of 0.27.5 fixed a world's state leaking into the next one you load, storms ending raids, and titles swapping back and forth. Nothing needs doing to upgrade: the first start moves your settings and says so in the log.

Two config files, every value kept

The single com.raveniron.ragnarokswrath.cfg had grown to 148 settings in 18 sections, numbered in the order they were added. It is now two files:

  • com.raveniron.ragnarokswrath.cfg holds 42 settings: every gameplay system's on/off switch and the few settings most servers change, such as storm timing and look, storm lightning, how often outbreaks start, the nemesis, announcements and the visual effects.
  • com.raveniron.ragnarokswrath.advanced.cfg holds the other 104: rates, thresholds, intervals and lists.
  • Both files use the same 15 sections, 01 - General to 15 - Visuals, one per system, so a setting sits under the same heading as its switch.
  • Every description is rewritten in plain terms: what the setting does, in what unit, and, for the ones each player's own game reads, that it does.
  • docs/CONFIG.md is a guide to all of them, section by section, and marks the gameplay settings each player's own game reads: sickness and chill, the exposure tiers, tired soil and the crop list, every land consequence with its thresholds and the wildlife list, grudges and spawn wars, the nemesis, and relic stones. Give every player the server's values for those. The visual effects are each player's own choice.
  • Two settings are removed, because neither ever did anything. StormFireRiskMultiplier and StormWindMultiplier only ever fed a log line.
  • The wind settings moved into 03 - Weather in the advanced file. The mod reads the wind, but since the two retired settings went, nothing uses it.

Upgrading. The first start of 0.28.0 moves every setting to its new place with its value. It keeps the old file beside the new ones as com.raveniron.ragnarokswrath.cfg.v1.bak (.v0.bak if it was last written by 0.27.0 or earlier, before config files recorded a layout version), and logs one line naming what moved and what was removed. wrath status shows the layout version the files are at. Going back to an older version? Restore that backup first. An older version cannot read the new layout and would start from its defaults.

An interrupted move is safe. If a file is locked or the disk fills, the mod leaves your files as they were and moves them on the next start:

  • A save that fails part-way puts the file back exactly as it was, because BepInEx empties a config file before writing it.
  • The main file is written only after the advanced one has saved, so no setting is ever lost between the two.
  • If a setting turns up in both its old and its new place with different values (left behind by an interrupted earlier start and edited since), the new place's value is kept, unless it is only the shipped default. The log names both values either way.
  • If the mod cannot read the file at all, it writes nothing to either file and says, in the log and in wrath status, that settings may be at their defaults until the next start.

Verified on a dedicated server (Valheim 1.0.15).

  • A server config in the 0.27.x layout, with custom values, moved on the first start with all 146 of its values unchanged: 145 settings moved to new places, and one (AnnounceTitles) was already in its place, since its section kept its name. A second start changed nothing.
  • A player's own config, last written by 0.27.5, moved the same way when they launched the game on 0.28.0.
  • An interrupted move, rebuilt by hand under real BepInEx: a value edited in the new place was kept with a warning, and a default left there gave way to the old value.

Storm lightning checks for rain where it would strike

On a dedicated server, storm lightning struck in the rain. That was the default setup, with StormsForceWeather off. The game only works out the weather for a machine that has a camera, so a dedicated server's own weather reading never changes from the value it started with, and the rain check read that. The README promised "never in rain".

  • Each bolt now asks FireFront whether it is raining where the bolt would land. FireFront works out the weather for any position the same way the game does for a player standing there. If it rains there, or FireFront cannot say, the bolt does not fall.
  • This needs FireFront 0.21.0 or later when no storm sky is forced. With an older FireFront the log warns at startup, and no bolt falls unless StormsForceWeather is on.
  • With StormsForceWeather on, nothing changes. The storm's own sky decides, as it has since 0.27.2.
  • Verified on a dedicated server (Valheim 1.0.15, FireFront 1.0.2). With the server's weather forced to rain, all three bolts a storm rolled were withheld, each logged as "FireFront reads rain there". Forced clear, the next bolt struck about 30 m from the player and started a ground fire.

From a code review of 0.27.5

One save file gains an optional column: the titles file marks a player who has earned Winterborn this winter with a W, so the award stays once per winter across a restart. Older builds ignore the column and drop the mark on their next save.

  • Each world keeps its own state. Going back to the main menu and then starting or hosting another world kept the first world's zone drift, titles, grudges, sickness and relic stones in memory. They carried on in the second world at the same map positions, and the next autosave wrote them over the second world's own files. Now a world's state is saved and cleared when you leave it, and the next world loads its own. A dedicated server runs one world per start and was never affected.
  • Joining a server after playing a local world reads the server's state. The same leftover data made a player who went on to join a server see their local world's plague, frost, grudges and relic auras instead of the server's. The same fix covers it.
  • A storm no longer ends another event. Valheim runs one event at a time, and starting a storm ended whatever was running: a raid on a base, or Valkyrie's Cargo's merchant visit. A storm that comes due during another event now waits, and starts once that event is over. If the storm event is missing from the game's list, the storm no longer starts at all (the log says why), where before it ended the running event and announced a storm that never came. One side effect: a vanilla raid pauses while no player is near it, so a raid everyone walked away from can hold storms back until someone returns to it or the game replaces it with another event.
  • Titles no longer swap back and forth. Stormrider, Plaguewalker and Winterborn were awarded again on every title check while their condition held. Two that held together (plague in winter, a storm over plague) swapped every check, each swap announced to everyone. Every title is now earned once, when its condition starts. Winterborn's clock now starts again at zero each winter, so it is earned once per winter, after that winter's full stretch online; before, a server up through two winters awarded it the moment the second began. Titles earned at the same moment give one announcement.
  • Arson blame stays with the arsonist's own fire. FireFront used to report a single igniter for the whole map, so while one player's fire burned, every other fire anywhere was booked as their harm.
    • With a FireFront that reports who lit each fire (1.0.2 or later), each fire's harm goes to the player who lit it, or the fire it spread from. Natural fires and lightning blame nobody, and a storm no longer holds its lightning back while someone's fire burns.
    • With FireFront 1.0.1 or older, harm is booked only in the zones next to where that player's fire has spread. A fire elsewhere on the map is no longer blamed on them. A fire started right next to theirs, while theirs still burns, can still be.
  • Autosaves stay quick on old worlds. Saving the zone file compared every visited zone against every stored one, a pause on the server that grew with the world's age. It is now a direct lookup.
  • Nearby messages are rate-limited per player. One shared limit meant a message to one player could silently swallow another player's one-time message elsewhere on the map, such as a relic's story or the line a player gets on first reaching barren or festering ground.
  • Relic and zone messages are checked. The server drops relic and zone messages from a client that claims to be someone else. Clients accept relic and zone updates only from the server. A report that a relic stone broke counts only from a player near it, a report that one was raised only from the player the server asked to raise it, and the breaker is blamed only when they are near the stone.
  • A mod manager now installs FireFront 1.0.2 with it (was 1.0.0). It is the first FireFront that reports who lit each fire. Installing by hand, an older FireFront now names itself at boot, with what it still does and what needs the update.

39 older entries, full version history & downloads →

Manual download
Just this mod One .zip — RagnaroksWrath 0.29.0
Files you'll get 2
  • RagnaroksWrath 0.29.0 RavenIronStudios this mod Get
  • FireFront 1.0.2 RavenIronStudios Get

Your browser may ask permission to download several files at once. How to install these manually

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 RagnaroksWrath

This mod must be installed on both the client and the server.

Download RagnaroksWrath 0.29.0

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