Skip to main content
cc_fleecaheist is a heist module that plugs into cc_heistcontracts. It registers a single contract — Fleeca Bank Heist — with six branch locations and hands runtime control of the run to cc_heistcontracts (slot economy, marketplace listing, VICE/XP rewards). 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 idInventory labelDefault role in the run
hacking_deviceDataJackPower box, cameras, computers
laptop_cheapRefurb LiteBookVault panel
electric_drillCordless DrillLockers & trolleys
weapon_pistol (weapon)PistolRequired loadout
These items all need to exist in your ox_inventory (or equivalent) items list — see the installation guide.

Contract defaults

Defined in shared/contract.lua. Every field is editable.
FieldDefaultWhat it does
idfleeca_heistInternal contract id (don’t rename mid-season)
difficultyeasyDisplay tag in the dashboard
weight1.0Rarity weight when the marketplace drips new listings
levelRequired1Minimum heist level to purchase
price2500VICE cost to buy the slot
crewSize{ min = 2, max = 4 }Crew size bounds
duration1200Soft cap in seconds before the slot auto-fails
cooldown1800Server-wide cooldown after each completion
reward{ vice = 1500, xp = 250 }Credited automatically on success
requiredPolice{ jobs = { 'police' }, count = 2 }On-duty officer gate — set count = 0 to disable
locations6 branchesPinkcage, Del Perro, Great Ocean Hwy, Harmony, Hawick, Legion Square
Drop locations out of the locations array to disable specific branches. Per-branch coordinates and task points live in shared/locations/<id>.lua.

Loot table

shared/rewards.lua defines the global loot. When cfg.use_global_loot_table = true (the default in shared/config.lua), each category’s rolled total is split across every unit in that category — e.g. a black_money roll of 1,500 across 3 lockers gives 500 each.
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 each branch file under shared/locations/.

Other tunables

shared/config.lua:
FieldDefaultWhat it does
cfg.use_global_loot_tabletrueIf false, expects per-unit rewards on each loot point
cfg.enable_task_listtrueShow the TaskUI panel during the run
cfg.debugfalseBypasses gates (incl. police count) and logs verbosely
cfg.dispatchfunction(location) ... endPolice alert payload — replace to integrate with your dispatch resource

Dependencies

  • cc_heistcontracts — registers the contract and owns the slot economy
  • cc_lib — TaskUI, Groups, Inventory, Target, Notification, Dispatch wrappers
  • ox_lib, oxmysql
  • A police job framework that responds to cc.Dispatch.Alert (default jobs: police, trooper, sheriff)