Project icon ClassesCore
ClassesCore

Classes sub mod for the LevelingCore mod.

232
last month
LibraryGame MechanicsAdventure

Stats

Updated Apr 23, 2026

Stats

Stats define base attributes and level scaling applied to a class. These values directly modify the player's core stats provided by LevelingCore.

Unlike passives, stats are numerical values stored directly on the player and are modified when:

  • A class is selected
  • The player levels up
  • The player levels down

Stat Behavior

Stats are applied in three stages:

1. On Class Selection

When a player selects a class:

+ base
+ ((level - 1) * perLevel)

This means:

  • Players receive the base stat immediately
  • Players also receive retroactive scaling for their current level

2. On Level Up

Each level gained applies:

+ perLevel

3. On Level Down

Each level lost applies:

- perLevel

Stat Structure

Each stat is defined as an object inside the stats array.

{
  "id": "strength",
  "base": 10,
  "perLevel": 1
}

Fields

ID

Type: string

The stat identifier must match a supported LevelingCore stat.

Supported stat IDs

  • strength
  • agility
  • perception
  • vitality
  • intelligence
  • constitution

If an invalid ID is used, the stat will fail to apply.


Base

Type: number

The base value is applied once when the class is selected.

Behavior

  • Added to the player's current stat value
  • Does not overwrite existing stats
  • Safe to apply at any level

Example

{
  "id": "strength",
  "base": 10,
  "perLevel": 0
}

This adds +10 strength when the class is selected.


perLevel

Type: number

The perLevel value controls how much the stat changes per level.

Behavior

  • Added on level up
  • Removed on level down
  • Retroactively applied when selecting a class above level 1

Example

{
  "id": "vitality",
  "base": 10,
  "perLevel": 2
}

This results in:

  • +10 vitality on class select
  • +2 vitality per level

Full Example

"stats": [
  {
    "id": "strength",
    "base": 10,
    "perLevel": 1
  },
  {
    "id": "agility",
    "base": 10,
    "perLevel": 0
  },
  {
    "id": "perception",
    "base": 10,
    "perLevel": 1
  },
  {
    "id": "vitality",
    "base": 10,
    "perLevel": 2
  },
  {
    "id": "intelligence",
    "base": 10,
    "perLevel": 0
  },
  {
    "id": "constitution",
    "base": 10,
    "perLevel": 1
  }
]

Stacking Behavior

Stats are additive and stack with:

  • Existing player stats
  • Ability point allocations
  • Other system modifications

Example:

Base strength from class: +10
Level scaling (level 5, perLevel 1): +4
Manual points: +3

Final strength = current + 17

Current Limitations

  1. Only the six core stats are supported.
  2. Stats must match valid LevelingCore stat IDs.
  3. There is no built-in stat cap.
  4. Negative values are not recommended and may cause unintended behavior.

Recommended Authoring Rules

General Rules

  • Always use valid stat IDs
  • Keep base values reasonable
  • Use perLevel for scaling, not base inflation

Good Example

{
  "id": "vitality",
  "base": 12,
  "perLevel": 2
}

Avoid

{
  "id": "strength",
  "base": 1000,
  "perLevel": 0
}

This creates poor scaling and balance issues.


Design Notes

  • Stats are applied directly to stored values, not as modifiers
  • This makes them compatible with:
    • manual stat allocation
    • other systems modifying stats
  • Level scaling is handled incrementally to avoid recalculation issues

Future Expansion

This structure supports adding fields like:

{
  "id": "strength",
  "base": 10,
  "perLevel": 1,
  "cap": 100,
  "scaling": "linear"
}

These are not currently implemented but can be added later without breaking compatibility.

Powered byHytaleModding