Skip to content

Level 0 Skills Hardlocked at 20 Energy Requirement #273

@Mosch0512

Description

@Mosch0512

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:

  1. The Skill_Level (0) is multiplied by the Energy_Value.
  2. Any number multiplied by zero equals 0, effectively "deleting" your BMD settings.
  3. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions