EffectKind

Enum EffectKind 

Source
pub enum EffectKind {
Show 74 variants Draw { count: u8, }, Damage { amount: i32, cancelable: bool, damage_type: DamageType, }, AddModifier { kind: ModifierKind, magnitude: i32, duration: ModifierDuration, }, GrantAbilityDef { ability: Box<AbilityDef>, duration: GrantDuration, }, AddPowerIfTargetLevelAtLeast { amount: i32, min_level: u8, duration: ModifierDuration, }, AddPowerByTargetLevel { multiplier: i32, duration: ModifierDuration, }, AddPowerIfBattleOpponentLevelAtLeast { amount: i32, min_level: u8, duration: ModifierDuration, }, AddSoulIfBattleOpponentLevelAtLeast { amount: i32, min_level: u8, duration: ModifierDuration, }, AddPowerIfBattleOpponentLevelExact { amount: i32, level: u8, duration: ModifierDuration, }, AddPowerIfOtherAttackerMatches { amount: i32, duration: ModifierDuration, attacker_card_ids: Vec<CardId>, }, AddSoulIfMiddleCenter { amount: i32, }, FacingOpponentAddSoul { amount: i32, }, FacingOpponentAddModifier { kind: ModifierKind, magnitude: i32, duration: ModifierDuration, }, SelfAddModifierIfFacingOpponent { kind: ModifierKind, magnitude: i32, duration: ModifierDuration, max_level: Option<u8>, max_cost: Option<u8>, level_gt_source_level: bool, }, ConditionalAddModifier { kind: ModifierKind, magnitude: i32, duration: ModifierDuration, turn: Option<ConditionTurn>, zone_count: Option<ZoneCountCondition>, require_source_marker: bool, per_source_marker: bool, per_zone_count: bool, exclude_source: bool, }, MoveToHand, MoveToWaitingRoom, MoveToStock, MoveToClock, MoveToMemory, MoveToDeckBottom, MoveWaitingRoomCardToSourceSlot, RecycleWaitingRoomToDeckShuffle, ResetStockFromDeckTop { target: TargetSide, }, MoveToMarker, MoveTopDeckToMarker, Heal, HealIfSourcePlayedFromHandThisTurn, RestTarget, StandTarget, StockCharge { count: u8, }, MillTop { target: TargetSide, count: u8, }, MoveStageSlot { slot: u8, }, MoveThisToOpenCenter { require_facing: bool, }, MoveThisToOpenBack, SwapStageSlots, RandomDiscardFromHand { target: TargetSide, count: u8, }, RandomMill { target: TargetSide, count: u8, }, RevealZoneTop { target: TargetSide, zone: TargetZone, count: u8, audience: RevealAudience, }, RevealTopIfLevelAtLeastMoveThisToHand { min_level: u8, }, RevealTopIfLevelAtLeastRestThis { min_level: u8, }, RevealTopIfLevelAtLeastMoveTopToStock { min_level: u8, }, LookTopDeckReorder { count: u8, }, LookTopCardTopOrWaitingRoom, LookTopCardTopOrBottom, SearchTopDeckToHandLevelAtLeastMillRest { look_count: u8, choose_count: u8, min_level: u8, }, RevealTopAndSalvageByRevealedLevel { count: u8, climax_level: u8, }, MoveTriggerCardToHand, MoveTriggerCardToStock, ChangeController { new_controller: TargetSide, }, Standby { target_slot: u8, }, TreasureStock { take_stock: bool, }, ModifyPendingAttackDamage { delta: i32, }, EnableShotDamage { amount: u8, }, TriggerIcon { icon: TriggerIcon, }, RevealDeckTop { count: u8, audience: RevealAudience, }, Brainstorm { reveal_count: u8, per_climax: u8, mode: BrainstormMode, }, BrainstormDrawChoice, SetTriggerCheckCount { count: u8, }, RestThisIfNoOtherRestCenter, BattleOpponentReverseIf { max_level: Option<u8>, max_cost: Option<u8>, level_gt_opponent_level: bool, }, BattleOpponentMoveToDeckBottomIf { max_level: Option<u8>, max_cost: Option<u8>, level_gt_opponent_level: bool, }, BattleOpponentMoveToStockThenBottomStockToWaitingRoomIf { max_level: Option<u8>, max_cost: Option<u8>, level_gt_opponent_level: bool, }, BattleOpponentMoveToClockAfterClockTopToWaitingRoomIf { max_level: Option<u8>, max_cost: Option<u8>, level_gt_opponent_level: bool, }, BattleOpponentMoveToMemoryIf { max_level: Option<u8>, max_cost: Option<u8>, level_gt_opponent_level: bool, }, BattleOpponentMoveToClockIf { max_level: Option<u8>, max_cost: Option<u8>, level_gt_opponent_level: bool, }, BattleOpponentMove { destination: BattleOpponentMoveDestination, prelude: Option<BattleOpponentMovePreludeAction>, max_level: Option<u8>, max_cost: Option<u8>, level_gt_opponent_level: bool, }, BattleOpponentTopDeckToStockIf { min_level: u8, }, CannotUseAutoEncoreForPlayer { target: TargetSide, }, CounterBackup { power: i32, }, CounterDamageReduce { amount: u8, }, CounterDamageCancel, SetTerminalOutcome { outcome: TerminalOutcomeSpec, }, ApplyRuleOverride { kind: RuleOverrideKind, },
}
Expand description

