For the complete documentation index, see llms.txt. This page is also available as Markdown.

Quest

Classic quest definitions - NPC, class availability, level gates, chain prerequisites

The classic quest registry. Each row defines one quest variant: which NPC gives it, which classes can take it, the level window, the previous-quest state required, and which of the four quest states this row describes.

File Location

Data/Quest/Quest.txt

Loaded once at GameServer startup. Changes require a restart.

Format

Plain text, whitespace-delimited. The first comment line names the columns. Each row is one quest entry. Multiple rows can share the same Index to describe the same quest in different character states (not yet accepted, accepted, finished, cancelled).

Terminated by the literal end token.

Columns

Column
Type
Effect

Index

int

Quest ID. Referenced by QuestObjective and QuestReward. Valid range 0-199

StartType

int

Quest start flavor. Only 0 is wired up on the server path: the NPC-initiated start. Other values load but never match during NPC talk

MonsterClass

int

NPC monster class that gives the quest

CurrentState

0-3

Quest state this row applies to. 0 = not yet accepted, 1 = accepted, 2 = finished, 3 = cancelled. A row is picked when the player's stored state for that quest matches this value

RequireIndex

int or *

Previous quest that must be at RequireState before this row matches. * means no prerequisite

RequireState

0-3 or *

Required state of the prerequisite quest. 2 means the prerequisite must be finished

RequireMinLevel

int or *

Minimum character level. * disables the check

RequireMaxLevel

int or *

Maximum character level. * disables the check

DW / DK / FE / MG / DL / SU / RF

0, 1, 2

Per-class gate. 0 = class cannot take this row, 1 = requires base class (ChangeUp 0 or higher), 2 = requires first class change or higher (ChangeUp 1+)

* is stored internally as -1 and skips the corresponding check.

Quest States

The server tracks each quest with a 2-bit field per quest slot inside the character's quest bitmask:

State value
Meaning

0

Not yet accepted

1

Accepted, objectives in progress

2

Finished (rewards granted)

3

Cancelled, can be re-accepted

Multi-Row Quests

When the player talks to the NPC, the server walks the quest list and picks the first row where:

  • StartType is 0

  • MonsterClass matches the NPC's class

  • The player's stored state for Index equals this row's CurrentState

  • The prerequisite quest is at RequireState (if RequireIndex is set)

  • The player's level is within RequireMinLevel..RequireMaxLevel

  • The player's class column is non-zero and less than or equal to ChangeUp + 1

A typical quest therefore has four rows with identical gating but different CurrentState values, one per state.

Cross-File Dependencies

Attribute
Related in

MonsterClass

Monster.xml (NPCs are entries in Monster.xml with NPC flag)

Index

QuestObjective.txt requirements and QuestReward.txt rewards

Per-class availability

DefaultClassInfo.txt (class indices)

Quest XP bonus

Common.dat AddQuestExperienceRate_AL0-3

NPC spawn locations

Common Issues

  • Quest not offered despite meeting gates - the prerequisite quest is not at the required state; check the chain upstream

  • NPC offers the same quest twice - two rows with the same Index, MonsterClass, and CurrentState; remove one

  • Quest invisible for a class - that class's column is 0, or the column value is higher than the character's ChangeUp + 1

  • Level window too tight - RequireMaxLevel is lower than the practical play level; the NPC silently skips the row

  • Quest advances out of order - RequireIndex points at a later quest; the chain must reflect the intended progression

Last updated