Overview
Quests in L2J Mobius are Java classes extending theQuest base class. They handle player progression, item rewards, state management, and NPC interactions.
Quest Structure
Every quest follows this basic structure:Quest Components
1. Quest Constructor
The constructor registers the quest and sets up NPC interactions:Q00419_GetAPet.java (lines 80-87)
2. Event Handlers
Quests respond to three main events:- onEvent
- onTalk
- onKill
Handles player choices and quest progression:
Q00419_GetAPet.java (lines 89-171)
Quest State Management
Quest States
Quests track player progress using states:| State | Description |
|---|---|
State.CREATED | Quest available but not started |
State.STARTED | Quest in progress |
State.COMPLETED | Quest finished successfully |
QuestState Methods
Item Management
Giving Items
Taking Items
Registering Quest Items
Quest items are automatically deleted when quest ends:Drop Configuration
Configure monster drops using Maps:Q00419_GetAPet.java (lines 59-78)
Quest Sounds
Provide audio feedback to players:HTML Dialog Files
Quest dialogs are stored indist/game/data/html/ directory:
Complete Quest Example
Here’s a simplified hunting quest:Registering Your Quest
Add your quest toQuestMasterHandler.java:
Advanced Features
Timed Quests
Multi-Stage Quests
Repeatable Quests
Best Practices
Use Constants
Use Constants
Define all IDs as constants at the top of the class for easy maintenance.
Null Checks
Null Checks
Always check if QuestState exists before accessing it.
HTML Files
HTML Files
Keep quest dialogs in HTML files rather than hardcoding strings.
Sound Feedback
Sound Feedback
Use appropriate sounds for better player experience.
Next Steps
AI Scripts
Learn how to create custom AI for NPCs and bosses