Skip to main content

manabrew_engine/staticability/
static_ability_devotion.rs

1use crate::card::valid_filter;
2use crate::game::GameState;
3use crate::ids::PlayerId;
4use crate::staticability::StaticMode;
5
6pub fn get_devotion_mod(game: &GameState, player: PlayerId) -> i32 {
7    let mut total = 0;
8    for card in game
9        .cards
10        .iter()
11        .filter(|c| c.zone.is_static_ability_source())
12    {
13        for st_ab in card
14            .static_abilities
15            .iter()
16            .filter(|sa| sa.check_mode(&StaticMode::Devotion) && sa.zones_check(card.zone))
17        {
18            if !valid_filter::matches_valid_player_selector_opt(
19                st_ab.ir.valid_player.as_ref(),
20                player,
21                card.controller,
22            ) {
23                continue;
24            }
25            let val = st_ab
26                .ir
27                .value_text
28                .as_deref()
29                .and_then(|s| s.parse::<i32>().ok())
30                .unwrap_or(1);
31            total += val;
32        }
33    }
34    total
35}