Diving
Gameplay

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:

ItemDefault pricePurpose
scuba_tank$2,500Wearable oxygen tank with metadata-tracked oxygen and durability
tank_refill$250Pressurised cartridge that tops a tank back to full and reduces durability by 1
WEAPON_CROWBAR$500Pries open Medical crates
diving_pick$750Lockpicks 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_tank item from your inventory. The diving:client:toggleTank hook fires, runs the equip animation, swaps the scuba clothing component on, and starts oxygen tracking. Use it again to remove.
  • Refill — use the tank_refill item while standing on solid ground (the mustBeStanding notification fires if you try it in water). The diving:client:useRefill hook starts a Config.Oxygen.refillTime progress 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_boats and saved every Config.Boat.persistence.saveInterval seconds.
ActionKey
Toggle anchorG (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

  1. Spawn — on resource start, each zone gets 35–50 crates randomly drawn from its spawnPoints list and randomly typed by tier weight.
  2. Race — crates are shared world props. Multiple players can hit the same zone; whoever finds and opens a crate first gets the loot.
  3. Search — point ox_target at a crate, choose Search. A progress bar runs.
  4. Open mechanic — the bar resolves into the tier's open requirement (see below).
  5. Loot — successful opens roll the tier's loot table server-side and add items to the player.
  6. 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

TierWhat you needFailure modeTypical loot
RegularNothingNone — opens freeCrafting salvage (iron, copper, plastic, glass...)
MedicalWEAPON_CROWBARToast warns you it's missing; nothing consumedBandages, painkillers, first aid, ifaks, basic materials
Lockeddiving_pick + a 3-stage easy/easy/medium lockpick minigameFailed minigame ends the search; crate stays for another attemptMid-tier jewelry, street drugs, basic heist tools
Rarediving_pick + a 3-stage medium/medium/hard lockpick minigameFailed minigame destroys the crate — crateDestroyed toast fires and the crate is lost for everyone until respawnPremium 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 deal attackDamage per hit on a attackCooldown (default 5s). Hitting one with the configured scareItem (default WEAPON_CROWBAR) drives it off. The sharkNearby warning toast fires when one notices you.

Quick controls reference

ActionHow
Equip / remove scuba tankUse scuba_tank in inventory
Refill scuba tankUse tank_refill in inventory (must be on land)
Toggle boat anchorG (in rented boat)
Cancel crate searchX (during progress bar)
Interact with NPC / cratesox_target (look at target)