Skip to main content

manabrew_engine/ability/effects/
run_chaos_effect.rs

1//! RunChaos — run the chaos ability of the current plane card.
2//! Ported from Java's RunChaosEffect: finds ChaosEnsues triggers on
3//! target plane cards and fires them.
4
5use super::EffectContext;
6use crate::event::RunParams;
7use crate::ids::CardId;
8use crate::trigger::TriggerType;
9
10/// Struct form of this effect so it can participate in the
11/// `SpellAbilityEffect` trait hierarchy — mirrors Java's
12/// `RunChaosEffect` class extending `SpellAbilityEffect`.
13#[manabrew_engine_macros::spell_effect(RunChaosEffect)]
14fn resolve(ctx: &mut EffectContext, sa: &crate::spellability::SpellAbility) {
15    // Fire ChaosEnsues trigger for target cards
16    let targets: Vec<CardId> = if let Some(target) = sa.target_chosen.target_card {
17        vec![target]
18    } else if let Some(source) = sa.source {
19        ctx.game.card(source).remembered_cards.clone()
20    } else {
21        return;
22    };
23
24    for card_id in targets {
25        ctx.trigger_handler.run_trigger(
26            TriggerType::ChaosEnsues,
27            RunParams {
28                card: Some(card_id),
29                player: Some(sa.activating_player),
30                ..Default::default()
31            },
32            false,
33        );
34    }
35}