manabrew_engine/ability/effects/
block_effect.rs1use forge_foundation::ZoneType;
7
8use super::EffectContext;
9use crate::ability::ability_ir::DefinedRef;
10
11#[manabrew_engine_macros::spell_effect(BlockEffect)]
15fn resolve(ctx: &mut EffectContext, sa: &crate::spellability::SpellAbility) {
16 let targets: Vec<crate::ids::CardId> = if sa.uses_targeting() {
17 sa.target_chosen.target_card.into_iter().collect()
18 } else if let Some(def) = sa.defined_ref() {
19 if matches!(def, DefinedRef::SelfCard) {
20 sa.source.into_iter().collect()
21 } else {
22 Vec::new()
23 }
24 } else {
25 Vec::new()
26 };
27
28 for card_id in targets {
29 if ctx.game.card(card_id).zone != ZoneType::Battlefield {
30 continue;
31 }
32 ctx.game.card_mut(card_id).set_must_block(true);
34 }
35}