Struct BalanceTuning

Source
pub struct BalanceTuning {
Show 21 fields pub k_armor: f64, pub k_dodge: f64, pub power_norm: f64, pub enemy_curve_anchor_chapter: 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 class_counter_swing: 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,
}

Fields§

§k_armor: f64

DR knob for armor mitigation K/(armor+K). Env: OVERLORD_BAL_K_ARMOR.

§k_dodge: f64

DR knob for dodge/evasion ev/(ev+K). Env: OVERLORD_BAL_K_DODGE.

§power_norm: f64

Power-scalar normaliser. Env: OVERLORD_BAL_POWER_NORM.

§enemy_curve_anchor_chapter: i64

Last hand-made campaign chapter (formula curve starts above it). Env: OVERLORD_BAL_ENEMY_ANCHOR_CHAPTER.

§enemy_curve_anchor_power: f64

Enemy power at the anchor chapter. Env: OVERLORD_BAL_ENEMY_ANCHOR_POWER.

§chapter_power_step: f64

Enemy power geometric step per chapter — the progression gate. Env: OVERLORD_BAL_ENEMY_STEP.

§enemy_step_late: f64

Late-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: i64

Chapter at which the late-step taper begins. Env: OVERLORD_BAL_ENEMY_STEP_TAPER_START.

§sell_price_exp: f64

Item sale-price exponent on eff (income growth shape). Env: OVERLORD_BAL_SELL_EXP.

§sell_price_coef: f64

Item sale-price coefficient. Env: OVERLORD_BAL_SELL_COEF.

§class_counter_swing: f64

Soft 3-cycle class-counter swing (PvP). Env: OVERLORD_BAL_CLASS_SWING.

§regen_tick_max_pct: f64

Max 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: f64

Max per-tick HoT heal as a fraction of max HP. Env: OVERLORD_BAL_HOT_TICK_PCT.

§dot_tick_max_pct: f64

Max per-tick DoT damage as a fraction of max HP. Env: OVERLORD_BAL_DOT_TICK_PCT.

§enemy_early_bump: f64

Early-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: f64

Mid-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: f64

eff_by_level early-branch (L ≤ 130) coefficient. Env: OVERLORD_BAL_EFF_A1.

§eff_b1: f64

eff_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: f64

eff_by_level late-branch (L > 130) coefficient. Env: OVERLORD_BAL_EFF_A2.

§eff_b2: f64

eff_by_level late-branch exponent (raise above 0.1 so late power keeps growing instead of plateauing). Env: OVERLORD_BAL_EFF_B2.

§eff_c2: f64

eff_by_level late-branch offset (re-fit for continuity at L=130). Env: OVERLORD_BAL_EFF_C2.

Implementations§

Source§

impl BalanceTuning

Source

pub fn from_env() -> Self

Defaults, with any OVERLORD_BAL_* env var that parses applied on top. This is the sim-sweep entry point — no recompile, no deploy.

Trait Implementations§

Source§

impl Clone for BalanceTuning

Source§

fn clone(&self) -> BalanceTuning

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BalanceTuning

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for BalanceTuning

Source§

fn eq(&self, other: &BalanceTuning) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for BalanceTuning

Source§

impl StructuralPartialEq for BalanceTuning

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> IntoRequest<T> for T

§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<L> LayerExt<L> for L

§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in [Layered].
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<S, T> Upcast<T> for S
where T: UpcastFrom<S> + ?Sized, S: ?Sized,

Source§

fn upcast(&self) -> &T
where Self: ErasableGeneric, T: ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider ref type within the Wasm bindgen generics type system. Read more
Source§

fn upcast_into(self) -> T
where Self: Sized + ErasableGeneric, T: ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider type within the Wasm bindgen generics type system. Read more
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,