Issue: Level 0 Skills Hardlocked at 20 Energy Requirement
Description
A logic error exists in the client-side energy requirement calculation. When a skill is Level 0, the formula nullifies the input from the data files, forcing the energy requirement to a hardcoded value of 20. This prevents any manual balancing or customization of base-level skills via the skill.bmd file.
Formula Legend
| Term |
Source / Meaning |
| Final Requirement |
The actual energy value enforced by the game client. |
| Base Constant (20) |
A hardcoded value in the client source code. |
| Energy Value |
The energy requirement value defined in the skill.bmd file. |
| Skill Level |
The current level of the skill (sourced from skill.bmd or data). |
| Scaling Factor (0.04) |
The multiplier used to increase requirement as level rises. |
Technical Analysis
The client determines the required energy using the following logic:
SkillManger.cpp
skillRequirements.SkillEnergy = (20 + (SkillAttribute[skillType].Energy * SkillAttribute[skillType].Level) * 0.04);
$$Final\ Requirement = 20 + (Energy\ Value \times Skill\ Level \times 0.04)$$
The "Zero Multiplier" Problem
While the formula provides scaling for Level 1 and above, it fails at Level 0 because:
- The
Skill_Level (0) is multiplied by the Energy_Value.
- Any number multiplied by zero equals 0, effectively "deleting" your BMD settings.
- The calculation becomes $20 + 0 = 20$.
Impact:
- Customization is Disabled: Changes made to the
skill.bmd for Level 0 skills are ignored by the client.
- Locked Requirements: You cannot create skills that require 0 Energy or high Energy at their base level; they are all stuck at 20.
Proposed Solutions
Solution 1: Code Modification
The client logic should be adjusted to treat Level 0 as the first scaling step. This maintains the scaling for higher levels while allowing the Energy Value in the BMD to actually function at Level 0.
Revised Formula
$$Final\ Requirement = 20 + (Energy\ Value \times (Skill\ Level + 1) \times 0.04)$$
Results after fix:
- Level 0: The
Energy Value is multiplied by 1, making the BMD data relevant.
- Higher Levels: Scaling continues to function normally (Level 1 becomes 2, Level 2 becomes 3, etc.), ensuring the requirement grows as the skill becomes more powerful.
Solution 2: Data Level Adjustment
If modifying the source code is not preferred, an alternative is to update the skill.bmd file directly so that no skill exists at Level 0.
Action: Set the Level of all affected skills from 0 to 1 in the skill.bmd.
- Result: By starting skills at Level 1, the multiplier becomes 1 instead of 0. This bypasses the mathematical "dead zone" and allows the Energy Requirement column to be recognized by the existing client formula.
- Note: This may require adjusting other level-dependent stats in the BMD to ensure early-game balance remains the same. Not sure if thats relevent though
Issue: Level 0 Skills Hardlocked at 20 Energy Requirement
Description
A logic error exists in the client-side energy requirement calculation. When a skill is Level 0, the formula nullifies the input from the data files, forcing the energy requirement to a hardcoded value of 20. This prevents any manual balancing or customization of base-level skills via the
skill.bmdfile.Formula Legend
skill.bmdfile.skill.bmdor data).Technical Analysis
The client determines the required energy using the following logic:
SkillManger.cpp
The "Zero Multiplier" Problem
While the formula provides scaling for Level 1 and above, it fails at Level 0 because:
Skill_Level(0) is multiplied by theEnergy_Value.Impact:
skill.bmdfor Level 0 skills are ignored by the client.Proposed Solutions
Solution 1: Code Modification
The client logic should be adjusted to treat Level 0 as the first scaling step. This maintains the scaling for higher levels while allowing the
Energy Valuein the BMD to actually function at Level 0.Revised Formula
Results after fix:
Energy Valueis multiplied by 1, making the BMD data relevant.Solution 2: Data Level Adjustment
If modifying the source code is not preferred, an alternative is to update the skill.bmd file directly so that no skill exists at Level 0.
Action: Set the Level of all affected skills from 0 to 1 in the skill.bmd.