# 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