diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/event.rs | 5 | ||||
-rw-r--r-- | src/lib.rs | 5 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/event.rs b/src/event.rs index 4d02fe7..ee561f8 100644 --- a/src/event.rs +++ b/src/event.rs @@ -19,6 +19,8 @@ pub enum FromRawEventError { UnknownStateChange(raw::CbtStateChange), #[error("event contains an unknown damage event")] UnknownDamageEvent, + #[error("an unknown language byte was found")] + UnknownLanguage, #[error("the event contains invalid text")] InvalidText, #[error("an unexpected REPLINFO was found")] @@ -338,7 +340,8 @@ impl TryFrom<&raw::CbtEvent> for Event { agent_addr: raw_event.src_agent, }, CbtStateChange::Language => EventKind::Language { - language: raw::Language::from_u64(raw_event.src_agent).unwrap(), + language: raw::Language::from_u64(raw_event.src_agent) + .ok_or(FromRawEventError::UnknownLanguage)?, }, CbtStateChange::GwBuild => EventKind::Build { build: raw_event.src_agent, @@ -188,6 +188,11 @@ impl Log { /// /// Be careful with encounters that have multiple boss agents, such as Trio /// and Xera. + /// + /// # Panics + /// + /// This function will panic if the boss agent cannot be found. For a more failsafe version, + /// see [`Log::boss_agents`]. pub fn boss(&self) -> &Agent { self.characters() .find(|c| c.character().id() == self.boss_id) |