08 — Blueprint Library Reference¶
🇬🇧 English | 🇺🇦 Українська
UQuestBlueprintLibrary is the recommended entry point for almost everything: every function is static, callable from Blueprint and C++ alike, and takes an APlayerState* (or a world context) so it can route to the correct manager (PlayerState vs GameState) for you — you rarely need to look up a UQuestManagerComponent yourself.
All functions live in Core/QuestBlueprintLibrary.h.
Manager access¶
| Function | Returns |
|---|---|
GetQuestManager(Player) |
The player's personal manager (Personal + Individual quests). |
GetQuestManagerForController(PlayerController) |
Same, resolved from a controller. |
GetPartyQuestManager(WorldContextObject) |
The GameState manager — collective progress for Shared quests, and the participant roster / per-player completion tracking for Individual quests (an Individual quest's actual objective progress still lives on each player's own manager). |
GetQuestManagerForQuest(Player, Quest) |
The one to reach for when the sharing mode isn't already known. Returns whichever manager actually owns that quest: the player's own for Personal/Individual, the party one for Shared. |
⚠️ Picking GetQuestManager() for a Shared quest is the single most common mistake with this plugin: it returns the player's manager, which never holds Shared progress, so the quest silently reads as "not available / not active / not completed" with no error anywhere. Use GetQuestManagerForQuest() whenever the quest could be Shared, or check both managers when aggregating a list.
Quest management¶
| Function | Purpose |
|---|---|
StartQuest(Player, Quest) |
Start a Personal quest. Warns and fails if given a Shared quest. |
StartPartyQuest(WorldContextObject, Quest, Participants) |
Start a Shared/Individual quest with an explicit roster. |
StartPartyQuestForAllPlayers(WorldContextObject, Quest) |
Start a Shared/Individual quest with everyone currently connected — see 06. |
AddPartyQuestParticipant / RemovePartyQuestParticipant |
Manage a party quest's roster. Server-authoritative, safe to call from any client. Removing the last participant fails a Shared quest automatically. |
CompleteQuest(Player, Quest) |
Manually complete a quest that's ready to turn in. Routes by sharing mode automatically. |
FailQuest(Player, Quest) |
Fail a quest. |
AbandonQuest(Player, Quest) |
Player-initiated cancel (requires bCanAbandon). |
All of the above (plus StartPartyQuest/StartPartyQuestForAllPlayers/AddPartyQuestParticipant/RemovePartyQuestParticipant) are server-authoritative and safe to call from any client, including for a Shared quest — see 06 — Multiplayer (Server authority section) for how that's wired up and, more importantly, for a return-value caveat worth knowing before you branch UI logic on it.
Event notifications¶
See 04 — Event-Driven Progress for the full matching rules.
| Function | Signature |
|---|---|
NotifyQuestEvent |
(Player, EventID, TargetIdentifier, Count = 1) |
NotifyKillEvent |
(Player, EnemyTag, Count = 1) |
NotifyCollectEvent |
(Player, ItemID, Count = 1) |
NotifyInteractionEvent |
(Player, TargetID) |
NotifyLocationReachedEvent |
(Player, LocationID) |
NotifyCustomQuestEvent |
(Player, EventID, TargetIdentifier, Count = 1) |
Quest queries¶
| Function | Returns |
|---|---|
GetAvailableQuests(Player, AllQuests) |
Quests from AllQuests the player can currently start. |
IsQuestActive(Player, Quest) / IsQuestCompleted(Player, Quest) |
Status checks, routed by sharing mode. |
CanStartQuest(Player, Quest) |
Prerequisites met + not already active/completed/failed (a failed quest needs QuestReset first). |
IsTargetRelevant(Player, EventID, TargetID) |
true if the player has an active objective that a NotifyQuestEvent(EventID, TargetID) would advance (checks own + party managers). Drives world-target markers. |
GetActiveQuests(Player) |
The player's active Personal + Individual quests. |
GetActiveSharedQuests(WorldContextObject) |
Active Shared quests from the GameState. |
GetCompletedQuests(Player) |
The player's completed Personal + Individual quests only — a completed Shared quest lives on GameState instead, not here. |
GetFailedQuests(Player) |
The player's failed Personal + Individual quests only (time expired, manually failed, etc.) — same GameState caveat as GetCompletedQuests. |
GetQuestProgress(Player, Quest, OutObjectives, OutProgress) |
Parallel arrays of every objective and its current progress. |
GetQuestCompletionPercentage(Player, Quest) |
0.0–1.0, based on required objectives only. Works for an active quest and for one that has since completed or failed (reads the retained snapshot) — 0.0 only means "not started or unknown to this manager". |
AreAllRequiredObjectivesComplete(Player, Quest) |
true once every required objective is Completed — like the percentage above, this also works after the quest has finished. Not the same thing as IsQuestReadyToTurnIn (used internally for manual turn-in): that one is deliberately Active-only, since a quest that already turned in is no longer "ready to turn in". |
GetQuestTimeRemaining(Player, Quest) |
Seconds left on a timed quest (0 if not timed/active). |
GetQuestTimeRemainingText(Player, Quest) |
The above, formatted MM:SS. |
GetObjectiveTimeRemaining(Player, Quest, Objective) |
Seconds left on a timed objective (0 if not timed/active) — independent of the quest's own timer (see 03). |
GetObjectiveTimeRemainingText(Player, Quest, Objective) |
The above, formatted MM:SS. |
Progress utilities (stateless)¶
Useful for UI code that only has an FQuestObjectiveProgress or an enum value in hand, with no manager lookup needed:
| Function | Returns |
|---|---|
GetObjectiveProgressText(Progress) |
"3/5" style text. |
IsObjectiveCompleted(Progress) |
bool. |
GetObjectiveProgressPercentage(Progress) |
0.0–1.0. |
GetQuestStateText(State) |
Localized-ready text for EQuestState. |
GetObjectiveStateText(State) |
Localized-ready text for EQuestObjectiveState. |
Party quest utilities¶
| Function | Purpose |
|---|---|
GetPartyQuestParticipants(WorldContextObject, Quest) |
Roster for a Shared or Individual quest. |
GetPlayerContribution(WorldContextObject, Quest, Player) |
A player's share of a Shared quest's progress. |
IsPlayerParticipant(WorldContextObject, Quest, Player) |
Roster membership check. |
HasPlayerCompletedIndividualQuest(Player, Quest) |
Individual-quest personal completion check. |
Where to go next¶
- The lower-level
UQuestManagerComponentAPI these functions wrap (delegates, party-quest internals): 01, 04, 06 - Console commands built on the same queries: 09 — Validation & Cheats