Skip to main content

manabrew_engine/staticability/
static_ability_wither_damage.rs

1use forge_foundation::ZoneType;
2
3use crate::card::{valid_filter, Card};
4use crate::staticability::StaticMode;
5
6pub fn is_wither_damage(cards: &[Card], source_card: &Card) -> bool {
7    let _perf_scope =
8        crate::perf::ParamsLookupScopeGuard::enter(crate::perf::ParamsLookupScope::StaticAbility);
9    for source in cards.iter().filter(|c| c.zone == ZoneType::Battlefield) {
10        for st_ab in source
11            .static_abilities
12            .iter()
13            .filter(|sa| sa.check_mode(&StaticMode::WitherDamage))
14        {
15            if matches_valid_card(st_ab.ir.valid_card.as_ref(), source_card, source) {
16                return true;
17            }
18        }
19    }
20    false
21}
22
23fn matches_valid_card(
24    valid: Option<&crate::parsing::CompiledSelector>,
25    card: &Card,
26    source: &Card,
27) -> bool {
28    valid_filter::matches_valid_card_selector_opt(valid, card, source)
29}