> 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/conditions.md).

# Conditions

Conditions for querying the Super Item System. Last updated AC v1.5.3

## Overview

The Super Item System ships twenty `Conditions2` entries. They answer questions about what the character is holding, what is stored, what is playing, whether the hands are locked, and how much ammo is left.

They are used in three places:

* an **Action's** `Conditions On Owner` / `Conditions On Target`, to gate one action,
* an **Action Set's** `Set Conditions`, to gate a whole set,
* an **Action Set's** `Auto Activation On` / `Off`, to make a set swap itself in.

That third use is the important one. Most "how do I make the shield behave differently when a sword is equipped?" questions are answered by an Auto Activation condition, not by code.

***

## Manager conditions

Target: the character's `SuperItemManager`. Menu path `Super Item ▸ [Manager] …`

#### Has Super Item Equipped

Are these item types held in the hands? Takes an `IDList<SuperItemID>` and a mode:

| Mode        | True when                             |
| ----------- | ------------------------------------- |
| **Has Any** | At least one listed item is equipped. |
| **Has All** | Every listed item is equipped.        |

#### Has Super Item Holstered

The same question for the holsters. Leaving the list **empty** asks the simpler question: is *anything* holstered?

#### Owns Super Item

Equipped **or** holstered. Use it for "does the player have a sword at all", regardless of whether it is drawn.

#### Holster Occupied

Does a specific holster currently hold an item? Takes a `HolsterID`.

#### Item Count

Compares how many items are equipped, holstered, or both, against a value with a numeric comparer.

#### Has Free Slot

Is there at least one empty **Equip Point** or **Holster**? Use it to decide whether a pickup can be stored or must be swapped.

#### Is Aiming

True while the character's `Aim` component is active.

#### Item In Use \[Any Action]

True while any equipped item has an Action playing — firing, blocking, reloading. Use it to stop the character doing something else mid-action.

#### Is Locked

True while the Super Item Manager is **Locked**: its items are put away and every item operation is refused. Use it to hide a "Draw weapon" prompt while the character carries a box, or to keep a pick-up interaction from even offering itself.

#### Active Action Set Is

Does any equipped item have an active Action Set with this **name**? Matched by string.

#### Is Dual Wielding

The most configurable of the set. It has two hand lists, and the mode is inferred from them:

| Lists       | Question asked                                                |
| ----------- | ------------------------------------------------------------- |
| Both empty  | Are both hands holding something?                             |
| One filled  | Two distinct held items, one matching the list, one anything. |
| Both filled | Two distinct held items, one matching each list.              |

Putting the same ID in both lists requires **two** of it — that is how you check for two Daggers rather than one.

{% hint style="info" %}
Only items on Equip Points with a **Side** count. A torch on a `Head` point never makes the character dual wielding.
{% endhint %}

***

## Item conditions

Target: a `SuperItem`. Menu path `Super Item ▸ [Super Item] …`

These are anchored to **one item** rather than to the character, which is what lets an item's own Action Set ask a question about itself.

#### Has Target

Does the item currently have a Target assigned?

#### Has User

Is the item being held by anyone?

#### Is Equipped

Is the item currently on an Equip Point?

#### Is Holstered

Is the item currently stored in one of the user's holsters?

#### Is On Side

Which hand is the item in — `Left`, `Right` or `None`? The side comes from the Equip Point the item currently sits in, not from the item.

This is the condition that tells two identical dual-wielded weapons apart. Give the off-hand copy its own Action Set through an Auto Activation using this condition.

#### Is Action Playing

Is an Action of the item's active set playing — firing, blocking, aiming? Takes an `ItemActionID`; leave it **empty** to ask about *any* playing Action on this item.

Use it to gate one Action on another without making it a full Secondary/Master pair.

#### Is Set Active

Which Action Set is active on this item? Takes a set **name** (`Two Handed`, `Off Hand`…); an empty name asks the weaker question "does the item have any active set".

#### Is Dual Wielding

The item-side counterpart of the Manager condition: this item is held while **another** item is held on the opposite hand.

Takes an optional `IDList<SuperItemID>` of allowed types for the **other** hand — empty means any item counts. Because it is anchored to this item, a Set can ask "am I the one being paired?" and activate itself, which the Manager version cannot express.

***

## Pouch conditions

Target: the character's `PouchManager`. Menu path `Super Item ▸ Pouch …`

#### Has Ammo

Compares the reserve for a `ProjectileID` against an amount, with a numeric comparer.

Put it in a fire Action's `Conditions On Owner` and wire `On Action Failed On Owner` to a dry-click sound.

{% hint style="info" %}
An **Infinite** reserve compares as `int.MaxValue`, so every comparer stays meaningful and the condition simply always passes.
{% endhint %}

***

## Item resources are Stats

There are deliberately **no** conditions for "rounds in the chamber" or "charge level". Those are Stats on the item's `Stats` component, so the generic **`[Stats]`** condition covers them — Value, Max Value, Full, Empty and the rest.

One caveat: an Action evaluates `Conditions On Owner` against the **character**, but the Chamber and Charge Stats live on the **item**. Set the condition's `Local Target` and point its `Target` at the item's own `Stats` component. The [Projectile - Reload](/animal-controller/super-item/super-item-system/item-processors/projectile-reload.md) processor does exactly this for you when created.

***

## Conditions from the rest of the framework

An Action Set's Auto Activation is a normal `Conditions2` list, so anything in the library is available. Two that come up constantly with items:

* **`[Riding] Rider is Riding`** — paired with the `Riding` Auto Activation flag, this is the whole mounted/on-foot set swap.
* **`[Aim] Aim Angle`** — restricts an Action to a cone of aim angles. Its **Angle Offset** rotates the whole allowed range, so the cone does not have to be centred on the character's forward: an offset of `-90` with a `[-60, 60]` limit allows only the character's left side. The offset is a `FloatReference`, so it can be driven by a Float Var at runtime — mounted versus on foot, left- versus right-handed. The Scene View arc is drawn at the rotated position, and an Action with **Restart On Conditions** resumes by itself when the aim returns to the allowed range.

***

## Example — a shield that changes behaviour when paired

On the shield, two Action Sets:

| Set          | Auto Activation          | Auto Activation On                                     |
| ------------ | ------------------------ | ------------------------------------------------------ |
| `With Sword` | `On Equip`, `On Unequip` | `[Manager] Has Super Item Equipped` → `Sword`, Has Any |
| `Default`    | —                        | —                                                      |

Put `With Sword` **above** `Default` in the list — the first matching set wins.

***

## Example — a bow that changes on horseback

| Set          | Auto Activation         | Auto Activation On         | Auto Activation Off |
| ------------ | ----------------------- | -------------------------- | ------------------- |
| `Bow Riding` | `Riding`, `Check State` | `[Riding] Rider is Riding` | its inverse         |
| `Default`    | —                       | —                          | —                   |

One flag covers the whole mount cycle. Give the mounted set its own `Free Hands`, IK profile and an `[Aim] Aim Angle` condition with an **Angle Offset** if the saddle limits where the rider can shoot.
