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