diff --git a/src/ipc/zone/client_trigger.rs b/src/ipc/zone/client_trigger.rs index 1dfb60d..31bd3f3 100644 --- a/src/ipc/zone/client_trigger.rs +++ b/src/ipc/zone/client_trigger.rs @@ -61,6 +61,12 @@ pub enum ClientTriggerCommand { }, #[brw(magic = 0x12Fu16)] RequestTitleList {}, + /// When the player right-clicks their status effect to remove it. + #[brw(magic = 0x68u16)] + ManuallyRemoveEffect { + #[brw(pad_before = 2)] // padding + effect_id: u32, + }, Unknown { category: u16, // seen in haircut event diff --git a/src/world/server.rs b/src/world/server.rs index f7f4422..4506586 100644 --- a/src/world/server.rs +++ b/src/world/server.rs @@ -418,6 +418,13 @@ pub async fn server_main_loop(mut recv: Receiver) -> Result<(), std::i to_remove.push(id); } } + ClientTriggerCommand::ManuallyRemoveEffect { effect_id } => { + let msg = FromServer::LoseEffect(*effect_id as u16); + + if handle.send(msg).is_err() { + to_remove.push(id); + } + } _ => tracing::warn!("Server doesn't know what to do with {:#?}", trigger), } }