Skip to main content

manabrew_engine/staticability/
static_ability_cant_phase.rs

1use crate::card::{valid_filter, Card};
2use crate::staticability::StaticMode;
3
4pub fn cant_phase_in(cards: &[Card], card: &Card) -> bool {
5    cant_phase(cards, card, StaticMode::CantPhaseIn)
6}
7
8pub fn cant_phase_out(cards: &[Card], card: &Card) -> bool {
9    cant_phase(cards, card, StaticMode::CantPhaseOut)
10}
11
12fn cant_phase(cards: &[Card], card: &Card, mode: StaticMode) -> bool {
13    for source in cards.iter().filter(|c| c.zone.is_static_ability_source()) {
14        for st_ab in source
15            .static_abilities
16            .iter()
17            .filter(|sa| sa.check_mode(&mode) && sa.zones_check(source.zone))
18        {
19            if valid_filter::matches_valid_card_selector_opt(
20                st_ab.ir.valid_card.as_ref(),
21                card,
22                source,
23            ) {
24                return true;
25            }
26        }
27    }
28    false
29}