# Skill Requirement Handler Documentation ## Overview This document describes the database relationships and interactions for the `dbSkillReqHandler` class. The skill requirement handler manages the prerequisites and conditions needed to unlock or use various skills in the Magicbane emulator system. ## Handler Class **File:** `src/engine/db/handlers/dbSkillReqHandler.java` **Class:** `dbSkillReqHandler` **Extends:** `dbHandlerBase` ## Database Tables ### Main Table(s) - **Table Name:** `static_skill_requirement` - **Description:** Core skill requirement information including type, value, and conditions - **Columns:** - UID (Primary Key) - skillID - requirementType - requirementValue - prerequisiteSkillID - prerequisiteLevel - prerequisiteStat ### Related Tables | Table Name | Description | Relationship | |------------|-------------|--------------| | `obj_skillbase` | Links to the skill that has requirements | SkillID → obj_skillbase.UID | | `obj_character_skill` | Tracks character-specific skill status | CharacterID → obj_character.UID, SkillID → obj_skillbase.UID | ## Key Queries ### Get Skill Requirements by Skill ID ```sql SELECT * FROM `static_skill_requirement` WHERE `skillID`=? ``` **File:** `dbSkillReqHandler.java`, Line ~60 ### Get Specific Requirement by ID ```sql SELECT * FROM `static_skill_requirement` WHERE `UID`=? ``` **File:** `dbSkillReqHandler.java`, Line ~85 ### Get Requirements for Character Skill ```sql SELECT sr.*, cs.level as characterLevel FROM `static_skill_requirement` sr LEFT JOIN `obj_character_skill` cs ON sr.`prerequisiteSkillID` = cs.`SkillID` WHERE sr.`skillID`=? ``` **File:** `dbSkillReqHandler.java`, Line ~120 ## Relationships 1. **Skill Requirement to Skill Base:** Many-to-one (via `skillID` → obj_skillbase.UID) 2. **Skill Requirement to Prerequisite Skills:** Many-to-one (via `prerequisiteSkillID` → obj_skillbase.UID) 3. **Skill Requirement to Character Skills:** One-to-many through character skill tracking ## Java Field to Database Column Mappings | Java Field | Database Column | Notes | |------------|-----------------|-------| | `skillID` | `static_skill_requirement.skillID` | Reference to the skill that requires this condition | | `requirementType` | `static_skill_requirement.requirementType` | Type of requirement (level, skill, stat) | | `requirementValue` | `static_skill_requirement.requirementValue` | Value needed for requirement | | `prerequisiteSkillID` | `static_skill_requirement.prerequisiteSkillID` | Prerequisite skill ID if applicable | | `prerequisiteLevel` | `static_skill_requirement.prerequisiteLevel` | Required level of prerequisite skill | | `prerequisiteStat` | `static_skill_requirement.prerequisiteStat` | Required stat value if applicable | ## Notes - Skill requirements define the conditions needed to unlock or use skills - Requirements can be based on character level, other skills, or specific stats - The system supports complex requirement chains for advanced skill trees