manabrew_engine/staticability/
static_ability_cant_phase.rs1use 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}