feat: Tiefengrenze ueber das Atemgas
Lint / Lint Resource (push) Has been cancelled

Macht ein Tiefenlimit mechanisch statt zur Absprache - und oeffnet die tiefen
Spots fuer den, der die richtige Flasche dabei hat.

Der Grund fuer die realen 40-45 m ist nicht der Druck, sondern der Stickstoff in
der Pressluft: tiefer wirkt er narkotisch, ab ~56 m wird auch der Sauerstoff
giftig. Wer tiefer will, atmet Trimix, wo Helium einen Teil des Stickstoffs
ersetzt. Genau so umgesetzt:

- maxDepth und gas pro Flasche in config/shared.lua; Pressluft 45 m,
  neues diving_tank_trimix 100 m
- Darunter Tiefenrausch in drei Stufen: Bildschirmeffekt, Kamerawackeln,
  hoeherer Luftverbrauch, in der letzten Stufe Schaden. Schwellen, Effekte,
  Staerken und Schaden komplett in config.narcosis
- Vorwarnung 5 m vor der Grenze, Tiefenanzeige im HUD wird rot und pulsiert
- Effekte werden beim Auftauchen, Ablegen, Tod und Resource-Stop aufgeraeumt
- Auswahlmenue zeigt Gas und Tiefengrenze pro Flasche
- Icon fuer die Trimix-Flasche, violett abgesetzt

Keine Dekompression - auf Wunsch bewusst weggelassen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 09:11:12 +02:00
co-authored by Claude Opus 5
parent e8ffe8870d
commit e5f47610a1
20 changed files with 315 additions and 32 deletions
+51
View File
@@ -59,6 +59,57 @@ return {
--- Ab dieser Tiefe wird die Tiefenanzeige eingefärbt (Meter).
deepWarningDepth = 25.0,
---------------------------------------------------------------------------
-- Tiefenrausch
---------------------------------------------------------------------------
-- Macht die Tiefengrenze mechanisch statt zur Absprache: unterhalb der
-- maxDepth der getragenen Flasche (config/shared.lua) wird es ungemütlich.
-- Mit Pressluft ab 45 m, mit Trimix erst ab 100 m - wer die tiefen Spots
-- sehen will, braucht also die richtige Flasche.
narcosis = {
enabled = true,
--- Wie viele Meter *vor* der Grenze schon gewarnt wird.
warnBeforeMeters = 5.0,
--- Stufen, sobald die Grenze überschritten ist. `over` = Meter unterhalb
--- der maxDepth der Flasche. Es gilt jeweils die höchste erreichte Stufe,
--- die Reihenfolge muss also aufsteigend sein.
---
--- timecycle Bildschirmeffekt. Namen sind Timecycle-Modifier des
--- Spiels, keine Natives - falls einer nicht existiert,
--- passiert einfach nichts. Alternativen zum Ausprobieren:
--- 'drug_flying_base', 'drug_deadman', 'REDMIST',
--- 'spectator5'. Auf nil = kein Effekt.
--- strength 0.0 bis 1.0
--- shake Kamerawackeln, z.B. 'DRUNK_SHAKE', 'SKY_DIVING_SHAKE'.
--- Auf nil = kein Wackeln.
--- shakeIntensity Stärke des Wackelns
--- drainFactor Faktor auf den Luftverbrauch (Stress atmet mehr)
--- damagePerTick Schaden pro Sekunde. 0 = kein Schaden.
stages = {
{
over = 0.0,
timecycle = 'drug_wobbly', strength = 0.3,
shake = nil, shakeIntensity = 0.0,
drainFactor = 1.5, damagePerTick = 0
},
{
over = 10.0,
timecycle = 'drug_wobbly', strength = 0.7,
shake = 'DRUNK_SHAKE', shakeIntensity = 0.3,
drainFactor = 2.0, damagePerTick = 0
},
{
over = 20.0,
timecycle = 'drug_wobbly', strength = 1.0,
shake = 'DRUNK_SHAKE', shakeIntensity = 0.8,
drainFactor = 3.0, damagePerTick = 2
},
},
},
--- Reservedruck in bar. Darunter wird die Druckanzeige eingefärbt - in der
--- Tauchpraxis die Schwelle, ab der man den Aufstieg einleitet.
reservePressure = 50,
+13 -4
View File
@@ -3,18 +3,27 @@
local config = {
--- Tauchflaschen.
---
--- capacity = Laufzeit in Sekunden bei normalem Verbrauch.
--- pressure = Fülldruck in bar. Reine Anzeige: der angezeigte Druck ist
--- pressure * (Restluft / capacity). Bei konstantem Volumen ist der
--- Druck proportional zur verbliebenen Gasmenge, das passt also.
--- Dass alle Flaschen denselben Fülldruck haben ist gewollt - in echt
--- macht das Volumen die Laufzeit, nicht der Druck.
--- maxDepth = Tiefe in Metern, bis zu der das Atemgas verträglich ist.
--- Darunter setzt Tiefenrausch ein (siehe narcosis in config/client.lua).
--- Der Grund ist real der Stickstoff in der Pressluft: tiefer wirkt er
--- narkotisch, und ab ~56 m wird auch der Sauerstoff giftig. Wer tiefer
--- will, atmet Trimix - dort ersetzt Helium einen Teil des Stickstoffs.
--- gas = Nur fürs Auswahlmenü, damit man die Flaschen unterscheiden kann.
---
--- Reihenfolge = Reihenfolge im Auswahlmenü.
tanks = {
{ name = 'diving_tank_small', capacity = 300, pressure = 300 }, -- 5 Minuten
{ name = 'diving_tank_medium', capacity = 600, pressure = 300 }, -- 10 Minuten
{ name = 'diving_tank_large', capacity = 900, pressure = 300 }, -- 15 Minuten
{ name = 'diving_tank_xl', capacity = 1200, pressure = 300 }, -- 20 Minuten
{ name = 'diving_tank_small', capacity = 300, pressure = 300, maxDepth = 45.0, gas = 'Pressluft' }, -- 5 Minuten
{ name = 'diving_tank_medium', capacity = 600, pressure = 300, maxDepth = 45.0, gas = 'Pressluft' }, -- 10 Minuten
{ name = 'diving_tank_large', capacity = 900, pressure = 300, maxDepth = 45.0, gas = 'Pressluft' }, -- 15 Minuten
{ name = 'diving_tank_xl', capacity = 1200, pressure = 300, maxDepth = 45.0, gas = 'Pressluft' }, -- 20 Minuten
{ name = 'diving_tank_trimix', capacity = 900, pressure = 300, maxDepth = 100.0, gas = 'Trimix' }, -- 15 Minuten, tieftauglich
},
--- Flaschen ohne Metadata als voll behandeln. Betrifft alles, was frisch aus