UsefulRunestones
Exploration rewards for RuneStones and Vegvisirs: reveal weighted global map pins from pinless RuneStones, grant biome-based Vegvisir buffs with cooldowns.UsefulRunestones
UsefulRunestones turns Valheim's RuneStones and Vegvisirs into configurable exploration rewards.
Runestones have a chance to pin configured locations just like vegvisirs!
Vegvisirs can give players shorttime buff according to biome.
So vegvisir is still a little useful even though you already know boss locations.
Highlights
- Let pinless RuneStones reveal configured world locations as saved map pins.
- Give custom pin names and pin icons per target location.
- Use weighted chances so a RuneStone can reveal one target or reveal nothing.
- Resolve global pins on the dedicated server, then send only the result to the interacting client.
- Restrict or expand valid RuneStone source biomes per target.
- Grant weighted Vegvisir status-effect rewards by biome.
- Combine biome-specific reward tables with an
Alltable. - Keep one selected reward and per-player cooldown state per loaded Vegvisir.
- Play optional shared
vfx_,sfx_, orfx_prefabs when a reward is granted. - Sync YAML to clients with ServerSync and reload while the game is running.
- Support custom biome names through Expand World Data when it is installed.
Why Use UsefulRunestones
UsefulRunestones focuses on small world-interaction rewards that make exploration more useful:
- Existing RuneStones can point players toward configured landmarks without editing location prefabs.
- Server owners can tune discovery chance instead of making every interaction deterministic.
- Vegvisirs can become biome-flavored reward points instead of one-time boss pointers only.
- Cooldowns are tracked per loaded Vegvisir and per player, so shared servers can reward exploration without giving unlimited buffs.
- The YAML stays compact enough to maintain by hand.
Generated Files
The mod creates:
BepInEx/config/UsefulRunestones.yml
BepInEx/config/sighsorry.UsefulRunestones.cfg
Server admins should edit the YAML on the server or host. The full YAML text is synced to clients automatically.
RuneStone Global Pins
runestoneGlobalPins rows use this shorthand:
runestoneGlobalPins:
- Vendor_BlackForest, 0.5, Haldor, Icon3
- SunkenCrypt4, 0.25, Sunken Crypt, Icon3, [Swamp]
Fields:
locationName, chance, pinName, pinType, sourceBiomes
Field behavior:
locationName: targetZoneSystemlocation prefab/name.chance: final weighted chance for this target. Omitted value defaults to1.pinName: saved map pin name. Omitted value uses the target location discover label, then child teleport enter text, thenlocationName.pinType: ValheimMinimap.PinType. Omitted value defaults toIcon3.sourceBiomes: extra RuneStone source biomes that can reveal this target.
If filtered target chances add up to 1 or less, the remaining chance means no pin. If the total is over 1, UsefulRunestones normalizes the target weights so exactly one target can be selected.
When sourceBiomes is omitted or empty, a RuneStone can reveal the target only from the target location's own biome. Add source biomes when you want a RuneStone in one biome to reveal a target in another biome.
Vegvisir Global Effects
vegvisirGlobalEffects rows are grouped by biome:
vegvisirGlobalEffects:
- All:
- Rested, 240, 480, 1, vfx_HealthUpgrade
- BlackForest:
- GP_Eikthyr, 120, 600, 0.5
Reward fields:
StatusEffect, durationSeconds, cooldownSeconds, weight, effectPrefab
Field behavior:
StatusEffect: status effect prefab name.durationSeconds: optional override. Omitted value uses the prefab duration.cooldownSeconds: optional cooldown. Omitted value uses the prefab cooldown.weight: optional selection weight. Omitted value defaults to1.effectPrefab: optional shared visual/audio effect. Must start withvfx_,sfx_, orfx_.
Cooldown values:
0: no cooldown- below
0: once per loaded Vegvisir per player - above
0: per-player cooldown in seconds
VRS_ClearStatus is a built-in miss reward that clears current status effects and shows the configured clear-status message.
Localization
Optional localization fields:
localization:
messageVegvisirEffectReceived: "You have received {name}"
messageVegvisirClearStatus: "You got bamboozled"
messageVegvisirBuffCooldown: "Buff Cooldown {seconds}s"
messageVegvisirAlreadyActive: "Already active {name}"
Supported placeholders:
{name}for status-effect names.{seconds}for cooldown seconds.
Compatibility
UsefulRunestones is designed to sit beside the other standalone mods:
- Use DropNSpawn for creature drops, object loot, spawners, and world spawn tables.
- Use BossRules for boss altars, boss stones, Forsaken Powers, boss despawn, and boss tame pressure.
- Use UsefulRunestones for pinless RuneStone global pins and Vegvisir rewards.
If another mod owns the same RuneStone or Vegvisir interaction, disable the overlapping UsefulRunestones feature in the BepInEx config.
