Enum EffectStoneAction

Source
pub enum EffectStoneAction {
Show 29 variants NextAttackDamageBonus, GaugeFill, InstantDamage, CritChanceBuff, AttackSpeedBuff, Shield, AttackSpeedMultiplier, NextAttackDoubleHit, InstantDamageAll, HealMaxHpPercent, NextHitTakenReduction, NextAttackCritChance, SkillCooldownReduction, NextSkillPayloadBonus, SkillPayloadBuff, IncomingDamageReduction, LifestealBuff, CooldownRecoveryBuff, NextSkillSplash, NextSkillSplitCopies, NextSkillEchoCopies, NextAttackDerivedHits, OrbitingProjectiles, DelayedRepeat, NextHitBlockedRetaliation, NextAttacksSplash, ResetSkillCooldowns, DamageFloorGuard, DamageDealtBuff,
}
Expand description

Action shape of an Effect Stone. The magnitudes, the duration and the charge count are separate config fields for the same reason as TriggerCondition.

Everything an action produces lands as [essences::combat_origin::CombatEventOrigin::Proc], so no effect can re-enter a trigger. Several catalog entries share an action and differ only in numbers (charges, magnitude, secondary_magnitude).

  • InstantDamageEF-C01: derived damage worth magnitude% of Attack to the current target.
  • InstantDamageAllEF-C02 / EF-L01: the same to every living enemy.
  • HealMaxHpPercentEF-C03 / EF-L07: restore magnitude% of Max HP.
  • NextHitTakenReductionEF-C04: the next charges Core hits taken deal magnitude% less.
  • NextAttackDamageBonusEF-C05 / EF-R06 / EF-E07: the next charges Basic Attacks deal magnitude% more.
  • NextAttackCritChanceEF-C06: the next charges Core Attacks get +magnitude% Crit Chance.
  • SkillCooldownReductionEF-C07 / EF-E05: the charges longest remaining Skill cooldowns lose magnitude ticks.
  • NextSkillPayloadBonusEF-C08 / EF-L08: the next charges original Skills deal magnitude% more.
  • AttackSpeedBuffEF-R01: +magnitude% Attack Speed for duration_ticks.
  • CritChanceBuffEF-R02: +magnitude% Crit Chance for duration_ticks.
  • SkillPayloadBuffEF-R03: +magnitude% original Skill payload for duration_ticks.
  • IncomingDamageReductionEF-R04: −magnitude% incoming damage for duration_ticks.
  • LifestealBuffEF-R05: magnitude% of Core damage heals the hero for duration_ticks.
  • CooldownRecoveryBuffEF-R07: every Skill cooldown recovers magnitude% faster for duration_ticks.
  • NextSkillSplashEF-R08: the next charges original Skills additionally hit every enemy for magnitude% of Attack.
  • NextSkillSplitCopiesEF-E08: the next original Skill spreads derived copies worth magnitude% of its own landed payload onto at most charges additional targets.
  • NextSkillEchoCopiesEF-E01 / EF-L02: the next original Skill gets charges derived copies, at magnitude% and secondary_magnitude% of Attack.
  • NextAttackDerivedHitsEF-E02: the next Basic Attack adds charges derived hits of magnitude% of Attack.
  • OrbitingProjectilesEF-E03: charges derived projectiles of magnitude% of Attack spread over duration_ticks.
  • DelayedRepeatEF-E04: after duration_ticks, derived damage worth magnitude% of Attack. The repeat never repeats itself.
  • NextHitBlockedRetaliationEF-E06: the next charges Core hits are blocked; each retaliates for magnitude% of Attack.
  • NextAttacksSplashEF-L03: the next charges Basic Attacks additionally hit every enemy for magnitude% of Attack.
  • ResetSkillCooldownsEF-L04: every Skill becomes ready.
  • DamageFloorGuardEF-L05: for duration_ticks Core damage cannot drop the hero below 1 HP.
  • DamageDealtBuffEF-L06: +magnitude% Basic Attack and Skill payload for duration_ticks.
  • GaugeFill — adds magnitude straight to the flip gauge.
  • Shield — a shield worth magnitude% of Max HP for duration_ticks.
  • AttackSpeedMultiplier — Attack Speed × magnitude for duration_ticks.
  • NextAttackDoubleHit — the next cast makes magnitude real swings instead of one.

Variant docs live here rather than on the variants themselves: a documented variant makes the admin schema generate a oneOf of one-value enums instead of a plain picker.

Variants§

§

NextAttackDamageBonus

§

GaugeFill

§

InstantDamage

§

CritChanceBuff

§

AttackSpeedBuff

§

Shield

§

AttackSpeedMultiplier

§

NextAttackDoubleHit

§

InstantDamageAll

§

HealMaxHpPercent

§

NextHitTakenReduction

§

NextAttackCritChance

§

SkillCooldownReduction

§

NextSkillPayloadBonus

§

SkillPayloadBuff

§

IncomingDamageReduction

§

LifestealBuff

§

CooldownRecoveryBuff

§

NextSkillSplash

§

NextSkillSplitCopies

§

NextSkillEchoCopies

§

NextAttackDerivedHits

