Valheim
You are viewing a potentially older version of this package. View Latest Version
Install with App

Details

Date Uploaded
4 days ago
Downloads
5.6K
Size
90KB
ADDatHost Valheim hosting
€1

EpicLoot progression fix

An unofficial compatibility add-on for EpicLoot 0.14.11. Keep the original EpicLoot installed. This package applies Harmony patches; it does not replace or redistribute EpicLoot's DLL, assets or configuration.

Version 0.1.2 also corrects the interaction between star-dependent creature drop chances and vanilla's pseudo-random countdown.

Enchantment ranges and item operations

Shift tooltips, tempering eligibility, tempering rows and previews, and rune extraction use the explicit value override when present, then the named item's override, then the effect's normal rarity range. Missing effect definitions cannot acquire invented tempering ranges. Augmentation's existing/keep option uses the item's range; new choices retain their ordinary rarity rolls. Fixed natural rolls remain hidden as ranges and may still be tempered when they have a positive increment.

Tempering binds its countdown to the selected item and effect, cancels when selection changes, and rechecks the item, range and full material costs before payment. Invalid or unresolved required materials block the recipe. A failed temper never raises an effect that is already below its normal minimum. Success probabilities, increments, over-tempering and critical outcomes keep their configured rules.

Rune etching consumes its displayed material cost and rechecks the target and rune at completion. Extraction preserves remaining sockets, named/set identity and unrelated effect history, including when the final rolled enchantment is removed. Removing an effect remaps augmentation/tempering indices; replacing a roll clears its old temper marker. Temporary effect removal while computing available replacements is always restored, including on errors. Existing item values are not automatically rerolled or normalized.

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.

Before updating Gale, privately back up each player's BepInEx/config/QuickStackStore_player_<character-ID>.dat. Copy the matching file into that player's profile at BepInEx/favorites-migration/ before their first join with this version; it must not be included in a shared import or Push. Migration prefers that copy, falling back to an existing config-folder file. It runs once after the authoritative character loads; later profile updates and reconnects use saved character data, never the legacy file. Keep original character and favorites backups. Invalid migration data reports an error and must be corrected before playing. Files already deleted by an earlier update need restoration from backup; they cannot be reconstructed.

Old equipment favorites contain only type names. Migration marks every currently carried matching piece individually, so review and unfavorite unwanted extras. It cannot infer which stored piece was originally clicked; review stored equipment separately. 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. Combined client, item-transfer and ServerCharacters checks remain required before production deployment.

Progression behavior

When EpicLoot's Item Drop Limits is PlayerMustHaveCraftedItem, identification respects the unidentified item's tier without imposing an additional boss-kill gate. It still requires the player rolling the equipment to have held that equipment before. Recipe knowledge alone is not enough. Drops remain shared; this mod does not create personalized loot for each recipient.

  • Identification previews enumerate the same eligible replacements as actual rolls.
  • Equipment fallbacks respect item knowledge and the original classification ceiling. Unclassified equipment cannot silently bypass the restriction.
  • Unidentified conversion retains the selected TierN equipment pool's ceiling. Tier-zero drops become Unidentified Starter Gear instead of being stamped Meadows through their item classification. Original EpicLoot already uses classification for classified items; it falls back to the physical drop biome only for unclassified items. This add-on uses normal item resolution when classification is missing. Previously saved unidentified items keep their existing tier.
  • Starter Gear identification uses the configured Meadows material cost unless IdentifyCosts explicitly contains a None entry. With EpicLoot's defaults, that is 1–6 Flint for Magic through Ancient, plus the selected category's existing cost. This changes costs only, not the starter loot pool.
  • Identification prepares the requested number of results before taking payment or consuming the selected items. An incomplete batch consumes nothing. The generation loop stops at the requested quantity.
  • Gambling restores its temporary loot-generation flags even if generation throws.
  • The standard skills panel combines vanilla status/set bonuses with equipped EpicLoot skill bonuses in its existing bonus label and total bar. Fractional trained levels no longer make a +15 bonus display as +14. Trained levels and Fortify Skills annotations stay separate; gameplay calculations are unchanged. 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.Save method. This avoids the MethodAccessException caused by 0.1.7 and 0.1.8 calling the method directly against publicized build references.
  • Sacrifice lists only eligible items in your personal inventory. Items in nearby chests or external inventory providers cannot be selected for sacrifice. Other tabs, including Identify, and nearby material access are unchanged.
  • Enchanting-table cost icons show available / required material amounts, with insufficient amounts in red. 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.

Held-item gating intentionally gives a fresh character no eligible equipment until they have crafted or picked up an eligible finished item. 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 item knowledge can be evaluated.

Source-tier preservation assumes vanilla equipment tiers: 0 = starter, 1 = Meadows, 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. SLS custom tables already use direct rolls and are unaffected. Drop That support is optional and was checked against version 3.1.5; unsupported metadata produces an explicit startup error.

When StarLevelSystem and Drop That are both installed, the add-on repairs SLS's lookup of Drop That's character-drop manager using the loaded plugin's actual assembly name, then refreshes SLS's compatibility binding. This was checked against StarLevelSystem 1.17.0 and Drop That 3.1.5. It restores SLS's existing item-modifier integration without changing mining logic, loot tables, quantities or chance settings. The original SLS warning can appear before this add-on loads; startup succeeds only if the repaired method binding is verified.

StarLevelSystem's average damage estimate now uses its existing current-weapon fallback when a creature has no default weapons, as with ordinary skeletons. Previously the empty average became NaN and then an arbitrary 100-damage estimate, inflating Volatile and Poison Nova explosions. Nonempty default-weapon averages, nova multipliers and damage types are unchanged. If no current weapon exists either, SLS's existing no-estimate behaviour is retained.

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.

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 use the creature's displayed name, including StarLevelSystem affixes and custom names; the full creature name is italic in in-game chat, while its stars stay outside the italics. One to four stars remain symbols; five or more use 5★, 7★, and so on. Player names are red in in-game death chat for creature and environmental deaths. Discord receives only the joke in an ANSI code block with red player names on supported clients; colour rendering varies by Discord client, and creature names remain plain in ANSI blocks. 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. Existing death colours and already-boxed messages are preserved. Player chat/shouts stay unchanged; embed titles, images and routing remain intact while descriptions and field values are boxed.

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.11 and was built against Valheim 1.0.15. Starter Gear registration is attempted before the version gate and independently of gameplay patching, so a version rejection or unrelated patch failure does not skip registration. 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. Do not combine this add-on with a replacement/forked EpicLoot DLL. Other mods patching the same identification or loot-resolution methods may conflict.

Validation status: compiled against the installed game and mod assemblies; live gameplay and multiplayer verification are pending. This is an initial experimental release, not a claim of completed in-game validation.

Use 0.1.9 instead of 0.1.8. The published 0.1.8 added an optional boss-trophy override; that feature was withdrawn and is absent from 0.1.9. Boss trophy counts and runestone rewards remain pack configuration decisions. Neither loot compatibility fix establishes the cause of a reported mining-drop delay.

Removing the mod

Identify newly generated Unidentified Starter Gear before removing this add-on. Never load a character carrying Starter Gear without the add-on and its required dependencies, including when entering another world or an unmodded profile. Original EpicLoot does not register the None_<rarity>_Unidentified prefabs; loading and saving with missing prefabs can permanently remove those items. Keep character backups before changing mods. Existing normal gear and the original unidentified prefabs are unchanged. Remove the 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.

DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro