forked from MagicBane/Server
72 lines
2.6 KiB
Markdown
72 lines
2.6 KiB
Markdown
# Vendor Dialog Handler Documentation
|
|||
|
|
|
||
|
|
## Overview
|
||
|
|
This document describes the database relationships and interactions for the `dbVendorDialogHandler` class. The vendor dialog handler manages the dialog systems and interaction options for NPC vendors in the Magicbane emulator system.
|
||
|
|
|
||
|
|
## Handler Class
|
||
|
|
**File:** `src/engine/db/handlers/dbVendorDialogHandler.java`
|
||
|
|
**Class:** `dbVendorDialogHandler`
|
||
|
|
**Extends:** `dbHandlerBase`
|
||
|
|
|
||
|
|
## Database Tables
|
||
|
|
|
||
|
|
### Main Table(s)
|
||
|
|
- **Table Name:** `static_npc_dialog`
|
||
|
|
- **Description:** Core vendor dialog information including text, options, and responses
|
||
|
|
- **Columns:**
|
||
|
|
- UID (Primary Key)
|
||
|
|
- npcID
|
||
|
|
- dialogText
|
||
|
|
- responseType
|
||
|
|
- nextDialogID
|
||
|
|
- isFinal
|
||
|
|
- triggerEvent
|
||
|
|
|
||
|
|
### Related Tables
|
||
|
|
|
||
|
|
| Table Name | Description | Relationship |
|
||
|
|
|------------|-------------|--------------|
|
||
|
|
| `static_npc_dialog_option` | Defines available options for each dialog | DialogID → static_npc_dialog.UID |
|
||
|
|
| `obj_npc` | Links to the NPC that has this dialog system | npcID → obj_npc.UID |
|
||
|
|
|
||
|
|
## Key Queries
|
||
|
|
|
||
|
|
### Get Dialog by ID
|
||
|
|
```sql
|
||
|
|
SELECT * FROM `static_npc_dialog` WHERE `UID`=?
|
||
|
|
```
|
||
|
|
**File:** `dbVendorDialogHandler.java`, Line ~60
|
||
|
|
|
||
|
|
### Get Dialog Options for Dialog
|
||
|
|
```sql
|
||
|
|
SELECT * FROM `static_npc_dialog_option` WHERE `dialogID`=?
|
||
|
|
```
|
||
|
|
**File:** `dbVendorDialogHandler.java`, Line ~85
|
||
|
|
|
||
|
|
### Get Initial Dialog for NPC
|
||
|
|
```sql
|
||
|
|
SELECT * FROM `static_npc_dialog` WHERE `npcID`=? AND `nextDialogID` IS NULL
|
||
|
|
```
|
||
|
|
**File:** `dbVendorDialogHandler.java`, Line ~120
|
||
|
|
|
||
|
|
## Relationships
|
||
|
|
|
||
|
|
1. **Dialog to Options:** One-to-many (via `dialogID` → static_npc_dialog.UID)
|
||
|
|
2. **Dialog to NPC:** Many-to-one (via `npcID` → obj_npc.UID)
|
||
|
|
3. **Dialog to Next Dialog:** Chain of dialog progression through `nextDialogID`
|
||
|
|
|
||
|
|
## Java Field to Database Column Mappings
|
||
|
|
|
||
|
|
| Java Field | Database Column | Notes |
|
||
|
|
|------------|-----------------|-------|
|
||
|
|
| `npcID` | `static_npc_dialog.npcID` | Reference to the NPC this dialog belongs to |
|
||
|
|
| `dialogText` | `static_npc_dialog.dialogText` | Text displayed in the dialog |
|
||
|
|
| `responseType` | `static_npc_dialog.responseType` | Type of response expected (buy, sell, quest) |
|
||
|
|
| `nextDialogID` | `static_npc_dialog.nextDialogID` | ID of next dialog in sequence |
|
||
|
|
| `isFinal` | `static_npc_dialog.isFinal` | Whether this is the final dialog in chain |
|
||
|
|
| `triggerEvent` | `static_npc_dialog.triggerEvent` | Event that triggers this dialog |
|
||
|
|
|
||
|
|
## Notes
|
||
|
|
- Vendor dialogs provide interactive communication with NPCs
|
||
|
|
- Dialog systems support branching conversations and quest progression
|
||
|
|
- The system handles complex dialog chains with multiple options and outcomes
|