# Quests

## Summary

Published: Jan 31 2025 by [mana vortex](https://app.gitbook.com/u/NfZBoxGegfUqB33J9HXuCs6PVaC3 "mention")\
Last documented update: Jan 31 2025 by [mana vortex](https://app.gitbook.com/u/NfZBoxGegfUqB33J9HXuCs6PVaC3 "mention")

This page lists events that let you react to quest changes

### QuestTracker: On state change

You can observe `QuestTrackerGameController.OnStateChanges`, or look at how it's registered and register your own callback using `NewProxy()`

### JournalManager.ChangeEntryState

When a quest journal entry changes. If yours doesn't work like expect, please check out [this post](https://discord.com/channels/717692382849663036/795037494106128434/1334831086735327274) by psiberx on Discord.

Snippet kindly provided by **TheManualEnhancer**

{% tabs %}
{% tab title="LUA" %}

```lua
registerForEvent("onInit", function()
    Observe("JournalManager", "ChangeEntryState", function(this, uniquePath, className, state, notifyOption)
        if state == gameJournalEntryState.Succeeded then
            Game.AddToInventory("Items.money", 10000)
        end
    end)
end)
```

{% endtab %}

{% tab title="Redscript" %}

```swift
Observe("JournalManager", "OnQuestEntryTracked",
    ---@param this JournalManager
    ---@param entry JournalEntry
    function(this, entry)
        local id = entry.id
        local state = this:GetEntryState(quest)
        -- do something here
    end)
```

{% endtab %}
{% endtabs %}