Effect kinds that can be executed by the engine.

Variants§

§

Draw

Draw cards.

Fields

§count: u8

Number of cards to draw.

§

Damage

Deal damage.

Fields

§amount: i32

Damage magnitude to deal.

§cancelable: bool

Whether damage can be canceled by revealing a climax.

§damage_type: DamageType

Damage classification (e.g., battle vs effect damage).

§

AddModifier

Add a modifier to the target.

Fields

§kind: ModifierKind

Modifier kind (power, soul, etc).

§magnitude: i32

Signed magnitude of the modifier.

§duration: ModifierDuration

Duration of the modifier.

§

GrantAbilityDef

Grant an ability definition to the target.

Fields

§ability: Box<AbilityDef>

Ability definition to grant.

§duration: GrantDuration

Duration for which the ability is granted.

§

AddPowerIfTargetLevelAtLeast

Add power when the target’s level is at least a threshold.

Fields

§amount: i32

Power magnitude to add.

§min_level: u8

Minimum level threshold for the target.

§duration: ModifierDuration

Duration of the modifier.

§

AddPowerByTargetLevel

Add power scaled by the target’s (computed) level.

Fields

§multiplier: i32

Power multiplier per level.

§duration: ModifierDuration

Duration of the modifier.

§

AddPowerIfBattleOpponentLevelAtLeast

Add power if the battle opponent’s level is at least a threshold.

Fields

§amount: i32

Power magnitude to add.

§min_level: u8

Minimum level threshold for the battle opponent.

§duration: ModifierDuration

Duration of the modifier.

§

AddSoulIfBattleOpponentLevelAtLeast

Add soul if the battle opponent’s level is at least a threshold.

Fields

§amount: i32

Soul magnitude to add.

§min_level: u8

Minimum level threshold for the battle opponent.

§duration: ModifierDuration

Duration of the modifier.

§

AddPowerIfBattleOpponentLevelExact

Add power if the battle opponent’s level matches exactly.

Fields

§amount: i32

Power magnitude to add.

§level: u8

Required battle opponent level.

§duration: ModifierDuration

Duration of the modifier.

§

AddPowerIfOtherAttackerMatches

Add power when another attacking character matches one of the provided card ids.

Fields

§amount: i32

Power magnitude to add.

§duration: ModifierDuration

Duration of the modifier.

