> For the complete documentation index, see [llms.txt](https://malbersanimations.gitbook.io/animal-controller/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://malbersanimations.gitbook.io/animal-controller/super-item/super-item-system/reactions.md).

# Reactions

## Overview

The Super Item System ships two `Reaction` entries. Reactions are the Animal Controller's scriptable callbacks — you drop them into any Reaction list on any component and they act on their target without you writing code.

These two let anything in the game drive an item: a cutscene, a UI button, a pickup, an AI decision, a Mode's own reaction list.

{% hint style="info" %}
These are `Reaction2` entries. The older `MReactions` class is marked `[Obsolete]` — do not use it in new work.
{% endhint %}

***

## Super Item Reaction

**Menu path:** `Malbers ▸ Super Item Reaction` **Reacts on:** a `SuperItem`

Switches which [Action Set](/animal-controller/super-item/super-item-system/super-item/item-action-sets.md) an item is running. This is the manual counterpart to a set's Auto Activation conditions — reach for it when the trigger is a game event rather than a character state.

#### Command

| Value                       | Effect                                                                                   |
| --------------------------- | ---------------------------------------------------------------------------------------- |
| **Set Action Set By Name**  | Activate the set whose Name matches. Falls back to the Default set if there is no match. |
| **Set Action Set By Index** | Activate the set at this index, wrapping around the list.                                |
| **Set Default Action Set**  | Change *which* set counts as the Default, without activating it now.                     |
| **Restore To Default**      | Return to the Default set.                                                               |

#### Action Set Name

The name to match. Shown for the two by-name commands.

#### Index

The index to activate. Shown for the by-index command.

{% hint style="warning" %}
The reactor must be a `SuperItem`. Pointing this reaction at the character logs an error — target the item.
{% endhint %}

{% hint style="info" %}
A set flagged **Ignore** cannot be activated, not even from here. The request falls back to the Default set and says so in orange in the console.
{% endhint %}

### Example — lighting a torch

The brazier's interaction fires a **Super Item Reaction** on the torch with `Set Action Set By Name` → `Ignited`. That set has an [Add Element](/animal-controller/super-item/super-item-system/item-processors/damager-add-element.md) processor carrying `Fire` and a different IK profile. The torch's behaviour changes with no code and no branch.

***

## Pouch Manager Reaction

**Menu path:** `Items ▸ Pouch Manager` **Reacts on:** a `PouchManager`

Adds or removes ammunition from the character's reserve, and switches infinite ammo on and off.

#### Action

| Value             | Effect                                                                    |
| ----------------- | ------------------------------------------------------------------------- |
| **Add Amount**    | Add `Amount` of the projectile to the reserve.                            |
| **Remove Amount** | Subtract `Amount` from the reserve.                                       |
| **Clear**         | Reserved for future use — currently does nothing.                         |
| **Infinite**      | Turn Infinite Ammo on or off for **one** projectile reserve.              |
| **Infinite All**  | Turn Infinite Ammo on or off for the **whole pouch** (the master switch). |

#### Projectile ID

Which ammo type. Shown for every action except **Infinite All**, which has no per-projectile target.

#### Amount

How many. Shown for **Add Amount** and **Remove Amount**.

#### Infinite Value

The on/off value applied by **Infinite** and **Infinite All**.

{% hint style="warning" %}
**Infinite affects the reserve only.** A weapon that uses a Chamber still empties its magazine and still has to Reload — it simply never runs out of rounds to reload with. For a gun that never needs reloading, give it a Chamber Stat that cannot be depleted, or drop the Chamber entirely.
{% endhint %}

{% hint style="info" %}
Adding ammo for a `ProjectileID` the Pouch does not have **creates the entry** and initialises its pool. A pickup can therefore grant a brand-new ammo type without every character pre-declaring it.

`Infinite`, by contrast, needs the entry to exist — it warns instead of creating one.
{% endhint %}

### Example — an arrow pickup

On the pickup's `Interactable`, an `On Interact` reaction: **Items ▸ Pouch Manager**, `Add Amount`, Projectile `Arrow`, Amount `10`.

### Example — a god-mode cheat

A debug menu button wired to **Items ▸ Pouch Manager**, `Infinite All`, Infinite Value `on`. Every reserve on the character stops being consumed; pressing it again with the value off restores normal ammo.

***

## Driving items without a dedicated reaction

Most item control does not need a Reaction at all — the Super Item Manager API is UnityEvent-friendly, so `Item_Equip`, `Item_Holster`, `Item_Drop` and `Item_Equip_From_Holster` can be wired straight into any event slot.

And for the reverse direction — an item Action driving the rest of the game — use the [Reactions List](/animal-controller/super-item/super-item-system/item-processors/reactions-list.md) processor, which runs any `Reaction2` on the character or on the item's Target.
