> For the complete documentation index, see [llms.txt](https://roogame.gitbook.io/roogame/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://roogame.gitbook.io/roogame/ultimate-stats-framework/creating-your-status-effect-system/examples.md).

# Examples

This page introduces several familiar Status Effects commonly found in action RPGs, MOBAs, and MMOs.

Each example explains what the effect does, how its stacks and duration behave, and how to configure it in the Roo Status Effect System.

{% hint style="info" %}
The values on this page are examples. You can freely change the duration, stack limit, tick interval, target Stat, target Attribute, or action value to match your game's balance.
{% endhint %}

### Before You Begin

Open the **Roo Designer** and switch to **Status Effect** in the upper-left corner.

Create Status Effects under:

`<Namespace>.Stats.StatusEffect`

For example:

`RooGame.Stats.StatusEffect.Bleeding`

The examples below use these properties:

* `Health` — an Attribute representing the character's current Health.
* `Attack` — a Stat representing attack power.
* `Defense` — a Stat representing defensive power.
* `MoveSpeed` — a Stat representing movement speed.
* `BasePercent` — an example Modifier Channel used for percentage-based Stat changes.

Your project may use different names or namespaces. Replace the example tags with the corresponding tags from your project.

***

## Bleeding

Bleeding is a stacking damage-over-time effect commonly found in action RPGs.

Each stack deals **3 Health damage every second** and lasts for **5 seconds**. Every stack has its own duration and tick timer.

Applying additional stacks increases the total damage:

| Stack Count | Damage Per Second |
| ----------: | ----------------: |
|           1 |                 3 |
|           2 |                 6 |
|           3 |                 9 |

### Configuration

| Property                  | Value                                     |
| ------------------------- | ----------------------------------------- |
| `Status Effect Tag`       | `<Namespace>.Stats.StatusEffect.Bleeding` |
| `Type`                    | `Negative`                                |
| `Max Stack`               | `3`                                       |
| `Has Duration`            | `True`                                    |
| `Duration`                | `5`                                       |
| `Duration Mode`           | `Independent Per Stack`                   |
| `Display Progress Policy` | `Next Stack Expiration`                   |
| `Overflow Policy`         | `Replace Oldest Stack`                    |
| `Tick Interval`           | `1`                                       |
| `Tick Execution Policy`   | `Once Per Stack`                          |
| `Period Reset Policy`     | `Never Reset`                             |
| `Hidden`                  | `False`                                   |

### Tick Action

Add one element to `Tick Actions`:

| Property      | Value                                |
| ------------- | ------------------------------------ |
| `Action Type` | `Change Value`                       |
| `Target Tag`  | `<Namespace>.Stats.Attribute.Health` |
| `Value Type`  | `Constant Number`                    |
| `Number`      | `-3`                                 |

Every active stack executes this action once per second.

A character with three active stacks therefore loses a total of **9 Health per second**.

***

## Poison

Poison is another stacking damage-over-time effect, but its damage is slower and lasts longer than Bleeding.

Each stack deals **4 Health damage every 2 seconds** and lasts for **8 seconds**. All stacks use the same shared tick period, so their damage is applied together.

This configuration is useful when you want multiple poison stacks without maintaining a separate tick schedule for every stack.

### Configuration

| Property                  | Value                                   |
| ------------------------- | --------------------------------------- |
| `Status Effect Tag`       | `<Namespace>.Stats.StatusEffect.Poison` |
| `Type`                    | `Negative`                              |
| `Max Stack`               | `5`                                     |
| `Has Duration`            | `True`                                  |
| `Duration`                | `8`                                     |
| `Duration Mode`           | `Independent Per Stack`                 |
| `Display Progress Policy` | `Entire Effect Lifetime`                |
| `Overflow Policy`         | `Replace Oldest Stack`                  |
| `Tick Interval`           | `2`                                     |
| `Tick Execution Policy`   | `Once Per Stack, Shared Period`         |
| `Period Reset Policy`     | `Never Reset`                           |
| `Hidden`                  | `False`                                 |

### Tick Action

Add one element to `Tick Actions`:

| Property      | Value                                |
| ------------- | ------------------------------------ |
| `Action Type` | `Change Value`                       |
| `Target Tag`  | `<Namespace>.Stats.Attribute.Health` |
| `Value Type`  | `Constant Number`                    |
| `Number`      | `-4`                                 |

With five active stacks, the character loses **20 Health every 2 seconds**.

{% hint style="info" %}
`Once Per Stack, Shared Period` uses one shared tick period but executes the Tick Actions once for every active stack.
{% endhint %}

***

## Burning

Burning is a simple damage-over-time effect that does not increase its damage when reapplied.

Applying Burning again refreshes its duration. It does not create additional damage instances.

This behavior is useful for fire attacks that keep a target burning as long as they continue to receive fire damage.

### Configuration

| Property                  | Value                                    |
| ------------------------- | ---------------------------------------- |
| `Status Effect Tag`       | `<Namespace>.Stats.StatusEffect.Burning` |
| `Type`                    | `Negative`                               |
| `Max Stack`               | `1`                                      |
| `Has Duration`            | `True`                                   |
| `Duration`                | `6`                                      |
| `Duration Mode`           | `Shared By All Stacks`                   |
| `Duration Refresh Policy` | `Refresh On Add`                         |
| `Expiration Policy`       | `Clear Entire Stack`                     |
| `Overflow Policy`         | `Refresh Duration Only`                  |
| `Tick Interval`           | `1`                                      |
| `Tick Execution Policy`   | `Once Per Effect`                        |
| `Period Reset Policy`     | `Never Reset`                            |
| `Hidden`                  | `False`                                  |

### Tick Action

Add one element to `Tick Actions`:

| Property      | Value                                |
| ------------- | ------------------------------------ |
| `Action Type` | `Change Value`                       |
| `Target Tag`  | `<Namespace>.Stats.Attribute.Health` |
| `Value Type`  | `Constant Number`                    |
| `Number`      | `-5`                                 |

Burning deals **5 Health damage every second**.

When Burning is applied again, its duration returns to 6 seconds, but its current tick period continues without being restarted.

***

## Regeneration

Regeneration gradually restores Health over time.

This is the healing counterpart of a damage-over-time effect. It restores **5 Health every second** for **10 seconds**.

Applying Regeneration again refreshes its duration instead of creating another healing stack.

### Configuration

| Property                  | Value                                         |
| ------------------------- | --------------------------------------------- |
| `Status Effect Tag`       | `<Namespace>.Stats.StatusEffect.Regeneration` |
| `Type`                    | `Positive`                                    |
| `Max Stack`               | `1`                                           |
| `Has Duration`            | `True`                                        |
| `Duration`                | `10`                                          |
| `Duration Mode`           | `Shared By All Stacks`                        |
| `Duration Refresh Policy` | `Refresh On Add`                              |
| `Expiration Policy`       | `Clear Entire Stack`                          |
| `Overflow Policy`         | `Refresh Duration Only`                       |
| `Tick Interval`           | `1`                                           |
| `Tick Execution Policy`   | `Once Per Effect`                             |
| `Period Reset Policy`     | `Never Reset`                                 |
| `Hidden`                  | `False`                                       |

### Tick Action

Add one element to `Tick Actions`:

| Property      | Value                                |
| ------------- | ------------------------------------ |
| `Action Type` | `Change Value`                       |
| `Target Tag`  | `<Namespace>.Stats.Attribute.Health` |
| `Value Type`  | `Constant Number`                    |
| `Number`      | `5`                                  |

The target restores **5 Health every second**.

If the Health Attribute has a maximum value, the restored Health is automatically limited by the Attribute configuration.

***

## Haste

Haste temporarily increases the character's movement speed.

Unlike a periodic effect, Haste does not need a Tick Action. It adds a Stat Modifier when the effect begins and removes the same Modifier when the effect ends.

This configuration is useful for speed boosts, sprint abilities, consumables, and temporary movement bonuses.

### Required Modifier Channel

This example assumes that `MoveSpeed` uses a Stat Calculation containing a channel similar to:

`<Namespace>.Stats.Modifier.BasePercent`

For example, your Stat Calculation may use:

`BaseValue * (1 + BasePercent)`

A `BasePercent` value of `0.25` therefore increases the Stat by 25%.

### Configuration

| Property                  | Value                                  |
| ------------------------- | -------------------------------------- |
| `Status Effect Tag`       | `<Namespace>.Stats.StatusEffect.Haste` |
| `Type`                    | `Positive`                             |
| `Max Stack`               | `1`                                    |
| `Has Duration`            | `True`                                 |
| `Duration`                | `8`                                    |
| `Duration Mode`           | `Shared By All Stacks`                 |
| `Duration Refresh Policy` | `Refresh On Add`                       |
| `Expiration Policy`       | `Clear Entire Stack`                   |
| `Overflow Policy`         | `Refresh Duration Only`                |
| `Tick Interval`           | `0`                                    |
| `Hidden`                  | `False`                                |

### Add Action

Add one element to `Add Actions`:

| Property               | Value                                    |
| ---------------------- | ---------------------------------------- |
| `Action Type`          | `Add Modifier`                           |
| `Target Tag`           | `<Namespace>.Stats.Stat.MoveSpeed`       |
| `Value Type`           | `Constant Number`                        |
| `Modifier Channel Tag` | `<Namespace>.Stats.Modifier.BasePercent` |
| `Number`               | `0.25`                                   |

### Remove Action

Add one element to `Remove Actions`:

| Property               | Value                                    |
| ---------------------- | ---------------------------------------- |
| `Action Type`          | `Remove Modifier`                        |
| `Target Tag`           | `<Namespace>.Stats.Stat.MoveSpeed`       |
| `Value Type`           | `Constant Number`                        |
| `Modifier Channel Tag` | `<Namespace>.Stats.Modifier.BasePercent` |
| `Number`               | `0.25`                                   |

While Haste is active, the character receives **25% additional Move Speed**. The bonus is removed when the Status Effect expires or is manually removed.

{% hint style="warning" %}
The Add Action and Remove Action must use the same Target Tag, Modifier Channel Tag, and value.
{% endhint %}

***

## Slow

Slow is the negative counterpart of Haste.

It temporarily reduces movement speed and is commonly used by ice attacks, traps, area effects, and crowd-control abilities.

### Configuration

| Property                  | Value                                 |
| ------------------------- | ------------------------------------- |
| `Status Effect Tag`       | `<Namespace>.Stats.StatusEffect.Slow` |
| `Type`                    | `Negative`                            |
| `Max Stack`               | `1`                                   |
| `Has Duration`            | `True`                                |
| `Duration`                | `4`                                   |
| `Duration Mode`           | `Shared By All Stacks`                |
| `Duration Refresh Policy` | `Refresh On Add`                      |
| `Expiration Policy`       | `Clear Entire Stack`                  |
| `Overflow Policy`         | `Refresh Duration Only`               |
| `Tick Interval`           | `0`                                   |
| `Hidden`                  | `False`                               |

### Add Action

Add one element to `Add Actions`:

| Property               | Value                                    |
| ---------------------- | ---------------------------------------- |
| `Action Type`          | `Add Modifier`                           |
| `Target Tag`           | `<Namespace>.Stats.Stat.MoveSpeed`       |
| `Value Type`           | `Constant Number`                        |
| `Modifier Channel Tag` | `<Namespace>.Stats.Modifier.BasePercent` |
| `Number`               | `-0.30`                                  |

### Remove Action

Add one element to `Remove Actions`:

| Property               | Value                                    |
| ---------------------- | ---------------------------------------- |
| `Action Type`          | `Remove Modifier`                        |
| `Target Tag`           | `<Namespace>.Stats.Stat.MoveSpeed`       |
| `Value Type`           | `Constant Number`                        |
| `Modifier Channel Tag` | `<Namespace>.Stats.Modifier.BasePercent` |
| `Number`               | `-0.30`                                  |

The target's Move Speed is reduced by **30%** while Slow is active.

***

## Berserk

Berserk is a high-risk offensive effect frequently seen in action RPGs.

While active, the character gains additional Attack and Move Speed but loses Defense. This example demonstrates how one Status Effect can apply several Stat Modifiers at the same time.

Although Berserk includes a defensive penalty, its primary purpose is to strengthen the character, so its Type is configured as `Positive`.

### Configuration

| Property                  | Value                                    |
| ------------------------- | ---------------------------------------- |
| `Status Effect Tag`       | `<Namespace>.Stats.StatusEffect.Berserk` |
| `Type`                    | `Positive`                               |
| `Max Stack`               | `1`                                      |
| `Has Duration`            | `True`                                   |
| `Duration`                | `10`                                     |
| `Duration Mode`           | `Shared By All Stacks`                   |
| `Duration Refresh Policy` | `Refresh On Add`                         |
| `Expiration Policy`       | `Clear Entire Stack`                     |
| `Overflow Policy`         | `Refresh Duration Only`                  |
| `Tick Interval`           | `0`                                      |
| `Hidden`                  | `False`                                  |

### Add Actions

Add three elements to `Add Actions`:

| Index | Action Type    | Target Tag                         | Modifier Channel                         |  Number |
| ----: | -------------- | ---------------------------------- | ---------------------------------------- | ------: |
|     0 | `Add Modifier` | `<Namespace>.Stats.Stat.Attack`    | `<Namespace>.Stats.Modifier.BasePercent` |  `0.30` |
|     1 | `Add Modifier` | `<Namespace>.Stats.Stat.MoveSpeed` | `<Namespace>.Stats.Modifier.BasePercent` |  `0.15` |
|     2 | `Add Modifier` | `<Namespace>.Stats.Stat.Defense`   | `<Namespace>.Stats.Modifier.BasePercent` | `-0.20` |

Set `Value Type` to `Constant Number` for all three actions.

### Remove Actions

Add the corresponding three elements to `Remove Actions`:

| Index | Action Type       | Target Tag                         | Modifier Channel                         |  Number |
| ----: | ----------------- | ---------------------------------- | ---------------------------------------- | ------: |
|     0 | `Remove Modifier` | `<Namespace>.Stats.Stat.Attack`    | `<Namespace>.Stats.Modifier.BasePercent` |  `0.30` |
|     1 | `Remove Modifier` | `<Namespace>.Stats.Stat.MoveSpeed` | `<Namespace>.Stats.Modifier.BasePercent` |  `0.15` |
|     2 | `Remove Modifier` | `<Namespace>.Stats.Stat.Defense`   | `<Namespace>.Stats.Modifier.BasePercent` | `-0.20` |

While Berserk is active, the character receives:

* 30% additional Attack
* 15% additional Move Speed
* 20% reduced Defense

All three changes are removed when Berserk ends.

***

## Stunned

Stunned prevents a character from performing normal gameplay actions for a short period.

Unlike Bleeding or Haste, Stunned does not need to modify a Stat or Attribute. The active Status Effect Tag can be used as a gameplay condition.

For example, an ability, movement system, or attack system can call `Has Status Effect` and prevent execution while the character has:

`<Namespace>.Stats.StatusEffect.Stunned`

### Configuration

| Property                  | Value                                    |
| ------------------------- | ---------------------------------------- |
| `Status Effect Tag`       | `<Namespace>.Stats.StatusEffect.Stunned` |
| `Type`                    | `Negative`                               |
| `Max Stack`               | `1`                                      |
| `Has Duration`            | `True`                                   |
| `Duration`                | `2`                                      |
| `Duration Mode`           | `Shared By All Stacks`                   |
| `Duration Refresh Policy` | `Refresh On Add`                         |
| `Expiration Policy`       | `Clear Entire Stack`                     |
| `Overflow Policy`         | `Refresh Duration Only`                  |
| `Tick Interval`           | `0`                                      |
| `Hidden`                  | `False`                                  |
| `Add Actions`             | Empty                                    |
| `Tick Actions`            | Empty                                    |
| `Remove Actions`          | Empty                                    |

{% hint style="warning" %}
The Status Effect System records and manages the Stunned effect, but it does not automatically disable movement, attacks, or abilities.

Your gameplay logic must check the Status Effect Tag and decide which actions should be blocked.
{% endhint %}

***

## Wet

Wet is a `Neutral` Status Effect that can be used by an elemental interaction system.

Wet does not directly damage or strengthen the target. Instead, other gameplay systems can check for the Wet tag and create interactions such as:

* Lightning attacks dealing additional damage
* Ice attacks applying Freeze
* Fire attacks removing Wet
* Burning being prevented or removed

This is a good example of a Status Effect used as a temporary gameplay state.

### Configuration

| Property                  | Value                                |
| ------------------------- | ------------------------------------ |
| `Status Effect Tag`       | `<Namespace>.Stats.StatusEffect.Wet` |
| `Type`                    | `Neutral`                            |
| `Max Stack`               | `1`                                  |
| `Has Duration`            | `True`                               |
| `Duration`                | `6`                                  |
| `Duration Mode`           | `Shared By All Stacks`               |
| `Duration Refresh Policy` | `Refresh On Add`                     |
| `Expiration Policy`       | `Clear Entire Stack`                 |
| `Overflow Policy`         | `Refresh Duration Only`              |
| `Tick Interval`           | `0`                                  |
| `Hidden`                  | `False`                              |
| `Add Actions`             | Empty                                |
| `Tick Actions`            | Empty                                |
| `Remove Actions`          | Empty                                |

Use `Has Status Effect` to check whether the target currently has the Wet effect.

The elemental interaction itself should be implemented by the attack, damage, or ability system.

***

## Choosing an Example

| Desired Behavior                                     | Recommended Example |
| ---------------------------------------------------- | ------------------- |
| Every stack has its own duration and damage timer    | Bleeding            |
| Multiple stacks deal damage on one shared period     | Poison              |
| Reapplying the effect only refreshes its duration    | Burning             |
| Restore an Attribute over time                       | Regeneration        |
| Temporarily increase a Stat                          | Haste               |
| Temporarily reduce a Stat                            | Slow                |
| Modify several Stats at once                         | Berserk             |
| Block gameplay through an active tag                 | Stunned             |
| Create interactions without directly changing values | Wet                 |

***

## Applying a Status Effect

After completing the configuration, click **Use** in the upper-right corner to save and use the Status Effect.

To apply it to an enemy:

1. Get the enemy's Ultimate Stats Framework Component.
2. Call `Add Status Effect`.
3. Set `Status Effect Tag` to the effect you want to apply.
4. Leave the other inputs at their default values unless you need to identify a specific source.

For example, to apply Bleeding:

| Input               | Value                                     |
| ------------------- | ----------------------------------------- |
| `Target`            | Enemy's Ultimate Stats Framework          |
| `Status Effect Tag` | `<Namespace>.Stats.StatusEffect.Bleeding` |
| `Source ID`         | Default                                   |

Each call to `Add Status Effect` attempts to add one stack. The result depends on the effect's current stack count and its configured `Overflow Policy`.
