You are viewing a potentially older version of this package. View all versions.
sighsorry-Dive_In-1.0.5 icon

Dive In

Adds diving and swimming for players and configured creatures

Date uploaded 2 months ago
Version 1.0.5
Download link sighsorry-Dive_In-1.0.5.zip
Downloads 2166
Dependency string sighsorry-Dive_In-1.0.5

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2333 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.2333

README

DiveIn

Adds diving and swimming for players and configured creatures.

Normally mobs can't follow you underwater. So players with diving mod players can just attack mobs from above or below without getting hit. This mod changes that.
Also added a diving mechanic for players with configurable stamina drain according to depth



Configured mobs can attack you! No more hiding under their bellies.



Idle mobs would swim within the configured range


Recommend to use with RtDOcean. There is configured sample for it.

Player Diving

  • Unlike vanilla Valheim, stamina regeneration while swimming or diving can be enabled through config.
  • Extra stamina drain can scale with depth. Deeper water becomes more expensive than staying near the surface.
  • Use equipment in water except that is in blacklist.

Creature Diving

  • Configured monster prefabs stop avoiding water and can navigate underwater.
  • Idle monsters use passive depth profiles and slowly drift within their assigned depth range.
  • Alerted or chasing monsters adjust depth toward their target within global depth limits.
  • Underwater pathing uses route checks and steering avoidance samples instead of blindly forcing success.
  • A single Dive AI Quality slider trades CPU cost for smoother underwater movement.

DiveIn.yaml

This file defines which monsters can dive and what passive depth band each monster uses.

# Monster dive configuration for DiveIn.
# Unknown keys and duplicate keys are treated as errors and keep the previous applied settings.

surface_patrol: # You can use any group name. Add your own groups
  passive_min_depth: 0 # Shallowest passive dive depth used while the monster has no target and is not alerted.
  passive_center_depth: 10 # Center depth used by the passive sine-wave swimming pattern.
  passive_max_depth: 20 # Deepest passive dive depth used while the monster has no target and is not alerted.
  active_depth_adjust_speed: 2 # How quickly this group adjusts swim depth while alerted or chasing a target.
  prefabs: # Monster prefab names assigned to this passive profile group.
    - Leech
    - Abomination
    - Serpent
    - BonemawSerpent

mid_water:
  passive_min_depth: 0
  passive_center_depth: 15
  passive_max_depth: 30
  active_depth_adjust_speed: 2
  prefabs: []

deep_patrol:
  passive_min_depth: 10
  passive_center_depth: 20
  passive_max_depth: 30
  active_depth_adjust_speed: 2
  prefabs: []

## Mod prefabs sample

mods_surface:
  passive_min_depth: 0
  passive_center_depth: 10
  passive_max_depth: 20
  active_depth_adjust_speed: 2
  prefabs:
    - Neck_RtD
    - Animal_Dolphin_RtD
    - Animal_Cod_RtD
    ...

Notes:

  • If the same prefab appears in multiple groups, only the first assignment is kept.
  • Invalid YAML keeps the previously applied settings.
  • When the server is the source of truth, clients use the synced server YAML instead of their local file.

Config

[1 - General]

## If on, the configuration is locked and can be changed by server admins only. [Synced with Server]
# Setting type: Toggle
# Default value: On
# Acceptable values: Off, On
Lock Configuration = On

[2a - Player Diving]

## Comma-separated item prefab names that remain restricted in water. Everything not listed is allowed in water by default. Example: BowFineWood,ShieldBronzeBuckler. [Synced with Server]
# Setting type: String
# Default value: 
Water Equipment Blacklist = 

## Multiplier applied to vanilla stamina regeneration while swimming or diving in water. 0 matches vanilla swimming behavior (effective stamina regeneration stays at 0), 1 matches vanilla normal non-swimming stamina regeneration timing and rate. [Synced with Server]
# Setting type: Single
# Default value: 0.5
# Acceptable value range: From 0 to 2
Water Stamina Regen Rate = 0.5

## Depth in meters below the surface where extra swim stamina drain begins. [Synced with Server]
# Setting type: Single
# Default value: 3
# Acceptable value range: From 0 to 50
Water Depth Stamina Drain Start = 3

## Depth in meters below the surface where the maximum extra swim stamina drain multiplier is reached. [Synced with Server]
# Setting type: Single
# Default value: 30
# Acceptable value range: From 0.25 to 300
Water Depth Stamina Drain Full = 30

## Maximum multiplier applied to vanilla moving swim stamina drain at or below the full depth. [Synced with Server]
# Setting type: Single
# Default value: 1.5
# Acceptable value range: From 1 to 5
Water Depth Stamina Drain Max Multiplier = 1.5

## Final swim speed while swimming and holding the run key = base swim speed x [1 + (this value - 1) x (Swim skill level / 100)^1.5]. [Synced with Server]
# Setting type: Single
# Default value: 1.5
# Acceptable value range: From 1 to 3
Swim Run Speed Multiplier = 1.5

[3 - Performance]

## Single quality slider for underwater AI behavior. 0 = minimum CPU/minimum smoothness, 100 = maximum CPU/maximum smoothness. Internally adjusts route check cache time, steer cache time, cache cell size, and avoidance sample count. [Synced with Server]
# Setting type: Single
# Default value: 50
# Acceptable value range: From 0 to 100
Dive AI Quality = 50

Git

The player diving implementation includes code derived and modified from UnderTheSea
https://github.com/searica/UnderTheSea
https://github.com/sighsorry1029/DiveIn

CHANGELOG

Version Update Notes
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 applies depth/run stamina drain multiplicatively.
1.0.5 - Added underwater visual config options
1.0.4 - DiveIn.yaml schema has changed. Delete your DiveIn.yaml and restart your game to regenerate it
- Added more creatures from other mods on 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 - First one was wrong dll sorry
1.0.0 - Initial Release