§

OrbitingProjectiles

§

DelayedRepeat

§

NextHitBlockedRetaliation

§

NextAttacksSplash

§

ResetSkillCooldowns

§

DamageFloorGuard

§

DamageDealtBuff

Implementations§

Source§

impl EffectStoneAction

Source

pub const fn needs_duration(self) -> bool

Whether the action leaves a state behind and therefore needs a positive EffectStoneTemplate::duration_ticks. A timed action with a zero duration would never expire, so GameConfig::validate_stones refuses it rather than letting the runtime strand a permanent stat.

Source

pub const fn needs_charges(self) -> bool

Whether the action is spent over a countable number of uses, hits or copies and therefore needs a positive EffectStoneTemplate::charges.

Trait Implementations§

Source§

impl Clone for EffectStoneAction

Source§

fn clone(&self) -> EffectStoneAction

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 EffectStoneAction

Source§

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

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

impl<'de> Deserialize<'de> for EffectStoneAction

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 From<EffectStoneAction> for JsValue

Source§

fn from(value: EffectStoneAction) -> Self

Converts to this type from the input type.
Source§

impl FromWasmAbi for EffectStoneAction
where Self: DeserializeOwned,

Source§

type Abi = <JsType as FromWasmAbi>::Abi

The Wasm ABI type that this converts from when coming back out from the ABI boundary.
Source§

unsafe fn from_abi(js: Self::Abi) -> Self

Recover a Self from Self::Abi. Read more
Source§

impl Hash for EffectStoneAction

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl IntoWasmAbi for EffectStoneAction

Source§

type Abi = <JsType as IntoWasmAbi>::Abi

The Wasm ABI type that this converts into when crossing the ABI boundary.
Source§

fn into_abi(self) -> Self::Abi

Convert self into Self::Abi so that it can be sent across the wasm ABI boundary.
Source§

impl JsonSchema for EffectStoneAction

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 OptionFromWasmAbi for EffectStoneAction
where Self: DeserializeOwned,

Source§

fn is_none(js: &Self::Abi) -> bool

Tests whether the argument is a “none” instance. If so it will be deserialized as None, and otherwise it will be passed to FromWasmAbi.
Source§

impl OptionIntoWasmAbi for EffectStoneAction

Source§

fn none() -> Self::Abi

Returns an ABI instance indicating “none”, which JS will interpret as the None branch of this option. Read more
Source§

impl PartialEq for EffectStoneAction

Source§

fn eq(&self, other: &EffectStoneAction) -> 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 RefFromWasmAbi for EffectStoneAction
where Self: DeserializeOwned,

Source§

type Abi = <JsType as RefFromWasmAbi>::Abi

The Wasm ABI type references to Self are recovered from.
Source§

type Anchor = SelfOwner<EffectStoneAction>

The type that holds the reference to Self for the duration of the invocation of the function that has an &Self parameter. This is required to ensure that the lifetimes don’t persist beyond one function call, and so that they remain anonymous.
Source§

unsafe fn ref_from_abi(js: Self::Abi) -> Self::Anchor

Recover a Self::Anchor from Self::Abi. Read more
Source§

impl Serialize for EffectStoneAction

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 EffectStoneAction

Source§

