Gameplay
Buying gear
The dive NPC stands on the Vespucci Beach pier and exposes a single ox_target option that opens the Dive Shop. The shop sells four items:
| Item | Default price | Purpose |
|---|---|---|
scuba_tank | $2,500 | Wearable oxygen tank with metadata-tracked oxygen and durability |
tank_refill | $250 | Pressurised cartridge that tops a tank back to full and reduces durability by 1 |
WEAPON_CROWBAR | $500 | Pries open Medical crates |
diving_pick | $750 | Lockpicks Locked and Rare crates |
A scuba tank holds Config.Oxygen.maxOxygen (default 200). Each refill is one of Config.Tank.maxDurability charges (default 10). When durability hits zero the tank breaks and is consumed.
Equipping and refilling the tank
- Equip / remove — use the
scuba_tankitem from your inventory. Thediving:client:toggleTankhook fires, runs the equip animation, swaps the scuba clothing component on, and starts oxygen tracking. Use it again to remove. - Refill — use the
tank_refillitem while standing on solid ground (themustBeStandingnotification fires if you try it in water). Thediving:client:useRefillhook starts aConfig.Oxygen.refillTimeprogress bar (default 20s), then restores oxygen and decrements tank durability.
While submerged the tank drains by Config.Oxygen.drainAmount every Config.Oxygen.drainInterval ms. When it crosses warningThreshold (default 25%) a warning toast fires; at zero the player takes damageAmount HP every damageInterval ms until they surface or refill.
Renting a boat
The same NPC offers a boat rental for Config.Boat.price (default $500). On rental:
- The boat spawns at the configured spawn point in the water.
- Keys are issued via
qbx_vehiclekeys. - The boat is registered to the player in
diving_boatsand saved everyConfig.Boat.persistence.saveIntervalseconds.
| Action | Key |
|---|---|
| Toggle anchor | G (while in your rented boat) |
Boats persist across disconnects and restarts. Driving the boat to the return point (the rental dock) and using the NPC's return option ends the rental. Abandoned boats are auto-deleted after Config.Boat.persistence.maxAge seconds (default 2 hours).
Players are limited to one rented boat at a time — server-validated. Trying to rent a second one fires the boatAlready notification.
The 7 dive zones
All seven zones (Paleto Wreck, Procopio Beach, Chumash Reef, East Deep, Vespucci Shallows, Pacific South, Pacific East) are blipped on the map from the moment the player joins. There is no mission to start, no contract to accept — divers head out, drop in, and start hunting.
Crate hunting flow
- Spawn — on resource start, each zone gets 35–50 crates randomly drawn from its
spawnPointslist and randomly typed by tier weight. - Race — crates are shared world props. Multiple players can hit the same zone; whoever finds and opens a crate first gets the loot.
- Search — point ox_target at a crate, choose Search. A progress bar runs.
- Open mechanic — the bar resolves into the tier's open requirement (see below).
- Loot — successful opens roll the tier's loot table server-side and add items to the player.
- Respawn timer — the first crate searched in a zone arms a
Config.Crates.respawnTimer(default 1 hour) timer. When it elapses, all crates in that zone are cleared and a fresh batch spawns.
You can cancel a search mid-progress by pressing X.
The 4 crate tiers
| Tier | What you need | Failure mode | Typical loot |
|---|---|---|---|
| Regular | Nothing | None — opens free | Crafting salvage (iron, copper, plastic, glass...) |
| Medical | WEAPON_CROWBAR | Toast warns you it's missing; nothing consumed | Bandages, painkillers, first aid, ifaks, basic materials |
| Locked | diving_pick + a 3-stage easy/easy/medium lockpick minigame | Failed minigame ends the search; crate stays for another attempt | Mid-tier jewelry, street drugs, basic heist tools |
| Rare | diving_pick + a 3-stage medium/medium/hard lockpick minigame | Failed minigame destroys the crate — crateDestroyed toast fires and the crate is lost for everyone until respawn | Premium jewelry, hard drugs, advanced heist gear, security cards |
Loot rolls happen server-side. Clients never see the loot tables and depth is verified before each interaction is accepted.
Hazards
While diving you may encounter three ambient hazards. All are configured per-zone in Configuration.
- Currents — invisible push fields that drag the diver along a direction vector and increase oxygen drain when you swim against them. Watch for pull on your character and plan the dive accordingly.
- Low-visibility zones — fog density spikes inside a configured radius, cutting how far you can see. Common around deep zones; bring a tank with extra refill room.
- Sharks (off by default) — patrol packs that aggro at
aggroRange(default 15m) and dealattackDamageper hit on aattackCooldown(default 5s). Hitting one with the configuredscareItem(defaultWEAPON_CROWBAR) drives it off. ThesharkNearbywarning toast fires when one notices you.
Quick controls reference
| Action | How |
|---|---|
| Equip / remove scuba tank | Use scuba_tank in inventory |
| Refill scuba tank | Use tank_refill in inventory (must be on land) |
| Toggle boat anchor | G (in rented boat) |
| Cancel crate search | X (during progress bar) |
| Interact with NPC / crates | ox_target (look at target) |