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.
EpicLoot ProgressionFix
EpicLoot 0.14.13 crafting progression and rune range fixes, StarLevelSystem fixes, blocking after armor, combat effect fixes, long-range Andvaranaut, server-wide chat and optional Discord announcements. Requires server and clients.
By Tenemo
| Date uploaded | a day ago |
| Version | 0.1.56 |
| Download link | Tenemo-EpicLoot_ProgressionFix-0.1.56.zip |
| Downloads | 69 |
| Dependency string | Tenemo-EpicLoot_ProgressionFix-0.1.56 |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2350ValheimModding-Jotunn
Jötunn (/ˈjɔːtʊn/, 'giant'), the Valheim Library was created with the goal of making the lives of mod developers easier. It enables you to create mods for Valheim using an abstracted API so you can focus on the actual content creation.
Preferred version: 2.30.1RandyKnapp-EpicLoot
Adds loot drops, magic items, and enchanting to Valheim.
Preferred version: 0.14.13README
EpicLoot Progression Fix
An unofficial compatibility add-on for EpicLoot 0.14.13. Keep the original EpicLoot installed. This package applies Harmony patches; it does not replace or redistribute EpicLoot's DLL, assets or configuration.
Enchantment ranges and item operations
Rune extraction caps the extracted value at the effect's own range before applying the rune's power: the explicit value override when present, then the named item's override, then the effect's normal rarity range. EpicLoot caps it at the rarity's ordinary maximum, below the range of many named items' effects. Extracting the last effect from a named or set item without sockets keeps its named or set identity; EpicLoot turns it back into a plain item. Other extractions follow EpicLoot.
Holding Shift over an item in any enchanting-table list shows the same effect details as in the inventory. EpicLoot builds each row's tooltip once, when its list is filled, and reads Shift only then, so the add-on rebuilds the hovered row's tooltip the same way whenever Shift is pressed or released.
An effect whose definition is missing shows as Effect definition unavailable in detailed tooltips and as its name and value elsewhere, where EpicLoot would show an empty line or an invented range. Invalid or unresolved required tempering materials block that rarity's recipe and are reported in the log. Temporary effect removal while computing available replacements is always restored, including on errors. Existing item values are not automatically rerolled or normalized.
Automatic mead consumption
Automatic Mead Consumption checks actual remaining health after damage, including damage-over-time ticks. It consumes at most one eligible health-restoring consumable from the local player's inventory per damage event, only while alive and at EpicLoot's Health Critical threshold (30% by default, adjusted by equipment). Normal cooldown/category restrictions and Instant Mead still apply. Hits that leave health above the threshold or cause no health loss consume nothing. This is healing after a surviving hit, not protection against a lethal hit.
Blocking after armor
The game checks a block or parry against the full incoming hit and applies the player's damage resistances and body armor only afterwards. A hit that armor would reduce to a fraction therefore still filled the stagger bar, broke the guard and cost block stamina at full size. The add-on applies the player's resistances and body armor first, so blocks and parries work against the damage that is left. With pierce-resistant root armor, a 120 pierce hit that the armor reduces to about 30 is now parried as 30.
Resistances and armor still count once. Unblocked hits, hits from behind and broken guards do the same damage as before. A successful block now subtracts from the reduced hit, so what gets through changes: usually less than before, but a strong block against a big hit with light armor can let through somewhat more. EpicLoot's resistance enchantments already applied before the block and are unchanged. EpicLoot's on-block physical-to-elemental conversion runs before the resistances, so elemental resistances apply to the converted part (see combat effect fixes). Only players are affected, and the change runs on each player's own game. Startup fails with an explicit error if Valheim's hit order changes.
Skill above 100
Every attack's damage is multiplied by a roll that depends on the attacker's skill: EpicLoot rolls between 15% below and 15% above a centre that rises from 40% at skill 0 to 100% at skill 100. The game drops the level above 100 when it turns the level into a skill factor, so set and trinket bonuses such as the root armor's +15 Bows did nothing at 100; EpicLoot continues the line above 100 only for its own skill bonuses. The add-on continues it with the whole level, trained plus the game's and EpicLoot's bonuses: each point above 100 adds 0.6% to the centre, so skill 115 rolls 94–124% and 150 rolls 115–145%. Levels up to 100 are unchanged.
This covers every damage roll: melee weapons, bows and crossbows, staffs and their area effects, and tool hits on trees and rocks, which roll with Woodcutting or Pickaxes. Knockback follows the same roll. An area effect that takes an attack's hit, such as an explosion that deals the damage of the projectile that set it off, rolls the skill a second time as the game always has; that second roll keeps the ceiling of skill 100, EpicLoot's bonuses included, so the level above 100 counts once. Stamina and eitr costs and every other skill effect keep the game's factor. Damage tooltips show the new range, and in the skills panel weapon and tool skills include the game's bonuses above 100, which their damage now uses.
The game's bonuses are the root and lox fur sets' +15 Bows, the Fenris set's +15 Unarmed, and +20 from the Wolf Sight (Bows, Spears), Bracelets of the Brave (Clubs) and Jörmundling (Elemental and Blood Magic) trinkets while their adrenaline effect lasts. With EpicLoot's weapon skill enchantments and the melee shard, a trained 100 reaches about 150 to 160 at most, 30% to 36% more average damage than at 100. The roll runs on the attacker's game. Startup fails with an explicit error if EpicLoot's damage range changes.
EpicLoot skill bonuses
EpicLoot adds its skill bonuses, such as +Blood Magic on a staff or +Movement Skills on legs, to the skill factor that damage, costs, movement and stealth read, and to the levels the game reads for hits, parries and summons, such as the Staff of Protection's shield and the Dead Raiser's skeletons. The add-on counts them in two more places:
- SkilledCarryWeight's carry weight: with the pack's settings, each point of +Movement Skills adds 1 kg, 0.25 kg each for Run, Jump, Swim and Sneak, and each point of +Axes or +Pickaxes adds 0.25 kg through Woodcutting or Pickaxes. It is worked out on the player's own game.
- The tooltip of a weapon not in hand shows the status effects it gives, such as the Staff of Protection's shield, with the skill bonuses as if it were equipped.
Startup fails with an explicit error if one of these readers changes.
Combat effect fixes
The add-on corrects these EpicLoot 0.14.13 combat effects. Their configured values are unchanged.
- CoinHoarder: up to 1,000 coins the bonus uses the rolled value and grows with the coin count to the value at 1,000 coins, where the existing curve continues without a jump. Before, every roll gave the same bonus there.
- Wager: when another player's game controls the target, the refund for a killing hit also counts the sneak-attack bonus, weak spots and a player's body armor, which EpicLoot leaves out of its estimate of the damage the hit will deal. A block or a LifeLink boss passing on part of the hit cannot be foreseen there.
- Chain lightning: every jump deals the first strike's damage, which scales with the rolled value; jumps used to deal the full base damage whatever the roll. Jumps also use EpicLoot's chain chance, 80% for the first jump and a fifth less for each further one, which the game ignored.
- Bows and crossbows: the weapon's enchantments and shards also apply to the arrow's or bolt's damage, so percentage bonuses deliver their listed value on the whole shot. This makes enchanted bows noticeably stronger. The coin and dodge bonuses still count once.
- Triple and double shot: each of a triple shot's three arrows or bolts, and each of the two casts of a staff's double shot, deals EpicLoot's configured share of a normal shot, the
Damagevalue in the TripleBowShot or DoubleMagicShot effect's config (0.4 and 0.66 by default), on its whole hit: weapon, upgrades, ammunition and enchantments. Effects a cast spawns with damage of their own, such as the Staff of the Wild's roots, are not cut, as before. EpicLoot cuts only the weapon's base damage, so the upgrades and the ammunition keep their full damage on every projectile. - Weapon tooltips: a weapon you are not holding shows its damage and damage range as if equipped: with your other gear's effects and shards, and without those of the items it would replace.
- Falls: a fall neither triggers nor is reduced by EpicLoot's damage-taken effects: Eitr Shield, Coinplated, night damage reduction, OffSet, adrenaline, Bloodrage, Forest's Aid and Icy Retribution. They used to spend coins and eitr and start cooldowns. EpicLoot's fall damage reduction and automatic mead consumption still apply.
- Yagluth meteor and Eikthyr's charge: they take their share from a hit before crit and double damage, so a crit no longer multiplies them too.
- Shields that cannot parry: tower shields and other blockers without a parry bonus no longer get EpicLoot's parry bonus to block power and block force at the start of every block.
- Feint: does not roll while you block the hit with stamina left, so blocks and parries keep their stagger, experience and adrenaline. Without stamina the guard breaks anyway, so Feint still rolls.
- Physical-to-elemental conversion on block: a blocked hit converts its on-block share before resistances and armor, so elemental resistances apply to the converted part. EpicLoot converts it after the block, which now comes after them (see blocking after armor).
- Bulk Up: the regeneration penalty takes its share of the health regeneration left after Wet, Cold and every other effect, as its tooltip reads. EpicLoot subtracted it from what was left, so −30% turned 50% regeneration into 20% and could stop regeneration entirely; it now turns 50% into 35%. It also takes its share of regeneration bonuses: +30% regeneration with −30% Bulk gives 91%, where it gave 100%.
Each fix runs on the game of the player whose hit or equipment is involved. Startup fails with an explicit error if a patched EpicLoot or Valheim method changes.
Andvaranaut tracking
EpicLoot's Andvaranaut ring pings only within its Andvaranaut Range (20 m by default) of a treasure chest or bounty target, and a world without a map cannot show the circles that treasure maps and bounties mark. The add-on leads the wearer to their nearest unfound treasure map or accepted bounty from farther away, with the ring's far ping:
- Farther than
[Andvaranaut] Search radius(1,000 m by default), it pings when the wearer looks withinFacing angle(30° by default) of the target's direction, no sooner than 1.5 seconds after the previous ping, then again while they keep facing it, faster the nearer they are: every 5 seconds atMax range, quickening in proportion to every 2 seconds at the search radius, so the rhythm tells the distance. With no max range it repeats every 5 seconds at any distance. - Within the search radius, it checks every 5 seconds and pings when the wearer has come at least 2 m closer, and closer by at least half the distance they walked. Walking within about 60° of the target's direction pings; standing still and teleports never do.
- Within EpicLoot's range of any treasure chest or bounty target, EpicLoot's own pings take over unchanged, faster as the wearer gets closer.
- Targets farther than
Max rangeare ignored, and with none within it the ring stays quiet; one that comes into range can ping straight away. The default, 0, sets no limit.
The ring aims at the centre of the circle EpicLoot would draw on the map, and at the chest or the bounty's creatures once they load nearby. The target nearest by that position wins, so the ring can switch targets as the wearer moves; a new target restarts the walking comparison. EpicLoot removes a bounty creature's beacon when it takes damage, which silenced its ring for the rest of the fight; the add-on keeps the beacon, so EpicLoot's pings continue within its range and the ring keeps leading to a creature that runs off. Opened chests and completed bounties are no longer tracked. The wishbone is unchanged.
All three settings are synchronized from the server; with Search radius and Facing angle at 0 the ring pings only within EpicLoot's range. Tracking runs on the wearer's game while the ring is worn, and nearby players hear the pings as they hear the wishbone's. Startup fails with an explicit error if EpicLoot's finder, its beacon removal or the game's beacon list changes.
Bounty targets
EpicLoot gives a bounty's creatures extra health through StarLevelSystem (SLS) as they spawn: three times as much for a gold bounty's target, twice as much for an iron bounty's and one and a half times for adds (GoldHealthMultiplier, IronHealthMultiplier and AddsHealthMultiplier in its adventure data). SLS kept that bonus only in the stats the spawning player's game worked out, so a bounty creature lost it once it was loaded again or another player's game took it over. EpicLoot also marks a bounty's target as a boss, for its boss health bar, and SLS then scaled it as a boss: +2% damage per star instead of +20%, boss modifiers instead of ordinary ones and, after a reload, +30% health per star instead of +75%.
The add-on puts the bonus back from the bounty the creature carries whenever SLS works out its stats, on every player's game, and SLS scales, modifies and evolves a bounty's target as the ordinary creature it is. The bonus multiplies the creature's base health, and each star adds 75% of the base on top, so a 2-star troll for a gold bounty has 600 × (3 + 0.75 × 2) = 2,700 health, where a reload used to leave it 960, and hits 40% harder than an unstarred troll instead of 4%. The boss health bar stays, and the creature's level and the bounty's rewards are unchanged. Bounty creatures already in the world get their bonus back the next time they load, keeping the damage they have taken and the modifiers SLS already gave them. Without StarLevelSystem the add-on leaves bounties to EpicLoot. Startup fails with an explicit error if the SLS members it uses change.
Personal favorites
With Quick Stack - Store - Sort - Trash - Restock 1.4.15 installed, Alt + left-click favorites only the selected equipment piece, including ordinary equipment that may later be enchanted. EpicLoot objects with rolled effects, such as etched runestones, are also individual favorites. Ordinary ammunition, food, materials and unidentified bundles remain type-wide favorites. Alt + right-click still protects the inventory slot. Existing keybind overrides are respected.
Equipment markers belong to the character that marked them; another player receiving the item does not inherit that favorite. Markers use the item's saved custom data, independent of enchantments, quality or durability. Type-wide favorites, protected slots and trash-type rules are saved in the character, outside Gale's configuration. With ServerCharacters, they follow the loaded server character and its normal save/restore cycle. An individual favorite takes precedence over a trash-type rule. Sorting, storing, restocking, trashing, borders, tooltips and Sacrifice use the same item-aware checks. Reset all favorites invalidates this character's equipment markers even on stored items. Favorites do not introduce a general ban on manual transfers or crafting consumption.
If a character's saved favorites cannot be read, that character gets an on-screen notice, every item counts as favorited and the saved data is left unchanged until corrected. Other characters are unaffected.
Characters without saved personal favorites start with empty item favorites, protected slots and trash rules. Legacy Quick Stack .dat files are intentionally ignored, including malformed files. Existing favorites already saved by this add-on remain intact. Set personal favorites again after the first update; subsequent profile updates and reconnects retain the character-saved choices.
Identifying a type-favorited unidentified bundle creates new, initially unfavorited equipment. Personal choices persist on normal character/world saves, not immediately to disk on every click; restoring an older save also restores its older favorites.
Progression behavior
When EpicLoot's Item Drop Limits is PlayerMustHaveCraftedItem, craftable equipment requires a positive crafting count for the character rolling the item, or a one-time legacy credit described below. Picking up, borrowing, buying, identifying or upgrading equipment does not unlock future rolls. Drops remain shared; this mod does not create personalized loot for each recipient.
On an existing character's first load with 0.1.15 or later, previously held craftable equipment receives permanent legacy credit, including items no longer carried. This intentionally preserves unlocks even when old crafting records are missing or the item was only borrowed. Credits and a completion marker are saved with the character, after ServerCharacters loads its authoritative profile. Later pickups never enter that saved set. New characters start with an empty marker, including ServerCharacters template characters. Genuine crafting statistics and achievements are not changed. Back up character saves before updating; restoring an older save restores its older migration state. Invalid migration data is reported on screen for that character only, whose craftable equipment then stays ineligible until it is corrected; it is not overwritten with newer pickup history. ServerCharacters integration targets 1.4.17 when installed.
Equipment finished at a cooking station, such as Nord gear from the Frost Foundry, counts as crafted by whoever crafted its cast. The station credits its finished item to the player whose game owns the station, which need not be the cast's crafter, so that statistic counts only if the finished item also has its own creation recipe.
The purchased Fishing Rod retains its held-item requirement only while it has no creation recipe. A mod-added creation recipe makes it subject to crafting history. Missing recipes for other equipment do not bypass the gate.
- Identification previews enumerate the same eligible replacements as actual rolls, and the Identify button is available only when that list is not empty.
- Equipment fallbacks and gambling stock use the same crafting/legacy eligibility and original classification ceiling. Unclassified equipment cannot silently bypass the restriction.
- Unidentified conversion retains the selected
TierNequipment pool's ceiling with Meadows as its minimum. Tier-zero drops use original Unidentified Meadows Gear and the normal Meadows identification pool and costs. Ordinary identified drops keep their existing pools. Missing item classification still uses normal item resolution. - Saved
None_<rarity>_UnidentifiedStarter Gear IDs resolve to the original matching Meadows prefab when character, chest or tombstone inventories load; all serialized item data follows the normal game load path. Loose world-item prefab IDs convert during world loading, including unloaded areas. Inventories persist the converted IDs on their next normal save; unopened containers convert when loaded. No custom Starter Gear prefabs or separate costs remain. Other saved unidentified tiers are unchanged. - The standard skills panel combines vanilla status/set bonuses with equipped EpicLoot skill bonuses in its existing bonus label and total bar. Weapon and tool skills include the game's bonuses above 100, which their damage uses (see skill above 100); other skills show at most 100 plus EpicLoot's bonus, the level their effects use. Fractional trained levels no longer make a +15 bonus display as +14. Trained levels and Fortify Skills annotations stay separate; the panel changes no gameplay calculation. Auga retains EpicLoot's own renderer. The pack uses BetterUI with its custom skills panel disabled.
- Unidentified loot saves its network item data through a delegate to the game's private
ItemDrop.Savemethod. - Sacrifice and Augment list only eligible items in your personal inventory, which includes the equipment and quick slots. Items in nearby chests or external inventory providers cannot be selected for either. Other tabs, including Identify, and nearby material access, augment costs included, are unchanged.
- Enchanting-table cost icons show available / required material amounts, with insufficient amounts in red, at 1.5 times EpicLoot's base text size; a count too long for the icon shrinks back toward the base size. Counts of 10,000 or more show whole thousands, rounded down (12480 as 12k); the red color and the tooltip use the exact numbers. Hovering retains the item tooltip and adds the carried/nearby-storage breakdown. Counts use EpicLoot's own inventory-provider path and refresh twice per second while visible, so CraftyBoxes' range, access and pull rules still apply. Item selection, sacrifice inventory restrictions, output quantities and resource consumption are unchanged.
- Quick Stack - Store - Sort - Trash - Restock favorites are protected in Sacrifice, including individual equipment, favorited item types and favorited slots. This integration targets version 1.4.15 and does not require installing that mod if you do not use it. If the mod is present but its favorite state cannot be read, Sacrifice blocks the affected selection and reports an error rather than ignoring favorites.
- The selection is rechecked immediately before sacrifice. If any item was moved, protected, or became otherwise ineligible during the countdown, the whole operation is cancelled without destroying items or awarding materials.
The add-on does not select a gating mode for you, rewrite loot pools or configured drop chances, change rarity/affix settings, or alter crafting costs. Existing configuration patches still control those choices. Recipe-based and boss-based gating modes retain their existing progression behavior.
Crafting gating gives a fresh character no eligible craftable equipment until they craft it. Type-name loot entries such as Swords are supported. If a roll has no local player, the add-on preserves EpicLoot's upstream fallback behavior because no player's crafting history can be evaluated.
Source-tier preservation assumes vanilla equipment tiers: 0 and 1 = Meadows for unidentified gear, 2 = Black Forest/Ocean, 3 = Swamp, 4 = Mountain, 5 = Plains, 6 = Mistlands, 7 = Ashlands, 8 = Deep North. Custom biome orders or differently numbered TierN pools need a compatibility review; they are not automatically inferred from the player's physical location.
Star-dependent creature drops
Vanilla normally uses a countdown for drop chances at or below 30%. That countdown is keyed by item prefab and probability; a different probability resets it. Star-dependent chances can therefore repeatedly reset the countdown when differently starred creatures are killed.
The add-on bypasses that countdown only for native CharacterDrop entries whose level multiplier is enabled, or Drop That entries with an explicit minimum/maximum level condition. Those entries use the game's existing independent random roll at their already-calculated chance. The global NoPseudoDrops setting is not changed. Ordinary unscaled, unconditioned drops retain vanilla behavior, and guaranteed drops remain guaranteed.
This works with the pack's trophy, rare-material and shaman queen-bee rules without copying their chances into this mod. It does not add loot or change quantities. StarLevelSystem (SLS) custom tables already use direct rolls and are unaffected. Drop That support is optional and was checked against version 3.1.6; unsupported metadata produces an explicit startup error.
StarLevelSystem's SoulEater modifier raises a creature's saved damage multiplier for every creature that dies within 5 m, and had no limit. The add-on stops that growth at 0.5 above the creature's base damage multiplier, +50% damage for an ordinary creature, and creatures that already saved more deal damage at that cap. The heal and the growth in size are unchanged. Startup fails with an explicit error if the SLS members it uses change.
StarLevelSystem scales a creature's damage by its stars and saved damage multiplier through the game's per-level attack factor, which only its strikes, area attacks and fired projectiles use. Area effects and projectiles with damage of their own stayed at base damage, although SLS's elemental affixes still added to their hits: those an attack spawns, such as a boss's lingering clouds, the explosions creatures such as lava blobs leave when they blow up or die, Fader's fissures and walls of fire, and effects built into a creature, such as a frost wisp's aura or the damage a lox or an asksvin deals by running into you. The add-on applies the same factor to them, so these effects of starred creatures now hit harder, by +20% per star with the pack's settings. A built-in effect uses the creature's factor at the moment it hits. Other players' copies of a lingering effect use the factor the controlling game saved on it. An effect set up after its creature has died or unloaded stays unscaled. Players' effects are unchanged, and so is StarLevelSystem's DeathNova, whose damage SLS already sets from the creature's level.
With independent rolls, a configured 25% chance means 25% on each kill, with no accumulated guarantee. Long unlucky streaks remain possible.
Optional Rested timing
BepInEx/config/valheim.epiclootprogressionfix.cfg contains [Resting] Rested delay multiplier. The default 1 preserves vanilla timing. Set 0.5 to activate Rested twice as quickly: 10 seconds instead of the installed game's 20 seconds, subject to the normal update tick. The server synchronizes this setting to clients. Fire/shelter/resting requirements, comfort, regeneration and buff duration are unchanged. This affects only the delay for applying Rested, not elapsed time for other status effects.
Crafting skill bonus
Vanilla gives stackable items crafted at a station with a skill a chance of skill level ÷ 100 × 25% per craft to add one extra item. Crafting covers the workbench, forge, black forge, artisan table, galdr table and stonecutter; Cooking covers the cauldron, mead ketill and food preparation table. A successful roll now adds another full craft's output instead: 20 arrows, bolts or bronze nails, 10 iron nails, 5 bronze from the five-bar recipe, 4 sausages. One-item recipes still gain one item, and raw fish gains the yield of the fish used. The chance, stations and eligible items are unchanged, the floating text shows the amount added, and grill/oven cooking keeps its separate one-item bonus.
Every successful roll adds exactly one craft. Vanilla multi-crafting added the running total instead, so a second success in one batch added two bonuses, and AAA_Crafting 2.1.10 replays that escalation across queued crafts by silently adding one more item for each earlier success in the run. Both escalations are removed. If the extra output would not fit in the inventory, the craft completes without its bonus instead of being skipped as in vanilla. If AAA_Crafting's streak patch changes, startup reports an explicit error.
First-join character enrollment
With ServerCharacters 1.4.17, the server can import existing campaign characters automatically for a private list of Steam accounts. Put one Steam_<SteamID> per line in the server save directory's characters_local/enrollment-accounts.txt. Leave Backup only mode off. Accounts outside that list retain ServerCharacters' fresh-character requirement; a saved account is never imported again.
Players select their existing campaign character and join normally. Before the server releases the join handshake, the add-on requests the character's saved profile, checks the authenticated account, selected name and history of this world, and preserves the original serialized data under characters_local/initial-imports/<account>.fch. It then creates the normal server character file and follows ServerCharacters' authoritative load path. Items, skills, crafting history and custom data are not rewritten during import. Dyrr binds the loaded character to the joined world through its usual path. This does not prove the character was never edited on its owner's computer; it is a one-time trusted migration of existing players.
A wrong character, incomplete upload or existing import is refused without replacing an existing server save. The initial backup and the server character file are each written in full to a temporary file and then moved into place without replacing anything, so an interruption never leaves a partial file. A failed write retains the initial backup for owner recovery; restore that file before allowing another attempt. If the enrollment list or character directory cannot be read during a join, the player is refused with a message instead of receiving a fresh character. Include the enrollment list and initial-imports in stopped-server backups.
Persistent world bindings
With Dyrr 1.4.2 installed, bindings live in BepInEx/dyrr-state/homes.dat in each local profile. Gale scans every file inside its config directories and common text extensions elsewhere; this .dat file outside config is excluded from both export and pull cleanup. Existing dyrr-home.txt, threshold-home.txt or boon-home.txt rows are adopted only when durable state is absent, and their original files are archived privately beside it with .dat names. Later imports cannot replace established local bindings. Back up the entire profile, including this directory. Existing accounts can use the first-join enrollment above; after the saved character loads, Dyrr binds it to that campaign through its normal client path. An already conflicting home still needs an owner-approved correction; storage migration does not silently change it. Use dyrr forget or edit homes.dat for an owner-approved correction, even if an upstream message names the old path.
Personal HUD position
With FedoHud 1.0.0, the death/weight/armor block starts 500 UI pixels below its normal automatic position, retaining its minimap-centered horizontal alignment. Dragging it saves the coordinates in local Unity PlayerPrefs outside the Gale-managed config directory, keyed by the local profile path. Later config imports/pulls cannot overwrite that saved position. FedoHud's Reset positions action returns this block to the lower default and saves it again. Existing custom config coordinates are adopted when still present on first load; coordinates already erased by an earlier import cannot be recovered. Preferences are local to this computer/profile, not cloud-synced or character-bound. Other HUD blocks are unchanged.
Render Limits zones
With Render Limits on the server and the client, the server sends each player's objects as far as that player's Render Limits zones. Render Limits 1.16.0 sends them to the server only when a zone setting changes in play; it also tries while joining, but before the character exists, so after a normal join the server kept the game's own 2 zones. The add-on has Render Limits send them each time the player's character spawns, including after death. Checked against Render Limits 1.16.0.
Chest supply switch
AzuCraftyBoxes 1.8.23 takes a chest out of the storage that crafting, building and the enchanting table draw from, or puts it back, on Shift + E, and Shift is also Run, so pressing E while sprinting switched the chest instead of opening it. The add-on moves the switch to Shift + L, the game's place modifier and L, and names that key in the chest's hover text; E opens the chest as usual. Quick Stack's Restock, also on L, skips Shift + L. With a gamepad, AzuCraftyBoxes' own buttons still apply.
ComfortMe room panel
ComfortMe 1.2.2 shows its "This room" panel, the current comfort with the shelter and the pieces that count, whenever the player is in place mode. Every build tool turns that on: the hoe, the cultivator and the serving tray as well as the hammer. The add-on shows the panel only while the hammer is out. ComfortMe's chips and Comfort category already appear only for comfort pieces, which only the hammer builds. Without ComfortMe this does nothing; if its build tool check changes, startup fails with an explicit error.
Quick cart key
SkilledCarryWeight 1.5.0 attaches the player to a nearby cart, or detaches them, on its quick cart key, H by default, but ignores the key whenever the player is in place mode. Every build tool turns that on: the hammer, the hoe, the cultivator and the serving tray. The add-on lets the key work with a build tool out too; SkilledCarryWeight still ignores it while the player is dead. Use (E) still does nothing with a build tool out, as in the base game. Without SkilledCarryWeight this does nothing; if its quick cart check changes, startup fails with an explicit error.
Server-wide chat
Normal chat, typed without a /s or /w command, reaches every player on the server wherever they are. The game limits normal chat to nearby players but sends shouts to everyone, so the add-on sends normal chat as a shout. DiscordBot_AWL relays shouts, so it posts normal chat to Discord as well. Shouts, including /s, keep their yellow color and the speaker's name on floating text, but show what was typed instead of capitals. Whispers (/w) stay local and are not relayed.
Daily death leaderboard
With DiscordConnector 3.1.3, the dedicated server can post a Polish death leaderboard at 06:00 Europe/Warsaw through the connector's primary webhook. Enable [Death leaderboard] Enabled in the server's valheim.epiclootprogressionfix.cfg, keeping both connector statistics settings enabled, then restart. The pack's server override enables this feature; the mod default is disabled. Credentials stay in the server's existing connector config.
Reports cover the half-open interval from 24 hours before the scheduled deadline up to that deadline, group by platform identity, display the latest character name in that interval, share ranks for ties, and include the total. Zero-death days get a short message. The post does not print the dates it covers. Large rankings show an omitted-player count to fit Discord's limit; mentions are disabled. Daylight-saving changes keep the post at local 06:00 and the window exactly 24 hours, so adjacent reports overlap or leave a one-hour gap on those two days.
The add-on records the native immediate OnDeath broadcast from the connected player's current character, verifies the sending peer and character identity, and ignores repeated broadcasts for that character. It does not wait for respawn or require the server to have that character loaded nearby. The connector record is timestamped and committed synchronously when the server receives the death, so disconnecting during the ten-second death screen does not lose it. The reporting boundary uses server receipt time, not a client-supplied clock. Historical records are unchanged. The first report waits for a complete window after activation, which takes 24–48 hours. After downtime only the latest missed deadline is reported when the server returns.
Private delivery state is BepInEx/death-leaderboard/<world-id>.dat; include it in rollback backups and do not delete it. Confirmed delivery advances the completed deadline. When Discord certainly did not post the report (it could not be reached, refused it with a 4xx status such as a deleted webhook, or rate limited it), the report is retried after 15 minutes or Discord's retry delay, at least 5 minutes. When it may have posted (a timeout, a lost connection, a 5xx reply, or a server stop during delivery), it is not resent, to avoid a duplicate: the log shows a warning with the full report text to post by hand if Discord lacks it, and the next report continues normally. A report still undelivered at the next 06:00 is replaced by that day's report. No manual state edit is needed.
Dry run = true logs previews without HTTP, using separate -preview.dat state. Isolated test preparation enables it.
DiscordConnector records
With DiscordConnector 3.1.3, the add-on flushes the connector's records log before LiteDB reads it in full. LiteDB 5.0.21 writes each log page through a buffered file stream, and under the game's Mono runtime the last page of every commit stays in that buffer. A checkpoint reads the log through another handle, so it found that page missing, failed an internal check, and LiteDB refused every records call until restart. Checkpoints run automatically once records-log.db passes 1,000 pages (about 8 MB), usually after a day or two of play, and at shutdown. Before this fix the connector then saved no records and sent no first-join or first-death notices until restart, and vdc.log showed Error when trying to find <name> to count!. Shutdown checkpoints failed silently, so the log carried over between restarts. LiteDB's own checkpoints and database settings are otherwise unchanged.
Installation and compatibility
The optional server-synced [Achievements] Discord announcements setting defaults to false. When enabled with DiscordBot_AWL, new in-game achievement unlocks from connected clients are relayed through the server's existing Chat webhook in an ANSI code block: Player earned the achievement "Name" [Requirement]. The name and requirement use the game's English achievement text independently of the player's selected language. Startup checks, Unshamed's retroactive awards and their nested meta-achievements are excluded, and repeated callbacks are deduplicated. Announcements do not change achievement eligibility or unlock anything, and clients do not receive webhook credentials.
If DiscordBot_AWL is installed, the add-on corrects its death-quip text-file search. Pack authors may place their templates in BepInEx/config/DiscordBot/QuipsOverrides; these are read after DiscordBot initialization and survive its default-file writer. Restart after editing that override folder. Without an override folder, the normal Quips folder is read with the corrected *.txt pattern. This compatibility path was checked against DiscordBot_AWL 1.4.7. Player-death reports name the creature in English whatever language the dying player's game uses, including StarLevelSystem's affixes and Nemesis names: the game's English words, then the English words mods add through Jotunn. A tame's given name, another player's name and a name with a word that has no English text appear as the dying player's game shows them. One to four stars remain symbols; five or more use 5★, 7★, and so on. Death reports appear only in Discord (see below): the joke alone in an ANSI code block, with the player's name marked as >>Name<< for creature and environmental deaths and the creature's name plain. They use no ANSI color codes, because Discord's notifications, its in-game overlay and its mobile app show those codes literally. The "has died" title, killer thumbnail and embed timestamp are omitted. Automated message bodies from DiscordBot_AWL and DiscordConnector use the same ANSI code-block style, including joins, departures, first-time notices, server lifecycle, events, and achievements. Already-boxed messages, such as death reports, are not wrapped twice. Runs of backticks in message text are split with zero-width spaces so they cannot close the code block, and text inside the block is not markdown-escaped because Discord shows it literally. Player chat is not boxed; embed titles, images and routing remain intact while descriptions and field values are boxed.
DiscordBot notifications and Discord/AI message relays are Discord-only: their in-game broadcast and display paths are disabled, including deaths and new-day quips. Outgoing Discord webhooks and player chat are not affected. DiscordConnector already sends its automatic notices only to Discord. This also prevents bot messages from opening the in-game chat window.
DiscordBot_AWL 1.4.7 marks a heartbeat unanswered when it sends one to Discord's gateway and answered when Discord acknowledges it, but never resets that mark for a new connection. After a connection dropped while a heartbeat was unanswered, every later connection gave up before sending its first heartbeat and reconnected, logging Heartbeat not acknowledged, reconnecting... about every half minute until restart. The add-on starts each new connection with no heartbeat outstanding. Webhook posts do not use this connection.
Install through Gale or another Thunderstore-compatible manager on the dedicated server and every client. Dependencies are installed automatically. Restart the game/server after installation. Multiplayer compatibility requires the same add-on version on both sides.
This release targets the original EpicLoot 0.14.13 and was built against Valheim 1.0.15. Legacy Starter Gear migration hooks are installed before the version gate and independently of gameplay patching, so an unrelated gameplay patch failure does not remove save compatibility. Version-specific gameplay hooks remain disabled on other EpicLoot versions. Initialization failures are logged and shown persistently on screen; the separate Sacrifice guards block destruction while initialization is incomplete or failed. Stop and fix the installation before continuing when that error appears. A character whose saved crafting history or favorites cannot be read gets a separate notice instead; only that character's affected feature stays locked, and loading another character clears it. Do not combine this add-on with a replacement/forked EpicLoot DLL. Other mods patching the same identification or loot-resolution methods may conflict.
Removing the mod
Keep this add-on installed while loading and saving every character and container that may still contain legacy Starter Gear. The add-on converts those items to original EpicLoot Meadows gear; loose drops convert when the world loads and persist with its next save. Unloaded inventories and old backups can still contain legacy IDs, so removing the migration support before loading them can lose items. Keep world and character backups before changing mods. Converted Meadows items need only original EpicLoot, but remove this add-on from server and clients together.
Source and credits
The package includes its C# source under src/. Built with AI assistance. EpicLoot is by RandyKnapp; this add-on is an independent project and is not an official EpicLoot release. No personal server configuration is included.
CHANGELOG
0.1.75
No change in play. The mod versions the add-on requires are each written once in its code, Discord messages share one helper that removes the game's formatting tags, and three source files are named after their features. Includes 0.1.74.
0.1.74
Ammo Count's badge scales with its slot, and its count ends on the slot's right edge with the icon just left of it, as big as the count, at the owner's request. Ammo Count 0.5.1 builds the badge in screen pixels, so it kept its size while the hotbar scaled with the resolution and GUI scale, and no offset in its config could follow the slot: at 2560 x 1400 with the GUI scale at 85% the count ended 22 pixels past the bow's slot. The pack's config now places the badge in slot units, and the add-on keeps the icon beside the count whatever its number of digits. CombatStats settings a player changes in game, with F10 or its settings panel, survive Gale imports and pulls, at the owner's request; CombatStats 1.0.3 saved them in its config file, which every import and pull replaces with the pack's copy. The add-on keeps them in BepInEx/combat-stats-state/settings.dat and applies them over the pack's values at every start, and CombatStats no longer writes its config file, so a Push carries only the pack's settings. Includes the complete 0.1.73 release.
0.1.73
Ctrl + middle click with the hammer also takes a cart apart near a workbench, as it does a ship, at the owner's request; the game marks the cart as not removable, so the hammer did nothing on it. A plain middle click still does nothing on a cart, and nothing on screen mentions the key. The game's other removal rules apply: a workbench in range and no ward or no-build zone. All 20 wood and 10 bronze nails come back, and the cargo drops in crates, as when a cart breaks. Someone pulling the cart is let go. The battering ram and the catapult, wagons without a hold, stay unremovable. Includes the complete 0.1.72 release.
0.1.72
The enchanting table's rune tab takes items only from the inventory, equipment and quick slots included, at the owner's request; EpicLoot also offered items from chests nearby. Extraction, which removes the chosen enchantment from its item, also leaves out Quick Stack favorites, as Sacrifice does, and checks the item again when the countdown ends, so an item that left the inventory or became a favorite cancels it before anything is paid or changed. Etching still offers favorited items, and its runes, favorited ones included, also come only from the inventory. Rune costs can still be paid from nearby chests. Includes the complete 0.1.71 release.
0.1.71
Ctrl + middle click with the hammer takes a ship apart near a workbench, at the owner's request; the game marks the raft, karve, longship and drakkar as not removable, so the hammer did nothing on them. A plain middle click still does nothing on a ship, so one cannot go by accident, and nothing on screen mentions the key. The game's other removal rules apply: a workbench in range, no ward or no-build zone, and nobody aboard a raft. Every material comes back, and the hold's cargo drops in floating crates, as when a ship breaks. Includes the complete 0.1.70 release.
0.1.70
CombatStats shows damage per second, at the owner's request. CombatStats 1.0.3 adds up each player's damage over a window, from 30 seconds to 30 minutes, and its average is damage per hit. The detail window now has a dps column after damage and shows the group's dps after the total; the compact meter shows each player's dps between their damage and share, as 412/s. Each figure is the window's damage divided by the window's whole length, quiet time included, so after a one-minute fight the 30-minute tab shows a thirtieth of the fight's rate. The per-hit average stays. Includes the complete 0.1.69 release.
0.1.69
A boss that has been defeated is no longer announced to the whole server, at the owner's request, so farming one such as Eikthyr no longer interrupts everyone. The game shows a boss's arrival, the first time it notices a player and its death in the middle of every player's screen, wherever they are, such as "Eikthyr summons the storm" and "Eikthyr is slain". A boss's first defeat sets its world key, such as defeated_eikthyr, and once that key is set the add-on drops those messages for that boss. The defeat that sets the key and every fight before it are still announced, and the player who makes the offering still sees "You make the sacrifice". Includes the complete 0.1.68 release.
0.1.68
A bow shot released while the previous shot's animation is still playing now fires as soon as the bow can fire, at the owner's request; the game dropped it. The bow fires again only once that animation ends, about 0.8 seconds after a shot, but the next draw and its crosshair fill from the moment the button goes down, so from Bows skill 85, or lower with Quick Draw or a Bows skill bonus, a quick follow-up shot was fully drawn before the bow could fire, and releasing it then gave no arrow, used no ammunition and showed no message. The arrow now stays drawn until the bow can fire, for up to a second, and then flies, even if the button was pressed again meanwhile; a new press starts the next draw. The bow fires no faster than before. Blocking still cancels a draw, and a release refused for another reason, such as during a dodge or without stamina, is still dropped. Includes the complete 0.1.67 release.
0.1.67
Alt + left-click favorites and unfavorites items in an open chest, cart, ship or tombstone too, at the owner's request; Quick Stack 1.4.15 takes favoriting clicks only on the player's own inventory. An equipment mark is saved with the chest, so only the player whose game manages the chest can change one there: with MultiUserChest, a player who opens a chest another player is already using gets a message instead, and can mark it after reopening the chest once that player is done. Type-wide favorites work in any open container. Alt + right-click in a container stays an ordinary click, since protected slots belong to the inventory, and controllers still favorite only in the inventory. Includes the complete 0.1.66 release.
0.1.66
Quick Stack's borders are one pixel wider, at the owner's request. Its border texture is a 1024-pixel square with a 24-pixel frame, stretched thin over each slot. The add-on draws a second copy of it one UI unit further in, so the line grows by one pixel on the inside at 1920 x 1080 with the game's GUI scale at 100%, and proportionally at other sizes. The copy keeps the border's color, so favorite, protected-slot and trash borders all widen, in the inventory and in containers. Includes the complete 0.1.65 release.
0.1.65
Favorited items keep Quick Stack's favorite border in chests, at the owner's request. Quick Stack 1.4.15 draws its borders only on the player's own inventory, so an item lost its border while it sat in a chest, cart, ship or tombstone, although it stayed favorited. The add-on now draws the same border, in Quick Stack's favorited-item color, on the player's favorites in any open container: equipment the character marked and every stack of a type-wide favorite. Another player's marks do not show. Protected slots and trash flags keep their borders on the inventory only. Includes the complete 0.1.64 release.
0.1.64
Andvaranaut's pings cover a wider range of rates, at the owner's request, so the rhythm changes more with the distance. Beyond the search radius the ring now pings every 8 seconds at the max range and quickens in proportion to every second at the search radius, in place of 5 and 2 seconds; with no max range it pings every 8 seconds. Within the search radius it pings every second at its edge, in place of 2, and still quickens to every 0.5 seconds at the target, so the pings never slow on crossing it. Includes the complete 0.1.63 release.
0.1.63
Andvaranaut's pings follow one rhythm, and only the wearer hears them, at the owner's request. Beyond the search radius the ring also pinged as soon as 1.5 seconds after the previous ping whenever the wearer's view came back to the target or the ring re-aimed, so a quick ping could mean a nearer target or just a glance away and back. It now pings while the wearer faces the target only at the distance's rhythm, every 5 seconds at the max range down to every 2 seconds at the search radius, and never sooner; looking away only lengthens the gap, and turning onto the target still pings at once when the last ping was long enough ago. The pings were also sent to nearby players, who heard them mixed with their own; they now play only on the wearer's game. Includes the complete 0.1.62 release.
0.1.62
Andvaranaut has two modes, Far and Near, and its status icon shows which, at the owner's request. Within the search radius the ring pings on its own whatever the wearer does, every 2 seconds at the search radius and faster in proportion down to every 0.5 seconds at the target. It pinged there only when the wearer had walked closer in the last 5 seconds, and in the last 20 m EpicLoot's own pings took over, starting again at 5 seconds and changing sound. The add-on now does all of the ring's pinging, so EpicLoot's pings stay off for Andvaranaut, and it no longer keeps a bounty creature's beacon when the creature takes damage: it finds the creatures by their bounty. Beyond the search radius nothing changes. The icon reads Far or Near, and nothing while no target is within the max range. Includes the complete 0.1.61 release.
0.1.61
DiscordBot_AWL's bot shows the number of players online as its Discord status, such as Players online: 3, at the owner's request. The dedicated server updates it within seconds of a join or leave, at most once every 15 seconds, and sets it again after each new Discord session. If Discord closes the connection within 5 seconds of a status, the add-on stops updating it until the server restarts, so a rejected status cannot start a reconnect loop. Includes the complete 0.1.60 release.
0.1.60
AAA_Crafting's crafting amount returns to 1 when the crafting window closes, at the owner's request. AAA_Crafting 2.1.10 kept the amount for the whole game session, so an amount set for one batch was still there for the next craft, even at another table. Choosing another recipe while the window stays open keeps the amount. Includes the complete 0.1.59 release.
0.1.59
Works with AzuCraftyBoxes 1.8.24, which added its own Container Toggle Key for taking a chest out of the storage that crafting draws from, or putting it back, and changed the chest's hover text; 0.1.58 failed to start its gameplay fixes on that hover text. The pack now sets that key to Shift + L, so the add-on no longer moves the switch itself. Quick Stack's Restock on L still skips the switch key, now whichever key AzuCraftyBoxes has. Includes the complete 0.1.58 release.
0.1.58
Ammo Count's badge shows only on weapons, whose attacks are all that draws ammunition, such as bows, crossbows, fishing rods and tankards. 0.1.57 kept it off meads and ballista bolts by their item types, which missed the Corked Vial: that crafting material also carries the tankards' ammo type, so in the hotbar it still showed the first mead in the inventory. Includes the complete 0.1.57 release.
0.1.57
Ammo Count's badge, the ammunition icon and count above a hotbar or quick slot item, shows only on items that use ammunition, such as bows, crossbows and tankards, at the owner's request. Ammo Count 0.5.1 skipped only arrows and bolts themselves, but the game also counts meads as ammunition, which tankards drink, and ballista bolts, so every mead showed the first mead in the inventory and its stack size, and every stack of ballista bolts the first stack. Includes the complete 0.1.56 release.
0.1.56
Andvaranaut's facing pings tell the distance, at the owner's request. Beyond the search radius the ring repeated its ping every 5 seconds while the wearer faced the target, however far away it was, so nothing told the wearer they were getting closer. It now repeats every 5 seconds at [Andvaranaut] Max range and faster in proportion as the wearer comes nearer, down to every 2 seconds at the search radius. With no max range, the default, it keeps repeating every 5 seconds. The turning ping and the walking check within the search radius are unchanged. Includes the complete 0.1.55 release.
0.1.55
SkilledCarryWeight's quick cart key, H by default, now attaches to or detaches from a nearby cart with a build tool out too, at the owner's request. SkilledCarryWeight 1.5.0 ignored the key in place mode, which every build tool turns on: the hammer, the hoe, the cultivator and the serving tray. Includes the complete 0.1.54 release.
0.1.54
Death reports name the killer in English whatever language the dying player's game uses, at the owner's request. The report is written on that player's game, which named the creature in its own language, so a Russian game reported an Alert Greydwarf as "Предупреждение Грейдворф". The add-on now translates the creature's untranslated name, StarLevelSystem's affixes and Nemesis names included, with the game's English words and the English words mods add through Jotunn. A tame's given name, another player's name and a name with a word that has no English text stay as the game shows them. Achievement announcements read the same English words, so English text that a mod adds or replaces through Jotunn now applies to them too. Includes the complete 0.1.53 release.
0.1.53
ComfortMe's "This room" panel shows only while the hammer is out, at the owner's request. ComfortMe 1.2.2 showed it whenever the player was in place mode, which every build tool turns on, so the hoe, the cultivator and the serving tray showed it too. Its chips and Comfort category were already limited to the hammer's comfort pieces. Includes the complete 0.1.52 release.
0.1.52
AzuCraftyBoxes' per-chest crafting supply switch moves from Shift + E to Shift + L, at the owner's request. Shift is also Run, so pressing E while sprinting switched a chest instead of opening it; E now always opens the chest. Shift + L on a chest takes it out of, or back into, the storage that crafting, building and the enchanting table draw from, and the chest's hover text names the new key. Quick Stack's Restock, on L, no longer also runs on Shift + L. A gamepad keeps AzuCraftyBoxes' own buttons. Includes the complete 0.1.51 release.
0.1.51
Augment lists only items in the player's own inventory, as Sacrifice already does, at the owner's request. EpicLoot also offered items from nearby chests that inventory providers such as CraftyBoxes make available, and augmented them where they lay. Equipped and quick-slot items still count as inventory, and augment costs still draw on nearby storage. Includes the complete 0.1.50 release.
0.1.50
Andvaranaut can ignore targets that are too far away, at the owner's request. The new server-synced [Andvaranaut] Max range limits the ring to unfound treasure maps and accepted bounties within that many meters; with none within it the ring stays quiet, and one that comes into range can ping straight away. The default, 0, keeps the ring's reach unlimited, as before. Includes the complete 0.1.49 release.
0.1.49
Render Limits' zone settings apply from the moment a player joins, at the owner's request. Render Limits 1.16.0 sends a player's zones to the server only when a zone setting changes in play: its attempt while joining comes before the character exists, so the server kept sending buildings only as far as the game's own 2 zones. The add-on now has Render Limits send them each time the player's character spawns, so the pack's 3 loaded zones take effect on every join. Includes the complete 0.1.48 release.
0.1.48
Andvaranaut keeps pinging for a bounty's creatures during the fight, at the owner's request. EpicLoot removed a bounty creature's beacon as soon as it took damage, so its ring fell silent, and the add-on then stayed quiet about that bounty and every other target for as long as it was the nearest and its creatures stayed loaded; a creature that ran off could not be found again. The beacon now stays: EpicLoot's own pings continue within its range, faster as the wearer gets closer, and farther away the ring keeps leading to the creature. Includes the complete 0.1.47 release.
0.1.47
Requires EpicLoot 0.14.13 and pairs with StarLevelSystem 1.18.1, which now fix most of what this add-on fixed, so it drops its own versions: identification's power, payment, quantity and tier gate, gambling's flags, the tempering countdown and failure floor, effect ranges in tooltips, tempering and augmentation, rune etching's payment and history, effect history on extraction, Executioner, projectile weapon effects, bonus hits other than the meteor's and Eikthyr's charge's share before crit, Reflect, the parry tooltip, Eitr Shield after armor, Immovable, discarded and Feint-avoided hits, the Blood Block cost, and StarLevelSystem's Drop That lookup, damage estimate, SoulEater and Splitter owner checks, LifeLink targets and share, and Alert hearing. The identification preview still lists only the equipment the crafting gate hands out, and now also decides whether the Identify button is available, as EpicLoot 0.14.13 requires. Skill above 100 continues from EpicLoot's new unclamped range, and EpicLoot now counts its skill bonuses in hit, parry and summon levels itself; the add-on still counts them in SkilledCarryWeight's carry weight and in tooltips of weapons not in hand. Chain lightning strikes are marked as bonus hits, as EpicLoot's own are. EpicLoot's versions differ from 0.1.46 in a few details: a short identification roll shows no message, clicks during the temper countdown are ignored instead of cancelling it, etching shows EpicLoot's messages and clears the tempered marker even for an identical effect, armor wears from the hit before Eitr Shield takes its share, and an Immovable block no longer fills the stagger bar at all. Includes the complete 0.1.46 release.
0.1.46
Bounty creatures keep the strength they spawn with, at the owner's request. EpicLoot gives a bounty's creatures extra health through StarLevelSystem as they spawn, three times as much for a gold bounty's target, twice as much for an iron bounty's and one and a half times for adds, but SLS kept that bonus only on the spawning player's game, so a creature lost it once it was loaded again or another player's game took it over. EpicLoot also marks a bounty's target as a boss for its boss health bar, and SLS then scaled it as a boss: +2% damage per star instead of +20%, boss modifiers instead of ordinary ones and, after a reload, +30% health per star instead of +75%. The bonus now comes back from the bounty the creature carries whenever SLS works out its stats, and SLS scales, modifies and evolves the target as an ordinary creature; the boss health bar stays. A 2-star troll for a gold bounty keeps 2,700 health, where a reload left it 960, and hits 40% harder than an unstarred troll instead of 4%. Includes the complete 0.1.45 release.
0.1.45
Bulk Up's regeneration penalty takes its share of the health regeneration that is left, at the owner's request. EpicLoot subtracted it from the regeneration multiplier after Wet, Cold and every other effect, so −30% turned 50% regeneration into 20%, and a penalty at least as large as what was left stopped regeneration entirely; it now turns 50% into 35%. With regeneration bonuses the penalty takes its share of those too: +30% regeneration and −30% Bulk give 91% instead of 100%. Bulk's added maximum health is unchanged. Includes the complete 0.1.44 release.
0.1.44
Holding Shift over an item at the enchanting table shows its effect details, as in the inventory, at the owner's request. EpicLoot built each list row's tooltip once, when the list was filled, so pressing Shift over a row changed nothing; the hovered row's tooltip is now rebuilt whenever Shift is pressed or released, and cost rows keep their stock numbers. Includes the complete 0.1.43 release.
0.1.43
Death reports in Discord mark the player's name as >>Name<< instead of coloring it red, at the owner's request. The red came from ANSI color codes, which Discord's notifications, its in-game overlay and its mobile app show literally, as [1;31mName[0m with a box for the escape character. The report keeps its code block. Includes the complete 0.1.42 release.
0.1.42
Stop overriding StarLevelSystem's level caps, at the owner's request, now that the pack turns on SLS's boss tiers. An active boss tier's range again replaces a biome's BiomeMaxLevelOverride, as StarLevelSystem 1.18.0 intends, so each boss kill raises the earlier biomes' caps along with their odds and minimums. Before, the add-on kept the biome cap, but the tiers were never on, so it changed nothing. Includes the complete 0.1.41 release.
0.1.41
The staff's double shot cuts each cast's whole hit to EpicLoot's configured 66% instead of only the staff's base damage, without editing the damage all staffs of that kind share, as triple shot already does. EpicLoot's skill bonuses now count where the game reads the skill level itself, as the game's set bonuses already did: the Staff of Protection's shield and any other status effect a hit or parry applies, summon strength and the Staff of the Wild's root count, and SkilledCarryWeight's carry weight, where each point of +Movement Skills adds 1 kg. More creature area effects get the creature's star damage factor: death and self-destruct explosions, Fader's fissures and walls of fire, and effects built into a creature, such as a frost wisp's aura. Built-in effects, including a lox's trampling, now use the creature's factor at each hit; a newly spawned lox's trampling kept the factor it had before StarLevelSystem gave it its stars. Includes the complete 0.1.40 release.
0.1.40
Identification rolls every effect with the Sacrifice upgrade's identified item power, up to 114%, instead of only the fixed effects of named items. Triple shot cuts each arrow's or bolt's whole hit by EpicLoot's configured share instead of only the weapon's base damage, without editing the damage all weapons of that kind share. StarLevelSystem fixes: LifeLink passes its share only to living, untamed creatures that are not the boss's enemies; SoulEater and Splitter run only on the game that controls the dying creature, so a death with a death animation no longer occasionally heals or splits twice; Alert no longer compounds the hearing range on each creature setup; and area effects and projectiles that creature attacks spawn with their own damage get the creature's star damage factor like its other attacks, which makes them stronger. Skill above 100 now raises damage, at the owner's request: every damage roll uses the whole level, trained plus the game's and EpicLoot's bonuses, and continues past 100 at the same 0.6% per point instead of stopping there, and the skills panel shows that level for weapon and tool skills. An area effect that takes an attack's hit rolls the skill a second time, as the game always has, and that roll keeps its old ceiling so the gain does not compound. Tooltips of weapons you are not holding show the damage range as if equipped too. Includes the complete 0.1.39 release.
0.1.39
Show the enchanting table's available / required cost counts 50% larger, at the owner's request; they were held at EpicLoot's base text size. A count too long for its icon shrinks back toward that size so it stays on one line. Includes the complete 0.1.38 release.
0.1.38
Fix more EpicLoot combat effects: bonus hits such as Reflect, chain lightning, the Yagluth meteor, the Blood Block cost and StarLevelSystem's LifeLink share no longer roll crit, double damage, lifesteal, on-hit effects, Wager, Mercenary or Executioner again; the meteor and Eikthyr's charge take their share from the hit before crit and double damage; Reflect no longer depends on whose game controls the attacker; Wager judges kills after the target's resistances, armor and damage scaling; area effects a projectile leaves behind use the hands that fired it; falls and the Blood Block cost no longer trigger damage-taken effects; the parry tooltip shows the real parry multiplier; and shields that cannot parry no longer get EpicLoot's parry bonus. Cap StarLevelSystem's SoulEater damage bonus at +50%, including on creatures that already saved more. Includes the complete 0.1.37 release.
0.1.37
Extend Andvaranaut beyond its 20 m range to the wearer's nearest unfound treasure map or accepted bounty, for worlds without a map. Farther than 1,000 m it pings when the wearer faces the target; within 1,000 m it pings every 5 seconds while they walk toward it; within its own range EpicLoot's pings take over as before. The ring aims at the center of the map circle until the chest or the bounty's creatures load, and goes quiet about a bounty once its creatures have been hit. Two server-synced settings, [Andvaranaut] Search radius and Facing angle, adjust the distance and the angle. Includes the complete 0.1.36 release.
0.1.36
Fix EpicLoot combat effects: Executioner is used up only by a hit that applied it; CoinHoarder uses its roll below 1,000 coins; Wager's kill refund no longer depends on which game controls the target; chain lightning jumps deal the rolled damage and use EpicLoot's falling chain chance; projectiles use the weapon effects of the hands that fired them; bow and crossbow enchantments also apply to the ammunition's damage; unequipped weapon tooltips show the damage as if equipped; hits the game discards and hits Feint avoided no longer trigger damage-taken effects; Feint no longer rolls on hits blocked with stamina left; Eitr Shield absorbs damage after the bubble, block, resistances and armor; Immovable blocks hold while stamina lasts; and a blocked hit converts physical damage to elemental once, before resistances. Includes the complete 0.1.35 release.
0.1.35
Check blocks and parries against the damage left after the player's resistances and body armor instead of the full hit. The game applied resistances and armor only after the block, so a hit that armor would reduce to a fraction still broke the guard and cost block stamina at full size. A successful block now subtracts from the reduced hit; resistances and armor still count once. Includes the complete 0.1.34 release.
0.1.34
Shorten the daily death leaderboard: drop the line with the covered dates and times, and end the zero-death message after "Nikt nie zginął.". Includes the complete 0.1.33 release.
0.1.33
Stop DiscordBot_AWL 1.4.7 from reconnecting to Discord every half minute until restart. It marks a heartbeat unanswered when it sends one and answered when Discord acknowledges it, but never resets that mark for a new connection. After a connection dropped while a heartbeat was unanswered, every later connection gave up before sending its first heartbeat, logging Heartbeat not acknowledged, reconnecting.... Each new connection now starts with no heartbeat outstanding. Includes the complete 0.1.32 release.
0.1.32
Make normal chat reach every player and Discord. Chat typed without a /s or /w command now goes out as a shout, so every player receives it wherever they are, and DiscordBot_AWL relays it as it does every shout. Shouts are no longer shown in capitals in the chat window or in floating text; they keep their yellow color and the speaker's name. Whispers stay local and are not relayed. Includes the complete 0.1.31 release.
0.1.31
Target EpicLoot 0.14.12, which fixes bounties being lost by its new save system. No other change. Includes the complete 0.1.30 release.
0.1.30
Fix the cause of DiscordConnector 3.1.3's records failures and replace 0.1.29's workaround. LiteDB 5.0.21 keeps the last page of each commit in its log writer's buffer under Mono, so every checkpoint during a session read a log one page short and failed. Flush that writer before LiteDB reads the log in full; its automatic and shutdown checkpoints now succeed, and 0.1.29's skipped automatic checkpoint and world-start checkpoint are removed.
Keep StarLevelSystem's biome caps with 1.18.0. That release lets an active boss-conditional tier replace a biome's BiomeMaxLevelOverride, so the default tiers would push early biomes far past their caps as bosses fall: up to 7 stars in the Meadows after Eikthyr. Ordinary creatures again use the creature override, then the biome cap, as in 1.17.0; bosses keep 1.18.0's MaxBossLevel cap. Includes the complete 0.1.29 release.
0.1.29
Keep DiscordConnector 3.1.3's records working for the whole server run. Its bundled LiteDB fails an internal check when it checkpoints automatically during play, once records-log.db passes 1,000 pages, and then refuses every records call until restart. First-join and first-death notices, statistics and leaderboard deaths were lost for the rest of the run. Skip the automatic checkpoint and checkpoint once when the world starts, before anyone can join. Includes the complete 0.1.28 release.
0.1.28
Credit equipment finished at a cooking station, such as Nord gear from the Frost Foundry, to the player who crafted its cast instead of whoever's game owns the station. Cancel rune etching without charging when the search box hides the selected item or rune. Let a completed temper play its finish effect instead of cancelling itself. Limit an unreadable crafting-history or favorites record to that character, with its own on-screen notice, instead of disabling features for the rest of the session. Synchronize the Rested delay and achievement announcement settings from the server as documented; previously each client used its own file. Write enrollment backups and server characters through a temporary file so an interruption leaves no partial file, and refuse a join with a message when the enrollment list cannot be read. Keep the death leaderboard running after failed posts: retry when Discord certainly did not post, and skip a report that may have posted, logging its text, instead of pausing until the state file is edited by hand. Stop the warnings logged for every DiscordConnector message, split backtick runs so they cannot close a code block, and stop escaping markdown in achievement messages shown inside code blocks. Includes the complete 0.1.27 candidate.
0.1.27
Internal cleanup only: clearer internal names, and the crafting-history log line now counts "legacy credits". Gameplay, saved data, configuration, plugin IDs, RPC names and network behavior are unchanged. Includes the complete 0.1.26 candidate.
0.1.26
Make each successful crafting-skill bonus roll add another full craft's output instead of one item, so arrows, bolts, nails, bombs, bait and multi-portion food double like one-item recipes. The chance, stations and eligible items are unchanged. Every successful roll adds exactly one craft instead of vanilla's escalating multi-craft total, a craft whose extra output would not fit completes without the bonus instead of being skipped, and AAA_Crafting's hidden sequential bonus streak is disabled. Includes the complete 0.1.25 candidate.
0.1.25
Show enchanting-table cost counts of 10,000 or more in whole thousands, rounded down (12480 shows as 12k), so large nearby-storage totals stay readable instead of shrinking the label. The red shortfall color and the tooltip keep the exact numbers. Includes the complete 0.1.24 candidate.
0.1.24
Record deaths from the native immediate death broadcast instead of the delayed respawn transition. Validate the sending connection and current character, ignore repeated broadcasts, and commit the death record synchronously so disconnecting during the death screen does not lose it or move it across the reporting cutoff. Includes the complete 0.1.23 candidate; client death/reconnect and delivery acceptance remain required.
0.1.23
Size the on-screen initialization error to its content so every reported failure stays readable instead of being clipped at a fixed height. Build against the unmodified game assemblies, so direct use of a private game member now fails the build rather than the game. Otherwise internal cleanup only: gameplay, saved data, configuration, plugin IDs and network behavior are unchanged. Includes the complete 0.1.22 candidate.
0.1.22
Trigger Automatic Mead Consumption only after actual damage leaves the surviving local player at Health Critical. Preserve EpicLoot's equipment-adjusted threshold and normal consumable cooldown/category restrictions, and stop after one successful consumption per damage event. Fully blocked or absorbed hits do not consume mead; damage-over-time ticks use their actual health loss. Includes the complete 0.1.21 candidate.
0.1.21
Use Meadows as the minimum unidentified gear tier. Resolve saved Starter Gear IDs to the matching original Meadows prefab when inventories and world items load, preserving rarity, stacks and serialized item data. Remove custom Starter Gear prefabs and their separate identification-cost fallback. Includes the complete 0.1.20 candidate; client migration and gameplay acceptance remain required.
0.1.20
Add an optional dedicated-server death leaderboard at 06:00 Europe/Warsaw for the preceding 24 hours, using DiscordConnector 3.1.3 records and its primary webhook. Count the live-to-zero character-ID transition instead of respawn, group by player identity, share ranks on ties, and preserve delivery state across restarts. Wait for a full day of corrected recording before the first report. Isolated previews never contact Discord. Client death/respawn and delivery acceptance remain required before promotion.
0.1.19
Fix the first-join black screen by uploading the character through the registered outbound connection before PeerInfo completes. Keep connection identity and server-side enrollment checks intact. Call Inventory.Changed through a private-method delegate so favorites initialization and toggling work against the real game assembly. Do not use 0.1.18. Client enrollment/save/reconnect checks remain required before promotion.
0.1.18
Allow one-time first-join import of existing campaign characters for server-enrolled Steam accounts. Preserve the original profile before releasing the join handshake, then use ServerCharacters' normal authoritative save path. Existing saves cannot be replaced by enrollment, unknown accounts retain fresh-character admission, and players do not manually send save files. Requires ServerCharacters 1.4.17 when installed. Client enrollment and reconnect checks remain pending.
0.1.17
Keep Dyrr 1.4.2 world bindings in private per-profile storage outside Gale's config scan. Preserve existing binding files locally and prevent later profile imports from replacing durable bindings. Start personal favorites empty instead of importing legacy Quick Stack files; existing character-saved favorites remain intact. Includes 0.1.16. Client gameplay and profile-update checks remain pending.
0.1.16
Keep DiscordBot notifications and Discord/AI message relays out of in-game chat. Preserve outgoing Discord webhook messages and native player chat; suppress both broadcast and display paths so bot messages cannot open the chat window.
0.1.15
Require positive character crafting history for craftable equipment drops, identification and gambling in PlayerMustHaveCraftedItem mode. Preserve existing characters' previously held craftable equipment once as saved legacy credits, without altering crafting statistics or achievements. Later pickups do not unlock items; fresh characters start with an empty migration marker, including the first ServerCharacters template save. Keep the purchased Fishing Rod eligible after pickup only when it has no creation recipe. Client migration and multiplayer checks remain pending.
0.1.14
Lower the FedoHud player-stat block default by 500 UI pixels while retaining automatic horizontal alignment. Persist dragged positions outside Gale-managed config in local, per-profile Unity preferences; Reset positions restores the lower default.
0.1.13
Favorite individual equipment and EpicLoot items with rolled effects while retaining type-wide favorites for ordinary supplies. Save personal favorite/slot/trash choices with the character and equipment markers with each item. Initialize after ServerCharacters loads the authoritative character, migrate legacy Quick Stack favorites once, and apply item-aware protection consistently to Quick Stack actions, display and EpicLoot Sacrifice. Requires Quick Stack 1.4.15 when that optional mod is installed. Back up legacy favorites before updating the Gale profile; see README migration instructions. Client gameplay validation remains pending.
0.1.12
Use each item's explicit or named enchantment range, then the normal rarity range, for Shift tooltips, tempering eligibility, rows and previews, and rune extraction. Bind tempering to the selected item and effect, cancel it when the selection changes, and recheck the item, range and full material cost before payment; recipes with invalid materials are blocked, and a failed temper never raises an effect already below its minimum. Rune etching now consumes its displayed material cost and rechecks the target and rune at completion. Extraction keeps remaining sockets, named/set identity and unrelated effect history, so an item with sockets or a named/set identity stays magic after its last rolled enchantment is extracted.
0.1.11
Use consistent ANSI code blocks for automated Discord message bodies across DiscordBot_AWL and DiscordConnector, including achievement announcements. Preserve death-message colors, avoid double wrapping, and leave player chat/shouts and webhook routing unchanged.
0.1.10
Target EpicLoot 0.14.11. Fix StarLevelSystem's empty default-weapon damage average, combine vanilla and EpicLoot bonuses in the skills panel, and show available/required crafting materials with inventory and nearby-storage totals. Add optional English Discord achievement announcements with their requirements, excluding startup and retroactive awards. Death messages use displayed creature names and compact stars above four; player names are red in game and Discord ANSI blocks, with italic creature names in game.
0.1.9
Withdraw the optional boss-trophy override added in 0.1.8; boss trophy counts and runestone rewards remain pack configuration decisions. Save unidentified loot's network item data through a delegate to the game's private ItemDrop.Save method, fixing the MethodAccessException that 0.1.7 and 0.1.8 raised by calling it directly. Use 0.1.9 instead of 0.1.8.
0.1.8
Add an optional boss-trophy override. Withdrawn in 0.1.9.
0.1.7
Post DiscordBot_AWL 1.4.7 player-death reports as a plain text line instead of a Discord embed. The joke text is unchanged, including the localized creature name and its stars; the "has died" title, the killer thumbnail and the embed timestamp are dropped. No other DiscordBot messages change.
0.1.6
Correct DiscordBot directory-path access to use its field rather than a property. Fixes the startup failure in 0.1.5. Use 0.1.6 instead of 0.1.5.
0.1.5
Fix DiscordBot_AWL 1.4.7 death-quip file discovery (.txt versus *.txt). Optional pack-owned files in BepInEx/config/DiscordBot/QuipsOverrides are loaded after DiscordBot initialization so its startup default writer cannot overwrite them. No Discord credentials or message templates are bundled with this add-on.
0.1.4
Add an optional server-synced Rested activation delay multiplier. The default 1 keeps vanilla timing; 0.5 changes the vanilla 20-second wait to 10 seconds. Resting requirements, comfort, regeneration rates and Rested duration are unchanged.
0.1.3
Register Starter Gear independently of gameplay patch initialization, retain Sacrifice protection when gameplay patches fail, and show a persistent visible initialization error. Starter identification uses Meadows material costs when no explicit None costs exist. Validate the identification transpiler's result-load instruction before branching to it. Restore type-name loot entries, upstream no-local-player fallback behavior, and the equipment-effect cache refresh after identification. Clarify tier mapping, fresh-character gating and the requirement to keep the add-on loaded when carrying Starter Gear.
0.1.2
Level-scaled creature drops and Drop That drops with level conditions now use independent chance rolls. This prevents vanilla's low-chance countdown from resetting whenever different star levels produce different probabilities. Existing probabilities, conditions, quantities and guarantees remain unchanged; ordinary unscaled drops keep vanilla behavior. This also covers rare items and queen-bee rules configured with Drop That level conditions. SLS custom loot already rolls directly and is unchanged.
0.1.1
Sacrifice now lists only eligible items in the local player's inventory. With Quick Stack - Store - Sort - Trash - Restock installed, favorited item types and favorited slots are excluded. Immediately before sacrifice, the complete selection is checked again; a moved, protected, or otherwise ineligible item cancels the operation without consuming anything. Other enchanting tabs and access to nearby crafting materials are unchanged.
0.1.0
Initial experimental release for EpicLoot 0.14.10: consistent held-item identification and previews, constrained fallbacks, source-tier preservation, exact batch quantities, payment after successful generation, and exception-safe gambling flags.