Skip to content

Offer a collection quest

Designer · 30 min · No code

Result: an NPC with a marker over their head offers a quest to bring them three of an item. The quest appears on the HUD tracker and in the Quest Log, counts as the party picks the items up, and pays gold, EXP and an item when handed in.

Before you start

How a quest is put together

A quest is one data asset of class XenoCoreQuestDefinition. The sample is Quests/DA_XenoCore_Quest_Collection01, which asks for two Inventory/Items/ID_XenoCore_EtherCrystal. In Maps/L_XenoCore_Gym it is given by the placed NPC NPC_QuestGiver; Characters/NPC/B_XenoCore_Npc_Sample carries it too, as a ready-made example.

B_XenoCore_Npc's default On Interact graph already runs the whole quest, so a collection quest needs no graph: you set the NPC's Quest and fill in its line lists. What the default graph does:

When the player talks and the quest is… The NPC plays Then
Not yet taken (or declined before) Dialogue (the greeting) Shows the offer panel
…and the player accepts Accepted Dialogue The quest is active
…and the player declines Declined Dialogue The quest can be offered again later
Taken, not finished In Progress Dialogue Nothing
Taken, every objective met Turn In Dialogue Takes the items and pays the reward

Any empty list falls back to Dialogue.

Counting is automatic. The party's bag is re-read whenever it changes, and the count is set from it. Items the party already holds when it accepts count straight away, so a quest can be ready to hand in the moment it is accepted.

Steps

1. Create the quest

  1. In the Content Browser, open Plugins › XenoCore Content › Quests, right-click DA_XenoCore_Quest_Collection01 and choose Duplicate.
  2. Move the copy into your own folder, for example MyGame/Quests, and name it DA_MyGame_Quest_LampOil.
  3. Double-click it and set, under XenoCore › Quest:
Setting Value What it does
Title Lamp Oil The offer panel's title, the log and the tracker
Kind Collection A label for the panel and the log. It changes no behaviour.
Area Riverside Where the log groups it
Requester Name (empty) Empty uses the giver's Display Name
Requester Portrait optional The face beside "Requested By"
Summary The lamplighter has run dry... The paragraph on the offer panel
Can Decline Ticked Unticked shows only Accept

2. Set the objective

In Objectives, expand entry 0 (the duplicate already has one) and set:

Setting Value
Description Bring 3 Scrap Plating to the lamplighter.
Kind Collect Item
Item Target ID_XenoCore_ScrapPlating (in Inventory/Items)
Required Count 3
Counter Label (empty): the counter row uses the item's name, "Scrap Plating 0/3"
Consume On Turn In Ticked: the three are taken when the quest is handed in
Icon Source From Item

A quest can have several objectives (click + beside Objectives to add one); all must be met.

3. Set the reward and gates

  1. Expand Reward and set Gold 300 and Experience 150.
  2. Under Reward › Items, click + and pick ID_XenoCore_BlueSword (in Weapons/BlueSword). Each entry is one item; add the same item twice to give two.
  3. (Optional) Reward › Skill Branches opens a character's skill branch when the quest is handed in, the way XC1's later branches arrive.
  4. (Optional) Under Gates, click + and set the gate's Kind: Party Level At Least shows Required Level; Quest Completed shows Required Quest. A gated quest shows no marker and cannot be offered until every gate holds. Gates are checked only when offering.
  5. Click Save. If the editor reports a validation error, read it: a missing Item Target or a Required Count of 0 means the quest can never finish.

EXP goes to the party, and gold to the party's purse. Reserve (benched) members earn none by default: Reserve Experience Rate is 0 on Game/BP_XenoCore_Progression.

4. Give it to an NPC

  1. Drag Characters/NPC/B_XenoCore_Npc into your level, or select one you placed.
  2. In the Details panel, under XenoCore › NPC, set Display Name.
  3. In the same category, set Quest to DA_MyGame_Quest_LampOil. Leave Has Quest off: with Quest set it is ignored, and the quest decides the marker.
  4. Under XenoCore › NPC › Dialogue, fill in Dialogue (the greeting before the offer).
  5. In the same category, fill in Accepted Dialogue, Declined Dialogue, In Progress Dialogue and Turn In Dialogue. See Give an NPC a conversation for how to write a line. Any you leave empty fall back to Dialogue, except Accepted and Declined: those say nothing when empty, so the NPC does not repeat the offer it just made.
  6. Save the level.

With Quest set, the marker over the NPC follows the quest by itself: it shows while the quest can be offered or is ready to hand in, and disappears while the quest is in progress.

Test it

  1. Press Play and walk up to the NPC. The marker is over their head.
  2. Talk. The greeting plays and the offer panel opens. Accept.
  3. The tracker shows "Scrap Plating 0/3".
  4. Pick up or loot three Scrap Plating (every minion family's chests can hold it). The count rises each time.
  5. Return. The marker is back. Talk: the turn-in lines play, the reward banner shows 300 G, 150 EXP and the sword, and the three Scrap Plating leave the bag.

If it doesn't work

Fails silently: the count sticks at 0

Item Target is a different item from the one being picked up. Check that it is the exact item definition (not a duplicate with the same display name). Every change to the party's bag refreshes the count, including changes made with Lyra's own inventory nodes.

Symptom Fix
The marker never appears A gate is not met (the party level is too low, or the required quest is not handed in), or the quest was already completed in this save. Quest progress is saved, so test with New Game or Play in the editor.
The quest was ready, then went back to in progress The items were sold or traded away. The count is read from the bag each time; only Consume On Turn In takes them.
Talking plays only the greeting, never the offer Quest is empty on the placed NPC. Check the instance in the level, not the Blueprint.

Going further