feat: Warnung vor der Druck-Grenze der Engine
Lint / Lint Resource (push) Has been cancelled

GTA toetet selbst ab einer bestimmten Tiefe ueber den Wasserdruck - beim U-Boot
bei rund 150 m mit Implosion ab ~168 m, zu Fuss verliert man ebenfalls Leben.
Dagegen hilft kein Atemgas, das ist die Engine.

Deshalb dafuer nur eine Warnung statt eigener Effekte, konservativ auf 130 m mit
20 m Vorwarnung, beides in config.narcosis. Trimix hoert mit 100 m bewusst
darueber auf; dazwischen liegt die Zone, in der keine Ausruestung mehr hilft.

Der genaue Wert fuer Taucher zu Fuss ist nicht belegt und steht als Testpunkt in
TESTING.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 09:13:55 +02:00
co-authored by Claude Opus 5
parent e5f47610a1
commit f88f7bf002
6 changed files with 45 additions and 2 deletions
+15
View File
@@ -59,6 +59,7 @@ end
local narcosisStage = 0
local narcosisWarned = false
local narcosisDamageBuffer = 0.0
local engineDepthWarned = false
--- Wie weit die aktuelle Tiefe unter der Grenze der getragenen Flasche liegt.
--- @return number Meter unterhalb der Grenze, negativ solange alles gut ist
@@ -251,6 +252,7 @@ local function removeGear(outOfAir, immediateSync)
warned = {}
narcosisWarned = false
narcosisDamageBuffer = 0.0
engineDepthWarned = false
deleteGear()
disableScuba(outOfAir)
@@ -457,6 +459,19 @@ end
local function updateNarcosis(elapsed)
if not config.narcosis.enabled then return end
-- Die Engine tötet ab einer bestimmten Tiefe über den Wasserdruck. Dagegen hilft
-- kein Atemgas, deshalb warnt das hier unabhängig von der Flasche.
local engineWarnAt = config.narcosis.engineDepthLimit - config.narcosis.engineWarnBeforeMeters
if currentDepth >= engineWarnAt then
if not engineDepthWarned then
engineDepthWarned = true
exports.qbx_core:Notify(locale('error.crush_depth', math.floor(config.narcosis.engineDepthLimit)), 'error')
end
else
engineDepthWarned = false
end
local over = getDepthOverLimit()
local stages = config.narcosis.stages
local stage = 0