Dataquest creation - Dawn-of-Light/DOLSharp GitHub Wiki

A Dataquest represents a quest which can be created by inserting records directly in the "dataquest" table (compared to Scripted Quests which requires some coding).

Two sample quests are now available from the db-public database for learning purpose :

  • "[Journey] Welcome to Albion"
  • "Black Bear Threat quest" for Mercenary, Cleric and Minstrel

These quests can be achieved for characters between level 1 to 10.

How to create a new dataquest ?

Via a SQL client, you can insert the quest data.

Below are the details for the quest named "[Journey] Welcome to Albion" from the Albion tutorial zone :

SQL-legends

Startup parameters

Each Quest should have a complete set of startup parameters:

  • Name : name of the quest

  • StartType : type of quest

    • Standard (0) : Talk to npc, accept quest, go through steps
    • Collection (1) : Player turns drops into npc for xp, quest not added to player quest log, has no steps
    • AutoStart (2) : Standard quest is auto started simply by interacting with start object
    • KillComplete (3) : Killing the Start living grants and finished the quest, similar to One Time Drops
    • InteractComplete (4) : Interacting with start object grants and finishes the quest
    • SearchStart (5) : Quest is started by searching in the designated QuestSearchArea
    • RewardQuest (200) : A reward quest, where reward dialog is given to player on quest offer and complete.
  • StartName : who offers the quest

  • StartRegionID : region of who offers the quest

  • AcceptText : what text is displayed to the player considering accepting the quest

  • Description : description of the quest

Name of the quest (in red) :

quest-2

StartName of the quest (in yellow) :

quest-1

Description of the quest (in white) :

quest-3

Steps parameters

Once a quest is started each step behaves in a set order : Source -> Target -> Advance to Next Step

Step 1 is considered the first step, and for each step :

  • Source is considered who started the Step
  • Target is considered who ends the Step

For each Step the following columns must have serialized values, separated by | for each Step, including Step 1.
If the last value for any step is empty then the string should end with a double pipe ||

  • SourceName : who start the step
  • SourceText : what is said to the player when beginning a step. If a target starting the next step has no text then an empty string can be provided using || with nothing between the pipes.
  • StepType : the type of step
    • Kill (0) : Kill the target to advance the quest. Can set chance to drop on StepItemTemplate.
    • KillFinish (1) : Killing the target finishes the quest and gives the reward. Can set chance to drop on StepItemTemplate.
    • Deliver (2) : Deliver an item to the target to advance the quest
    • DeliverFinish (3) : Deliver an item to the target to finish the quest
    • Interact (4) : Interact with the target to advance the step
    • InteractFinish (5) : Interact with the target to finish the quest. This is required to end a RewardQuest
    • Whisper (6) : Whisper to the target to advance the quest
    • WhisperFinish (7) : Whisper to the target to finish the quest
    • Search (8) : Search in a specified location. Can set chance to drop on StepItemTemplate.
    • SearchFinish (9) : Search in a specified location to finish the quest. Can set chance to drop on StepItemTemplate.
    • Collect (10) : Player must give the target an item to advance the step
    • CollectFinish (11) : Player must give the target an item to finish the quest
  • StepText : the text for the step that appears in the players quest journal

Step 1 / SourceText (in blue) :

quest-2

Step 1 / StepText (in dark green) :

quest-4

Step 2 / SourceText (in magenta) :

quest-5

Step 2 / StepText (in green) :

quest-6

  • StepItemTemplates : any items that need to be given to the player for a step. Every step can give an item to a player. All steps give an item at the completion of the step except Delivery and DeliveryFinish. If StepItemTemplates are defined for a Delivery step then the item is given at the beginning of the step and accepted by a target to end the step. For Kill and Search steps, StepItemTemplates can include a drop chance behind the template name. Ex: |some_template_name;50|
    If the item does not drop then the step is not advanced. If no items are given to a player at any of the steps then this can be null, otherwise it must have values for each step. Empty values || are ok.

  • AdvanceText : the text needed, if any, to advance this step. If no step requires advance text then this can be null, otherwise text must be provided for every step. Empty values || are ok.

  • TargetName : must be in the format Name;RegionID|Name;RegionID.... RegionID can be 0 to indicate any Target of the correct Name can advance the quest

  • TargetText : text shown to player when current step ends.

  • CollectItemTemplate : item that needs to be collected to end the current step. If no items are ever collected this can be kept null, otherwise it needs an entry for each step. Empty values || are ok.

  • MaxCount : quest can be taken a maximum of MaxCount times (0 for no limit). Must be provided

  • MinLevel, MaxLevel : single values to determine the level of characters who can do the quest (from MinLevel to MaxLevel). All must be provided.

  • FinishText : the text to show the player once the quest has completed.

