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