§attacker_card_ids: Vec<CardId>

Allowed attacker card ids to match against.

§

AddSoulIfMiddleCenter

Add soul while this card occupies the middle center-stage position.

Fields

§amount: i32

Soul magnitude to add.

§

FacingOpponentAddSoul

Add soul to the character facing the source card.

Fields

§amount: i32

Soul magnitude to add.

§

FacingOpponentAddModifier

Add a modifier to the character facing the source card.

Fields

§kind: ModifierKind

Modifier kind to apply.

§magnitude: i32

Signed magnitude of the modifier.

§duration: ModifierDuration

Duration of the modifier.

§

SelfAddModifierIfFacingOpponent

Add a modifier to the source card if it is facing a matching opponent.

Fields

§kind: ModifierKind

Modifier kind to apply.

§magnitude: i32

Signed magnitude of the modifier.

§duration: ModifierDuration

Duration of the modifier.

§max_level: Option<u8>

Optional maximum opponent level allowed.

§max_cost: Option<u8>

Optional maximum opponent cost allowed.

§level_gt_source_level: bool

If true, require opponent level to exceed the source level.

§

ConditionalAddModifier

Add a modifier to targets when a conditional context is satisfied.

Fields

§kind: ModifierKind

Modifier kind to apply.

§magnitude: i32

Signed magnitude of the modifier.

§duration: ModifierDuration

Duration of the modifier.

§turn: Option<ConditionTurn>

Optional turn condition.

§zone_count: Option<ZoneCountCondition>

Optional zone-count condition.

§require_source_marker: bool

Whether the source must have at least one marker.

§per_source_marker: bool

If true, scale magnitude by the number of markers under the source.

§per_zone_count: bool

If true, scale magnitude by the zone-count value.

§exclude_source: bool

If true, skip applying the modifier to the source card itself.

§

MoveToHand

Move target to hand.

§

MoveToWaitingRoom

Move target to waiting room.

§

MoveToStock

Move target to stock.

§

MoveToClock

Move target to clock.

§

MoveToMemory

Move target to memory.

§

MoveToDeckBottom

Move target to bottom of deck.

§

MoveWaitingRoomCardToSourceSlot

Move a waiting-room card to the source card’s stage slot.

§

RecycleWaitingRoomToDeckShuffle

Return all cards from waiting room to deck, then shuffle.

§

ResetStockFromDeckTop

Move all stock to waiting room, then refill stock from deck top by the same count.

Fields

§target: TargetSide

Side whose stock is reset.

§

MoveToMarker

Move target card under the source card as a marker.

§

MoveTopDeckToMarker

Move the top card of your deck under this card as a marker.

§

Heal

Heal (move top clock to waiting room).

§

HealIfSourcePlayedFromHandThisTurn

Heal only if the source card was played from hand this turn and remains on stage.

§

RestTarget

Rest the target.

§

StandTarget

Stand the target.

§

StockCharge

Stock charge by count.

Fields

§count: u8

Number of cards to stock-charge.

§

MillTop

Mill top cards from deck.

Fields

§target: TargetSide

Side whose deck is milled.

§count: u8

Number of cards to mill.

§

MoveStageSlot

Move target to a specific stage slot.

Fields

§slot: u8

Stage slot index.

§

MoveThisToOpenCenter

Move the source card to the first open center-stage slot.

Fields

§require_facing: bool

Whether the source must currently be facing an opponent.

§

MoveThisToOpenBack

Move the source card to the first open back-stage slot.

§

SwapStageSlots

Swap two stage slots.

§

RandomDiscardFromHand

Random discard from hand.

Fields

§target: TargetSide

Side whose hand is discarded from.

§count: u8

Number of cards to discard.

§

RandomMill

Random mill from deck.

Fields

§target: TargetSide

Side whose deck is milled.

§count: u8

Number of cards to mill.

§

RevealZoneTop

Reveal the top of a zone.

