1use super::{HelperReadWrite, ObjectHeader, PacketReadWrite};
3use crate::{fixed_types::FixedBytes, AsciiString};
4
5#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
15#[cfg_attr(feature = "serde", serde(default))]
16#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
17#[Id(0x03, 0x00)]
18pub struct MapTransferPacket {
19 pub map: ObjectHeader,
21 pub target: ObjectHeader,
23 pub settings: ZoneSettings,
25}
26
27#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
33#[cfg_attr(feature = "serde", serde(default))]
34#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
35#[Id(0x03, 0x05)]
36pub struct MoveZonePacket {
37 pub world: ObjectHeader,
39 pub current_zone_id: u32,
41 pub door_id: u32,
43}
44
45#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
49#[cfg_attr(feature = "serde", serde(default))]
50#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
51#[Id(0x03, 0x06)]
52pub struct Unk0306Packet {
53 pub unk: [u8; 0xC],
54}
55
56#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
62#[cfg_attr(feature = "serde", serde(default))]
63#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
64#[Id(0x03, 0x08)]
65pub struct ServerHelloPacket {
66 pub unk1: u16,
68 #[SeekAfter(4)]
69 pub blockid: u16,
71 pub unk2: u32,
72}
73
74#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
88#[cfg_attr(feature = "serde", serde(default))]
89#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
90#[Id(0x03, 0x10)]
91pub struct MapLoadedPacket {
92 pub map_object: ObjectHeader,
94 pub unk: [u8; 0x20],
95}
96
97#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
103#[cfg_attr(feature = "serde", serde(default))]
104#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
105#[Id(0x03, 0x11)]
106pub struct CampshipDownAreaPacket {
107 pub world: ObjectHeader,
108 pub unk4: u32,
109 pub area: u32,
110}
111
112#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
118#[cfg_attr(feature = "serde", serde(default))]
119#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
120#[Id(0x03, 0x12)]
121pub struct ToCampshipPacket {
122 pub world: ObjectHeader,
123 pub unk4: u32,
124}
125
126#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
132#[cfg_attr(feature = "serde", serde(default))]
133#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
134#[Id(0x03, 0x16)]
135pub struct CampshipDownPacket {
136 pub world: ObjectHeader,
137 pub unk4: u32,
138}
139
140#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
147#[cfg_attr(feature = "serde", serde(default))]
148#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
149#[Id(0x03, 0x17)]
150pub struct ReturnToCampshipPacket {
151 pub world: ObjectHeader,
152}
153
154#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
160#[cfg_attr(feature = "serde", serde(default))]
161#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
162#[Id(0x03, 0x19)]
163pub struct ReturnToCampshipFinalPacket {
164 pub world: ObjectHeader,
165}
166
167#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
173#[cfg_attr(feature = "serde", serde(default))]
174#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
175#[Id(0x03, 0x1A)]
176pub struct DeathToCampshipPacket {
177 pub world: ObjectHeader,
178}
179
180#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
186#[cfg_attr(feature = "serde", serde(default))]
187#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
188#[Id(0x03, 0x1C)]
189pub struct CampshipToLobbyPacket {
190 pub world: ObjectHeader,
191}
192
193#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
201#[cfg_attr(feature = "serde", serde(default))]
202#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
203#[Id(0x03, 0x24)]
204#[Flags(Flags::PACKED)]
205#[Magic(0x7542, 0x5E)]
206pub struct LoadLevelPacket {
207 pub map_object: ObjectHeader,
209 pub host: ObjectHeader,
211 pub settings: ZoneSettings,
213 pub world_obj: ObjectHeader,
214 pub quest: ObjectHeader,
215 pub party: ObjectHeader,
216 pub unk7: AsciiString,
217 pub other_settings: Vec<ZoneSettings>,
219 pub warps: Vec<WarpInfo>,
220 pub unk10: Vec<LoadLevelThing3>,
221 pub unk11: Vec<LoadLevelThing4>,
222 pub unk12: Vec<LoadLevelThing5>,
223 pub unk13: Vec<LoadLevelThing6>,
224 pub unk14: Vec<LoadLevelThing7>,
225 pub unk15: Vec<LoadLevelThing8>,
226 pub unk16: Vec<UnkThing1>,
227 pub unk17: AsciiString,
228 pub unk18: u32,
229 pub unk19: u32,
230 pub unk20: u32,
231 pub unk21: FixedBytes<0x3C>,
232 pub unk22: u32,
233 pub unk23: [u8; 0x10],
234 pub unk24: [u8; 0x10],
235 pub unk25: Vec<u32>,
236 pub unk26: FixedBytes<0x200>,
237 pub unk27: Vec<UnkThing2>,
238 pub unk28: AsciiString,
239 pub unk29: AsciiString,
240 pub unk30: u64,
241 pub unk31: u64,
242 pub unk32: u8,
243 pub unk33: u8,
244 pub unk34: u8,
245 pub unk35: u8,
246 pub unk36: u32,
247 pub unk37: [u8; 0x14],
248 pub unk38: u64,
249 pub unk39: u32,
250 pub unk40: u32,
251 pub unk41: [u8; 0x12],
252 pub unk42: u64,
253 pub unk43: u8,
254 pub unk44: u8,
255 pub unk45: Vec<LoadLevelThing9>,
256 pub unk46: AsciiString,
257 pub unk47: Vec<LoadLevelThing10>,
258 pub unk48: u32,
259 pub unk49: [u8; 0x14],
260 pub unk50: [u8; 0x14],
261 pub unk51: u32,
262}
263
264#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
270#[cfg_attr(feature = "serde", serde(default))]
271#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
272#[Id(0x03, 0x34)]
273pub struct CasinoToLobbyPacket {
274 pub unk1: u32,
275 pub unk2: u32,
276 pub unk3: u32,
277 pub unk4: u32,
278}
279
280#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
286#[cfg_attr(feature = "serde", serde(default))]
287#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
288#[Id(0x03, 0x35)]
289pub struct CasinoTransportPacket {
290 pub unk1: u32,
291 pub unk2: u32,
292 pub unk3: u32,
293}
294
295#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
301#[cfg_attr(feature = "serde", serde(default))]
302#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
303#[Id(0x03, 0x38)]
304pub struct BridgeToLobbyPacket {
305 pub unk1: u32,
306 pub unk2: u32,
307 pub unk3: u32,
308 pub zone_id: u32,
309 pub unk4: u32,
310}
311
312#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
318#[cfg_attr(feature = "serde", serde(default))]
319#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
320#[Id(0x03, 0x39)]
321pub struct BridgeTransportPacket {
322 pub unk1: u32,
323 pub unk2: u32,
324 pub unk3: u32,
325}
326
327#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
333#[cfg_attr(feature = "serde", serde(default))]
334#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
335#[Id(0x03, 0x3B)]
336pub struct CafeToLobbyPacket {
337 pub unk1: u32,
338 pub unk2: u32,
339 pub unk3: u32,
340 pub zone_id: u32,
341 pub unk4: u32,
342}
343
344#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
350#[cfg_attr(feature = "serde", serde(default))]
351#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
352#[Id(0x03, 0x3C)]
353pub struct CafeTransportPacket {
354 pub unk1: u32,
355 pub unk2: u32,
356 pub unk3: u32,
357}
358
359#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
366#[cfg_attr(feature = "serde", serde(default))]
367#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
368#[Id(0x03, 0x41)]
369pub struct StoryToLobbyPacket {
370 pub unk1: u32,
371 pub unk2: u32,
372 pub unk3: u32,
373}
374
375#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
381#[cfg_attr(feature = "serde", serde(default))]
382#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
383pub struct ZoneSettings {
384 pub world_id: u32,
385 pub unk1: u32,
386 pub zone_id: u32,
387 pub map_id: u32,
389 pub zone_type: u32,
390 pub seed: u32,
391 pub args: u32,
392 pub size_x: u32,
393 pub size_y: u32,
394 pub unk2: u32,
395 pub area_index: u32,
396 pub sub_area: u32,
397 pub unk3: u32,
398}
399#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
400#[cfg_attr(feature = "serde", serde(default))]
401#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
402pub struct WarpInfo {
403 pub unk1: u32,
404 pub zone_id: u32,
405 pub door_id: u32,
406 pub dest_zone: u32,
407 pub backdoor_id: u32,
408}
409#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
410#[cfg_attr(feature = "serde", serde(default))]
411#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
412pub struct LoadLevelThing3 {
413 pub unk1: u32,
414 pub unk2: u32,
415}
416#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
417#[cfg_attr(feature = "serde", serde(default))]
418#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
419pub struct LoadLevelThing4 {
420 pub unk1: u32,
421 pub unk2: u32,
422 pub unk3: u32,
423 pub unk4: u32,
424 pub unk5: u32,
425 pub unk6: u32,
426 pub unk7: u32,
427 pub unk8: u32,
428 pub unk9: u32,
429 pub unk10: u32,
430 pub unk11: u32,
431 pub unk12: u32,
432 pub unk13: u32,
433 pub unk14: u32,
434 pub unk15: u32,
435 pub unk16: u32,
436 pub unk17: u32,
437 pub unk18: u32,
438 pub unk19: u32,
439 pub unk20: u32,
440 pub unk21: u32,
441 pub unk22: u32,
442 pub unk23: u32,
443 pub unk24: u32,
444 pub unk25: u32,
445 pub unk26: u32,
446 pub unk27: u32,
447 pub unk28: u32,
448 pub unk29: u32,
449 pub unk30: u32,
450 pub unk31: u32,
451 pub unk32: u32,
452 pub unk33: u32,
453 pub unk34: u32,
454}
455#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
456#[cfg_attr(feature = "serde", serde(default))]
457#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
458pub struct LoadLevelThing5 {
459 pub unk1: u32,
460 pub unk2: u32,
461 pub unk3: u32,
462 pub unk4: u32,
463 pub unk5: u32,
464 pub unk6: u32,
465 pub unk7: u32,
466 pub unk8: u32,
467 pub unk9: u32,
468 pub unk10: u32,
469 pub unk11: u32,
470 pub unk12: u32,
471 pub unk13: u32,
472 pub unk14: u32,
473 pub unk15: u32,
474 pub unk16: u32,
475 pub unk17: u32,
476 pub unk18: u32,
477 pub unk19: u32,
478 pub unk20: u32,
479 pub unk21: u32,
480 pub unk22: u32,
481 pub unk23: u32,
482 pub unk24: u32,
483 pub unk25: u32,
484 pub unk26: u32,
485 pub unk27: u32,
486 pub unk28: u32,
487 pub unk29: u32,
488 pub unk30: u32,
489 pub unk31: u32,
490 pub unk32: u32,
491 pub unk33: u32,
492 pub unk34: u32,
493 pub unk35: u32,
494 pub unk36: u32,
495 pub unk37: u32,
496 pub unk38: u32,
497 pub unk39: u32,
498 pub unk40: u32,
499 pub unk41: u32,
500 pub unk42: u32,
501 pub unk43: u32,
502 pub unk44: u32,
503 pub unk45: u32,
504 pub unk46: u32,
505 pub unk47: u32,
506 pub unk48: u32,
507 pub unk49: u32,
508 pub unk50: u32,
509 pub unk51: u32,
510 pub unk52: u32,
511 pub unk53: u32,
512 pub unk54: u32,
513 pub unk55: u32,
514 pub unk56: u32,
515}
516#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
517#[cfg_attr(feature = "serde", serde(default))]
518#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
519pub struct LoadLevelThing6 {
520 pub unk1: u32,
521 pub unk2: u32,
522 pub unk3: u32,
523 pub unk4: u32,
524 pub unk5: u32,
525 pub unk6: u32,
526 pub unk7: u32,
527 pub unk8: u32,
528 pub unk9: u32,
529 pub unk10: u32,
530 pub unk11: u32,
531 pub unk12: u32,
532 pub unk13: u32,
533 pub unk14: u32,
534 pub unk15: u32,
535 pub unk16: u32,
536 pub unk17: u32,
537 pub unk18: u32,
538 pub unk19: u32,
539 pub unk20: u32,
540 pub unk21: u32,
541 pub unk22: u32,
542 pub unk23: u32,
543 pub unk24: u32,
544 pub unk25: u32,
545 pub unk26: u32,
546 pub unk27: u32,
547 pub unk28: u32,
548 pub unk29: u32,
549 pub unk30: u32,
550 pub unk31: u32,
551 pub unk32: u32,
552 pub unk33: u32,
553 pub unk34: u32,
554 pub unk35: u32,
555 pub unk36: u32,
556 pub unk37: u32,
557 pub unk38: u32,
558 pub unk39: u32,
559 pub unk40: u32,
560}
561#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
562#[cfg_attr(feature = "serde", serde(default))]
563#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
564pub struct LoadLevelThing7 {
565 pub unk1: u32,
566 pub unk2: u32,
567 pub unk3: u32,
568 pub unk4: u32,
569 pub unk5: u32,
570 pub unk6: u32,
571 pub unk7: u32,
572 pub unk8: u32,
573 pub unk9: u32,
574 pub unk10: u32,
575 pub unk11: u32,
576 pub unk12: u32,
577 pub unk13: u32,
578 pub unk14: u32,
579 pub unk15: u32,
580 pub unk16: u32,
581 pub unk17: u32,
582 pub unk18: u32,
583 pub unk19: u32,
584 pub unk20: u32,
585 pub unk21: u32,
586 pub unk22: u32,
587 pub unk23: u32,
588 pub unk24: u32,
589 pub unk25: u32,
590 pub unk26: u32,
591 pub unk27: u32,
592 pub unk28: u32,
593 pub unk29: u32,
594 pub unk30: u32,
595 pub unk31: u32,
596 pub unk32: u32,
597 pub unk33: u32,
598 pub unk34: u32,
599 pub unk35: u32,
600 pub unk36: u32,
601 pub unk37: u32,
602 pub unk38: u32,
603 pub unk39: u32,
604 pub unk40: u32,
605 pub unk41: u32,
606 pub unk42: u32,
607 pub unk43: u32,
608 pub unk44: u32,
609 pub unk45: u32,
610 pub unk46: u32,
611 pub unk47: u32,
612 pub unk48: u32,
613 pub unk49: u32,
614 pub unk50: u32,
615 pub unk51: u32,
616 pub unk52: u32,
617 pub unk53: u32,
618 pub unk54: u32,
619 pub unk55: u32,
620 pub unk56: u32,
621 pub unk57: u32,
622 pub unk58: u32,
623 pub unk59: u32,
624 pub unk60: u32,
625}
626#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
627#[cfg_attr(feature = "serde", serde(default))]
628#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
629pub struct LoadLevelThing8 {
630 pub unk1: u32,
631 pub unk2: u32,
632 pub unk3: u32,
633 pub unk4: u32,
634 pub unk5: u32,
635 pub unk6: u32,
636 pub unk7: u32,
637 pub unk8: u32,
638 pub unk9: u32,
639 pub unk10: u32,
640 pub unk11: u32,
641 pub unk12: u32,
642 pub unk13: u32,
643 pub unk14: u32,
644 pub unk15: u32,
645 pub unk16: u32,
646 pub unk17: u32,
647 pub unk18: u32,
648 pub unk19: u32,
649 pub unk20: u32,
650 pub unk21: u32,
651 pub unk22: u32,
652 pub unk23: u32,
653 pub unk24: u32,
654 pub unk25: u32,
655 pub unk26: u32,
656 pub unk27: u32,
657 pub unk28: u32,
658 pub unk29: u32,
659 pub unk30: u32,
660 pub unk31: u32,
661 pub unk32: u32,
662 pub unk33: u32,
663 pub unk34: u32,
664 pub unk35: u32,
665 pub unk36: u32,
666 pub unk37: u32,
667 pub unk38: u32,
668 pub unk39: u32,
669 pub unk40: u32,
670 pub unk41: u32,
671}
672#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
673#[cfg_attr(feature = "serde", serde(default))]
674#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
675pub struct LoadLevelThing9 {
676 pub unk1: u32,
677 pub unk2: u32,
678}
679#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
680#[cfg_attr(feature = "serde", serde(default))]
681#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
682pub struct LoadLevelThing10 {
683 pub unk1: u32,
684 pub unk2: u32,
685 pub unk3: u32,
686 pub unk4: u32,
687 pub unk5: u32,
688 pub unk6: u32,
689 pub unk7: u32,
690 pub unk8: u32,
691 pub unk9: u32,
692 pub unk10: u32,
693 pub unk11: u32,
694 pub unk12: u32,
695 pub unk13: u32,
696}
697#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
698#[cfg_attr(feature = "serde", serde(default))]
699#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
700pub struct UnkThing1 {
701 pub unk1: u32,
702 pub unk2: u32,
703 pub unk3: u32,
704 pub unk4: u32,
705 pub unk5: u32,
706 pub unk6: u32,
707 pub unk7: u32,
708 pub unk8: u32,
709 pub unk9: u32,
710 pub unk10: u32,
711}
712#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
713#[cfg_attr(feature = "serde", serde(default))]
714#[derive(Debug, Default, Clone, PartialEq, HelperReadWrite)]
715pub struct UnkThing2 {
716 pub unk1: u32,
717 pub unk2: u32,
718}