## rAthena References: ## - clif_broadcast2 class_name BroadcastFormattedMessagePacket extends Packet const HEADER := 0x01c3 const BYTE_LENGTH := 0 ## Byte Type: u16 ## Byte Length: 2 var packet_length: int ## Byte Type: u8 ## Byte Length: 1 var font_color_r: int ## Byte Type: u8 ## Byte Length: 1 var font_color_g: int ## Byte Type: u8 ## Byte Length: 1 var font_color_b: int ## Byte Type: u8 ## Byte Length: 1 var font_color_a: int ## Byte Type: u16 ## Byte Length: 2 var font_type: int ## Byte Type: u16 ## Byte Length: 2 var font_size: int ## Byte Type: u16 ## Byte Length: 2 var font_alignment: int ## Byte Type: u16 ## Byte Length: 2 var font_y: int ## Byte Length: variable var message: String func get_font_color() -> Color: return Color8( font_color_r, font_color_g, font_color_b, 255 ) static func from_bytes(bytes: PackedByteArray) -> BroadcastFormattedMessagePacket: var packet = BroadcastFormattedMessagePacket.new() packet.packet_length = bytes.decode_u16(2) packet.font_color_r = bytes.decode_u8(4) packet.font_color_g = bytes.decode_u8(5) packet.font_color_b = bytes.decode_u8(6) packet.font_color_a = bytes.decode_u8(7) packet.font_type = bytes.decode_u16(8) packet.font_size = bytes.decode_u16(10) packet.font_alignment = bytes.decode_u16(12) packet.font_y = bytes.decode_u16(14) packet.message = bytes.slice(16, packet.packet_length).get_string_from_utf8() return packet