manabrew_engine/ability/effects/
abandon_effect.rs1use super::EffectContext;
5use crate::event::RunParams;
6use crate::parsing::keys;
7use crate::trigger::TriggerType;
8use forge_foundation::ZoneType;
9
10#[manabrew_engine_macros::spell_effect(AbandonEffect)]
14fn resolve(ctx: &mut EffectContext, sa: &crate::spellability::SpellAbility) {
15 let Some(source_id) = sa.source else {
16 return;
17 };
18 let controller = ctx.game.card(source_id).controller;
19
20 if sa.param_is_true(keys::OPTIONAL) {
21 let source_name = ctx.game.card(source_id).card_name.clone();
22 let confirmed = ctx.agents[controller.index()].confirm_action(
23 controller,
24 None,
25 &format!("Would you like to abandon {source_name}?"),
26 &[],
27 Some(source_id),
28 None,
29 );
30 if !confirmed {
31 return;
32 }
33 }
34
35 if sa.ir.remember_abandoned {
36 ctx.game.card_mut(source_id).add_remembered(source_id);
37 }
38
39 if ctx.game.card(source_id).zone == ZoneType::Command {
40 ctx.game
41 .move_card(source_id, ZoneType::SchemeDeck, controller);
42 }
43
44 ctx.trigger_handler.run_trigger(
45 TriggerType::Abandoned,
46 RunParams {
47 card: Some(source_id),
48 ..Default::default()
49 },
50 false,
51 );
52}