const DECL: &'static str = "/**\n * Action shape of an Effect Stone. The magnitudes, the duration and the charge\n * count are separate config fields for the same reason as [`TriggerCondition`].\n *\n * Everything an action produces lands as\n * [`essences::combat_origin::CombatEventOrigin::Proc`], so no effect can\n * re-enter a trigger. Several catalog entries share an action and differ only\n * in numbers (`charges`, `magnitude`, `secondary_magnitude`).\n *\n * * `InstantDamage` \u{2014} `EF-C01`: derived damage worth `magnitude`% of Attack to the current target.\n * * `InstantDamageAll` \u{2014} `EF-C02` / `EF-L01`: the same to every living enemy.\n * * `HealMaxHpPercent` \u{2014} `EF-C03` / `EF-L07`: restore `magnitude`% of Max HP.\n * * `NextHitTakenReduction` \u{2014} `EF-C04`: the next `charges` Core hits taken deal `magnitude`% less.\n * * `NextAttackDamageBonus` \u{2014} `EF-C05` / `EF-R06` / `EF-E07`: the next `charges` Basic Attacks deal `magnitude`% more.\n * * `NextAttackCritChance` \u{2014} `EF-C06`: the next `charges` Core Attacks get `+magnitude`% Crit Chance.\n * * `SkillCooldownReduction` \u{2014} `EF-C07` / `EF-E05`: the `charges` longest remaining Skill cooldowns lose `magnitude` ticks.\n * * `NextSkillPayloadBonus` \u{2014} `EF-C08` / `EF-L08`: the next `charges` original Skills deal `magnitude`% more.\n * * `AttackSpeedBuff` \u{2014} `EF-R01`: `+magnitude`% Attack Speed for `duration_ticks`.\n * * `CritChanceBuff` \u{2014} `EF-R02`: `+magnitude`% Crit Chance for `duration_ticks`.\n * * `SkillPayloadBuff` \u{2014} `EF-R03`: `+magnitude`% original Skill payload for `duration_ticks`.\n * * `IncomingDamageReduction` \u{2014} `EF-R04`: `\u{2212}magnitude`% incoming damage for `duration_ticks`.\n * * `LifestealBuff` \u{2014} `EF-R05`: `magnitude`% of Core damage heals the hero for `duration_ticks`.\n * * `CooldownRecoveryBuff` \u{2014} `EF-R07`: every Skill cooldown recovers `magnitude`% faster for `duration_ticks`.\n * * `NextSkillSplash` \u{2014} `EF-R08`: the next `charges` original Skills additionally hit every enemy for `magnitude`% of Attack.\n * * `NextSkillSplitCopies` \u{2014} `EF-E08`: the next original Skill spreads derived copies worth `magnitude`% of **its own landed payload** onto at most `charges` additional targets.\n * * `NextSkillEchoCopies` \u{2014} `EF-E01` / `EF-L02`: the next original Skill gets `charges` derived copies, at `magnitude`% and `secondary_magnitude`% of Attack.\n * * `NextAttackDerivedHits` \u{2014} `EF-E02`: the next Basic Attack adds `charges` derived hits of `magnitude`% of Attack.\n * * `OrbitingProjectiles` \u{2014} `EF-E03`: `charges` derived projectiles of `magnitude`% of Attack spread over `duration_ticks`.\n * * `DelayedRepeat` \u{2014} `EF-E04`: after `duration_ticks`, derived damage worth `magnitude`% of Attack. The repeat never repeats itself.\n * * `NextHitBlockedRetaliation` \u{2014} `EF-E06`: the next `charges` Core hits are blocked; each retaliates for `magnitude`% of Attack.\n * * `NextAttacksSplash` \u{2014} `EF-L03`: the next `charges` Basic Attacks additionally hit every enemy for `magnitude`% of Attack.\n * * `ResetSkillCooldowns` \u{2014} `EF-L04`: every Skill becomes ready.\n * * `DamageFloorGuard` \u{2014} `EF-L05`: for `duration_ticks` Core damage cannot drop the hero below 1 HP.\n * * `DamageDealtBuff` \u{2014} `EF-L06`: `+magnitude`% Basic Attack and Skill payload for `duration_ticks`.\n * * `GaugeFill` \u{2014} adds `magnitude` straight to the flip gauge.\n * * `Shield` \u{2014} a shield worth `magnitude`% of Max HP for `duration_ticks`.\n * * `AttackSpeedMultiplier` \u{2014} Attack Speed \u{d7} `magnitude` for `duration_ticks`.\n * * `NextAttackDoubleHit` \u{2014} the next cast makes `magnitude` real swings instead of one.\n *\n * Variant docs live here rather than on the variants themselves: a documented\n * variant makes the admin schema generate a `oneOf` of one-value enums instead\n * of a plain picker.\n */\nexport type EffectStoneAction = \"NextAttackDamageBonus\" | \"GaugeFill\" | \"InstantDamage\" | \"CritChanceBuff\" | \"AttackSpeedBuff\" | \"Shield\" | \"AttackSpeedMultiplier\" | \"NextAttackDoubleHit\" | \"InstantDamageAll\" | \"HealMaxHpPercent\" | \"NextHitTakenReduction\" | \"NextAttackCritChance\" | \"SkillCooldownReduction\" | \"NextSkillPayloadBonus\" | \"SkillPayloadBuff\" | \"IncomingDamageReduction\" | \"LifestealBuff\" | \"CooldownRecoveryBuff\" | \"NextSkillSplash\" | \"NextSkillSplitCopies\" | \"NextSkillEchoCopies\" | \"NextAttackDerivedHits\" | \"OrbitingProjectiles\" | \"DelayedRepeat\" | \"NextHitBlockedRetaliation\" | \"NextAttacksSplash\" | \"ResetSkillCooldowns\" | \"DamageFloorGuard\" | \"DamageDealtBuff\";"

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,

Source§

impl VectorFromWasmAbi for EffectStoneAction
where Self: DeserializeOwned,

Source§

type Abi = <JsType as VectorFromWasmAbi>::Abi

Source§

unsafe fn vector_from_abi(js: Self::Abi) -> Box<[Self]>

Source§

impl VectorIntoWasmAbi for EffectStoneAction

Source§

type Abi = <JsType as VectorIntoWasmAbi>::Abi

Source§

fn vector_into_abi(vector: Box<[Self]>) -> Self::Abi

Source§

impl WasmDescribe for EffectStoneAction

Source§

impl WasmDescribeVector for EffectStoneAction

Source§

impl Copy for EffectStoneAction

Source§

impl Eq for EffectStoneAction

Source§

impl StructuralPartialEq for EffectStoneAction

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

§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
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> ReturnWasmAbi for T
where T: IntoWasmAbi,

Source§

type Abi = <T as IntoWasmAbi>::Abi

Same as IntoWasmAbi::Abi
Source§

fn return_abi(self) -> <T as ReturnWasmAbi>::Abi

Same as IntoWasmAbi::into_abi, except that it may throw and never return in the case of Err.
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>,