# Neutron Blaster

Transforms the items in a Neutron Blaster when it fires.

When the Neutron Blaster fires, each processing slot is replaced by its result. A `primary` row matches first; otherwise a `fallback` or `destroy` row. Unmatched items use built-in transformations: a fissite shield becomes a mysticite shield, an RTG pellet becomes its decay product, reprocessable fuel converts, food and blocks in [`leafia:sol_blaster_organics`](https://movblock.mov/ntm-next/wiki/cursed/tags.md) are destroyed, radioactive items become slaked Sellafite, and others stay unchanged.

Automation inserts only primary inputs and extracts only other items. The comparator counts items valid for a primary row, and recipe viewers show primary rows.

A row has exactly one item input with count 1, no fluids, and `duration` and `power` 0. `primary` and `fallback` rows have one deterministic output of count 1; `destroy` rows have no `output_items`.

## Fields

| Field | Meaning and default | Range |
| - | - | - |
| `type` | Selects the `leafia:sol_blaster` recipe format. | |
| `name` (Optional) | Internal lookup name; defaults to the last segment of the recipe resource path. | |
| `input_items` | Ordered counted item inputs; defaults to an empty list. | |
| `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. | |
| `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}$ |
| `order` (Optional) | Sort position within the recipe table; lower values first, default 2147483647. | `i32` |
| `kind` (Optional) | `primary`, `fallback` or `destroy`; default `primary`. | |

## Examples

Source path: `data/leafia/recipe/sol_blaster/fissium_ingot.json`

```json
{"type": "leafia:sol_blaster", "input_items": [{"ingredient": "#c:ingots/fissium"}], "order": 1024, "output_items": ["leafia:ingot_chydalium"]}
```

Source path: `data/leafia/recipe/sol_blaster/balefire_egg.json`

```json
{"type": "leafia:sol_blaster", "input_items": [{"ingredient": "hbm:egg_balefire"}], "kind": "destroy", "order": 3328}
```
