Builders » Guide

Building quests

Quests are goal/reward bundles with a quest master, a target, and an optional completion message. This guide covers qedit, the six quest types, prereq chains, and pairing with triggers.

Last updated: 2026-05-19

📥 Download as Markdown

Building quests

Quests are structured goal/reward bundles. They have a name, description, type, target (mob/obj/room depending on type), point/gold/exp/object rewards, level limits, optional prereq chain, and optional time limit. You build them with qedit.

Open the editor

qedit 8000        Create or edit quest vnum 8000

Quest vnums are usually grouped with the zone’s mob/obj range — typical convention is <zone>00-<zone>99.

-- Quest Number    : [8000]
 1) Quest Name     : Lost Crown
 2) Description    : Find the lost crown of King Welmar.
 3) Accept Message
   The old herald hands you a moth-eaten map and gestures wearily.
 4) Completion Message
   The herald's face lights up. "Welmar's crown — you found it!"
 5) Quit Message
   The herald sighs. "Perhaps another day, friend."
 6) Quest Flags    : REPEATABLE
 7) Quest Type     : AQ_OBJ_RETURN  to herald [8001]
 8) Quest Master   : [8001] the old herald
 9) Quest Target   : [8050] a moth-eaten crown
 A) Quantity       : [1]
    Quest Point Rewards
 B) Completed      : [50]   C) Abandoned : [-10]
    Other Rewards
 G) Gold Coins     : [500]  T) Exp Points : [10000]  O) Object : [8051]
    Level Limits to Accept Quest
 D) Lower Level    : [5]    E) Upper Level : [25]
 F) Prerequisite   : [-1]   (none)
 L) Time Limit     : [60]   (minutes)
 N) Next Quest     : [8001]
 P) Previous Quest : [-1]
 X) Delete Quest
 Q) Quit

Pick the quest type FIRST

Type determines what the target field means and how the engine checks completion.

TypeTargetCompletion check
AQ_OBJ_FINDObject vnumPlayer has the object in inventory
AQ_OBJ_RETURNObject vnum + value[5] = return-to mob vnumPlayer gives the object to the return mob
AQ_ROOM_FINDRoom vnumPlayer enters the room
AQ_ROOM_CLEARRoom vnumNo hostile mobs remain in the room
AQ_MOB_FINDMob vnumPlayer encounters the mob (sees them in a room)
AQ_MOB_KILLMob vnumPlayer kills the mob (quantity lets you require N kills)
AQ_MOB_SAVEMob vnumPlayer saves the mob (via heal / rescue scripts)

Choosing the type

  • OBJ_RETURN — most common quest type. Find item X, bring to mob Y. Quest auto-completes when the player gives the object.
  • MOB_KILL — second most common. Kill N of mob X. Quest auto-completes when the kill count is met.
  • ROOM_FIND — exploration goal. Find the hidden waterfall.
  • MOB_SAVE — needs script support; the mob must call quest save <questname> from a trigger.
  • OBJ_FIND — possession-based. Player must just have the item — they don’t need to do anything else.

Fields

Name, description, messages (1-5)

  • Name appears in quest list and quest tracking displays. Keep short.
  • Description is the longer pitch shown when the player asks the quest master about it.
  • Accept message displays when the player accepts. Set the tone.
  • Completion message displays on success. The “thank you, brave adventurer” moment.
  • Quit message displays on abandon. Lets you flavor failure.

Multi-line OK for all three messages.

Quest flags (6)

FlagMeaning
REPEATABLEPlayer can do this quest more than once.
HIDDENDoesn’t show in quest list unless the player is eligible.
IN_PROGRESS_OKPlayer can accept while already doing the quest (e.g. for cross-character quest sharing).
INSTANTAuto-accept on quest-master interaction. No accept step.

Quest master (8)

The mob vnum that gives + receives this quest. The quest master needs a Postmaster or quest-handling spec proc (or DG trigger) to actually dispatch the accept/complete handshake. A bare mob without a quest hook will not auto-handle quests.

Quest target (9)

Interpretation depends on type:

  • For OBJ_* types — the object vnum.
  • For ROOM_* types — the room vnum.
  • For MOB_* types — the mob vnum.

For AQ_OBJ_RETURN, also set the return-to mob by editing the target’s value[5] field (the editor labels it). This is who the player turns the item in to (often but not always the quest master).

Quantity (A)

For MOB_KILL: how many of the target mob must die. For OBJ_FIND: how many of the target object must be in inventory. Default 1.

Quest point rewards (B/C)

  • B (Completed) — quest points granted on success.
  • C (Abandoned) — quest points subtracted on quit. Often negative (penalty) but can be 0 (free quit).

