> For the complete documentation index, see [llms.txt](https://axiomemu.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://axiomemu.gitbook.io/docs/data/questworld/questworldobjective.md).

# 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](/docs/data/questworld.md): `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 `Quantity` for the turn-in to succeed.

## Cross-File Dependencies

| Attribute                       | Related in                                   |
| ------------------------------- | -------------------------------------------- |
| `RequireIndex` + `RequireGroup` | [QuestWorld.txt](/docs/data/questworld.md)   |
| `Index` for Type 1 (kill)       | [Monster.xml](/docs/data/monster/monster.md) |
| `Index` for Type 4 (collect)    | [Item.xml](/docs/data/item/item.md)          |
| `Index` for Type 2 (skill)      | TODO: verify skill index table source        |

## Common Issues

* **Objective not tracking** - `RequireIndex` + `RequireGroup` combination does not match an active QuestWorld quest, or the quest is not in `RequireState`
* **Items never drop for quest** - no drop-rate override column exists; monster drop tables are unchanged
* **Kill count credits wrong monster** - `Index` mismatch 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=16` requires the client to send the quest button packet; no passive progression