FinishText for the quest (in maroon) :

quest-8

This text is displayed when the quest can be finished (when the NPC has a blue icon) :

quest-7
  • QuestDependency : if this quest is dependent on other quests being done first then the name(s) of those quests should be here. This can be null if no dependencies.

  • AllowedClasses : player classes that can get this quest

  • ClassType : any class of type IDataQuestStep which is called on each quest step and when the quest is finished. You can optionally include additional data to be used by the custom step. Example: DOL.Storm.MyCustomStep|some_additonal_data

  • RewardMoney : serialized list of money rewarded for each step. All steps must have a value, 0 is ok.

  • RewardXP : serialized list of XP rewarded each step. All steps must have a value, 0 is ok.

Reward XP for the quest (in orange) :

quest-9

The XP points are added to the current total XP points of the character :

quest-10

  • RewardCLXP : serialized list of CLXP rewarded each step. All steps must have a value, 0 is ok.
  • RewardRP : serialized list of RP rewarded each step. All steps must have a value, 0 is ok.
  • RewardBP : serialized list of XP rewarded each step. All steps must have a value, 0 is ok.
  • OptionalRewardItemTemplates : a serialized list of optional rewards to be presented to the player at the end of a Reward quest. The first value must be a number from 0 to 8 followed by the item list. ex: 2id_nb|id_nb For quests without optional rewards this field can be null.
  • FinalRewardItemTemplates : a serialized list of rewards to be given to the player at the end of a quest. For quests without rewards this field can be null.

Known variables

<Player> : to indicate the name of the player
<Class> : to indicate the class of the player
<Race> : player race name
<RealmTitle> : The current Realm Title of the player
<Guild> : The guild name of the player
<Title> : The title the player has decided to display

Refresh the quest information on the server

To refresh the quest information without doing a restart of the server, you need to select the start NPC and launch the below command :

/mob refreshquests

quest

SQL script to insert the data :

Please note the ID must be unique in the database :

INSERT INTO dataquest (ID, Name, StartType, StartName, StartRegionID, AcceptText, Description, SourceName, SourceText, StepType, StepText, StepItemTemplates, AdvanceText, TargetName, TargetText, CollectItemTemplate, MaxCount, MinLevel, MaxLevel, RewardMoney, RewardXP, RewardCLXP, RewardRP, RewardBP, OptionalRewardItemTemplates, FinalRewardItemTemplates, FinishText, QuestDependency, AllowedClasses, ClassType, LastTimeRowUpdated) VALUES (40, '[Journey] Welcome to Albion', 200, 'Sir Remson', 27, '', 'Speak with Sir Remson again to learn about the various quest icons you will encounter in your aventures.', 'Sir Remson;27|Sir Remson;27', 'Hail and well met, dude. I am Sir Remson, Mayor of this fine town of Holtham. You are here because you have chosen to swear fealty to the realm of Albion. We are locked in a bloody war againtst the loathsome forces of Hibernia and the barbaric hordes of Midgard.\n\nYou have come here to Constantine\'s Sound to begin your preparation for the battles ahead. You will want to begin by learning how to identify when there are quests or tasks available to you. These quests will be paramount in your advancement through your seasons and will provide you with the equipment and experience you will need to meet your foes on the field of battle.\n\nLet us not waste any more time, there is much to learn and even more to do.\nContinue speaking with me for a very quick explanation about the various icons you will encounter as your adventure through these lands.\n\nWelcome home, brave dude.|During your travels across the realm you will encounter the opportunity to participate in Quests which you can locate by the icons which Willem here will display for you.\n\nLet us begin !\n\nNew User Journey Quest Icon\nLesson Quest Icon\nClassic Quest Icon\nPending Quest Goal Icon\nQuest Completion Icon\n\nOr are you already familiar with these icons ?\n\n If you need a refresher course, don\'t hesitate to stop by and speak to me again.', '4|5', 'Speak with Sir Remson to learn about Quest Icons.|Speak with Sir Remson again to learn about the various quest icons you will encounter in your adventures.', '', NULL, 'Sir Remson;27|Sir Remson;27', '||', '||', 1, 1, 10, '0', '30', NULL, NULL, NULL, NULL, NULL, 'Simple enough, is it not ?', NULL, NULL, NULL, '2000-01-01 00:00:00');

Improvements

The DOLToolbox has been enhanced to allow Dataquest creation and update.

Below are the general information for the quest, with the step 1 details and finally the step 2 details :

Step 1

doltoolbox-1

Step 2

doltoolbox-2

The download of this tool is available here.

In addition to DOLToolBox, a LibreCalc tool for dataquest creation is also available at the OpenDataquest Repo

⚠️ **GitHub.com Fallback** ⚠️