feat: Flaschengroessen mit echter Laufzeit und persistenter Restluft
Lint / Lint Resource (push) Has been cancelled
Lint / Lint Resource (push) Has been cancelled
Der Sauerstoff war eine lokale Client-Variable: nicht persistent, an kein Item gebunden, weg bei Relog. Dazu ergab startingOxygenLevel=100 bei decayRate=1/s genau 100 Sekunden Tauchzeit statt Minuten. Sauerstoff-Logik: - Restsekunden statt Punkte, Verbrauch ueber GetGameTimer-Delta statt gezaehlter Wait(1000) - ein Tick laeuft unter Last laenger als eine Sekunde, was sich ueber einen langen Tauchgang aufsummiert - Float-Vergleiche (oxygenLevel % 10 == 0, == 0) raus, Warnschwellen als config.warnAtSeconds, jede Schwelle einmal pro Tauchgang - Verbrauch steigt mit der Tiefe (1 + tiefe/30, gedeckelt), abschaltbar - Anzeige als mm:ss Flaschen: - Vier Items mit capacity in Sekunden (300/600/900/1200) in config/shared.lua - Restluft in metadata.oxygen, Fuellstand zusaetzlich in metadata.durability, damit der Balken direkt im Inventar-Slot sichtbar ist - Kein decay auf den Items: ox_inventory loescht sonst die leere Flasche - Auswahlmenue beim Anlegen und Auffuellen (entfaellt bei nur einer Flasche) - diving_fill fuellt bis capacity statt auf einen Fixwert, verweigert volle Flaschen und verbraucht sich nur bei Erfolg - items_for_ox_inventory.lua zum Reinkopieren Server: - getTanks/syncTank als Callbacks, Restluft kann nur sinken und nicht schneller als maxDrainPerSecond pro echter Sekunde - SetMetadata ersetzt die Metadata-Tabelle komplett, daher wird der bestehende Inhalt kopiert statt nur oxygen gesetzt Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+17
-6
@@ -1,19 +1,30 @@
|
||||
return {
|
||||
startingOxygenLevel = 100,
|
||||
putOnSuitTimeMs = 5000,
|
||||
takeOffSuitTimeMs = 5000,
|
||||
refillTankTimeMs = 5000,
|
||||
decayRate = 1, -- The rate at which the oxygen level decays. Defaults to 1.
|
||||
|
||||
-- Intervall des Watchdogs, der prüft ob die Ausrüstung noch am Ped hängt (ms).
|
||||
--- Sekunden Luft, die pro echter Sekunde verbraucht werden (vor dem Tiefenfaktor).
|
||||
decayRate = 1.0,
|
||||
|
||||
--- Intervall des Watchdogs, der prüft ob die Ausrüstung noch am Ped hängt (ms).
|
||||
gearWatchdogIntervalMs = 1000,
|
||||
|
||||
-- Sekunden, die der Spieler ohne Ausrüstung unter Wasser überlebt (Vanilla-Verhalten).
|
||||
--- Sekunden, die der Spieler ohne Ausrüstung unter Wasser überlebt (Vanilla-Verhalten).
|
||||
maxTimeUnderwater = 50.0,
|
||||
|
||||
-- Sekunden, sobald die Flasche leer ist. Bewusst kurz: leer tauchen soll wehtun.
|
||||
--- Sekunden, sobald die Flasche leer ist. Bewusst kurz: leer tauchen soll wehtun.
|
||||
maxTimeUnderwaterOutOfAir = 1.0,
|
||||
|
||||
-- Ausrüstung beim Tod abnehmen. Die Flasche bleibt mit ihrer Restluft im Inventar.
|
||||
--- Ausrüstung beim Tod abnehmen. Die Flasche bleibt mit ihrer Restluft im Inventar.
|
||||
removeGearOnDeath = true,
|
||||
|
||||
--- Restsekunden, bei denen gewarnt wird. Jede Schwelle löst einmal pro Tauchgang aus.
|
||||
warnAtSeconds = { 60, 30, 10 },
|
||||
|
||||
--- Verbrauch steigt mit der Tiefe: faktor = 1 + tiefe / depthDecayReference.
|
||||
--- Macht die großen Flaschen erst sinnvoll. Auf false = konstanter Verbrauch,
|
||||
--- dann stimmen die 5/10/15/20 Minuten exakt.
|
||||
depthDecayEnabled = true,
|
||||
depthDecayReference = 30.0,
|
||||
maxDecayFactor = 4.0,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user