Quests&Objectives

Events

On authority, each change sends all events. Server bindings receive the full set.

On the owning client, replicated QuestStates diffs into:

Bind Event to On Quest Became Available on the owning player's Quest Component.
Bind Event to On Quest Started.
Bind Event to On Objective Progress. Pins: Quest, Objective Id, Current Count, Required Count.
Bind Event to On Phase Completed.
Bind Event to On Quest Completed. Rewards are on the handler pin.
Bind Event to On Quest Failed. Authority-side bindings still receive fail and abandon.
Bind Event to On Quest Abandoned.
Bind Event to On Objective Fail Timer Started.

Fail Time Remaining on FQuestObjectiveRuntime updates about four times a second while a timer runs.

Time To Fail ticks on authority only. Owning clients do not tick it.

First replication is a snapshot

The first OnRep_QuestStates does not replay Started or Completed for quests that are already in progress.

  1. When the widget constructs, call GetQuestsByStatus or FindQuestState.
  2. Paint from that snapshot.
  3. Then bind events for later changes.

Fail and abandon on the client

Abandon and fail change Active to Available in one replication update. They do not show as a Failed or Abandoned status on the client.

Replication alone does not fire the client fail and abandon events.

  1. When the widget is shown, refresh the log and tracker from GetQuestsByStatus.
  2. If you must catch abandon at once, refresh on a short timer or when the widget becomes visible.

Authority-side bindings still receive OnQuestFailed and OnQuestAbandoned.