> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cc-scripts.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Heist module: registers the Pacific Bank contract with cc_heistcontracts.

`cc_pacificheist` is a heist module that plugs into [cc\_heistcontracts](/cc_heistcontracts/index). It registers a single contract — **Pacific Bank Heist** — at the Pacific Standard Bank in downtown Los Santos. The run includes jammers, lasers, thermite, a manager ped, and multiple loot rooms.

Everything in this page is a **default**. All of it lives in plain Lua files in `shared/` and is meant to be edited.

## Required items

Players need these in their inventory before the dashboard will let them press **Start**. The list lives in `shared/contract.lua` under `itemsRequired` — add, remove, or change quantities freely.

| Item id                        | Inventory label  | Default role in the run        |
| ------------------------------ | ---------------- | ------------------------------ |
| `laptop_elite`                 | BlackBook Mk-III | Vault panel + loot room cracks |
| `signal_jammer`                | Signal Jammer    | Three placements (qty 3)       |
| `thermite`                     | Thermite Charge  | Vault door cuts                |
| `electric_drill`               | Cordless Drill   | Lockers                        |
| `weapon_digiscanner` (weapon)  | Digiscanner      | Note search / signal sweep     |
| `weapon_assaultrifle` (weapon) | Assault Rifle    | Required loadout               |

These items all need to exist in your ox\_inventory (or equivalent) items list — see the [installation guide](/cc_pacificheist/installation).

## Contract defaults

Defined in `shared/contract.lua`. Every field is editable.

| Field           | Default                     | What it does                                   |
| --------------- | --------------------------- | ---------------------------------------------- |
| `id`            | `pacific_heist`             | Internal contract id                           |
| `difficulty`    | `hard`                      | Display tag in the dashboard                   |
| `weight`        | `0.2`                       | Rarity weight for marketplace drips (rare)     |
| `levelRequired` | `5`                         | Minimum heist level to purchase                |
| `price`         | `2500`                      | VICE cost to buy the slot                      |
| `crewSize`      | `{ min = 2, max = 4 }`      | Crew size bounds                               |
| `duration`      | `1200`                      | Soft cap in seconds before the slot auto-fails |
| `cooldown`      | `1800`                      | Server-wide cooldown after each completion     |
| `reward`        | `{ vice = 1500, xp = 250 }` | Credited automatically on success              |
| `locations`     | 1                           | `pacific` — Pacific Standard Bank              |

Coordinates, doors, cameras, jammer points, and note spawn pool live in `shared/location.lua` and `shared/configuration/`. All editable.

## Loot table

`shared/rewards.lua` defines the global loot. When `cfg.use_global_loot_table = true` (default), each category's rolled total is split across every unit across every loot room.

```lua theme={null}
return {
    lockers = {
        { type = 'item', item = 'black_money', amount = { min = 1000, max = 2000 } },
        { type = 'money',                       amount = { min = 1000, max = 2000 } },
    },
    trolleys = {
        { type = 'item', item = 'black_money', amount = { min = 1000, max = 2000 } },
        { type = 'money',                       amount = { min = 1000, max = 2000 } },
    },
}
```

Set `cfg.use_global_loot_table = false` to define loot per-unit inside `shared/location.lua`.

## Other tunables

`shared/config.lua`:

| Field                                  | Default                      | What it does                                                            |
| -------------------------------------- | ---------------------------- | ----------------------------------------------------------------------- |
| `cfg.use_global_loot_table`            | `true`                       | If `false`, expects per-unit `rewards`                                  |
| `cfg.enable_task_list`                 | `true`                       | Show the TaskUI panel during the run                                    |
| `cfg.debug`                            | `false`                      | Bypasses gates and logs verbosely                                       |
| `cfg.jammer.drainSeconds`              | `90`                         | 100% → 0% drain time without a maintain                                 |
| `cfg.jammer.bumpAmount`                | `40`                         | +% signal restored per successful maintain                              |
| `cfg.jammer.beepWarn` / `beepCritical` | `40` / `20`                  | Beep thresholds                                                         |
| `cfg.maintain_timer`                   | `300`                        | Per-jammer maintain cooldown (seconds)                                  |
| `cfg.enable_manager`                   | `true`                       | Spawn the armed bank manager (`IG_Avery` with a pistol)                 |
| `cfg.dispatch_on_laser_hit`            | `true`                       | Trip a police alert when a laser is broken                              |
| `cfg.dispatch`                         | `function(location) ... end` | Police alert payload — replace to integrate with your dispatch resource |

## Streamed assets

The custom signal-jammer props ship under `stream/` and are pulled in by `data_file 'DLC_ITYP_REQUEST' 'stream/cc_jammer.ytyp'` in `fxmanifest.lua`. Don't remove `stream/` — without it the jammers won't render.

## Dependencies

* [`cc_heistcontracts`](/cc_heistcontracts/index)
* [`cc_lib`](/cc_lib/index) — TaskUI, Groups, Inventory, Target, Notification, Dispatch wrappers
* `ox_lib`, `oxmysql`
* A police job framework that responds to `cc.Dispatch.Alert`
