Events
QuestComp->OnQuestBecameAvailable.AddDynamic(this, &AMyPlayerState::OnQuestAvailable);
QuestComp->OnQuestStarted.AddDynamic(this, &AMyPlayerState::OnQuestStarted);
QuestComp->OnObjectiveProgress.AddDynamic(this, &AMyPlayerState::OnObjectiveProgress);
QuestComp->OnPhaseCompleted.AddDynamic(this, &AMyPlayerState::OnPhaseCompleted);
QuestComp->OnQuestCompleted.AddDynamic(this, &AMyPlayerState::OnQuestCompleted);
QuestComp->OnQuestFailed.AddDynamic(this, &AMyPlayerState::OnQuestFailed);
QuestComp->OnQuestAbandoned.AddDynamic(this, &AMyPlayerState::OnQuestAbandoned);
QuestComp->OnObjectiveFailTimerStarted.AddDynamic(this, &AMyPlayerState::OnFailTimerStarted);
QuestComp->OnQuestSaveDirty.AddDynamic(this, &AMyPlayerState::OnQuestSaveDirty);
OnQuestCompleted receives UQuestDefinition* and const TArray<FQuestReward>&. Grant items in that handler.
OnObjectiveProgress receives quest, objective id, current count, and required count.
Play sound cues from your handlers. Load icons in your HUD.