diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/analyzers/helpers.rs | 10 | ||||
| -rw-r--r-- | src/analyzers/mod.rs | 1 | ||||
| -rw-r--r-- | src/analyzers/raids/w3.rs | 1 | ||||
| -rw-r--r-- | src/analyzers/raids/w4.rs | 4 | ||||
| -rw-r--r-- | src/analyzers/raids/w5.rs | 2 | ||||
| -rw-r--r-- | src/analyzers/raids/w6.rs | 3 | ||||
| -rw-r--r-- | src/analyzers/raids/w7.rs | 3 | 
7 files changed, 24 insertions, 0 deletions
| diff --git a/src/analyzers/helpers.rs b/src/analyzers/helpers.rs index b5042aa..067f575 100644 --- a/src/analyzers/helpers.rs +++ b/src/analyzers/helpers.rs @@ -3,6 +3,16 @@ use std::collections::HashMap;  use crate::{AgentKind, EventKind, Log}; +/// Check if the log was rewarded, and if yes, return `Outcome::Success` early. +macro_rules! check_reward { +    ($log:expr) => { +        let log: &Log = $log; +        if log.was_rewarded() { +            return Some(crate::analyzers::Outcome::Success); +        } +    }; +} +  /// Returns the maximum health of the boss agent.  ///  /// If the health cannot be determined, this function returns `None`. diff --git a/src/analyzers/mod.rs b/src/analyzers/mod.rs index ff04728..e19e61a 100644 --- a/src/analyzers/mod.rs +++ b/src/analyzers/mod.rs @@ -27,6 +27,7 @@  use crate::{Encounter, Log};  pub mod fractals; +#[macro_use]  pub mod helpers;  pub mod raids;  pub mod strikes; diff --git a/src/analyzers/raids/w3.rs b/src/analyzers/raids/w3.rs index 1b80b8d..16a3d13 100644 --- a/src/analyzers/raids/w3.rs +++ b/src/analyzers/raids/w3.rs @@ -29,6 +29,7 @@ impl<'log> Analyzer for Xera<'log> {      }      fn outcome(&self) -> Option<Outcome> { +        check_reward!(self.log);          Outcome::from_bool(helpers::players_exit_after_boss(self.log))      }  } diff --git a/src/analyzers/raids/w4.rs b/src/analyzers/raids/w4.rs index adeb2ea..9294e3c 100644 --- a/src/analyzers/raids/w4.rs +++ b/src/analyzers/raids/w4.rs @@ -35,6 +35,7 @@ impl<'log> Analyzer for Cairn<'log> {      }      fn outcome(&self) -> Option<Outcome> { +        check_reward!(self.log);          Outcome::from_bool(helpers::boss_is_dead(self.log))      }  } @@ -71,6 +72,7 @@ impl<'log> Analyzer for MursaatOverseer<'log> {      }      fn outcome(&self) -> Option<Outcome> { +        check_reward!(self.log);          Outcome::from_bool(helpers::boss_is_dead(self.log))      }  } @@ -107,6 +109,7 @@ impl<'log> Analyzer for Samarog<'log> {      }      fn outcome(&self) -> Option<Outcome> { +        check_reward!(self.log);          Outcome::from_bool(helpers::boss_is_dead(self.log))      }  } @@ -143,6 +146,7 @@ impl<'log> Analyzer for Deimos<'log> {      }      fn outcome(&self) -> Option<Outcome> { +        check_reward!(self.log);          // The idea for Deimos is that we first need to figure out when the 10% split happens (if          // it even happens), then we can find the time when 10%-Deimos becomes untargetable and          // then we can compare this time to the player exit time. diff --git a/src/analyzers/raids/w5.rs b/src/analyzers/raids/w5.rs index 578cea8..f914031 100644 --- a/src/analyzers/raids/w5.rs +++ b/src/analyzers/raids/w5.rs @@ -38,6 +38,7 @@ impl<'log> Analyzer for SoullessHorror<'log> {      }      fn outcome(&self) -> Option<Outcome> { +        check_reward!(self.log);          Outcome::from_bool(self.log.events().iter().any(|event| {              if let EventKind::BuffApplication {                  buff_id, @@ -85,6 +86,7 @@ impl<'log> Analyzer for Dhuum<'log> {      }      fn outcome(&self) -> Option<Outcome> { +        check_reward!(self.log);          Outcome::from_bool(helpers::boss_is_dead(self.log))      }  } diff --git a/src/analyzers/raids/w6.rs b/src/analyzers/raids/w6.rs index 97a2094..2284933 100644 --- a/src/analyzers/raids/w6.rs +++ b/src/analyzers/raids/w6.rs @@ -36,6 +36,7 @@ impl<'log> Analyzer for ConjuredAmalgamate<'log> {      }      fn outcome(&self) -> Option<Outcome> { +        check_reward!(self.log);          for event in self.log.events() {              if let EventKind::Spawn { agent_addr } = event.kind() {                  if self @@ -85,6 +86,7 @@ impl<'log> Analyzer for TwinLargos<'log> {      }      fn outcome(&self) -> Option<Outcome> { +        check_reward!(self.log);          let mut nikare_dead = false;          let mut kenut_dead = false; @@ -144,6 +146,7 @@ impl<'log> Analyzer for Qadim<'log> {      }      fn outcome(&self) -> Option<Outcome> { +        check_reward!(self.log);          Outcome::from_bool(helpers::players_exit_after_boss(self.log))      }  } diff --git a/src/analyzers/raids/w7.rs b/src/analyzers/raids/w7.rs index bdfadd6..fd36d77 100644 --- a/src/analyzers/raids/w7.rs +++ b/src/analyzers/raids/w7.rs @@ -36,6 +36,7 @@ impl<'log> Analyzer for CardinalAdina<'log> {      }      fn outcome(&self) -> Option<Outcome> { +        check_reward!(self.log);          Outcome::from_bool(helpers::boss_is_dead(self.log))      }  } @@ -72,6 +73,7 @@ impl<'log> Analyzer for CardinalSabir<'log> {      }      fn outcome(&self) -> Option<Outcome> { +        check_reward!(self.log);          Outcome::from_bool(helpers::boss_is_dead(self.log))      }  } @@ -106,6 +108,7 @@ impl<'log> Analyzer for QadimThePeerless<'log> {      }      fn outcome(&self) -> Option<Outcome> { +        check_reward!(self.log);          Outcome::from_bool(helpers::boss_is_dead(self.log))      }  } | 
