Skip to main content

Skills & Progression

Hyperscape features a skill-based progression system where skills level independently through use. The XP formula and combat level calculation are authentic recreations of Old School RuneScape mechanics.
Skills are managed by SkillsSystem in packages/shared/src/systems/shared/character/SkillsSystem.ts.

Available Skills

Combat Skills

Gathering Skills

Tool Validation (Updated March 2026): The gathering system now uses manifest-based tool validation to prevent cross-skill usage. Each tool in tools.json declares its skill explicitly (“woodcutting”, “mining”, “fishing”). This prevents exploits like using a pickaxe to cut trees.

Support Skills

Artisan Skills

Smithing is a two-step process: first smelt ores into bars at a furnace, then smith bars into equipment at an anvil. Smithing now supports outputQuantity for multi-output recipes (e.g., 15 arrowtips per bar).
Crafting uses thread (5 uses per item) for leather/dragonhide armor. Tanning converts hides to leather at tanner NPCs for a coin fee. Crafting features auto-select when only one recipe matches the input item.
Fletching produces multiple items per action (e.g., 15 arrow shafts per log). Quantity selection refers to actions, not output items. Fletching UI groups recipes by category for easier navigation.
Runecrafting is instant (no tick delay). Multi-rune multipliers grant additional runes per essence at higher levels (e.g., 2x air runes at level 11). Each altar is tied to a specific rune type and features mystical particle effects.

Prayer Training

Prayer is trained by burying bones dropped from combat: Bury Mechanics:
  • Right-click bones in inventory → “Bury”
  • 2-tick (1.2 second) delay between burials
  • XP granted immediately on successful bury
  • Bones consumed after burying
See Prayer System for complete prayer mechanics, drain formulas, and altar usage.

XP Formula

The XP table uses the authentic RuneScape formula. Level 92 represents the halfway point to 99 in total XP.

XP Requirements by Level

XP Cap: Maximum XP per skill is 200,000,000 (200M). This matches OSRS.

Level Calculations

Get Level from XP

XP to Next Level

Progress Percentage


Combat Level

Combat level is calculated from combat skills using the OSRS formula. Magic and Prayer are now included in the calculation.
Magic & Prayer Persistence: Magic and Prayer skills now persist to the database. Previously, these skills were not saved between sessions.

Combat Level Examples


Total Level

Total level is the sum of all skill levels.

Maximum Total Level

With 17 skills at level 99: 1,683 total level
New Skills Added: Crafting, Fletching, and Runecrafting are now fully implemented with OSRS-accurate mechanics, recipes, and XP formulas. All three skills persist to the database and integrate with the skill guide panel.

XP Sources

Combat XP

Gathering XP

Gathering resources is now defined in manifests/gathering/ with OSRS-accurate XP values: Woodcutting (gathering/woodcutting.json): Mining (gathering/mining.json):
Mining Depletion (Updated March 2026): Mining rocks use manifest-based depleteChance values. Regular ore rocks have depleteChance: 1.0 (always deplete after yielding ore). Rune essence rocks have depleteChance: 0 (never deplete, OSRS-accurate). Success rate depends only on Mining level, not pickaxe tier. Pickaxe tier affects roll frequency (speed), not success chance.
Resource Respawn (Updated March 2026): All resource respawns are now purely tick-based and deterministic (OSRS-accurate). The ResourceSystem.processRespawns() method handles all respawn timing via tick counting. Legacy setTimeout-based respawn has been removed for reliability.

Pickaxe Speed Bonuses

Dragon and Crystal pickaxes have a chance for bonus speed:
The bonus speed roll is server-authoritative to prevent client/server desyncs.
Mining Mechanics: Rocks always deplete after yielding one ore (100% depletion chance). Success rates are OSRS-accurate and depend only on Mining level, not pickaxe tier. Pickaxe tier affects roll frequency (speed) only. The bonus speed roll for Dragon/Crystal pickaxes is server-authoritative to prevent client/server desyncs.

Model Scale Normalization

