
Almanac
Achievements, Bounties, Treasure Hunt, Player Metrics, Leaderboard, Indexing, Marketplace, Lottery
Date uploaded | a day ago |
Version | 3.5.15 |
Download link | RustyMods-Almanac-3.5.15.zip |
Downloads | 571 |
Dependency string | RustyMods-Almanac-3.5.15 |
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.2105
ValheimModding-YamlDotNet
Shared version 16.3.0 of YamlDotNet from Antoine Aubry and contributors, net47 package for use in Valheim mods. Maintained by the ValheimModding team.
Preferred version: 16.3.1README
Almanac
Welcome to Rusty's Almanac, your gateway to the enchanting world of Valheim!
Rusty's comprehensive plugin catalogs all the items, pieces, and creatures that is loaded into the game.
Explore the depths of Valheim with ease, armed with a wealth of information at your fingertips.
Moreover, Rusty's Almanac goes beyond mere documentation. With an integrated customizable achievement system and a leaderboard, users can shape their own unique experiences.
Achievements
Almanac lets you define custom achievements using .yml
files in the Achievements folder.
These achievements sync between server and client, and are dynamically reloaded when edited.
Below are the available Achievement Types you can use:
None
Deaths
Fish
Materials
Consumables
Weapons
Swords
Axes
PoleArms
Spears
Maces
Knives
Shields
Staves
Arrows
Bows
Valuables
Potions
Trophies
EnemyKills
TreesChopped
TimeInBase
TimeOutOfBase
ArrowsShot
TotalJumps
PlayerKills
ItemsPicked
DistanceWalked
DistanceRan
DistanceSailed
DistanceInAir
MineHits
TotalMined
CreatureTamed
FoodEaten
Recipes
CreatureGroup
Pickable
Kill
Achievement File Structure
Each achievement is defined as a YAML file with properties like:
UniqueID
: A unique identifier string (e.g.,Weapons.001
).Name
: Display name for the achievement.Lore
: A short description or flavor text.Icon
: The icon name from the game's assets.TokenReward
: Reward tokens for completing the achievement.Requirement
: The type, threshold, and optional group or prefab name.
Examples
- Defeating creatures from a biome:
AchievementType.CreatureGroup
withGroup = Meadows
. - Reaching a milestone (kills, distance, etc.): set
Requirement.Type
to the relevant stat. - Collecting all of an item type (fish, weapons, trophies, etc.): use collection-based types.
Tips
- Files can be added, changed, or deleted while the server is running.
- Server automatically syncs achievements to clients.
- Thresholds can be left at
0
for auto-detection (e.g., total number of fish). - PrefabName is required for
Kill
andPickable
types.
Almanac Bounties
The Almanac Bounty system lets players purchase bounty contracts to hunt special creatures.
Bounties are defined in .yml
files inside the Bounties folder.
Admins can add, remove, or edit bounty entries at runtime — changes will sync to all clients.
Each bounty entry can define:
- UniqueID: Unique identifier for the bounty (e.g.,
Troll.001
). - Creature: The prefab name of the target creature (e.g.,
Troll
,Serpent
). - Name: (Optional) Custom name override; if empty, a generated name will be used.
- Icon: Trophy sprite or icon for the bounty.
- Biome: The biome where the bounty will spawn (
Meadows
,Swamp
,AshLands
, etc.). - Health: Override maximum health value of the bounty.
- Level: Creature level (scales difficulty).
- DamageMultiplier: Multiplier applied to the bounty’s attacks (e.g.,
1.5
). - AlmanacTokenReward: Tokens given upon completing the bounty.
- Lore: A short description displayed in the Almanac panel.
- Cost: Item or token requirements to purchase the bounty.
Notes
- Costs can be
AlmanacToken
or regular items (e.g.,Coins
). - Bounties require players to kill the target directly — indirect deaths won’t count.
- If the bounty despawns, escapes, or is killed by another player, the cost is returned.
- Bounties are subject to a configurable cooldown (default in minutes).
Tips
- You can reload or edit
.yml
bounty files while the server is running; changes sync automatically. - Each bounty spawns a pin on the map when accepted.
- Default bounties include Boar, Neck, Troll, Serpent, Abomination, Wraith, Lox, Seeker Brute, Fallen Valkyrie.
- Use
Lore
to tell a short story or flavor text for each hunt.
Example Entry
UniqueID: Troll.001
Creature: Troll
Name: Forest Stalker
Icon: TrophyFrostTroll
Biome: BlackForest
Health: 1200
Level: 3
DamageMultiplier: 1.5
AlmanacTokenReward: 5
Lore: "Lumbering through the Black Forest, the troll’s steps shake the earth as it smashes all in its path."
Cost:
Coins: 10
Almanac Store
The Almanac Store allows players to purchase temporary buffs, resources, and items.
Store items are defined in .yml
files inside the Store folder.
Admins can add, remove, or modify store entries while the game is running.
Each store entry can define:
- Name: The store item name.
- Lore: A short description shown in the tooltip.
- Icon: The sprite name to display.
- Cost: Either
AlmanacToken
or other items as payment. - StatusEffect: Optional effect applied when purchased.
- Items: Optional rewards given to the player (like resources or gear).
- RequiredKey Optional key required to purchase item
Example
Name: Lolite
Cost:
Items:
- PrefabName: AlmanacToken
Amount: 100
Icon: GemstoneBlue
Items:
- PrefabName: GemstoneBlue
Amount: 1
Quality: 1
Variant: 0
Lore: Light is reflected sharply off this gem
RequiredKey: Charred_Melee_Dyrnwyn
Notes
AlmanacToken
is the default store currency.- Costs can also be regular items (e.g.
Wood
,Coins
). - Status effects must match valid IDs in the ObjectDB.
- Item entries require a valid prefab name and amount.
RequiredKey
should bePrefabID
of creature, to check if player has killed at least one
Tips
- Use
Lore
to explain what the store item does. - You can reload or edit
.yml
files during runtime; the store updates automatically. - The Almanac panel will refresh when the store tab is selected.
Treasure Hunts
Almanac lets you define custom treasure hunts using .yml
files in the TreasureHunt folder.
These treasures sync between server and client, and are dynamically reloaded when edited.
Treasure hunts create interactive map pins that spawn loot containers when you reach their location. Players can purchase treasure hunts using tokens from the Almanac store system.
Core Properties
Name
: Display name for the treasure hunt (e.g., "Meadow Stash").Lore
: Descriptive flavor text shown to players.Icon
: The icon name from game assets (defaults to "map" if not specified).Biome
: Target biome where the treasure will spawn (see list above).
Cost System
Cost
: Dictionary of required tokens/items to purchase this treasure hunt.- Use
AlmanacToken
as the key for Almanac tokens. - Example:
Cost: { "AlmanacToken": 10 }
for 10 tokens.
- Use
Loot Configuration
Loot
: List of items that can be found in the treasure container.Item
: Prefab name of the item (e.g., "Coins", "SilverOre").Min
: Minimum stack size.Max
: Maximum stack size.Weight
: Drop chance weight (higher = more likely).
Example Treasure File
Name: "Mountain Stash"
Lore: "Only those who brave the jagged cliffs will uncover what the mountains hide."
Icon: "map"
Biome: "Mountain"
Cost:
almanac_token: 1
Loot:
- Item: "SilverOre"
Min: 10
Max: 20
Weight: 1.0
- Item: "WolfClaw"
Min: 1
Max: 20
Weight: 1.0
- Item: "TrophyCultist"
Min: 1
Max: 1
Weight: 1.0
Dialogue System [ALPHA]
Almanac provides a comprehensive NPC dialogue system using .yml
files in the Dialogues folder.
These dialogues sync between server and client, and are dynamically reloaded when files are edited.
Below are the available Command Types you can use:
Exit: closes dialogue
Give: adds item into player inventory
Take: removes item from player inventory
Teleport: teleports player to position
MapPin: adds temporary pin on the map
StartBounty: starts a bounty
CancelBounty: cancels active bounty
CompleteBounty: rewards bounty
StartTreasure: starts a treasure hunt
CancelTreasure: cancels active treasure hunt
OpenAlmanac: opens almanac panel
OpenItems: opens almanac item tab
OpenPieces: opens almanac pieces tab
OpenCreatures: etc.
OpenAchievements
OpenStore
OpenLeaderboard
OpenBounties
OpenTreasures
OpenMetrics
OpenLottery
Dialogue File Structure
Each dialogue is defined as a YAML file with properties like:
UniqueID
: A unique identifier string (e.g.,npc.intro.001
).Label
: Button text that appears for this dialogue option.Text
: Main dialogue text displayed when requirements are met.AltText
: Alternative text shown when requirements are not met.Dialogues
: List of dialogue IDs that become available as options.Action
: Command to execute with label and parameters.Requirements
: Conditions that must be met to interact with this dialogue.
Action Commands
Panel Commands: OpenAlmanac
, OpenItems
, OpenCreatures
, etc. open specific UI panels.
Item Commands:
Give
: Gives items to player. Parameters:ItemName, Amount, Quality?, Variant?
? = optional
Take
: Takes items from player. Same parameter format.
Location Commands:
Teleport
: Instantly transports player. Parameters:X, Y, Z
MapPin
: Adds temporary map marker. Parameters:X, Y, Z, Label, Duration (seconds)
Activity Commands:
StartBounty
: Begins bounty hunt. Parameters:BountyID
StartTreasure
: Begins treasure hunt. Parameters:TreasureID
CancelBounty
/CancelTreasure
: Cancels active hunts. (Will not be displayed if no active hunts)
Requirements System
Control when dialogues are available using:
Keys
: Player must have specific game keys (boss defeats, etc.)NotKeys
: Player must NOT have specific keysKilled
: Required creature kills. Format:CreatureName, Count; AnotherCreature, Count
NotKilled
: Creatures player must NOT have killedAchievements
: Required achievement IDs (comma-separated)NotAchievements
: Achievements player must NOT haveDialogues
: Required Dialogue IDs (recorded byGive
orTake
Actions)NotDialogues
: Required NOT Dialogue IDs
Text Features
Alternative Text: Use AltText
to show different messages when requirements aren't met.
Conditional Display: Dialogues automatically show different text based on:
- Whether player has required items (for Take commands)
- Whether player already received rewards (for Give commands)
- Whether requirements are satisfied
Examples
Basic Conversation:
UniqueID: npc.greeting
Label: Hello there
Text: Welcome to our village, traveler!
Dialogues:
- npc.ask_directions
- npc.ask_trade
Action:
Type: Exit
Label: Farewell
Item Trading:
UniqueID: npc.trade_sword
Label: I need a weapon
Text: Here, take this iron sword for your journey.
AltText: I already gave you a sword, remember?
Action:
Type: Give
Label: Take Sword
Parameters: SwordIron, 1, 2, 0
Requirements:
Killed: Eikthyr, 1
Location Marking:
UniqueID: npc.mark_cave
Label: Where's the nearest cave?
Text: There's a cave system to the north. Let me mark it for you.
Action:
Type: MapPin
Label: Mark Cave
Parameters: 100, 25, -150, Mysterious Cave, 180 (3min)
Requirement-Based Dialogue:
UniqueID: npc.veteran_talk
Label: Tell me about the bosses
Text: You've proven yourself against the ancient evils!
Requirements:
Killed: Eikthyr, 1; gd_king, 1
Keys: defeated_bonemass
Organization Tips
- Use descriptive UniqueIDs like
merchant.weapons.intro
- Organize files by NPC type or location
- Create conversation trees using the
Dialogues
list - Use folders to separate different areas or storylines
Technical Notes
- Files can be added, changed, or deleted while the server is running
- Server automatically syncs dialogues to clients
- Map pins disappear after 100 seconds
- Give/Take commands automatically prevent duplicate transactions
- Requirements are checked in real-time
Random Talk
Additionally, you can set each NPC with random talk that triggers whenever a player gets close or leaves, or every minute.
The YML files are synced and can be reloaded during gameplay.
CHANGELOG
3.5.17
- Fixed store item form text staying red even though required killed is correct
- Added edit button to modify store item, custom effect, achievement, bounty and treasures
- Updated readme to breakdown how to create custom status effects
- Even more null checks for modded creatures
3.5.16
- Added null check when indexing ZNetScene and ObjectDB prefabs
- Fixed bounty return cost default item from
$item_coins
toCoins
, if prefab is not valid - Fixed bounty override health not being applied
- Config to modify grid element size (if you want to change row count)
3.5.15
- YAML is now an external dependency: https://thunderstore.io/c/valheim/p/ValheimModding/YamlDotNet/
- Fixed leaderboard get rank method dividing by zero when player has never died
- Fixed store status effect purchase not resetting timer
- New feature: Placeable NPC (alpha) [admin only]
- All tabs are configurable, so you can use NPC to access almanac instead of normal button
- Main button (that replaced trophy button) can be disabled
- Releasing NPC (alpha) early due to some errors that needs to be addressed
3.5.14
- Added Icons folder to register custom icons
- Improved descriptions baits, dropped by, used by to use interactable icons
- Added filters server sync
- Fixed almanac data copying previous loaded character onto new one
3.5.13
- Fixed treasure not consuming cost when purchased
- Fixed bounties not consuming cost when purchased
- Added config for treasures and bounties to return cost if canceled
- Fixed being able to spawn items even when not admin and not no cost
3.5.12
- Added option to use arrow key up and down
- Fixed valuables showing all materials
- Fixed swords showing all weapons
- Added Bjorn and Unbjorn to default creature groups - delete old files if you want to use them
- Added used in recipes to item description
3.5.11
- Added tooltip for jewelcrafted items
- Added trinkets achievement category
- Fixed scroll sensitivity, configurable
3.5.1
- Updated filters list, delete old file
- Fixed conversion toggle targeting wrong config
- Fixed arrow keys allowing to see unknown entries
3.5.0
- Complete Overhaul ! Delete old files
- Added Lottery and store
- Added Almanac Tokens as reward to use in store
- Added Marketplace to sell items
- Added Create New option to create achievements, status effects, store items, bounties and treasure hunts while in game, admin only
3.4.2
- Overhaul!
3.4.1
- Fixed for recent update
3.4.0
- Improved bounty system
3.3.9
- Config to show lore regardless of completion of achievement, on by default
3.3.8
- Fixed achievement not being able to see progress due to button not being interactable
3.3.7
- Fixed missing outline gameobject on achievements
3.3.6
- Fixed kills not being recorded when monster was not killed by zone owner
- Added auto-graphics change if using MinimalUI
3.3.5
- Added checks on files to avoid user errors
- Send data to server the first time user checks their completed achievements
3.3.4
- Fixed achievement effect resistances weakening player
- Added more data to the metrics: resistances, total achievement effects
3.3.3
- Added Health, Stamina, Eitr, LifeSteal, Armor as achievement effect bonuses
3.3.2
- Added config to disable achievements, bounties or treasure hunts
3.3.1
- Fixed trophies
3.3.0
- Added cooldown to treasure and bounty hunts
3.2.9
- Removed cost return for treasure hunts exploit
3.2.8
- Removed player data directory
3.2.7
- Ashland update
3.2.6
- Resolved bug when trying to create custom runetexts with other mods
3.2.5
- Fixed a minor issue of trying to send leaderboard data while on menu rather than in-game
3.2.4
- Bounties and achievements can reward almanac class experience
3.2.3
- Attempt to fix bounties not registering correctly
3.2.2
- Minor tweak to player patches
3.2.1
- Added ability to add cost to bounties and treasure hunts
3.2.0
- Fixed logout issues and patched eating food metric
3.1.9
- Improved Bounty UI, Added Treasure Hunt
3.1.8
- Fixed achievement button
3.1.7
- Added new achievement type: CustomPickable and Almanac Bounties
3.1.6
- Improved terminal commands
- Tweaked player controller to not move while almanac is open
3.1.5
- Added feature to create grouped achievements
3.1.4
- Added function that updates leaderboard if player is server
3.1.3
- Added new achievement reward types (Items, Skills, StatusEffect)
- Added a redundancy if almanac fails to get item icon
3.1.2
- Moved player tracked data to player custom data
- Added configurable hotkey to open almanac
3.1.1
- Tweaked visuals of achievement panel to showcase active effects
- Effects persist upon death and log out / log in
3.1.0
- Small fixes for compatibility with Krumpac
3.0.9
- Fixed achievements rewards
3.0.8
- Hotfix if defeat key not found in player data
3.0.7
- Fixed interact button not working until you opened inventory
3.0.6
- Check completed achievements when achievements are changed
3.0.5
- Added further information on fish
- Fixed achievement completion percentage
3.0.4
- Small localization fixes and filtering
3.0.3
- Fixed creature panel
- Achievement panel improved
- Localization improved
3.0.2
- Localization for many languages built-in
- Some minor fixes
3.0.1
- Fixed the leaderboard
- Tweaked the creature panel
3.0.0
- Overhaul of entire project. Delete all old config files to clean up workspace
2.3.1
- Fix for list of biome creatures config
2.3.0
- Hotfix compatibility with recent valheim patch update
2.2.9
- Some krumpac compatibility work
- Moved ignore list to a yml format in the config folder
2.2.8
- More redundancy on custom status effects
- French translations update
2.2.7
- Auga incompatibility
2.2.6
- Added Auga incompatibility flag
- Fixed guardian power icon for custom powers
2.2.5
- Compatibility with World Advancement Progression
2.2.4
- Another minor bug fix
2.2.3
- Minor bug fix with kill tracker
- Added config to make almanac panel transparent to use with minimal ui
2.2.2
- Controller Support
2.2.1
- Added item count / total to panels
- Compatibility with MinimalUI
2.2.0
- Player Metrics and Achievement system
2.1.3
- Improved blacklist
- Added drop chance to creature info
2.1.2
- Fixed black list and duplicate pieces
2.1.1
- Fixed minor bug
2.1.0
- Added Black List feature
- Fixed minor bugs
2.0.1
- Almanac now supports pieces
2.0.0
- Major update - Almanac now supports items
1.0.7
- Hotfix for latest valheim patch - more updates to come soon
1.0.6
- Added a patch to fix any overlapping trophies
1.0.5
- Minor changes to the logic on how it finds creature to display in languages other than English
1.0.4
- Minor tweaks to make mod work in various languages by having text dynamically resize
1.0.3
- Fixed compatibility with modded monster mods that have missing values
1.0.2
- Small tweak for compatibility with RtdMonsters and monsterlabz
1.0.1
- Wrong name lol
1.0.0
- Initial Release