QuestWorldObjective.txt
Objectives for World Quests. Up to 5 objectives per quest, each scoped by RequireIndex, RequireGroup, and RequireState. Supports monster kills (with party sharing), item collection, "has skill" checks, level checks, and button-press goals.
File Location#
Data/QuestWorld/QuestWorldObjective.txt
Loaded once at GameServer startup. Changes require a restart.
Format#
Free-form table. Blank lines and a repeated header comment may be used to visually group rows by quest, but the loader reads continuously until end.
//Number Type Index Quantity Level Option1 Option2 Option3 NewOption RequireIndex RequireGroup RequireState DW DK FE MG DL SU RF
Columns#
| Column | Effect |
|---|---|
Number | Objective slot within the quest (0-4). The client shows them in this order and the server stores progress per-slot |
Type | Objective kind. 1 = Kill monster, 2 = Player already knows a skill, 4 = Hold an item in inventory, 8 = Reach level, 16 = Button / special counter (incremented by an in-game button press handler) |
Index | Target ID. For Type=1 the monster class; for Type=2 the skill index; for Type=4 the item index; for Type=8 and Type=16 unused |
Quantity | Count needed. For Type=8 (level) it is the required level; for Type=2 (skill) any non-zero value is satisfied by owning the skill |
Level | Item +level requirement (used only for Type=4) |
Option1/2/3 | Item option requirements shown in the client display (used only for Type=4) |
NewOption | Excellent option requirement shown in the client display (used only for Type=4) |
RequireIndex | QuestWorld Index this objective belongs to. * = no prerequisite |
RequireGroup | QuestWorld Group this objective belongs to |
RequireState | Quest state while this objective is active (usually 1 = accepted) |
DW ... RF | Per-class applicability. Same scale as QuestWorld.txt: 0 hidden, 1 1st class only, 2 1st and Change-Up |
Important Behavior#
- Kill counts are shared inside a party: when a party member lands the killing blow, the first party member with a matching active objective gets a +1 tick. Solo kills only credit the top-damage dealer.
- Item objectives check the inventory on demand; items are not consumed by the objective itself. Drop rates are whatever the killed monster's loot table yields - there is no quest-specific drop-rate override.
- Button / special objectives increment only via the explicit button packet from the client; they are not time- or kill-driven.
- All configured objectives for the quest must reach their
Quantityfor the turn-in to succeed.
Cross-File Dependencies#
| Attribute | Related in |
|---|---|
RequireIndex + RequireGroup | QuestWorld.txt |
Index for Type 1 (kill) | Monster.xml |
Index for Type 4 (collect) | Item.xml |
Index for Type 2 (skill) | TODO: verify skill index table source |
Common Issues#
- Objective not tracking -
RequireIndex+RequireGroupcombination does not match an active QuestWorld quest, or the quest is not inRequireState - Items never drop for quest - no drop-rate override column exists; monster drop tables are unchanged
- Kill count credits wrong monster -
Indexmismatch with Monster.xml class ID - Per-class flag misaligned - the 7 class columns (DW DK FE MG DL SU RF) must all be present; short rows are malformed and skipped
- Button objective never ticks -
Type=16requires the client to send the quest button packet; no passive progression