78 lines
2.7 KiB
Markdown
78 lines
2.7 KiB
Markdown
# Shrine Handler Documentation
|
|||
|
|
|
||
|
|
## Overview
|
||
|
|
This document describes the database relationships and interactions for the `dbShrineHandler` class. The shrine handler manages shrine structures and their properties in the Magicbane emulator system.
|
||
|
|
|
||
|
|
## Handler Class
|
||
|
|
**File:** `src/engine/db/handlers/dbShrineHandler.java`
|
||
|
|
**Class:** `dbShrineHandler`
|
||
|
|
**Extends:** `dbHandlerBase`
|
||
|
|
|
||
|
|
## Database Tables
|
||
|
|
|
||
|
|
### Main Table(s)
|
||
|
|
- **Table Name:** `obj_shrine`
|
||
|
|
- **Description:** Core shrine information including location, properties, and effects
|
||
|
|
- **Columns:**
|
||
|
|
- UID (Primary Key)
|
||
|
|
- name
|
||
|
|
- description
|
||
|
|
- locationX
|
||
|
|
- locationY
|
||
|
|
- locationZ
|
||
|
|
- shrineType
|
||
|
|
- isActive
|
||
|
|
- effectDuration
|
||
|
|
- effectPower
|
||
|
|
|
||
|
|
### Related Tables
|
||
|
|
|
||
|
|
| Table Name | Description | Relationship |
|
||
|
|
|------------|-------------|--------------|
|
||
|
|
| `obj_shrine_effect` | Defines effects provided by shrines | ShrineID → obj_shrine.UID, EffectID → obj_shrineeffect.UID |
|
||
|
|
| `dyn_shrine_usage` | Tracks usage history of shrines | ShrineID → obj_shrine.UID, CharacterID → obj_character.UID |
|
||
|
|
|
||
|
|
## Key Queries
|
||
|
|
|
||
|
|
### Get Shrine by ID
|
||
|
|
```sql
|
||
|
|
SELECT * FROM `obj_shrine` WHERE `UID`=?
|
||
|
|
```
|
||
|
|
**File:** `dbShrineHandler.java`, Line ~60
|
||
|
|
|
||
|
|
### Get Active Shrines
|
||
|
|
```sql
|
||
|
|
SELECT * FROM `obj_shrine` WHERE `isActive`=1
|
||
|
|
```
|
||
|
|
**File:** `dbShrineHandler.java`, Line ~85
|
||
|
|
|
||
|
|
### Get Shrine by Location
|
||
|
|
```sql
|
||
|
|
SELECT * FROM `obj_shrine` WHERE `locationX`=? AND `locationY`=? AND `locationZ`=?
|
||
|
|
```
|
||
|
|
**File:** `dbShrineHandler.java`, Line ~120
|
||
|
|
|
||
|
|
## Relationships
|
||
|
|
|
||
|
|
1. **Shrine to Effects:** Many-to-many through `obj_shrine_effect` table
|
||
|
|
2. **Shrine to Usage History:** One-to-many (via `dyn_shrine_usage.ShrineID`)
|
||
|
|
3. **Shrine to Shrine Types:** Different types of shrines with different effects
|
||
|
|
|
||
|
|
## Java Field to Database Column Mappings
|
||
|
|
|
||
|
|
| Java Field | Database Column | Notes |
|
||
|
|
|------------|-----------------|-------|
|
||
|
|
| `name` | `obj_shrine.name` | Shrine name |
|
||
|
|
| `description` | `obj_shrine.description` | Description of the shrine |
|
||
|
|
| `locationX` | `obj_shrine.locationX` | X coordinate of shrine location |
|
||
|
|
| `locationY` | `obj_shrine.locationY` | Y coordinate of shrine location |
|
||
|
|
| `locationZ` | `obj_shrine.locationZ` | Z coordinate of shrine location |
|
||
|
|
| `shrineType` | `obj_shrine.shrineType` | Type of shrine (healing, buff, etc.) |
|
||
|
|
| `isActive` | `obj_shrine.isActive` | Whether the shrine is currently active |
|
||
|
|
| `effectDuration` | `obj_shrine.effectDuration` | Duration of shrine effects |
|
||
|
|
| `effectPower` | `obj_shrine.effectPower` | Power level of shrine effects |
|
||
|
|
|
||
|
|
## Notes
|
||
|
|
- Shrines provide various beneficial effects to players who interact with them
|
||
|
|
- They can be healing shrines, buff shrines, or other special effect shrines
|
||
|
|
- The system tracks usage history for balance and maintenance purposes
|