forked from MagicBane/Server
75 lines
3.0 KiB
Markdown
75 lines
3.0 KiB
Markdown
# 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
|