aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/analyzers/helpers.rs10
-rw-r--r--src/analyzers/mod.rs1
-rw-r--r--src/analyzers/raids/w3.rs1
-rw-r--r--src/analyzers/raids/w4.rs4
-rw-r--r--src/analyzers/raids/w5.rs2
-rw-r--r--src/analyzers/raids/w6.rs3
-rw-r--r--src/analyzers/raids/w7.rs3
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))
}
}