Quest System Status

Following is a bullet-point list of work related to quest system. This provides a snapshot of where quest system is up to currently. Items are colour-coded to the following legend:

  • Feature Complete (all done but subject to bug fixes and future refinements)
  • Mostly Complete (almost there, could be waiting on another system)
  • In Progress (work started but still has some way to go)
  • Not Started (work is yet to begin on this item)
  • Unscheduled (work will not begin within time frame of current version)

Some Conditions and Actions (such as those relating to spells and dialog) are not scheduled to begin until prerequisite features are implemented.


Quest Machine

This is the main back-bone of the quest system.

  • Quests bulk exported from classic QRC/QBN files using Template v1.11
  • Data table support class
  • Template-related data tables migrated
  • Quest script parser and JIT compiler
  • Text macro expansion (%pcn, _symbol_, etc.)
  • Execution of compiled quests at runtime
  • Support for actions/tasks/triggers/conditions
  • Global variables
  • Player faction data
  • Quest journal and log actions
  • Track player and quest targets
  • Links to game world (place items, move NPCs, etc.)
  • Location and building discovery (for travel map and automap)
  • Quest state serialization (save/load)



Resources create a bridge between quest system and the game world. Almost all actions and conditions operate alongside a resource in some manner.

  • Place (towns, buildings, dungeons)
  • Person (flat NPCs)
  • Item (for player to to locate and receive)
  • Clock (times events in world)
  • Foe (an enemy mobile)



A condition will execute a task when it evaluates true. Depending on context, conditions might call another task or trigger the task they belong to.

  • clicked anItem
  • clicked anNPC
  • clicked anNPC and at least anAmount gold otherwise do aTask
  • daily from aTime1 to aTime2
  • dropped anItem at aPlace
  • faction aFaction available
  • from aTime1 to aTime2 daily
  • have anItem set aVariable
  • injured aFoe
  • killed aFoe
  • level nnnn completed
  • pc at aPlace do aTask
  • repute with anNPC exceeds nn do aTask
  • toting anItem and anNPC clicked
  • anItem used do aTask
  • anItem used saying nnnn do aTask
  • when aTaskHasBeenPerformed



An action will perform some operation in the game world.

  • add anNPC as questor
  • add anNPC face
  • add anNPC face saying nnnn
  • add dialog for item anItem (Nystul)
  • add dialog for person anNPC (Nystul)
  • add dialog for location aSite (Nystul)
  • add dialog for location aSite person anNPC item anItem (Nystul)
  • add dialog for location aSite item anItem (Nystul)
  • add dialog for person anNPC item anItem (Nystul)
  • add foe aFoe face
  • cast aSpell spell do aTask
  • cast anEffect effect do aTask
  • cast aSpell spell on aFoe
  • change repute with anNPC by nn
  • clear aTaskName
  • create aFoe every m minutes n times with k% success
  • create npc anNPC
  • create npc at aPlace
  • cure aDisease
  • destroy npc anNPC
  • dialog link for item anItem (Nystul)
  • dialog link for person anNPC (Nystul)
  • dialog link for location aSite (Nystul)
  • dialog link for location aSite person anNPC item anItem (Nystul)
  • dialog link for location aSite item anItem (Nystul)
  • dialog link for person anNPC item anItem (Nystul)
  • drop anNPC as questor
  • drop anNPC face
  • drop foe aFoe face
  • end quest
  • get item anItem
  • get item anItem from anNPC
  • give item anItem to anNPC
  • give pc anItem
  • give pc anItem notify nnnn
  • give pc nothing
  • hide npc anNPC
  • legal repute nn
  • level n completed
  • location aPlace magicNumber2 magicNumber3
  • log nnnn step i
  • make anItem permanent
  • make pc ill with aDisease
  • mute npc anNPC
  • pick one of aTaskName1 aTaskName2 aTaskName3 aTaskName4
  • place aFoe at aPlace
  • place anItem at aPlace
  • place anNPC at aPlace
  • play sound aSound every time1 minutes time2 times
  • play video magicNumber1
  • prompt nnnn yes aTaskName1 no aTaskName2
  • remove foe aFoe
  • remove log step n
  • restore anNPC
  • restrain foe
  • reveal aPlace
  • reveal aPlace in province aProvince# at magicNumber
  • rumor mill nnnn  (Nystul)
  • say nnnn
  • send aFoe every m minutes n times with k% success
  • start quest nnnn mmmm
  • start task aTaskName
  • start timer aClock
  • stop timer aClock
  • take anItem from pc
  • teleport pc to aPlace
  • transfer pc inside aPlace marker #


For more information on the Template v1.11 scripting language, please see Donald Tipton’s excellent documentation.


Last updated 25-June-2019