Skip to content
cccskills
FreePublished on GitHub

server-message

Implement Thistle Tea SMSG_* server messages following our architecture patterns. Use this when asked to implement a new message or you need to use one that isn't implemented yet.

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md2.1 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Create/modify a module under lib/game/network/message/ that:

  • use ThistleTea.Game.Network.ServerMessage, :SMSG_FOO
  • defines a defstruct matching the fields needed to encode the packet
  • implements to_binary/1 using little-endian bit syntax patterns like <<x::little-size(32)>>

Quick examples

Minimal payload (SMSG_PONG):

defmodule ThistleTea.Game.Network.Message.SmsgPong do
  @moduledoc false
  use ThistleTea.Game.Network.ServerMessage, :SMSG_PONG

  defstruct [:sequence_id]

  @impl ServerMessage
  def to_binary(%__MODULE__{sequence_id: sequence_id}) do
    <<sequence_id::little-size(32)>>
  end
end

Conditional payload (SMSG_AUTH_RESPONSE):

defmodule ThistleTea.Game.Network.Message.SmsgAuthResponse do
  @moduledoc false
  use ThistleTea.Game.Network.ServerMessage, :SMSG_AUTH_RESPONSE

  @result_auth_ok 0x0C
  @result_auth_wait_queue 0x1B

  defstruct [:result, :billing_time, :billing_flags, :billing_rested, :queue_position]

  @impl ServerMessage
  def to_binary(%__MODULE__{} = msg) do
    <<msg.result::little-size(8)>> <>
      case msg.result do
        @result_auth_ok ->
          <<msg.billing_time::little-size(32), msg.billing_flags::little-size(8),
            msg.billing_rested::little-size(32)>>

        @result_auth_wait_queue ->
          <<msg.queue_position::little-size(32)>>

        _ ->
          <<>>
      end
  end
end

How to find the packet spec

  • Packet formats are cataloged in the wow_messages git submodule at refs/wow_messages/.
  • Look up the .wowm spec here: refs/wow_messages/wow_message_parser/wowm/*/${SMSG_NAME}.wowm
  • Note that Thistle Tea is a Vanilla (patch 1.12.1) server, so ignore future client versions

Workflow

  • Translate the .wowm fields into defstruct fields and an encoder in to_binary/1.
  • Use pattern matching in the function head for type safety: to_binary(%__MODULE__{} = msg).

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Implement Thistle Tea CMSG_* client messages following our architecture patterns. Use this when asked to implement a new message or you need to use one that isn't implemented yet.

The English summary is being prepared. Showing the original description.

pikdum/thistle_tea239Updated Oct 11, 2026

Launch and drive an isolated World of Warcraft 1.12.1 client against a local Thistle Tea server, including keyboard input, left/right clicks, camera drags, screenshots, real instance entry, log observation, and Tidewave runtime probes. Use for real-client gameplay acceptance, client-sensitive protocol or movement verification, reproducing live bugs, checking visibility and instance isolation, or validating a scripted content chain beyond automated tests.

The English summary is being prepared. Showing the original description.

pikdum/thistle_tea239Updated Oct 11, 2026

See all skills by pikdum

Report a problem with this skill