# Progress Manager

<div align="left"><figure><img src="/files/P7SrYbuEtd8dGRQFg26x" alt=""><figcaption></figcaption></figure></div>

The **Progress Manager (AC\_ProgressManager)** is a simple yet powerful component that tracks player progress using a **Gameplay Tag | EProgress** map. It integrates seamlessly with the [**AI Interaction Manager** component](/components-managers/ai-only-components/ai-interaction-manager.md), allowing dialogues to dynamically adjust based on the player's progress. Additionally, it includes a **Gameplay Event System** that can be triggered from AI dialogues or other gameplay events.

It is added to the **PlayerController** class by default **(PC\_SoulslikeFramework).**

### **How It Works**

* **Storing & Managing Progress**
  * The component maintains a **map of Progress Tags | EProgress**. Each progress state is stored persistently, allowing the system to track **which objectives, quests, or interactions** have been completed.
* #### **Adjusting Progress States**
  * `SetProgress(ProgressTag, EProgressState)`
    * Updates the current progress of a given tag.
  * `GetProgress(ProgressTag)`
    * Returns the **current progress state** of a given tag.
* **Executing Gameplay Events**
  * **`ExecuteGameplayEvents(EventsArray)`**
    * This function processes a struct (`FDialogGameplayEvent`), which contains:
      * `EventTag`: Identifies what type of gameplay event it is.
      * `AdditionalTag`: Provides extra context for event handling.
      * `Custom Data`: A flexible **Instanced Struct** that can store **any type of data** dynamically.
    * When triggered, iterates through the **array of events**, extracting necessary data and routing them accordingly.
    * Using a switch statement, determines the **type of event**, executing the desired logic according to event tag.

### Example Usage

<figure><img src="/files/8XSqzhVgIHABk62WN3G8" alt=""><figcaption></figcaption></figure>

### Example Usage with the NPC Dialogues

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

### Example on Triggering Gameplay Events through Dialogue Tables

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


---

# 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/components-managers/player-specific-components/progress-manager.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.
