manabrew_engine/ability/effects/
change_speed_effect.rs1use super::EffectContext;
5use crate::spellability::SpellAbilityMode;
6
7#[manabrew_engine_macros::spell_effect(ChangeSpeedEffect)]
11fn resolve(ctx: &mut EffectContext, sa: &crate::spellability::SpellAbility) {
12 let mode = sa.ir.mode.as_ref().unwrap_or(&SpellAbilityMode::Increase);
13 let players = if let Some(defined) = sa.defined() {
14 crate::ability::ability_utils::resolve_defined_players_with_sa(
15 defined,
16 sa,
17 sa.activating_player,
18 ctx.game,
19 )
20 } else if let Some(target) = sa.target_chosen.target_player {
21 vec![target]
22 } else {
23 vec![sa.activating_player]
24 };
25
26 for player in players {
27 if !ctx.game.player(player).is_alive() {
28 continue;
29 }
30 if matches!(mode, SpellAbilityMode::Decrease) {
31 ctx.game
32 .decrease_player_speed(player, Some(ctx.trigger_handler));
33 } else {
34 ctx.game
35 .increase_player_speed(player, Some(ctx.trigger_handler));
36 }
37 }
38}