# Pumpjack

File: `data/hbm/hbm/machine_config/pumpjack.json`. Settings load when the world opens. See [Datapack Settings](https://movblock.mov/ntm-next/26.3/wiki/settings.md) for replacement behavior.

The `*_multiplier` fields apply to fluid reserves added by an addon. [NTM Space](https://movblock.mov/ntm-next/26.3/wiki/space.md) supplies its celestial oil and gas deposits and gives NTM's oil deposits Kerbin's reserve values. Other deposits use the per-deposit fields.

## Fields

| Field | Meaning and default | Range |
| - | - | - |
| `delay` | Ticks between extraction attempts; default `25`. | `[1, i32::MAX]` |
| `drain_chance` | Probability that an extraction depletes its deposit; default `0.025`. | `[0, 1]` |
| `drain_chance_multiplier` | Multiplies a fluid reserve's own drain chance; default `0.5`. | `[0, f64::MAX]` |
| `gas_multiplier` | Multiplies the secondary fluid taken from a fluid reserve; default `0.5`. The result is truncated to whole mB. | `[0, f64::MAX]` |
| `gas_per_deposit_max` | Maximum gas extracted per deposit operation, in mB; default `250`. | `[0, i32::MAX]` |
| `gas_per_deposit_min` | Minimum gas extracted per deposit operation, in mB; default `50`. | `[0, i32::MAX]` |
| `oil_multiplier` | Multiplies the primary fluid taken from a fluid reserve; default `1.5`. The result is truncated to whole mB. | `[0, f64::MAX]` |
| `oil_per_deposit` | Oil extracted per deposit operation, in mB; default `750`. | `[0, i32::MAX]` |
| `power_capacity` | Machine HE buffer capacity; default `250000`. | `[0, i32::MAX]` |
| `power_consumption` | Base HE consumption during operation; default `200`. | `[0, i32::MAX]` |

Validation requires $0 \le \mathrm{gas\_per\_deposit\_max} - \mathrm{gas\_per\_deposit\_min} < \texttt{i32::MAX}$.

## Example

```json
{
  "delay": 25,
  "drain_chance": 0.025,
  "drain_chance_multiplier": 0.5,
  "gas_multiplier": 0.5,
  "gas_per_deposit_max": 250,
  "gas_per_deposit_min": 50,
  "oil_multiplier": 1.5,
  "oil_per_deposit": 750,
  "power_capacity": 250000,
  "power_consumption": 200
}
```
