Pulse Core Integration

Table of Contents

  1. Overview
  2. Items
  3. Enemies
  4. Interactions
  5. Own templates
  6. Setup

Overview

PulseQuestCoreBridge is a separate plugin (LuQ-Studios/PulseQuestCoreBridge) that connects PulseQuest to Pulse Core (inventory, combat, interaction). PulseQuest and Pulse Core don’t depend on each other; only the bridge depends on both. It adds four objective classes. Use them like the ready-made objectives: create a Blueprint subclass (Add > Pulse > Quest Core, or the Create entries on the Workflow tab), set its fields and pick it in the Quest Objective task.

Objective Completes when Fields
Gather Items Objective The players of the quest have Count items Item or ItemTag, Count, bIncludeEquipped, bTakeItemsOnComplete
Deliver Items Objective A player of the quest interacts with the target and pays Count items Item or ItemTag, Count, bIncludeEquipped, TargetActor or TargetTags
Defeat Enemies Objective Count enemies with the tags or class died, killed by players of the quest EnemyTags, bRequireAllTags, EnemyClass, Count, bOnlyKillsOfQuestPlayers
Interact Objective Players of the quest completed Count interactions with matching interactables InteractableTags, InteractableClass, Count

All four count on the authority only; clients get the replicated progress. Count is the target progress, so the quest log shows “2/5” with a display text such as Wolf pelts {Progress}/{Target}.

Items

Gather Items counts the items in the inventories of the players of the quest manager (GetQuestPlayers: the owner of a player’s quest manager, every player of a shared quest host), and their equipped stacks (bIncludeEquipped, on by default: potions on the hotbar count). Items the players had before the quest started count too. The objective counts again whenever an inventory or the equipment of one of them changes (Pulse.Message.Inventory.*), so the progress also goes down when items are dropped. Stacks that another system only lends (items of a skill) never count.

With bTakeItemsOnComplete the items are taken when the objective completes because the players have them: “gather 10 wood for the bridge”. Several players give from the first player on. A quest that leaves the objective earlier (another branch, the completion mode of the Quest Objective task) takes nothing.

Deliver Items shows the same progress, but having the items is not enough: a player of the quest brings them to the target and interacts with it. The objective pays Count items from that player with the Items cost of Pulse Core (all or nothing) and completes. Without enough items nothing happens. The target is

  • TargetActor, an actor placed in a level (an NPC, a chest). It also becomes a target of the objective, so the compass and the world markers show it, or
  • every interactable with one of TargetTags (the InteractableTags of its interactable component), e.g. NPC.Smith for every smith.

Deliver (Blueprint callable) delivers for a player from your own code, for example from a dialog.

Enemies

Defeat Enemies is a template of the Pulse Message objective: it listens to Pulse.Message.Combat.Died and builds its trigger from its fields. The enemy is the target of the death message:

  • EnemyTags are its gameplay tags (owned tags of its ability system, or IGameplayTagAssetInterface); one of them is enough, all of them with bRequireAllTags. Empty: every enemy.
  • EnemyClass limits it to an actor class and its children.
  • bOnlyKillsOfQuestPlayers (default on) counts only enemies a player of the quest killed: the killer is the instigator of the death. Off, every matching death counts.

Interactions

Interact is a template on Pulse.Message.Interact.Completed: every completed interaction of a player of the quest with a matching interactable counts one, e.g. “open 3 chests” (Count 3) or “talk to the smith” (Count 1). Give the interactables a tag for their kind (InteractableTags on the interactable component, see Interaction in the Pulse Core docs); InteractableClass limits it to an actor class.

The server must learn of the interaction for the delivery and the interact objective to count: give the interactable bReplicateInteractionEvents and the player the replicated interact ability (UPulseRepInteractAbility). Without it only interactions of a listen server host count.

Own templates

The templates override BuildTrigger of the Pulse Message objective and hide its category Trigger. A template of your own works the same way: derive from UPulseQuestObjective_Message in C++, build the trigger from fields of your own and set HideCategories = (Trigger). Override CountMessage to decide per message (Defeat Enemies checks the killer there).

Setup

  1. Enable PulseQuest, PulseCore and PulseQuestCoreBridge.
  2. Create the objectives you need (Add > Pulse > Quest Core) and use them in the Quest Objective task of a quest.
  3. For deliveries and interactions in multiplayer: replicated interaction (see the note above).

Back to top

Copyright © 2026 LuQ Studios. Distributed under the MIT License.

This site uses Just the Docs, a documentation theme for Jekyll.