pub struct BalanceTuning {Show 28 fields
pub k_armor: f64,
pub k_dodge: f64,
pub power_norm: f64,
pub enemy_curve_anchor_chapter: i64,
pub hand_authored_chapter_max: i64,
pub enemy_curve_anchor_power: f64,
pub chapter_power_step: f64,
pub enemy_step_late: f64,
pub enemy_step_taper_start: i64,
pub sell_price_exp: f64,
pub sell_price_coef: f64,
pub crit_chance_scale: f64,
pub boss_crit_chance: f64,
pub boss_armor: f64,
pub armor_k_per_chapter: f64,
pub regen_tick_max_pct: f64,
pub hot_tick_max_pct: f64,
pub dot_tick_max_pct: f64,
pub enemy_early_bump: f64,
pub enemy_mid_bump: f64,
pub eff_a1: f64,
pub eff_b1: f64,
pub eff_a2: f64,
pub eff_b2: f64,
pub eff_c2: f64,
pub wave_damage_skew: f64,
pub wave_hp_skew: f64,
pub enemy_curve_mode: EnemyCurveMode,
}Fields§
§k_armor: f64DR knob for armor mitigation K/(armor+K). Env: OVERLORD_BAL_K_ARMOR.
k_dodge: f64DR knob for dodge/evasion ev/(ev+K). Env: OVERLORD_BAL_K_DODGE.
power_norm: f64Power-scalar normaliser. Env: OVERLORD_BAL_POWER_NORM.
enemy_curve_anchor_chapter: i64Last hand-made campaign chapter (formula curve starts above it). Env: OVERLORD_BAL_ENEMY_ANCHOR_CHAPTER.
Highest 0-based chapter level resolved from hand-authored base_power in
enemy_power_scalar (the base_power/curve split). See
HAND_AUTHORED_CHAPTER_MAX. Env: OVERLORD_BAL_HAND_AUTHORED_CHAPTER_MAX.
enemy_curve_anchor_power: f64Enemy power at the anchor chapter. Env: OVERLORD_BAL_ENEMY_ANCHOR_POWER.
chapter_power_step: f64Enemy power geometric step per chapter — the progression gate. Env: OVERLORD_BAL_ENEMY_STEP.
enemy_step_late: f64Late-game enemy step floor. Past enemy_step_taper_start the per-chapter
step decays smoothly from chapter_power_step toward this value, so the
difficulty gate tracks the player’s DECELERATING late power growth
(~1.12×/ch) instead of staying at the early 1.30 — which out-paced late
power and produced multi-day chapter stalls / a hard wall. With >= chapter_power_step the taper is OFF (closed-form, unchanged). Env:
OVERLORD_BAL_ENEMY_STEP_LATE.
enemy_step_taper_start: i64Chapter at which the late-step taper begins. Env: OVERLORD_BAL_ENEMY_STEP_TAPER_START.
sell_price_exp: f64Item sale-price exponent on eff (income growth shape). Env: OVERLORD_BAL_SELL_EXP.
sell_price_coef: f64Item sale-price coefficient. Env: OVERLORD_BAL_SELL_COEF.
crit_chance_scale: f64Crit-chance multiplier (1.0 = shipped). Sigmoid-steepening dial: crit
is a ×2+ damage coin-flip per hit — the largest binary outcome-RNG.
Env: OVERLORD_BAL_CRIT_SCALE. 0.0 disables crits entirely.
boss_crit_chance: f64Boss combat texture: crit_chance (permyriad) granted to boss entities
at spawn, carved OUT of their attack budget (power neutral).
Env: OVERLORD_BAL_BOSS_CRIT. 0 = off.
boss_armor: f64Boss armor rating granted at spawn, carved out of the HP budget
(EHP/TTK neutral). Env: OVERLORD_BAL_BOSS_ARMOR. 0 = off.
armor_k_per_chapter: f64WoW-style rating deflation for PLAYER armor. Without it item armor
saturates the DR curve from the first band (mitigation creeps 64% →
~78% across the game, decaying the marginal value of an armor point
×1.66). Deflating the aggregated player rating by
k/(k + per_ch·chapter) is equivalent to growing K_ARMOR with content
level but lives in ONE place (attribute aggregation), so combat, the
honest scalar and the UI stay consistent automatically. 15/ch is the
gentle calibration (late mitigation ≈68.5%, marginal decay ×1.25);
33/ch would flatten mitigation to the first-band level entirely.
Env: OVERLORD_BAL_ARMOR_K_PER_CH. 0 = off.
regen_tick_max_pct: f64Max per-tick combat regen heal as a fraction of max HP — bounds regen in
combat (the scalar bound is separate) so high regen can’t out-heal all
damage / instant-full a tank. Env: OVERLORD_BAL_REGEN_TICK_PCT.
hot_tick_max_pct: f64Max per-tick HoT heal as a fraction of max HP. Env: OVERLORD_BAL_HOT_TICK_PCT.
dot_tick_max_pct: f64Max per-tick DoT damage as a fraction of max HP. Env: OVERLORD_BAL_DOT_TICK_PCT.
enemy_early_bump: f64Early-game stat-check bump strength applied at ch3 (tapering ch4/ch5),
so the first gear conversions are forced. ch2 is left untouched (it is
resource-capped by the 20 starter cookies — a bump there DEADLOCKS, sim-
confirmed). 1.0 = off. Env: OVERLORD_BAL_ENEMY_EARLY_BUMP.
enemy_mid_bump: f64Mid-game boss-only bump applied at ch7–15 to enforce the gear-engagement gate.
Applied exclusively to CampaignBossFight in enemy_power_scalar; wave fights
are unaffected so the global enemy_power_for_chapter curve stays monotone.
At 8.0: a frozen player (stopped at ch5, power ~2121) faces P/E ≈ 0.34 at the
ch7 boss → ~7% first-try win rate; combined with stop_on_lose=true on bosses
and the lazy bot not retrying, this creates the hard wall. Engaged players
open more chests between attempts and eventually clear the boss. Tapers to 1.0
at ch16 (one past ability-slot unlock at ch15). 1.0 = off.
Env: OVERLORD_BAL_ENEMY_MID_BUMP.
eff_a1: f64eff_by_level early-branch (L ≤ 130) coefficient. Env: OVERLORD_BAL_EFF_A1.
eff_b1: f64eff_by_level early-branch exponent — THE early-power shape knob (lower =
flatter early growth, decouples power from level/clock). Env: OVERLORD_BAL_EFF_B1.
eff_a2: f64eff_by_level late-branch (L > 130) coefficient. Env: OVERLORD_BAL_EFF_A2.
eff_b2: f64eff_by_level late-branch exponent (raise above 0.1 so late power keeps
growing instead of plateauing). Env: OVERLORD_BAL_EFF_B2.
eff_c2: f64eff_by_level late-branch offset (re-fit for continuity at L=130). Env: OVERLORD_BAL_EFF_C2.
wave_damage_skew: f64Wave LETHALITY skew: multiplies the wave’s damage-output normalization
relative to the mirror reference’s EHP. >1 ⇒ the wave hits harder than
the pure mirror (more death pressure / lower hp_end at equal win-rate).
Env: OVERLORD_BAL_WAVE_DAMAGE_SKEW.
wave_hp_skew: f64Wave KILL-TIME skew: divides the reference DPS the wave’s total-HP
budget is built from. >1 ⇒ the wave has LESS HP than the pure mirror
(dies faster / checks less sustained DPS).
Env: OVERLORD_BAL_WAVE_HP_SKEW.
EXACT LAW (verified analytically + numerically): the wave’s survive/die
break-even sits at true-power ratio
r_draw = wave_damage_skew / wave_hp_skew, and fight length scales as
1 / wave_hp_skew. An equal pair keeps the draw at exactly r=1 (skews
cancel) while setting the tempo. Move the RATIO to shift the break-even
(harder: damage↑ or hp↓); move both together to change tempo without
touching the threshold.
enemy_curve_mode: EnemyCurveModeWhich enemy-curve formula runs: Legacy anchor/step/taper or Derived
— the smooth campaign curve (S_ref-seeded FTUE, sparse early E_base
calibration, boss sqrt(1.30), then one universal geometric tail).
Env: OVERLORD_BAL_ENEMY_CURVE_MODE = legacy | derived.
Implementations§
Source§impl BalanceTuning
impl BalanceTuning
Trait Implementations§
Source§impl Clone for BalanceTuning
impl Clone for BalanceTuning
Source§fn clone(&self) -> BalanceTuning
fn clone(&self) -> BalanceTuning
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more