# Vacuum Solderer

Solders wafers and circuit parts in a near vacuum.

The Vacuum Solderer works only where the atmosphere pressure is at most 0.001 atm, or where no atmosphere is recorded. It uses the first row in table order whose `input_items` match slots 0–1 and whose `pcb` match slots 2–3. Each slot claims the first unclaimed ingredient its stack matches with enough items, and every ingredient must be claimed, so a group with more than two entries never matches. Slots 0–1 accept items of any row's `input_items`, slots 2–3 those of any `pcb`, and two slots of one group never hold the same item.

## Fields

| Field | Meaning and default | Range |
| - | - | - |
| `type` | Selects the `hbmspace:vacuum_circuit` recipe format. | |
| `name` (Optional) | Internal lookup name; defaults to the last segment of the recipe resource path. | |
| `output_items` | Fixed or weighted item-output positions; defaults to an empty list. | |
| `output_items.item ID` | Fixed output: String form for one item. | |
| `output_items.id` | Item ID in a stack object. | |
| `output_items.count` (Optional) | Stack size; default 1. | `[1, 99]` |
| `output_items.components` (Optional) | Item-component values. | |
| `output_items.chance` (Optional) | Output chance; omit for a guaranteed output. Some machines roll each item of the stack separately. | Rounds to weight `[1, 999]` of 1000 |
| `output_items.data` | Weighted choice: Stack object or an empty object for no output. | |
| `output_items.weight` | Relative selection weight; a positive total selects an output. | `[0, i32::MAX]` each; $\sum_i w_i \le \texttt{i32::MAX}$ |
| `duration` | Process duration in ticks; defaults to 0. | `i32` |
| `power` | HE demand; defaults to 0. | `i64` |
| `order` (Optional) | Sort position within the recipe table; lower values first, default 2147483647. | `i32` |
| `input_items` | Wafer inputs for slots 0–1; at most two entries. | |
| `input_items.ingredient` | Item ID, item tag, or loader ingredient object. | |
| `input_items.count` (Optional) | Items required from one stack; default 1. The item stack limit bounds a usable count. | `[1, i32::MAX]` |
| `input_items.components` (Optional) | Exact item-component values. | |
| `input_items.predicates` (Optional) | Item-component predicates. | |
| `pcb` (Optional) | Circuit inputs for slots 2–3; at most two entries; default empty. | |
| `pcb.ingredient` | Item ID, item tag, or loader ingredient object. | |
| `pcb.count` (Optional) | Items required from one stack; default 1. The item stack limit bounds a usable count. | `[1, i32::MAX]` |
| `pcb.components` (Optional) | Exact item-component values. | |
| `pcb.predicates` (Optional) | Item-component predicates. | |

`duration` is ticks per craft: $d - d \times \mathrm{speed}/6 + d \times \mathrm{power}/3$ with up to 3 levels each of speed and power upgrades. `power` is HE per tick: $p + p \times \mathrm{speed} - p \times \mathrm{power}/6$; the buffer holds `20p`. Only the first output position is used, and it must not be empty. Fluid fields are ignored.

## Example

Source path: `data/hbmspace/recipe/vacuum_circuit/vacuumcircuit.processt1.json`

```json
{
  "type": "hbmspace:vacuum_circuit",
  "duration": 200,
  "input_items": [
    {
      "count": 8,
      "ingredient": "hbm:circuit_chip"
    }
  ],
  "order": 0,
  "output_items": [
    "hbmspace:circuit_processt1"
  ],
  "pcb": [
    {
      "count": 2,
      "ingredient": "hbm:circuit_pcb"
    },
    {
      "count": 4,
      "ingredient": "hbm:circuit_capacitor"
    }
  ],
  "power": 250
}
```
