# Creating & Editing Buffs

<figure><img src="/files/ZCgtxvGXhhBWR8fYkQUU" alt=""><figcaption></figcaption></figure>

### Using the Utility Tools to Create & Edit Status Effects

1. Run the **Soulslike Status Effect Creator** from the Soulslike Framework editor dropdown or head into **/SoulslikeFramework/\_Utility/Creators** and right-click and Run Utility Widget -> **EUW\_StatusEffectCreator:**

<figure><img src="/files/IyPXpZqCD5fUQarLzbMN" alt=""><figcaption></figcaption></figure>

2. Fill in the details as you desire:

<figure><img src="/files/cKhVlZ0S4hPkwt5XesrG" alt=""><figcaption></figcaption></figure>

3. On the **Ranks** dropdown, you might notice something different. The **RelevantData** property is of type **FInstancedStruct**. This property can be used to send in any type of data to the Status Effect logic class. Search for **"FStatus"** to see Status Effect related structs provided by the framework:

<figure><img src="/files/A5rZfhu3RqiXLZzY6SRa" alt=""><figcaption></figcaption></figure>

4. For this example, lets use **FStatusEffectStatChanges** to just adjust some stats when this status effect is triggered. We'll adjust FP & Stamina:

<figure><img src="/files/wcymUUEHfIQGE2lp9AX9" alt=""><figcaption></figcaption></figure>

5. Finalize by clicking **Create Status Effect.**
6. To test your new Status Effect, put one of the actors **B\_StatusEffectArea** or **B\_StatusEffectOneShot** into your level. Configure its **StatusEffectToApply & Effect Rank** properties:

<figure><img src="/files/gHuOuUn9CGeqwBboFBvM" alt=""><figcaption></figcaption></figure>

7. You will notice the new Status Effect build up when overlapping this actor:

<figure><img src="/files/9qwD0EKnG4RXwj1TwUJ8" alt=""><figcaption></figcaption></figure>

8. And when Buildup reaches 100%, your Status Effect will be triggered:

<figure><img src="/files/5td59qm6HcUhFChwTHpN" alt=""><figcaption></figcaption></figure>

### Advanced: Creating Custom Trigger Behavior

If you want a unique trigger behavior for a Status Effect , you can easily override the `EffectTriggered` function inside your new Status Effect logic class and customize it.

{% hint style="info" %}
**DA\_StatusEffect\_Frostbite** is an example Status Effect that has custom behavior. When triggered, it will reduce stamina and **decrease the player's movement speed**. You can also inspect this Status Effect to get an idea on how to implement your own custom logic.
{% endhint %}

1. Start by creating a new **Struct** and add in properties that you will be relevant for your effect. In this example, we will make our new **Plague** status effect adjust the stats of the player AND reduce the scale of the player. For this, we will add 3 properties to our struct:
   1. **FStatusEffectStatChanges** (Stat Changes)
   2. **Float** (New Scale)
   3. **Float** (Duration)

<figure><img src="/files/7js0mKyUNPEUfupK9z5f" alt=""><figcaption></figcaption></figure>

2. Run the **Soulslike Status Effect Browser** from the Soulslike Framework editor dropdown or head into **/SoulslikeFramework/\_Utility/Browsers** and right-click and Run Utility Widget -> **EUW\_StatusEffectBrowser.**

<figure><img src="/files/R1zVrCKWCetJfOxuhJx8" alt=""><figcaption></figcaption></figure>

3. Find our new Status Effect and adjust its **RelevantData** property to use our new Struct:

<figure><img src="/files/OG7utiw5biUfh09oCVnv" alt=""><figcaption></figcaption></figure>

4. Click on **Open Logic** to open the class blueprint. Override the `EffectTriggered` method and start writing your logic. You can take a look at the **parent Status Effect Object** class and/or the **Frostbite Status Effect** for reference.

<figure><img src="/files/Fd6IdYs3VZOER2WCLoRc" alt=""><figcaption></figcaption></figure>

The example above will:

* Adjust all provided Stats negatively
* Set the Owner (player character)'s scale to the desired value, and after the duration, reset it back to 1.0f.

{% hint style="danger" %}
**IMPORTANT:** Overriding the `EffectTriggered` method means that you lose access to the parent trigger functionality. This means that if you create a new Rank with a different **RelevantData** type, it will not execute unless you're specifically handling that data type.&#x20;

You can *Add Call to Parent* but this might result in unwanted behavior.

An acceptable way of doing this would be through copying some of the `EffectTriggered` logic from the parent **Status Effect Object** class to your new Status Effect class.
{% endhint %}

{% embed url="<https://www.youtube.com/watch?v=6Sw_i3q22HY>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://soulslike-framework.isik.vip/workflow/creating-and-editing-buffs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
