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.
Dive In
Diving underwater with configurable controls, Fast Swim, surface/midwater stamina regen, and depth drain. Configured creatures can chase and navigate underwater. Includes water combat/equipment, localized key hints, and improved underwater visuals.
| Date uploaded | 2 weeks ago |
| Version | 1.2.8 |
| Download link | sighsorry-Dive_In-1.2.8.zip |
| Downloads | 2321 |
| Dependency string | sighsorry-Dive_In-1.2.8 |
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.2360README
DiveIn
DiveIn adds configurable diving and swimming for players and configured creatures in Valheim.
Normally, creatures cannot follow a diving player far below the surface. DiveIn lets configured creatures chase, patrol, and attack underwater while adding player depth controls, resource tuning, water combat, key hints, and underwater visuals.


Player diving
- Ascend and descend with configurable keyboard shortcuts or the corresponding gamepad controls.
- Surface and midwater stamina regeneration are configured separately.
- Idle underwater stamina drain and moving swim drain can scale with liquid depth.
- Fast Swim supports press or toggle input, with separate speed and stamina multipliers.
- A client-side swimming HUD below the stamina bar uses the stamina number's font and size.
Swim HUD ModeselectsFull(ascent/descent bindings, then Fast Swim On/Off below),FastSwimOnly(status only), orOff(regular key hints, when enabled in the game). On describes the selected mode, not movement at that instant; empty stamina changes the status color without adding text. The HUD stays visible when the full stamina bar fades and works independently of vanilla Key Hints. Only the key-hint rows currently covered by the HUD are suppressed. Full keeps ascent/descent controls even when Fast Swim is unavailable. - Swim skill and encumbrance have independent speed multipliers.
- Surface swimming retains the vanilla swim depth; DiveIn changes depth only while diving.
- Attacking, secondary attacking, and guarding temporarily take priority over swim movement.
- Player-owned underwater projectiles can use synchronized lifetime, speed, and damage multipliers on the initial launch. Child projectiles spawned by
Projectile.SpawnOnHitkeep the parent spawn logic's values without another DiveIn multiplier, so inherited damage and speed are not repeatedly reduced down the chain. - Equipment is usable while swimming by default. The active equipment list determines which items get an exception to the swimming restriction. Restricted armor and accessories do not hide unrelated hand equipment, but vanilla may stow both hands when one hand item is restricted.
- When Path of Valheiman is installed, DiveIn's list cannot override its live
Combat in the Depths(WaterMelee) unlock or melee/shield rules. Whitelisting a bow, for example, does not unlock ranged attacks. Refunding the node takes effect without restarting. Diving, Fast Swim, the HUD, resource tuning and projectile penalties remain unchanged. - Swimming key hints use the active keyboard or gamepad bindings and supported Valheim languages.
- Vanilla water color interpolation is initialized correctly across zone borders, above and below the surface. This client-side fix targets the vanilla water shader only; it does not retint the coast or change water depth, waves, buoyancy or swimming physics.
PoV compatibility checks the water-combat method signatures and the actual patched equipment calls, not the mod version number. Both the original gates and gates that receive an upstream swimming result are supported; the latter preserve that result alongside DiveIn's item restrictions. Unknown signatures or ambiguous calls disable DiveIn's PoV combat assists with a warning instead of enabling an unrestricted bypass. Future changes to PoV's policy still require review.
Creature diving
- Configured creature prefabs stop avoiding water and can navigate underwater.
- Passive creatures patrol within per-group minimum, center, and maximum depths.
- Alerted creatures follow targets within their active depth limits.
- Optional spawn-depth preservation prevents underwater spawns from first floating to the surface.
- Optional shallow-water flee behavior makes a creature retreat until it clears the configured depth buffer.
- Per-group avoidance steering can be disabled for prefabs that jitter with angled obstacle sampling.
- Serpent movement retains the vanilla stopping distance and swoop movement while using DiveIn depth navigation.
DiveIn.yaml
The server/source-of-truth instance creates BepInEx/config/DiveIn.yaml when it is missing. Clients use the synchronized server value while connected.
# Unknown or duplicate keys are errors and keep the previous applied settings.
surface_patrol:
passive_min_depth: 0
passive_center_depth: 10
passive_max_depth: 20
active_min_depth: 0.25
active_depth_adjust_speed: 2
shallow_water_flee_depth: 0
preserve_spawn_depth: false
avoidance_steering: true
prefabs:
- Leech
- Abomination
- Serpent
- BonemawSerpent
# Disable angled avoidance only for prefabs that need it.
mods_surface_nosteering:
passive_min_depth: 0
passive_center_depth: 10
passive_max_depth: 20
active_min_depth: 0.25
active_depth_adjust_speed: 2
shallow_water_flee_depth: 0
preserve_spawn_depth: false
avoidance_steering: false
prefabs:
- SA_WhiteShark
Rules:
- A prefab may be assigned only once; the first assignment wins.
- Missing optional fields use DiveIn defaults.
- Negative and out-of-range depths are normalized and logged.
NaN, infinity, malformed YAML, unknown keys, and duplicate keys are rejected without replacing the last valid configuration.- A local YAML change is ignored while remote synchronized values are active.
BepInEx configuration
DiveIn creates BepInEx/config/sighsorry.DiveIn.cfg. That generated file is the source of truth for the complete setting list, descriptions, defaults, ranges, and synchronization markers. The README intentionally does not duplicate the generated configuration block, so code and documentation cannot drift independently.
Under 2 - Player Diving, Water Equipment Mode selects one of two server-synced lists:
Blacklist(default): items inWater Equipment Blacklistkeep their swimming restriction. An empty list excludes nothing. Existing blacklist settings continue to work unchanged.Whitelist: only items inWater Equipment Whitelistqualify for an exception. EnterHammer, Hoeto permit just those tools, or leave the list empty to grant no exceptions.
The mode and both lists are synchronized with the server. Each list accepts comma-separated item prefab names and defaults to empty. Changing modes keeps the inactive list's contents for later; only the selected list affects equipment.
The configuration is grouped into:
- General server locking
- Player controls and water equipment
- Surface and midwater stamina/eitr regeneration
- Idle, depth, base, and Fast Swim stamina drain
- Swim skill, Fast Swim, and encumbered swim speed
- Underwater projectile lifetime, speed, and damage
- Underwater darkness and murkiness
The ascend key, descend key, Fast Swim input mode, and Swim HUD Mode (default Full) are client-side. HUD mode changes take effect immediately and do not change swimming behavior. At startup, the retired Show Fast Swim HUD setting is migrated from On to Full or Off to Off only if the new key is absent; an existing Swim HUD Mode takes precedence. Settings marked [Synced with Server] are controlled by the server when configuration locking is enabled.
Credits
The player diving implementation includes code derived and modified from UnderTheSea.
Original DiveIn repository: sighsorry1029/DiveIn
CHANGELOG
Changelog
1.2.10
- With supported versions of Path of Valheiman, you no longer need Combat in the Depths to equip, draw, or use permitted items while swimming. DiveIn's existing blacklist or whitelist applies before learning the node and after a refund. No new setting is required; DiveIn does not change the skill tree or refund points.
- If DiveIn cannot recognize PoV's water-combat patches, PoV keeps its own rules. Without PoV, swimming equipment behavior is unchanged.
- Reorganized the README around settings, with examples for water equipment, Fast Swim, stamina and eitr recovery, underwater projectiles, visibility, and creature patrol depths.
1.2.9
- Reworked modern Path of Valheiman integration: its live
Combat in the Depthsnode now unlocks DiveIn's water equipment and combat rules. After unlocking, DiveIn's selected blacklist or whitelist controls permitted items, including tools, lone shields and ranged equipment, instead of PoV's melee-only water restrictions. Refunding the node removes the exception immediately; other game and mod requirements still apply. - Relaxed hidden-hand restoration so allowed tools and lone shields no longer require a melee partner. Manual, block-triggered and attack-triggered restoration still check the complete hidden pair, preserving restricted items and their hidden references.
- Removed legacy PoV compatibility. Modern integration checks the required methods, activation guards and complete active patch set rather than allowing specific version numbers. An unsupported or changed contract disables the takeover, restores PoV fallback behavior and cleans up only DiveIn's override hooks.
- Expanded regression coverage for node unlock/refund, equipment lists, tools and ranged attacks, safe restoration, patch changes and failure cleanup. Without PoV, normal DiveIn behavior is unchanged; diving, Fast Swim, HUD, resource settings and projectile penalties remain independent of the node.
1.2.8
- Added a server-synced
Water Equipment Modeand a separateWater Equipment Whitelist. Blacklist remains the default and keeps existing blacklist entries. Switching modes preserves both lists and applies only the selected one. - In Whitelist mode, only listed item prefabs qualify for DiveIn's swimming equipment exception. Leave the whitelist empty to grant no exceptions. Listing an item does not bypass Path of Valheiman's node or weapon requirements.
- Fixed the block input trying to redraw a hidden pair when the shield was allowed but the item in the other hand was restricted. Both manual and block-triggered redraw now check both hands before attempting to equip either item.
1.2.7
- Updated for Valheim 1.0.21 and raised the packaged BepInExPack dependency to 5.4.2360.
- Removed the obsolete water-color seam workaround now that Valheim's water shader no longer uses the UV transform it corrected. Underwater surface rendering, depth adjustments, and restoration safeguards are unchanged.
- Updated compatibility checks to verify the retired workaround stays absent while underwater surface apply/reset paths remain connected. Gameplay settings and Path of Valheiman integration are unchanged.
1.2.6
- Fixed Path of Valheiman water-combat integration failing when its swimming equipment checks receive an upstream swimming result.
- Support both original and chained PoV checks by inspecting method signatures and actual patched calls, without pinning compatibility to specific PoV versions. Unknown or ambiguous call shapes still disable DiveIn's integration assists with a warning.
- Preserve upstream swimming decisions, DiveIn's item blacklist, live node unlock/refund behavior, and hidden-hand restoration safeguards. Added regression checks for both call shapes, mixed overloads, and failure handling.
1.2.5
- Added optional Path of Valheiman compatibility: water equipment and combat now follow its live Combat in the Depths node and melee/shield rules, while retaining DiveIn's item blacklist. Node refunds and character changes are reflected without restarting.
- Fixed the swimming equipment patch warnings caused by Path of Valheiman replacing the vanilla swimming checks. DiveIn now composes with PoV's existing checks without bypassing its unlock or weapon restrictions.
- Guarded hidden-hand restoration so forbidden or blacklisted equipment is not forced back into use or stripped of its hidden-item reference. Prevented repeated shield-only restoration when PoV would immediately hide it again.
- Limited DiveIn's combat movement suppression and guard-animation assistance to PoV-permitted actions. Diving, Fast Swim, HUD, resource tuning and projectile penalties are unchanged; without PoV, existing DiveIn behavior is preserved.
1.2.4
- Added a compact swimming HUD with ascent/descent controls on the first row and a simple Fast Swim On/Off status below, styled to match the stamina bar's number text and updated for keyboard/gamepad bindings.
- Added the client-only Swim HUD Mode setting: Full (default), FastSwimOnly, or Off. Existing Show Fast Swim HUD settings migrate automatically, and matching vanilla key hints are hidden only while their replacement HUD row is visible.
- Fixed vanilla water color interpolation across zone borders by initializing the water shader's UV transform. No extra shoreline tint is applied, and water depth, waves, buoyancy, and swimming physics are unchanged.
- Updated the packaged BepInExPack dependency to 5.4.2351.
1.2.3
- Added compatibility with Valheim 1.0.7 by rebuilding against the original game assemblies and replacing publicized-only member access with cached, explicit Harmony accessors.
- Fixed DiveIn initialization failing after
ZRoutedRpc.Everybodybecame a constant by updating the embedded ServerSync compatibility build while preserving configuration locking, synchronization, and version policy. - Preserved Valheim 1.0 crown-fear movement priority for configured diving creatures, and hid DiveIn key hints while the new achievements panel is open.
- Updated the packaged BepInExPack dependency to 5.4.2350. Configuration keys,
DiveIn.yaml, and public behavior contracts remain unchanged.
1.2.2
- Repackaged version 1.2.1 as 1.2.2 with synchronized plugin and manifest versions. No gameplay, configuration, or API changes.
1.2.1
- Fixed additional moving swim stamina drain applying the global stamina-use multiplier twice when it differs from 1, while preserving vanilla stamina-use hooks and regeneration delay.
- Applied underwater projectile penalties only to the initial launch. Child projectiles created through
Projectile.SpawnOnHitkeep the parent spawn logic's values without another DiveIn multiplier, preventing repeated damage and speed reductions down the chain. - Fixed drawing hidden hand equipment while input is blocked by chat, inventory, menus, or teleporting, and skipped item-name lookups when the water equipment blacklist is empty.
- Reduced repeated key-hint formatting and underwater surface-material array allocations, and removed duplicate water-state checks within the camera postfix while preserving transition and restoration guards.
- Avoided unnecessary monster prefab lookups outside water and stopped unrelated player configuration reloads from resetting monster steering memory.
- Fixed English key-hint fallback for Valheim's unregistered localization-key format.
1.2.0
- Fixed underwater dungeon teleports briefly moving the camera above the water surface during entry and leaving it there after returning to a submerged exit.
- Preserved underwater transition state with live WaterVolume checks while Valheim temporarily clears its cached liquid depth, then restored swimming at the destination's actual depth instead of forcing the player toward the surface.
- Rebased underwater-to-underwater teleports on the destination depth and cleared transition state at dry destinations so stale swim depth and visual overrides do not carry across portals.
1.1.9
- Fixed swimming equipment bypass being disabled by a false branch-target validation failure, which caused repeated startup warnings and left vanilla swimming restrictions active.
- Changed the synchronized Water Equipment Blacklist to preserve restrictions per listed item: listed armor and accessories no longer stow unrelated hand equipment, while listed hand items retain vanilla hand-item hiding.
- Improved shallow-water flee behavior so configured creatures keep retreating until they clear the exit-depth buffer without skipping vanilla sleep, riding, event, or despawn processing.
- Restored vanilla serpent stopping distance and swoop movement while using bounded local steering lookahead for smoother underwater pursuit.
- Hardened
DiveIn.yamlreloads and validation: rapid saves are no longer dropped, duplicate content is ignored, non-finite values keep the last valid configuration, and supported depth limits are normalized with warnings. - Improved swimming exception recovery and key-hint stability by reliably restoring temporary movement state, cleaning failed hint clones, and rebuilding layouts only when their content or visibility changes.
- Improved underwater camera, fog, and surface-material restoration so DiveIn does not overwrite newer environment or mod changes when leaving the water.
- Improved reload and shutdown cleanup, including restoration of configured creatures' original swim depth and removal of stale per-creature tracking state.
- Added a synchronized version-update command and fail-fast Release packaging checks; normal builds no longer deploy to the game unless explicitly requested.
1.1.8
- Fixed Space-only ascent stopping just below the surface unless a movement key was also held.
- Players now smoothly level their swimming posture when surfacing, without requiring forward movement input.
1.1.7
- Fixed visible water-zone seams and stale surface material state when viewing waves from underwater.
- Improved configured monster avoidance steering stability near obstructed routes.
- Added the per-group
avoidance_steeringfield toDiveIn.yaml; existing files default totrue, whilefalsekeeps depth behavior and makes the group swim directly toward its target. - Moved
SA_WhiteSharkinto the generatedmods_surface_nosteeringsample group to avoid its underwater left-right jitter. - Improved WeaponHolsterOverhaul compatibility by restoring hidden blocking equipment only once on the initial block input and only when no blocker is already equipped.
1.1.6
- Improved shallow-dive camera behavior by keeping the camera below the water surface while the player's head is submerged, reducing abrupt transitions to raw unstyled water and seabed visuals near the surface.
1.1.5
- Encumbered players can no longer use Fast Swim; its toggle state is cleared and its key hint is hidden until they are no longer encumbered.
- Added a synced Encumbered Swim Speed Multiplier setting (default
0.5, range0.1-1.0) for tuning normal swim speed while encumbered.
1.1.4
- Fixed occasional flat square water-surface visuals left behind after diving.
- Improved the view from underwater so the surface keeps wave and water shader details when looking up.
1.1.3
- Fast Swim can now use
Togglemode, which keeps the existing press-to-toggle behavior, orPressmode, which keeps Fast Swim active only while the vanilla run key is held.
1.1.2
- Added per-group
DiveIn.yamlmonster tuning fields:active_min_depth,shallow_water_flee_depth, andpreserve_spawn_depth. - Existing
DiveIn.yamlfiles remain compatible; missing new fields use defaults ofactive_min_depth: 0.25,shallow_water_flee_depth: 0, andpreserve_spawn_depth: false. - Newly generated
DiveIn.yamlfiles include the new fields for each group, so customized YAML users can copy only the fields they want to tune. - Changed the default underwater projectile lifetime, speed, and damage multipliers to
0.5for player-owned projectiles fired underwater.
1.1.1
- Added synced underwater projectile multipliers for player-owned projectiles fired underwater, allowing servers to reduce projectile lifetime, speed, and damage in underwater combat.
- Fixed DiveIn swimming key hints so Fast Swim, Descend, and Ascend labels/keys are refreshed correctly instead of inheriting stale vanilla combat hint text.
1.1.0
- Added Swim Stamina Drain Base Multiplier so servers can tune vanilla moving swim stamina cost before depth and Fast Swim multipliers.
- Added Multiplicative Swim Stamina Modifiers so swim stamina status effects such as MeadSwimmer and Eikthyr stack multiplicatively during actual swim stamina consumption.
- Moving swim stamina drain now scales from the player's actual vanilla swim drain, including Swim skill, equipment, and status effects.
- Reorganized swim-related config sections into Regen Rate, Stamina Drain, and Swim Speed.
- Optimized swim resource adjustment, underwater visual state handling, swimming key hints, and configured monster dive lifecycle code for simpler and safer behavior.
1.0.9
- Added Surface Eitr Regen Rate and Midwater Eitr Regen Rate config options to scale total eitr regeneration while swimming.
1.0.8
- Added Midwater Idle Stamina Drain Per Depth so idle underwater stamina drain scales with current liquid depth.
- Minor optimizations and config cleanup.
1.0.7
- Split water stamina regeneration into separate Surface and Midwater rates so stamina can recover only after surfacing by default.
- Added depth-scaled idle underwater stamina drain to simulate holding breath.
- Added Fast Swim Stamina Drain Multiplier so Fast Swim stamina cost can be configured separately from Fast Swim speed.
- Renamed stamina and Fast Swim config options for clearer per-depth behavior.
- Grouped stamina and speed config options into Swim Stamina and Swim Speed sections.
- Underwater visual styling is now always enabled; Darkness and Murkiness moved to Player Diving with softer synced defaults.
1.0.6
- Improved configured creature underwater AI near the ocean floor.
- Unified underwater route and steering checks into a single move plan cache.
- Removed Dive AI Quality config; underwater AI now uses high-quality behavior by default.
- Improved player ascent when stuck against the ocean floor.
- Added configurable ascend/descend dive keys and localized swimming key hints, including gamepad-aware key hints and live Fast Swim On/Off hints.
- Fixed vanilla hide/show weapon input so hidden weapons can be drawn again while underwater.
- Reworked underwater combat so attack, secondary attack, and guard inputs stop swim movement and take priority.
- Preserved the player's vanilla surface swim depth instead of replacing it with a DiveIn hardcoded value.
- Reworked underwater water-surface rendering to preserve above-surface visuals while reducing sky-through-water and waterline clipping issues.
- Reworked run-swimming so the run key toggles Fast Swim at Swim skill 0, consumes extra stamina, and lets Swim skill speed be configured as a multiplier.
- Setting Swim Run Speed Multiplier to 1 disables Fast Swim and hides its key hint.
- Simplified depth stamina drain config to one per-meter multiplier and applied depth/run stamina drain multiplicatively.
1.0.5
- Added underwater visual config options.
1.0.4
- Changed the
DiveIn.yamlschema. Delete the existingDiveIn.yamland restart the game to regenerate it. - Added more creatures from other mods to the default
DiveIn.yaml.
1.0.2
- Made swim speed increase according to Swim skill level.
- Final swim speed = base swim speed x [1 + (config value - 1) x (Swim skill level / 100)^1.5].
1.0.1
- Replaced the incorrect DLL from the initial package.
1.0.0
- Initial release.