Mining rocks (and all resources) now have normalized model scales to prevent “squished” or “stretched” appearance:
This normalization runs once when a model is first loaded, before caching. All clones will have correct proportions.
Fishing (gathering/fishing.json):

Artisan XP

Processing recipes are defined in manifests/recipes/ with OSRS-accurate XP values: Crafting (recipes/crafting.json):
Thread has 5 uses before being consumed. Tanning converts hides to leather for a coin fee (no XP).
Fletching (recipes/fletching.json):
Fletching produces multiple items per action for arrows/shafts (15 per action). Arrowtips are created via Smithing (15 per bar).
Runecrafting (recipes/runecrafting.json):
Runecrafting is instant (no tick delay). Multi-rune levels grant +1 rune per essence. Example: At level 22, you get 3 air runes per essence (base 1 + level 11 threshold + level 22 threshold).
Smelting (recipes/smelting.json):
Iron ore has a 50% success rate when smelting - failed attempts consume the ore but grant no bar or XP.
Smithing (recipes/smithing.json): Smithing requires a hammer in inventory and access to an anvil. Recipes are organized by category: Weapons: Armor: Tools:
Smithing recipes support “Make X” functionality - players can smith multiple items in one session. The system remembers the last custom quantity entered.
Cooking (recipes/cooking.json):

Food Consumption Mechanics

Food consumption follows OSRS-accurate timing and combat integration: Eating Delay:
  • 3-tick (1.8s) cooldown between eating foods
  • Managed by EatDelayManager (per-player tracking)
  • Food consumed only after validation passes
  • Message shown even at full health: “You eat the shrimp.”
Combat Integration:
  • Eating during combat adds 3-tick delay to attack cooldown
  • OSRS rule: Only adds delay if weapon is already on cooldown
  • If weapon is ready to attack, eating does NOT add delay
  • Prevents eating from being used to delay attacks strategically
Server-Authoritative Flow:
Security Features:
  • Rate limiting (3 requests/sec)
  • Input validation (slot bounds, item ID mismatch detection)
  • Heal amount capped at 99 HP (prevents manifest exploits)
  • Server-side eat delay enforcement
Food is consumed even at full health (OSRS-accurate). The eat delay and attack delay still apply.
Firemaking (recipes/firemaking.json):

Firemaking Mechanics

OSRS-Accurate: Players must stand still while lighting fires. Movement during the lighting animation cancels the action.
Lighting Process:
  1. Player clicks logs with tinderbox (or tinderbox on logs)
  2. Player movement is stopped automatically
  3. Lighting animation plays (3 seconds)
  4. Fire spawns at the position where lighting began
  5. Logs are consumed, XP is granted
Movement Cancellation:
Movement Detection: The system monitors player position during the 3-second lighting animation:
Fire Placement: Fires spawn at the cached start position, not the player’s current position:
Fire Lifecycle:
  • Fires burn for a limited time (configurable per log type)
  • When fires extinguish, they spawn ashes as a ground item
  • Ashes despawn after 2 minutes
  • Fire models use bounding box snapping to sit flush on terrain

Level Requirements

Skills gate access to equipment and activities. Requirements are now centralized in tier-requirements.json and skill-unlocks.json.

Tier-Based Equipment Requirements

Equipment now uses a tier system that automatically looks up requirements: Melee Weapons & Armor (Attack/Defence): Tools (Woodcutting/Mining):

Gathering Resource Requirements

