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)) } } |