diff options
author | Daniel Schadt <kingdread@gmx.de> | 2021-11-13 11:55:30 +0100 |
---|---|---|
committer | Daniel Schadt <kingdread@gmx.de> | 2021-11-13 11:58:24 +0100 |
commit | 0aee5f34c9f384656740666c6fdc03ccf537d2a3 (patch) | |
tree | ecbc11503ed6fb08b7cb495f65f66f5935f203ea | |
parent | 4a7af01b1d3cb1f4e0d1812d21b8e8ef216ee777 (diff) | |
download | evtclib-0aee5f34c9f384656740666c6fdc03ccf537d2a3.tar.gz evtclib-0aee5f34c9f384656740666c6fdc03ccf537d2a3.tar.bz2 evtclib-0aee5f34c9f384656740666c6fdc03ccf537d2a3.zip |
Add a "is_generic" to detect WvW logs
The wording on the evtc README is
> an npcid of 1 indicates log is generic - triggers by squadmember
> entering combat and not as a result of a boss species id.
It is not quite clear whether "generic" implies WvW or if there are PvE
generic logs as well if you manage to set up arcdps in the right way.
Therefore, the wording in evtclib is rather unspecific as well.
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | src/lib.rs | 12 | ||||
-rw-r--r-- | tests/logs/wvw-20211112.zevtc | bin | 0 -> 10372 bytes | |||
-rw-r--r-- | tests/parsing.rs | 1 | ||||
-rw-r--r-- | tests/wvw.rs | 11 |
5 files changed, 25 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b916e0..5701aa7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. ### Added - Boss and encounter definitions for the training golems (`StandardKittyGolem`, `MediumKittyGolem`, `LargeKittyGolem`) +- `Log::is_generic` to check whether a log is generic (WvW) ### Fixed - `evtclib` will no longer choke on WvW logs where player names might not contain the expected @@ -257,6 +257,18 @@ impl Log { let last = self.events().last().map(Event::time).unwrap_or(0); last - first } + + /// Check whether this log represents a "generic" log. + /// + /// A generic log is a log that is not tied to a specific boss ID, but rather is triggered by + /// squad members entering and leaving combat. This is for example the case in WvW logs, which + /// can be identified using this function. + /// + /// Note that many of the analyzing functions (such as [`Log::was_rewarded`]) do not have + /// sensible results for generic functions. + pub fn is_generic(&self) -> bool { + self.boss_id == 1 + } } /// Convenience data accessing funtions for [`Log`][Log]s. diff --git a/tests/logs/wvw-20211112.zevtc b/tests/logs/wvw-20211112.zevtc Binary files differnew file mode 100644 index 0000000..a5e135d --- /dev/null +++ b/tests/logs/wvw-20211112.zevtc diff --git a/tests/parsing.rs b/tests/parsing.rs index 3eb3a4b..49e6fe9 100644 --- a/tests/parsing.rs +++ b/tests/parsing.rs @@ -13,6 +13,7 @@ macro_rules! test { let log = evtclib::raw::parse_zip(&mut file).expect("parsing zip failed"); let log = evtclib::process(&log).expect("processing log failed"); assert_eq!(log.encounter(), Some($boss)); + assert!(!log.is_generic()); let players = $players; diff --git a/tests/wvw.rs b/tests/wvw.rs new file mode 100644 index 0000000..5af15c7 --- /dev/null +++ b/tests/wvw.rs @@ -0,0 +1,11 @@ +//! Tests for WvW log parsing. +//! +//! WvW logs are a bit special in some regards (no proper boss ID, players with autogenerated +//! names), so it is good to have some basic testing for those. + +#[test] +fn test_smoke() { + let log = "./tests/logs/wvw-20211112.zevtc"; + let log = evtclib::process_file(log, evtclib::Compression::Zip).unwrap(); + assert!(log.is_generic()); +} |