Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions _datafiles/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,84 @@ GamePlay:
# If false, players can form and join parties from anywhere in the world.
SameRoomOnly: false

# Progression settings
# Controls all character progression formulas: stat gains, HP/Mana, XP curve, and level-up rewards.
# Visit /admin/progression for a live visual editor with charts.
Progression:
# --- Stat gain formula ---
# racial_value(level) = floor(base * BaseModFactor * (level-1)^BaseModExponent)
# + floor(NaturalGainsModFactor * level^NaturalGainsExponent)
#
# - BaseModFactor -
# Scales how much a racial base stat contributes to growth per level.
# Higher values cause strong-base races to pull further ahead of weak-base races.
BaseModFactor: 0.3333333334
# - BaseModExponent -
# Shape of the base-scaled component. 1.0 = linear. <1.0 = diminishing returns.
# >1.0 = accelerating returns. Valid range: 0.1 to 5.0.
BaseModExponent: 1.0
# - NaturalGainsModFactor -
# Flat gains every character receives per level regardless of race.
# Higher values raise the floor for weak-base races.
NaturalGainsModFactor: 0.5
# - NaturalGainsExponent -
# Shape of the flat gains component. 1.0 = linear. <1.0 = diminishing returns.
# >1.0 = accelerating. Valid range: 0.1 to 5.0.
NaturalGainsExponent: 1.0
# --- HP formula: HealthMax = HPBase + level*HPPerLevel + Vitality_adj*HPPerVitality + mods ---
HPBase: 5
HPPerLevel: 1.0
HPPerVitality: 4.0
# --- Mana formula: ManaMax = ManaBase + level*ManaPerLevel + Mysticism_adj*ManaPerMysticism + mods ---
ManaBase: 4
ManaPerLevel: 1.0
ManaPerMysticism: 3.0
# --- Level-up rewards ---
# Points awarded to the player on each qualifying level.
# EveryNLevels controls how often a qualifying level occurs:
# 1 = every level, 2 = every other level, 3 = every 3rd level, etc.
TrainingPointsPerLevel: 1
TrainingPointsEveryNLevels: 1
StatPointsPerLevel: 1
StatPointsEveryNLevels: 1
# --- XP curve ---
# XP_to_level(L) = (XPBase + L^XPLevelPower * XPLevelFactor * XPBase) * TNLScale
# - XPBase -
# Flat XP cost component. Scales the entire curve up or down.
XPBase: 1000
# - XPLevelFactor -
# Multiplier on the level-based component. Higher = more XP required per level.
XPLevelFactor: 0.75
# - XPLevelPower -
# Exponent controlling curve steepness. 2.0 = quadratic. 1.5 = gentler. 3.0 = steeper.
# Valid range: 0.1 to 5.0.
XPLevelPower: 2.0
# - MaxLevel -
# Soft display cap for admin charts. Does not enforce a hard level cap.
MaxLevel: 100
# --- Stat value compression ---
# Once a stat's Value reaches StatCapThreshold, further gains are compressed:
# ValueAdj = StatCapAnchor + round((Value - StatCapAnchor)^StatCapExponent * StatCapScale)
# - StatCapThreshold -
# The Value at which compression begins. Default 105.
StatCapThreshold: 105
# - StatCapAnchor -
# The value the compression is anchored to. Overage = Value - StatCapAnchor. Default 100.
StatCapAnchor: 100
# - StatCapExponent -
# Curve shape above the cap. 0.5 = sqrt (strong compression, default).
# 1.0 = no compression (linear). Above 1.0 = reduced compression (1.5 = gentle, 2.0 = very gentle).
# 0.25 = very aggressive compression. Valid range: 0.01 to 4.0.
StatCapExponent: 0.5
# - StatCapScale -
# Multiplier applied after the exponent. Default 2.0.
StatCapScale: 2.0
# - StatCapExemptBonus -
# When true, only the racial portion of a stat is compressed. Training points and
# equipment/buff mods are added on top of the compressed racial value at full value.
# Default false (original behaviour: all sources compressed together).
StatCapExemptBonus: false

