Struct PetFacetSettings

Source
pub struct PetFacetSettings {
Show 35 fields pub rank_growth_permyriad: i64, pub head_start_ticks: u64, pub second_spark_percent: f64, pub budget_plan_cost_multiplier: f64, pub budget_plan_casts: i64, pub open_tab_surcharge_percent: f64, pub open_tab_payload_share_percent: f64, pub overtime_attack_speed_percent: f64, pub overtime_duration_ticks: u64, pub magic_volley_bolts: i64, pub magic_volley_percent: f64, pub safety_net_reduction_percent: f64, pub safety_net_duration_ticks: u64, pub retaliation_percent: f64, pub calibration_crit_percent: f64, pub calibration_attacks: i64, pub lucky_star_percent: f64, pub lead_reading_resonance_percent: f64, pub lead_reading_activations: i64, pub wild_reading_effect_percent: f64, pub wild_reading_duration_ticks: u64, pub advance_notice_gauge_percent: f64, pub rising_gate_procs: i64, pub rising_gate_multiplier_l1: f64, pub rising_gate_multiplier_l10: f64, pub prepared_slots_percent: f64, pub first_spell_percent: f64, pub souvenir_procs: i64, pub souvenir_percent: f64, pub dream_reader_percent: f64, pub packed_lunch_heal_percent: f64, pub life_bloom_percent_l1: f64, pub life_bloom_percent_l10: f64, pub life_bloom_duration_ticks: u64, pub power_q: Vec<PetFacetPowerQ>,
}
Expand description

Tunables of Pet Facets / Team Die v0.

One flat settings singleton rather than a per-facet content catalog: the twenty facets are RULES, authored in code ([essences::pet_facets::PetFacet]), and only their numbers are balance. A catalog would have added twenty content objects, twenty translation records and a link column on PetTemplate without making a single number more tunable than it is here.

Percentages are whole percent (35.0 = +35%); every *_ticks value is MILLISECONDS of fight clock (6_000 = 6 s).

Fields§

§rank_growth_permyriad: i64

How much one pet level above the first raises every facet MAGNITUDE, in permyriad (500 = +5% per level). Counts, durations and charge numbers are deliberately NOT scaled: rank scales the numbers of a facet, it never changes its rules.

§head_start_ticks: u64§second_spark_percent: f64§budget_plan_cost_multiplier: f64§budget_plan_casts: i64§open_tab_surcharge_percent: f64§open_tab_payload_share_percent: f64§overtime_attack_speed_percent: f64§overtime_duration_ticks: u64§magic_volley_bolts: i64§magic_volley_percent: f64§safety_net_reduction_percent: f64§safety_net_duration_ticks: u64§retaliation_percent: f64§calibration_crit_percent: f64§calibration_attacks: i64§lucky_star_percent: f64§lead_reading_resonance_percent: f64§lead_reading_activations: i64§wild_reading_effect_percent: f64§wild_reading_duration_ticks: u64§advance_notice_gauge_percent: f64§rising_gate_procs: i64§rising_gate_multiplier_l1: f64§rising_gate_multiplier_l10: f64§prepared_slots_percent: f64§first_spell_percent: f64§souvenir_procs: i64§souvenir_percent: f64§dream_reader_percent: f64§packed_lunch_heal_percent: f64§life_bloom_percent_l1: f64§life_bloom_percent_l10: f64§life_bloom_duration_ticks: u64§power_q: Vec<PetFacetPowerQ>

Implementations§

Source§

impl PetFacetSettings

Source

pub fn rank_multiplier(&self, pet_level: i64) -> f64

Rank scaling of one facet magnitude: +rank_growth_permyriad per pet level above the first. A level-1 pet plays exactly at the authored numbers, which is what makes rank an amplifier rather than a gate.

Source

pub fn level_interpolated(l1: f64, l10: f64, pet_level: i64) -> f64

BAL-014: a facet magnitude authored as L1/L10 endpoints, interpolated linearly over pet levels 1..=10 — independent of Self::rank_multiplier.

Source

pub fn power_q_row(&self, facet: PetFacet) -> Option<&PetFacetPowerQ>

The authored Power row of facet, or None when the catalog has none (which GameConfig::validate refuses, so production always has one).

Trait Implementations§

Source§

impl Clone for PetFacetSettings

Source§

fn clone(&self) -> PetFacetSettings

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 PetFacetSettings

Source§

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

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

impl<'de> Deserialize<'de> for PetFacetSettings

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl JsonSchema for PetFacetSettings

Source§

fn schema_name() -> String

The name of the generated JSON Schema. Read more
Source§

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type. Read more
Source§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
§

fn is_referenceable() -> bool

Whether JSON Schemas generated for this type should be re-used where possible using the $ref keyword. Read more
Source§

impl Serialize for PetFacetSettings

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Tsify for PetFacetSettings

Source§

const DECL: &'static str = "/**\n * Tunables of Pet Facets / Team Die v0.\n *\n * One flat settings singleton rather than a per-facet content catalog: the\n * twenty facets are RULES, authored in code\n * ([`essences::pet_facets::PetFacet`]), and only their numbers are balance. A\n * catalog would have added twenty content objects, twenty translation records\n * and a link column on `PetTemplate` without making a single number more\n * tunable than it is here.\n *\n * Percentages are whole percent (`35.0` = `+35%`); every `*_ticks` value is\n * MILLISECONDS of fight clock (`6_000` = 6 s).\n */\nexport interface PetFacetSettings {\n /**\n * How much one pet level above the first raises every facet MAGNITUDE, in\n * permyriad (`500` = `+5%` per level). Counts, durations and charge\n * numbers are deliberately NOT scaled: rank scales the numbers of a facet,\n * it never changes its rules.\n */\n rank_growth_permyriad: number;\n head_start_ticks: number;\n second_spark_percent: number;\n budget_plan_cost_multiplier: number;\n budget_plan_casts: number;\n open_tab_surcharge_percent: number;\n open_tab_payload_share_percent: number;\n overtime_attack_speed_percent: number;\n overtime_duration_ticks: number;\n magic_volley_bolts: number;\n magic_volley_percent: number;\n safety_net_reduction_percent: number;\n safety_net_duration_ticks: number;\n retaliation_percent: number;\n calibration_crit_percent: number;\n calibration_attacks: number;\n lucky_star_percent: number;\n lead_reading_resonance_percent: number;\n lead_reading_activations: number;\n wild_reading_effect_percent: number;\n wild_reading_duration_ticks: number;\n advance_notice_gauge_percent: number;\n rising_gate_procs: number;\n rising_gate_multiplier_l1: number;\n rising_gate_multiplier_l10: number;\n prepared_slots_percent: number;\n first_spell_percent: number;\n souvenir_procs: number;\n souvenir_percent: number;\n dream_reader_percent: number;\n packed_lunch_heal_percent: number;\n life_bloom_percent_l1: number;\n life_bloom_percent_l10: number;\n life_bloom_duration_ticks: number;\n power_q: PetFacetPowerQ[];\n}"

Source§

const SERIALIZATION_CONFIG: SerializationConfig

Source§

type JsType = JsType

§

fn into_js(&self) -> Result<Self::JsType, Error>
where Self: Serialize,

§

fn from_js<T>(js: T) -> Result<Self, Error>
where T: Into<JsValue>, Self: DeserializeOwned,

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> 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.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Serialize for T
where T: Serialize + ?Sized,

Source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>

Source§

fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>

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<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
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,