Struct LawBridgeCharges

Source
pub struct LawBridgeCharges {
    pub bridges: Vec<BridgeCharge>,
    pub capacity_hundredths: i64,
    pub amplification_cap_permyriad: i64,
}
Expand description

Per-fight bridge state of ONE combatant. Lives on the combat entity rather than on the fight because PvP and party fights hold several heroes, each with an independent active side and independent charges.

Combat-runtime only, exactly like Entity::proc_entropy: it is serde(skip)ped off the wire and the client state patch. active_fight is never persisted (storage::state always hydrates it as None), so there is no durable copy that could drift. Carries the capacity and the amplification ceiling this combatant’s bridges play against, rather than reading them from config at every call. They are fixed for the whole fight (artifact stones only change out of combat) and the artifact’s Bridge Law socket moves them per player, so keeping them here is what lets the strip-and-refold of the passive law contribution (entities::refresh_law_attributes) use the same numbers coming and going — a config lookup could not, because it has no idea whose bridges these are.

Fields§

§bridges: Vec<BridgeCharge>§capacity_hundredths: i64

Charge ONE direction can hold, in hundredths (CHARGE_SCALE). Everything above it burns.

§amplification_cap_permyriad: i64

Law Power a completely full bridge is worth, in permyriad.

Implementations§

Source§

impl LawBridgeCharges

Source

pub fn new( bridges: Vec<BridgeCharge>, capacity_hundredths: i64, amplification_cap_permyriad: i64, ) -> Self

Source

pub fn is_empty(&self) -> bool

Source

pub fn add_resonance(&mut self, law_id: LawTemplateId, amount: i64) -> i64

Puts amount of Resonance in on behalf of law_id, i.e. into the charge that flows AWAY from it. Everything above capacity burns, like Flip Gauge overflow. Returns how much actually landed.

amount is in hundredths (CHARGE_SCALE); the ceiling is this combatant’s own Self::capacity_hundredths.

Source

pub fn pending_from(&self, law_id: LawTemplateId) -> i64

Charge currently sitting in the direction law_id fills, in hundredths.

Source

pub fn delivered_units(&self, law_id: LawTemplateId) -> i64

WHOLE units law_id received at the last flip — the floor of the exact charge. This is the only number amplification is ever priced from; the fractional remainder is kept by Self::delivered_hundredths but never counts until it completes a unit.

Zero when the law is in no bridge, which is what makes an unbridged law run unamplified.

Source

pub fn delivered_hundredths(&self, law_id: LawTemplateId) -> i64

Exact charge law_id received at the last flip, in hundredths.

Source

pub fn deliver(&mut self)

Flip step 1+2 (plan §3): every accumulated charge is handed to the law at the far end and the charge is zeroed.

Both directions are delivered, not just the one the outgoing phase filled: the other direction was zeroed by the previous flip and has had no active law to fill it since, so delivering it is a no-op that keeps the step free of “which side was up” bookkeeping.

Source

pub fn reset(&mut self)

Wipes every charge and every live amplification. Called at the start of a new fight.

Trait Implementations§

Source§

impl Clone for LawBridgeCharges

Source§

fn clone(&self) -> LawBridgeCharges

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 LawBridgeCharges

Source§

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

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

impl Default for LawBridgeCharges

Source§

fn default() -> LawBridgeCharges

Returns the “default value” for a type. Read more
Source§

impl PartialEq for LawBridgeCharges

Source§

fn eq(&self, other: &LawBridgeCharges) -> 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 Eq for LawBridgeCharges

Source§

impl StructuralPartialEq for LawBridgeCharges

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