diff --git a/common/src/main/scala/net/psforever/packet/game/PlayerStasisMessage.scala b/common/src/main/scala/net/psforever/packet/game/PlayerStasisMessage.scala
index 91ee3faf..0898331b 100644
--- a/common/src/main/scala/net/psforever/packet/game/PlayerStasisMessage.scala
+++ b/common/src/main/scala/net/psforever/packet/game/PlayerStasisMessage.scala
@@ -6,12 +6,27 @@ import scodec.Codec
import scodec.codecs._
/**
- * na
+ * Causes the avatar to be prepped for drop pod use.
+ *
+ * This packet is dispatched from the server to all occupants of the HART shuttle when it has completed its take-off animation.
+ * When received by the client, that player's avatar is "removed from the world" and the Interstellar Map is displayed for them.
+ * The "Launch Drop Pod" button window is also made visible.
+ * Selecting individual continental maps for viewing and clicking on the landmasses has the expected behavior for drop pods implementation.
+ *
+ * Being seated on the HART shuttle at the time, a player's avatar does not physically exist when the packet is received.
+ * If the packet is received while the player is outside of the HART shuttle, the state of their avatar is not known to them.
+ * "Removed from the world" merely implies that one can not leave the Interstellar Map once it has been displayed.
+ * According to packet capture, their avatar is not explicitly deconstructed until the dropped-into map is loaded.
+ *
+ * When the packet is received on one's client, but is addressed to another player, nothing seems to happen to that player.
+ * If that player's model is outside of the HART, it will not deconstruct.
+ * Only the client's avatar can be affected by this packet.
* @param player_guid the player
- * @param stasis whether or not the player is held in stasis
+ * @param stasis `true` by default;
+ * nothing when `false` (?)
*/
final case class PlayerStasisMessage(player_guid : PlanetSideGUID,
- stasis : Boolean)
+ stasis : Boolean = true)
extends PlanetSideGamePacket {
type Packet = PlayerStasisMessage
def opcode = GamePacketOpcode.PlayerStasisMessage
diff --git a/common/src/test/scala/GamePacketTest.scala b/common/src/test/scala/GamePacketTest.scala
index 6faa6e6e..cc1fe9d8 100644
--- a/common/src/test/scala/GamePacketTest.scala
+++ b/common/src/test/scala/GamePacketTest.scala
@@ -1325,6 +1325,29 @@ class GamePacketTest extends Specification {
}
}
+ "PlayerStasisMessage" should {
+ val string = hex"8A 4B 00 80"
+
+ "decode" in {
+ PacketCoding.DecodePacket(string).require match {
+ case PlayerStasisMessage(player_guid, stasis) =>
+ player_guid mustEqual PlanetSideGUID(75)
+ stasis mustEqual true
+ case default =>
+ ko
+ }
+ }
+
+ "encode" in {
+ "encode" in {
+ val msg = PlayerStasisMessage(PlanetSideGUID(75))
+ val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
+
+ pkt mustEqual string
+ }
+ }
+ }
+
"ContinentalLockUpdateMessage" should {
val string = hex"A8 16 00 40"