Fields

§target: TargetSide

Side whose zone is revealed.

§zone: TargetZone

Zone to reveal cards from.

§count: u8

Number of cards to reveal.

§audience: RevealAudience

Reveal visibility audience.

§

RevealTopIfLevelAtLeastMoveThisToHand

Reveal the top card of your deck; if its level is at least min_level, move this card to hand. (Climax is treated as level 0.)

Fields

§min_level: u8

Minimum level threshold for success.

§

RevealTopIfLevelAtLeastRestThis

Reveal the top card of your deck; if its level is at least min_level, rest this card. (Climax is treated as level 0.)

Fields

§min_level: u8

Minimum level threshold for success.

§

RevealTopIfLevelAtLeastMoveTopToStock

Reveal the top card of your deck; if its level is at least min_level, move that revealed card to stock. (Climax is treated as level 0.)

Fields

§min_level: u8

Minimum level threshold for success.

§

LookTopDeckReorder

Look at the top count cards of your deck and reorder them on top.

Fields

§count: u8

Number of cards to look at and reorder.

§

LookTopCardTopOrWaitingRoom

Look at the top card and either leave it on top or move it to waiting room.

§

LookTopCardTopOrBottom

Look at the top card and either leave it on top or move it to deck bottom.

§

SearchTopDeckToHandLevelAtLeastMillRest

Look at top cards, move up to choose_count cards with level at least min_level to hand, and send the rest to waiting room.

Fields

§look_count: u8

Number of cards to look at from the top of deck.

§choose_count: u8

Maximum number of cards to move to hand.

§min_level: u8

Minimum level threshold for cards eligible to move to hand.

§

RevealTopAndSalvageByRevealedLevel

Reveal top deck card, then salvage up to count waiting-room characters with level at most the revealed card’s level.

Fields

§count: u8

Number of cards to salvage.

§climax_level: u8

Level to treat a climax as during level comparisons.

§

MoveTriggerCardToHand

Move the trigger card to hand.

§

MoveTriggerCardToStock

Move the trigger card to stock.

§

ChangeController

Change controller of a card.

Fields

§new_controller: TargetSide

New controller side.

§

Standby

Standby trigger resolution (place a character from waiting room onto stage).

Fields

§target_slot: u8

Destination stage slot index.

§

TreasureStock

Treasure trigger resolution (optionally take the stock).

Fields

§take_stock: bool

Whether to take stock when resolving the treasure trigger.

§

ModifyPendingAttackDamage

Modify pending attack damage by a delta.

Fields

§delta: i32

Signed delta to apply.

§

EnableShotDamage

Enable shot damage for the current attack.

Fields

§amount: u8

Shot damage amount.

§

TriggerIcon

Resolve a trigger icon effect directly.

Fields

§icon: TriggerIcon

Trigger icon to resolve.

§

RevealDeckTop

Reveal the top of the deck.

Fields

§count: u8

Number of cards to reveal.

§audience: RevealAudience

Reveal visibility audience.

§

Brainstorm

Brainstorm resolver (reveal/mill then payoff per climax).

Fields

§reveal_count: u8

Number of cards to reveal/mill.

§per_climax: u8

Payoff multiplier per climax revealed.

§mode: BrainstormMode

Brainstorm payoff mode.

§

BrainstormDrawChoice

Optional brainstorm choice hook for draw-mode resolution.

§

SetTriggerCheckCount

Set the total trigger checks to perform this attack’s trigger step.

Fields

§count: u8

Trigger check count to use.

§

RestThisIfNoOtherRestCenter

Rest the source card if no other rested center-stage character is present.

§

BattleOpponentReverseIf

Reverse this card’s current battle opponent when a condition is met.

Fields

§max_level: Option<u8>

Optional maximum opponent level allowed.

§max_cost: Option<u8>

Optional maximum opponent cost allowed.

§level_gt_opponent_level: bool

