> For the complete documentation index, see [llms.txt](https://mango-5m.gitbook.io/mango5m-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mango-5m.gitbook.io/mango5m-docs/resources/mango-prison/features/intake-and-property.md).

# Intake & Property

The bus cinematic, booking, and property storage that never loses an item.

## The bus ride

Jailing a player fades them onto a prison bus already rolling through the facility. By default the ride is **locked to first person from your seat** — the view is forced before the fade ever lifts and held every frame, so not a single frame of third person shows — sitting among **NPC prisoners**, free to look around while the bus drives in. It's **skippable** (Backspace, a styled prompt), length-configurable, and fully disableable for servers that want an instant teleport.

```lua
Config.Intake.firstPerson  = true    -- false = the external tracking shot
Config.Intake.npcPrisoners = { count = 5, models = { `s_m_y_prisoner_01`, `s_m_y_prismuscl_01` } }
```

The cinematic is entirely client-local (non-networked bus and driver), so two players jailed at the same moment can never interfere with each other's ride.

With `Config.Cinematic.enabled` the ride is letterboxed — black bars slide in top and bottom for the duration, and the game HUD and minimap hide with them. The same bars are used for the medical bed scene and visitation booths; see [Medical & Visitation](/mango5m-docs/resources/mango-prison/configuration/medical-and-visitation.md).

## Booking

On arrival the prisoner receives:

* **Prison blues** — outfits per gender in `config/clothing.lua` (their own appearance is snapshotted first and restored on release)
* An **inmate number** — stable per character, shown as a badge on their notifications
* A **cell assignment** — least-occupied cell, or pick one in the jail call
* The **prisoner job** — their previous job is stored and restored on release
* The **booking photo** — see below

## Manual intake — bringing prisoners in yourself

`Config.Intake.manual.enabled` (**off** by default) turns the whole transport off. There is no bus and no automatic transfer: a sentenced player **stays exactly where they are**, cuffed and being escorted, and is told they are awaiting transfer. Corrections officers walk them to the prison themselves.

At the booking desk an officer gets a **Process inmate** option — a third-eye option on the desk, or a marker with `[E]` when no target resource is running. Processing takes the nearest **non-staff** player standing with them, runs the booking photo, and puts them in their cell.

If that person was never sentenced (no MDT, no `/jail`), processing asks the officer for the **sentence and charge** first — so this works with or without an MDT. If they were already sentenced, it just walks them in on the existing sentence.

```lua
Config.Intake.manual = {
    enabled = false,
    target  = vec3(1688.2393, 2587.6707, 45.7254),   -- third-eye position
    marker  = vec3(1689.0593, 2587.7671, 45.9106),   -- marker fallback
    useTarget = true,
    searchRadius   = 6.0,    -- how far to look for the person being booked
    askSentence    = true,
    defaultMinutes = 10,
}
```

{% hint style="info" %}
An undelivered prisoner is deliberately **not** put into prison mode — no boundary checks, no prisoner restrictions — because they are still out in the city with an officer, and the boundary would otherwise read that as an escape. The state survives disconnects and server restarts, so they cannot log out to skip the walk.
{% endhint %}

## The booking photo

Straight off the bus, GTA Online style: the new inmate is stood in the **mugshot room** (`Config.Mugshot.spot`) holding the police ID board, a printed placard shows the facility name, **their name, inmate number and the date**, the camera counts down **3‑2‑1** — flash.

The scene always plays. Whether a photo is *kept* depends on two optional pieces:

* **screenshot-basic** running — captures the frame (taken just before the flash, so the photo is the scene, not a white screen)
* a **Fivemanage API key** in `Config.Mugshot.fivemanageKey` — the server uploads the shot and files the URL on the inmate

With both in place the photo appears on the inmate's file in the terminal, CRT-tinted like everything else on that screen. Camera framing (`camDistance`, `camHeight`, `fov`) and the countdown length are all in `Config.Mugshot`.

{% hint style="warning" %}
`Config.Mugshot.spot` ships as a placeholder — stand in your mugshot room and capture the real spot with `/mpos` (the `w` is the direction the inmate faces, i.e. toward the camera).
{% endhint %}

## Property that can't be lost

At intake, everything the player carries is snapshotted to the database: items **with metadata**, weapons, cash (configurable) and appearance. [Contraband](/mango5m-docs/resources/mango-prison/configuration/items-and-commissary.md) is held, confiscated to evidence, or deleted per config.

On release everything comes back — with a capacity check. Anything that doesn't fit **stays stored** and returns on the next attempt. Visitor lockers use the same system, so even a visitor who crashes mid-visit gets their items back on next login.

## Restrictions while inside

* Weapons stripped and the weapon wheel blocked; anything picked up is re-stripped
* Vehicle entry blocked
* Crossing the outer wall without a completed escape drags the prisoner back with a write-up and behaviour hit (or flags them escaped — `Config.Restrictions.boundaryAction`)
* Dying respawns them **inside** the prison — at the medical point or their own cell ([Medical & Visitation](/mango5m-docs/resources/mango-prison/configuration/medical-and-visitation.md))

{% hint style="info" %}
Reconnecting, server restarts, being jailed offline, being released offline — every path is handled. Sentences use lazy time accounting against the database, so nothing desyncs.
{% endhint %}