Defined in gathering/*.json: Woodcutting: Mining:

Mining Success Rates (OSRS-Accurate)

Mining success rates depend only on Mining level, not pickaxe tier. Pickaxe tier affects roll frequency (speed) only. The formula uses linear interpolation between low and high values:
Rock Depletion (Updated March 2026): Regular mining rocks deplete after yielding one ore (depleteChance: 1.0). Rune essence rocks never deplete (depleteChance: 0, OSRS-accurate). Depletion chance is now read from the manifest instead of hardcoded constants. The only exception would be Mining gloves (not currently implemented).

Pickaxe Speed Bonuses

Pickaxe tier determines roll frequency (ticks between attempts):
Dragon/Crystal Pickaxe Bonus: These pickaxes have a chance to trigger a faster roll. The server rolls this randomly and applies it deterministically to prevent client/server desyncs.
Fishing:

Processing Recipe Requirements

Defined in recipes/*.json: Smelting: Levels 1-85 (Bronze to Rune bars) Smithing: Levels 1-91 (Bronze to Rune equipment) Cooking: Levels 1-80 (Shrimp to Shark) Firemaking: Levels 1-75 (Normal to Magic logs)

Smithing Requirements


Resource Respawn System (Updated March 2026)

Tick-Based Respawn: All resource respawns are now handled by ResourceSystem.processRespawns() via deterministic tick counting (OSRS-accurate). Legacy setTimeout-based respawn has been removed. How It Works:
  1. When a resource depletes, depletedAtTick is set to current tick
  2. ResourceSystem.processRespawns() runs every tick
  3. Checks if currentTick - depletedAtTick >= respawnTicks
  4. If true, resource respawns deterministically
Benefits:
  • Deterministic: Same respawn timing every time (no setTimeout variance)
  • OSRS-Accurate: Matches Old School RuneScape tick-based mechanics
  • Reliable: No race conditions or missed respawns
  • Testable: Predictable behavior for integration tests
Manifest-Based Depletion:
  • Mining now reads depleteChance from manifest instead of hardcoded constants
  • Regular ore rocks: depleteChance: 1.0 (always deplete)
  • Rune essence rocks: depleteChance: 0 (never deplete, OSRS-accurate)
  • Allows per-resource depletion behavior without code changes
Implementation (packages/shared/src/systems/shared/entities/gathering/ResourceSystem.ts):

Anti-Exploit Protections

Resource Spam Click Prevention

The gathering system prevents duplicate harvesting when players spam-click resources:
Protection Features:
  • Duplicate gather requests for the same resource are silently ignored
  • Prevents timer resets and duplicate drops
  • Allows switching to different resources (cancels old session first)
  • Guard clause executes after resource resolution for accurate comparison
This fix prevents the spam-click exploit where players could reset gathering timers by rapidly clicking the same resource.

Tool Validation System (Updated March 2026)

Manifest-Based Validation (PR #1098): The gathering system now uses tools.json manifest as the single source of truth for tool-to-skill mappings. Problem Solved: Substring matching allowed pickaxes to cut trees and hatchets to mine rocks because “pickaxe” contains “axe”. Solution: Each tool declares its skill explicitly in the manifest:
Validation Logic:
Impact:
  • Prevents cross-skill tool usage (pickaxe for woodcutting, hatchet for mining)
  • Eliminates false positives from combat weapons (battleaxe, greataxe)
  • Maintains OSRS-accurate fishing tool behavior (exact match required)
  • Forces all gathering tools to be in manifest for proper validation
Fishing Tool Exact Match:
Cross-Skill Prevention:
Noted Items: Bank notes cannot be used as tools. Un-note at a bank before using for skilling.
Fallback Warnings: If a tool is not in the manifest, the system logs a warning and uses fallback substring matching. Add all tools to tools.json to eliminate warnings and ensure proper validation.

Skill Events

The system emits events for UI updates and logging:

Milestones

Special milestones trigger events and messages:

API Reference

Grant XP

Check Requirements

Set Level (Admin)

Reset Skill


Skill Unlocks

The skill-unlocks.json manifest documents what players unlock at each level. This is used for UI display and progression tracking. Example unlocks:
  • Attack 40: Rune weapons
  • Attack 60: Dragon weapons
  • Woodcutting 15: Oak trees
  • Mining 30: Coal
  • Cooking 40: Lobster
  • Smithing 50: Mithril bar
See manifests/skill-unlocks.json for the complete list of unlocks for all skills.

Manifest-Driven Design

All skill-related data is now defined in JSON manifests:
  • tier-requirements.json - Equipment level requirements by tier
  • skill-unlocks.json - What unlocks at each level
  • gathering/*.json - Resource nodes, yields, and XP
  • recipes/*.json - Processing recipes and XP
This allows easy content updates without code changes and enables community modding.