Files
d4rk_divegear/config/shared.lua
D4rkst3randClaude Opus 5.5 c2c5483c87 feat: Taucherflasche und Maske fuer Modell f
Gemessen 29.09.2026 (Betreiber): Flasche mp_f_christmas2017:1 (c:8), Maske
mp_f_christmas2017:0 (p:1) - wie m. d4rk_garment-Zeilen mit /tauchartikel
angelegt (39, 40).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 00:33:55 +02:00

97 lines
5.3 KiB
Lua

-- Von Client und Server benutzt. Muss in fxmanifest unter files{} stehen,
-- damit lib.require die Datei auf beiden Seiten laden kann.
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, 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
},
--- SEIT 28.09.2026 SIND FLASCHE UND MASKE KLEIDUNG (plan-divegear.md).
--- Betreiber: "die Prop flasche zu einer richtigen taucherfalsche + maske
--- welche wir im kleider laden kaufen koennen", und "die flaschen groessen
--- soll man an der normalen taucherfalsche austauschen koennen".
---
--- rigItem die Taucherflasche aus dem Kleiderladen (d4rk_garment -> item).
--- Sie traegt die eingesetzte Patrone in der Metadata:
--- patrone = Name aus tanks (unten), oxygen = Restsekunden.
--- maskItem die Tauchmaske aus dem Kleiderladen.
--- rigSlot / maskSlot wo sie getragen werden - d4rk_inventory
--- shared/d4rk_slots.lua:71-96. GEMESSEN am 29.09.2026 mit
--- /d4rk_kleidungsstand (Betreiber, Modell m):
--- Flasche m:c:8:mp_m_christmas2017:1 -> 31 Unterhemd (Komponente 8)
--- Maske m:p:1:mp_m_christmas2017:0 -> 27 Brille (PROP 1, nicht
--- die Maskenkomponente 1 - angenommen war Slot 29)
---
--- Die fuenf `tanks` sind jetzt PATRONEN: Items im Inventar, die man an der
--- getragenen Flasche tauscht (Patrone benutzen). Die alten Props und das
--- Item diving_gear gibt es nicht mehr.
rigItem = 'diving_tank',
maskItem = 'diving_mask',
rigSlot = 31,
maskSlot = 27,
--- Die Kleidungsstuecke im Kleiderladen, die statt `clothing` das Item
--- ausgeben (d4rk_garment.item, angelegt mit /tauchartikel). drawable ist
--- der LOKALE Index in der Sammlung, texture -1 = alle Farben.
--- Weiblich (f) gemessen am 29.09.2026 (Betreiber): dieselben Sammlungen und
--- Indizes wie m - Flasche mp_f_christmas2017:1, Maske mp_f_christmas2017:0.
kleidung = {
{ pedset = 'm', komponente = 'c:8', collection = 'mp_m_christmas2017', drawable = 1, item = 'diving_tank' },
{ pedset = 'm', komponente = 'p:1', collection = 'mp_m_christmas2017', drawable = 0, item = 'diving_mask' },
{ pedset = 'f', komponente = 'c:8', collection = 'mp_f_christmas2017', drawable = 1, item = 'diving_tank' },
{ pedset = 'f', komponente = 'p:1', collection = 'mp_f_christmas2017', drawable = 0, item = 'diving_mask' },
},
--- Das Fuell-Item. NICHT ANGELEGT: Nachfuellen kommt spaeter ueber einen
--- Shop oder Crafting (Betreiber, 28.09.2026). Der Weg bleibt stehen, damit
--- er sich dort anhaengen laesst - ohne das Item ist er nie erreichbar.
fillItem = 'diving_fill',
--- Flaschen ohne Metadata als voll behandeln. Betrifft alles, was frisch aus
--- einem Shop, per AddItem oder aus einem Admin-Befehl kommt - da ist noch kein
--- oxygen gesetzt. Auf false muss jede neue Flasche erst mit einer Kartusche
--- befüllt werden, bevor man damit tauchen kann.
newTanksFull = true,
--- Wie oft der Client die Restluft an den Server meldet (Sekunden).
--- Bei einem Crash gehen maximal so viele Sekunden Luft verloren.
syncIntervalSeconds = 15,
--- Obergrenze für die serverseitige Plausibilitätsprüfung: so viele Sekunden
--- Luft kann ein Spieler höchstens pro echter Sekunde verbrauchen. Muss über
--- maxDecayFactor aus config/client.lua liegen, sonst wird ehrlichen Spielern
--- in großer Tiefe fälschlich Luft zurückgegeben.
maxDrainPerSecond = 5.0,
}
config.tankByName = {}
config.tankNames = {}
for i = 1, #config.tanks do
local tank = config.tanks[i]
config.tankByName[tank.name] = tank
config.tankNames[i] = tank.name
end
return config