Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Bifrost Breakout
Roaming monsters, migrating wildlife, warbands, unexpected encounters, and a world whose ecology changes as you progress.
By ChorusReef
| Date uploaded | 3 hours ago |
| Version | 0.1.0 |
| Download link | ChorusReef-Bifrost_Breakout-0.1.0.zip |
| Downloads | 16 |
| Dependency string | ChorusReef-Bifrost_Breakout-0.1.0 |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.
Preferred version: 5.4.2202ASharpPen-Spawn_That
Advanced tool for customizing mob spawners throughout the world with configuration files.
Preferred version: 1.2.18README
Bifrost Breakout 0.1.0 — Public Alpha
“The creatures of Valheim no longer stay politely inside their biomes.”
Roaming monsters, migrating wildlife, warbands, unexpected encounters, and a world whose ecology changes as you progress.
Bifrost Breakout adds rare biome-inappropriate creatures without modifying any
of Valheim's 85 existing world-spawner entries. Its mixed ecology remains a
supplemental Spawn That configuration. The independent BifrostBreakout.dll
owns Mountain Dvergr outpost cloning, the one-time warband mechanic, Project
Snake Eyes, and a conservative shoreline Bonemaw ecology. This public-alpha
identity packages the gameplay implementation previously tested as internal
Hellworld 0.4.0; the identity pass itself changes no gameplay balance.
Spawn That is a third-party dependency and spawning framework. Its source and implementation are not part of Bifrost Breakout.
Public-alpha testing status
Runtime-tested in normal play:
- core cross-biome spawning and gameplay;
- warbands and special squads that occurred naturally during testing;
- shoreline Bonemaw spawning and vanilla shoreline combat;
- the two-star Sea Disturbance Serpent spawning and fighting with vanilla AI.
Implemented and statically/runtime-table validated, but not yet naturally encountered during gameplay testing:
- the five post-Bonemass Ocean flyer spawners.
The Ocean flyers remain enabled. This is an alpha because broader combinations, long-session density, multiplayer behavior, and progression-edge cases still need more play.
The runtime baseline used to build it is preserved under
exports/baseline-0.221.12/.
Design
- Vanilla biome ecology remains intact.
- Added intruders use all current land biomes: Meadows, Black Forest, Swamp, Mountain, Plains, Mistlands, Ashlands, and Deep North.
- Land intruders exclude Ocean. Five independent post-Bonemass flyer entries use Ocean only.
- Ground intruders may appear from Day 1 and at the world center. Dedicated
hostile flyers require the vanilla
defeated_bonemassglobal key. - Intruder stars are inverted by primary native-biome progression: Black Forest creatures are always starred, Swamp/Mountain creatures have bounded chances, and Plains/Mistlands/Ashlands creatures are always unstarred.
- Prefab factions and normal AI are retained.
HuntPlayerandSetRelentlessare false for every entry.- Other progression gates remain empty, and world-age/distance gates remain zero.
- Greydwarves may appear in pairs; each Bifrost Breakout Lox check now produces one Lox. Other intruder groups remain solitary.
- Vanilla entries 0-84 are untouched; Bifrost Breakout uses supplemental IDs 9000-9049 without replacing native rows.
Project Snake Eyes
Project Snake Eyes is not a Spawn That entry and does not modify the vanilla
Serpent prefab globally. Server-side Bifrost Breakout instantiates the current vanilla
Serpent and retains its standard prefab display name, model, animations, water
movement, faction, native attacks, drops, and MonsterAI behavior. The project
calls the system Snake Eyes, but Bifrost Breakout deliberately assigns no special name
to the creature seen by the player. Internal files and compatibility identifiers
remain unchanged: WhiteWhaleSystem, Hellworld_WhiteSerpent, the White Whale
config section, and defeated_hellworld_white_whale.
The marked instance is always assigned internal Character level 3. Inspection
of Valheim 0.221.12 confirms that level 3 activates the enemy HUD's level_3
display, so it is always a visible two-star, regularly named Serpent. The level
is written to its ZDO and corrected by the server if it ever drifts. Ordinary
Serpent level rolls are untouched.
Every five seconds, a lightweight server-authoritative check updates per-player Sea Disturbance:
- swimming or treading water: +10 per second;
- aboard/controlling a ship: +1 per second;
- wading: +2 per second;
- moving near sampled shoreline water: +0.08 per second;
- placing a piece near sampled shoreline water: +10;
- quiet inland activity: -0.25 per second.
Woodcutting itself is not hooked and adds no build burst. In the v0.3.0 test log, repeated shoreline piece placements had already raised disturbance past 100; chopping wood merely coincided with the next five-second encounter tick. Shoreline construction disturbance remains intentional in v0.3.3. It may prime an encounter, but the encounter now waits until that player is swimming or aboard a boat before spawning.
At the default threshold of 100, sustained swimming/treading takes roughly 10
seconds, wading roughly 50 seconds, boat travel roughly 100 seconds, and
shoreline work is intentionally slower. Character.IsSwimming() depends on
Valheim's swim state rather than horizontal velocity, so stationary treading
counts. Briefly touching bottom, stepping ashore, or boarding/leaving a vessel
does not clear the stored value. Genuinely quiet/inland time subtracts 0.25 per
second. Death/disconnection, a world change, or a successful encounter spawn
clears the relevant transient state; a successful spawn resets only its selected
player.
All active rates, threshold, tick, water depth, spawn distances, retry delay,
and encounter lifetime are generated in BepInEx/config/Elwood.Hellworld.cfg
and may be tuned for testing. The retired ReturnCooldownSeconds,
DeathCooldownSeconds, InlandEscapeDistance, and RetreatDurationSeconds
entries may remain in an older generated file but are no longer bound or used.
Once an eligible player is actively swimming or aboard a boat, the server performs at most 24 water samples. The v0.3.8 close-range test defaults are 10-15 metres from the player and at least 1.5 metres deep. A candidate is still rejected unless its actual spawn point is below the water surface and unblocked. It uses the same underwater ground offset as the normal Serpent world spawner. Failure waits 30 seconds before another bounded attempt.
With WhiteWhaleDebugLogging=true, concise attempt diagnostics distinguish a
threshold trigger, failed-water retry delay, an existing marked encounter,
water-candidate success or failure, and final spawn success. The
success line includes straight-line and horizontal distance from the selected
player. Repeated block messages are limited to once per 30 seconds.
Bifrost Breakout performs no combat or targeting operations on the spawned Serpent. It
does not call SetHuntPlayer, Alert, SetFollowTarget, SetTarget, sensing,
target-field reflection, or patrol methods. It also uses vanilla's identity
spawn rotation rather than pointing the creature toward the player. The
unmodified MonsterAI must acquire something it can naturally sense and then
select, range, face, and execute the prefab's normal attack.
This deliberately gives up guaranteed offshore stalking. A player who reaches
land or breaks sight may be forgotten; the Serpent remains constrained by
m_avoidLand and may instead attack a naturally selected reachable boat/static
target. After the configured five-minute lifetime, Bifrost Breakout directly destroys
the marked loaded creature or unloaded ZDO without changing its AI. Duplicate
markers are still removed. Any pre-v0.3.3 marked encounter is retired once on
upgrade because older builds may have persisted HuntPlayer=true in its ZDO.
There is no return or post-kill cooldown. A successful spawn resets the selected
player's disturbance to zero. Periodic swimming/wading/ship sampling pauses
while that single encounter remains active, although explicit shoreline build
events can still add their normal burst. Once it dies, expires, is cleaned up,
or its ZDO disappears, normal periodic accumulation resumes immediately. The
old compatibility key defeated_hellworld_white_whale is removed once when a
world loads and is never written. A per-ZDO death marker only stops a defeated instance from being
mistaken for an active encounter; it no longer starts any timer.
Deliberate dock/structure targeting is absent. The encounter-start log reports
the prefab's native HuntPlayer, alert, avoid-land, and player-object settings
without changing them.
Shoreline Bonemaw ecology
Bifrost Breakout adds a separate, server-authoritative coastal ecology check. It
does not use Sea Disturbance and does not alter Project Snake Eyes. Once per 60
seconds, the server samples water 15-30 metres from active living players. A
candidate must be unblocked, at least 5 metres deep, below the water surface,
and within 30 metres of sampled land or very shallow water. An eligible check
has a 20% chance to instantiate one stock BonemawSerpent at ground + 0.5m,
the same offset used by its native world-spawner.
Each shoreline Bonemaw remains internal Character level 1 (unstarred). Its
stock Demon faction, HuntPlayer=false, bite, spit, taunt, sensing, swimming,
and MonsterAI are left untouched. Bifrost Breakout neither chooses nor forces a
target. Ordinary vanilla Bonemaws have no Bifrost Breakout ownership marker and do not
count against this system's cap. Only one marked Bonemaw may exist within 150
metres of the selected player or actual candidate point.
A marked Bonemaw is removed after 600 seconds. It is also removed early after
no living player has remained within 200 metres for a continuous 60 seconds.
The absence timer and absolute expiry are stored in the creature ZDO, so cleanup
survives unloading and reload. Concise logs report spawns, cap blocks, expiry or
distance cleanup, and save/reload recovery. All rates, ranges, and limits are
available under the generated Bifrost Shoreline Bonemaws config section.
Both Bifrost Breakout aquatic systems record their created ZDO IDs immediately. On a
world load, prefab-specific ZDOMan enumeration rebuilds each tracker only from
ZDOs carrying that system's ownership marker. Tracked IDs are then resolved via
ZDOMan.GetZDO, while loaded instances are resolved through ZNetScene. This
replaces the player-only ZNet.GetAllCharacterZDOS() path and makes duplicate
prevention and cleanup work for loaded and unloaded mod-owned monsters without
capturing ordinary vanilla instances.
Mountain Dvergr strongholds
Bifrost Breakout clones the three intact current-game locations
Mistlands_GuardTower1_new, Mistlands_GuardTower2_new, and
Mistlands_GuardTower3_new during ZoneSystem.SetupLocations. The clones use
the original SoftReference prefabs, so their vanilla buildings, loot, Dvergr
spawners, and other contents are not rebuilt or replaced. Only placement rules
change:
- biome: Mountain, all biome-area bands;
- requested quantity: 120 per tower variant;
- shared group:
Hellworld_Mountain_DvergrOutposts; - shared minimum separation: 300 metres;
- prioritized placement, non-unique, no center-distance or forest gate;
- altitude: 20-1000 metres above the world water reference;
- original footprint, terrain-delta, vegetation, rotation, and clearing rules remain attached to each source tower.
Quantity is deliberately an upper request, not a guaranteed result. The common
300m group separation and each tower's inherited terrain footprint are expected
to be the practical limits. Defaults are configurable under
Mountain Strongholds in Elwood.Hellworld.cfg.
Valheim persists a completed location table in the world save. Bifrost Breakout does
not force-reset that table: a newly created world is the clean test path. An
existing world whose location table is already generated will not gain these
outposts merely by exploring new terrain unless a separate world-upgrade tool
regenerates locations. No Jotunn dependency was added; cloning an unchanged
vanilla SoftReference location is supported directly by the current
ZoneSystem API.
Added spawners
Intervals are seconds. Chance is the independent chance on each interval. A successful chance roll can still fail because no valid terrain point is found or because the local prefab cap has already been reached.
| Creature | Prefab | Tier | Chance | Interval | Max nearby | Group |
|---|---|---|---|---|---|---|
| Greydwarf | Greydwarf |
Common | 18% | 180 | 2 | 1-2 |
| Skeleton | Skeleton |
Common | 15% | 240 | 2 | 1 |
| Draugr | Draugr |
Common | 12% | 300 | 1 | 1 |
| Blob | Blob |
Common | 10% | 360 | 1 | 1 |
| Surtling | Surtling |
Common | 0.8% | 420 | 1 | 1 |
| Wolf | Wolf |
Common | 10% | 300 | 1 | 1 |
| Charred Twitcher | Charred_Twitcher |
Common | 0.6% | 480 | 1 | 1 |
| Bear | Bjorn |
Dangerous | 5% | 600 | 1 | 1 |
| Troll | Troll |
Dangerous | 4% | 720 | 1 | 1 |
| Abomination | Abomination |
Dangerous | 3% | 900 | 1 | 1 |
| Fuling | Goblin |
Dangerous | 5% | 600 | 1 | 1 |
| Fuling Berserker warband | GoblinBrute |
Apex squad | 2% | 1200 | 1 | 1 |
| Lox | Lox |
Dangerous | 3% | 900 | 3 | 1 |
| Deathsquito | Deathsquito |
Dangerous | 4% | 600 | 1 | 1 |
| Wraith | Wraith |
Dangerous | 4% | 720 | 1 | 1 |
| Stone Golem | StoneGolem |
Dangerous | 2% | 900 | 1 | 1 |
| Seeker | Seeker |
Dangerous | 4% | 720 | 1 | 1 |
| Asksvin | Asksvin |
Dangerous | 0.3% | 900 | 1 | 1 |
| Charred Warrior | Charred_Melee |
Dangerous | 0.3% | 900 | 1 | 1 |
| Vile | Unbjorn |
Apex | 2% | 1200 | 1 | 1 |
| Seeker Soldier | SeekerBrute |
Apex | 2% | 1200 | 1 | 1 |
| Gjall | Gjall |
Apex | 2% | 1200 | 1 | 1 |
| Morgen | Morgen_NonSleeping |
Apex | 0.2% | 1200 | 1 | 1 |
| Ghost archer squad | Ghost |
Apex squad | 2% | 1200 | 1 | 1 |
| Dvergr patrol leader | Dverger |
Stronghold patrol | 30% | 300 | 2 | 1 |
| Wolf Alpha | Wolf |
Mountain squad | 12% | 600 | 6 | 1 |
| Fenring leader | Fenring |
Mountain elite squad | 8% | 900 | 2 | 1 |
Skeletons, Wraiths, and Viles retain night-only spawning. The other Bifrost Breakout entries can spawn during day or night.
The squad/warband rows use one-creature Spawn That groups; the DLL creates their
followers. The Dvergr patrol requires defeated_bonemass and can appear in all
land biomes. Wolf Alpha and Fenring hunting-party leaders are Mountain-only.
Ghost and Fuling Berserker are rare all-land outdoor leaders. Their exact
compositions are documented under Warbands.
Bifrost Breakout's Deathsquito, Wraith, and Gjall entries additionally require
defeated_bonemass on land. The separate Ocean flyer layer uses the same key
for all five entries while leaving these land rows and every native row intact.
Post-Bonemass Ocean flyers
| Creature | Runtime prefab | Chance | Interval | Cap | Time |
|---|---|---|---|---|---|
| Deathsquito | Deathsquito |
4% | 600s | 1 | day/night |
| Wraith | Wraith |
4% | 720s | 1 | night only |
| Drake | Hatchling |
4% | 720s | 1 | day/night |
| Gjall | Gjall |
2% | 1200s | 1 | day/night |
| Volture | Volture |
0.4% | 900s | 1 | day/night |
These are independent one-creature, level-1 spawners in Ocean, all requiring
defeated_bonemass. HuntPlayer=false, the faction override is blank, and
SetRelentless=false. They use a 50m terrain offset over Ocean ground 5-40m
below sea level, placing them approximately 10-45m above the water instead of
on the seabed. The Volture chance retains Bifrost Breakout's 10% Ashlands-intruder
frequency rule. No squad, coordination, or DLL combat behavior is involved.
Bifrost Breakout-added creatures that also belong to the current native Ashlands roster use exactly 10% of their previous independent chance: Surtling 8% to 0.8%, Charred Twitcher 6% to 0.6%, Asksvin 3% to 0.3%, Charred Warrior 3% to 0.3%, and Morgen 2% to 0.2%. Intervals, caps, groups, stats, and native Ashlands spawners are unchanged.
Balance model
Before terrain failures and local caps, the independent chance rolls average:
- Common: about 8.48 successful checks per hour, or one every 7.1 minutes.
- Dangerous: about 1.34 per hour before Bonemass and 1.68 afterward, or one every 44.6/35.6 minutes respectively.
- Apex: about 0.216 per hour before Bonemass and 0.276 afterward, or one every 4.6/3.6 hours respectively.
The new conditional squad-leader checks add raw averages of 3.6 Dvergr patrol leaders per hour after Bonemass across land, 0.72 Wolf Alphas per hour while in Mountains, and 0.32 Fenring hunting parties per hour while in Mountains, before terrain failures, prefab caps, and spawn-distance checks.
The rare Ghost and Fuling Berserker leader checks each add 0.06 raw successful checks per hour across land before terrain failures and caps.
The calculation treats day and night as equal-duration windows for night-only entries. Actual populations should be lower because Spawn That must find valid terrain and respects each prefab's local cap. The theoretical maximum is higher than the intended routine population, so the first playtest should specifically watch for accumulation after remaining near one base for several in-game days.
Install
Spawn That 1.2.18 and BepInEx must already be installed. Copy
spawn_that.world_spawners.hellworld.cfg into the active profile's
BepInEx/config/ directory. Copy BifrostBreakout.dll into its own directory under
BepInEx/plugins/, then restart Valheim and enter a world.
For the current Zelwood profile the destination is:
C:\Users\eldth\AppData\Roaming\r2modmanPlus-local\Valheim\profiles\Zelwood\BepInEx\config\spawn_that.world_spawners.hellworld.cfg
The DLL destination used by the current workflow is:
C:\Users\eldth\AppData\Roaming\r2modmanPlus-local\Valheim\profiles\Zelwood\BepInEx\plugins\Bifrost-Breakout\BifrostBreakout.dll
Disable
Quit Valheim and rename the file to:
spawn_that.world_spawners.hellworld.cfg.disabled
Disable the DLL by renaming BifrostBreakout.dll to
BifrostBreakout.dll.disabled, then restart the game. Vanilla spawners were
never overwritten. Creatures that already exist may remain until they die or
naturally despawn, but no new Bifrost Breakout intruders, entourages, or Project
Snake Eyes encounters will be created.
Standalone development workflow
The editable source project lives at:
C:\Users\eldth\Documents\ValheimMods\Hellworld
Run build-local.ps1 to compile into dist/build/BifrostBreakout.dll. Run
package.ps1 to create the clean Thunderstore-rooted staging directory under
dist/public-alpha/. A final upload ZIP is created only when a valid 256x256
project-root icon.png exists. Run deploy-zelwood.ps1 -ProfilePath <profile>
only while Valheim is closed; it backs up the exact installed DLL, metadata,
legacy plugin folder, and Spawn That config before copying. It deliberately
retains the generated Elwood.Hellworld.cfg tuning file and the legacy Spawn
That config filename for compatibility. validate.ps1 -ProfilePath <profile> -PackagePath <staging> verifies source/build/install/package hashes and core
invariants.
Machine-specific paths are held in ignored local.paths.ps1; use
local.paths.example.ps1 on another machine. Build/package output and
deployment backups are ignored by local Git. The small tools/roslyn/ bundle
contains the compiler runtime and its third-party notices, so builds do not
depend on the retired Codex experiment or an installed Visual Studio SDK.
Diagnostics
The Zelwood spawn_that.cfg currently enables:
WriteSpawnTablesToFileBeforeChangesWriteSpawnTablesToFileAfterChangesWriteConfigsToFile
Spawn That writes the results into BepInEx/Debug/ whenever a world is entered.
The last gameplay-verified v0.1.2 export contained 107 entries: 85 vanilla plus
22 Hellworld entries. Bifrost Breakout 0.1.0 contains the unchanged 32
supplemental entries from internal 0.4.0, so the next expected post-change total
is 117: 85 vanilla plus 32 Bifrost Breakout entries.
That fresh runtime export still requires a Valheim launch.
Inverted star difficulty
Ordinary supplemental Bifrost Breakout intruders use these rules. Vanilla/native
spawners are not overridden. Fixed squads are explicit exceptions: Dvergr and
Stone Golem leaders are level 1, Wolf Alpha and Fenring are level 2, Ghost is
level 3, and the new Plains-native GoblinBrute source is level 1.
| Primary native biome | LevelMin | LevelMax | LevelUpChance | Result |
|---|---|---|---|---|
| Meadows | 3 | 3 | 0 | Always 2-star |
| Black Forest | 2 | 3 | 50 | Always 1-star; 50% become 2-star |
| Swamp | 1 | 2 | 50 | 50% unstarred; 50% become 1-star |
| Mountain | 1 | 2 | 25 | 75% unstarred; 25% become 1-star |
| Plains | 1 | 1 | 0 | Always unstarred |
| Mistlands | 1 | 1 | 0 | Always unstarred |
| Ashlands | 1 | 1 | 0 | Always unstarred |
The ordinary roster contains no Meadows-native intruder. Applied primary-biome classifications are:
- Black Forest:
Greydwarf,Skeleton,Bjorn,Troll - Swamp:
Draugr,Blob,Surtling,Abomination,Wraith - Mountain:
Wolf;StoneGolemis normalized to level 1 for its fixed squad - Plains:
Goblin,GoblinBrute,Lox,Deathsquito,Unbjorn - Mistlands:
Seeker,SeekerBrute,Gjall - Ashlands:
Charred_Twitcher,Asksvin,Charred_Melee,Morgen_NonSleeping
Post-boss foreign-biome vanilla entries do not redefine a creature's primary
biome. Skeleton is treated as Black Forest progression despite later
world-spawner coverage; Surtling is treated as Swamp because that is its first
normal progression encounter, despite also spawning natively in Ashlands.
LevelUpMinCenterDistance remains zero.
Lox encounters
Bifrost Breakout Lox use GroupSizeMin = 1 and GroupSizeMax = 1, so each successful
check produces exactly one unstarred Lox. MaxSpawned = 3 remains unchanged;
up to three Lox may accumulate through separate successful checks. Chance,
interval, biome scope, level rules, group radius, AI, faction, and every other
Lox field are unchanged. Lox are not part of the custom warband mapping.
Warbands
Warbands are owned by BifrostBreakout.dll, not Spawn That. The owning peer processes
each exact leader prefab once and writes the persistent ZDO marker
Elwood.Hellworld.WarbandSpawned before creating followers.
| Leader prefab | Follower prefab | Normal | One-star | Two-star |
|---|---|---|---|---|
Troll |
Greydwarf |
3 | 4 | 5 |
Abomination |
Draugr |
3 | 4 | 5 |
Ghost |
Skeleton with skeleton_bow |
n/a | n/a | 3 fixed |
StoneGolem |
Greydwarf_Shaman + Greydwarf_Elite |
2 Shamans + 1 Brute fixed | n/a | n/a |
GoblinBrute |
Goblin |
3 | 4 | 5 |
SeekerBrute |
Seeker |
3 | 4 | 5 |
Morgen |
Charred_Twitcher |
3 | 4 | 5 |
Morgen_NonSleeping |
Charred_Twitcher |
3 | 4 | 5 |
Stone Golem is intentionally removed from the generic star-count rule. A newly
processed Golem is fixed to internal level 1 (unstarred) and receives two
level-1 Greydwarf_Shaman plus one level-1 Greydwarf_Elite (the Greydwarf
Brute), for exactly four creatures requested in the squad. The former Bat and
older Wolf entourages are gone. The Shamans are untouched vanilla prefabs; their
normal faction AI decides when to heal. The other rows retain the configurable
generic base count plus one follower per visible leader star.
A newly processed Ghost is fixed to internal level 3 (two stars) and receives
three level-3/two-star Skeleton followers, for four two-star creatures total. Current
Valheim assets do not contain a Skeleton_Archer character prefab: the normal
archer is the Skeleton prefab equipped with skeleton_bow. Bifrost Breakout stores
that weapon-loadout marker and restricts those three followers to the verified
vanilla bow before Humanoid.Start; native inventory setup, faction, targeting,
movement, and attacks remain unchanged. No generic star bonus is consulted.
Complete warband and squad spawn audit
All land means Meadows, Black Forest, Swamp, Mountain, Plains, Mistlands,
Ashlands, and Deep North; Ocean is excluded. Chance is an independent percentage
per interval, and cap is the nearby leader-prefab cap from Spawn That.
| Encounter / exact prefabs | Outdoor leader source and scope | Chance / interval / cap | Leader level | Followers or group | Ordinary gameplay? |
|---|---|---|---|---|---|
Troll: Troll + Greydwarf |
9011, all land | 4% / 720s / 1 | level 2; 50% level 3 | 4 unstarred Greydwarves at ★; 5 at ★★ | Yes |
Abomination: Abomination + Draugr |
9012, all land | 3% / 900s / 1 | level 1; 50% level 2 | 3 unstarred Draugr; 4 if leader becomes ★ | Yes |
Fuling Berserker: GoblinBrute + Goblin |
9044, all land | 2% / 1200s / 1 | level 1 | 3 unstarred Fulings | Yes; added by v0.3.6 |
Seeker Soldier: SeekerBrute + Seeker |
9031, all land | 2% / 1200s / 1 | level 1 | 3 unstarred Seekers | Yes |
Morgen: Morgen_NonSleeping + Charred_Twitcher |
9034, all land | 0.2% / 1200s / 1 | level 1 | 3 unstarred Twitchers | Yes |
Stone Golem: StoneGolem, Greydwarf_Shaman, Greydwarf_Elite |
9017, all land | 2% / 900s / 1 | fixed level 1 | 2 unstarred Shamans + 1 unstarred Brute | Yes |
Wolf Alpha: Wolf + Wolf |
9041, Mountain | 12% / 600s / 6 | fixed level 2 (★) | 3 unstarred Wolves | Yes |
Fenring hunt: Fenring, Fenring_Cultist, Ulv |
9042, Mountain | 8% / 900s / 2 | Fenring level 2 (★) | 1 level-2/★ Cultist + 3 unstarred Ulvs | Yes |
Dvergr patrol: Dverger, DvergerMageFire, DvergerMageIce, DvergerMageSupport |
9040, all land; defeated_bonemass |
30% / 300s / 2 | level 1 | 1 unstarred mage of each role | Yes after Bonemass |
Ghost archers: Ghost, Skeleton, skeleton_bow |
9043, all land | 2% / 1200s / 1 | fixed level 3 (★★) | 3 level-3/★★ bow Skeletons | Yes; added by v0.3.6 |
Lox encounter: Lox |
9014, all land | 3% / 900s / 3 | level 1 | Spawn That group fixed at 1 Lox; no DLL followers | Yes |
The audit used the current 0.221.12 SoftReference manifest, the last loaded Spawn That export, the source supplemental config, and the exact DLL definitions. The last loaded export confirms every pre-v0.3.6 row. IDs 9043 and 9044, plus the Stone Golem level normalization, require the next Valheim world load to appear in a newly generated runtime export.
Three exact tagged squads are also owned by the same one-time system:
| Tagged leader | Fixed leader level | Fixed followers | Total |
|---|---|---|---|
Dverger / HellWorld_Mountain_DvergrPatrol |
1 | one level-1 DvergerMageFire, one DvergerMageIce, one DvergerMageSupport |
4 |
Wolf / HellWorld_Mountain_WolfAlpha |
2 (one-star) | three level-1 Wolf |
4 |
Fenring / HellWorld_Mountain_FenringHunt |
2 (one-star) | one level-2 Fenring_Cultist, three level-1 Ulv |
5 |
Spawn That's spawn_template_id ZDO value selects these leaders. Ordinary
Wolves, Fenrings, Dvergr outpost defenders, and the existing universal Wolf
intruder do not qualify. Every created follower receives a persistent follower
marker before its first Start, which prevents same-prefab Wolf recursion. The
generic star bonus is never consulted for fixed squads.
Followers are not tethered, replaced, or reinforced. All use their unchanged vanilla factions and AI.
An already-existing qualifying leader has no Bifrost Breakout marker from older saves, so the first time that individual is loaded with the plugin it will receive one warband. This is lifecycle-driven; Bifrost Breakout does not scan the world.
Technical warnings and exclusions
- Bosses are not included. In Valheim 0.221.12,
Character.OnDeathreads the boss prefab'sm_defeatSetGlobalKeyand passes it toZoneSystem.SetGlobalKey. Spawn That has no config field that clears this prefab behavior. A wandering boss could therefore advance progression and change raids merely by dying. Avoiding that would require a code patch, which is outside this config-only experiment. - Additional ordinary Spawn That Serpent/Bonemaw spawners are not included. Project Snake Eyes and the code-owned shoreline Bonemaw ecology leave vanilla Ocean Serpents and native Ashlands Bonemaws unchanged.
- The current asset manifest exposes one ordinary Serpent attack prefab,
Assets/Characters/Serpent/misc/Serpent_attack.prefab; do not expect a separate Bonemaw-style spit/projectile move from this creature. - Leeches, fish, and all other water creatures are excluded.
Fenring_Cultistis still not an independent Bifrost Breakout world-spawner entry; it appears only as the single fixed one-star follower in a tagged Fenring hunting party. The current vanilla runtime has no ordinary Cultist world spawner to override.- Better Continents may alter geography, but Spawn That evaluates the biome at the selected runtime spawn point. This config does not modify geography.
- Seasonality can suppress creature availability if its spawn tweaks are later changed. The inspected Zelwood Seasonality settings currently allow the selected creatures in every season.
- Fallen Valkyrie remains a valid vanilla Ashlands prefab, but its Bifrost Breakout cross-biome entry is removed. Already-existing individuals are not scanned or deleted.
- Supplemental Ocean
HatchlingandVoltureentries are isolated IDs 9047 and 9049. Their native Mountain/Ashlands spawners remain untouched. - Mountain outposts require a fresh/generated location table. Bifrost Breakout does not silently invalidate and rewrite an existing world's location layout.
- The reused tower assets are verified current-game SoftReference names. If a later Valheim update renames one, Bifrost Breakout logs a warning and safely skips only that variant.
- The current SoftReference manifest verifies
Ghost,Skeleton, andskeleton_bow; it contains no dedicatedSkeleton_Archercharacter prefab. The Ghost squad therefore uses the ordinary Skeleton with its native bow loadout instead of inventing a creature or attack.
First playtest
Travel through Meadows and Black Forest for 30-60 minutes, including one night. Record:
- approximate time to the first foreign spawn;
- total foreign creatures visible near one location;
- whether any prefab repeatedly fails to navigate on ordinary terrain;
- whether native creatures still clearly outnumber routine intruders;
- any frame-time spike coinciding with world-spawner checks or a particular creature appearing.
In a world without defeated_bonemass, verify that no Bifrost Breakout Ocean flyer
rows load as eligible. Then repeat in a Bonemass-defeated test world and confirm
Deathsquito, nighttime Wraith, Hatchling, Gjall, and Volture are all
eligible over Ocean without changing their existing land/native rows.
For warbands, spawn one normal Troll and verify 3 Greydwarves appear. Kill one,
leave and return, then save/reload; no follower should be replaced and the same
Troll should never receive a second entourage. Repeat with GoblinBrute or
SeekerBrute after the basic test.
For the Mountain pass, use a new world. Confirm startup logs register all three
guard-tower variants, then reveal or travel through a large Mountain and count
outposts/separation. Before Bonemass, confirm no tagged Dvergr patrol leaders
appear away from outposts; after setting defeated_bonemass, confirm a patrol is
exactly one Dvergr plus Fire/Ice/Support mages. Confirm a tagged Wolf Alpha is
one-star with exactly three unstarred Wolves, a tagged Fenring is one-star with
one one-star Fenring_Cultist and three unstarred Ulv. Confirm a newly
processed Stone Golem becomes unstarred and receives exactly two unstarred
Greydwarf Shamans plus one unstarred Greydwarf Brute, with no Bats. Damage the
Golem or another allied target and observe whether the Shamans use their normal
healing behavior without Bifrost Breakout intervention.
For the Ghost squad, create or encounter a new unprocessed Ghost on ordinary outdoor terrain. Confirm it is two-star and receives exactly three two-star Skeletons carrying bows. Confirm all three fire normal arrows and that saving and reloading does not change their loadout or create another entourage.
Tune interval, chance, and caps only after reviewing the post-change export and one play session.
For the shortest Project Snake Eyes test, retain the default threshold 100 and
enter water at least 1.5m deep. Tread water without horizontal input for about
10 seconds. Confirm exactly one regularly named two-star Serpent appears about
10-15m away and the log reports vanillaAIUntouched=true. Kill it, then tread
water for another approximately 10 seconds; a later encounter should be
eligible without a death/return cooldown. Setting EncounterDurationSeconds=30
provides the same short recurrence check through hard expiry instead of death.
For a quick Ocean-flyer eligibility test, temporarily change IDs 9045-9049 to
SpawnChance=100 and SpawnInterval=30, enter an Ocean biome after Bonemass,
and test both day and night (Wraith is night-only). Confirm all spawn singly and
above the surface. Remove defeated_bonemass and repeat long enough for at least
one check: none of those five supplemental rows should spawn. Restore the five
documented rates after testing.
CHANGELOG
Bifrost Breakout changelog
2026-08-24 — v0.1.0 public alpha identity/package pass
- Renamed the public plugin display name, assembly/DLL, package metadata, documentation, Spawn That display labels, deployment folder, and user-facing startup log to Bifrost Breakout.
- Adopted the public-alpha version
0.1.0. This is a release identity change from the tested internal Hellworld 0.4.0 build, not a gameplay rebalance. - Retained compatibility-sensitive identities: BepInEx GUID
Elwood.Hellworld, namespace/source project location, generated configElwood.Hellworld.cfg, supplemental config filename,HellWorld_*Spawn That template IDs, Mountain location IDs, warband/ZDO markers, and Project Snake Eyes/White Whale persistence names. - Reworked packaging into a clean Thunderstore-rooted staging tree with only
manifest.json,README.md,CHANGELOG.md, the install-shaped DLL/config payload, andicon.pngwhen available. Source, validation files, logs, backups, exports, Git data, and intermediates are excluded. - Added the supplied Bifrost Breakout artwork as the preserved icon source,
created a polished 1254x1254 project master, and produced an exact 256x256
icon.pngfor Thunderstore. Packaging validates the PNG signature and IHDR dimensions before emitting the final upload ZIP. - Updated Zelwood deployment to install
BifrostBreakout.dllunderBepInEx/plugins/Bifrost-Breakout/, backing up and removing the formerElwood-Hellworlddirectory to prevent duplicate loads of the preserved GUID. - Public-alpha test status records core ecology, naturally encountered warbands/squads, shoreline Bonemaw combat, and the two-star Sea Disturbance Serpent as runtime-tested. Post-Bonemass Ocean flyers remain enabled and validated but have not yet been encountered naturally by the tester.
2026-08-24 — v0.4.0 open-water recurrence and Ocean flyers
- Fixed Sea Disturbance retention: the update loop now processes every living player instead of skipping and deleting state whenever they are not currently swimming or aboard a ship. Wading, shoreline gain, and inland decay are now reachable.
- Changed default gain to +10/second while swimming or treading water, +2/second while wading, and +1/second aboard a ship. Moving shoreline gain remains +0.08/second, shoreline construction remains +10, quiet/inland decay remains -0.25/second, and the threshold remains 100.
- Verified current
Character.IsSwimming()uses swim state rather than horizontal velocity, so stationary treading receives the swimming rate. - Preserved disturbance across swimming/wading/shore/vessel transitions. It is reset for the selected player only after a successful Serpent spawn; dead or disconnected players and world changes discard transient per-player state.
- Removed both recurrence delays:
ReturnCooldownSecondsandDeathCooldownSecondsare no longer bound or read. A killed, expired, cleaned, or missing encounter permits immediate normal disturbance accumulation. Any olddefeated_hellworld_white_whalekey is removed once on world load. - Preserved the ordinary
Serpent, level 3/two stars, normal display name, 10-15m placement, finite lifetime, vanillaMonsterAI, and v0.3.9 ZDO-ID tracking. No hunt, target, alert, follow, pursuit, or combat manipulation was added. - Added five independent Ocean-only Spawn That entries gated by
defeated_bonemass:Deathsquito4%/600s, nighttimeWraith4%/720s,Hatchling4%/720s,Gjall2%/1200s, andVolture0.4%/900s. Every cap and group size is one; every level is fixed at 1. - The Ocean entries use a 50m offset over 5-40m-deep Ocean terrain so flyers
begin approximately 10-45m above sea level. All have
HuntPlayer=false, blank faction overrides, andSetRelentless=false; existing native and Hellworld land spawners are untouched. - The shoreline Bonemaw source/config was not changed. Metadata is now 0.4.0.
- Build, package, Zelwood deployment, hashes, and static validation are recorded
in
VALIDATION.md. No v0.4.0 gameplay result is claimed.
2026-08-24 — v0.3.9 aquatic ownership and shoreline Bonemaws
- Replaced the invalid aquatic-monster rediscovery use of
ZNet.GetAllCharacterZDOS()with directZDOIDregistration, resolution viaZDOMan.GetZDO, and loaded-instance resolution throughZNetScene. - Added bounded save/reload recovery through prefab-specific
ZDOMan.GetAllZDOsWithPrefabIterativeenumeration plus distinct ownership markers. Ordinary vanilla Serpents and Bonemaws are never adopted by either Hellworld tracker. - Project Snake Eyes now uses that tracker for duplicate prevention, expiry, obsolete-instance migration, and loaded/unloaded cleanup. Its spawn rules, level, lifetime, cooldowns, Sea Disturbance, and untouched vanilla AI remain unchanged.
- Added independent shoreline ecology for the stock
BonemawSerpent: server check every 60 seconds, 20% chance after a valid candidate, 15-30m player distance, at least 5m water depth, within 30m of sampled shore, and a strict cap of one marked Bonemaw within 150m. - Mod-owned shoreline Bonemaws are level 1 and retain the prefab's vanilla Demon
faction,
HuntPlayer=false,MonsterAI, movement, bite, spit, and taunt. Hellworld performs no target or aggression manipulation. - Added a 600-second hard lifetime and early cleanup after all living players remain farther than 200m for 60 continuous seconds. Expiry and away timing are persisted on the creature ZDO. Spawn, cap, cleanup, and recovery are logged.
- Spawn That gameplay sections and all unrelated warband, stronghold, intruder, and Serpent-encounter balance remain unchanged. Metadata is now 0.3.9.
- Build/deployment/package hashes and the result of static validation are
recorded in
VALIDATION.md. No v0.3.9 gameplay result is claimed.
2026-08-24 — v0.3.8 close-range Serpent spawn diagnostic
- Changed Project Snake Eyes default horizontal spawn range from 45-55m to 10-15m for a focused vanilla-Serpent sensing/attack test.
- Reduced the default minimum sampled water depth from 5m to 1.5m. Placement
still requires an unblocked point whose
ground + 0.5mspawn position is below the world water surface. - Added concise logs for threshold reached, death/return/retry cooldown blocks, an existing active encounter, water-candidate success/failure, and successful spawn distance. Repeated block logs are rate-limited to one every 30 seconds.
- Made the swimming/occupied-ship requirement explicit in final candidate selection as well as disturbance sampling, including after a failed-water retry delay.
- Preserved the ordinary vanilla
Serpent, internal level 3/two stars,Quaternion.identityinstantiation, untouchedMonsterAI, five-minute hard lifetime, 15-minute death cooldown, Sea Disturbance rates, and all unrelated Hellworld spawners/warbands/strongholds. - Updated Zelwood's existing generated
Elwood.Hellworld.cfgfrom 45/55/5 to 10/15/1.5 after preserving its pre-change copy underdeploy-backups/20260824-004912/. - Assembly/plugin/manifest/package metadata is 0.3.8. Build, deployment,
packaging, and source/install validation passed. Built and installed DLL
SHA-256 is
E3F7FCBDE2BA279969E3AEC363CD6722EF2AA8270F886961174EE4ED5DEEE9EC. - The deployed/source Spawn That config remains behaviorally unchanged and
matches at
277E37018B3B072DFE5E384D0FDAFB5C838939F2CD637B0B2152C8D3E0B20EC1; its only v0.3.8 change is the package-version comment. Package output isdist/Hellworld-0.3.8.zip. - No v0.3.8 gameplay observation is claimed.
2026-08-23 — v0.3.7 single-Lox encounters
- Changed only Hellworld WorldSpawner 9014
GroupSizeMinandGroupSizeMaxfrom 3 to 1. Each successful Hellworld Lox check now creates exactly one unstarredLoxinstead of a three-creature herd. - Preserved
SpawnChance=3,SpawnInterval=900, all-land biome scope,MaxSpawned=3, level 1-only rules, group radius, terrain conditions,HuntPlayer=false, blank faction override, and every other Lox field. - Keeping
MaxSpawned=3means separately successful checks may still accumulate as many as three nearby Lox; it does not make one check spawn three creatures. - Lox remains outside the DLL warband system. No C# gameplay logic or other Spawn That entry changed.
- Assembly/plugin/manifest/package metadata is 0.3.7. Build, static validation,
deployment, and source/install validation passed. Built and installed DLL
SHA-256 is
BCB3CD0ADE55E378F68EDA00044A5B008ECF0A7550DF696586506897E7FB7FF0. - The deployed/source Spawn That config matches at
6E8CAD8BF89E93F34AEBA4A7B32D2B509879BAA5FCE48435C76430FA87E9325D. The prior Zelwood copy is preserved underdeploy-backups/20260823-222454/; package output isdist/Hellworld-0.3.7.zip. - No v0.3.7 gameplay result or fresh runtime export is claimed.
2026-08-23 — v0.3.6 complete warband spawn audit
- Audited every code-defined warband/fixed squad and the three-Lox group against the source config, the last loaded Spawn That configuration export, current world-spawner data, and Valheim 0.221.12's SoftReference manifest.
- Verified the runtime prefab corrections
GoblinBrutefor Fuling Berserker,SeekerBrutefor Seeker Soldier,Morgen_NonSleepingfor the outdoor Morgen,Greydwarf_Elitefor Greydwarf Brute, and all other leader/follower names. - Found one intended existing warband without a Hellworld outdoor leader source:
GoblinBrute. The ordinary Fuling entry 9013 usesGoblinand cannot trigger the exact Berserker mapping. - Added ID 9044,
HellWorld_Apex_GoblinBruteWarband:GoblinBrute, all land, 2% per 1200 seconds, cap one, group one, fixed level 1. Its generic warband adds three unstarredGoblinfollowers. - Added the requested rare Ghost source as ID 9043,
HellWorld_Apex_GhostSquad:Ghost, all land, 2% per 1200 seconds, cap one, group one, fixed level 3. - Changed the fixed Ghost definition to one level-3/two-star leader plus three
level-3/two-star
Skeletonfollowers carrying vanillaskeleton_bow. Fixed count and persisted bow loadout remain; no star inflation or combat logic was added. - Reconciled ID 9017 Stone Golem's config from level 1-2/25% to level 1 only, matching the fixed unstarred leader already enforced by the DLL. Its 2% chance, 900-second interval, cap one, and every other spawn field are unchanged.
- Confirmed the other outdoor leader sources and rates remain unchanged: Troll 9011, Abomination 9012, Lox 9014, SeekerBrute 9031, Morgen_NonSleeping 9034, Dvergr 9040, Wolf Alpha 9041, and Fenring 9042.
- The source supplemental table now contains 27 custom entries and expects 112 post-change runtime rows with the 85 vanilla entries. No vanilla/native entry is modified.
- Added static audit assertions for every encounter's source, biome scope, chance, interval, cap, levels, group, and follower definition.
- Assembly/plugin/manifest/package metadata is 0.3.6. Build, static validation,
deployment, and source/install validation passed. Built and installed DLL
SHA-256 is
3CA2CE2C8F059A29A154DA8AA4D1DBD65E70A0CD757448F61578CFFB74844145. - The previous Zelwood DLL/config are preserved under
deploy-backups/20260823-193427/. The changed 27-entry Spawn That source was deployed and matches the installed file atD5AE5CE9451C86897156C8557FFE3C159AFBFF41F692AE5BBC7582CA8286E8BF. Package output isdist/Hellworld-0.3.6.zip. - No v0.3.6 gameplay result or fresh runtime export is claimed; both require a Valheim world load.
2026-08-23 — v0.3.5 Ghost archer squad
- Added a fixed
Ghostsquad: one level-1/unstarred Ghost leader and three level-1/unstarredSkeletonfollowers, exactly four creatures requested. - Verified current runtime/asset identifiers rather than assuming a dedicated
archer creature. Valheim exposes
Ghost,Skeleton, and theskeleton_bowweapon; noSkeleton_Archercharacter prefab exists. - Added an optional fixed weapon to follower definitions. The Ghost followers
instantiate the ordinary Skeleton prefab and restrict its vanilla random
weapon loadout to
skeleton_bowbeforeHumanoid.Start. - Persisted the follower weapon identifier in the follower ZDO and re-applied
the instance loadout before normal startup after reload. The ordinary
Humanoid.GiveDefaultItemspath still creates/equips the weapon. - Added no targeting, attack, projectile, faction, or other combat logic. Ghosts and Skeletons retain their normal vanilla faction and AI behavior.
- The Ghost definition uses fixed leader level 1 and fixed follower count, so
neither leader stars nor
FollowersPerLeadercan inflate the squad. - No Ghost world-spawner was added because this focused pass supplied no biome, chance, interval, or cap rule. The squad attaches when another legitimate source creates a Ghost and outdoor follower placement succeeds.
- Spawn That configuration, other warbands, Project Snake Eyes, Mountain strongholds, and all unrelated systems remain unchanged.
- Assembly/plugin/manifest/package metadata is 0.3.5. Build, static validation,
deployment, and source/install validation passed. Built and installed DLL
SHA-256 is
919E2749F4348C646199023D2911398B762D3CC956FF41481975F9BDC71AF723. The previous Zelwood copy is preserved underdeploy-backups/20260823-191609/; the byte-identical Spawn That configuration was not recopied. Package output isdist/Hellworld-0.3.5.zip. - No v0.3.5 gameplay result is claimed. Exact composition, persisted bow loadouts, and projectile behavior require the user's runtime test.
2026-08-23 — v0.3.4 Stone Golem support squad
- Replaced the fixed
StoneGolem -> 3 Batentourage with two level-1Greydwarf_Shamanand one level-1Greydwarf_Elite(the Greydwarf Brute). - Added an explicit fixed leader-level field and set only the Stone Golem definition to internal level 1. Newly processed squad leaders are therefore always unstarred even if their spawner initially rolled a higher level.
- The squad requests exactly four creatures total: one unstarred Stone Golem, two unstarred Shamans, and one unstarred Brute. It never reads the generic star-scaled follower count.
- Removed
Batfrom the active warband definitions. Existing Golems already carryingElwood.Hellworld.WarbandSpawnedare deliberately not rewritten. - The two follower prefabs are instantiated unchanged. Hellworld adds no healing, targeting, faction, or other AI behavior; Shamans retain vanilla faction healing naturally.
- Verified the exact prefab identifiers
Greydwarf_ShamanandGreydwarf_Elitein the current Zelwood Spawn That export and runtime log. - Spawn That configuration, Project Snake Eyes, other warbands, Mountain strongholds, and all unrelated systems are unchanged.
- Assembly/plugin/manifest/package metadata is 0.3.4. Build, static validation,
deployment, and source/install validation passed. Built and installed DLL
SHA-256 is
422F00766E24FF83C63AD546E6B28476E84DCA43630CA5EDF2F21F9E10A47827. The previous Zelwood copy is preserved underdeploy-backups/20260823-185945/; the unchanged Spawn That configuration was not recopied. Package output isdist/Hellworld-0.3.4.zip. - No v0.3.4 gameplay result is claimed. Exact composition and vanilla Shaman healing require the user's runtime test.
2026-08-23 — v0.3.3 vanilla-AI Project Snake Eyes
- User runtime testing of v0.3.2 confirmed that the two-star Serpent spawned, noticed/followed the player, and roared but never executed its normal attack.
- The test log captured the same invalid forced state on three encounters:
creatureTarget=Human,preferredCanSense=False,preferredCanSee=False, andweapon=none. - Current-game IL inspection confirmed that
HuntPlayerletsFindEnemyfall back to an unsensed player within 200m and drives movement/alert behavior, while the actual attack path still requires native visibility, weapon, range, interval, and facing gates. This explains the misleading chase without combat. - Removed all Hellworld combat/target manipulation: no private target reflection,
SetTarget,SetHuntPlayer,Alert,SetFollowTarget, sensing checks, target maintenance, target player ZDO, or patrol-point writes remain. - Removed AI-driven retreat, target replacement, shoreline stalking, and inland leash logic. Encounter expiry now directly removes the marked loaded creature or unloaded ZDO and applies the existing return cooldown.
- Shore activity may still build Sea Disturbance, but encounter creation now waits until the candidate is swimming or aboard a boat. New default sampling distance is 45-55m, close to vanilla's 50m Serpent distance. Zelwood's active generated configuration was updated from 50-80m to 45-55m for this test.
- Spawning uses
Quaternion.identity, matching vanillaSpawnSystem, and logs the untouched prefabHuntPlayer/alert/avoid-land/player-object values without changing them. - Added schema version 1 to new marker ZDOs. Any active pre-v0.3.3 encounter is
destroyed once because an older build may have persisted
HuntPlayer=true. - Added an idempotent per-ZDO death marker so duplicate death callbacks cannot restart or double-log the same 15-minute cooldown.
- Retained the regular vanilla
Serpent, fixed Character level 3/two stars, normal display name, disturbance system, one-active marker, death/return cooldowns, compatibility keys, Spawn That entries, warbands, and Mountain systems. - The old generated
InlandEscapeDistanceandRetreatDurationSecondsconfig lines may remain as harmless orphans; v0.3.3 no longer binds or reads them. - Assembly/plugin/manifest/package metadata is 0.3.3. Build, packaging,
deployment, and source/install validation passed. Built and installed DLL
SHA-256 is
3CB203F5E4B697236EBAE7846EC5C4CA258811791C35DB3B5A742EFFD41FE5FA. The prior Zelwood copy was preserved underdeploy-backups/20260823-185209/; the unchanged Spawn That config was not recopied. Package output isdist/Hellworld-0.3.3.zip. - No v0.3.3 gameplay result is claimed. Vanilla Serpent target acquisition and attacks remain for the user's next test.
2026-08-21 — v0.3.2 Project Snake Eyes identity correction
- Reverted the proposed v0.3.1 Bonemaw identity before its gameplay test.
Project Snake Eyes once again instantiates the ordinary vanilla
Serpent. - Restored the fixed Character level to 3, producing exactly two visible stars.
- Kept all display/object-name assignments absent. The system and its files remain Project Snake Eyes internally, but the creature displays the normal vanilla Serpent name in game.
- Preserved the v0.3.1 combat correction: passive
SetFollowTarget(player)is still removed,HuntPlayer/alert remain active, the player is seeded into native combat targeting at encounter start, and later ticks do not overwrite an existing native target. - Preserved Sea Disturbance, shoreline-building input, water placement, retreat/despawn, recurring 15-minute death cooldown, persistence identifiers, file/class names, Spawn That configuration, warbands, and Mountain systems.
- A marked v0.3.1 Bonemaw encounter is retired automatically so it cannot be mistaken for the current regular-Serpent encounter after upgrading.
- Assembly/plugin/manifest/package metadata is 0.3.2. Build, packaging,
deployment, and source/install validation passed. Built and installed DLL
SHA-256 is
01660FD4868CEB184B8370C6EC5079CAE9BE50A421E03B1E0B1ABB58E909E060. The previous Zelwood copy was preserved underdeploy-backups/20260821-172418/; the unchanged Spawn That config was not recopied. Package output isdist/Hellworld-0.3.2.zip. - No v0.3.2 gameplay result is claimed. Project Snake Eyes combat remains for the user's next test.
2026-08-21 — v0.3.1 recurring Bonemaw combat correction
- Replaced the recurring encounter's ordinary
Serpentprefab with the native AshlandsBonemawSerpent. This is a Hellworld-owned encounter instance, not a new Spawn That entry and not a global change to either vanilla prefab. - Changed its fixed Character level from 3 to 2: it is always one-star, as proposed for the tougher native Bonemaw base creature.
- Removed every encounter display/object-name override. The player sees the
prefab's normal generic Bonemaw name; no special
Snake EyesorWhite Whalename is assigned by Hellworld. - Preserved the older
Hellworld_WhiteSerpent,Elwood.Hellworld.WhiteWhale,White Whaleconfig section, anddefeated_hellworld_white_whalepersistence key internally so existing configuration/cooldown data remains compatible. - Diagnosed the passive v0.3.0 behavior against current
MonsterAI.UpdateAI: when the AI lacks a usable native combat selection but hasm_follow, it runsFollow(...)and returns. Hellworld had reapplied that player-follow target every five seconds, which explains why the Serpent tracked but did not fight. - Removed the passive player-follow bridge. Hellworld now clears
m_follow, enables nativeHuntPlayer, alerts the AI, and seeds the player as a native combat target once at the 50–80m offshore spawn. Later ticks only seed when vanilla sensing accepts the player and never replace an existing creature, ship/static, or other valid target. Bonemaw chooses and executes its native bite, ram, spit, and breath attacks. - Added migration that retires a still-marked ordinary Serpent from an older encounter instead of accepting it as the new Bonemaw instance.
- The reported wood-chopping spawn was not caused by chopping. The test log
contains repeated
Shore build disturbance +10events that raised the total above the threshold immediately before the encounter tick. Woodcutting has no disturbance hook. Shoreline piece placement remains intentionally unchanged. - Kept Sea Disturbance rates, water sampling, spawn distance, recurrence, retreat/despawn, 15-minute death cooldown, Hellworld spawners, stars, warbands, Mountain locations, and squads unchanged.
- Assembly/plugin/manifest/package metadata is 0.3.1. Build, packaging,
deployment, and source/install validation passed. Built and installed DLL
SHA-256 is
FD0761E8503965CEFA5910B4E52E7FBDA62DD79775302BF4D1F3ADEBBC61F37D. Zelwood's previous installed copy was preserved underdeploy-backups/20260821-171117/; the unchanged Spawn That config was not recopied. Package output isdist/Hellworld-0.3.1.zip. - Post-fix Bonemaw combat still requires an actual Valheim gameplay test; this pass does not claim one.
2026-08-21 — v0.3.0 Mountain Dvergr strongholds and fixed squads
Mountain locations
- Added a
ZoneSystem.SetupLocationspostfix that clones the intact vanillaMistlands_GuardTower1_new,Mistlands_GuardTower2_new, andMistlands_GuardTower3_newSoftReference locations for Mountain placement. - Preserved each source prefab and its buildings, loot, local Dvergr defenders, terrain footprint, and other internal content. Only the clone's world-placement fields are changed.
- Each variant requests 120 locations, is prioritized/non-unique, accepts all Mountain biome-area bands at altitude 20-1000, and shares a 300m minimum separation group. Center-distance and forest gates are cleared.
- Added generated config settings for enabling outposts, requested quantity per variant, and shared minimum separation.
- Did not add Jotunn: the current game exposes
ZoneLocation.Clone, and retaining the original vanilla SoftReference avoids registering a new asset prefab. - Did not force Valheim's persisted
LocationsGeneratedstate false. A new world is the clean supported placement path; an already-generated world requires an explicit external location-regeneration workflow.
Dvergr patrols
- Added Spawn That ID 9040, tagged
HellWorld_Mountain_DvergrPatrol: one unstarredDvergerleader, all land biomes,defeated_bonemass, 30% per 300 seconds, maximum two nearby tagged leader prefabs, and a one-creature Spawn That group. - The tagged leader receives exactly one unstarred
DvergerMageFire, oneDvergerMageIce, and oneDvergerMageSupport, for four Dvergr total. - No faction or aggression override is applied; the patrol retains neutral vanilla Dvergr relations until provoked.
Mountain warbands
- Replaced
StoneGolem -> Wolfwith a fixedStoneGolem -> 3 Batdefinition. Golem stars no longer inflate that entourage. - Added Mountain-only Spawn That ID 9041,
HellWorld_Mountain_WolfAlpha: fixed internal level 2, 12% per 600 seconds. The tagged Alpha receives exactly three level-1 Wolves, for four total. - Added rarer Mountain-only ID 9042,
HellWorld_Mountain_FenringHunt: fixed internal level 2, 8% per 900 seconds. The tagged Fenring receives one level-2Fenring_Cultistand three level-1Ulv, for five total. - Refactored warband definitions to support mixed fixed-level follower lists while retaining the old generic 3/4/5 formula for Troll, Abomination, GoblinBrute, SeekerBrute, and Morgen variants.
- Special squads require Spawn That's persisted
spawn_template_id; ordinary Wolves, Fenrings, Dvergr defenders, and universal intruders cannot trigger them. Followers are marked beforeStartto prevent Wolf-to-Wolf recursion. - Verified current prefab names from the installed Valheim assets:
Bat,Wolf,Fenring,Fenring_Cultist,Ulv,Dverger,DvergerMageFire,DvergerMageIce, andDvergerMageSupport.
Snake Eyes test evidence
- The latest Zelwood log records
Snake Eyes killed: respawn cooldown active for 15 minutesand a persisted expiry at world time 21665. This confirms the kill/death-hook half of v0.2.2 worked in gameplay. Blocking before expiry and renewed eligibility afterward still need a focused runtime check.
Build status
- Bumped plugin, assembly, manifest, package, and validator metadata to 0.3.0.
- Static build, package, deployment, and source/install validation passed. The
build and installed DLL SHA-256 is
EACD1C9ADBEE6AF0B0224B0BF6841043C5A104D85E96BB5E774585FD02345074. - Deployed to Zelwood with the previous installed files preserved under
deploy-backups/20260821-101917/. The supplemental config was updated because the three new tagged leader entries changed its hash. - Final diagnostic-log rebuild was redeployed with backup stamp
20260821-102029; the already-current supplemental config was not recopied. - Package output is
dist/Hellworld-0.3.0.zip. - A fresh Spawn That runtime export requires entering a Valheim world and is not claimed by this build/deploy pass.
- No v0.3.0 Mountain location or squad behavior is claimed as gameplay-tested.
2026-08-21 — v0.2.2 Snake Eyes death cooldown
- Replaced permanent Snake Eyes defeat with a recurring respawn rule.
- Killing Snake Eyes now starts
DeathCooldownSeconds, default900seconds (15 minutes), measured in persistent Valheim world/network time. - Reused the established internal key
defeated_hellworld_white_whaleas a valued key containing the cooldown expiry. The identifier remains unchanged, while a bare key from v0.2.0/v0.2.1 is treated as a legacy permanent-defeat marker and removed so existing worlds can adopt the new recurrence rule. - Clears
Character.m_defeatSetGlobalKeyon the marked Serpent so vanilla death processing cannot recreate a permanent defeat flag. - Death clears accumulated disturbance and overrides the prior encounter return timer with exactly the new death expiry. Maritime activity may rebuild disturbance during the cooldown, but spawning remains blocked until it ends.
- After expiry, Snake Eyes is merely eligible under the existing Sea Disturbance rules; it is not force-spawned.
- No combat, spawn-distance, retreat, warband, Spawn That, star, or ordinary Serpent behavior changed in this pass.
- Built, packaged, and deployed v0.2.2 to Zelwood. Build and installed DLL hashes
match at
A65A1B71E7A72B4965ECAD3972E104CD1056E875CE9A5C1F09F1662E46369B78; deployment preserved the previous installed copy underdeploy-backups/20260821-094557/. - Static/API validation passed. The death/expiry/respawn sequence still requires an in-game test and is not claimed as gameplay-verified.
2026-08-21 — v0.2.1 Snake Eyes combat correction
- Changed the creature's visible
Character.m_namefromWhite WhaletoSnake Eyes. Compatibility-facing internals remain unchanged:Elwood.Hellworld.WhiteWhale,Hellworld_WhiteSerpent, the existingWhite Whaleconfig section, anddefeated_hellworld_white_whale. - Diagnosed the 0.2.0 runtime report: Snake Eyes spawned, held Character level 3, and tracked the player, but performed no attacks.
- Removed the five-second active-hunt rewrite of
MonsterAI.m_targetCreature,m_targetStatic, andm_lastKnownTargetPos. That rewrite could drive theHuntPlayermovement branch even when native sight had not admitted the target; the same AI's attack branch requires a visible native combat target. - Persistent stalking now uses
MonsterAI.SetFollowTarget. NativeMonsterAIretains ownership of creature/static combat targeting, weapon selection, range, angle, andStartAttack. Hellworld seeds the preferred player only afterCanSeeTargetaccepts it and never overwrites an existing creature or ship target. - Added a 30-second debug snapshot of native target, sight/sense, equipped weapon, and alert state for the next gameplay test.
- Fixed the startup Harmony exception on
Player.PlacePiece: itsVector3postfix parameter is now bound positionally (__1) instead of depending on Valheim's current parameter namepos. This restores shoreline-build disturbance. - The complete 0.2.0 test log contained two red error headers, both views of that one Hellworld Harmony patch exception. No other Hellworld exception was present.
- No Spawn That entry, Sea Disturbance value, spawn distance, level rule, retreat, persistence key, warband behavior, or ordinary Serpent was changed.
- Built, packaged, and deployed v0.2.1 to Zelwood. Build and installed DLL hashes
match at
E3852A53A767EDF24B19F0A6C47E7A720DFAE39A7135D87C74AE2C3BF9FCA0EE; the previous test copy is preserved underdeploy-backups/20260821-093358/. - Build/static validation completed; post-fix Serpent combat still requires an in-game retest and is not claimed as gameplay-verified.
2026-08-20 — v0.2.0 standalone home and Project Snake Eyes
Permanent development home
- Relocated only Hellworld-owned editable material to
C:\Users\eldth\Documents\ValheimMods\Hellworld; the old Codex workspace remains intact as backup. - Proved the relocated project before feature work by compiling a byte-identical
v0.1.2 DLL with SHA-256
AA16558EC49E6BDE53A887EE5038302CA6B39061C048345F2C64A3253CCBB43F. - Added a solution, ignored machine-local path file, one-command local build, install-shaped packaging, guarded Zelwood deployment with exact-file backups, and source/build/install validation.
- Added only the minimal modern Roslyn C# compiler runtime plus its notices
under
tools/roslyn/; the build has no compiler path into the old workspace and emits the same single mscorlib 4.0 identity as the known-good DLL. - Standardized build output under
dist/build, packages underdist/, and the installed test copy under Zelwood. Source and live installation are distinct. - Kept Spawn That external. No Spawn That implementation code or DLL was copied into Hellworld.
Snake Eyes prototype
- Added
WhiteWhaleSystem, a periodic server-authoritative encounter controller that instantiates the nativeSerpentprefab only after per-player Sea Disturbance reaches a configurable threshold. - Added disturbance for swimming, occupied boats, wading, moving near shoreline, and verified shoreline placement reports; inland quiet decays disturbance.
- Added bounded deep-water sampling, delayed failure retries, and configurable spawn distance/depth/attempt limits.
- Marked the networked instance with
Elwood.Hellworld.WhiteWhale; internal implementation identity isHellworld_WhiteSerpent. - Forced and maintains Character level 3. Current
EnemyHudcode maps level 3 to the two-star display, while level 2 maps to one star. - Preserved vanilla Serpent model, animation, water locomotion, combat, faction, and drops. No Jotunn runtime dependency or registered replacement prefab was introduced.
- Maintains player target and
HuntPlayerinterest through shore escape while nativem_avoidLandkeeps the Serpent in water. - Added maximum encounter duration, inland escape leash, a stable deeper-water retreat patrol point, network-safe despawn, return cooldown, expired/unloaded ZDO cleanup, and duplicate-marker removal.
- Added persistent defeat key
defeated_hellworld_white_whale; death disables future Snake Eyes encounters in that world across reloads. - Deferred custom dock/structure targeting, summoning, taming, saddles, riding, custom models/VFX/attacks, and any mount-mod integration.
- Did not alter the 22-entry Spawn That intruder config, vanilla world spawners, ordinary Serpent probability, inverted-star rules, or warband behavior.
Required gameplay test
- Confirm spawn height/buoyancy, two visible stars, player/occupied-boat attack effectiveness, shore prowl, retreat motion/despawn, recurrence, and persistent defeat in Valheim. Compilation and static validation do not establish these runtime behaviors.
Final deployment
- Final Roslyn-built DLL SHA-256:
ABB5E6C7B74D5EEE160E3FD0B224DD7BBE5E4B833CC27AF5DF7C515857CD2F4C. - Deployed the exact build to Zelwood on 2026-08-21 after confirming Valheim was closed.
- Preserved the immediately previous installed files under
deploy-backups/20260821-071732/. - Source/build/installed DLL hashes match. Source/installed supplemental Spawn That config hashes also match; deployment therefore did not rewrite that already-correct configuration.
2026-08-17 — bootstrap diagnostics
- Profile inspected:
Zelwood - Confirmed Valheim
0.221.12and BepInEx5.4.23.3from the active log. - Confirmed Spawn That
1.2.18is installed and loads successfully. - Verified
Valheim.SpawnThat.dllagainst the official package SHA-256:7D5FC2D6378CEB03A1A1CF65E9AFC955DB4B128C47C2937A9A6D3150DA531534. - Backed up the generated
spawn_that.cfgasspawn_that.cfg.pre-hellworld-20260817-202923.bak. - Enabled only the WorldSpawner pre-change, post-change, and merged-config diagnostic exports.
- No vanilla spawner was changed.
- No
spawn_that.world_spawners.hellworld.cfghas been installed yet. - Decision: extra Serpent spawners and artificial Serpent aggression are omitted from v0.1. Vanilla Serpent behavior remains unchanged.
Next test
Launch the Zelwood profile, enter a world, remain loaded for at least 10 seconds,
then quit. Inspect BepInEx/Debug/spawn_that.world_spawners_pre_changes.txt
before authoring the v0.1 intruder entries.
2026-08-17 — v0.1 authored
- Preserved the runtime pre-change, loaded-config, and post-change exports under
exports/baseline-0.221.12/. - Confirmed 85 runtime world-spawner entries with IDs 0-84.
- Confirmed no custom world-spawner configuration was loaded at baseline.
- Added
spawn_that.world_spawners.hellworld.cfgwith 23 supplemental entries using unused IDs 9000-9034. - Added seven Common, eleven Dangerous, and five Apex intruders.
- Included the current Call to Arms
BjornandUnbjornprefabs from the runtime export. - Limited every HELL WORLD creature to level 1 and groups of one, except Greydwarves which may form pairs.
- Explicitly excluded Ocean and cleared progression, distance-to-center, and world-age restrictions on all added entries.
- Explicitly disabled
HuntPlayerandSetRelentless; no faction is overridden. - Validated all 23 prefab names against the 0.221.12 pre-change export, checked for ID collisions and duplicate keys, and verified all caps are at most two.
- Investigated wandering bosses in the current game assembly. Boss death runs
Character.OnDeath, which appliesm_defeatSetGlobalKeythroughZoneSystem.SetGlobalKey; bosses are therefore omitted from the config-only v0.1 experiment.
Next test
Install the supplemental file, enter a world, and confirm the post-change export contains exactly 108 entries: 85 baseline plus 23 HELL WORLD entries. Only then begin the 30-60 minute density and behavior playtest.
2026-08-17 — v0.1 runtime verified
- Spawn That loaded all 23 HELL WORLD configurations without an error.
- Runtime export counts are exactly 85 pre-change, 23 loaded HELL WORLD, and 108 post-change entries.
- Compared all critical applied values against the authored file.
- Compared every exported field of vanilla IDs 0-84 before and after changes; all 85 vanilla entries are unchanged.
- Preserved the successful exports under
exports/hellworld-v0.1-runtime/. - First observed result: a Bear, Charred Warrior, and Deathsquito appeared near the starting area during the short verification session.
- Assessment: the unusually dangerous opening is valid independent-spawner variance, not evidence of a parsing or merge error. No balance change was made because the tester reported that the intended hostile feel was working.
Next test
Run one uninterrupted 30-60 minute travel session, including a night, and note foreign population accumulation and frame-time behavior. Avoid tuning based on the first short high-roll session alone.
2026-08-17 — standalone plugin and warbands
Project and dependency boundary
- Created the independent BepInEx plugin project under
Hellworld/with GUIDElwood.Hellworld, display nameHellworld, and version0.1.0. - Added an explicit hard BepInEx dependency on Spawn That's verified plugin GUID
asharppen.valheim.spawn_that. - Kept the working mixed-biome ecology in the supplemental Spawn That config. It was not rewritten in C#.
- Referenced BepInEx, Harmony, Valheim, and Unity assemblies for compilation. No third-party source or implementation DLL was copied into the project or distributable.
- Jötunn was not introduced.
Star difficulty correction
- Verified in Valheim 0.221.12 that SpawnSystem treats a negative override as the ordinary world level-up roll. At the default world modifier this is 10% per level: approximately 10% one-star and 1% two-star.
- Changed all remaining Hellworld spawners from
LevelMax=1andLevelUpChance=0toLevelMax=3andLevelUpChance=-1. - Kept
LevelUpMinCenterDistance=0, so the normal star roll is available from the starting region. - No spawn chance, interval, biome, cap, group, faction, or aggression value was retuned.
Fallen Valkyrie removal
- Removed Hellworld entry 9033 (
FallenValkyrie) from the supplemental config. - Left the prefab, stats, drops, faction, and vanilla Ashlands entry untouched.
- Existing individuals are not scanned or deleted.
- Hellworld now adds 22 spawners: seven Common, eleven Dangerous, four Apex.
Warband system
- Added exact leader-prefab mappings for Troll, Abomination, Stone Golem, Fuling Berserker, Seeker Soldier, and both ordinary Morgen prefab identities.
- Normal leaders request 3 followers; one-star leaders request 4; two-star leaders request 5.
- Followers are direct vanilla prefab instances and are never leveled, tethered, commanded, replaced, or reinforced by Hellworld.
- Patched the narrow
Character.StartandHumanoid.Startlifecycle methods. Current Valheim overrides the latter without calling the former, so both are required. There is no global or per-frame scan. - Resolves leader identity from the ZDO prefab hash; no fuzzy display-name matching is used.
- Requires a valid owning
ZNetView. The owner writes the persistent markerElwood.Hellworld.WarbandSpawnedbefore any follower instantiation. - Added bounded placement attempts, ground/slope/water/vertical checks, and graceful partial spawning.
- Added startup validation that rejects any mapping whose follower is itself a leader, preventing reinforcement recursion.
Build and deployment
- Built
Hellworld.dllsuccessfully against Valheim 0.221.12, BepInEx 5.4.23.3, and Harmony 2.9.0.0. - DLL SHA-256:
F3C43DE6DE9D698F5B0F3C83F22200AB993A3CC226CE7D29E74689D22073E8EB. - Staged the clean distribution under
dist/Hellworld-0.1.0/. - Deployed the DLL to the Zelwood test profile under
BepInEx/plugins/Elwood-Hellworld/. - Backed up the working prototype Spawn That config as
spawn_that.world_spawners.hellworld.cfg.pre-warband-20260817-232849.bakbefore installing the Fallen-free/star-enabled revision.
Runtime status
- Compilation, static validation, plugin startup, and applied Spawn That export validation passed.
- Normal three-follower entourages were observed for a Troll and a nearby Morgen during the first gameplay smoke test.
- Starred entourage counts, persistence after reload, follower non-replacement, and multiplayer behavior still require in-game verification.
2026-08-18 — warband runtime smoke test
- Confirmed both plugins loaded in the active Zelwood log: Spawn That 1.2.18 and Hellworld 0.1.0. No related exception or error was logged.
- Confirmed current runtime export counts: 85 pre-change vanilla entries, 22 loaded Hellworld configurations, and 107 post-change entries.
- Preserved this verified export set under
exports/hellworld-v0.1.0-warband-runtime/. - Compared every exported field of vanilla IDs 0-84 before and after changes; all 85 vanilla entries remain unchanged.
- Confirmed the exact 22 intended Hellworld IDs are present. Entry 9033 is
absent, and the only remaining
FallenValkyrieentry is vanilla ID 71, restricted to Ashlands. - Confirmed all 22 applied Hellworld entries use
LevelMax=3andLevelUpChance=-1, preserving Valheim's ordinary repeated star roll. - Observed a normal Troll with three Greydwarf followers and a normal Morgen with three Charred Twitcher followers. Both exact warband mappings therefore fired in live gameplay.
- A separate ten-minute period without a noticed new intruder is not considered a failure. At the configured Common rates, the raw-roll model alone gives about a 19% chance of no Common success in ten minutes; terrain, proximity, and existing-creature caps can make quiet periods more frequent.
- No density or probability values were changed from this small sample.
Next test
Continue ordinary play long enough to evaluate density over 30-60 minutes. For warband mechanics, test one-star and two-star leaders for 4/5 followers, then verify that killing a follower or reloading the same leader does not create a replacement band.
2026-08-18 — v0.1.1 flyer gate and Ashlands frequency
Hostile-flyer progression
- Verified the current internal prefab names against the Valheim 0.221.12
runtime table:
Hatchling,Deathsquito,Gjall, andVolture. - Verified the normal Bonemass global key is
defeated_bonemass. - The current 22-entry Hellworld file contains
DeathsquitoandGjall, but contains no supplementalHatchlingorVolturespawner. No new entries were invented for those two creatures, and their vanilla spawners remain untouched. - Identified
Wraithas the other current dedicated airborne Hellworld entry. - Added
RequiredGlobalKey = defeated_bonemassonly to Hellworld IDs 9015 (Deathsquito), 9016 (Wraith), and 9032 (Gjall). Their chances, intervals, caps, biome sets, factions, aggression, and other fields are unchanged. - Primarily ground-based
Seekerremains ungated.
Ashlands intruder reduction
- Intersected the current vanilla Ashlands prefab roster with the current
Hellworld layer. The five matching Hellworld intruders are
Surtling,Charred_Twitcher,Asksvin,Charred_Melee, andMorgen_NonSleeping. - Reduced only
SpawnChance, to exactly 10% of each prior value:- Surtling: 8 -> 0.8
- Charred Twitcher: 6 -> 0.6
- Asksvin: 3 -> 0.3
- Charred Warrior: 3 -> 0.3
- Morgen: 2 -> 0.2
- Intervals, population caps, group sizes, stars, stats, AI, factions, and native Ashlands spawners are unchanged.
Voltureis a native Ashlands creature, but there is no Hellworld Volture entry to reduce or gate. Fallen Valkyrie remains absent from Hellworld.
Build and static validation
- Bumped the package/plugin version to 0.1.1 and rebuilt successfully against Valheim 0.221.12 and BepInEx 5.4.23.3.
- Built assembly version:
0.1.1.0. - DLL SHA-256:
7BA1ED29948A28EDE8EDB64D67367BEE2C7800C01936C2F213117C4896688D9C. - Compared the old and new parsed Spawn That files: both contain 22 sections, and the only eight property differences are the five chance reductions and three Bonemass keys listed above.
- Confirmed all 22 star settings remain
LevelMax=3andLevelUpChance=-1; confirmed zero HellworldFallenValkyriesections. - No Serpent or warband behavior was changed.
Runtime status
- Build and static config validation passed.
- Deployed the package-identical DLL and config to the established Zelwood test profile. The deployed hashes match the staged 0.1.1 distribution.
- Preserved timestamped pre-0.1.1 backups with stamp
20260818-012127beside the active DLL and Spawn That config. - After a fresh world entry, Spawn That loaded all 22 Hellworld configurations without a related log error and exported exactly 85 pre-change, 22 loaded, and 107 post-change entries.
- Compared all fields on vanilla IDs 0-84 between fresh pre/post exports; all 85 entries are unchanged.
- Confirmed the applied post-change table contains the three exact Bonemass keys and five exact decimal chances documented above, with no validation mismatch.
- Confirmed the only applied
FallenValkyrieis unchanged vanilla ID 71.HatchlingID 48 andVoltureID 75 likewise remain vanilla-only. - Preserved the fresh evidence under
exports/hellworld-v0.1.1-balance-runtime/. - This validates loading and table application only. No claim is made yet about observed pre-/post-Bonemass spawn behavior or long-session ecology balance.
2026-08-18 — v0.1.2 inverted stars and Lox herds
Native-biome classification
- Classified every current Hellworld prefab against the preserved Valheim 0.221.12 vanilla world-spawner table, using primary progression biome rather than later post-boss foreign-biome spillover entries.
- Black Forest:
Greydwarf,Skeleton,Bjorn,Troll. - Swamp:
Draugr,Blob,Surtling,Abomination,Wraith. - Mountain:
Wolf,StoneGolem. - Plains:
Goblin,Lox,Deathsquito,Unbjorn. - Mistlands:
Seeker,SeekerBrute,Gjall. - Ashlands:
Charred_Twitcher,Asksvin,Charred_Melee,Morgen_NonSleeping. - No current Hellworld intruder is primarily Meadows-native.
- Resolved Skeleton as Black Forest because it is Black Forest-era dungeon progression despite later broad world-spawner coverage. Resolved Surtling as Swamp because Swamp geysers are its first normal progression encounter, despite a second native Ashlands world-spawner entry.
Inverted intruder stars
- Applied Black Forest
LevelMin=2,LevelMax=3,LevelUpChance=50. - Applied Swamp
LevelMin=1,LevelMax=2,LevelUpChance=50. - Applied Mountain
LevelMin=1,LevelMax=2,LevelUpChance=25. - Applied Plains, Mistlands, and Ashlands
LevelMin=1,LevelMax=1,LevelUpChance=0. - Left
LevelUpMinCenterDistance=0and all spawn-frequency, interval, biome, aggression, faction, stat, and progression-key values unchanged. - Did not alter the warband system. It continues to read the resulting leader level and request 3/4/5 followers for unstarred/one-star/two-star leaders.
Three-Lox herds
- Changed Hellworld Lox ID 9014 to
GroupSizeMin=3,GroupSizeMax=3, andMaxSpawned=3. - Verified in the installed
SpawnSystem.UpdateSpawnListIL that group size is clamped toMaxSpawned - currentCount. Raising the previous cap of one was therefore required for an initial group of three to be possible. - Left Lox chance 3, interval 900, group radius 3, biome rules, AI, faction, stars, and other settings unchanged.
- Lox was not added to the warband mapping; no Lox-to-Lox recursion exists.
Static/build status
- Parsed comparison against the v0.1.1 source config found exactly 47 intended property changes: 44 level fields plus the three Lox cap/group fields.
- Both source files contain the same 22 Hellworld section IDs; no unexpected
property changed and
FallenValkyrieremains absent. - Bumped the package/plugin version to 0.1.2 and rebuilt successfully against Valheim 0.221.12 and BepInEx 5.4.23.3.
- Built assembly version:
0.1.2.0. - DLL SHA-256:
AA16558EC49E6BDE53A887EE5038302CA6B39061C048345F2C64A3253CCBB43F. - Staged
dist/Hellworld-0.1.2/and deployed package-identical DLL/config files to the established Zelwood profile. - Preserved timestamped pre-0.1.2 backups with stamp
20260818-014356beside the active DLL and Spawn That config. - After a fresh world entry, BepInEx loaded Hellworld 0.1.2 and Spawn That 1.2.18 without a related error.
- Fresh export counts are exactly 85 pre-change, 22 loaded Hellworld, and 107 post-change entries.
- Compared every field on vanilla IDs 0-84 between pre/post exports; all 85 entries are unchanged.
- Verified every loaded and applied Hellworld level triple against the 22-entry native-biome matrix with zero mismatches.
- Verified applied Lox ID 9014 uses
MaxSpawned=3,GroupSizeMin=3, andGroupSizeMax=3, while chance 3, interval 900, and group radius 3 remain unchanged. - Rechecked that the Bonemass flyer gates, reduced Ashlands chances, and vanilla-only Fallen Valkyrie ID 71 remain intact.
- Preserved the fresh evidence under
exports/hellworld-v0.1.2-inverted-stars-lox-runtime/. - Runtime table application is validated. No claim is made yet about observed star-frequency distributions or a naturally spawned three-Lox herd.