If true, require this card’s level to exceed opponent level.

§

BattleOpponentMoveToDeckBottomIf

Move this card’s current battle opponent to the bottom of deck when a condition is met.

Fields

§max_level: Option<u8>

Optional maximum opponent level allowed.

§max_cost: Option<u8>

Optional maximum opponent cost allowed.

§level_gt_opponent_level: bool

If true, require this card’s level to exceed opponent level.

§

BattleOpponentMoveToStockThenBottomStockToWaitingRoomIf

Move this card’s current battle opponent to stock, then move the bottom stock card to waiting room.

Fields

§max_level: Option<u8>

Optional maximum opponent level allowed.

§max_cost: Option<u8>

Optional maximum opponent cost allowed.

§level_gt_opponent_level: bool

If true, require this card’s level to exceed opponent level.

§

BattleOpponentMoveToClockAfterClockTopToWaitingRoomIf

Move top opponent clock to waiting room, then move this card’s current battle opponent to clock when a condition is met.

Fields

§max_level: Option<u8>

Optional maximum opponent level allowed.

§max_cost: Option<u8>

Optional maximum opponent cost allowed.

§level_gt_opponent_level: bool

If true, require this card’s level to exceed opponent level.

§

BattleOpponentMoveToMemoryIf

Move this card’s current battle opponent to memory when a condition is met.

Fields

§max_level: Option<u8>

Optional maximum opponent level allowed.

§max_cost: Option<u8>

Optional maximum opponent cost allowed.

§level_gt_opponent_level: bool

If true, require this card’s level to exceed opponent level.

§

BattleOpponentMoveToClockIf

Move this card’s current battle opponent to clock when a condition is met.

Fields

§max_level: Option<u8>

Optional maximum opponent level allowed.

§max_cost: Option<u8>

Optional maximum opponent cost allowed.

§level_gt_opponent_level: bool

If true, require this card’s level to exceed opponent level.

§

BattleOpponentMove

Generalized battle-opponent movement effect.

Fields

§destination: BattleOpponentMoveDestination

Destination zone for the battle opponent.

§prelude: Option<BattleOpponentMovePreludeAction>

Optional prelude action applied before the destination move.

§max_level: Option<u8>

Optional maximum opponent level allowed.

§max_cost: Option<u8>

Optional maximum opponent cost allowed.

§level_gt_opponent_level: bool

If true, require this card’s level to exceed opponent level.

§

BattleOpponentTopDeckToStockIf

Put the top card of your deck into your stock if this card’s battle opponent meets a level threshold.

Fields

§min_level: u8

Minimum opponent level threshold for success.

§

CannotUseAutoEncoreForPlayer

Prevent a player from using AUTO Encore for the rest of the turn.

Fields

§target: TargetSide

Side to apply the restriction to.

§

CounterBackup

Counter backup (power).

Fields

§power: i32

Power magnitude to add.

§

CounterDamageReduce

Counter damage reduction.

Fields

§amount: u8

Damage reduction magnitude.

§

CounterDamageCancel

Counter damage cancel.

§

SetTerminalOutcome

Set terminal game outcome immediately.

Fields

§outcome: TerminalOutcomeSpec

Terminal outcome to set.

§

ApplyRuleOverride

Apply a turn-scoped rule-action override.

Fields

§kind: RuleOverrideKind

Rule override kind to apply.

Implementations§

Source§

impl EffectKind

Source

pub fn expects_target(&self) -> bool

Whether this effect expects a target to be selected.

Source

pub fn requires_target_zone(&self, zone: TargetZone) -> bool

Whether this effect can target a card in the given zone.

Trait Implementations§

Source§

impl Clone for EffectKind

Source§

fn clone(&self) -> EffectKind

Returns a duplicate 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 EffectKind

Source§

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

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

impl<'de> Deserialize<'de> for EffectKind

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 Hash for EffectKind

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 Serialize for EffectKind

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

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,