################################################################################
#
# INTEGRATIONS
Expand Down
23 changes: 23 additions & 0 deletions _datafiles/html/admin/config.html
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,29 @@ <h3>Pending Changes</h3>
'GamePlay.Combat.CritMultMax': 'Maximum critical hit damage multiplier when attacker has full Perception advantage over the defender.',
'GamePlay.Combat.DodgeChanceMin': 'Minimum chance to dodge an incoming hit (percent). Applied when defender has no Perception advantage over the attacker.',
'GamePlay.Combat.DodgeChanceMax': 'Maximum chance to dodge an incoming hit (percent) when defender has full Perception advantage over the attacker.',
'GamePlay.Progression.BaseModFactor': 'Scales how much a racial base stat contributes to growth per level. Higher values cause strong-base races to diverge more from weak-base races.',
'GamePlay.Progression.BaseModExponent': 'Curve shape for the racial component. 1.0 = linear. Less than 1.0 = diminishing returns at high levels. Greater than 1.0 = accelerating. Valid range: 0.1 to 5.0.',
'GamePlay.Progression.NaturalGainsModFactor': 'Flat stat gains every character receives per level regardless of race. Higher values raise the floor for weak-base races.',
'GamePlay.Progression.NaturalGainsExponent': 'Curve shape for the flat gains component. 1.0 = linear. Less than 1.0 = diminishing returns. Valid range: 0.1 to 5.0.',
'GamePlay.Progression.HPBase': 'Flat HP added to every character independent of level or stats.',
'GamePlay.Progression.HPPerLevel': 'HP gained per character level.',
'GamePlay.Progression.HPPerVitality': 'HP gained per point of adjusted Vitality.',
'GamePlay.Progression.ManaBase': 'Flat mana added to every character independent of level or stats.',
'GamePlay.Progression.ManaPerLevel': 'Mana gained per character level.',
'GamePlay.Progression.ManaPerMysticism': 'Mana gained per point of adjusted Mysticism.',
'GamePlay.Progression.TrainingPointsPerLevel': 'Training points awarded on each qualifying level-up.',
'GamePlay.Progression.TrainingPointsEveryNLevels': 'How often a training point qualifying level occurs. 1 = every level, 2 = every other level, 3 = every 3rd level, etc.',
'GamePlay.Progression.StatPointsPerLevel': 'Stat points awarded on each qualifying level-up.',
'GamePlay.Progression.StatPointsEveryNLevels': 'How often a stat point qualifying level occurs. 1 = every level, 2 = every other level, 3 = every 3rd level, etc.',
'GamePlay.Progression.XPBase': 'Flat XP component. Scales the entire XP curve up or down.',
'GamePlay.Progression.XPLevelFactor': 'Multiplier on the level-based XP component. Higher = more XP required per level.',
'GamePlay.Progression.XPLevelPower': 'Exponent controlling XP curve steepness. 2.0 = quadratic, 1.5 = gentler, 3.0 = steeper. Valid range: 0.1 to 5.0.',
'GamePlay.Progression.MaxLevel': 'Soft display cap used in admin charts. Does not enforce a hard level cap.',
'GamePlay.Progression.StatCapThreshold': 'The stat Value at which compression begins. Below this, ValueAdj equals Value.',
'GamePlay.Progression.StatCapAnchor': 'The value the compression formula is anchored to. Overage = Value minus Anchor.',
'GamePlay.Progression.StatCapExponent': 'Compression curve shape above the cap. 0.5 = sqrt (strong compression, default). 1.0 = no compression. Above 1.0 = reduced compression (1.5 = gentle, 2.0 = very gentle). Valid range: 0.01 to 4.0.',
'GamePlay.Progression.StatCapScale': 'Multiplier applied after the exponent in the compression formula. Default 2.0.',
'GamePlay.Progression.StatCapExemptBonus': 'When true, only the racial portion of a stat is compressed. Training points and equipment or buff mods are added on top at full value, ensuring deliberate investment always pays off.',
'GamePlay.PVP.Enabled': 'PVP mode. Options: enabled (everywhere), disabled (nowhere), limited (PVP-flagged rooms only).',
'GamePlay.PVP.MinimumLevel': 'Minimum level required to participate in PVP. Only applies when PVP is enabled or limited.',
'GamePlay.XPScale': 'Global XP multiplier as a percentage. 100 = normal.',
Expand Down
Loading