manabrew_engine/ability/effects/
immediate_trigger_effect.rs1use super::EffectContext;
8use crate::trigger::DelayedTrigger;
9use crate::trigger::TriggerType;
10
11#[manabrew_engine_macros::spell_effect(ImmediateTriggerEffect)]
15fn resolve(ctx: &mut EffectContext, sa: &crate::spellability::SpellAbility) {
16 if let Some(remember_def) = sa.ir.remember_objects.as_deref() {
17 if let Some(source_id) = sa.source {
18 if remember_def.eq_ignore_ascii_case("Targeted") {
19 if let Some(target) = sa.target_chosen.target_card {
20 ctx.game.card_mut(source_id).add_remembered_card(target);
21 }
22 }
23 }
24 }
25
26 if let Some(execute_name) = sa.ir.execute.as_deref() {
27 if let Some(source_id) = sa.source {
28 let svar_text = ctx
29 .game
30 .card(source_id)
31 .get_s_var(execute_name)
32 .map(str::to_string);
33 if svar_text.is_some() {
34 let delayed = DelayedTrigger {
35 mode: TriggerType::Immediate,
36 trigger_mode: Box::new(crate::trigger::trigger_immediate::TriggerImmediate),
37 params: crate::parsing::Params::default(),
38 execute_svar: execute_name.to_string(),
39 controller: sa.activating_player,
40 source_card: source_id,
41 created_turn: ctx.game.turn.turn_number,
42 created_phase: ctx.game.turn.phase,
43 target_card: None,
44 remembered_amount: 0,
45 remembered_cards: Vec::new(),
46 remembered_players: Vec::new(),
47 remembered_lki_cards: Vec::new(),
48 sort_after_active: false,
49 trigger_order: None,
50 };
51 ctx.trigger_handler.register_delayed_trigger(delayed);
52 }
53 }
54 }
55}