manabrew_engine/ability/effects/
text_box_exchange_effect.rs1use super::EffectContext;
6use forge_foundation::ZoneType;
7
8pub fn run(
14 ctx: &mut EffectContext,
15 card1: crate::ids::CardId,
16 card2: crate::ids::CardId,
17 abilities1: Vec<String>,
18 abilities2: Vec<String>,
19) {
20 if ctx.game.card(card1).zone == ZoneType::Battlefield {
22 ctx.game.card_mut(card1).set_abilities(abilities1);
23 ctx.trigger_handler.register_active_trigger(ctx.game, card1);
24 }
25 if ctx.game.card(card2).zone == ZoneType::Battlefield {
26 ctx.game.card_mut(card2).set_abilities(abilities2);
27 ctx.trigger_handler.register_active_trigger(ctx.game, card2);
28 }
29}
30
31#[manabrew_engine_macros::spell_effect(TextBoxExchangeEffect)]
35fn resolve(ctx: &mut EffectContext, sa: &crate::spellability::SpellAbility) {
36 let source = sa.source;
37 let target = sa.target_chosen.target_card;
38
39 let (Some(card1), Some(card2)) = (source, target) else {
40 return;
41 };
42 if ctx.game.card(card1).zone != ZoneType::Battlefield {
43 return;
44 }
45 if ctx.game.card(card2).zone != ZoneType::Battlefield {
46 return;
47 }
48
49 let abilities1 = ctx.game.card(card1).abilities.clone();
51 let abilities2 = ctx.game.card(card2).abilities.clone();
52 ctx.game.card_mut(card1).set_abilities(abilities2);
53 ctx.game.card_mut(card2).set_abilities(abilities1);
54
55 ctx.trigger_handler.register_active_trigger(ctx.game, card1);
57 ctx.trigger_handler.register_active_trigger(ctx.game, card2);
58}