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:
@@ -169,6 +169,8 @@ FiveM* umlegbar.
|
||||
|---|---|---|
|
||||
| `enabled` | `true` | Komplett abschaltbar |
|
||||
| `warnBeforeMeters` | `5.0` | Vorwarnung so viele Meter vor der Grenze |
|
||||
| `engineDepthLimit` | `130.0` | Tiefe, ab der **das Spiel selbst** über den Wasserdruck tötet — dagegen hilft keine Flasche |
|
||||
| `engineWarnBeforeMeters` | `20.0` | Vorwarnung davor |
|
||||
| `stages` | 3 Stufen | Pro Stufe: `over` (Meter unter der Grenze), `timecycle` + `strength`, `shake` + `shakeIntensity`, `drainFactor`, `damagePerTick` |
|
||||
|
||||
**HUD**
|
||||
@@ -235,6 +237,17 @@ Effekte, Stärke, Verbrauchsaufschlag, Schaden. `enabled = false` schaltet es ga
|
||||
> Die `timecycle`-Namen sind Spiel-Effekte, keine Natives. Existiert einer nicht,
|
||||
> passiert einfach nichts — dann einen anderen eintragen.
|
||||
|
||||
### Die Grenze der Engine
|
||||
|
||||
Unabhängig von allem hier tötet **GTA selbst** ab einer bestimmten Tiefe über den
|
||||
Wasserdruck — beim U-Boot liegt die Grenze bei rund 150 m mit Implosion ab ~168 m,
|
||||
zu Fuß verliert man ebenfalls Leben. Dagegen hilft kein Atemgas, das ist die
|
||||
Engine und nicht dieses Script.
|
||||
|
||||
Deshalb gibt es dafür nur eine Warnung (`engineDepthLimit`, konservativ auf 130 m),
|
||||
und Trimix hört mit 100 m bewusst darüber auf. Der Bereich zwischen den beiden ist
|
||||
die Zone, in der keine Ausrüstung mehr hilft.
|
||||
|
||||
## Exports
|
||||
|
||||
```lua
|
||||
|
||||
@@ -70,6 +70,10 @@ kommt, in `config/client.lua` unter `narcosis.stages` einen anderen eintragen.*
|
||||
- [ ] ❓ 🟡 Sterben im Tiefenrausch → Effekte weg, kein Timecycle bleibt hängen
|
||||
- [ ] ❓ 🟡 `ensure d4rk_divegear` im Tiefenrausch → Effekte weg
|
||||
- [ ] 🟢 Auswahlmenü zeigt Gas und Tiefengrenze pro Flasche
|
||||
- [ ] ❓ 🟡 Auf ~110 m → Warnung „Lebensgefahr! Ab 130 m zerdrückt dich der
|
||||
Wasserdruck." *Das ist die Engine-Grenze, dagegen hilft keine Flasche*
|
||||
- [ ] ❓ 🟢 Prüfen, ab welcher Tiefe GTA tatsächlich Leben abzieht, und
|
||||
`engineDepthLimit` darauf einstellen
|
||||
- [ ] 🟢 `narcosis.enabled = false` → nichts davon passiert
|
||||
|
||||
## 6 · HUD
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -73,6 +73,15 @@ return {
|
||||
--- Wie viele Meter *vor* der Grenze schon gewarnt wird.
|
||||
warnBeforeMeters = 5.0,
|
||||
|
||||
--- Tiefe, ab der das Spiel selbst den Spieler über den Wasserdruck tötet.
|
||||
--- Dagegen hilft keine Flasche - das ist die Engine, nicht dieses Script.
|
||||
--- Deshalb hier nur eine Warnung, kein eigener Effekt.
|
||||
--- Referenz: das U-Boot geht bis ~150 m und implodiert ab ~168 m; zu Fuß
|
||||
--- verliert man ebenfalls Leben, sobald es zu tief wird. Der Wert ist
|
||||
--- bewusst konservativ - notfalls anpassen.
|
||||
engineDepthLimit = 130.0,
|
||||
engineWarnBeforeMeters = 20.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.
|
||||
|
||||
+2
-1
@@ -7,7 +7,8 @@
|
||||
"tank_empty": "Diese Tauchflasche ist leer!",
|
||||
"tank_already_full": "Diese Tauchflasche ist bereits voll!",
|
||||
"out_of_air": "Deine Luft ist alle! Sofort auftauchen!",
|
||||
"no_lamp_on_outfit": "Deine Tauchausrüstung hat keine Lampe."
|
||||
"no_lamp_on_outfit": "Deine Tauchausrüstung hat keine Lampe.",
|
||||
"crush_depth": "Lebensgefahr! Ab %d m zerdrückt dich der Wasserdruck."
|
||||
},
|
||||
"success": {
|
||||
"took_out": "Du hast deine Ausrüstung abgelegt!",
|
||||
|
||||
+2
-1
@@ -7,7 +7,8 @@
|
||||
"tank_empty": "This air tank is empty!",
|
||||
"tank_already_full": "This air tank is already full!",
|
||||
"out_of_air": "You're out of air! Surface now!",
|
||||
"no_lamp_on_outfit": "Your diving suit doesn't have a lamp."
|
||||
"no_lamp_on_outfit": "Your diving suit doesn't have a lamp.",
|
||||
"crush_depth": "Danger! Below %d m the water pressure will crush you."
|
||||
},
|
||||
"success": {
|
||||
"took_out": "You've taken your gear off!",
|
||||
|
||||
Reference in New Issue
Block a user