---
title: "Packet 6: ShootPacket"
description: "A client firearm request. The server validates cadence, origin, orientation, weapon state, and penetration before resolving authoritative hits."
canonical: "https://aosplay.net/protocol-168/packets/6"
markdown: "https://aosplay.net/docs/protocol-168/packets/6.md"
last_updated: "2026-07-16"
protocol: "Ace of Spades Battle Builder 168"
packet_id_decimal: "6"
packet_id_hex: "0x06"
direction: "C→S"
family: "Combat"
implementation_status: "Handled"
evidence: "Live-verified"
wire_size: "40 bytes"
---

# Packet 6: ShootPacket

> A client firearm request. The server validates cadence, origin, orientation, weapon state, and penetration before resolving authoritative hits.

- **Decimal ID:** 6
- **Hex ID:** 0x06
- **Direction:** C→S
- **Family:** Combat
- **Status:** Handled
- **Evidence:** Live-verified
- **Wire size:** 40 bytes

## Implementation note

Retail clients have no incoming action handler for packet 6; observers receive ShootFeedbackPacket (8), not a relayed ShootPacket.

## Exact wire layout

The application packet ID is the first byte. The remaining rows are in decode order. Byte sizes exclude ENet headers, wrapper prefixes, LZF chunk framing, and compression effects.

| # | Field | Encoding | Bytes | Purpose | Condition |
| ---: | --- | --- | ---: | --- | --- |
| 0 | `packet_id` | u8 | 1 | Always 6 (0x06). | — |
| 1 | `loop_count` | i32 LE | 4 | Simulation-loop stamp used for ordering, prediction, or reconciliation. | — |
| 2 | `shooter_id` | u8 | 1 | Player slot that initiated the action. | — |
| 3 | `shot_on_world_update` | i32 LE | 4 | WorldUpdate reference used to associate the predicted shot. | — |
| 4 | `origin` | 3 × IEEE-754 f32 LE | 12 | X, Y, and Z floating-point components. | — |
| 5 | `orientation` | 3 × IEEE-754 f32 LE | 12 | X, Y, and Z floating-point components. | — |
| 6 | `damage` | i16 LE | 2 | Client-reported weapon damage; never trusted without server validation. | — |
| 7 | `penetration` | i16 LE | 2 | Client-reported penetration value. | — |
| 8 | `shot_flags` | u8 | 1 | Bit 0 affect_shooter; bit 1 secondary fire. | — |
| 9 | `seed` | u8 | 1 | Deterministic random seed used to reproduce client effects. | — |

## Encoding conventions

- `LE` means least-significant byte first.
- `fixed16` is two-byte sign-magnitude at 1/64 precision.
- `orientation16` uses the measured 1/8192 orientation mapping.
- NUL strings consume their encoded byte length plus one `00` terminator.
- Counted arrays repeat immediately in the documented order.

## Related resources

- [HTML packet page](https://aosplay.net/protocol-168/packets/6)
- [Complete packet catalog](https://aosplay.net/protocol-168/packets)
- [Packet catalog in Markdown](https://aosplay.net/docs/protocol-168/packets.md)
- [Protocol 168 guide](https://aosplay.net/protocol-168)
