diff options
author | Daniel Schadt <kingdread@gmx.de> | 2022-04-20 12:16:23 +0200 |
---|---|---|
committer | Daniel Schadt <kingdread@gmx.de> | 2022-04-20 12:16:23 +0200 |
commit | e9b0ebc276e2a68e37922ded080662584ad0f99f (patch) | |
tree | 823f7bdd2ae1ff8d36586cc5a341a1669c14af65 | |
parent | dd838eaed16323e5383962fed70f1f2c91750ff8 (diff) | |
download | evtclib-e9b0ebc276e2a68e37922ded080662584ad0f99f.tar.gz evtclib-e9b0ebc276e2a68e37922ded080662584ad0f99f.tar.bz2 evtclib-e9b0ebc276e2a68e37922ded080662584ad0f99f.zip |
add support for Aetherblade Hideout Challenge Mote
-rw-r--r-- | CHANGELOG.md | 4 | ||||
-rw-r--r-- | src/analyzers/strikes.rs | 21 |
2 files changed, 18 insertions, 7 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 940d969..2b9aed6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. ## Unreleased +### Added +- Support for Aetherblade Hideout logs with the Challenge Mote active: + - Success detection for CM logs + - CM detection ## 0.7.1 - 2022-04-01 ### Added diff --git a/src/analyzers/strikes.rs b/src/analyzers/strikes.rs index 9244124..420a674 100644 --- a/src/analyzers/strikes.rs +++ b/src/analyzers/strikes.rs @@ -45,7 +45,10 @@ pub struct CaptainMaiTrin<'log> { } impl<'log> CaptainMaiTrin<'log> { + /// ID of the Echo of Scarlet Briar in normal mode. pub const ECHO_OF_SCARLET_BRIAR: u16 = 24_768; + /// ID of the ECho of Scarlet Briar with the challenge mote active. + pub const ECHO_OF_SCARLET_BRIAR_CM: u16 = 25_247; /// Determined buff that is used in Mai Trin's Strike. /// /// Thanks to ArenaNet's consistency, there are multiple versions of the Determined buff in @@ -53,6 +56,12 @@ impl<'log> CaptainMaiTrin<'log> { /// /// The chat link for this buff is `[&Bn8DAAA=]`. pub const DETERMINED_ID: u32 = 895; + /// Cutoff for when the fight is considered CM. + /// + /// See + /// <https://wiki.guildwars2.com/wiki/Strike_Mission:_Aetherblade_Hideout#Stats_of_encounter_relevant_enemies> + /// for a reference. + pub const MAI_CM_HEALTH: u64 = 8_000_000; /// Create a new [`CaptainMaiTrin`] analyzer for the given log. /// @@ -69,17 +78,15 @@ impl<'log> Analyzer for CaptainMaiTrin<'log> { } fn is_cm(&self) -> bool { - // EoD strike CMs are not implemented yet as of 2022-03-31 - false + helpers::boss_health(self.log).unwrap_or_default() > Self::MAI_CM_HEALTH } fn outcome(&self) -> Option<Outcome> { check_reward!(self.log); - let scarlet = self - .log - .characters() - .find(|npc| npc.id() == Self::ECHO_OF_SCARLET_BRIAR)?; + let scarlet = self.log.characters().find(|npc| { + npc.id() == Self::ECHO_OF_SCARLET_BRIAR || npc.id() == Self::ECHO_OF_SCARLET_BRIAR_CM + })?; let mai = self .log .characters() @@ -119,7 +126,7 @@ impl<'log> Ankka<'log> { /// /// The chat link for this buff is `[&Bn8DAAA=]`. pub const DETERMINED_ID: u32 = CaptainMaiTrin::DETERMINED_ID; - /// The minimum duration of [`DETERMINED_ID`] buff applications. + /// The minimum duration of [`Ankka::DETERMINED_ID`] buff applications. pub const DURATION_CUTOFF: i32 = i32::MAX; /// The expected number of times that Ankka needs to phase before we consider it a success. pub const EXPECTED_PHASE_COUNT: usize = 3; |