sighsorry-Dive_In icon

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.

Last updated 3 days ago
Total downloads 41204
Total rating 18 
Categories Mods Tweaks AI Generated Enemies Server-side Client-side Deep North Update
Dependency string sighsorry-Dive_In-1.2.7
Dependants 44 other packages depend on this package

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2360 icon
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.2360

README

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.

Serpent chase

Underwater serpent chase

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 Mode selects Full (ascent/descent bindings, then Fast Swim On/Off below), FastSwimOnly (status only), or Off (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.SpawnOnHit keep 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 in water by default; a synchronized prefab blacklist keeps restrictions on listed items without propagating armor or accessory entries to hand equipment. Listed hand items retain vanilla hand-item hiding.
  • When Path of Valheiman is installed, water equipment and combat follow its live Combat in the Depths (WaterMelee) unlock and melee/shield policy instead of DiveIn's unrestricted equipment bypass. DiveIn's blacklist still applies; the node does not unlock ranged or thrown attacks. Diving, Fast Swim, the HUD, resource tuning and projectile penalties remain unchanged. Refunding the node is reflected without restarting. Without PoV, DiveIn retains its normal behavior.
  • 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 independent blacklist. 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.

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