diff --git a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala index 4f7bc0aa..ed333b14 100644 --- a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala +++ b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala @@ -341,7 +341,7 @@ object GamePacketOpcode extends Enumeration { case 0x10 => game.UseItemMessage.decode case 0x11 => game.MoveItemMessage.decode case 0x12 => game.ChatMsg.decode - case 0x13 => noDecoder(CharacterNoRecordMessage) + case 0x13 => game.CharacterNoRecordMessage.decode case 0x14 => game.CharacterInfoMessage.decode case 0x15 => noDecoder(UnknownMessage21) case 0x16 => noDecoder(BindPlayerMessage) diff --git a/common/src/main/scala/net/psforever/packet/game/CharacterNoRecordMessage.scala b/common/src/main/scala/net/psforever/packet/game/CharacterNoRecordMessage.scala new file mode 100644 index 00000000..2e0caafc --- /dev/null +++ b/common/src/main/scala/net/psforever/packet/game/CharacterNoRecordMessage.scala @@ -0,0 +1,18 @@ +//CharacterNoRecordMessage +// Copyright (c) 2016 PSForever.net to present +package net.psforever.packet.game + +import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacket} +import scodec.Codec +import scodec.codecs._ + +final case class CharacterNoRecordMessage(unk : Long) + extends PlanetSideGamePacket { + type Packet = CharacterNoRecordMessage + def opcode = GamePacketOpcode.CharacterNoRecordMessage + def encode = CharacterNoRecordMessage.encode(this) +} + +object CharacterNoRecordMessage extends Marshallable[CharacterNoRecordMessage] { + implicit val codec : Codec[CharacterNoRecordMessage] = ("unk" | uint32L).as[CharacterNoRecordMessage] +} diff --git a/common/src/test/scala/GamePacketTest.scala b/common/src/test/scala/GamePacketTest.scala index da1ae742..4fb16438 100644 --- a/common/src/test/scala/GamePacketTest.scala +++ b/common/src/test/scala/GamePacketTest.scala @@ -622,6 +622,26 @@ class GamePacketTest extends Specification { } } + "CharacterNoRecordMessage" should { + val string = hex"13 00400000" //we have no record of this packet, so here's something fake that works + + "deocde" in { + PacketCoding.DecodePacket(string).require match { + case CharacterNoRecordMessage(unk) => + unk mustEqual 16384 + case default => + ko + } + } + + "encode" in { + val msg = CharacterNoRecordMessage(16384) + val pkt = PacketCoding.EncodePacket(msg).require.toByteVector + + pkt mustEqual string + } + } + "ChangeFireModeMessage" should { val string = hex"46 4C0020"