use super::{HelperReadWrite, ObjectHeader, PacketReadWrite};
use crate::fixed_types::{FixedAsciiString, FixedBytes, FixedVec};
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x23, 0x02)]
pub struct SetFlagPacket {
pub flag_type: FlagType,
pub id: u32,
pub value: u32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x23, 0x04)]
pub struct ServerSetFlagPacket {
pub flag_type: FlagType,
pub id: u32,
pub value: u32,
pub unk: u32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x23, 0x05)]
pub struct ServerSetParamPacket {
pub param_type: FlagType,
pub id: u32,
pub value: u32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
#[Id(0x23, 0x06)]
pub struct AccountFlagsPacket {
pub flags: FixedBytes<0x400>,
pub params: FixedVec<0x100, u32>,
#[cfg(feature = "ngs_packets")]
#[cfg_attr(docsrs, doc(cfg(feature = "ngs_packets")))]
#[OnlyOn(super::PacketType::NGS)]
pub unk: FixedBytes<0x400>,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
#[Id(0x23, 0x07)]
pub struct CharacterFlagsPacket {
pub flags: FixedBytes<0xC00>,
pub params: FixedVec<0x100, u32>,
#[cfg(feature = "ngs_packets")]
#[cfg_attr(docsrs, doc(cfg(feature = "ngs_packets")))]
#[OnlyOn(super::PacketType::NGS)]
pub unk: FixedBytes<0xF40>,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x23, 0x0A)]
pub struct CutsceneEndPacket {
pub skit_name: FixedAsciiString<0x20>,
pub emergency_obj: ObjectHeader,
pub unk2: u32,
pub unk3: u32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x23, 0x0B)]
pub struct SkitItemAddRequestPacket {
pub skit_name: FixedAsciiString<0x20>,
pub unk: u32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x23, 0x0C)]
pub struct SkitItemAddResponsePacket {
pub skit_name: FixedAsciiString<0x20>,
pub unk: u32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x23, 0x0D)]
pub struct Unk230DPacket {
pub unk: u32,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Clone, Default, PartialEq, PacketReadWrite)]
#[Id(0x23, 0x0E)]
#[Flags(Flags::PACKED)]
#[Magic(0xAC40, 0x99)]
pub struct Unk230EPacket {
pub unk: Vec<Unk230EThing>,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(default))]
#[derive(Debug, Default, Clone, PartialEq, PacketReadWrite)]
#[Id(0x23, 0x15)]
pub struct Unk2315Packet {
pub unk: FixedBytes<0x1800>,
#[cfg(feature = "ngs_packets")]
#[cfg_attr(docsrs, doc(cfg(feature = "ngs_packets")))]
#[OnlyOn(super::PacketType::NGS)]
pub unk2: FixedBytes<0x1E80>,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, Copy, Default, PartialEq, HelperReadWrite)]
pub struct Unk230EThing {
pub unk1: u16,
pub unk2: u16,
pub unk3: u32,
pub unk4: ObjectHeader,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, Copy, Default, PartialEq, HelperReadWrite)]
#[repr(u32)]
pub enum FlagType {
#[default]
#[Read_default]
Account,
Character,
}