1use super::{HelperReadWrite, ObjectHeader, PacketReadWrite};
3use crate::fixed_types::{FixedAsciiString, FixedBytes, FixedVec};
4
5#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13#[cfg_attr(feature = "serde", serde(default))]
14#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
15#[Id(0x23, 0x02)]
16pub struct SetFlagPacket {
17 pub flag_type: FlagType,
19 pub id: u32,
21 pub value: u32,
23}
24
25#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
29#[cfg_attr(feature = "serde", serde(default))]
30#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
31#[Id(0x23, 0x04)]
32pub struct ServerSetFlagPacket {
33 pub flag_type: FlagType,
35 pub id: u32,
37 pub value: u32,
39 pub unk: u32,
40}
41
42#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
46#[cfg_attr(feature = "serde", serde(default))]
47#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
48#[Id(0x23, 0x05)]
49pub struct ServerSetParamPacket {
50 pub param_type: FlagType,
52 pub id: u32,
54 pub value: u32,
56}
57
58#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
64#[cfg_attr(feature = "serde", serde(default))]
65#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
66#[Id(0x23, 0x06)]
67pub struct AccountFlagsPacket {
68 pub flags: FixedBytes<0x400>,
70 pub params: FixedVec<0x100, u32>,
72 #[cfg(feature = "ngs_packets")]
73 #[cfg_attr(docsrs, doc(cfg(feature = "ngs_packets")))]
74 #[OnlyOn(super::PacketType::NGS)]
75 pub unk: FixedBytes<0x400>,
76}
77
78#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
84#[cfg_attr(feature = "serde", serde(default))]
85#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
86#[Id(0x23, 0x07)]
87pub struct CharacterFlagsPacket {
88 pub flags: FixedBytes<0xC00>,
90 pub params: FixedVec<0x100, u32>,
92 #[cfg(feature = "ngs_packets")]
93 #[cfg_attr(docsrs, doc(cfg(feature = "ngs_packets")))]
94 #[OnlyOn(super::PacketType::NGS)]
95 pub unk: FixedBytes<0xF40>,
96}
97
98#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
102#[cfg_attr(feature = "serde", serde(default))]
103#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
104#[Id(0x23, 0x0A)]
105pub struct CutsceneEndPacket {
106 pub skit_name: FixedAsciiString<0x20>,
108 pub emergency_obj: ObjectHeader,
110 pub unk2: u32,
111 pub unk3: u32,
112}
113
114#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
121#[cfg_attr(feature = "serde", serde(default))]
122#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
123#[Id(0x23, 0x0B)]
124pub struct SkitItemAddRequestPacket {
125 pub skit_name: FixedAsciiString<0x20>,
127 pub unk: u32,
128}
129
130#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
136#[cfg_attr(feature = "serde", serde(default))]
137#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
138#[Id(0x23, 0x0C)]
139pub struct SkitItemAddResponsePacket {
140 pub skit_name: FixedAsciiString<0x20>,
142 pub unk: u32,
143}
144
145#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
149#[cfg_attr(feature = "serde", serde(default))]
150#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
151#[Id(0x23, 0x0D)]
152pub struct Unk230DPacket {
153 pub unk: u32,
154}
155
156#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
160#[cfg_attr(feature = "serde", serde(default))]
161#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
162#[Id(0x23, 0x0E)]
163#[Flags(Flags::PACKED)]
164#[Magic(0xAC40, 0x99)]
165pub struct Unk230EPacket {
166 pub unk: Vec<Unk230EThing>,
167}
168
169#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
175#[cfg_attr(feature = "serde", serde(default))]
176#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
177#[Id(0x23, 0x15)]
178pub struct Unk2315Packet {
179 pub unk: FixedBytes<0x1800>,
180 #[cfg(feature = "ngs_packets")]
181 #[cfg_attr(docsrs, doc(cfg(feature = "ngs_packets")))]
182 #[OnlyOn(super::PacketType::NGS)]
183 pub unk2: FixedBytes<0x1E80>,
184}
185
186#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
191#[derive(Debug, Clone, Copy, Default, PartialEq, HelperReadWrite)]
192pub struct Unk230EThing {
193 pub unk1: u16,
194 pub unk2: u16,
195 pub unk3: u32,
196 pub unk4: ObjectHeader,
197}
198
199#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
201#[derive(Debug, Clone, Copy, Default, PartialEq, HelperReadWrite)]
202#[repr(u32)]
203pub enum FlagType {
204 #[default]
206 #[Read_default]
207 Account,
208 Character,
210}