Skip to main content

Mastery System

·886 words·5 mins

Overview
#

Mastery is a secondary progression system layered on top of skill levels. Where skill XP measures your overall ability in a skill, mastery measures your dedication to a specific action. Every action in the game has its own independent mastery track, ranging from level 1 to 99.

Mastery rewards repetition. The more you perform a particular action, the more powerful it becomes – both for itself and for the skill it belongs to.


Mastery XP (mXP)
#

Earning mXP
#

Each time an action completes, it awards 1 mXP toward that action’s mastery level. This is intentionally small – mastery is a long-term grind, not something that races alongside skill XP.

mXP is tracked per-action and stored independently of skill XP.

XP Formula
#

Mastery uses the same exponential curve as skill XP:

mXP required for level N = floor(100 × 1.2^(N-2))     (for N ≥ 2)
Level mXP to reach Total mXP
2 100 100
5 207 670
10 516 2,590
25 3,833 31,080
50 91,004 909,190
75 2,160,000 ~21.5M
95 31,100,000 ~367M
99 63,400,000 ~838M
At 1 mXP per action with a 2.5s action, reaching level 99 takes roughly 2,400 hours of active grinding on a single action – before any mXP multiplier bonuses.

mXP Multiplier Bonuses
#

Once checkpoints are reached, mXP gain is boosted. See the Checkpoints section below.


Checkpoints
#

Checkpoints are milestone levels that permanently unlock bonuses. There are 6 checkpoints per action, and their effects are cumulative – each action in a skill that reaches a checkpoint independently contributes its bonus.

Level Title Icon Scope Bonus
10 Apprentice 📚 Skill ×1.25 mXP rate on all actions in this skill
25 Adept ⚗️ Skill ×1.1 outputs on all actions in this skill
50 Expert Skill -0.1s action time on all actions in this skill
75 Master 🌟 Global ×1.1 drop rates on all actions globally
95 Grandmaster 💎 Action ×3 outputs for this specific action
99 Legend 👑 Skill ×1.5 outputs on all actions in this skill

Scope
#

  • Action – bonus applies only to the action that reached this checkpoint.
  • Skill – bonus applies to all actions in the same skill.
  • Global – bonus applies to all actions across all skills.

Stacking
#

Bonuses from the same checkpoint stack multiplicatively across the actions that have unlocked them.

Example – Lv.10 (×1.25 mXP): If a skill has 5 actions and 3 have reached mastery level 10, every action in that skill earns mXP at 1.25^3 ≈ ×1.95.

Example – Lv.50 (-0.1s): If a skill has 5 actions and all 5 have reached mastery level 50, all actions in that skill run 0.5s faster. Duration is capped at a minimum of 0.5s.

Example – Lv.75 (×1.1 drop rates): If 8 actions across all skills have reached mastery level 75, all drop rates globally are multiplied by 1.1^8 ≈ ×2.14.

Combined output multiplier
#

At max mastery, assuming a skill with N actions all at level 99, the output multiplier for each action is:

Output = (1.1^N)    [from Lv.25]
       × (1.5^N)    [from Lv.99]
       × 3          [from Lv.95, this action only]

For a skill with 5 actions all at level 99, outputs on those actions reach: 1.1^5 × 1.5^5 × 3 ≈ ×72


Duration Reduction
#

The Lv.50 Expert checkpoint removes 100ms from action time for each action in the skill that has reached it. This is applied once when the action starts and does not update mid-action – restarting an action picks up any new bonuses.

Effective Duration = max(Base Duration - (N × 100ms), 500ms)

Where N is the number of actions in the skill at mastery level 50+.


UI
#

On the Action Card
#

Each action card displays a compact mastery section below the Duration / XP / Reward row:

  • Label: MASTERY
  • Level: Current mastery level (e.g. Lv. 12) or MAX at level 99
  • Progress bar: Thin Cerulean bar showing progress to next level
  • mXP counter: currentLevelXp / xpForNextLevel mXP

Mastery Button
#

A Mastery ★★···· button sits in the action card’s row alongside the Drop Table button. The stars represent checkpoint progress:

  • (filled) – checkpoint reached
  • · (dim dot) – checkpoint not yet reached

Tapping the button opens a detail sheet showing:

  1. Current mastery level and full progress bar
  2. Active Bonuses – the live computed multipliers this action currently benefits from
  3. Checkpoints – all 6 checkpoints with achieved/locked state and descriptions

Implementation Notes
#

Key files
#

File Purpose
frontend/data/mastery/checkpoints.ts Checkpoint definitions and description generator
frontend/lib/mastery-bonuses.ts Bonus calculation functions
frontend/components/mastery-info.tsx MasteryDisplay (inline card row) + MasteryInfo (button + sheet)
frontend/contexts/player-data-context.tsx mXP accumulation and bonus application on action complete

Bonus application in handleActionComplete
#

All mastery bonuses are computed from prev.actionMastery inside the setPlayerData callback, so they reflect the state before the current completion’s mXP is added:

const mxpMultiplier = getMasteryXpMultiplier(skill, prev.actionMastery);
const outputMultiplier = getMasteryOutputMultiplier(action.id, skill, prev.actionMastery);
const dropRateMultiplier = getMasteryDropRateMultiplier(prev.actionMastery);

Drop rate bonus is applied to the chance check (capped at 1.0 for guaranteed drops). Output bonus is applied to the quantity via Math.floor(quantity × outputMultiplier), minimum 1.

Duration bonus
#

Duration reduction is computed once when the action interval is set up, reading from playerDataRef.current.actionMastery. It does not update mid-action; the player must restart the action to pick up a newly unlocked Lv.50 bonus.

Minimum effective duration is 500ms regardless of stacked bonuses.