diff options
-rw-r--r-- | CHANGELOG.md | 5 | ||||
-rw-r--r-- | src/analyzers/mod.rs | 6 | ||||
-rw-r--r-- | src/gamedata.rs | 72 | ||||
-rw-r--r-- | tests/logs/ankka-20220303.zevtc | bin | 0 -> 1815000 bytes | |||
-rw-r--r-- | tests/logs/dragonvoid-20220303.zevtc | bin | 0 -> 3852490 bytes | |||
-rw-r--r-- | tests/logs/mai-trin-20220303.zevtc | bin | 0 -> 1749867 bytes | |||
-rw-r--r-- | tests/logs/minister-li-20220303.zevtc | bin | 0 -> 3509482 bytes | |||
-rw-r--r-- | tests/parsing.rs | 76 |
8 files changed, 157 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index df31249..b1384b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. ## Unreleased ### Added - `EliteSpec`s for the new End of Dragons specializations +- `Boss` and `Encounter` for the new strikes + - `{Boss, Encounter}::CaptainMaiTrin` + - `{Boss, Encounter}::Ankka` + - `{Boss, Encounter}::MinisterLi` + - `{Boss, Encounter}::Dragonvoid` ## 0.6.1 - 2021-11-25 ### Added diff --git a/src/analyzers/mod.rs b/src/analyzers/mod.rs index 1d8caf7..ed0f157 100644 --- a/src/analyzers/mod.rs +++ b/src/analyzers/mod.rs @@ -131,6 +131,10 @@ pub fn for_log<'l>(log: &'l Log) -> Option<Box<dyn Analyzer + 'l>> { | Encounter::SuperKodanBrothers | Encounter::FraenirOfJormag | Encounter::Boneskinner - | Encounter::WhisperOfJormag => Some(Box::new(strikes::GenericStrike::new(log))), + | Encounter::WhisperOfJormag + | Encounter::CaptainMaiTrin + | Encounter::Ankka + | Encounter::MinisterLi + | Encounter::Dragonvoid => Some(Box::new(strikes::GenericStrike::new(log))), } } diff --git a/src/gamedata.rs b/src/gamedata.rs index 44ae04e..8dfe288 100644 --- a/src/gamedata.rs +++ b/src/gamedata.rs @@ -150,6 +150,10 @@ pub enum Encounter { FraenirOfJormag = Boss::FraenirOfJormag as u16, Boneskinner = Boss::Boneskinner as u16, WhisperOfJormag = Boss::WhisperOfJormag as u16, + CaptainMaiTrin = Boss::CaptainMaiTrin as u16, + Ankka = Boss::Ankka as u16, + MinisterLi = Boss::MinisterLi as u16, + Dragonvoid = Boss::Dragonvoid as u16, } impl Encounter { @@ -202,6 +206,10 @@ impl Encounter { Encounter::FraenirOfJormag => &[Boss::FraenirOfJormag], Encounter::Boneskinner => &[Boss::Boneskinner], Encounter::WhisperOfJormag => &[Boss::WhisperOfJormag], + Encounter::CaptainMaiTrin => &[Boss::CaptainMaiTrin], + Encounter::Ankka => &[Boss::Ankka], + Encounter::MinisterLi => &[Boss::MinisterLi], + Encounter::Dragonvoid => &[Boss::Dragonvoid], } } @@ -241,7 +249,9 @@ impl Encounter { | CardinalSabir | QadimThePeerless => GameMode::Raid, IcebroodConstruct | Boneskinner | SuperKodanBrothers | FraenirOfJormag - | WhisperOfJormag => GameMode::Strike, + | WhisperOfJormag | CaptainMaiTrin | Ankka | MinisterLi | Dragonvoid => { + GameMode::Strike + } StandardKittyGolem | MediumKittyGolem | LargeKittyGolem => GameMode::Golem, } @@ -322,6 +332,10 @@ impl Display for Encounter { Encounter::FraenirOfJormag => "Fraenir of Jormag", Encounter::Boneskinner => "Boneskinner", Encounter::WhisperOfJormag => "Whisper of Jormag", + Encounter::CaptainMaiTrin => "Captain Mai Trin", + Encounter::Ankka => "Ankka", + Encounter::MinisterLi => "Minister Li", + Encounter::Dragonvoid => "The Dragonvoid", }; write!(f, "{}", name) } @@ -545,6 +559,22 @@ pub enum Boss { /// /// [Guild Wars 2 Wiki](https://wiki.guildwars2.com/wiki/Whisper_of_Jormag) WhisperOfJormag = 0x58B7, + /// Captain Mai Trin, boss of the Aetherblade Hideout strike mission. + /// + /// [Guild Wars 2 Wiki](https://wiki.guildwars2.com/wiki/Strike_Mission:_Aetherblade_Hideout) + CaptainMaiTrin = 0x5DE1, + /// Ankka, boss in the Xunlai Jade Junkyard. + /// + /// [Guild Wars 2 Wiki](https://wiki.guildwars2.com/wiki/Strike_Mission:_Xunlai_Jade_Junkyard) + Ankka = 0x5D95, + /// Minister Li, boss in the Kaineng Overlook. + /// + /// [Guild Wars 2 Wiki](https://wiki.guildwars2.com/wiki/Strike_Mission:_Kaineng_Overlook) + MinisterLi = 0x5FA5, + /// The Dragonvoid, boss in the Harvest Temple. + /// + /// [Guild Wars 2 Wiki](https://wiki.guildwars2.com/wiki/Strike_Mission:_Harvest_Temple) + Dragonvoid = 0x5F37, } impl Boss { @@ -595,6 +625,10 @@ impl Boss { Boss::FraenirOfJormag => Encounter::FraenirOfJormag, Boss::Boneskinner => Encounter::Boneskinner, Boss::WhisperOfJormag => Encounter::WhisperOfJormag, + Boss::CaptainMaiTrin => Encounter::CaptainMaiTrin, + Boss::Ankka => Encounter::Ankka, + Boss::MinisterLi => Encounter::MinisterLi, + Boss::Dragonvoid => Encounter::Dragonvoid, } } } @@ -664,6 +698,10 @@ impl FromStr for Boss { "fraenir" | "fraenir of jormag" => Ok(Boss::FraenirOfJormag), "boneskinner" => Ok(Boss::Boneskinner), "whisper" | "whisper of jormag" => Ok(Boss::WhisperOfJormag), + "captain mai trin" | "mai trin" | "mai" => Ok(Boss::CaptainMaiTrin), + "ankka" => Ok(Boss::Ankka), + "minister li" | "li" => Ok(Boss::MinisterLi), + "dragonvoid" | "the dragonvoid" => Ok(Boss::Dragonvoid), _ => Err(ParseBossError(s.to_owned())), } @@ -717,6 +755,10 @@ impl Display for Boss { Boss::FraenirOfJormag => "Fraenir of Jormag", Boss::Boneskinner => "Boneskinner", Boss::WhisperOfJormag => "Whisper of Jormag", + Boss::CaptainMaiTrin => "Captain Mai Trin", + Boss::Ankka => "Ankka", + Boss::MinisterLi => "Minister Li", + Boss::Dragonvoid => "The Dragonvoid", }; write!(f, "{}", name) } @@ -1057,6 +1099,20 @@ mod tests { ("kodans", SuperKodanBrothers), ("whisper", WhisperOfJormag), ("Whisper of Jormag", WhisperOfJormag), + ("captain mai trin", CaptainMaiTrin), + ("Captain Mai Trin", CaptainMaiTrin), + ("mai trin", CaptainMaiTrin), + ("Mai Trin", CaptainMaiTrin), + ("ankka", Ankka), + ("Ankka", Ankka), + ("minister li", MinisterLi), + ("Minister Li", MinisterLi), + ("li", MinisterLi), + ("Li", MinisterLi), + ("dragonvoid", Dragonvoid), + ("Dragonvoid", Dragonvoid), + ("the dragonvoid", Dragonvoid), + ("The Dragonvoid", Dragonvoid), ]; for (input, expected) in tests { @@ -1191,6 +1247,20 @@ mod tests { ("Voice of the Fallen", VoiceOfTheFallen), ("whisper", WhisperOfJormag), ("Whisper of Jormag", WhisperOfJormag), + ("captain mai trin", CaptainMaiTrin), + ("Captain Mai Trin", CaptainMaiTrin), + ("mai trin", CaptainMaiTrin), + ("Mai Trin", CaptainMaiTrin), + ("ankka", Ankka), + ("Ankka", Ankka), + ("minister li", MinisterLi), + ("Minister Li", MinisterLi), + ("li", MinisterLi), + ("Li", MinisterLi), + ("dragonvoid", Dragonvoid), + ("Dragonvoid", Dragonvoid), + ("the dragonvoid", Dragonvoid), + ("The Dragonvoid", Dragonvoid), ]; for (input, expected) in tests { diff --git a/tests/logs/ankka-20220303.zevtc b/tests/logs/ankka-20220303.zevtc Binary files differnew file mode 100644 index 0000000..edcb6a6 --- /dev/null +++ b/tests/logs/ankka-20220303.zevtc diff --git a/tests/logs/dragonvoid-20220303.zevtc b/tests/logs/dragonvoid-20220303.zevtc Binary files differnew file mode 100644 index 0000000..08ab387 --- /dev/null +++ b/tests/logs/dragonvoid-20220303.zevtc diff --git a/tests/logs/mai-trin-20220303.zevtc b/tests/logs/mai-trin-20220303.zevtc Binary files differnew file mode 100644 index 0000000..493e2d1 --- /dev/null +++ b/tests/logs/mai-trin-20220303.zevtc diff --git a/tests/logs/minister-li-20220303.zevtc b/tests/logs/minister-li-20220303.zevtc Binary files differnew file mode 100644 index 0000000..b74f813 --- /dev/null +++ b/tests/logs/minister-li-20220303.zevtc diff --git a/tests/parsing.rs b/tests/parsing.rs index 1e9f0ef..4a0ee18 100644 --- a/tests/parsing.rs +++ b/tests/parsing.rs @@ -761,6 +761,82 @@ test! { ], } +test! { + name: parse_mai_trin, + log: "logs/mai-trin-20220303.zevtc", + boss: Encounter::CaptainMaiTrin, + mode: Strike, + players: &[ + (2, ":Areki.5906", "Areki Is Too Loud", Ranger, Some(Druid)), + (2, ":DarkSide.8427", "Nova Kings", Mesmer, Some(Virtuoso)), + (2, ":Master Dragon.6712", "Dragonnic", Warrior, Some(Berserker)), + (2, ":Salieri.7962", "Attack The Illusion", Mesmer, Some(Chronomancer)), + (2, ":vuko.3692", "Jgww", Thief, Some(Specter)), + (3, ":LINKAZZATORE.8135", "Urtola", Necromancer, Some(Scourge)), + (3, ":Lawitz.5128", "It Should Be Weaver", Engineer, Some(Mechanist)), + (3, ":Lin Chin Ping.9480", "Luna L Fay", Necromancer, Some(Scourge)), + (3, ":Tareo.3726", "Tarea A", Necromancer, Some(Scourge)), + (3, ":nate.5871", "Cute Aníme Waifu", Mesmer, Some(Chronomancer)), + ], +} + +test! { + name: parse_ankka, + log: "logs/ankka-20220303.zevtc", + boss: Encounter::Ankka, + mode: Strike, + players: &[ + (2, ":Areki.5906", "Areki Is Too Loud", Ranger, Some(Druid)), + (2, ":DarkSide.8427", "Nova Kings", Mesmer, Some(Virtuoso)), + (2, ":Master Dragon.6712", "Dragonnic", Warrior, Some(Berserker)), + (2, ":Salieri.7962", "Attack The Illusion", Mesmer, Some(Chronomancer)), + (2, ":vuko.3692", "Jgww", Thief, Some(Specter)), + (3, ":LINKAZZATORE.8135", "Urtola", Necromancer, Some(Scourge)), + (3, ":Lawitz.5128", "It Should Be Weaver", Engineer, Some(Mechanist)), + (3, ":Lin Chin Ping.9480", "Luna L Fay", Necromancer, Some(Scourge)), + (3, ":Tareo.3726", "Tarea A", Necromancer, Some(Scourge)), + (3, ":nate.5871", "Cute Aníme Waifu", Mesmer, Some(Chronomancer)), + ], +} + +test! { + name: parse_minister_li, + log: "logs/minister-li-20220303.zevtc", + boss: Encounter::MinisterLi, + mode: Strike, + players: &[ + (2, ":Areki.5906", "Areki Is Too Loud", Ranger, Some(Druid)), + (2, ":DarkSide.8427", "Nova Kings", Mesmer, Some(Virtuoso)), + (2, ":Master Dragon.6712", "Dragonnic", Warrior, Some(Berserker)), + (2, ":Salieri.7962", "Attack The Illusion", Mesmer, Some(Chronomancer)), + (2, ":vuko.3692", "Jgww", Thief, Some(Specter)), + (3, ":LINKAZZATORE.8135", "Urtola", Necromancer, Some(Scourge)), + (3, ":Lawitz.5128", "It Should Be Weaver", Engineer, Some(Mechanist)), + (3, ":Lin Chin Ping.9480", "Luna L Fay", Necromancer, Some(Scourge)), + (3, ":Tareo.3726", "Tarea A", Necromancer, Some(Scourge)), + (3, ":nate.5871", "Cute Aníme Waifu", Mesmer, Some(Chronomancer)), + ], +} + +test! { + name: parse_dragonvoid, + log: "logs/dragonvoid-20220303.zevtc", + boss: Encounter::Dragonvoid, + mode: Strike, + players: &[ + (2, ":Areki.5906", "Areki Is Too Loud", Ranger, Some(Druid)), + (2, ":DarkSide.8427", "Nova Kings", Mesmer, Some(Virtuoso)), + (2, ":Master Dragon.6712", "Dragonnic", Warrior, Some(Berserker)), + (2, ":Salieri.7962", "Attack The Illusion", Mesmer, Some(Chronomancer)), + (2, ":vuko.3692", "Jgww", Thief, Some(Specter)), + (3, ":LINKAZZATORE.8135", "Urtola", Necromancer, Some(Scourge)), + (3, ":Lawitz.5128", "It Should Be Weaver", Engineer, Some(Mechanist)), + (3, ":Lin Chin Ping.9480", "Luna L Fay", Necromancer, Some(Scourge)), + (3, ":Tareo.3726", "Tarea A", Necromancer, Some(Scourge)), + (3, ":nate.5871", "Cute Aníme Waifu", Mesmer, Some(Chronomancer)), + ], +} + // Various tests test! { |