From 14be48da24836ee8a3b3871eda15e6b840bcb04b Mon Sep 17 00:00:00 2001 From: ntr Date: Thu, 12 Dec 2019 16:37:42 +1000 Subject: [PATCH] fix cooldowns --- core/src/game.rs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/core/src/game.rs b/core/src/game.rs index 566a4f66..4ad17552 100644 --- a/core/src/game.rs +++ b/core/src/game.rs @@ -715,23 +715,25 @@ impl Game { fn progress_durations(&mut self) -> &mut Game { let last = self.resolutions.len() - 1; - let used_cooldown = self.resolutions[last].iter() - .filter_map(|r| match r.event { - Event::Cast { construct, player: _, direction: _ } => match r.skill.base_cd().is_some() { - true => Some(construct), - false => None, - } - _ => None, - }) - .collect::>(); - for player in self.players.iter_mut() { for construct in player.constructs.iter_mut() { if construct.is_ko() { continue; } - if !used_cooldown.contains(&construct.id) { + let cooldown = self.resolutions[last].iter() + .find_map(|r| match r.event { + Event::Cast { construct: caster, player: _, direction: _ } => + match caster == construct.id && r.skill.base_cd().is_some() { + true => Some(r.skill), + false => None, + }, + _ => None, + }); + + if let Some(skill) = cooldown { + construct.skill_set_cd(skill); + } else { construct.reduce_cooldowns(); };