aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md5
-rw-r--r--src/analyzers/mod.rs6
-rw-r--r--src/gamedata.rs72
-rw-r--r--tests/logs/ankka-20220303.zevtcbin0 -> 1815000 bytes
-rw-r--r--tests/logs/dragonvoid-20220303.zevtcbin0 -> 3852490 bytes
-rw-r--r--tests/logs/mai-trin-20220303.zevtcbin0 -> 1749867 bytes
-rw-r--r--tests/logs/minister-li-20220303.zevtcbin0 -> 3509482 bytes
-rw-r--r--tests/parsing.rs76
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
new file mode 100644
index 0000000..edcb6a6
--- /dev/null
+++ b/tests/logs/ankka-20220303.zevtc
Binary files differ
diff --git a/tests/logs/dragonvoid-20220303.zevtc b/tests/logs/dragonvoid-20220303.zevtc
new file mode 100644
index 0000000..08ab387
--- /dev/null
+++ b/tests/logs/dragonvoid-20220303.zevtc
Binary files differ
diff --git a/tests/logs/mai-trin-20220303.zevtc b/tests/logs/mai-trin-20220303.zevtc
new file mode 100644
index 0000000..493e2d1
--- /dev/null
+++ b/tests/logs/mai-trin-20220303.zevtc
Binary files differ
diff --git a/tests/logs/minister-li-20220303.zevtc b/tests/logs/minister-li-20220303.zevtc
new file mode 100644
index 0000000..b74f813
--- /dev/null
+++ b/tests/logs/minister-li-20220303.zevtc
Binary files differ
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! {