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.txtLoaded 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
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:
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:
StartTypeis0MonsterClassmatches the NPC's classThe player's stored state for
Indexequals this row'sCurrentStateThe prerequisite quest is at
RequireState(ifRequireIndexis set)The player's level is within
RequireMinLevel..RequireMaxLevelThe 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
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, andCurrentState; remove oneQuest invisible for a class - that class's column is
0, or the column value is higher than the character'sChangeUp + 1Level window too tight -
RequireMaxLevelis lower than the practical play level; the NPC silently skips the rowQuest advances out of order -
RequireIndexpoints at a later quest; the chain must reflect the intended progression
Last updated