aboutsummaryrefslogtreecommitdiff
path: root/src/gamedata.rs
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2020-07-24 14:23:53 +0200
committerDaniel Schadt <kingdread@gmx.de>2020-07-24 14:23:53 +0200
commit71528905ed228750559a41144a2e0a95db3e6805 (patch)
tree4e46c6cbd3a3e83ab707e7156b345fbe7f3048ea /src/gamedata.rs
parent01354b0934409c355831bb4202f998fe5dbdc335 (diff)
parent9d27ec7034f9ad07d8a1d74ab30fdc470de4e02d (diff)
downloadevtclib-71528905ed228750559a41144a2e0a95db3e6805.tar.gz
evtclib-71528905ed228750559a41144a2e0a95db3e6805.tar.bz2
evtclib-71528905ed228750559a41144a2e0a95db3e6805.zip
Merge branch 'analyzers'
This brings in proper fight outcome detection, which is nice and needed for downstream applications (raidgrep/ezau). Furthermore, this cleans up the CM detection a bit by moving away from the "descriptive" trigger way to just having dynamically dispatched methods for every log.
Diffstat (limited to 'src/gamedata.rs')
-rw-r--r--src/gamedata.rs66
1 files changed, 8 insertions, 58 deletions
diff --git a/src/gamedata.rs b/src/gamedata.rs
index 30bbcf6..5e83167 100644
--- a/src/gamedata.rs
+++ b/src/gamedata.rs
@@ -39,6 +39,10 @@ pub enum Boss {
// Wing 6
ConjuredAmalgamate = 0xABC6,
+ /// This is the ID of Nikare, as that is what the Twin Largos logs are identified by.
+ ///
+ /// If you want Nikare specifically, consider using [`NIKARE_ID`][NIKARE_ID], and similarly, if
+ /// you need Kenut, you can use [`KENUT_ID`][KENUT_ID].
LargosTwins = 0x5271,
Qadim = 0x51C6,
@@ -65,42 +69,6 @@ pub enum Boss {
WhisperOfJormag = 0x58B7,
}
-impl Boss {
- /// Returns the CM trigger for this boss.
- pub fn cm_trigger(self) -> CmTrigger {
- match self {
- Boss::KeepConstruct => CmTrigger::Unknown,
-
- Boss::Cairn => CmTrigger::BuffPresent(38_098),
- Boss::MursaatOverseer => CmTrigger::HpThreshold(30_000_000),
- Boss::Samarog => CmTrigger::HpThreshold(40_000_000),
- Boss::Deimos => CmTrigger::HpThreshold(42_000_000),
-
- Boss::SoullessHorror => CmTrigger::TimeBetweenBuffs(47414, 11_000),
- Boss::Dhuum => CmTrigger::HpThreshold(40_000_000),
-
- Boss::ConjuredAmalgamate => CmTrigger::BuffPresent(53_075),
- // This is Nikare's health, as the log is saved with his ID
- Boss::LargosTwins => CmTrigger::HpThreshold(19_200_000),
- Boss::Qadim => CmTrigger::HpThreshold(21_100_000),
-
- Boss::CardinalAdina => CmTrigger::HpThreshold(24_800_000),
- Boss::CardinalSabir => CmTrigger::HpThreshold(32_400_000),
- Boss::QadimThePeerless => CmTrigger::HpThreshold(51_000_000),
-
- Boss::Skorvald => CmTrigger::HpThreshold(5_551_340),
- Boss::Artsariiv => CmTrigger::Always,
- Boss::Arkk => CmTrigger::Always,
-
- Boss::MAMA => CmTrigger::Always,
- Boss::Siax => CmTrigger::Always,
- Boss::Ensolyss => CmTrigger::Always,
-
- _ => CmTrigger::None,
- }
- }
-}
-
/// Error for when converting a string to the boss fails.
#[derive(Debug, Clone, Hash, PartialEq, Eq, Error)]
#[error("Invalid boss identifier: {0}")]
@@ -203,28 +171,10 @@ impl Display for Boss {
/// into account.
pub const XERA_PHASE2_ID: u16 = 0x3F9E;
-/// The trigger of how a boss challenge mote (CM) is determined.
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
-pub enum CmTrigger {
- /// The boss does not have a CM available.
- None,
- /// The boss has a CM available but we cannot determine if it has been activated.
- Unknown,
- /// Logs from this boss always count as having the CM active.
- Always,
- /// The CM is determined by the boss's health being at or above the given threshold.
- ///
- /// This works since most bosses increase their HP pool in the CM variant.
- HpThreshold(u32),
- /// The CM is active if the given buff is present in the log.
- ///
- /// The buff can be either on player or the enemy.
- BuffPresent(u32),
- /// The time between buff applications falls below the given threshold.
- ///
- /// The first number is the buff id, the second number is the time threshold in milliseconds.
- TimeBetweenBuffs(u32, u64),
-}
+/// The ID of Nikare in the Twin Largos fight.
+pub const NIKARE_ID: u16 = Boss::LargosTwins as u16;
+/// The ID of Kenut in the Twin Largos fight.
+pub const KENUT_ID: u16 = 21089;
/// Error for when converting a string to a profession fails.
#[derive(Debug, Clone, PartialEq, Eq, Hash, Error)]