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).
InstantDamage—EF-C01: derived damage worthmagnitude% of Attack to the current target.InstantDamageAll—EF-C02/EF-L01: the same to every living enemy.HealMaxHpPercent—EF-C03/EF-L07: restoremagnitude% of Max HP.NextHitTakenReduction—EF-C04: the nextchargesCore hits taken dealmagnitude% less.NextAttackDamageBonus—EF-C05/EF-R06/EF-E07: the nextchargesBasic Attacks dealmagnitude% more.NextAttackCritChance—EF-C06: the nextchargesCore Attacks get+magnitude% Crit Chance.SkillCooldownReduction—EF-C07/EF-E05: thechargeslongest remaining Skill cooldowns losemagnitudeticks.NextSkillPayloadBonus—EF-C08/EF-L08: the nextchargesoriginal Skills dealmagnitude% more.AttackSpeedBuff—EF-R01:+magnitude% Attack Speed forduration_ticks.CritChanceBuff—EF-R02:+magnitude% Crit Chance forduration_ticks.SkillPayloadBuff—EF-R03:+magnitude% original Skill payload forduration_ticks.IncomingDamageReduction—EF-R04:−magnitude% incoming damage forduration_ticks.LifestealBuff—EF-R05:magnitude% of Core damage heals the hero forduration_ticks.CooldownRecoveryBuff—EF-R07: every Skill cooldown recoversmagnitude% faster forduration_ticks.NextSkillSplash—EF-R08: the nextchargesoriginal Skills additionally hit every enemy formagnitude% of Attack.NextSkillSplitCopies—EF-E08: the next original Skill spreads derived copies worthmagnitude% of its own landed payload onto at mostchargesadditional targets.NextSkillEchoCopies—EF-E01/EF-L02: the next original Skill getschargesderived copies, atmagnitude% andsecondary_magnitude% of Attack.NextAttackDerivedHits—EF-E02: the next Basic Attack addschargesderived hits ofmagnitude% of Attack.OrbitingProjectiles—EF-E03:chargesderived projectiles ofmagnitude% of Attack spread overduration_ticks.DelayedRepeat—EF-E04: afterduration_ticks, derived damage worthmagnitude% of Attack. The repeat never repeats itself.NextHitBlockedRetaliation—EF-E06: the nextchargesCore hits are blocked; each retaliates formagnitude% of Attack.NextAttacksSplash—EF-L03: the nextchargesBasic Attacks additionally hit every enemy formagnitude% of Attack.ResetSkillCooldowns—EF-L04: every Skill becomes ready.DamageFloorGuard—EF-L05: forduration_ticksCore damage cannot drop the hero below 1 HP.DamageDealtBuff—EF-L06:+magnitude% Basic Attack and Skill payload forduration_ticks.GaugeFill— addsmagnitudestraight to the flip gauge.Shield— a shield worthmagnitude% of Max HP forduration_ticks.AttackSpeedMultiplier— Attack Speed ×magnitudeforduration_ticks.NextAttackDoubleHit— the next cast makesmagnitudereal 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
impl EffectStoneAction
Sourcepub const fn needs_duration(self) -> bool
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.
Sourcepub const fn needs_charges(self) -> bool
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
impl Clone for EffectStoneAction
Source§fn clone(&self) -> EffectStoneAction
fn clone(&self) -> EffectStoneAction
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for EffectStoneAction
impl Debug for EffectStoneAction
Source§impl<'de> Deserialize<'de> for EffectStoneAction
impl<'de> Deserialize<'de> for EffectStoneAction
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl From<EffectStoneAction> for JsValuewhere
EffectStoneAction: Serialize,
impl From<EffectStoneAction> for JsValuewhere
EffectStoneAction: Serialize,
Source§fn from(value: EffectStoneAction) -> Self
fn from(value: EffectStoneAction) -> Self
Source§impl FromWasmAbi for EffectStoneActionwhere
Self: DeserializeOwned,
impl FromWasmAbi for EffectStoneActionwhere
Self: DeserializeOwned,
Source§impl Hash for EffectStoneAction
impl Hash for EffectStoneAction
Source§impl IntoWasmAbi for EffectStoneActionwhere
EffectStoneAction: Serialize,
impl IntoWasmAbi for EffectStoneActionwhere
EffectStoneAction: Serialize,
Source§impl JsonSchema for EffectStoneAction
impl JsonSchema for EffectStoneAction
Source§fn schema_name() -> String
fn schema_name() -> String
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref keyword. Read moreSource§impl OptionFromWasmAbi for EffectStoneActionwhere
Self: DeserializeOwned,
impl OptionFromWasmAbi for EffectStoneActionwhere
Self: DeserializeOwned,
Source§impl OptionIntoWasmAbi for EffectStoneActionwhere
EffectStoneAction: Serialize,
impl OptionIntoWasmAbi for EffectStoneActionwhere
EffectStoneAction: Serialize,
Source§impl PartialEq for EffectStoneAction
impl PartialEq for EffectStoneAction
Source§impl RefFromWasmAbi for EffectStoneActionwhere
Self: DeserializeOwned,
impl RefFromWasmAbi for EffectStoneActionwhere
Self: DeserializeOwned,
Source§type Abi = <JsType as RefFromWasmAbi>::Abi
type Abi = <JsType as RefFromWasmAbi>::Abi
Self are recovered from.Source§type Anchor = SelfOwner<EffectStoneAction>
type Anchor = SelfOwner<EffectStoneAction>
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§impl Serialize for EffectStoneAction
impl Serialize for EffectStoneAction
Source§impl Tsify for EffectStoneAction
impl Tsify for EffectStoneAction
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\";"
const SERIALIZATION_CONFIG: SerializationConfig
type JsType = JsType
fn into_js(&self) -> Result<Self::JsType, Error>where
Self: Serialize,
fn from_js<T>(js: T) -> Result<Self, Error>
Source§impl VectorFromWasmAbi for EffectStoneActionwhere
Self: DeserializeOwned,
impl VectorFromWasmAbi for EffectStoneActionwhere
Self: DeserializeOwned,
type Abi = <JsType as VectorFromWasmAbi>::Abi
unsafe fn vector_from_abi(js: Self::Abi) -> Box<[Self]>
Source§impl VectorIntoWasmAbi for EffectStoneActionwhere
EffectStoneAction: Serialize,
impl VectorIntoWasmAbi for EffectStoneActionwhere
EffectStoneAction: Serialize,
type Abi = <JsType as VectorIntoWasmAbi>::Abi
fn vector_into_abi(vector: Box<[Self]>) -> Self::Abi
Source§impl WasmDescribeVector for EffectStoneAction
impl WasmDescribeVector for EffectStoneAction
impl Copy for EffectStoneAction
impl Eq for EffectStoneAction
impl StructuralPartialEq for EffectStoneAction
Auto Trait Implementations§
impl Freeze for EffectStoneAction
impl RefUnwindSafe for EffectStoneAction
impl Send for EffectStoneAction
impl Sync for EffectStoneAction
impl Unpin for EffectStoneAction
impl UnwindSafe for EffectStoneAction
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
Source§type Abi = <T as IntoWasmAbi>::Abi
type Abi = <T as IntoWasmAbi>::Abi
IntoWasmAbi::AbiSource§fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
IntoWasmAbi::into_abi, except that it may throw and never
return in the case of Err.