Quest points are a separate currency from gold/exp; players spend them on quest-shop items.

Other rewards (G/T/O)

  • G — gold coins on completion.
  • T — exp points on completion.
  • O — object vnum to give the player on completion (set to -1 for no item reward).

Level limits (D/E)

Lower and upper level required to accept the quest. Players outside this range can’t pick it up. 0 for no limit on that end.

Prereq (F)

A quest vnum that must be completed before this one can be accepted. Chain prereqs to build quest arcs:

  • Quest A: “Find the broken sword” — no prereq.
  • Quest B: “Forge the broken sword” — prereq = A’s vnum.
  • Quest C: “Slay the dark lord with the sword” — prereq = B’s vnum.

Players who don’t have the prereq complete won’t see Quest C in quest list.

Time limit (L)

Minutes from accept to auto-fail. 0 = no limit. Useful for time-pressure quests (“save the village within 30 minutes”).

Next / Previous quest (N/P)

Linked navigation between related quests — quest info shows the chain. Mostly cosmetic; doesn’t enforce sequencing (use Prerequisite for that).

Workflow

A typical quest build:

  1. Build the target first. Mob to kill / object to find / room to enter / mob to save.
  2. Build the quest master. Usually an NPC with quest-handler spec proc or DG triggers.
  3. qedit <vnum> the quest.
  4. Wire the quest master so it knows about your quest. The simplest path: a Postmaster-style proc that handles quest commands generically. Or DG triggers on COMMAND that match quest accept etc.
  5. Test the happy path. Accept → progress → complete. Check rewards land.
  6. Test the failure paths. Quit. Time limit. Level too low. Prereq missing.
  7. Verify level limits and rewards balance. A 5-25 level quest awarding 100k gold is broken.

Common patterns

Fetch quest (OBJ_RETURN)

Quest type: AQ_OBJ_RETURN. Target = item vnum. value[5] = return-to mob.

Player accepts → looks for item → finds it → gives to mob → quest completes.

Make sure the item is reachable (zone reset spawns it, or it drops from a specific mob). Don’t put it behind another quest’s reward unless that’s intentional.

Kill quest (MOB_KILL)

Quest type: AQ_MOB_KILL. Target = mob vnum. Quantity = number of kills.

For a “kill 10 wolves” quest, set quantity to 10. Each kill increments the player’s progress counter.

For unique-boss kills, quantity = 1.

Exploration quest (ROOM_FIND)

Quest type: AQ_ROOM_FIND. Target = room vnum.

Player enters → quest completes automatically. Pair with a memorable destination — a hidden glade, a secret chamber.

Multi-stage quest chains

Use Prerequisite (F) to link quests. Quest B requires Quest A done. Quest C requires Quest B. The game enforces the order — players can’t skip to C.

For a long arc (5+ quests), consider whether each step has its own satisfying mini-reward, or whether the chain is just a single long quest broken up.

Time-pressure quest

Set Time Limit (L) to N minutes. Be generous — players reading descriptions, looking up wiki pages, and walking to the destination take longer than you think.

Pair with a flavor description that hints at urgency (“the village has only an hour before…”).

Repeatable daily quest

Set flag REPEATABLE. Pair with a DG trigger or spec proc on the quest master that resets the player’s “daily count” once per game-day.

Quest commands (player-side)

Players interact via these standard commands:

quest list                        Show available quests
quest info <num>                  Detail on one quest
quest history                     What I've completed
quest accept <num>                Accept a quest
quest quit                        Abandon current quest
quest progress                    How far along am I?

Some quest masters override accept and quit via triggers — they want the player to say accept or bow to the quest giver. That’s a per-quest-master choice you make as the builder.

Integration: triggers

For quests that need scripted behavior (custom dialogue, mid-quest events), attach DG triggers to the quest master:

  • MTRIG_COMMAND matching accept for custom acceptance behavior.
  • MTRIG_RECEIVE for OBJ_RETURN quests — react when the player hands over the item.
  • MTRIG_TELL for “ask npc about quest” style dialogue.
  • MTRIG_DEATH on the target mob for MOB_KILL quests with scripted aftermath.

See Building triggers.

Save + test

Qy saves the quest to lib/world/qst/<zone>.qst. The next zone reset (or qedit reload) registers it.

Testing checklist:

  1. Quest master shows the quest in their dialogue / say response.
  2. quest list shows it (assuming you meet level limits + prereqs).
  3. quest accept <num> works and the accept message displays.
  4. Progress against the target works (kill the mob, find the item).
  5. Completion fires the message AND grants all three reward types (gold, exp, object).
  6. quest history shows the completion.
  7. Re-do it (or fail to) based on REPEATABLE flag.
  8. Prereq quests gate access correctly.

See also