1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-07-09 23:47:46 +00:00

Implement necessary packets for the Unending Journey event

This doesn't make cutscenes play *yet*, but stops the client from
getting stuck waiting for a cutscene to begin. Now the event script
continues, and ends the event.
This commit is contained in:
Joshua Goins 2025-07-04 16:18:39 -04:00
parent de2d32266d
commit cd55653077
3 changed files with 38 additions and 0 deletions

View file

@ -234,6 +234,11 @@
"name": "QuestCompleteList", "name": "QuestCompleteList",
"opcode": 637, "opcode": 637,
"size": 760 "size": 760
},
{
"name": "UnkResponse2",
"opcode": 772,
"size": 8
} }
], ],
"ClientZoneIpcType": [ "ClientZoneIpcType": [
@ -376,6 +381,11 @@
"name": "GilShopTransaction", "name": "GilShopTransaction",
"opcode": 327, "opcode": 327,
"size": 24 "size": 24
},
{
"name": "UnkCall2",
"opcode": 632,
"size": 8
} }
], ],
"ServerLobbyIpcType": [ "ServerLobbyIpcType": [

View file

@ -935,6 +935,25 @@ async fn client_loop(
}) })
.await; .await;
} }
ClientZoneIpcData::UnkCall2 { .. } => {
let ipc = ServerZoneIpcSegment {
op_code: ServerZoneIpcType::UnkResponse2,
timestamp: timestamp_secs(),
data: ServerZoneIpcData::UnkResponse2 {
unk1: 1,
},
..Default::default()
};
connection
.send_segment(PacketSegment {
source_actor: connection.player_data.actor_id,
target_actor: connection.player_data.actor_id,
segment_type: SegmentType::Ipc,
data: SegmentData::Ipc { data: ipc },
})
.await;
}
ClientZoneIpcData::Unknown { .. } => { ClientZoneIpcData::Unknown { .. } => {
tracing::warn!("Unknown packet {:?} recieved, this should be handled!", data.op_code); tracing::warn!("Unknown packet {:?} recieved, this should be handled!", data.op_code);
} }

View file

@ -341,6 +341,12 @@ pub enum ServerZoneIpcData {
#[bw(pad_size_to = 760)] #[bw(pad_size_to = 760)]
unk1: Vec<u8>, unk1: Vec<u8>,
}, },
/// Unsure the true purpose of this, but it's needed for the Unending Journey to function.
#[br(pre_assert(*magic == ServerZoneIpcType::UnkResponse2))]
UnkResponse2 {
#[brw(pad_after = 7)]
unk1: u8,
},
Unknown { Unknown {
#[br(count = size - 32)] #[br(count = size - 32)]
unk: Vec<u8>, unk: Vec<u8>,
@ -504,6 +510,9 @@ pub enum ClientZoneIpcData {
#[brw(pad_after = 8)] #[brw(pad_after = 8)]
unk3: u8, unk3: u8,
}, },
/// Unsure the true purpose of this, but it's needed for the Unending Journey to function.
#[br(pre_assert(*magic == ClientZoneIpcType::UnkCall2))]
UnkCall2 { unk1: [u8; 8] },
Unknown { Unknown {
#[br(count = size - 32)] #[br(count = size - 32)]
unk: Vec<u8>, unk: Vec<u8>,