> For the complete documentation index, see [llms.txt](https://enchantedmobs.superiormc.cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://enchantedmobs.superiormc.cn/configs/power-modifiers/combat-state.md).

# Combat and State Modifiers

Every modifier on this page is documented independently. All entries also support the common modifier fields from the [Power Modifiers](/configs/power-modifiers.md) page.

## Registry keys on this page

* `armor_pierce`
* `stack_damage_modifier`
* `revive`

***

## `armor_pierce`

**Purpose:** Increases the current damage result to approximate ignoring a percentage of target armor.

**Context:** Requires living `TARGET` and a damage result.

### Fields

| Field     | Default | Description                                        |
| --------- | ------- | -------------------------------------------------- |
| `percent` | `0`     | Armor penetration percentage, clamped to `0..100`. |

### Example

```yaml
type: armor_pierce
percent: 35
```

### Behavior and limits

* The target's armor and toughness attributes are read but never changed.
* This compensates for vanilla armor reduction; it is not a separate true-damage channel.

***

## `stack_damage_modifier`

**Purpose:** Stores stack state and converts it into a percentage damage increase or decrease.

**Context:** Requires a stable owner and a damage result for actual modification; matching `pool` values can share state across trigger sections.

### Fields

| Field                    | Default       | Description                                                      |
| ------------------------ | ------------- | ---------------------------------------------------------------- |
| `damage-type`            | `DEALT`       | `DEALT` or `TAKEN`; controls default scope and message metadata. |
| `stack-action`           | `ADD`         | `ADD`, `READ`, `CONSUME`, or `CLEAR`.                            |
| `stack-value`            | `CURRENT`     | For `ADD`, apply `CURRENT` or `PREVIOUS` stack count.            |
| `operation`              | `INCREASE`    | `INCREASE`, `DECREASE`, or `NONE`.                               |
| `pool`                   | current path  | State-pool name.                                                 |
| `max-stacks`             | `5`           | Maximum stored stacks, minimum 1.                                |
| `stack-amount`           | `1`           | Amount added by `ADD`.                                           |
| `percent-per-stack`      | `5`           | Damage percentage per effective stack.                           |
| `maximum-percent`        | derived       | Final percentage cap.                                            |
| `scope.per-target`       | `false`       | Separate pools by selected target.                               |
| `scope.target`           | type-specific | Default `TARGET` for dealt and `SOURCE` for taken.               |
| `scope.per-damage-cause` | `false`       | Separate pools by Bukkit damage cause.                           |
| `reset.seconds`          | `5`           | Expiry refreshed by `ADD`; non-positive disables timed expiry.   |
| `reset.clear-on`         | empty         | `AFTER_APPLY`, `AFTER_DAMAGE_DEALT`, or `AFTER_DAMAGE_TAKEN`.    |
| `messages.*`             | empty         | Optional lifecycle messages and recipient/throttle settings.     |

### Example

```yaml
type: stack_damage_modifier
pool: combo
damage-type: DEALT
stack-action: ADD
operation: INCREASE
max-stacks: 5
stack-amount: 1
percent-per-stack: 6
reset:
  seconds: 4
scope:
  per-target: true
```

### Behavior and limits

* `ADD` updates state; `READ` applies without changing it; `CONSUME` removes and applies; `CLEAR` only removes.
* State and scheduled messages are cleared on reload/unload and relevant entity unload.

***

## `revive`

**Purpose:** Requests revival during a supported death trigger.

**Context:** Intended for `on-death`; successful application depends on trigger/platform support.

### Fields

| Field      | Default | Description                                                                     |
| ---------- | ------- | ------------------------------------------------------------------------------- |
| `health`   | `20`    | Revive health, capped at source maximum health; `{original}` is maximum health. |
| `no-drops` | `false` | Clear death drops when revival is applied.                                      |

### Example

```yaml
type: revive
health: '{original} * 0.5'
no-drops: true
```

### Behavior and limits

* Use a power- or entry-level count limit when revival should happen only once.
* When source is not living, the fallback maximum for expression resolution is 20.

***
