diff --git a/common/src/main/scala/net/psforever/packet/game/ObjectCreateMessage.scala b/common/src/main/scala/net/psforever/packet/game/ObjectCreateMessage.scala
index 0de046cad..727c4da69 100644
--- a/common/src/main/scala/net/psforever/packet/game/ObjectCreateMessage.scala
+++ b/common/src/main/scala/net/psforever/packet/game/ObjectCreateMessage.scala
@@ -6,6 +6,46 @@ import scodec.{Attempt, Codec, Err}
import scodec.codecs._
import shapeless._
+import scala.annotation.switch
+
+case class Weapon(unk1 : Int,
+ magazine : Int,
+ unk2 : Int)
+
+object Weapon extends Marshallable[Weapon] {
+ implicit val codec : Codec[Weapon] = (
+ ("unk1" | uintL(23)) ::
+ ("magazine" | uint8L) ::
+ ("unk2" | uintL(13))
+ ).as[Weapon]
+}
+
+case class Mold(objectClass : Int,
+ dataPortion : BitVector) {
+
+ private var obj : Option[Any] = Mold.selectMold(objectClass, dataPortion)
+}
+
+object Mold extends Marshallable[Mold] {
+ def apply(objectClass : Int,
+ obj : T forSome { type T }) : Mold =
+ new Mold(objectClass, bin"")
+
+ def selectMold(objClass : Int, data : BitVector) : Option[Any] = {
+ (objClass : @switch) match {
+ case 0x4D3 =>
+ Weapon.codec.decode(data).toOption
+ case _ =>
+ None
+ }
+ }
+
+ implicit val codec : Codec[Mold] = (
+ ("objectClass" | uintL(11)) ::
+ ("dataPortion" | bits)
+ ).as[Mold]
+}
+
/**
* The parent information of a created object.
*