Introduction

Wowm is a domain specific language for describing the layout of messages used in the Client/Server communication for World of Warcraft with the intention of auto generating documentation and usable programming libraries.

The language leans heavily on syntax from C/C++ for declaring definers, built-in types, and containers. Definers are simple wrappers over regular numbers that name valid values. Containers specify the order and layout of messages.

Definers can either be flags or enums. enums can only have one valid named value, while flags can have multiple. flags are also known as bitfields.

The following is an example enum and flag:

enum TestEnum : u8 {
    TEST_ONE = 1;
    TEST_TWO = 2;
    TEST_THREE = 3;
}
/* TestEnums can only be either 1, 2, or 3. */


flag TestFlag : u8 {
    TEST_ONE = 1;
    TEST_TWO = 2;
    TEST_FOUR = 4;
}
/* TestFlags can be either 1, 2, 4 or any combination thereof like 0, 3, 7, or 5. */

The u8 after the : specifies the basic type of the definers. This is the type that is actually sent over the network. A u8 is an unsigned integer of 8 bits (1 byte). A u32 would be an unsigned little endian integer of 32 bits (4 bytes). A u32_be would be an unsigned big endian integer of 32 bits (4 bytes).

For a full list of built-in types, see the built-in types section in the specification.

Containers specify the actual message as well as structs which can be used as a type in other containers.

A full list of container variants can be found in the container section of the specification.

The following is an example of a struct using built-in types, that is itself also used as a type in an smsg (world message sent from the server):

struct TestStruct {
    u32 price_in_gold;
    u32 amount_purchased;
}

/* 
    Number after "=" is the opcode. Use hexadecimal.
    Size is automatically calculated based on contents.
*/
smsg SMSG_TEST = 0xFF {
    CString name;
    TestStruct t;
}
/* The above is functionally identical to */
smsg SMSG_TEST = 0xFF {
    CString name;
    u32 price_in_gold;
    u32 amount_purchased;
}

All objects must specify which version of the game they work with. See the section on versioning with tags

Versioning through tags

When resolving type names of dependencies the tag system is used. The compiler will accept names that are as specific or less specific than the tag on the object that needs a dependency.

So in the example:

struct User {
    Boolean has_something;
} {
    versions = "1.12";
}

enum Boolean : u8 {
    FALSE = 0;
    TRUE = 1;
} {
    versions = "1";
}

The struct User is allowed to use the enum Boolean because Boolean has a less specific versions tag than User does. That is, User is valid for all versions of 1.12, while Boolean is valid for all versions of 1. It would not be possible to be valid for all versions of 1 but not 1.12 specifically.

There can not be two objects with the same name and the same version. Two different versions can be each be valid for their own version, but it does not make sense for the same object to have two different representations for the same version.

So this is allowed:

enum Boolean : u8 {  /* Name of Boolean */
    FALSE = 0;
    TRUE = 1;
} {
    versions = "1"; /* <-- versions 1 here */
}

enum Boolean : u8 { /* <-- Same name */
    FALSE = 0;
    TRUE = 1;
    MAYBE = 2;
} {
    versions = "2" /* <-- versions 2 here */
}

But this is not:

enum Boolean : u8 {
    FALSE = 0;
    TRUE = 1;
} {
    versions = "1 2"; /* <-- Added 2 here */
}

enum Boolean : u8 {
    FALSE = 0;
    TRUE = 1;
    MAYBE = 2;
} {
    versions = "2" /* <-- Conflicts with this versions */
}

World and Login versions

clogin and slogin messages are used for communication with the realm/authentication server. These can only have login_versions.

cmsg, smsg, and msg messages are used for communication with the world/game server. These can only have versions.

Mass versioning

The #tag_all command can be used to tag all objects in a file with the same versions string.

#tag_all versions "1.11 1.12"

enum Boolean : u8 {
    FALSE = 0;
    TRUE = 1;
} /* <-- Will have "versions" = "1.11 1.12" automatically applied */


struct Thing {
    Boolean is_thing;
    u8 basic;
} /* <-- Will have "versions" = "1.11 1.12" automatically applied */

Paste versions

Versions must fully deliver what they promise. What this means is that every single field used must also cover at least the same version as the containing object. For example, if there is a Race enum that has been determined to be valid for 1 (Vanilla) and another Race enum that has determined to be valid for 2 (The Burning Crusade), it is not valid to create a single message that uses the Race enum and covers both 1 and 2. An object that only contains a vanilla Race and an object that only contains a Burning Crusade Race are not identical, despite the fields taking up the same amount of space (1 byte, a u8).

So the following is NOT VALID:

enum Race : u8 {
    HUMAN = 1;
    ORC = 2;
    DWARF = 3;
    NIGHT_ELF = 4;
    UNDEAD = 5;
    TAUREN = 6;
    GNOME = 7;
    TROLL = 8;
    GOBLIN = 9;
} {
    versions = "1"; /* <-- Only covers 1 */
}

enum Race : u8 {
    HUMAN = 1;
    ORC = 2;
    DWARF = 3;
    NIGHT_ELF = 4;
    UNDEAD = 5;
    TAUREN = 6;
    GNOME = 7;
    TROLL = 8;
    GOBLIN = 9;
    BLOOD_ELF = 10; /* <-- Clearly not the same */
    DRAENEI = 11;
    FEL_ORC = 12;
    NAGA = 13;
    BROKEN = 14;
    SKELETON = 15;
    VRYKUL = 16;
    TUSKARR = 17;
    FOREST_TROLL = 18;
} {
    versions = "2"; /* <-- Only covers 2 */
}

cmsg CMSG_INVALID_MADE_UP_MSG = 0xDEADBEEF1471D {
    Race race;
} {
    versions = "1 2"; /* <-- NOT VALID. Neither enum can cover both versions 1 and 2. */
}

There are many messages where the only difference between expansions is that they update an enum that is specific to that expansion and version. For example CMSG_EMOTE:

cmsg CMSG_EMOTE = 0x0102 {
    Emote emote; /* <-- This Emote only covers 1.12 */
} {
    versions = "1.12";
}

cmsg CMSG_EMOTE = 0x0102 {
    Emote emote; /* <-- This Emote only covers 2.4.3 */
} {
    versions = "2.4.3";
}

cmsg CMSG_EMOTE = 0x0102 {
    Emote emote; /* <-- This Emote only covers 3.3.5 */
} {
    versions = "3.3.5";
}

There can not be a single message that is valid for all 3 versions since the Emotes are different.

Instead paste_versions can be used. This effectively copy and pastes the textual wowm representation and creates 3 different messages that are each only valid for one version. The two examples above and below are effectively the same, while the bottom one has significantly less duplication. Comments, descriptions, and other tags are also duplicated for the different versions.

cmsg CMSG_EMOTE = 0x0102 {
    Emote emote;
} {
    paste_versions = "1.12 2.4.3 3.3.5";
}

paste_versions only exists for World versions (versions), not for Login versions (login_versions).

Contribution Quick Start Guide

Background

Read the introduction and versioning section. Skim the specification.

Clone the repository

Run git clone https://github.com/gtker/wow_messages.git or equivalent to clone the repository.

Touring the repository

Inside the wow_message_parser directory of the repository is the wowm directory. This contains all the wowm definitions that are parsed by the compiler. Go into the world directory and notice that it consists of subdirectories that contain wowm files.

The directory structure does not make any difference in the final output and is purely there for easier human consumption. Do not stress over which directory a specific message is supposed to go into, and feel free to create new directories.

If messages are small, keep the different versions in the same wowm file. If they are large keep them in separate files with the version appended, like smsg_update_object_3_3_5.wowm for 3.3.5.

Install Rust

Use the official site to install Rust. It is not necessary to have knowledge about Rust in order to contribute, but it is necessary to have it install in order to run the compiler. The compiler must be run after every change in the wowm. The repository manually keeps the generated files up to date to avoid having to generate them each time they are used.

Running the compiler

While inside the repository run cargo run -p wow_message_parser --release to run the compiler. This will give you output like:

    Finished release [optimized] target(s) in 0.03s
     Running `target/release/wow_message_parser`
1.12 Messages without definition:
    SMSG_COMPRESSED_UPDATE_OBJECT: Compressed
    [..]
    SMSG_COMPRESSED_MOVES: Compressed

1.12 Messages with definition: 601 / 607 (99.011536%) (6 left)
1.12 Total messages with tests: 60 / 607 (9.884679%)

2.4.3 Messages without definition:
cmsg CMSG_BOOTME = 0x0001 { unimplemented } { versions = "2.4.3"; }
[..]
smsg SMSG_SUMMON_CANCEL = 0x0423 { unimplemented } { versions = "2.4.3"; }

2.4.3 Messages with definition: 126 / 1058 (11.909263%) (932 left)
2.4.3 Total messages with tests: 17 / 1058 (1.6068052%)

3.3.5 Messages without definition:
cmsg CMSG_BOOTME = 0x0001 { unimplemented } { versions = "3.3.5"; }
[..]
smsg SMSG_MULTIPLE_MOVES = 0x051E { unimplemented } { versions = "3.3.5"; }

3.3.5 Messages with definition: 128 / 1309 (9.778457%) (1181 left)
3.3.5 Total messages with tests: 12 / 1309 (0.91673034%)

This contains a list of unimplemented messages for the versions that we currently want messages from. Under 1.12, messages with a colon (:) are followed by a reason for them not being implemented currently. So SMSG_COMPRESSED_MOVES: Compressed are not implemented because we are lacking support for compression. 1.12 messages are shown this way because are very few left for 1.12.

2.4.3 and 3.3.5 instead output a copy pastable wowm snippet that allows for less manual typing.

Implementing a message

Let's implement a fictional message for training purposes. Imagine that when running the compiler it told you that MSG_FICTIONAL was not implemented by outputting msg MSG_FICTIONAL = 0x1337 { unimplemented } { versions = "3.3.5"; }.

Let's break down what exactly that is for clarity:

msg MSG_FICTIONAL = 0x1337 { /* <-- Describes the message */
    unimplemented /* <-- Tells the compiler that this message is unimplemented. */
} { /* <-- Tags start */
    versions = "3.3.5"; /* <-- For version 3.3.5 */
} /* <-- Tags end */

The above is the preferred formatting for wowm files. Use 4 spaces instead of a tab, and add newlines like you see above.

Just putting the snippet into a wowm file inside the wow_message_parser/wowm/world directory would make the compiler compile it and add it to the generated code, documentation, and the Wireshark implementation, but it would not tell us anything useful about the message.

Research

Before we can implement the message we need to figure out what the layout is and if it is even used by the client.

Use SourceGraph to search through many emulators at the same time, as well as repositories you probably didn't know existed.

If the message does not appear to be used by the client, pick a new message.

If you are absolutely certain that the message is not used, remove it from the list in wow_message_parser/src/parser/stats/wrath_messages.rs (or tbc_messages.rs if it's for TBC).

Implementation

Let's pretend that the MSG_FICTIONAL message is used for something auction house related.

First search for MSG_FICTIONAL in the entire wowm folder for other versions of this message. If you find any then place the new implementation next to the other ones, otherwise navigate into the wow_message_parser/wowm/world/auction directory and see that it's split into the directories:

  • cmsg
  • msg
  • smsg

Recall that the directory layout of the wowm files do not matter for the final product, so this folder layout is not a requirement.

Go into the msg directory and create a new file called msg_fictional.wowm (all lowercase).

Paste the wowm output from before into the file with the correct formatting.

Lean on the specification, versioning with tags and other messages inside the repository for examples of how to represent the chosen message.

It is very possible that the message you are trying to implement can not be correctly represented in wowm or leads to compile errors when trying to test the libraries. In this case ask for help on the discord or go to another message.

Correct versioning

Currently you are only saying that specifically version 3.3.5 is supported by your message but it might be possible that 3.3.4 or even 3.1.0 also use the samme message. Research the emulators and decide if it seems like the message has the same format in other version as well.

For example, if the message has the same layout in both a 2.4.3 TBC emulator and a 3.3.5 Wrath emulator, you are allowed to assume that any versions in between have the same layout. You would therefore write versions = "2.4.3 3";, since you can't know if versions prior to 2.4.3 have the same layout, but you do know that 3.3.5 is the last Wrath release and that all previous releases have the same layout.

If other objects are preventing you from applying a larger version, for example because it depends on an Emote enum that only has version 3.3.5, then simply give it the biggest possible gap you can and move on.

Comments

During your research you may discover some things that are uncommon, surprising, or noteworthy. In this case you can use the comment tag to pass on this knowledge. If you end up writing a long comment you can use multiple tags and they will all appear in the final product. Like so:

msg MSG_FICTIONAL = 0x1337 { /* <-- Describes the message */
    u8 thing; /* <-- Implementation that you should have here now. */
    u32 other_thing {
        comment = "mangoszero always sets this to 0."; /* <-- comment on this specific field */
    }
} {
    versions = "3.3.5";
    comment = "This message is entirely fictional so that the documentation doesn't go out of date as quickly.";
    comment = "But we still have some secret knowledge to share."; /* <-- Comment on the entire message. */
}

Remember that wowm comments (in between /* and */) are not propagated further than the wowm sources, so put everything related to the messages in "real" comments and only use the wowm comments for TODOs or related items.

Descriptions

If you know enough about the message or any particular fields you can also add description tags.

This step, along with the comment step, is not required but it would be nice if other people didn't have to go digging in the sources to uncover information that was already known.

Testing

Run cargo run -p wow_message_parser --release and then cargo test --all-features. This will ensure that

  • Any changes to the wowm files are propagated.
  • All tests compile and pass.

Commit changes

Commit your changes and go on to the next message.

Questions

If you have any questions ask on the Discord channel.

Specification

A .wowm file starts with 0..* commands, and ends with 0..* statements. Commands are prefix with # and statements start with an object keyword.

Commands

The file must start with all commands. A command appearing after a statement is invalid.

Commands take the form

#<command> <command_parameters>;

For example:

#tag_all versions "1.12";

Built-in Types

The following types are not looked up but are expected to be handled by the compiler and code generator:

  • The basic integer types u8, u16, u32, and u64 are sent as little endian over the network.
  • The floating point type f32 is sent as little endian over the network.

The String type is the same as a sized u8 array (u8[len]) containing valid UTF-8 values plus a u8 for the length of the string, although it should be presented in the native string type.

The CString type is an array of valid UTF-8 u8s terminated by a null (0) byte.

The SizedCString is the same as a u32 followed by a CString, but they are kept in the same type to semantically convey that the u32 field has no purpose other than to parse the CString.

TypePurposeC Name
u8Unsigned 8 bit integer. Min value 0, max value 256.unsigned char
u16Unsigned 16 bit integer. Min value 0, max value 65536.unsigned short
u32Unsigned 32 bit integer. Min value 0, max value 4294967296.unsigned int
u64Unsigned 64 bit integer. Min value 0, max value 18446744073709551616.unsigned long long
i32Unsigned 32 bit integer. Min value -2147483648, max value 4294967296.signed int
BoolUnsigned 1 bit integer. 0 means false and all other values mean true.unsigned char
Bool32Unsigned 4 bit integer. 0 means false and all other values mean true.unsigned int
PackedGuidGuid sent in the "packed" format. See PackedGuid.-
GuidUnsigned 8 bit integer. Can be replaced with a u64.unsigned long long
NamedGuidA Guid (u64) followed by a CString if the value of the Guid is not 0.-
DateTimeu32 in a special format. See DateTime.unsigned int
f32Floating point value of 4 bytes.f32
CStringUTF-8 string type that is terminated by a zero byte value.char*
SizedCStringA u32 field that determines the size of the string followed by a UTF-8 string type that is terminated by a zero byte value.unsigned int + char*
StringUTF-8 string type of exactly length len.unsigned char + char*
UpdateMaskUpdate values sent in a relatively complex format. See UpdateMask.-
MonsterMoveSplinesArray of positions. See MonsterMoveSpline.-
AuraMaskAura values sent using a mask. See Masks.-
AchievementDoneArrayArray that terminates on a sentinel value. See AchievementDoneArray-
AchievementInProgressArrayArray that terminates on a sentinel value. See AchievementInProgressArray-
EnchantMaskEnchant values sent using a mask. See EnchantMasks.-
InspectTalentGearMaskInspectTalentGear values sent using a mask. See Masks.-
GoldAlias for u32.unsigned int
Populationf32 with the special behavior that a value of 200 always means GREEN_RECOMMENDED, 400 always means RED_FULL, and 600 always means BLUE_RECOMMENDED.float
LevelAlias for u8.unsigned char
Level16Alias for u16.unsigned short
Level32Alias for u32.unsigned int
VariableItemRandomPropertyA u32 followed by another u32 if the first value is not equal to 0.-
AddonArrayArray of Addons for TBC and Wrath that rely on externally knowing the amount of array members. See AddonArray.-
IpAddressAlias for big endian u32.unsigned int
SecondsAlias for u32.unsigned int
MillisecondsAlias for u32.unsigned int
SpellAlias for u32 that represents a spell.unsigned int
Spell16Alias for u16 that represents a spell.unsigned short
ItemAlias for u32 that represents an item entry.unsigned int
CacheMaskClient info sent using a mask. See CacheMask.-

Arrays

Arrays are semi-built-in types of the form <type>[<length>] where <type> is any built-in or user defined type, and <length> is either a constant integer value, a previous integer field in the same object, or the character - for "endless" arrays.

Endless arrays do not have a field that specifies how many items the array contains. This information is instead deduced from the total size of the message minus the sizes of any previous fields.

Statements

Statements start with one of the following keywords:

  • enum, a definer, for descriptions of values where only one value is valid.
  • flag, a definer, for descriptions of values where several values are valid at the same time.
  • struct, a container, for collections of fields that do not fit into any of the below.
  • clogin, a container, for login messages sent from the client.
  • slogin, a container, for login messages sent from the server.
  • msg, a container, for world messages that can be sent from both client and server.
  • smsg, a container, for world messages sent from the server.
  • cmsg, a container, for world messages sent from the client.
  • test, a description of a full valid message and the expected values.

A definer creates a new type that gives names to basic integer values, like an enum would do in most programming languages. A container is a collection of types that describes the order in which they are sent, as well as other information.

All statements can be followed by a tags block of the form

{
    <tags>
}

Where <tags> is of the form

<tag_name> = "<tag_value>";

Where <tag_name> is a valid identifier, and <tag_value> is a string value.

A list of tags with meaning for the compiler can be found at Tags.

Definer

Definers take the form of

enum <name> : <basic_type> {
    <enumerators>
}

Where <name> is a unique identifier, <basic_type> is an integer type u8, u16, u32, and u64.

<enumerators> is one or more enumerators of the form

<name> = <value>;

where <name> is a unique identifier inside the definer, and <value> is a valid value. Enums can not have multiple names with the same value, while flags can. Flags can not be signed types (i*), while enums can.

The allowed number formats in definers and how they are sent over the network are:

enum EnumAllowedInteger : u32 {
    INTEGER = 22; /* 22, [22, 0, 0, 0]  */
    HEXADECIMAL = 0xFF; /* 255, [255, 0, 0, 0] */
    BINARY = 0b0101; /* 5, [5, 0, 0, 0] */
    STRING = "\0AB"; /* 0x4142, [66, 65, 0, 0] */
}

The string syntax has the special case of \0 which is replaced with a single zero byte.

Container

Containers take the form of

<keyword> <name> [= <opcode>] {
    <declaration | if_statement | optional_statement>*
}

Where <keyword> is one of

  • struct.
  • clogin, for a login message sent from the client.
  • slogin, for a login message sent from the server.
  • msg, for a world message sent by both the client and server.
  • smsg, for a world message sent from the server.
  • cmsg, for a world message sent from the client.

<name> is a valid identifier.

[= <opcode>] is an allowed value in the same format as for definer values that defines the unique opcode value for the container. The <opcode> is required for every container except for structs, which have no opcodes.

For msg, smsg, and cmsg the size field is implicitly added as part of the message header. clogin and slogin messages that require a specific size field must set the field equal to self.size.

Declaration

<declaration> is of the form

[<upcast>]<type> <identifier> [= <constant_value>];

Where <type> is either a built-in or user defined type.

<identifier> is a legal identifier. Two declarations or optional statements in the same object must not have identical identifiers, even across if statement blocks.

The optional <constant_value> defines which value this field should always be sent as, used for padding values. Fields received with a different value will not lead to failed parsing.

The optional <upcast> is used for an enum which should be sent over the network as a different type than it is defined with. This is in order to prevent needing multiple enums for the same concept. Upcasts have the form ( <integer_type> ) where integer_type is an integer type of larger size or different endianness from the type in the original enum.

If Statement

<if_statement> is of the form

if (<variable_name> <operator> <definer_enumerator>
    [|| <variable_name> <operator> <definer_enumerator>]*) {
    <declaration | if_statement | optional_statement>*
} [ else if (<variable_name> <operator> <definer_enumerator> 
    [|| <variable_name> <operator> <definer_enumerator>]* {
    <declaration | if_statement | optional_statement>*
}]* [ else {
    <declaration | if_statement | optional_statement>*
}]?

Where:

  • <variable_name> is the name of a variable from a declaration that has previously appeared. The variable name must be the same in all statements.
  • <operator> is either ==, &, or !=. Restrictions apply to !=.
  • <definer_enumerator> is a valid enumerator in the type of <variable_name>.

If statements that use != can not have any else if or || options, but they can have the else option.

Optional Statement

<optional_statement> is of the form

optional <identifier> {
    <declaration | if_statement | optional_statement>*
}

Where <identifier> is a legal identifier. Two declarations or optional statements in the same object must not have identical identifiers, even across if statement blocks.

Optional statements can only occur as the last element of a message.

Test

Tests take the form of

test <name> {
    <fields>
} [
    <bytes>
]

Where <name> is a valid name of an existing container.

<fields> is zero or more field definitions of the form

<name> = <value> | "[" <array_fields>[","] "]" | "{" <subobject_fields> "}" ;

that describe which value to expect for a specific field.

<array_fields> and <subobject_fields> consist of 1 or more <fields>.

<bytes> are the raw byte values sent over the network, including the size and opcode fields in unencrypted format. The allowed formats are the same as those in definer values.

Commands

The following commands have compiler behavior defined.

tag_all

Applies the selected tag to all objects in the file.

Format

#tag_all <tag_name> "<tag_value>";

Where <tag_name> is the name of the tag to be applied and <tag_value> is the value.

If a tag already exists on an object tag_all will append the value.

Examples

#tag_all versions "1.12";

enum Boolean : u8 {
    YES = 0;
    NO = 1;
}

struct S {
    u8 basic;
}

would be the same as

enum Boolean : u8 {
    YES = 0;
    NO = 1;
} {
    versions = "1.12";
}

struct S {
    u8 basic;
} {
    versions = "1.12";
}
#tag_all "3";

enum Boolean : u8 {
    YES = 0;
    NO = 1;
} {
    versions = "1.12";
}

struct S {
    u8 basic;
} {
    versions = "1.12";
}

would be the same as

enum Boolean : u8 {
    YES = 0;
    NO = 1;
} {
    versions = "1.12 3";
}

struct S {
    u8 basic;
} {
    versions = "1.12 3";
}

Tags

The following tags have compiler defined meaning.

For Objects, Definer Enumerators, and Object Declarations

comment

Used to provide description, or describe quirks and non-obvious information regarding something. Will be shown in documentation and generated code.

The format is general text input.

For example

smsg SMSG_TEST = 0x00 {
    u8 basic;
} {
    comment = "Spell id 1337 prevents this from being sent.";
}

Multiple comment tags are allowed and will not overwrite each other. One comment tag should be used for each distinctive comment.

For example

smsg SMSG_TEST = 0x00 {
    u8 basic {
        comment = "This is one thing to say.";
        comment = "This is something else.";
    }
}

The descriptive comment version of this can also be used. Any line that starts with three forward slashes (///) will be interpreted as a comment on the item below.

So the above two examples would be:

/// Spell id 1337 prevents this from being sent.
smsg SMSG_TEST = 0x00 {
    u8 basic;
}

And

smsg SMSG_TEST = 0x00 {
    /// This is one thing to say.
    /// This is something else.
    u8 basic;
}

This is the preferred way of adding comments.

Linking

Text in comments can hyperlink to other objects by surrounding them in square brackets ([ and ]).

For example

smsg SMSG_TEST = 0x00 {
    u8 basic;
} {
    comment = "Reponse to [CMSG_TEST].";
}

For Objects

versions

Used for defining world message versions.

MUST be in the format of either:

  • <major>
  • <major>.<minor>
  • <major>.<minor>.<patch>
  • <major>.<minor>.<patch>.<build>
  • *

Or any repetition of any of the above separated by space, except for * which overrides all other options.

Where:

  • <major> is the expansion release of the game. E.g. 1 for Vanilla, 2 for The Burning Crusade.
  • <minor> is the major patch release of the game, sometimes named.
  • <patch> is the quick patch release of the game.
  • <build> is the exact build number of the client. Often different between localizations.
  • * means all known versions.

Multiple versions separated by a space are allowed.

For example

struct S {
    u8 basic;
} {
    versions = "1.12";
}

Or covering more versions

struct S {
    u8 basic;
} {
    versions = "1.12 1.11 1.8";
}

Which cover versions 1.12, 1.11, and 1.8 and no others.

paste_versions

Used for defining versions but objects that have an identical layout, but where the types inside the object have different versions so that it is not the same object.

This is intended to reduce copy pasting for objects with identical layouts across versions. Format is the same as versions.

For example

enum Complex : u8 {
    ONE = 1;
    TWO = 2;
} {
    versions = "1.12";
}

enum Complex : u8 {
    ONE = 1;
    TWO = 2;
    THREE = 3;
} {
    versions = "2.4.3";
}

struct S {
    Complex c;
} {
    paste_versions = "1.12 2.4.3"
}

would be the same as

enum Complex : u8 {
    ONE = 1;
    TWO = 2;
} {
    versions = "1.12";
}

enum Complex : u8 {
    ONE = 1;
    TWO = 2;
    THREE = 3;
} {
    versions = "2.4.3";
}

struct S {
    Complex c;
} {
    versions = "1.12"
}

struct S {
    Complex c;
} {
    versions = "2.4.3"
}

login_versions

Used for defining the protocol version used when clients initially connect.

MUST be in the format of a single positive integer.

This value is first sent by the client in CMD_AUTH_LOGON_CHALLENGE_Client or CMD_AUTH_RECONNECT_CHALLENGE_Client.

Multiple versions separated by a space are allowed.

For example

struct S {
    u8 basic;
} {
    login_versions = "2";
}

Or covering more versions

struct S {
    u8 basic;
} {
    login_versions = "2 3 8";
}

Which means that S is valid for versions 2, 3, and 8, and no other versions.

test

Used to signify that the object is made up for internal testing purposes. Objects with these should be ignored unless testing.

Allowed values are either true or false. The absence of a test tag is the same as test = "false";.

For example

smsg SMSG_TEST = 0x00 {
    u8 basic;
} {
    test = "true";
}

zero_is_always_valid

Used on flags when a zero value implicitly also means that any specific enumerator is valid.

For example on AllowedRace, a 0 value means that all races are allowed, but a 0xFFFFFFFF value also means that all races are allowed.

For Definer Enumerators

display

Used for defining how the enumerator should be displayed to users. Can be used when the "real" name contains characters that aren't allowed in enumerators, or the enumerator name is undescriptive.

For example

enum Map : u8 {
    VASHJIR = 0 {
        display = "Vashj'ir";
    }
}

For Container Declarations

Valid Values

Specifies valid values for a integer type. Any values that do not conform to the values defined will lead to an invalid message which should be discarded. It is a good idea to use a comment tag to explain why the values are invalid.

Note that values outside of the valid range MUST be invalid in every situation, either because the client can't handle values outside of the valid range, or if regular clients can never send values outside of the valid range.

valid_range

Specifies a range of valid values. MUST be in the format of two integers separated by a space.

Note that these values are inclusive, so for a valid range = "2 10"; both 2 and 10 are also valid values while 1 and 11 are not.

For example

struct S {
    u8 basic {
        valid_range = "0 10";
        comment = "Values outside of 0-10 crash the client";
    }
}

valid_values

Specifies the only values which are valid. MUST be in the format of one or more integers separated by a space.

For example

struct S {
    u8 basic {
        valid_values = "2 4 6 8 10";
        comment = "Odd values crash the client.";
    }
}

For Strings

Size

maximum_length

Specifices an upper limit on the size of the string. This should only be used in cases where the client absolutely can not handle larger strings.

For example

struct S {
    u32 length;
    CString basic {
        maximum_length = "200";
        comment = "Client buffer is only 200 bytes.";
    }
}

Compression

In wowm both messages and individual arrays can have the compressed tag.

Before the compressed data there is a u32 with the size of the data after decompression. This is present both for entire messages that are compressed and for individual arrays.

Both variables and messages can be decompressed with zlib.

In order to verify, the following bytes:

0x78, 0x9c, 0x75, 0xcc, 0xbd, 0x0e, 0xc2, 0x30, 0x0c,
0x04, 0xe0, 0xf2, 0x1e, 0xbc, 0x0c, 0x61, 0x40, 0x95,
0xc8, 0x42, 0xc3, 0x8c, 0x4c, 0xe2, 0x22, 0x0b, 0xc7,
0xa9, 0x8c, 0xcb, 0x4f, 0x9f, 0x1e, 0x16, 0x24, 0x06,
0x73, 0xeb, 0x77, 0x77, 0x81, 0x69, 0x59, 0x40, 0xcb,
0x69, 0x33, 0x67, 0xa3, 0x26, 0xc7, 0xbe, 0x5b, 0xd5,
0xc7, 0x7a, 0xdf, 0x7d, 0x12, 0xbe, 0x16, 0xc0, 0x8c,
0x71, 0x24, 0xe4, 0x12, 0x49, 0xa8, 0xc2, 0xe4, 0x95,
0x48, 0x0a, 0xc9, 0xc5, 0x3d, 0xd8, 0xb6, 0x7a, 0x06,
0x4b, 0xf8, 0x34, 0x0f, 0x15, 0x46, 0x73, 0x67, 0xbb,
0x38, 0xcc, 0x7a, 0xc7, 0x97, 0x8b, 0xbd, 0xdc, 0x26,
0xcc, 0xfe, 0x30, 0x42, 0xd6, 0xe6, 0xca, 0x01, 0xa8,
0xb8, 0x90, 0x80, 0x51, 0xfc, 0xb7, 0xa4, 0x50, 0x70,
0xb8, 0x12, 0xf3, 0x3f, 0x26, 0x41, 0xfd, 0xb5, 0x37,
0x90, 0x19, 0x66, 0x8f

Should decompress to the following bytes:

66, 108, 105, 122, 122, 97, 114, 100, 95, 65, 117, 99, 116, 105, 111, 110, 85, 73, 0, // [0].AddonInfo.addon_name: CString
1, // [0].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [0].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [0].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 66, 97, 116, 116, 108, 101, 102, 105, 101, 108, 100, 77, 105, 110, 105, 109, 97, 112, 0, // [1].AddonInfo.addon_name: CString
1, // [1].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [1].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [1].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 66, 105, 110, 100, 105, 110, 103, 85, 73, 0, // [2].AddonInfo.addon_name: CString
1, // [2].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [2].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [2].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 67, 111, 109, 98, 97, 116, 84, 101, 120, 116, 0, // [3].AddonInfo.addon_name: CString
1, // [3].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [3].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [3].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 67, 114, 97, 102, 116, 85, 73, 0, // [4].AddonInfo.addon_name: CString
1, // [4].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [4].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [4].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 71, 77, 83, 117, 114, 118, 101, 121, 85, 73, 0, // [5].AddonInfo.addon_name: CString
1, // [5].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [5].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [5].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 73, 110, 115, 112, 101, 99, 116, 85, 73, 0, // [6].AddonInfo.addon_name: CString
1, // [6].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [6].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [6].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 77, 97, 99, 114, 111, 85, 73, 0, // [7].AddonInfo.addon_name: CString
1, // [7].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [7].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [7].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 82, 97, 105, 100, 85, 73, 0, // [8].AddonInfo.addon_name: CString
1, // [8].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [8].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [8].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 84, 97, 108, 101, 110, 116, 85, 73, 0, // [9].AddonInfo.addon_name: CString
1, // [9].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [9].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [9].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 84, 114, 97, 100, 101, 83, 107, 105, 108, 108, 85, 73, 0, // [10].AddonInfo.addon_name: CString
1, // [10].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [10].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [10].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 84, 114, 97, 105, 110, 101, 114, 85, 73, 0, // [11].AddonInfo.addon_name: CString
1, // [11].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [11].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [11].AddonInfo.addon_extra_crc: u32

The Python standard library has a zlib module which can be used for this:

import zlib
data = bytes([0x78, 0x9c, 0x75, 0xcc, 0xbd, 0x0e, 0xc2, 0x30, 0x0c, 0x04, 0xe0, 0xf2, 0x1e, 0xbc, 0x0c, 0x61, 0x40, 0x95, 0xc8, 0x42, 0xc3, 0x8c, 0x4c, 0xe2, 0x22, 0x0b, 0xc7, 0xa9, 0x8c, 0xcb, 0x4f, 0x9f, 0x1e, 0x16, 0x24, 0x06, 0x73, 0xeb, 0x77, 0x77, 0x81, 0x69, 0x59, 0x40, 0xcb, 0x69, 0x33, 0x67, 0xa3, 0x26, 0xc7, 0xbe, 0x5b, 0xd5, 0xc7, 0x7a, 0xdf, 0x7d, 0x12, 0xbe, 0x16, 0xc0, 0x8c, 0x71, 0x24, 0xe4, 0x12, 0x49, 0xa8, 0xc2, 0xe4, 0x95, 0x48, 0x0a, 0xc9, 0xc5, 0x3d, 0xd8, 0xb6, 0x7a, 0x06, 0x4b, 0xf8, 0x34, 0x0f, 0x15, 0x46, 0x73, 0x67, 0xbb, 0x38, 0xcc, 0x7a, 0xc7, 0x97, 0x8b, 0xbd, 0xdc, 0x26, 0xcc, 0xfe, 0x30, 0x42, 0xd6, 0xe6, 0xca, 0x01, 0xa8, 0xb8, 0x90, 0x80, 0x51, 0xfc, 0xb7, 0xa4, 0x50, 0x70, 0xb8, 0x12, 0xf3, 0x3f, 0x26, 0x41, 0xfd, 0xb5, 0x37, 0x90, 0x19, 0x66, 0x8f])

decompressed_data = zlib.decompress(data)

compressed_data = zlib.compress(decompressed_data)

In order to create an uncompressed zlib stream, the following python code can be used:

def adler32(data: bytes) -> int:
    MOD_ADLER = 65521
    a = 1
    b = 0

    for i in range(0, len(data)):
        a = (a + data[i]) % MOD_ADLER
        b = (b + a) % MOD_ADLER

    return b << 16 | a

def create_zlib_stream(data: bytes) -> bytes:
    b = bytearray([
        0x78, 0x01, # zlib header
        0x01, # BFINAL and no compression
    ])
    length = len(data)
    b.append(length & 0xff)
    b.append((length & 0xff00) >> 8)

    nlength = length ^ 0xffff
    b.append(nlength & 0xff)
    b.append((nlength & 0xff00) >> 8)

    b += (data)

    b += (adler32(data).to_bytes(4, "big"))

    return b

print(create_zlib_stream(data))

This can be used instead of a library for compressing, although decompression will probably still require a library.

AchievementDoneArray

Array of AchievementDone structs that, like the AchievementInProgressArray, does not have a size variable but instead terminates if the achievement value is -1.

AchievementDoneArray is only for Wrath.

AchievementInProgressArray

Array of AchievementInProgress structs that, like the AchievementDoneArray, does not have a size variable but instead terminates if the achievement value is -1.

AchievementInProgressArray is only for Wrath.

AddonArray

Array of Addon for TBC and Wrath that rely on externally knowing the amount of array members.

Masks

Masks consist of an integer pattern mask and a member for every set bit in the pattern mask.

Vanilla

AuraMask has a pattern of 32 bits, with u16 members.

TBC

AuraMask has a pattern of 64 bits with Aura struct members.

Wrath

AuraMask has a pattern of 64 bits with Aura struct members.

pub struct AuraMask {
    auras: [Option<u16>; Self::MAX_CAPACITY],
}

impl AuraMask {
    const MAX_CAPACITY: usize = 32;

    pub fn read(r: &mut impl Read) -> Result<Self, io::Error> {
        let mut auras = [None; Self::MAX_CAPACITY];
        let bit_pattern: u32 = crate::util::read_u32_le(r)?;

        for (i, aura) in auras.iter_mut().enumerate() {
            if (bit_pattern & (1 << i)) != 0 {
                *aura = Some(crate::util::read_u16_le(r)?);
            }
        }

        Ok(Self { auras })
    }

    pub(crate) fn write_into_vec(&self, mut v: &mut Vec<u8>) -> Result<(), std::io::Error> {
        let mut bit_pattern: u32 = 0;
        for (i, &b) in self.auras().iter().enumerate() {
            if b.is_some() {
                bit_pattern |= 1 << i;
            }
        }

        std::io::Write::write_all(&mut v, bit_pattern.to_le_bytes().as_slice())?;

        for &i in self.auras() {
            if let Some(b) = i {
                std::io::Write::write_all(&mut v, b.to_le_bytes().as_slice())?;
            }
        }

        Ok(())
    }

    pub const fn auras(&self) -> &[Option<u16>] {
        self.auras.as_slice()
    }

    pub const fn size(&self) -> usize {
        std::mem::size_of::<u32>() + std::mem::size_of::<u16>() * self.auras.len()
    }
}

CacheMask

A u32 followed by a u32 for every set bit in the first u32. CacheMask is only for Wrath.

DateTime

u32 in the format of years_after_2000 << 24 | month << 20 | month_day << 14 | weekday << 11 | hours << 6 | minutes.

All values start on 0, and weekday starts on Sunday.

EnchantMask

EnchantMask has a pattern (u16) of 16 bits with 16 bit (u16) members. The EnchantMask is Wrath only.

InspectTalentGearMask

InspectTalentGearMask has a pattern of 32 bits with members the size of their individual InspectTalentGear. InspectTalentGearMask is Wrath only.

MonsterMoveSpline

Array of splines used in SMSG_MONSTER_MOVE for Vanilla/TBC/Wrath. Consists of a u32 with the amount of splines, followed by the first spline as a Vector3d (x, y, z as floats) and then the remaining splines as packed u32s.

A C function for converting to and from the packed u32s would be:

uint32_t to_packed_vector3d(float x, float y, float z)
{
    uint32_t packed = 0;
    packed |= ((uint32_t)(x / 0.25f) & 0x7FF);
    packed |= ((uint32_t)(y / 0.25f) & 0x7FF) << 11;
    packed |= ((uint32_t)(z / 0.25f) & 0x3FF) << 22;
    return packed;
}

Vector3d from_packed(uint32_t p)
{
    float x = (float)((p & 0x7FF) / 4);
    float y = (float)(((p >> 11) & 0x7FF) / 4);
    float z = (float)(((p >> 22) & 0x3FF) / 4);

    return Vector3d { x, y, z };
}

PackedGuid

NOT VALID FOR ALL VERSIONS. ONLY KNOWN VALID FOR VANILLA, TBC AND WRATH

Some messages omit zero bytes from the GUID and instead send a byte mask as the first value. The byte mask is then iterated through and every set bit indicates that a byte of the GUID has been sent.

Note that the bit positions and not the integer values determine how many GUID bytes are sent. So for example a byte mask of 0b00000010 (0x2) indicates that the second least significant byte will be sent and the rest are zero, not that two bytes will be sent.

Since this format is impossible to model elegantly in the Wowm language it is treated as a built-in type that codegen units handle.

Examples

Assume the following bytes are sent (first byte is shown as binary for ease of understanding)

0b00001010, 0xDE, 0xAD

This means that:

  • The least significant (0th) byte is zero
  • The second least significant byte (1st) byte is 0xDE
  • The third least significant (2nd) byte is zero
  • The fourth least significant (3rd) byte is 0xAD
  • The rest are zero.

Giving a final GUID of 0x00000000AD00DE00.

The following C code will parse packed GUIDs:

#include <stdint.h>
#include <stdio.h>

// Assume data is a pointer to immediately after the byte mask
uint64_t parse_packed_guid(uint8_t byte_mask, uint8_t* data) {
    uint64_t guid = 0;
    // We can't use i because only set bits move the cursor
    uint8_t cursor = 0;

    for (uint8_t i = 0; i < 8; ++i) {
        if (byte_mask & (1 << i)) {
            guid |= (data[cursor] << (i * 8));

            ++cursor;
        }
    }

    return guid;
}

int main() {
    uint8_t byte_mask = 0b00001010;
    uint8_t data[] = { 0xDE, 0xAD };

    uint64_t guid = parse_packed_guid(byte_mask, (uint8_t*)&data);

    printf("%lx", guid);
}

The following Python code will parse packed GUIDs:

# Assume data is a list of the remaining message data
def parse_packed_guid(byte_mask, data):
    guid = 0
    # We can't use i because only set bits move the cursor
    cursor = 0

    for i in range(0, 8):
        if byte_mask & (1 << i):
            guid |= (data[cursor] << (i * 8))
            cursor += 1

    return guid


byte_mask = 0b00001010
data = [0xDE, 0xAD]

print(hex(parse_packed_guid(byte_mask, data)))

NamedGuid

A u64 followed by a CString if the u64 is not equal to 0.

UpdateMask

An UpdateMask is a variable length way of sending known fields to the client. It is represented by a byte mask that decides which fields are sent afterwards.

Representation

The UpdateMask starts with a single u8 that decides how many u32 mask blocks will follow. The bit pattern in these mask blocks determine how many additional u32s of data will follow and how to interpret that data.

Examples

The absolute minimum amount of fields that need to be set to log a player into the world are:

  • OBJECT_GUID, an Object field.
  • OBJECT_TYPE, an Object field.
  • UNIT_HEALTH, a Unit field.
  • UNIT_BYTES_0, a Unit field.

To find out how many mask blocks we need to send we take the highest offset field (UNIT_BYTES_0 with 36) and divide it by the amount of bits in a u32 and rounding up. This gives us 2 mask blocks that we need to send.

To figure out which bits must be set on the mask blocks we look up the offset and sizes for our fields. A size of 1 means that only the bit at the offset should be set. A size of 2 means that the bit at the offset and the bit at the offset + 1 should be set, and so on.

Realistically you will have to store the mask blocks in an array of u32s. The correct index and bit position can then be found by dividing to find the index, and modulus to find the bit position within that index.

For UNIT_BYTES_0 with an offset of 36, this means that our index and bit position is:

index = 36 / 32 = 1
bit = 36 % 32 = 4

We do this for every field.

We then send, in order:

  1. A u8 with the amount of mask bytes.
  2. The mask bytes as u32s.
  3. The data values as u32s.

Examples

The following Python example uses the asyncio module. Additionally read_int is a function that reads a certain amount of bytes and returns it as an integer. So read_int(reader, 1) would return a u8 and read_int(reader, 4) would return a u32.

The dict[int, int] is a dictionary of integers, also called a hash map. The keys are the offsets defined below, and the values are u32 data values.

The write function uses Python's struct module to pack the data into a byte array. The reference for struct lists the different format characters used.

The Python code below does not have the best API; users will have to fill out the dict using the offsets defined as constants without any type safety, merging of fields for Guids, or splitting of fields into smaller types. When designing your own UpdateMask type consider what API it allows you to expose.

class UpdateMask:
    fields: dict[int, int]

    @staticmethod
    async def read(reader: asyncio.StreamReader):
        amount_of_blocks = await read_int(reader, 1)

        blocks = []
        for _ in range(0, amount_of_blocks):
            blocks.append(await read_int(reader, 4))

        fields = {}
        for block_index, block in enumerate(blocks):
            for bit in range(0, 32):
                if block & 1 << bit:
                    value = await read_int(reader, 4)
                    key = block_index * 32 + bit
                    fields[key] = value

        return UpdateMask(fields=fields)

    def write(self, fmt, data):
        highest_key = max(self.fields)
        amount_of_blocks = highest_key // 32
        if highest_key % 32 != 0:
            amount_of_blocks += 1

        fmt += 'B'
        data.append(amount_of_blocks)

        blocks = [0] * amount_of_blocks

        for key in self.fields:
            block = key // 32
            index = key % 32
            blocks[block] |= 1 << index

        fmt += f'{len(blocks)}I'
        data.extend(blocks)

        for key in sorted(self.fields):
            fmt += 'I'
            data.append(self.fields[key])

        return fmt, data

    def size(self):
        highest_key = max(self.fields)
        amount_of_blocks = highest_key // 32

        extra = highest_key % 32
        if extra != 0:
            extra = 1
        else:
            extra = 0

        return 1 + (extra + amount_of_blocks + len(self.fields)) * 4

Lookup Table

Version 1.12

Taken from vmangos with some modifications.

Fields that all objects have:

NameOffsetSizeType
OBJECT_GUID0x00002GUID
OBJECT_TYPE0x00021INT
OBJECT_ENTRY0x00031INT
OBJECT_SCALE_X0x00041FLOAT

Fields that all items have:

NameOffsetSizeType
ITEM_OWNER0x00062GUID
ITEM_CONTAINED0x00082GUID
ITEM_CREATOR0x000a2GUID
ITEM_GIFTCREATOR0x000c2GUID
ITEM_STACK_COUNT0x000e1INT
ITEM_DURATION0x000f1INT
ITEM_SPELL_CHARGES0x00105INT
ITEM_FLAGS0x00151INT
ITEM_ENCHANTMENT0x001621INT
ITEM_PROPERTY_SEED0x002b1INT
ITEM_RANDOM_PROPERTIES_ID0x002c1INT
ITEM_ITEM_TEXT_ID0x002d1INT
ITEM_DURABILITY0x002e1INT
ITEM_MAXDURABILITY0x002f1INT

Fields that all containers have:

NameOffsetSizeType
CONTAINER_NUM_SLOTS0x00301INT
CONTAINER_SLOT_10x003272GUID

Fields that all units have:

NameOffsetSizeType
UNIT_CHARM0x00062GUID
UNIT_SUMMON0x00082GUID
UNIT_CHARMEDBY0x000a2GUID
UNIT_SUMMONEDBY0x000c2GUID
UNIT_CREATEDBY0x000e2GUID
UNIT_TARGET0x00102GUID
UNIT_PERSUADED0x00122GUID
UNIT_CHANNEL_OBJECT0x00142GUID
UNIT_HEALTH0x00161INT
UNIT_POWER10x00171INT
UNIT_POWER20x00181INT
UNIT_POWER30x00191INT
UNIT_POWER40x001a1INT
UNIT_POWER50x001b1INT
UNIT_MAXHEALTH0x001c1INT
UNIT_MAXPOWER10x001d1INT
UNIT_MAXPOWER20x001e1INT
UNIT_MAXPOWER30x001f1INT
UNIT_MAXPOWER40x00201INT
UNIT_MAXPOWER50x00211INT
UNIT_LEVEL0x00221INT
UNIT_FACTIONTEMPLATE0x00231INT
UNIT_BYTES_00x00241BYTES
UNIT_VIRTUAL_ITEM_SLOT_DISPLAY0x00253INT
UNIT_VIRTUAL_ITEM_INFO0x00286BYTES
UNIT_FLAGS0x002e1INT
UNIT_AURA0x002f48INT
UNIT_AURAFLAGS0x005f6BYTES
UNIT_AURALEVELS0x006512BYTES
UNIT_AURAAPPLICATIONS0x007112BYTES
UNIT_AURASTATE0x007d1INT
UNIT_BASEATTACKTIME0x007e2INT
UNIT_RANGEDATTACKTIME0x00801INT
UNIT_BOUNDINGRADIUS0x00811FLOAT
UNIT_COMBATREACH0x00821FLOAT
UNIT_DISPLAYID0x00831INT
UNIT_NATIVEDISPLAYID0x00841INT
UNIT_MOUNTDISPLAYID0x00851INT
UNIT_MINDAMAGE0x00861FLOAT
UNIT_MAXDAMAGE0x00871FLOAT
UNIT_MINOFFHANDDAMAGE0x00881FLOAT
UNIT_MAXOFFHANDDAMAGE0x00891FLOAT
UNIT_BYTES_10x008a1BYTES
UNIT_PETNUMBER0x008b1INT
UNIT_PET_NAME_TIMESTAMP0x008c1INT
UNIT_PETEXPERIENCE0x008d1INT
UNIT_PETNEXTLEVELEXP0x008e1INT
UNIT_DYNAMIC_FLAGS0x008f1INT
UNIT_CHANNEL_SPELL0x00901INT
UNIT_MOD_CAST_SPEED0x00911FLOAT
UNIT_CREATED_BY_SPELL0x00921INT
UNIT_NPC_FLAGS0x00931INT
UNIT_NPC_EMOTESTATE0x00941INT
UNIT_TRAINING_POINTS0x00951TWO_SHORT
UNIT_STRENGTH0x00961INT
UNIT_AGILITY0x00971INT
UNIT_STAMINA0x00981INT
UNIT_INTELLECT0x00991INT
UNIT_SPIRIT0x009a1INT
UNIT_NORMAL_RESISTANCE0x009b1INT
UNIT_HOLY_RESISTANCE0x009c1INT
UNIT_FIRE_RESISTANCE0x009d1INT
UNIT_NATURE_RESISTANCE0x009e1INT
UNIT_FROST_RESISTANCE0x009f1INT
UNIT_SHADOW_RESISTANCE0x00a01INT
UNIT_ARCANE_RESISTANCE0x00a11INT
UNIT_BASE_MANA0x00a21INT
UNIT_BASE_HEALTH0x00a31INT
UNIT_BYTES_20x00a41BYTES
UNIT_ATTACK_POWER0x00a51INT
UNIT_ATTACK_POWER_MODS0x00a61TWO_SHORT
UNIT_ATTACK_POWER_MULTIPLIER0x00a71FLOAT
UNIT_RANGED_ATTACK_POWER0x00a81INT
UNIT_RANGED_ATTACK_POWER_MODS0x00a91TWO_SHORT
UNIT_RANGED_ATTACK_POWER_MULTIPLIER0x00aa1FLOAT
UNIT_MINRANGEDDAMAGE0x00ab1FLOAT
UNIT_MAXRANGEDDAMAGE0x00ac1FLOAT
UNIT_POWER_COST_MODIFIER0x00ad7INT
UNIT_POWER_COST_MULTIPLIER0x00b47FLOAT

Fields that all players have:

NameOffsetSizeType
PLAYER_DUEL_ARBITER0x00bc2GUID
PLAYER_FLAGS0x00be1INT
PLAYER_GUILDID0x00bf1INT
PLAYER_GUILDRANK0x00c01INT
PLAYER_FEATURES0x00c11BYTES
PLAYER_BYTES_20x00c21BYTES
PLAYER_BYTES_30x00c31BYTES
PLAYER_DUEL_TEAM0x00c41INT
PLAYER_GUILD_TIMESTAMP0x00c51INT
PLAYER_QUEST_LOG_1_10x00c61INT
PLAYER_QUEST_LOG_1_20x00c72INT
PLAYER_QUEST_LOG_2_10x00c91INT
PLAYER_QUEST_LOG_2_20x00ca2INT
PLAYER_QUEST_LOG_3_10x00cc1INT
PLAYER_QUEST_LOG_3_20x00cd2INT
PLAYER_QUEST_LOG_4_10x00cf1INT
PLAYER_QUEST_LOG_4_20x00d02INT
PLAYER_QUEST_LOG_5_10x00d21INT
PLAYER_QUEST_LOG_5_20x00d32INT
PLAYER_QUEST_LOG_6_10x00d51INT
PLAYER_QUEST_LOG_6_20x00d62INT
PLAYER_QUEST_LOG_7_10x00d81INT
PLAYER_QUEST_LOG_7_20x00d92INT
PLAYER_QUEST_LOG_8_10x00db1INT
PLAYER_QUEST_LOG_8_20x00dc2INT
PLAYER_QUEST_LOG_9_10x00de1INT
PLAYER_QUEST_LOG_9_20x00df2INT
PLAYER_QUEST_LOG_10_10x00e11INT
PLAYER_QUEST_LOG_10_20x00e22INT
PLAYER_QUEST_LOG_11_10x00e41INT
PLAYER_QUEST_LOG_11_20x00e52INT
PLAYER_QUEST_LOG_12_10x00e71INT
PLAYER_QUEST_LOG_12_20x00e82INT
PLAYER_QUEST_LOG_13_10x00ea1INT
PLAYER_QUEST_LOG_13_20x00eb2INT
PLAYER_QUEST_LOG_14_10x00ed1INT
PLAYER_QUEST_LOG_14_20x00ee2INT
PLAYER_QUEST_LOG_15_10x00f01INT
PLAYER_QUEST_LOG_15_20x00f12INT
PLAYER_QUEST_LOG_16_10x00f31INT
PLAYER_QUEST_LOG_16_20x00f42INT
PLAYER_QUEST_LOG_17_10x00f61INT
PLAYER_QUEST_LOG_17_20x00f72INT
PLAYER_QUEST_LOG_18_10x00f91INT
PLAYER_QUEST_LOG_18_20x00fa2INT
PLAYER_QUEST_LOG_19_10x00fc1INT
PLAYER_QUEST_LOG_19_20x00fd2INT
PLAYER_QUEST_LOG_20_10x00ff1INT
PLAYER_QUEST_LOG_20_20x01002INT
PLAYER_VISIBLE_ITEM0x0102228CUSTOM
PLAYER_FIELD_INV0x01e6226CUSTOM
PLAYER_FARSIGHT0x02c82GUID
PLAYER_FIELD_COMBO_TARGET0x02ca2GUID
PLAYER_XP0x02cc1INT
PLAYER_NEXT_LEVEL_XP0x02cd1INT
PLAYER_SKILL_INFO0x02ce384CUSTOM
PLAYER_CHARACTER_POINTS10x044e1INT
PLAYER_CHARACTER_POINTS20x044f1INT
PLAYER_TRACK_CREATURES0x04501INT
PLAYER_TRACK_RESOURCES0x04511INT
PLAYER_BLOCK_PERCENTAGE0x04521FLOAT
PLAYER_DODGE_PERCENTAGE0x04531FLOAT
PLAYER_PARRY_PERCENTAGE0x04541FLOAT
PLAYER_CRIT_PERCENTAGE0x04551FLOAT
PLAYER_RANGED_CRIT_PERCENTAGE0x04561FLOAT
PLAYER_EXPLORED_ZONES_10x045764BYTES
PLAYER_REST_STATE_EXPERIENCE0x04971INT
PLAYER_FIELD_COINAGE0x04981INT
PLAYER_FIELD_POSSTAT00x04991INT
PLAYER_FIELD_POSSTAT10x049a1INT
PLAYER_FIELD_POSSTAT20x049b1INT
PLAYER_FIELD_POSSTAT30x049c1INT
PLAYER_FIELD_POSSTAT40x049d1INT
PLAYER_FIELD_NEGSTAT00x049e1INT
PLAYER_FIELD_NEGSTAT10x049f1INT
PLAYER_FIELD_NEGSTAT20x04a01INT
PLAYER_FIELD_NEGSTAT30x04a11INT
PLAYER_FIELD_NEGSTAT40x04a21INT
PLAYER_FIELD_RESISTANCEBUFFMODSPOSITIVE0x04a37INT
PLAYER_FIELD_RESISTANCEBUFFMODSNEGATIVE0x04aa7INT
PLAYER_FIELD_MOD_DAMAGE_DONE_POS0x04b17INT
PLAYER_FIELD_MOD_DAMAGE_DONE_NEG0x04b87INT
PLAYER_FIELD_MOD_DAMAGE_DONE_PCT0x04bf7INT
PLAYER_FIELD_BYTES0x04c61BYTES
PLAYER_AMMO_ID0x04c71INT
PLAYER_SELF_RES_SPELL0x04c81INT
PLAYER_FIELD_PVP_MEDALS0x04c91INT
PLAYER_FIELD_BUYBACK_PRICE_10x04ca12INT
PLAYER_FIELD_BUYBACK_TIMESTAMP_10x04d612INT
PLAYER_FIELD_SESSION_KILLS0x04e21TWO_SHORT
PLAYER_FIELD_YESTERDAY_KILLS0x04e31TWO_SHORT
PLAYER_FIELD_LAST_WEEK_KILLS0x04e41TWO_SHORT
PLAYER_FIELD_THIS_WEEK_KILLS0x04e51TWO_SHORT
PLAYER_FIELD_THIS_WEEK_CONTRIBUTION0x04e61INT
PLAYER_FIELD_LIFETIME_HONORBALE_KILLS0x04e71INT
PLAYER_FIELD_LIFETIME_DISHONORBALE_KILLS0x04e81INT
PLAYER_FIELD_YESTERDAY_CONTRIBUTION0x04e91INT
PLAYER_FIELD_LAST_WEEK_CONTRIBUTION0x04ea1INT
PLAYER_FIELD_LAST_WEEK_RANK0x04eb1INT
PLAYER_FIELD_BYTES20x04ec1BYTES
PLAYER_FIELD_WATCHED_FACTION_INDEX0x04ed1INT
PLAYER_FIELD_COMBAT_RATING_10x04ee20INT

Fields that all gameobjects have:

NameOffsetSizeType
GAMEOBJECT_CREATED_BY0x00062GUID
GAMEOBJECT_DISPLAYID0x00081INT
GAMEOBJECT_FLAGS0x00091INT
GAMEOBJECT_ROTATION0x000a4FLOAT
GAMEOBJECT_STATE0x000e1INT
GAMEOBJECT_POS_X0x000f1FLOAT
GAMEOBJECT_POS_Y0x00101FLOAT
GAMEOBJECT_POS_Z0x00111FLOAT
GAMEOBJECT_FACING0x00121FLOAT
GAMEOBJECT_DYN_FLAGS0x00131INT
GAMEOBJECT_FACTION0x00141INT
GAMEOBJECT_TYPE_ID0x00151INT
GAMEOBJECT_LEVEL0x00161INT
GAMEOBJECT_ARTKIT0x00171INT
GAMEOBJECT_ANIMPROGRESS0x00181INT

Fields that all dynamicobjects have:

NameOffsetSizeType
DYNAMICOBJECT_CASTER0x00062GUID
DYNAMICOBJECT_BYTES0x00081BYTES
DYNAMICOBJECT_SPELLID0x00091INT
DYNAMICOBJECT_RADIUS0x000a1FLOAT
DYNAMICOBJECT_POS_X0x000b1FLOAT
DYNAMICOBJECT_POS_Y0x000c1FLOAT
DYNAMICOBJECT_POS_Z0x000d1FLOAT
DYNAMICOBJECT_FACING0x000e1FLOAT

Fields that all corpses have:

NameOffsetSizeType
CORPSE_OWNER0x00062GUID
CORPSE_FACING0x00081FLOAT
CORPSE_POS_X0x00091FLOAT
CORPSE_POS_Y0x000a1FLOAT
CORPSE_POS_Z0x000b1FLOAT
CORPSE_DISPLAY_ID0x000c1INT
CORPSE_ITEM0x000d19INT
CORPSE_BYTES_10x00201BYTES
CORPSE_BYTES_20x00211BYTES
CORPSE_GUILD0x00221INT
CORPSE_FLAGS0x00231INT
CORPSE_DYNAMIC_FLAGS0x00241INT

Version 2.4.3

Taken from mangosone with some modifications.

Fields that all objects have:

NameOffsetSizeType
OBJECT_GUID0x00002GUID
OBJECT_TYPE0x00021INT
OBJECT_ENTRY0x00031INT
OBJECT_SCALE_X0x00041FLOAT
OBJECT_CREATED_BY0x00062GUID

Fields that all items have:

NameOffsetSizeType
ITEM_OWNER0x00062GUID
ITEM_CONTAINED0x00082GUID
ITEM_CREATOR0x000a2GUID
ITEM_GIFTCREATOR0x000c2GUID
ITEM_STACK_COUNT0x000e1INT
ITEM_DURATION0x000f1INT
ITEM_SPELL_CHARGES0x00105INT
ITEM_FLAGS0x00151INT
ITEM_ENCHANTMENT_1_10x001633INT
ITEM_PROPERTY_SEED0x00371INT
ITEM_RANDOM_PROPERTIES_ID0x00381INT
ITEM_ITEM_TEXT_ID0x00391INT
ITEM_DURABILITY0x003a1INT
ITEM_MAXDURABILITY0x003b1INT

Fields that all containers have:

NameOffsetSizeType
CONTAINER_NUM_SLOTS0x003c1INT
CONTAINER_SLOT_10x003e72GUID

Fields that all units have:

NameOffsetSizeType
UNIT_CHARM0x00062GUID
UNIT_SUMMON0x00082GUID
UNIT_CHARMEDBY0x000a2GUID
UNIT_SUMMONEDBY0x000c2GUID
UNIT_CREATEDBY0x000e2GUID
UNIT_TARGET0x00102GUID
UNIT_PERSUADED0x00122GUID
UNIT_CHANNEL_OBJECT0x00142GUID
UNIT_HEALTH0x00161INT
UNIT_POWER10x00171INT
UNIT_POWER20x00181INT
UNIT_POWER30x00191INT
UNIT_POWER40x001a1INT
UNIT_POWER50x001b1INT
UNIT_MAXHEALTH0x001c1INT
UNIT_MAXPOWER10x001d1INT
UNIT_MAXPOWER20x001e1INT
UNIT_MAXPOWER30x001f1INT
UNIT_MAXPOWER40x00201INT
UNIT_MAXPOWER50x00211INT
UNIT_LEVEL0x00221INT
UNIT_FACTIONTEMPLATE0x00231INT
UNIT_BYTES_00x00241BYTES
UNIT_VIRTUAL_ITEM_SLOT_DISPLAY0x00253INT
UNIT_VIRTUAL_ITEM_INFO0x00286BYTES
UNIT_FLAGS0x002e1INT
UNIT_FLAGS_20x002f1INT
UNIT_AURA0x003056INT
UNIT_AURAFLAGS0x006814BYTES
UNIT_AURALEVELS0x007614BYTES
UNIT_AURAAPPLICATIONS0x008414BYTES
UNIT_AURASTATE0x00921INT
UNIT_BASEATTACKTIME0x00932INT
UNIT_RANGEDATTACKTIME0x00951INT
UNIT_BOUNDINGRADIUS0x00961FLOAT
UNIT_COMBATREACH0x00971FLOAT
UNIT_DISPLAYID0x00981INT
UNIT_NATIVEDISPLAYID0x00991INT
UNIT_MOUNTDISPLAYID0x009a1INT
UNIT_MINDAMAGE0x009b1FLOAT
UNIT_MAXDAMAGE0x009c1FLOAT
UNIT_MINOFFHANDDAMAGE0x009d1FLOAT
UNIT_MAXOFFHANDDAMAGE0x009e1FLOAT
UNIT_BYTES_10x009f1BYTES
UNIT_PETNUMBER0x00a01INT
UNIT_PET_NAME_TIMESTAMP0x00a11INT
UNIT_PETEXPERIENCE0x00a21INT
UNIT_PETNEXTLEVELEXP0x00a31INT
UNIT_DYNAMIC_FLAGS0x00a41INT
UNIT_CHANNEL_SPELL0x00a51INT
UNIT_MOD_CAST_SPEED0x00a61FLOAT
UNIT_CREATED_BY_SPELL0x00a71INT
UNIT_NPC_FLAGS0x00a81INT
UNIT_NPC_EMOTESTATE0x00a91INT
UNIT_TRAINING_POINTS0x00aa1TWO_SHORT
UNIT_STRENGTH0x00ab1INT
UNIT_AGILITY0x00ac1INT
UNIT_STAMINA0x00ad1INT
UNIT_INTELLECT0x00ae1INT
UNIT_SPIRIT0x00af1INT
UNIT_POSSTAT10x00b11INT
UNIT_POSSTAT20x00b21INT
UNIT_POSSTAT30x00b31INT
UNIT_NEGSTAT10x00b61INT
UNIT_NEGSTAT20x00b71INT
UNIT_NEGSTAT30x00b81INT
UNIT_RESISTANCES0x00ba7INT
UNIT_BASE_MANA0x00cf1INT
UNIT_BASE_HEALTH0x00d01INT
UNIT_BYTES_20x00d11BYTES
UNIT_ATTACK_POWER0x00d21INT
UNIT_ATTACK_POWER_MODS0x00d31TWO_SHORT
UNIT_ATTACK_POWER_MULTIPLIER0x00d41FLOAT
UNIT_RANGED_ATTACK_POWER0x00d51INT
UNIT_RANGED_ATTACK_POWER_MODS0x00d61TWO_SHORT
UNIT_RANGED_ATTACK_POWER_MULTIPLIER0x00d71FLOAT
UNIT_MINRANGEDDAMAGE0x00d81FLOAT
UNIT_MAXRANGEDDAMAGE0x00d91FLOAT
UNIT_POWER_COST_MODIFIER0x00da7INT
UNIT_POWER_COST_MULTIPLIER0x00e17FLOAT
UNIT_MAXHEALTHMODIFIER0x00e81FLOAT

Fields that all players have:

NameOffsetSizeType
PLAYER_POSSTAT00x00b01INT
PLAYER_POSSTAT40x00b41INT
PLAYER_NEGSTAT00x00b51INT
PLAYER_NEGSTAT40x00b91INT
PLAYER_RESISTANCEBUFFMODSPOSITIVE0x00c17INT
PLAYER_RESISTANCEBUFFMODSNEGATIVE0x00c87INT
PLAYER_DUEL_ARBITER0x00ea2GUID
PLAYER_FLAGS0x00ec1INT
PLAYER_GUILDID0x00ed1INT
PLAYER_GUILDRANK0x00ee1INT
PLAYER_FIELD_BYTES0x00ef1BYTES
PLAYER_BYTES_20x00f01BYTES
PLAYER_BYTES_30x00f11BYTES
PLAYER_DUEL_TEAM0x00f21INT
PLAYER_GUILD_TIMESTAMP0x00f31INT
PLAYER_QUEST_LOG_1_10x00f41INT
PLAYER_QUEST_LOG_1_20x00f51INT
PLAYER_QUEST_LOG_1_30x00f61BYTES
PLAYER_QUEST_LOG_1_40x00f71INT
PLAYER_QUEST_LOG_2_10x00f81INT
PLAYER_QUEST_LOG_2_20x00f91INT
PLAYER_QUEST_LOG_2_30x00fa1BYTES
PLAYER_QUEST_LOG_2_40x00fb1INT
PLAYER_QUEST_LOG_3_10x00fc1INT
PLAYER_QUEST_LOG_3_20x00fd1INT
PLAYER_QUEST_LOG_3_30x00fe1BYTES
PLAYER_QUEST_LOG_3_40x00ff1INT
PLAYER_QUEST_LOG_4_10x01001INT
PLAYER_QUEST_LOG_4_20x01011INT
PLAYER_QUEST_LOG_4_30x01021BYTES
PLAYER_QUEST_LOG_4_40x01031INT
PLAYER_QUEST_LOG_5_10x01041INT
PLAYER_QUEST_LOG_5_20x01051INT
PLAYER_QUEST_LOG_5_30x01061BYTES
PLAYER_QUEST_LOG_5_40x01071INT
PLAYER_QUEST_LOG_6_10x01081INT
PLAYER_QUEST_LOG_6_20x01091INT
PLAYER_QUEST_LOG_6_30x010a1BYTES
PLAYER_QUEST_LOG_6_40x010b1INT
PLAYER_QUEST_LOG_7_10x010c1INT
PLAYER_QUEST_LOG_7_20x010d1INT
PLAYER_QUEST_LOG_7_30x010e1BYTES
PLAYER_QUEST_LOG_7_40x010f1INT
PLAYER_QUEST_LOG_8_10x01101INT
PLAYER_QUEST_LOG_8_20x01111INT
PLAYER_QUEST_LOG_8_30x01121BYTES
PLAYER_QUEST_LOG_8_40x01131INT
PLAYER_QUEST_LOG_9_10x01141INT
PLAYER_QUEST_LOG_9_20x01151INT
PLAYER_QUEST_LOG_9_30x01161BYTES
PLAYER_QUEST_LOG_9_40x01171INT
PLAYER_QUEST_LOG_10_10x01181INT
PLAYER_QUEST_LOG_10_20x01191INT
PLAYER_QUEST_LOG_10_30x011a1BYTES
PLAYER_QUEST_LOG_10_40x011b1INT
PLAYER_QUEST_LOG_11_10x011c1INT
PLAYER_QUEST_LOG_11_20x011d1INT
PLAYER_QUEST_LOG_11_30x011e1BYTES
PLAYER_QUEST_LOG_11_40x011f1INT
PLAYER_QUEST_LOG_12_10x01201INT
PLAYER_QUEST_LOG_12_20x01211INT
PLAYER_QUEST_LOG_12_30x01221BYTES
PLAYER_QUEST_LOG_12_40x01231INT
PLAYER_QUEST_LOG_13_10x01241INT
PLAYER_QUEST_LOG_13_20x01251INT
PLAYER_QUEST_LOG_13_30x01261BYTES
PLAYER_QUEST_LOG_13_40x01271INT
PLAYER_QUEST_LOG_14_10x01281INT
PLAYER_QUEST_LOG_14_20x01291INT
PLAYER_QUEST_LOG_14_30x012a1BYTES
PLAYER_QUEST_LOG_14_40x012b1INT
PLAYER_QUEST_LOG_15_10x012c1INT
PLAYER_QUEST_LOG_15_20x012d1INT
PLAYER_QUEST_LOG_15_30x012e1BYTES
PLAYER_QUEST_LOG_15_40x012f1INT
PLAYER_QUEST_LOG_16_10x01301INT
PLAYER_QUEST_LOG_16_20x01311INT
PLAYER_QUEST_LOG_16_30x01321BYTES
PLAYER_QUEST_LOG_16_40x01331INT
PLAYER_QUEST_LOG_17_10x01341INT
PLAYER_QUEST_LOG_17_20x01351INT
PLAYER_QUEST_LOG_17_30x01361BYTES
PLAYER_QUEST_LOG_17_40x01371INT
PLAYER_QUEST_LOG_18_10x01381INT
PLAYER_QUEST_LOG_18_20x01391INT
PLAYER_QUEST_LOG_18_30x013a1BYTES
PLAYER_QUEST_LOG_18_40x013b1INT
PLAYER_QUEST_LOG_19_10x013c1INT
PLAYER_QUEST_LOG_19_20x013d1INT
PLAYER_QUEST_LOG_19_30x013e1BYTES
PLAYER_QUEST_LOG_19_40x013f1INT
PLAYER_QUEST_LOG_20_10x01401INT
PLAYER_QUEST_LOG_20_20x01411INT
PLAYER_QUEST_LOG_20_30x01421BYTES
PLAYER_QUEST_LOG_20_40x01431INT
PLAYER_QUEST_LOG_21_10x01441INT
PLAYER_QUEST_LOG_21_20x01451INT
PLAYER_QUEST_LOG_21_30x01461BYTES
PLAYER_QUEST_LOG_21_40x01471INT
PLAYER_QUEST_LOG_22_10x01481INT
PLAYER_QUEST_LOG_22_20x01491INT
PLAYER_QUEST_LOG_22_30x014a1BYTES
PLAYER_QUEST_LOG_22_40x014b1INT
PLAYER_QUEST_LOG_23_10x014c1INT
PLAYER_QUEST_LOG_23_20x014d1INT
PLAYER_QUEST_LOG_23_30x014e1BYTES
PLAYER_QUEST_LOG_23_40x014f1INT
PLAYER_QUEST_LOG_24_10x01501INT
PLAYER_QUEST_LOG_24_20x01511INT
PLAYER_QUEST_LOG_24_30x01521BYTES
PLAYER_QUEST_LOG_24_40x01531INT
PLAYER_QUEST_LOG_25_10x01541INT
PLAYER_QUEST_LOG_25_20x01551INT
PLAYER_QUEST_LOG_25_30x01561BYTES
PLAYER_QUEST_LOG_25_40x01571INT
PLAYER_VISIBLE_ITEM0x0158228CUSTOM
PLAYER_CHOSEN_TITLE0x02881INT
PLAYER_FIELD_INV0x01e6272CUSTOM
PLAYER_FARSIGHT0x039a2GUID
PLAYER_KNOWN_TITLES0x039c2GUID
PLAYER_XP0x039e1INT
PLAYER_NEXT_LEVEL_XP0x039f1INT
PLAYER_SKILL_INFO0x03a0384CUSTOM
PLAYER_CHARACTER_POINTS10x05201INT
PLAYER_CHARACTER_POINTS20x05211INT
PLAYER_TRACK_CREATURES0x05221INT
PLAYER_TRACK_RESOURCES0x05231INT
PLAYER_BLOCK_PERCENTAGE0x05241FLOAT
PLAYER_DODGE_PERCENTAGE0x05251FLOAT
PLAYER_PARRY_PERCENTAGE0x05261FLOAT
PLAYER_EXPERTISE0x05271INT
PLAYER_OFFHAND_EXPERTISE0x05281INT
PLAYER_CRIT_PERCENTAGE0x05291FLOAT
PLAYER_RANGED_CRIT_PERCENTAGE0x052a1FLOAT
PLAYER_OFFHAND_CRIT_PERCENTAGE0x052b1FLOAT
PLAYER_SPELL_CRIT_PERCENTAGE10x052c7FLOAT
PLAYER_SHIELD_BLOCK0x05331INT
PLAYER_EXPLORED_ZONES_10x0534128BYTES
PLAYER_REST_STATE_EXPERIENCE0x05b41INT
PLAYER_COINAGE0x05b51INT
PLAYER_MOD_DAMAGE_DONE_POS0x05b67INT
PLAYER_MOD_DAMAGE_DONE_NEG0x05bd7INT
PLAYER_MOD_DAMAGE_DONE_PCT0x05c47INT
PLAYER_MOD_HEALING_DONE_POS0x05cb1INT
PLAYER_MOD_TARGET_RESISTANCE0x05cc1INT
PLAYER_MOD_TARGET_PHYSICAL_RESISTANCE0x05cd1INT
PLAYER_FEATURES0x05ce1BYTES
PLAYER_AMMO_ID0x05cf1INT
PLAYER_SELF_RES_SPELL0x05d01INT
PLAYER_PVP_MEDALS0x05d11INT
PLAYER_BUYBACK_PRICE_10x05d212INT
PLAYER_BUYBACK_TIMESTAMP_10x05de12INT
PLAYER_KILLS0x05ea1TWO_SHORT
PLAYER_TODAY_CONTRIBUTION0x05eb1INT
PLAYER_YESTERDAY_CONTRIBUTION0x05ec1INT
PLAYER_LIFETIME_HONORABLE_KILLS0x05ed1INT
PLAYER_BYTES2_GLOW0x05ee1BYTES
PLAYER_WATCHED_FACTION_INDEX0x05ef1INT
PLAYER_COMBAT_RATING_10x05f024INT
PLAYER_ARENA_TEAM_INFO_1_10x060818INT
PLAYER_HONOR_CURRENCY0x061a1INT
PLAYER_ARENA_CURRENCY0x061b1INT
PLAYER_MOD_MANA_REGEN0x061c1FLOAT
PLAYER_MOD_MANA_REGEN_INTERRUPT0x061d1FLOAT
PLAYER_MAX_LEVEL0x061e1INT
PLAYER_DAILY_QUESTS_10x061f25INT

Fields that all gameobjects have:

NameOffsetSizeType
GAMEOBJECT_DISPLAYID0x00081INT
GAMEOBJECT_FLAGS0x00091INT
GAMEOBJECT_ROTATION0x000a4FLOAT
GAMEOBJECT_STATE0x000e1INT
GAMEOBJECT_POS_X0x000f1FLOAT
GAMEOBJECT_POS_Y0x00101FLOAT
GAMEOBJECT_POS_Z0x00111FLOAT
GAMEOBJECT_FACING0x00121FLOAT
GAMEOBJECT_DYN_FLAGS0x00131INT
GAMEOBJECT_FACTION0x00141INT
GAMEOBJECT_TYPE_ID0x00151INT
GAMEOBJECT_LEVEL0x00161INT
GAMEOBJECT_ARTKIT0x00171INT
GAMEOBJECT_ANIMPROGRESS0x00181INT

Fields that all dynamicobjects have:

NameOffsetSizeType
DYNAMICOBJECT_CASTER0x00062GUID
DYNAMICOBJECT_BYTES0x00081BYTES
DYNAMICOBJECT_SPELLID0x00091INT
DYNAMICOBJECT_RADIUS0x000a1FLOAT
DYNAMICOBJECT_POS_X0x000b1FLOAT
DYNAMICOBJECT_POS_Y0x000c1FLOAT
DYNAMICOBJECT_POS_Z0x000d1FLOAT
DYNAMICOBJECT_FACING0x000e1FLOAT
DYNAMICOBJECT_CASTTIME0x000f1INT

Fields that all corpses have:

NameOffsetSizeType
CORPSE_OWNER0x00062GUID
CORPSE_PARTY0x00082GUID
CORPSE_FACING0x000a1FLOAT
CORPSE_POS_X0x000b1FLOAT
CORPSE_POS_Y0x000c1FLOAT
CORPSE_POS_Z0x000d1FLOAT
CORPSE_DISPLAY_ID0x000e1INT
CORPSE_ITEM0x000f19INT
CORPSE_BYTES_10x00221BYTES
CORPSE_BYTES_20x00231BYTES
CORPSE_GUILD0x00241INT
CORPSE_FLAGS0x00251INT
CORPSE_DYNAMIC_FLAGS0x00261INT

Version 3.3.5

Taken from ArcEmu with some modifications.

Fields that all objects have:

NameOffsetSizeType
OBJECT_GUID0x00002GUID
OBJECT_TYPE0x00021INT
OBJECT_ENTRY0x00031INT
OBJECT_SCALE_X0x00041FLOAT
OBJECT_CREATED_BY0x00062GUID

Fields that all items have:

NameOffsetSizeType
ITEM_OWNER0x00062GUID
ITEM_CONTAINED0x00082GUID
ITEM_CREATOR0x000a2GUID
ITEM_GIFTCREATOR0x000c2GUID
ITEM_STACK_COUNT0x000e1INT
ITEM_DURATION0x000f1INT
ITEM_SPELL_CHARGES0x00105INT
ITEM_FLAGS0x00151INT
ITEM_ENCHANTMENT_1_10x00162INT
ITEM_ENCHANTMENT_1_30x00181TWO_SHORT
ITEM_ENCHANTMENT_2_10x00192INT
ITEM_ENCHANTMENT_2_30x001b1TWO_SHORT
ITEM_ENCHANTMENT_3_10x001c2INT
ITEM_ENCHANTMENT_3_30x001e1TWO_SHORT
ITEM_ENCHANTMENT_4_10x001f2INT
ITEM_ENCHANTMENT_4_30x00211TWO_SHORT
ITEM_ENCHANTMENT_5_10x00222INT
ITEM_ENCHANTMENT_5_30x00241TWO_SHORT
ITEM_ENCHANTMENT_6_10x00252INT
ITEM_ENCHANTMENT_6_30x00271TWO_SHORT
ITEM_ENCHANTMENT_7_10x00282INT
ITEM_ENCHANTMENT_7_30x002a1TWO_SHORT
ITEM_ENCHANTMENT_8_10x002b2INT
ITEM_ENCHANTMENT_8_30x002d1TWO_SHORT
ITEM_ENCHANTMENT_9_10x002e2INT
ITEM_ENCHANTMENT_9_30x00301TWO_SHORT
ITEM_ENCHANTMENT_10_10x00312INT
ITEM_ENCHANTMENT_10_30x00331TWO_SHORT
ITEM_ENCHANTMENT_11_10x00342INT
ITEM_ENCHANTMENT_11_30x00361TWO_SHORT
ITEM_ENCHANTMENT_12_10x00372INT
ITEM_ENCHANTMENT_12_30x00391TWO_SHORT
ITEM_PROPERTY_SEED0x003a1INT
ITEM_RANDOM_PROPERTIES_ID0x003b1INT
ITEM_DURABILITY0x003c1INT
ITEM_MAXDURABILITY0x003d1INT
ITEM_CREATE_PLAYED_TIME0x003e1INT

Fields that all containers have:

NameOffsetSizeType
CONTAINER_NUM_SLOTS0x00401INT
CONTAINER_SLOT_10x004272GUID

Fields that all units have:

NameOffsetSizeType
UNIT_CHARM0x00062GUID
UNIT_SUMMON0x00082GUID
UNIT_CRITTER0x000a2GUID
UNIT_CHARMEDBY0x000c2GUID
UNIT_SUMMONEDBY0x000e2GUID
UNIT_CREATEDBY0x00102GUID
UNIT_TARGET0x00122GUID
UNIT_CHANNEL_OBJECT0x00142GUID
UNIT_CHANNEL_SPELL0x00161INT
UNIT_BYTES_00x00171BYTES
UNIT_HEALTH0x00181INT
UNIT_POWER10x00191INT
UNIT_POWER20x001a1INT
UNIT_POWER30x001b1INT
UNIT_POWER40x001c1INT
UNIT_POWER50x001d1INT
UNIT_POWER60x001e1INT
UNIT_POWER70x001f1INT
UNIT_MAXHEALTH0x00201INT
UNIT_MAXPOWER10x00211INT
UNIT_MAXPOWER20x00221INT
UNIT_MAXPOWER30x00231INT
UNIT_MAXPOWER40x00241INT
UNIT_MAXPOWER50x00251INT
UNIT_MAXPOWER60x00261INT
UNIT_MAXPOWER70x00271INT
UNIT_POWER_REGEN_FLAT_MODIFIER0x00287FLOAT
UNIT_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER0x002f7FLOAT
UNIT_LEVEL0x00361INT
UNIT_FACTIONTEMPLATE0x00371INT
UNIT_VIRTUAL_ITEM_SLOT_ID0x00383INT
UNIT_FLAGS0x003b1INT
UNIT_FLAGS_20x003c1INT
UNIT_AURASTATE0x003d1INT
UNIT_BASEATTACKTIME0x003e2INT
UNIT_RANGEDATTACKTIME0x00401INT
UNIT_BOUNDINGRADIUS0x00411FLOAT
UNIT_COMBATREACH0x00421FLOAT
UNIT_DISPLAYID0x00431INT
UNIT_NATIVEDISPLAYID0x00441INT
UNIT_MOUNTDISPLAYID0x00451INT
UNIT_MINDAMAGE0x00461FLOAT
UNIT_MAXDAMAGE0x00471FLOAT
UNIT_MINOFFHANDDAMAGE0x00481FLOAT
UNIT_MAXOFFHANDDAMAGE0x00491FLOAT
UNIT_BYTES_10x004a1BYTES
UNIT_PETNUMBER0x004b1INT
UNIT_PET_NAME_TIMESTAMP0x004c1INT
UNIT_PETEXPERIENCE0x004d1INT
UNIT_PETNEXTLEVELEXP0x004e1INT
UNIT_DYNAMIC_FLAGS0x004f1INT
UNIT_MOD_CAST_SPEED0x00501FLOAT
UNIT_CREATED_BY_SPELL0x00511INT
UNIT_NPC_FLAGS0x00521INT
UNIT_NPC_EMOTESTATE0x00531INT
UNIT_STRENGTH0x00541INT
UNIT_AGILITY0x00551INT
UNIT_STAMINA0x00561INT
UNIT_INTELLECT0x00571INT
UNIT_SPIRIT0x00581INT
UNIT_POSSTAT00x00591INT
UNIT_POSSTAT10x005a1INT
UNIT_POSSTAT20x005b1INT
UNIT_POSSTAT30x005c1INT
UNIT_POSSTAT40x005d1INT
UNIT_NEGSTAT00x005e1INT
UNIT_NEGSTAT10x005f1INT
UNIT_NEGSTAT20x00601INT
UNIT_NEGSTAT30x00611INT
UNIT_NEGSTAT40x00621INT
UNIT_RESISTANCES0x00637INT
UNIT_RESISTANCEBUFFMODSPOSITIVE0x006a7INT
UNIT_RESISTANCEBUFFMODSNEGATIVE0x00717INT
UNIT_BASE_MANA0x00781INT
UNIT_BASE_HEALTH0x00791INT
UNIT_BYTES_20x007a1BYTES
UNIT_ATTACK_POWER0x007b1INT
UNIT_ATTACK_POWER_MODS0x007c1TWO_SHORT
UNIT_ATTACK_POWER_MULTIPLIER0x007d1FLOAT
UNIT_RANGED_ATTACK_POWER0x007e1INT
UNIT_RANGED_ATTACK_POWER_MODS0x007f1TWO_SHORT
UNIT_RANGED_ATTACK_POWER_MULTIPLIER0x00801FLOAT
UNIT_MINRANGEDDAMAGE0x00811FLOAT
UNIT_MAXRANGEDDAMAGE0x00821FLOAT
UNIT_POWER_COST_MODIFIER0x00837INT
UNIT_POWER_COST_MULTIPLIER0x008a7FLOAT
UNIT_MAXHEALTHMODIFIER0x00911FLOAT
UNIT_HOVERHEIGHT0x00921FLOAT

Fields that all players have:

NameOffsetSizeType
PLAYER_DUEL_ARBITER0x00942GUID
PLAYER_FLAGS0x00961INT
PLAYER_GUILDID0x00971INT
PLAYER_GUILDRANK0x00981INT
PLAYER_FIELD_BYTES0x00991BYTES
PLAYER_BYTES_20x009a1BYTES
PLAYER_BYTES_30x009b1BYTES
PLAYER_DUEL_TEAM0x009c1INT
PLAYER_GUILD_TIMESTAMP0x009d1INT
PLAYER_QUEST_LOG_1_10x009e1INT
PLAYER_QUEST_LOG_1_20x009f1INT
PLAYER_QUEST_LOG_1_30x00a02TWO_SHORT
PLAYER_QUEST_LOG_1_40x00a21INT
PLAYER_QUEST_LOG_2_10x00a31INT
PLAYER_QUEST_LOG_2_20x00a41INT
PLAYER_QUEST_LOG_2_30x00a52TWO_SHORT
PLAYER_QUEST_LOG_2_50x00a71INT
PLAYER_QUEST_LOG_3_10x00a81INT
PLAYER_QUEST_LOG_3_20x00a91INT
PLAYER_QUEST_LOG_3_30x00aa2TWO_SHORT
PLAYER_QUEST_LOG_3_50x00ac1INT
PLAYER_QUEST_LOG_4_10x00ad1INT
PLAYER_QUEST_LOG_4_20x00ae1INT
PLAYER_QUEST_LOG_4_30x00af2TWO_SHORT
PLAYER_QUEST_LOG_4_50x00b11INT
PLAYER_QUEST_LOG_5_10x00b21INT
PLAYER_QUEST_LOG_5_20x00b31INT
PLAYER_QUEST_LOG_5_30x00b42TWO_SHORT
PLAYER_QUEST_LOG_5_50x00b61INT
PLAYER_QUEST_LOG_6_10x00b71INT
PLAYER_QUEST_LOG_6_20x00b81INT
PLAYER_QUEST_LOG_6_30x00b92TWO_SHORT
PLAYER_QUEST_LOG_6_50x00bb1INT
PLAYER_QUEST_LOG_7_10x00bc1INT
PLAYER_QUEST_LOG_7_20x00bd1INT
PLAYER_QUEST_LOG_7_30x00be2TWO_SHORT
PLAYER_QUEST_LOG_7_50x00c01INT
PLAYER_QUEST_LOG_8_10x00c11INT
PLAYER_QUEST_LOG_8_20x00c21INT
PLAYER_QUEST_LOG_8_30x00c32TWO_SHORT
PLAYER_QUEST_LOG_8_50x00c51INT
PLAYER_QUEST_LOG_9_10x00c61INT
PLAYER_QUEST_LOG_9_20x00c71INT
PLAYER_QUEST_LOG_9_30x00c82TWO_SHORT
PLAYER_QUEST_LOG_9_50x00ca1INT
PLAYER_QUEST_LOG_10_10x00cb1INT
PLAYER_QUEST_LOG_10_20x00cc1INT
PLAYER_QUEST_LOG_10_30x00cd2TWO_SHORT
PLAYER_QUEST_LOG_10_50x00cf1INT
PLAYER_QUEST_LOG_11_10x00d01INT
PLAYER_QUEST_LOG_11_20x00d11INT
PLAYER_QUEST_LOG_11_30x00d22TWO_SHORT
PLAYER_QUEST_LOG_11_50x00d41INT
PLAYER_QUEST_LOG_12_10x00d51INT
PLAYER_QUEST_LOG_12_20x00d61INT
PLAYER_QUEST_LOG_12_30x00d72TWO_SHORT
PLAYER_QUEST_LOG_12_50x00d91INT
PLAYER_QUEST_LOG_13_10x00da1INT
PLAYER_QUEST_LOG_13_20x00db1INT
PLAYER_QUEST_LOG_13_30x00dc2TWO_SHORT
PLAYER_QUEST_LOG_13_50x00de1INT
PLAYER_QUEST_LOG_14_10x00df1INT
PLAYER_QUEST_LOG_14_20x00e01INT
PLAYER_QUEST_LOG_14_30x00e12TWO_SHORT
PLAYER_QUEST_LOG_14_50x00e31INT
PLAYER_QUEST_LOG_15_10x00e41INT
PLAYER_QUEST_LOG_15_20x00e51INT
PLAYER_QUEST_LOG_15_30x00e62TWO_SHORT
PLAYER_QUEST_LOG_15_50x00e81INT
PLAYER_QUEST_LOG_16_10x00e91INT
PLAYER_QUEST_LOG_16_20x00ea1INT
PLAYER_QUEST_LOG_16_30x00eb2TWO_SHORT
PLAYER_QUEST_LOG_16_50x00ed1INT
PLAYER_QUEST_LOG_17_10x00ee1INT
PLAYER_QUEST_LOG_17_20x00ef1INT
PLAYER_QUEST_LOG_17_30x00f02TWO_SHORT
PLAYER_QUEST_LOG_17_50x00f21INT
PLAYER_QUEST_LOG_18_10x00f31INT
PLAYER_QUEST_LOG_18_20x00f41INT
PLAYER_QUEST_LOG_18_30x00f52TWO_SHORT
PLAYER_QUEST_LOG_18_50x00f71INT
PLAYER_QUEST_LOG_19_10x00f81INT
PLAYER_QUEST_LOG_19_20x00f91INT
PLAYER_QUEST_LOG_19_30x00fa2TWO_SHORT
PLAYER_QUEST_LOG_19_50x00fc1INT
PLAYER_QUEST_LOG_20_10x00fd1INT
PLAYER_QUEST_LOG_20_20x00fe1INT
PLAYER_QUEST_LOG_20_30x00ff2TWO_SHORT
PLAYER_QUEST_LOG_20_50x01011INT
PLAYER_QUEST_LOG_21_10x01021INT
PLAYER_QUEST_LOG_21_20x01031INT
PLAYER_QUEST_LOG_21_30x01042TWO_SHORT
PLAYER_QUEST_LOG_21_50x01061INT
PLAYER_QUEST_LOG_22_10x01071INT
PLAYER_QUEST_LOG_22_20x01081INT
PLAYER_QUEST_LOG_22_30x01092TWO_SHORT
PLAYER_QUEST_LOG_22_50x010b1INT
PLAYER_QUEST_LOG_23_10x010c1INT
PLAYER_QUEST_LOG_23_20x010d1INT
PLAYER_QUEST_LOG_23_30x010e2TWO_SHORT
PLAYER_QUEST_LOG_23_50x01101INT
PLAYER_QUEST_LOG_24_10x01111INT
PLAYER_QUEST_LOG_24_20x01121INT
PLAYER_QUEST_LOG_24_30x01132TWO_SHORT
PLAYER_QUEST_LOG_24_50x01151INT
PLAYER_QUEST_LOG_25_10x01161INT
PLAYER_QUEST_LOG_25_20x01171INT
PLAYER_QUEST_LOG_25_30x01182TWO_SHORT
PLAYER_QUEST_LOG_25_50x011a1INT
PLAYER_VISIBLE_ITEM0x011b38CUSTOM
PLAYER_CHOSEN_TITLE0x01411INT
PLAYER_FAKE_INEBRIATION0x01421INT
PLAYER_FIELD_INV0x0144300CUSTOM
PLAYER_FARSIGHT0x02702GUID
PLAYER_KNOWN_TITLES0x02722GUID
PLAYER_KNOWN_TITLES10x02742GUID
PLAYER_KNOWN_TITLES20x02762GUID
PLAYER_KNOWN_CURRENCIES0x02782GUID
PLAYER_XP0x027a1INT
PLAYER_NEXT_LEVEL_XP0x027b1INT
PLAYER_SKILL_INFO0x027c384CUSTOM
PLAYER_CHARACTER_POINTS10x03fc1INT
PLAYER_CHARACTER_POINTS20x03fd1INT
PLAYER_TRACK_CREATURES0x03fe1INT
PLAYER_TRACK_RESOURCES0x03ff1INT
PLAYER_BLOCK_PERCENTAGE0x04001FLOAT
PLAYER_DODGE_PERCENTAGE0x04011FLOAT
PLAYER_PARRY_PERCENTAGE0x04021FLOAT
PLAYER_EXPERTISE0x04031INT
PLAYER_OFFHAND_EXPERTISE0x04041INT
PLAYER_CRIT_PERCENTAGE0x04051FLOAT
PLAYER_RANGED_CRIT_PERCENTAGE0x04061FLOAT
PLAYER_OFFHAND_CRIT_PERCENTAGE0x04071FLOAT
PLAYER_SPELL_CRIT_PERCENTAGE10x04087FLOAT
PLAYER_SHIELD_BLOCK0x040f1INT
PLAYER_SHIELD_BLOCK_CRIT_PERCENTAGE0x04101FLOAT
PLAYER_EXPLORED_ZONES_10x0411128BYTES
PLAYER_REST_STATE_EXPERIENCE0x04911INT
PLAYER_COINAGE0x04921INT
PLAYER_MOD_DAMAGE_DONE_POS0x04937INT
PLAYER_MOD_DAMAGE_DONE_NEG0x049a7INT
PLAYER_MOD_DAMAGE_DONE_PCT0x04a17INT
PLAYER_MOD_HEALING_DONE_POS0x04a81INT
PLAYER_MOD_HEALING_PCT0x04a91FLOAT
PLAYER_MOD_HEALING_DONE_PCT0x04aa1FLOAT
PLAYER_MOD_TARGET_RESISTANCE0x04ab1INT
PLAYER_MOD_TARGET_PHYSICAL_RESISTANCE0x04ac1INT
PLAYER_FEATURES0x04ad1BYTES
PLAYER_AMMO_ID0x04ae1INT
PLAYER_SELF_RES_SPELL0x04af1INT
PLAYER_PVP_MEDALS0x04b01INT
PLAYER_BUYBACK_PRICE_10x04b112INT
PLAYER_BUYBACK_TIMESTAMP_10x04bd12INT
PLAYER_KILLS0x04c91TWO_SHORT
PLAYER_TODAY_CONTRIBUTION0x04ca1INT
PLAYER_YESTERDAY_CONTRIBUTION0x04cb1INT
PLAYER_LIFETIME_HONORBALE_KILLS0x04cc1INT
PLAYER_BYTES2_GLOW0x04cd1BYTES
PLAYER_WATCHED_FACTION_INDEX0x04ce1INT
PLAYER_COMBAT_RATING_10x04cf25INT
PLAYER_ARENA_TEAM_INFO_1_10x04e821INT
PLAYER_HONOR_CURRENCY0x04fd1INT
PLAYER_ARENA_CURRENCY0x04fe1INT
PLAYER_MAX_LEVEL0x04ff1INT
PLAYER_DAILY_QUESTS_10x050025INT
PLAYER_RUNE_REGEN_10x05194FLOAT
PLAYER_NO_REAGENT_COST_10x051d3INT
PLAYER_GLYPH_SLOTS_10x05206INT
PLAYER_GLYPHS_10x05266INT
PLAYER_GLYPHS_ENABLED0x052c1INT
PLAYER_PET_SPELL_POWER0x052d1INT

Fields that all gameobjects have:

NameOffsetSizeType
GAMEOBJECT_DISPLAYID0x00081INT
GAMEOBJECT_FLAGS0x00091INT
GAMEOBJECT_PARENTROTATION0x000a4FLOAT
GAMEOBJECT_DYNAMIC0x000e1TWO_SHORT
GAMEOBJECT_FACTION0x000f1INT
GAMEOBJECT_LEVEL0x00101INT
GAMEOBJECT_BYTES_10x00111BYTES

Fields that all dynamicobjects have:

NameOffsetSizeType
DYNAMICOBJECT_CASTER0x00062GUID
DYNAMICOBJECT_BYTES0x00081BYTES
DYNAMICOBJECT_SPELLID0x00091INT
DYNAMICOBJECT_RADIUS0x000a1FLOAT
DYNAMICOBJECT_CASTTIME0x000b1INT

Fields that all corpses have:

NameOffsetSizeType
CORPSE_OWNER0x00062GUID
CORPSE_PARTY0x00082GUID
CORPSE_DISPLAY_ID0x000a1INT
CORPSE_ITEM0x000b19INT
CORPSE_BYTES_10x001e1BYTES
CORPSE_BYTES_20x001f1BYTES
CORPSE_GUILD0x00201INT
CORPSE_FLAGS0x00211INT
CORPSE_DYNAMIC_FLAGS0x00221INT

VariableItemRandomProperty

This type is simply a u32 followed by another u32 if the first one was not equal to 0. VariableItemRandomProperty is only for TBC and Wrath.

The first u32 is the item_random_property_id, the second is the item_suffix_factor.

u48

A u32 followed by a u16. This is a workaround to MovementFlags for 3.3.5 requiring control flow from both a u32 and a separate u16, which complicates the implementation.

The lower 32 bits (4 bytes) are sent first as little endian, then followed by the upper 16 bits (2 bytes) as little endian.

Introduction

The wowm data contained in this repository can be read in a structured manner from the intermediate_representation.json file. It uses the JSON Typedef schema in the intermediate_representation_schema.json file.

jtd-codegen can be used to automatically create language bindings in some modern languages, including TypeScript and Python.

It is highly recommended to automatically generate bindings rather than manually parsing the JSON.

If JSON Typedef doesn't work for you for whatever reason, it is also possible to deduce a JSON Schema of the intermediate_representation.json file and autogenerate bindings from that. They will likely be of much lower quality though.

After generating the bindings, take a look at Implementing login messages.

Tests

Some containers have associated tests that consist of binary data as well as what is expected to be parsed. Creating simple tests that read the raw bytes, asserts that the read went successfully, writing the bytes back and asserting that raw bytes match, as well as testing that the size is calculated correctly will save you a lot of effort.

Design of types

Before writing the auto generator it's a good idea to know what you actually want to generate. For this reason I suggest manually writing the implementations for a few select types, and using it to have a client connect. This will allow you to detect things that need to be changed as early as possible as well as having executable code that can be used to test your auto generated code later, even in interpreted languages.

Implementing login messages

The login message data can be found in the intermediate_representation.json file. The intermediate_representation_schema.json contains a JSON type def schema for the intermediate_representation.json. The json-typedef-codegen program can be used to generate bindings for many popular languages.

The wow_messages_python repository contains the Python code used to generate the Python message library. It can be used as inspiration for your own implementation. The generator directory contains the actual code generation, and the wow_login_messages directory contains the generated library.

Python code will be shown in this document to provide examples of how libraries could be implemented. If you want to use the Python library then just bypass this and use the library directly instead. A C# library is available here.

Message Layout

All interactions start with the client sending a message, then reading the reply from the server.

All login messages start with an opcode field field that specifies the message contents. This is the only thing the messages have in common.

The only way to know how much data to expect in a message is by a combination of the protocol version sent in the very first message by the client, CMD_AUTH_LOGON_CHALLENGE_Client, and the opcode.

Take a look at the wiki page on login in order to get an understanding for what is going to happen.

Types used for login messages

Login messages use the following types, including enums, flags, and structs:

TypePurposeC Name
u8Unsigned 8 bit integer. Min value 0, max value 256.unsigned char
u16Unsigned 16 bit integer. Min value 0, max value 65536.unsigned short
u32Unsigned 32 bit integer. Min value 0, max value 4294967296.unsigned int
u64Unsigned 64 bit integer. Min value 0, max value 18446744073709551616.unsigned long long
i32Unsigned 32 bit integer. Min value -2147483648, max value 4294967296.signed int
BoolUnsigned 1 bit integer. 0 means false and all other values mean true.unsigned char
CStringUTF-8 string type that is terminated by a zero byte value.char*
StringUTF-8 string type of exactly length len.unsigned char + char*
Populationf32 with the special behavior that a value of 200 always means GREEN_RECOMMENDED, 400 always means RED_FULL, and 600 always means BLUE_RECOMMENDED.float
IpAddressAlias for big endian u32.unsigned int

Library layout

Consider what you want the layout of the library to look like regarding files and directories.

There are several different protocol versions, objects that are valid for more than one version, as well as objects that are valid for all versions. Consider if your programming language benefits from having a type that is identical, but for a different version actually be the same type.

For the Python library, I chose to have a Python file for each version, as well as one for all. Objects that are valid for more than one version are reexported from the lowest version.

The folder layout for the Python library is as follows:

├── README.md
└── wow_login_messages
    ├── all.py
    ├── __init__.py
    ├── opcodes.py
    ├── util.py
    ├── version2.py
    ├── version3.py
    ├── version5.py
    ├── version6.py
    ├── version7.py
    └── version8.py

The __init__.py file is what is imported when just importing wow_login_messages. The opcodes.py file just contains the opcode values for the different messages. The util.py file contains utility functions intended to be used by the user of the library, such as a function that reads the opcode and automatically reads the remaining fields and returns the message as a Python class.

Enums

Enums can only have a single enumerator value, and it can not have any other values than those specifically described. Consider how you would implement and use the ProtocolVersion enum in your programming language.

Newer Python versions have the enum module, which provide an easy way of creating enum types.

So the ProtocolVersion enum in Python looks like:

import enum


class ProtocolVersion(enum.Enum):
    TWO = 2
    THREE = 3
    FIVE = 5
    SIX = 6
    SEVEN = 7
    EIGHT = 8


protocol_version = ProtocolVersion(2)
value = protocol_version.value

This simple snippet allows construction of ProtocolVersion types through ProtocolVersion(2) and getting the value of an enumerator through protocol_version.value.

I have chosen not to include a read or write function on the enum, since this is handled by the object that needs to read/write the enum.

The python library places all imports at the top of the file, and all objects for the same version are in the same file, so it is not necessary to import enum for every enum.

Flags

Flags are like enums, but can have multiple enumerator values at the same time, or none of them. Consider how you would implement and use the RealmFlag flag in your programming language.

The enum module used for enums can also be used for flags.

So the RealmFlag enum in Python looks like:

import enum


class RealmFlag(enum.Flag):
    NONE = 0
    INVALID = 1
    OFFLINE = 2
    FORCE_BLUE_RECOMMENDED = 32
    FORCE_GREEN_RECOMMENDED = 64
    FORCE_RED_FULL = 128


realm_flag = RealmFlag(32) | RealmFlag(2)

assert realm_flag.OFFLINE
assert realm_flag.FORCE_BLUE_RECOMMENDED

value = realm_flag.value

This snippet allows the construction of RealmFlag through RealmFlag(32), the bitwise or through the | operator and getting the value through realm_flag.value.

Flags also do not handle reading and writing, that is handled by the objects containing them, although it could be different in your programming language.

CMD_AUTH_LOGON_CHALLENGE_Client

This is the first message sent by the client. It is sent automatically upon connecting.

It is the only message to have the String type, which is a single length byte (u8) followed by as many bytes as the length byte says of string. All other messages use the CString type, which is an arbitrary amount of bytes terminated by a 0 byte.

It is the only message that contains the IpAddress type alias. This is not a "real" type, but simply a u32 that should be interpreted as an IP address if the programming language has built in ways of dealing with IP addresses.

It contains the ProtocolVersion enum, which determines which version of messages is used.

It contains the Version struct.

For writing a server, it requires being able to be read, and for clients it requires being able to be written. When sent by clients, it has to calculate how large the actual message being sent is, and put it in the size field.

In Python, the definition would be:

import dataclasses


@dataclasses.dataclass
class CMD_AUTH_LOGON_CHALLENGE_Client:
    protocol_version: ProtocolVersion
    version: Version
    platform: Platform
    os: Os
    locale: Locale
    utc_timezone_offset: int
    client_ip_address: int
    account_name: str

The types after the colon (:) are type hints. The @dataclasses.dataclass attribute adds some niceties like automatic constructors.

All containers have read, write and _size methods. The underscore in _size is a Python way of signalling that the method should be private.

The read function looks like

@staticmethod
async def read(reader: asyncio.StreamReader):
    # protocol_version: DataTypeEnum(data_type_tag='Enum', content=DataTypeEnumContent(integer_type=<IntegerType.U8: 'U8'>, type_name='ProtocolVersion', upcast=False))
    protocol_version = ProtocolVersion(int.from_bytes(await reader.readexactly(1), 'little'))

    # size: DataTypeInteger(data_type_tag='Integer', content=<IntegerType.U16: 'U16'>)
    _size = int.from_bytes(await reader.readexactly(2), 'little')

    # game_name: DataTypeInteger(data_type_tag='Integer', content=<IntegerType.U32: 'U32'>)
    _game_name = int.from_bytes(await reader.readexactly(4), 'little')

    # version: DataTypeStruct(data_type_tag='Struct', content=DataTypeStructContent(sizes=Sizes(constant_sized=True, maximum_size=5, minimum_size=5), type_name='Version'))
    version = await Version.read(reader)

    # platform: DataTypeEnum(data_type_tag='Enum', content=DataTypeEnumContent(integer_type=<IntegerType.U32: 'U32'>, type_name='Platform', upcast=False))
    platform = Platform(int.from_bytes(await reader.readexactly(4), 'little'))

    # os: DataTypeEnum(data_type_tag='Enum', content=DataTypeEnumContent(integer_type=<IntegerType.U32: 'U32'>, type_name='Os', upcast=False))
    os = Os(int.from_bytes(await reader.readexactly(4), 'little'))

    # locale: DataTypeEnum(data_type_tag='Enum', content=DataTypeEnumContent(integer_type=<IntegerType.U32: 'U32'>, type_name='Locale', upcast=False))
    locale = Locale(int.from_bytes(await reader.readexactly(4), 'little'))

    # utc_timezone_offset: DataTypeInteger(data_type_tag='Integer', content=<IntegerType.U32: 'U32'>)
    utc_timezone_offset = int.from_bytes(await reader.readexactly(4), 'little')

    # client_ip_address: DataTypeIPAddress(data_type_tag='IpAddress')
    client_ip_address = int.from_bytes(await reader.readexactly(4), 'big')

    # account_name: DataTypeString(data_type_tag='String')
    account_name = int.from_bytes(await reader.readexactly(1), 'little')
    account_name = (await reader.readexactly(account_name)).decode('utf-8')

    return CMD_AUTH_LOGON_CHALLENGE_Client(
        protocol_version,
        version,
        platform,
        os,
        locale,
        utc_timezone_offset,
        client_ip_address,
        account_name,
    )

It reads every member in sequence before returning an object with all the fields. The comments print the name and type of variables, in order to make debugging easier.

This showcases how enums are ready by reading an appropriately sized integer and then passing it into the enum constructor.

The struct Version is read by calling a read function defined on that object.

The IpAddress is simply read as an integer.

Python allows changing the type of a variable, so the account_name variable is first used for the length, and then for the contents.

_size is not included in the object, since manually modifying the size is error prone and tedious. It is instead calculated automatically in write. _game_name is not included in the object since it has a constant value.

The write function looks like

def write(self, writer: asyncio.StreamWriter):
    fmt = '<B'  # opcode
    data = [0]

    # protocol_version: DataTypeEnum(data_type_tag='Enum', content=DataTypeEnumContent(integer_type=<IntegerType.U8: 'U8'>, type_name='ProtocolVersion', upcast=False))
    fmt += 'B'
    data.append(self.protocol_version.value)

    # size: DataTypeInteger(data_type_tag='Integer', content=<IntegerType.U16: 'U16'>)
    fmt += 'H'
    data.append(self.size())

    # game_name: DataTypeInteger(data_type_tag='Integer', content=<IntegerType.U32: 'U32'>)
    fmt += 'I'
    data.append(5730135)

    # version: DataTypeStruct(data_type_tag='Struct', content=DataTypeStructContent(sizes=Sizes(constant_sized=True, maximum_size=5, minimum_size=5), type_name='Version'))
    fmt, data = self.version.write(fmt, data)

    # platform: DataTypeEnum(data_type_tag='Enum', content=DataTypeEnumContent(integer_type=<IntegerType.U32: 'U32'>, type_name='Platform', upcast=False))
    fmt += 'I'
    data.append(self.platform.value)

    # os: DataTypeEnum(data_type_tag='Enum', content=DataTypeEnumContent(integer_type=<IntegerType.U32: 'U32'>, type_name='Os', upcast=False))
    fmt += 'I'
    data.append(self.os.value)

    # locale: DataTypeEnum(data_type_tag='Enum', content=DataTypeEnumContent(integer_type=<IntegerType.U32: 'U32'>, type_name='Locale', upcast=False))
    fmt += 'I'
    data.append(self.locale.value)

    # utc_timezone_offset: DataTypeInteger(data_type_tag='Integer', content=<IntegerType.U32: 'U32'>)
    fmt += 'I'
    data.append(self.utc_timezone_offset)

    # client_ip_address: DataTypeIPAddress(data_type_tag='IpAddress')
    fmt += 'I'
    data.append(self.client_ip_address)

    # account_name: DataTypeString(data_type_tag='String')
    fmt += f'B{len(self.account_name)}s'
    data.append(len(self.account_name))
    data.append(self.account_name.encode('utf-8'))

    data = struct.pack(fmt, *data)
    writer.write(data)

The complexity of this is because of how Pythons struct module for writing values to bytes works. The line with data = struct.pack(fmt, *data) writes the data to a byte array that is then written to the stream on the next line. Hopefully your programming language has a more sane way of writing data to a stream.

The final part is the size calculations, it looks like

def size(self):
    size = 0

    # protocol_version: DataTypeEnum(data_type_tag='Enum', content=DataTypeEnumContent(integer_type=<IntegerType.U8: 'U8'>, type_name='ProtocolVersion', upcast=False))
    size += 1

    # size: DataTypeInteger(data_type_tag='Integer', content=<IntegerType.U16: 'U16'>)
    size += 2

    # game_name: DataTypeInteger(data_type_tag='Integer', content=<IntegerType.U32: 'U32'>)
    size += 4

    # version: DataTypeStruct(data_type_tag='Struct', content=DataTypeStructContent(sizes=Sizes(constant_sized=True, maximum_size=5, minimum_size=5), type_name='Version'))
    size += 5

    # platform: DataTypeEnum(data_type_tag='Enum', content=DataTypeEnumContent(integer_type=<IntegerType.U32: 'U32'>, type_name='Platform', upcast=False))
    size += 4

    # os: DataTypeEnum(data_type_tag='Enum', content=DataTypeEnumContent(integer_type=<IntegerType.U32: 'U32'>, type_name='Os', upcast=False))
    size += 4

    # locale: DataTypeEnum(data_type_tag='Enum', content=DataTypeEnumContent(integer_type=<IntegerType.U32: 'U32'>, type_name='Locale', upcast=False))
    size += 4

    # utc_timezone_offset: DataTypeInteger(data_type_tag='Integer', content=<IntegerType.U32: 'U32'>)
    size += 4

    # client_ip_address: DataTypeIPAddress(data_type_tag='IpAddress')
    size += 4

    # account_name: DataTypeString(data_type_tag='String')
    size += len(self.account_name)

    return size - 3

This sums up the sizes of all members, and then subtracts the fields that come before the size field.

CMD_AUTH_LOGON_CHALLENGE_Server

The servers reply to the client has the same opcode as the initial message, and it provides the first example of a message that has control flow (if statements).

@dataclasses.dataclass
class CMD_AUTH_LOGON_CHALLENGE_Server:
    result: LoginResult
    server_public_key: typing.Optional[typing.List[int]]
    generator: typing.Optional[typing.List[int]]
    large_safe_prime: typing.Optional[typing.List[int]]
    salt: typing.Optional[typing.List[int]]
    crc_salt: typing.Optional[typing.List[int]]

The Python version solves this issue by making every variable that is not certain to be in the message Optional. This type hint means that the variables can also be None, and have no value of their actual type.

The python code for reading reads the result and then branches based on the value.

    @staticmethod


async def read(reader: asyncio.StreamReader):
    server_public_key = None
    generator_length = None
    generator = None
    large_safe_prime_length = None
    large_safe_prime = None
    salt = None
    crc_salt = None

    # protocol_version: DataTypeInteger(data_type_tag='Integer', content=<IntegerType.U8: 'U8'>)
    _protocol_version = int.from_bytes(await reader.readexactly(1), "little")

    # result: DataTypeEnum(data_type_tag='Enum', content=DataTypeEnumContent(integer_type=<IntegerType.U8: 'U8'>, type_name='LoginResult', upcast=False))
    result = LoginResult(int.from_bytes(await reader.readexactly(1), "little"))

    if result == LoginResult.SUCCESS:
        # server_public_key: DataTypeArray(data_type_tag='Array', content=Array(inner_type=ArrayTypeInteger(array_type_tag='Integer', inner_type=<IntegerType.U8: 'U8'>), size=ArraySizeFixed(array_size_tag='Fixed', size='32')))
        server_public_key = []
        for _ in range(0, 32):
            server_public_key.append(
                int.from_bytes(await reader.readexactly(1), "little")
            )

        # generator_length: DataTypeInteger(data_type_tag='Integer', content=<IntegerType.U8: 'U8'>)
        generator_length = int.from_bytes(await reader.readexactly(1), "little")

        # generator: DataTypeArray(data_type_tag='Array', content=Array(inner_type=ArrayTypeInteger(array_type_tag='Integer', inner_type=<IntegerType.U8: 'U8'>), size=ArraySizeVariable(array_size_tag='Variable', size='generator_length')))
        generator = []
        for _ in range(0, generator_length):
            generator.append(int.from_bytes(await reader.readexactly(1), "little"))

        # large_safe_prime_length: DataTypeInteger(data_type_tag='Integer', content=<IntegerType.U8: 'U8'>)
        large_safe_prime_length = int.from_bytes(
            await reader.readexactly(1), "little"
        )

        # large_safe_prime: DataTypeArray(data_type_tag='Array', content=Array(inner_type=ArrayTypeInteger(array_type_tag='Integer', inner_type=<IntegerType.U8: 'U8'>), size=ArraySizeVariable(array_size_tag='Variable', size='large_safe_prime_length')))
        large_safe_prime = []
        for _ in range(0, large_safe_prime_length):
            large_safe_prime.append(
                int.from_bytes(await reader.readexactly(1), "little")
            )

        # salt: DataTypeArray(data_type_tag='Array', content=Array(inner_type=ArrayTypeInteger(array_type_tag='Integer', inner_type=<IntegerType.U8: 'U8'>), size=ArraySizeFixed(array_size_tag='Fixed', size='32')))
        salt = []
        for _ in range(0, 32):
            salt.append(int.from_bytes(await reader.readexactly(1), "little"))

        # crc_salt: DataTypeArray(data_type_tag='Array', content=Array(inner_type=ArrayTypeInteger(array_type_tag='Integer', inner_type=<IntegerType.U8: 'U8'>), size=ArraySizeFixed(array_size_tag='Fixed', size='16')))
        crc_salt = []
        for _ in range(0, 16):
            crc_salt.append(int.from_bytes(await reader.readexactly(1), "little"))

    return CMD_AUTH_LOGON_CHALLENGE_Server(
        result,
        server_public_key,
        generator,
        large_safe_prime,
        salt,
        crc_salt,
    )

CMD_AUTH_LOGON_PROOF_Client

This message is much like the others, but it contains an array of structs.

CMD_REALM_LIST_Client

This message is not empty, but has a padding variable that should always be a constant value, so it becomes empty if constant values are removed.

CMD_XFER_ACCEPT

This message has an empty body.

CMD_REALM_LIST_Server

This message has a bunch of padding and an array of Realm structs, as well as having a size field.

Realm

This struct has several CString variables, which are read by reading until finding a 0 byte.

It also has the Population alias, which can just be substituted for a 4 byte floating point value.

Version 8 additionally has an if statement that uses a flag instead of an enum.

Implementing world messages

If you have autogenerated the login messages you will have a reasonable base for proceeding with the world messages, however this is not a requirement.

The world message data can be found in the intermediate_representation.json file. The intermediate_representation_schema.json contains a JSON type def schema for the intermediate_representation.json. The json-typedef-codegen program can be used to generate bindings for many popular languages.

The wow_messages_python repository contains the Python code used to generate the Python message library. It can be used as inspiration for your own implementation. The generator directory contains the actual code generation, and the wow_world_messages directory contains the generated library.

Python code will be shown in this document to provide examples of how libraries could be implemented. If you want to use the Python library then just bypass this and use the library directly instead. A C# library is available here.

Message Layout

For Vanilla and TBC, all messages start with a 2 byte big endian size field.

For Wrath, all messages from the client (CMSG) start with a 2 byte big endian size field, but at some unknown point in Wrath the possibility of having SMSG with 3 byte opcode was added. If the most significant (first) byte of the size field has the most significant bit set (that is, first_size_byte & 0x80 != 0) the size field is 3 bytes instead of 2. When sending messages from the server you must handle this special case for messages that are larger than 0x7FF bytes.

For all versions, messages sent from the server (SMSG) have a 2 byte opcode field and messages sent from the client (CMSG) have a 4 byte opcode field.

For all versions, the size field contains the size of the opcode field and the size of the remaining message body.

So in the case of the CMSG_PLAYER_LOGIN message:

test CMSG_PLAYER_LOGIN {
    guid = 0xDEADBEEF;
} [
    0x00, 0x0C, /* size */
    0x3D, 0x00, 0x00, 0x00, /* opcode */
    0xEF, 0xBE, 0xAD, 0xDE, 0x00, 0x00, 0x00, 0x00, /* guid */
]

Has a single Guid field (of 8 bytes), but the reported size is 0x0C/12 because it includes the 4 byte opcode field.

Encryption

SMSG_AUTH_CHALLENGE and CMSG_AUTH_RESPONSE are sent in plain text and used to negotiate a simple header encryption based on the session key. It is described in detail for 1.12 in this blog post The wow_srp library written in Rust has implementations for Vanilla (1.12), TBC (2.4.3), and Wrath (3.3.5).

CMSG_PING and SMSG_PONG can also be sent unencrypted if the client has not yet received a reply to CMSG_AUTH_SESSION. These four messages are the only messages that can be sent unencrypted.

Types used for login messages

World messages use the following types, including enums, flags, and structs:

TypePurposeC Name
u8Unsigned 8 bit integer. Min value 0, max value 256.unsigned char
u16Unsigned 16 bit integer. Min value 0, max value 65536.unsigned short
u32Unsigned 32 bit integer. Min value 0, max value 4294967296.unsigned int
u64Unsigned 64 bit integer. Min value 0, max value 18446744073709551616.unsigned long long
i32Unsigned 32 bit integer. Min value -2147483648, max value 4294967296.signed int
BoolUnsigned 1 bit integer. 0 means false and all other values mean true.unsigned char
Bool32Unsigned 4 bit integer. 0 means false and all other values mean true.unsigned int
PackedGuidGuid sent in the "packed" format. See PackedGuid.-
GuidUnsigned 8 bit integer. Can be replaced with a u64.unsigned long long
NamedGuidA Guid (u64) followed by a CString if the value of the Guid is not 0.-
DateTimeu32 in a special format. See DateTime.unsigned int
f32Floating point value of 4 bytes.f32
CStringUTF-8 string type that is terminated by a zero byte value.char*
SizedCStringA u32 field that determines the size of the string followed by a UTF-8 string type that is terminated by a zero byte value.unsigned int + char*
UpdateMaskUpdate values sent in a relatively complex format. See UpdateMask.-
MonsterMoveSplinesArray of positions. See MonsterMoveSpline.-
AuraMaskAura values sent using a mask. See Masks.-
AchievementDoneArrayArray that terminates on a sentinel value. See AchievementDoneArray-
AchievementInProgressArrayArray that terminates on a sentinel value. See AchievementInProgressArray-
EnchantMaskEnchant values sent using a mask. See EnchantMasks.-
InspectTalentGearMaskInspectTalentGear values sent using a mask. See Masks.-
GoldAlias for u32.unsigned int
LevelAlias for u8.unsigned char
Level16Alias for u16.unsigned short
Level32Alias for u32.unsigned int
VariableItemRandomPropertyA u32 followed by another u32 if the first value is not equal to 0.-
AddonArrayArray of Addons for TBC and Wrath that rely on externally knowing the amount of array members. See AddonArray.-
SecondsAlias for u32.unsigned int
MillisecondsAlias for u32.unsigned int
SpellAlias for u32 that represents a spell.unsigned int
Spell16Alias for u16 that represents a spell.unsigned short
ItemAlias for u32 that represents an item entry.unsigned int
CacheMaskClient info sent using a mask. See CacheMask.-

Library layout

Consider what you want the layout of the library to look like regarding files and directories.

You will likely want to limit yourself to a limited set of client versions such as Vanilla (1.12), TBC (2.4.3), and Wrath (3.3.5).

The exact layout of your library will depend on the scope. For the Python library I decided to have a single wow_world_messages package with a module each for Vanilla, TBC, and Wrath.

This is the layout of the Python library:

├── README.md
└── wow_world_messages
    ├── __init__.py
    ├── wrath.py
    ├── tbc.py
    ├── util.py
    └── vanilla.py

AreaFlags

Client Version 1.12

Used in AreaTable.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/area_flags.wowm:2.

flag AreaFlags : u16 {
    SNOW = 0x01;
    UNK = 0x02;
    DEVELOPMENT = 0x04;
    UNK2 = 0x08;
    UNK3 = 0x10;
    CITY_SLAVE = 0x20;
    CITY_ALLOW_DUELS = 0x40;
    UNK4 = 0x80;
    CITY = 0x100;
    TEST = 0x200;
}

Type

The basic type is u16, a 2 byte (16 bit) little endian integer.

Enumerators

EnumeratorValueComment
SNOW1 (0x01)
UNK2 (0x02)
DEVELOPMENT4 (0x04)
UNK28 (0x08)
UNK316 (0x10)
CITY_SLAVE32 (0x20)
CITY_ALLOW_DUELS64 (0x40)
UNK4128 (0x80)
CITY256 (0x100)
TEST512 (0x200)

Used in:

ArenaTeamRole

Client Version 2.4.3, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/arena/smsg_arena_team_roster.wowm:10.

enum ArenaTeamRole : u8 {
    CAPTAIN = 0;
    MEMBER = 1;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
CAPTAIN0 (0x00)
MEMBER1 (0x01)

Used in:

AttackHand

Client Version 1.12

Used in AttackAnimKits.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/attack_hand.wowm:2.

enum AttackHand : u8 {
    MAIN_HAND = 0;
    OFF_HAND = 1;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
MAIN_HAND0 (0x00)
OFF_HAND1 (0x01)

Used in:

AttributesEx1

Client Version 1.12

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/external_spell_1_12.wowm:42.

flag AttributesEx1 : u32 {
    NONE = 0x00;
    DISMISS_PET_FIRST = 0x00000001;
    USE_ALL_MANA = 0x00000002;
    IS_CHANNELED = 0x00000004;
    NO_REDIRECTION = 0x00000008;
    NO_SKILL_INCREASE = 0x00000010;
    ALLOW_WHILE_STEALTHED = 0x00000020;
    IS_SELF_CHANNELED = 0x00000040;
    NO_REFLECTION = 0x00000080;
    ONLY_PEACEFUL_TARGETS = 0x00000100;
    INITIATES_COMBAT_ENABLES_AUTO_ATTACK = 0x00000200;
    NO_THREAT = 0x00000400;
    AURA_UNIQUE = 0x00000800;
    FAILURE_BREAKS_STEALTH = 0x00001000;
    TOGGLE_FARSIGHT = 0x00002000;
    TRACK_TARGET_IN_CHANNEL = 0x00004000;
    IMMUNITY_PURGES_EFFECT = 0x00008000;
    IMMUNITY_TO_HOSTILE_AND_FRIENDLY_EFFECTS = 0x00010000;
    NO_AUTOCAST_AI = 0x00020000;
    PREVENTS_ANIM = 0x00040000;
    EXCLUDE_CASTER = 0x00080000;
    FINISHING_MOVE_DAMAGE = 0x00100000;
    THREAT_ONLY_ON_MISS = 0x00200000;
    FINISHING_MOVE_DURATION = 0x00400000;
    UNK23 = 0x00800000;
    SPECIAL_SKILLUP = 0x01000000;
    AURA_STAYS_AFTER_COMBAT = 0x02000000;
    REQUIRE_ALL_TARGETS = 0x04000000;
    DISCOUNT_POWER_ON_MISS = 0x08000000;
    NO_AURA_ICON = 0x10000000;
    NAME_IN_CHANNEL_BAR = 0x20000000;
    COMBO_ON_BLOCK = 0x40000000;
    CAST_WHEN_LEARNED = 0x80000000;
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
DISMISS_PET_FIRST1 (0x01)
USE_ALL_MANA2 (0x02)
IS_CHANNELED4 (0x04)
NO_REDIRECTION8 (0x08)
NO_SKILL_INCREASE16 (0x10)
ALLOW_WHILE_STEALTHED32 (0x20)
IS_SELF_CHANNELED64 (0x40)
NO_REFLECTION128 (0x80)
ONLY_PEACEFUL_TARGETS256 (0x100)
INITIATES_COMBAT_ENABLES_AUTO_ATTACK512 (0x200)
NO_THREAT1024 (0x400)
AURA_UNIQUE2048 (0x800)
FAILURE_BREAKS_STEALTH4096 (0x1000)
TOGGLE_FARSIGHT8192 (0x2000)
TRACK_TARGET_IN_CHANNEL16384 (0x4000)
IMMUNITY_PURGES_EFFECT32768 (0x8000)
IMMUNITY_TO_HOSTILE_AND_FRIENDLY_EFFECTS65536 (0x10000)
NO_AUTOCAST_AI131072 (0x20000)
PREVENTS_ANIM262144 (0x40000)
EXCLUDE_CASTER524288 (0x80000)
FINISHING_MOVE_DAMAGE1048576 (0x100000)
THREAT_ONLY_ON_MISS2097152 (0x200000)
FINISHING_MOVE_DURATION4194304 (0x400000)
UNK238388608 (0x800000)
SPECIAL_SKILLUP16777216 (0x1000000)
AURA_STAYS_AFTER_COMBAT33554432 (0x2000000)
REQUIRE_ALL_TARGETS67108864 (0x4000000)
DISCOUNT_POWER_ON_MISS134217728 (0x8000000)
NO_AURA_ICON268435456 (0x10000000)
NAME_IN_CHANNEL_BAR536870912 (0x20000000)
COMBO_ON_BLOCK1073741824 (0x40000000)
CAST_WHEN_LEARNED2147483648 (0x80000000)

Used in:

AttributesEx2

Client Version 1.12

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/external_spell_1_12.wowm:81.

flag AttributesEx2 : u32 {
    NONE = 0x00;
    ALLOW_DEAD_TARGET = 0x00000001;
    NO_SHAPESHIFT_UI = 0x00000002;
    IGNORE_LINE_OF_SIGHT = 0x00000004;
    ALLOW_LOW_LEVEL_BUFF = 0x00000008;
    USE_SHAPESHIFT_BAR = 0x00000010;
    AUTO_REPEAT = 0x00000020;
    CANNOT_CAST_ON_TAPPED = 0x00000040;
    DO_NOT_REPORT_SPELL_FAILURE = 0x00000080;
    INCLUDE_IN_ADVANCED_COMBAT_LOG = 0x00000100;
    ALWAYS_CAST_AS_UNIT = 0x00000200;
    SPECIAL_TAMING_FLAG = 0x00000400;
    NO_TARGET_PER_SECOND_COSTS = 0x00000800;
    CHAIN_FROM_CASTER = 0x00001000;
    ENCHANT_OWN_ITEM_ONLY = 0x00002000;
    ALLOW_WHILE_INVISIBLE = 0x00004000;
    UNK15 = 0x00008000;
    NO_ACTIVE_PETS = 0x00010000;
    DO_NOT_RESET_COMBAT_TIMERS = 0x00020000;
    REQ_DEAD_PET = 0x00040000;
    ALLOW_WHILE_NOT_SHAPESHIFTED = 0x00080000;
    INITIATE_COMBAT_POST_CAST = 0x00100000;
    FAIL_ON_ALL_TARGETS_IMMUNE = 0x00200000;
    NO_INITIAL_THREAT = 0x00400000;
    PROC_COOLDOWN_ON_FAILURE = 0x00800000;
    ITEM_CAST_WITH_OWNER_SKILL = 0x01000000;
    DONT_BLOCK_MANA_REGEN = 0x02000000;
    NO_SCHOOL_IMMUNITIES = 0x04000000;
    IGNORE_WEAPONSKILL = 0x08000000;
    NOT_AN_ACTION = 0x10000000;
    CANT_CRIT = 0x20000000;
    ACTIVE_THREAT = 0x40000000;
    RETAIN_ITEM_CAST = 0x80000000;
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
ALLOW_DEAD_TARGET1 (0x01)
NO_SHAPESHIFT_UI2 (0x02)
IGNORE_LINE_OF_SIGHT4 (0x04)
ALLOW_LOW_LEVEL_BUFF8 (0x08)
USE_SHAPESHIFT_BAR16 (0x10)
AUTO_REPEAT32 (0x20)
CANNOT_CAST_ON_TAPPED64 (0x40)
DO_NOT_REPORT_SPELL_FAILURE128 (0x80)
INCLUDE_IN_ADVANCED_COMBAT_LOG256 (0x100)
ALWAYS_CAST_AS_UNIT512 (0x200)
SPECIAL_TAMING_FLAG1024 (0x400)
NO_TARGET_PER_SECOND_COSTS2048 (0x800)
CHAIN_FROM_CASTER4096 (0x1000)
ENCHANT_OWN_ITEM_ONLY8192 (0x2000)
ALLOW_WHILE_INVISIBLE16384 (0x4000)
UNK1532768 (0x8000)
NO_ACTIVE_PETS65536 (0x10000)
DO_NOT_RESET_COMBAT_TIMERS131072 (0x20000)
REQ_DEAD_PET262144 (0x40000)
ALLOW_WHILE_NOT_SHAPESHIFTED524288 (0x80000)
INITIATE_COMBAT_POST_CAST1048576 (0x100000)
FAIL_ON_ALL_TARGETS_IMMUNE2097152 (0x200000)
NO_INITIAL_THREAT4194304 (0x400000)
PROC_COOLDOWN_ON_FAILURE8388608 (0x800000)
ITEM_CAST_WITH_OWNER_SKILL16777216 (0x1000000)
DONT_BLOCK_MANA_REGEN33554432 (0x2000000)
NO_SCHOOL_IMMUNITIES67108864 (0x4000000)
IGNORE_WEAPONSKILL134217728 (0x8000000)
NOT_AN_ACTION268435456 (0x10000000)
CANT_CRIT536870912 (0x20000000)
ACTIVE_THREAT1073741824 (0x40000000)
RETAIN_ITEM_CAST2147483648 (0x80000000)

Used in:

AttributesEx3

Client Version 1.12

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/external_spell_1_12.wowm:120.

flag AttributesEx3 : u32 {
    NONE = 0x00;
    PVP_ENABLING = 0x00000001;
    NO_PROC_EQUIP_REQUIREMENT = 0x00000002;
    NO_CASTING_BAR_TEXT = 0x00000004;
    COMPLETELY_BLOCKED = 0x00000008;
    NO_RES_TIMER = 0x00000010;
    NO_DURABILITY_LOSS = 0x00000020;
    NO_AVOIDANCE = 0x00000040;
    DOT_STACKING_RULE = 0x00000080;
    ONLY_ON_PLAYER = 0x00000100;
    NOT_A_PROC = 0x00000200;
    REQUIRES_MAIN_HAND_WEAPON = 0x00000400;
    ONLY_BATTLEGROUNDS = 0x00000800;
    ONLY_ON_GHOSTS = 0x00001000;
    HIDE_CHANNEL_BAR = 0x00002000;
    HIDE_IN_RAID_FILTER = 0x00004000;
    NORMAL_RANGED_ATTACK = 0x00008000;
    SUPPRESS_CASTER_PROCS = 0x00010000;
    SUPPRESS_TARGET_PROCS = 0x00020000;
    ALWAYS_HIT = 0x00040000;
    INSTANT_TARGET_PROCS = 0x00080000;
    ALLOW_AURA_WHILE_DEAD = 0x00100000;
    ONLY_PROC_OUTDOORS = 0x00200000;
    CASTING_CANCELS_AUTOREPEAT = 0x00400000;
    NO_DAMAGE_HISTORY = 0x00800000;
    REQUIRES_OFFHAND_WEAPON = 0x01000000;
    TREAT_AS_PERIODIC = 0x02000000;
    CAN_PROC_FROM_PROCS = 0x04000000;
    ONLY_PROC_ON_CASTER = 0x08000000;
    IGNORE_CASTER_AND_TARGET_RESTRICTIONS = 0x10000000;
    IGNORE_CASTER_MODIFIERS = 0x20000000;
    DO_NOT_DISPLAY_RANGE = 0x40000000;
    NOT_ON_AOE_IMMUNE = 0x80000000;
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
PVP_ENABLING1 (0x01)
NO_PROC_EQUIP_REQUIREMENT2 (0x02)
NO_CASTING_BAR_TEXT4 (0x04)
COMPLETELY_BLOCKED8 (0x08)
NO_RES_TIMER16 (0x10)
NO_DURABILITY_LOSS32 (0x20)
NO_AVOIDANCE64 (0x40)
DOT_STACKING_RULE128 (0x80)
ONLY_ON_PLAYER256 (0x100)
NOT_A_PROC512 (0x200)
REQUIRES_MAIN_HAND_WEAPON1024 (0x400)
ONLY_BATTLEGROUNDS2048 (0x800)
ONLY_ON_GHOSTS4096 (0x1000)
HIDE_CHANNEL_BAR8192 (0x2000)
HIDE_IN_RAID_FILTER16384 (0x4000)
NORMAL_RANGED_ATTACK32768 (0x8000)
SUPPRESS_CASTER_PROCS65536 (0x10000)
SUPPRESS_TARGET_PROCS131072 (0x20000)
ALWAYS_HIT262144 (0x40000)
INSTANT_TARGET_PROCS524288 (0x80000)
ALLOW_AURA_WHILE_DEAD1048576 (0x100000)
ONLY_PROC_OUTDOORS2097152 (0x200000)
CASTING_CANCELS_AUTOREPEAT4194304 (0x400000)
NO_DAMAGE_HISTORY8388608 (0x800000)
REQUIRES_OFFHAND_WEAPON16777216 (0x1000000)
TREAT_AS_PERIODIC33554432 (0x2000000)
CAN_PROC_FROM_PROCS67108864 (0x4000000)
ONLY_PROC_ON_CASTER134217728 (0x8000000)
IGNORE_CASTER_AND_TARGET_RESTRICTIONS268435456 (0x10000000)
IGNORE_CASTER_MODIFIERS536870912 (0x20000000)
DO_NOT_DISPLAY_RANGE1073741824 (0x40000000)
NOT_ON_AOE_IMMUNE2147483648 (0x80000000)

Used in:

AttributesEx4

Client Version 1.12

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/external_spell_1_12.wowm:159.

flag AttributesEx4 : u32 {
    NONE = 0x00;
    NO_CAST_LOG = 0x00000001;
    CLASS_TRIGGER_ONLY_ON_TARGET = 0x00000002;
    AURA_EXPIRES_OFFLINE = 0x00000004;
    NO_HELPFUL_THREAT = 0x00000008;
    NO_HARMFUL_THREAT = 0x00000010;
    ALLOW_CLIENT_TARGETING = 0x00000020;
    CANNOT_BE_STOLEN = 0x00000040;
    ALLOW_CAST_WHILE_CASTING = 0x00000080;
    IGNORE_DAMAGE_TAKEN_MODIFIERS = 0x00000100;
    COMBAT_FEEDBACK_WHEN_USABLE = 0x00000200;
    WEAPON_SPEED_COST_SCALING = 0x00000400;
    NO_PARTIAL_IMMUNITY = 0x00000800;
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
NO_CAST_LOG1 (0x01)
CLASS_TRIGGER_ONLY_ON_TARGET2 (0x02)
AURA_EXPIRES_OFFLINE4 (0x04)
NO_HELPFUL_THREAT8 (0x08)
NO_HARMFUL_THREAT16 (0x10)
ALLOW_CLIENT_TARGETING32 (0x20)
CANNOT_BE_STOLEN64 (0x40)
ALLOW_CAST_WHILE_CASTING128 (0x80)
IGNORE_DAMAGE_TAKEN_MODIFIERS256 (0x100)
COMBAT_FEEDBACK_WHEN_USABLE512 (0x200)
WEAPON_SPEED_COST_SCALING1024 (0x400)
NO_PARTIAL_IMMUNITY2048 (0x800)

Used in:

Attributes

Client Version 1.12

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/external_spell_1_12.wowm:3.

flag Attributes : u32 {
    NONE = 0x00;
    PROC_FAILURE_BURNS_CHARGE = 0x00000001;
    USES_RANGED_SLOT = 0x00000002;
    ON_NEXT_SWING_NO_DAMAGE = 0x00000004;
    NEED_EXOTIC_AMMO = 0x00000008;
    IS_ABILITY = 0x00000010;
    IS_TRADESKILL = 0x00000020;
    PASSIVE = 0x00000040;
    DO_NOT_DISPLAY = 0x00000080;
    DO_NOT_LOG = 0x00000100;
    HELD_ITEM_ONLY = 0x00000200;
    ON_NEXT_SWING = 0x00000400;
    WEARER_CASTS_PROC_TRIGGER = 0x00000800;
    DAYTIME_ONLY = 0x00001000;
    NIGHT_ONLY = 0x00002000;
    ONLY_INDOORS = 0x00004000;
    ONLY_OUTDOORS = 0x00008000;
    NOT_SHAPESHIFT = 0x00010000;
    ONLY_STEALTHED = 0x00020000;
    DO_NOT_SHEATH = 0x00040000;
    SCALES_WITH_CREATURE_LEVEL = 0x00080000;
    CANCELS_AUTO_ATTACK_COMBAT = 0x00100000;
    NO_ACTIVE_DEFENSE = 0x00200000;
    TRACK_TARGET_IN_CAST_PLAYER_ONLY = 0x00400000;
    ALLOW_CAST_WHILE_DEAD = 0x00800000;
    ALLOW_WHILE_MOUNTED = 0x01000000;
    COOLDOWN_ON_EVENT = 0x02000000;
    AURA_IS_DEBUFF = 0x04000000;
    ALLOW_WHILE_SITTING = 0x08000000;
    NOT_IN_COMBAT_ONLY_PEACEFUL = 0x10000000;
    NO_IMMUNITIES = 0x20000000;
    HEARTBEAT_RESIST = 0x40000000;
    NO_AURA_CANCEL = 0x80000000;
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
PROC_FAILURE_BURNS_CHARGE1 (0x01)
USES_RANGED_SLOT2 (0x02)
ON_NEXT_SWING_NO_DAMAGE4 (0x04)
NEED_EXOTIC_AMMO8 (0x08)
IS_ABILITY16 (0x10)
IS_TRADESKILL32 (0x20)
PASSIVE64 (0x40)
DO_NOT_DISPLAY128 (0x80)
DO_NOT_LOG256 (0x100)
HELD_ITEM_ONLY512 (0x200)
ON_NEXT_SWING1024 (0x400)
WEARER_CASTS_PROC_TRIGGER2048 (0x800)
DAYTIME_ONLY4096 (0x1000)
NIGHT_ONLY8192 (0x2000)
ONLY_INDOORS16384 (0x4000)
ONLY_OUTDOORS32768 (0x8000)
NOT_SHAPESHIFT65536 (0x10000)
ONLY_STEALTHED131072 (0x20000)
DO_NOT_SHEATH262144 (0x40000)
SCALES_WITH_CREATURE_LEVEL524288 (0x80000)
CANCELS_AUTO_ATTACK_COMBAT1048576 (0x100000)
NO_ACTIVE_DEFENSE2097152 (0x200000)
TRACK_TARGET_IN_CAST_PLAYER_ONLY4194304 (0x400000)
ALLOW_CAST_WHILE_DEAD8388608 (0x800000)
ALLOW_WHILE_MOUNTED16777216 (0x1000000)
COOLDOWN_ON_EVENT33554432 (0x2000000)
AURA_IS_DEBUFF67108864 (0x4000000)
ALLOW_WHILE_SITTING134217728 (0x8000000)
NOT_IN_COMBAT_ONLY_PEACEFUL268435456 (0x10000000)
NO_IMMUNITIES536870912 (0x20000000)
HEARTBEAT_RESIST1073741824 (0x40000000)
NO_AURA_CANCEL2147483648 (0x80000000)

Used in:

AuraMod

Client Version 1.12

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/external_spell_1_12.wowm:178.

enum AuraMod : u32 {
    NONE = 0;
    BIND_SIGHT = 1;
    MOD_POSSESS = 2;
    PERIODIC_DAMAGE = 3;
    DUMMY = 4;
    MOD_CONFUSE = 5;
    MOD_CHARM = 6;
    MOD_FEAR = 7;
    PERIODIC_HEAL = 8;
    MOD_ATTACKSPEED = 9;
    MOD_THREAT = 10;
    MOD_TAUNT = 11;
    MOD_STUN = 12;
    MOD_DAMAGE_DONE = 13;
    MOD_DAMAGE_TAKEN = 14;
    DAMAGE_SHIELD = 15;
    MOD_STEALTH = 16;
    MOD_STEALTH_DETECT = 17;
    MOD_INVISIBILITY = 18;
    MOD_INVISIBILITY_DETECTION = 19;
    OBS_MOD_HEALTH = 20;
    OBS_MOD_MANA = 21;
    MOD_RESISTANCE = 22;
    PERIODIC_TRIGGER_SPELL = 23;
    PERIODIC_ENERGIZE = 24;
    MOD_PACIFY = 25;
    MOD_ROOT = 26;
    MOD_SILENCE = 27;
    REFLECT_SPELLS = 28;
    MOD_STAT = 29;
    MOD_SKILL = 30;
    MOD_INCREASE_SPEED = 31;
    MOD_INCREASE_MOUNTED_SPEED = 32;
    MOD_DECREASE_SPEED = 33;
    MOD_INCREASE_HEALTH = 34;
    MOD_INCREASE_ENERGY = 35;
    MOD_SHAPESHIFT = 36;
    EFFECT_IMMUNITY = 37;
    STATE_IMMUNITY = 38;
    SCHOOL_IMMUNITY = 39;
    DAMAGE_IMMUNITY = 40;
    DISPEL_IMMUNITY = 41;
    PROC_TRIGGER_SPELL = 42;
    PROC_TRIGGER_DAMAGE = 43;
    TRACK_CREATURES = 44;
    TRACK_RESOURCES = 45;
    MOD_PARRY_SKILL = 46;
    MOD_PARRY_PERCENT = 47;
    MOD_DODGE_SKILL = 48;
    MOD_DODGE_PERCENT = 49;
    MOD_BLOCK_SKILL = 50;
    MOD_BLOCK_PERCENT = 51;
    MOD_CRIT_PERCENT = 52;
    PERIODIC_LEECH = 53;
    MOD_HIT_CHANCE = 54;
    MOD_SPELL_HIT_CHANCE = 55;
    TRANSFORM = 56;
    MOD_SPELL_CRIT_CHANCE = 57;
    MOD_INCREASE_SWIM_SPEED = 58;
    MOD_DAMAGE_DONE_CREATURE = 59;
    MOD_PACIFY_SILENCE = 60;
    MOD_SCALE = 61;
    PERIODIC_HEALTH_FUNNEL = 62;
    PERIODIC_MANA_FUNNEL = 63;
    PERIODIC_MANA_LEECH = 64;
    MOD_CASTING_SPEED_NOT_STACK = 65;
    FEIGN_DEATH = 66;
    MOD_DISARM = 67;
    MOD_STALKED = 68;
    SCHOOL_ABSORB = 69;
    EXTRA_ATTACKS = 70;
    MOD_SPELL_CRIT_CHANCE_SCHOOL = 71;
    MOD_POWER_COST_SCHOOL_PCT = 72;
    MOD_POWER_COST_SCHOOL = 73;
    REFLECT_SPELLS_SCHOOL = 74;
    MOD_LANGUAGE = 75;
    FAR_SIGHT = 76;
    MECHANIC_IMMUNITY = 77;
    MOUNTED = 78;
    MOD_DAMAGE_PERCENT_DONE = 79;
    MOD_PERCENT_STAT = 80;
    SPLIT_DAMAGE_PCT = 81;
    WATER_BREATHING = 82;
    MOD_BASE_RESISTANCE = 83;
    MOD_REGEN = 84;
    MOD_POWER_REGEN = 85;
    CHANNEL_DEATH_ITEM = 86;
    MOD_DAMAGE_PERCENT_TAKEN = 87;
    MOD_HEALTH_REGEN_PERCENT = 88;
    PERIODIC_DAMAGE_PERCENT = 89;
    MOD_RESIST_CHANCE = 90;
    MOD_DETECT_RANGE = 91;
    PREVENTS_FLEEING = 92;
    MOD_UNATTACKABLE = 93;
    INTERRUPT_REGEN = 94;
    GHOST = 95;
    SPELL_MAGNET = 96;
    MANA_SHIELD = 97;
    MOD_SKILL_TALENT = 98;
    MOD_ATTACK_POWER = 99;
    AURAS_VISIBLE = 100;
    MOD_RESISTANCE_PCT = 101;
    MOD_MELEE_ATTACK_POWER_VERSUS = 102;
    MOD_TOTAL_THREAT = 103;
    WATER_WALK = 104;
    FEATHER_FALL = 105;
    HOVER = 106;
    ADD_FLAT_MODIFIER = 107;
    ADD_PCT_MODIFIER = 108;
    ADD_TARGET_TRIGGER = 109;
    MOD_POWER_REGEN_PERCENT = 110;
    ADD_CASTER_HIT_TRIGGER = 111;
    OVERRIDE_CLASS_SCRIPTS = 112;
    MOD_RANGED_DAMAGE_TAKEN = 113;
    MOD_RANGED_DAMAGE_TAKEN_PCT = 114;
    MOD_HEALING = 115;
    MOD_REGEN_DURING_COMBAT = 116;
    MOD_MECHANIC_RESISTANCE = 117;
    MOD_HEALING_PCT = 118;
    SHARE_PET_TRACKING = 119;
    UNTRACKABLE = 120;
    EMPATHY = 121;
    MOD_OFFHAND_DAMAGE_PCT = 122;
    MOD_TARGET_RESISTANCE = 123;
    MOD_RANGED_ATTACK_POWER = 124;
    MOD_MELEE_DAMAGE_TAKEN = 125;
    MOD_MELEE_DAMAGE_TAKEN_PCT = 126;
    RANGED_ATTACK_POWER_ATTACKER_BONUS = 127;
    MOD_POSSESS_PET = 128;
    MOD_SPEED_ALWAYS = 129;
    MOD_MOUNTED_SPEED_ALWAYS = 130;
    MOD_RANGED_ATTACK_POWER_VERSUS = 131;
    MOD_INCREASE_ENERGY_PERCENT = 132;
    MOD_INCREASE_HEALTH_PERCENT = 133;
    MOD_MANA_REGEN_INTERRUPT = 134;
    MOD_HEALING_DONE = 135;
    MOD_HEALING_DONE_PERCENT = 136;
    MOD_TOTAL_STAT_PERCENTAGE = 137;
    MOD_MELEE_HASTE = 138;
    FORCE_REACTION = 139;
    MOD_RANGED_HASTE = 140;
    MOD_RANGED_AMMO_HASTE = 141;
    MOD_BASE_RESISTANCE_PCT = 142;
    MOD_RESISTANCE_EXCLUSIVE = 143;
    SAFE_FALL = 144;
    CHARISMA = 145;
    PERSUADED = 146;
    MECHANIC_IMMUNITY_MASK = 147;
    RETAIN_COMBO_POINTS = 148;
    RESIST_PUSHBACK = 149;
    MOD_SHIELD_BLOCKVALUE_PCT = 150;
    TRACK_STEALTHED = 151;
    MOD_DETECTED_RANGE = 152;
    SPLIT_DAMAGE_FLAT = 153;
    MOD_STEALTH_LEVEL = 154;
    MOD_WATER_BREATHING = 155;
    MOD_REPUTATION_GAIN = 156;
    PET_DAMAGE_MULTI = 157;
    MOD_SHIELD_BLOCKVALUE = 158;
    NO_PVP_CREDIT = 159;
    MOD_AOE_AVOIDANCE = 160;
    MOD_HEALTH_REGEN_IN_COMBAT = 161;
    POWER_BURN_MANA = 162;
    MOD_CRIT_DAMAGE_BONUS = 163;
    UNKNOWN164 = 164;
    MELEE_ATTACK_POWER_ATTACKER_BONUS = 165;
    MOD_ATTACK_POWER_PCT = 166;
    MOD_RANGED_ATTACK_POWER_PCT = 167;
    MOD_DAMAGE_DONE_VERSUS = 168;
    MOD_CRIT_PERCENT_VERSUS = 169;
    DETECT_AMORE = 170;
    MOD_SPEED_NOT_STACK = 171;
    MOD_MOUNTED_SPEED_NOT_STACK = 172;
    ALLOW_CHAMPION_SPELLS = 173;
    MOD_SPELL_DAMAGE_OF_STAT_PERCENT = 174;
    MOD_SPELL_HEALING_OF_STAT_PERCENT = 175;
    SPIRIT_OF_REDEMPTION = 176;
    AOE_CHARM = 177;
    MOD_DEBUFF_RESISTANCE = 178;
    MOD_ATTACKER_SPELL_CRIT_CHANCE = 179;
    MOD_FLAT_SPELL_DAMAGE_VERSUS = 180;
    MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS = 181;
    MOD_RESISTANCE_OF_STAT_PERCENT = 182;
    MOD_CRITICAL_THREAT = 183;
    MOD_ATTACKER_MELEE_HIT_CHANCE = 184;
    MOD_ATTACKER_RANGED_HIT_CHANCE = 185;
    MOD_ATTACKER_SPELL_HIT_CHANCE = 186;
    MOD_ATTACKER_MELEE_CRIT_CHANCE = 187;
    MOD_ATTACKER_RANGED_CRIT_CHANCE = 188;
    MOD_RATING = 189;
    MOD_FACTION_REPUTATION_GAIN = 190;
    USE_NORMAL_MOVEMENT_SPEED = 191;
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
BIND_SIGHT1 (0x01)
MOD_POSSESS2 (0x02)
PERIODIC_DAMAGE3 (0x03)
DUMMY4 (0x04)
MOD_CONFUSE5 (0x05)
MOD_CHARM6 (0x06)
MOD_FEAR7 (0x07)
PERIODIC_HEAL8 (0x08)
MOD_ATTACKSPEED9 (0x09)
MOD_THREAT10 (0x0A)
MOD_TAUNT11 (0x0B)
MOD_STUN12 (0x0C)
MOD_DAMAGE_DONE13 (0x0D)
MOD_DAMAGE_TAKEN14 (0x0E)
DAMAGE_SHIELD15 (0x0F)
MOD_STEALTH16 (0x10)
MOD_STEALTH_DETECT17 (0x11)
MOD_INVISIBILITY18 (0x12)
MOD_INVISIBILITY_DETECTION19 (0x13)
OBS_MOD_HEALTH20 (0x14)
OBS_MOD_MANA21 (0x15)
MOD_RESISTANCE22 (0x16)
PERIODIC_TRIGGER_SPELL23 (0x17)
PERIODIC_ENERGIZE24 (0x18)
MOD_PACIFY25 (0x19)
MOD_ROOT26 (0x1A)
MOD_SILENCE27 (0x1B)
REFLECT_SPELLS28 (0x1C)
MOD_STAT29 (0x1D)
MOD_SKILL30 (0x1E)
MOD_INCREASE_SPEED31 (0x1F)
MOD_INCREASE_MOUNTED_SPEED32 (0x20)
MOD_DECREASE_SPEED33 (0x21)
MOD_INCREASE_HEALTH34 (0x22)
MOD_INCREASE_ENERGY35 (0x23)
MOD_SHAPESHIFT36 (0x24)
EFFECT_IMMUNITY37 (0x25)
STATE_IMMUNITY38 (0x26)
SCHOOL_IMMUNITY39 (0x27)
DAMAGE_IMMUNITY40 (0x28)
DISPEL_IMMUNITY41 (0x29)
PROC_TRIGGER_SPELL42 (0x2A)
PROC_TRIGGER_DAMAGE43 (0x2B)
TRACK_CREATURES44 (0x2C)
TRACK_RESOURCES45 (0x2D)
MOD_PARRY_SKILL46 (0x2E)
MOD_PARRY_PERCENT47 (0x2F)
MOD_DODGE_SKILL48 (0x30)
MOD_DODGE_PERCENT49 (0x31)
MOD_BLOCK_SKILL50 (0x32)
MOD_BLOCK_PERCENT51 (0x33)
MOD_CRIT_PERCENT52 (0x34)
PERIODIC_LEECH53 (0x35)
MOD_HIT_CHANCE54 (0x36)
MOD_SPELL_HIT_CHANCE55 (0x37)
TRANSFORM56 (0x38)
MOD_SPELL_CRIT_CHANCE57 (0x39)
MOD_INCREASE_SWIM_SPEED58 (0x3A)
MOD_DAMAGE_DONE_CREATURE59 (0x3B)
MOD_PACIFY_SILENCE60 (0x3C)
MOD_SCALE61 (0x3D)
PERIODIC_HEALTH_FUNNEL62 (0x3E)
PERIODIC_MANA_FUNNEL63 (0x3F)
PERIODIC_MANA_LEECH64 (0x40)
MOD_CASTING_SPEED_NOT_STACK65 (0x41)
FEIGN_DEATH66 (0x42)
MOD_DISARM67 (0x43)
MOD_STALKED68 (0x44)
SCHOOL_ABSORB69 (0x45)
EXTRA_ATTACKS70 (0x46)
MOD_SPELL_CRIT_CHANCE_SCHOOL71 (0x47)
MOD_POWER_COST_SCHOOL_PCT72 (0x48)
MOD_POWER_COST_SCHOOL73 (0x49)
REFLECT_SPELLS_SCHOOL74 (0x4A)
MOD_LANGUAGE75 (0x4B)
FAR_SIGHT76 (0x4C)
MECHANIC_IMMUNITY77 (0x4D)
MOUNTED78 (0x4E)
MOD_DAMAGE_PERCENT_DONE79 (0x4F)
MOD_PERCENT_STAT80 (0x50)
SPLIT_DAMAGE_PCT81 (0x51)
WATER_BREATHING82 (0x52)
MOD_BASE_RESISTANCE83 (0x53)
MOD_REGEN84 (0x54)
MOD_POWER_REGEN85 (0x55)
CHANNEL_DEATH_ITEM86 (0x56)
MOD_DAMAGE_PERCENT_TAKEN87 (0x57)
MOD_HEALTH_REGEN_PERCENT88 (0x58)
PERIODIC_DAMAGE_PERCENT89 (0x59)
MOD_RESIST_CHANCE90 (0x5A)
MOD_DETECT_RANGE91 (0x5B)
PREVENTS_FLEEING92 (0x5C)
MOD_UNATTACKABLE93 (0x5D)
INTERRUPT_REGEN94 (0x5E)
GHOST95 (0x5F)
SPELL_MAGNET96 (0x60)
MANA_SHIELD97 (0x61)
MOD_SKILL_TALENT98 (0x62)
MOD_ATTACK_POWER99 (0x63)
AURAS_VISIBLE100 (0x64)
MOD_RESISTANCE_PCT101 (0x65)
MOD_MELEE_ATTACK_POWER_VERSUS102 (0x66)
MOD_TOTAL_THREAT103 (0x67)
WATER_WALK104 (0x68)
FEATHER_FALL105 (0x69)
HOVER106 (0x6A)
ADD_FLAT_MODIFIER107 (0x6B)
ADD_PCT_MODIFIER108 (0x6C)
ADD_TARGET_TRIGGER109 (0x6D)
MOD_POWER_REGEN_PERCENT110 (0x6E)
ADD_CASTER_HIT_TRIGGER111 (0x6F)
OVERRIDE_CLASS_SCRIPTS112 (0x70)
MOD_RANGED_DAMAGE_TAKEN113 (0x71)
MOD_RANGED_DAMAGE_TAKEN_PCT114 (0x72)
MOD_HEALING115 (0x73)
MOD_REGEN_DURING_COMBAT116 (0x74)
MOD_MECHANIC_RESISTANCE117 (0x75)
MOD_HEALING_PCT118 (0x76)
SHARE_PET_TRACKING119 (0x77)
UNTRACKABLE120 (0x78)
EMPATHY121 (0x79)
MOD_OFFHAND_DAMAGE_PCT122 (0x7A)
MOD_TARGET_RESISTANCE123 (0x7B)
MOD_RANGED_ATTACK_POWER124 (0x7C)
MOD_MELEE_DAMAGE_TAKEN125 (0x7D)
MOD_MELEE_DAMAGE_TAKEN_PCT126 (0x7E)
RANGED_ATTACK_POWER_ATTACKER_BONUS127 (0x7F)
MOD_POSSESS_PET128 (0x80)
MOD_SPEED_ALWAYS129 (0x81)
MOD_MOUNTED_SPEED_ALWAYS130 (0x82)
MOD_RANGED_ATTACK_POWER_VERSUS131 (0x83)
MOD_INCREASE_ENERGY_PERCENT132 (0x84)
MOD_INCREASE_HEALTH_PERCENT133 (0x85)
MOD_MANA_REGEN_INTERRUPT134 (0x86)
MOD_HEALING_DONE135 (0x87)
MOD_HEALING_DONE_PERCENT136 (0x88)
MOD_TOTAL_STAT_PERCENTAGE137 (0x89)
MOD_MELEE_HASTE138 (0x8A)
FORCE_REACTION139 (0x8B)
MOD_RANGED_HASTE140 (0x8C)
MOD_RANGED_AMMO_HASTE141 (0x8D)
MOD_BASE_RESISTANCE_PCT142 (0x8E)
MOD_RESISTANCE_EXCLUSIVE143 (0x8F)
SAFE_FALL144 (0x90)
CHARISMA145 (0x91)
PERSUADED146 (0x92)
MECHANIC_IMMUNITY_MASK147 (0x93)
RETAIN_COMBO_POINTS148 (0x94)
RESIST_PUSHBACK149 (0x95)
MOD_SHIELD_BLOCKVALUE_PCT150 (0x96)
TRACK_STEALTHED151 (0x97)
MOD_DETECTED_RANGE152 (0x98)
SPLIT_DAMAGE_FLAT153 (0x99)
MOD_STEALTH_LEVEL154 (0x9A)
MOD_WATER_BREATHING155 (0x9B)
MOD_REPUTATION_GAIN156 (0x9C)
PET_DAMAGE_MULTI157 (0x9D)
MOD_SHIELD_BLOCKVALUE158 (0x9E)
NO_PVP_CREDIT159 (0x9F)
MOD_AOE_AVOIDANCE160 (0xA0)
MOD_HEALTH_REGEN_IN_COMBAT161 (0xA1)
POWER_BURN_MANA162 (0xA2)
MOD_CRIT_DAMAGE_BONUS163 (0xA3)
UNKNOWN164164 (0xA4)
MELEE_ATTACK_POWER_ATTACKER_BONUS165 (0xA5)
MOD_ATTACK_POWER_PCT166 (0xA6)
MOD_RANGED_ATTACK_POWER_PCT167 (0xA7)
MOD_DAMAGE_DONE_VERSUS168 (0xA8)
MOD_CRIT_PERCENT_VERSUS169 (0xA9)
DETECT_AMORE170 (0xAA)
MOD_SPEED_NOT_STACK171 (0xAB)
MOD_MOUNTED_SPEED_NOT_STACK172 (0xAC)
ALLOW_CHAMPION_SPELLS173 (0xAD)
MOD_SPELL_DAMAGE_OF_STAT_PERCENT174 (0xAE)
MOD_SPELL_HEALING_OF_STAT_PERCENT175 (0xAF)
SPIRIT_OF_REDEMPTION176 (0xB0)
AOE_CHARM177 (0xB1)
MOD_DEBUFF_RESISTANCE178 (0xB2)
MOD_ATTACKER_SPELL_CRIT_CHANCE179 (0xB3)
MOD_FLAT_SPELL_DAMAGE_VERSUS180 (0xB4)
MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS181 (0xB5)
MOD_RESISTANCE_OF_STAT_PERCENT182 (0xB6)
MOD_CRITICAL_THREAT183 (0xB7)
MOD_ATTACKER_MELEE_HIT_CHANCE184 (0xB8)
MOD_ATTACKER_RANGED_HIT_CHANCE185 (0xB9)
MOD_ATTACKER_SPELL_HIT_CHANCE186 (0xBA)
MOD_ATTACKER_MELEE_CRIT_CHANCE187 (0xBB)
MOD_ATTACKER_RANGED_CRIT_CHANCE188 (0xBC)
MOD_RATING189 (0xBD)
MOD_FACTION_REPUTATION_GAIN190 (0xBE)
USE_NORMAL_MOVEMENT_SPEED191 (0xBF)

Used in:

Client Version 2.4.3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/external_spell_2_4_3.wowm:3.

enum AuraMod : u32 {
    NONE = 0;
    BIND_SIGHT = 1;
    MOD_POSSESS = 2;
    PERIODIC_DAMAGE = 3;
    DUMMY = 4;
    MOD_CONFUSE = 5;
    MOD_CHARM = 6;
    MOD_FEAR = 7;
    PERIODIC_HEAL = 8;
    MOD_ATTACKSPEED = 9;
    MOD_THREAT = 10;
    MOD_TAUNT = 11;
    MOD_STUN = 12;
    MOD_DAMAGE_DONE = 13;
    MOD_DAMAGE_TAKEN = 14;
    DAMAGE_SHIELD = 15;
    MOD_STEALTH = 16;
    MOD_STEALTH_DETECT = 17;
    MOD_INVISIBILITY = 18;
    MOD_INVISIBILITY_DETECTION = 19;
    OBS_MOD_HEALTH = 20;
    OBS_MOD_MANA = 21;
    MOD_RESISTANCE = 22;
    PERIODIC_TRIGGER_SPELL = 23;
    PERIODIC_ENERGIZE = 24;
    MOD_PACIFY = 25;
    MOD_ROOT = 26;
    MOD_SILENCE = 27;
    REFLECT_SPELLS = 28;
    MOD_STAT = 29;
    MOD_SKILL = 30;
    MOD_INCREASE_SPEED = 31;
    MOD_INCREASE_MOUNTED_SPEED = 32;
    MOD_DECREASE_SPEED = 33;
    MOD_INCREASE_HEALTH = 34;
    MOD_INCREASE_ENERGY = 35;
    MOD_SHAPESHIFT = 36;
    EFFECT_IMMUNITY = 37;
    STATE_IMMUNITY = 38;
    SCHOOL_IMMUNITY = 39;
    DAMAGE_IMMUNITY = 40;
    DISPEL_IMMUNITY = 41;
    PROC_TRIGGER_SPELL = 42;
    PROC_TRIGGER_DAMAGE = 43;
    TRACK_CREATURES = 44;
    TRACK_RESOURCES = 45;
    UNKNOWN46 = 46;
    MOD_PARRY_PERCENT = 47;
    UNKNOWN48 = 48;
    MOD_DODGE_PERCENT = 49;
    MOD_BLOCK_SKILL = 50;
    MOD_BLOCK_PERCENT = 51;
    MOD_CRIT_PERCENT = 52;
    PERIODIC_LEECH = 53;
    MOD_HIT_CHANCE = 54;
    MOD_SPELL_HIT_CHANCE = 55;
    TRANSFORM = 56;
    MOD_SPELL_CRIT_CHANCE = 57;
    MOD_INCREASE_SWIM_SPEED = 58;
    MOD_DAMAGE_DONE_CREATURE = 59;
    MOD_PACIFY_SILENCE = 60;
    MOD_SCALE = 61;
    PERIODIC_HEALTH_FUNNEL = 62;
    PERIODIC_MANA_FUNNEL = 63;
    PERIODIC_MANA_LEECH = 64;
    MOD_CASTING_SPEED_NOT_STACK = 65;
    FEIGN_DEATH = 66;
    MOD_DISARM = 67;
    MOD_STALKED = 68;
    SCHOOL_ABSORB = 69;
    EXTRA_ATTACKS = 70;
    MOD_SPELL_CRIT_CHANCE_SCHOOL = 71;
    MOD_POWER_COST_SCHOOL_PCT = 72;
    MOD_POWER_COST_SCHOOL = 73;
    REFLECT_SPELLS_SCHOOL = 74;
    MOD_LANGUAGE = 75;
    FAR_SIGHT = 76;
    MECHANIC_IMMUNITY = 77;
    MOUNTED = 78;
    MOD_DAMAGE_PERCENT_DONE = 79;
    MOD_PERCENT_STAT = 80;
    SPLIT_DAMAGE_PCT = 81;
    WATER_BREATHING = 82;
    MOD_BASE_RESISTANCE = 83;
    MOD_REGEN = 84;
    MOD_POWER_REGEN = 85;
    CHANNEL_DEATH_ITEM = 86;
    MOD_DAMAGE_PERCENT_TAKEN = 87;
    MOD_HEALTH_REGEN_PERCENT = 88;
    PERIODIC_DAMAGE_PERCENT = 89;
    MOD_RESIST_CHANCE = 90;
    MOD_DETECT_RANGE = 91;
    PREVENTS_FLEEING = 92;
    MOD_UNATTACKABLE = 93;
    INTERRUPT_REGEN = 94;
    GHOST = 95;
    SPELL_MAGNET = 96;
    MANA_SHIELD = 97;
    MOD_SKILL_TALENT = 98;
    MOD_ATTACK_POWER = 99;
    AURAS_VISIBLE = 100;
    MOD_RESISTANCE_PCT = 101;
    MOD_MELEE_ATTACK_POWER_VERSUS = 102;
    MOD_TOTAL_THREAT = 103;
    WATER_WALK = 104;
    FEATHER_FALL = 105;
    HOVER = 106;
    ADD_FLAT_MODIFIER = 107;
    ADD_PCT_MODIFIER = 108;
    ADD_TARGET_TRIGGER = 109;
    MOD_POWER_REGEN_PERCENT = 110;
    ADD_CASTER_HIT_TRIGGER = 111;
    OVERRIDE_CLASS_SCRIPTS = 112;
    MOD_RANGED_DAMAGE_TAKEN = 113;
    MOD_RANGED_DAMAGE_TAKEN_PCT = 114;
    MOD_HEALING = 115;
    MOD_REGEN_DURING_COMBAT = 116;
    MOD_MECHANIC_RESISTANCE = 117;
    MOD_HEALING_PCT = 118;
    SHARE_PET_TRACKING = 119;
    UNTRACKABLE = 120;
    EMPATHY = 121;
    MOD_OFFHAND_DAMAGE_PCT = 122;
    MOD_TARGET_RESISTANCE = 123;
    MOD_RANGED_ATTACK_POWER = 124;
    MOD_MELEE_DAMAGE_TAKEN = 125;
    MOD_MELEE_DAMAGE_TAKEN_PCT = 126;
    RANGED_ATTACK_POWER_ATTACKER_BONUS = 127;
    MOD_POSSESS_PET = 128;
    MOD_SPEED_ALWAYS = 129;
    MOD_MOUNTED_SPEED_ALWAYS = 130;
    MOD_RANGED_ATTACK_POWER_VERSUS = 131;
    MOD_INCREASE_ENERGY_PERCENT = 132;
    MOD_INCREASE_HEALTH_PERCENT = 133;
    MOD_MANA_REGEN_INTERRUPT = 134;
    MOD_HEALING_DONE = 135;
    MOD_HEALING_DONE_PERCENT = 136;
    MOD_TOTAL_STAT_PERCENTAGE = 137;
    MOD_MELEE_HASTE = 138;
    FORCE_REACTION = 139;
    MOD_RANGED_HASTE = 140;
    MOD_RANGED_AMMO_HASTE = 141;
    MOD_BASE_RESISTANCE_PCT = 142;
    MOD_RESISTANCE_EXCLUSIVE = 143;
    SAFE_FALL = 144;
    CHARISMA = 145;
    PERSUADED = 146;
    MECHANIC_IMMUNITY_MASK = 147;
    RETAIN_COMBO_POINTS = 148;
    RESIST_PUSHBACK = 149;
    MOD_SHIELD_BLOCKVALUE_PCT = 150;
    TRACK_STEALTHED = 151;
    MOD_DETECTED_RANGE = 152;
    SPLIT_DAMAGE_FLAT = 153;
    MOD_STEALTH_LEVEL = 154;
    MOD_WATER_BREATHING = 155;
    MOD_REPUTATION_GAIN = 156;
    PET_DAMAGE_MULTI = 157;
    MOD_SHIELD_BLOCKVALUE = 158;
    NO_PVP_CREDIT = 159;
    MOD_AOE_AVOIDANCE = 160;
    MOD_HEALTH_REGEN_IN_COMBAT = 161;
    POWER_BURN_MANA = 162;
    MOD_CRIT_DAMAGE_BONUS = 163;
    UNKNOWN164 = 164;
    MELEE_ATTACK_POWER_ATTACKER_BONUS = 165;
    MOD_ATTACK_POWER_PCT = 166;
    MOD_RANGED_ATTACK_POWER_PCT = 167;
    MOD_DAMAGE_DONE_VERSUS = 168;
    MOD_CRIT_PERCENT_VERSUS = 169;
    DETECT_AMORE = 170;
    MOD_SPEED_NOT_STACK = 171;
    MOD_MOUNTED_SPEED_NOT_STACK = 172;
    ALLOW_CHAMPION_SPELLS = 173;
    MOD_SPELL_DAMAGE_OF_STAT_PERCENT = 174;
    MOD_SPELL_HEALING_OF_STAT_PERCENT = 175;
    SPIRIT_OF_REDEMPTION = 176;
    AOE_CHARM = 177;
    MOD_DEBUFF_RESISTANCE = 178;
    MOD_ATTACKER_SPELL_CRIT_CHANCE = 179;
    MOD_FLAT_SPELL_DAMAGE_VERSUS = 180;
    MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS = 181;
    MOD_RESISTANCE_OF_STAT_PERCENT = 182;
    MOD_CRITICAL_THREAT = 183;
    MOD_ATTACKER_MELEE_HIT_CHANCE = 184;
    MOD_ATTACKER_RANGED_HIT_CHANCE = 185;
    MOD_ATTACKER_SPELL_HIT_CHANCE = 186;
    MOD_ATTACKER_MELEE_CRIT_CHANCE = 187;
    MOD_ATTACKER_RANGED_CRIT_CHANCE = 188;
    MOD_RATING = 189;
    MOD_FACTION_REPUTATION_GAIN = 190;
    USE_NORMAL_MOVEMENT_SPEED = 191;
    MOD_MELEE_RANGED_HASTE = 192;
    HASTE_ALL = 193;
    MOD_DEPRICATED_1 = 194;
    MOD_DEPRICATED_2 = 195;
    MOD_COOLDOWN = 196;
    MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE = 197;
    MOD_ALL_WEAPON_SKILLS = 198;
    MOD_INCREASES_SPELL_PCT_TO_HIT = 199;
    MOD_XP_PCT = 200;
    FLY = 201;
    IGNORE_COMBAT_RESULT = 202;
    MOD_ATTACKER_MELEE_CRIT_DAMAGE = 203;
    MOD_ATTACKER_RANGED_CRIT_DAMAGE = 204;
    MOD_ATTACKER_SPELL_CRIT_DAMAGE = 205;
    MOD_FLIGHT_SPEED = 206;
    MOD_FLIGHT_SPEED_MOUNTED = 207;
    MOD_FLIGHT_SPEED_STACKING = 208;
    MOD_FLIGHT_SPEED_MOUNTED_STACKING = 209;
    MOD_FLIGHT_SPEED_NOT_STACKING = 210;
    MOD_FLIGHT_SPEED_MOUNTED_NOT_STACKING = 211;
    MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT = 212;
    MOD_RAGE_FROM_DAMAGE_DEALT = 213;
    UNKNOWN214 = 214;
    ARENA_PREPARATION = 215;
    HASTE_SPELLS = 216;
    UNKNOWN217 = 217;
    HASTE_RANGED = 218;
    MOD_MANA_REGEN_FROM_STAT = 219;
    MOD_RATING_FROM_STAT = 220;
    UNKNOWN221 = 221;
    UNKNOWN222 = 222;
    UNKNOWN223 = 223;
    UNKNOWN224 = 224;
    PRAYER_OF_MENDING = 225;
    PERIODIC_DUMMY = 226;
    PERIODIC_TRIGGER_SPELL_WITH_VALUE = 227;
    DETECT_STEALTH = 228;
    MOD_AOE_DAMAGE_AVOIDANCE = 229;
    UNKNOWN230 = 230;
    PROC_TRIGGER_SPELL_WITH_VALUE = 231;
    MECHANIC_DURATION_MOD = 232;
    UNKNOWN233 = 233;
    MECHANIC_DURATION_MOD_NOT_STACK = 234;
    MOD_DISPEL_RESIST = 235;
    UNKNOWN236 = 236;
    MOD_SPELL_DAMAGE_OF_ATTACK_POWER = 237;
    MOD_SPELL_HEALING_OF_ATTACK_POWER = 238;
    MOD_SCALE_2 = 239;
    MOD_EXPERTISE = 240;
    FORCE_MOVE_FORWARD = 241;
    UNKNOWN242 = 242;
    UNKNOWN243 = 243;
    COMPREHEND_LANGUAGE = 244;
    UNKNOWN245 = 245;
    UNKNOWN246 = 246;
    MIRROR_IMAGE = 247;
    MOD_COMBAT_RESULT_CHANCE = 248;
    UNKNOWN249 = 249;
    MOD_INCREASE_HEALTH_2 = 250;
    MOD_ENEMY_DODGE = 251;
    UNKNOWN252 = 252;
    UNKNOWN253 = 253;
    UNKNOWN254 = 254;
    UNKNOWN255 = 255;
    UNKNOWN256 = 256;
    UNKNOWN257 = 257;
    UNKNOWN258 = 258;
    UNKNOWN259 = 259;
    UNKNOWN260 = 260;
    UNKNOWN261 = 261;
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
BIND_SIGHT1 (0x01)
MOD_POSSESS2 (0x02)
PERIODIC_DAMAGE3 (0x03)
DUMMY4 (0x04)
MOD_CONFUSE5 (0x05)
MOD_CHARM6 (0x06)
MOD_FEAR7 (0x07)
PERIODIC_HEAL8 (0x08)
MOD_ATTACKSPEED9 (0x09)
MOD_THREAT10 (0x0A)
MOD_TAUNT11 (0x0B)
MOD_STUN12 (0x0C)
MOD_DAMAGE_DONE13 (0x0D)
MOD_DAMAGE_TAKEN14 (0x0E)
DAMAGE_SHIELD15 (0x0F)
MOD_STEALTH16 (0x10)
MOD_STEALTH_DETECT17 (0x11)
MOD_INVISIBILITY18 (0x12)
MOD_INVISIBILITY_DETECTION19 (0x13)
OBS_MOD_HEALTH20 (0x14)
OBS_MOD_MANA21 (0x15)
MOD_RESISTANCE22 (0x16)
PERIODIC_TRIGGER_SPELL23 (0x17)
PERIODIC_ENERGIZE24 (0x18)
MOD_PACIFY25 (0x19)
MOD_ROOT26 (0x1A)
MOD_SILENCE27 (0x1B)
REFLECT_SPELLS28 (0x1C)
MOD_STAT29 (0x1D)
MOD_SKILL30 (0x1E)
MOD_INCREASE_SPEED31 (0x1F)
MOD_INCREASE_MOUNTED_SPEED32 (0x20)
MOD_DECREASE_SPEED33 (0x21)
MOD_INCREASE_HEALTH34 (0x22)
MOD_INCREASE_ENERGY35 (0x23)
MOD_SHAPESHIFT36 (0x24)
EFFECT_IMMUNITY37 (0x25)
STATE_IMMUNITY38 (0x26)
SCHOOL_IMMUNITY39 (0x27)
DAMAGE_IMMUNITY40 (0x28)
DISPEL_IMMUNITY41 (0x29)
PROC_TRIGGER_SPELL42 (0x2A)
PROC_TRIGGER_DAMAGE43 (0x2B)
TRACK_CREATURES44 (0x2C)
TRACK_RESOURCES45 (0x2D)
UNKNOWN4646 (0x2E)
MOD_PARRY_PERCENT47 (0x2F)
UNKNOWN4848 (0x30)
MOD_DODGE_PERCENT49 (0x31)
MOD_BLOCK_SKILL50 (0x32)
MOD_BLOCK_PERCENT51 (0x33)
MOD_CRIT_PERCENT52 (0x34)
PERIODIC_LEECH53 (0x35)
MOD_HIT_CHANCE54 (0x36)
MOD_SPELL_HIT_CHANCE55 (0x37)
TRANSFORM56 (0x38)
MOD_SPELL_CRIT_CHANCE57 (0x39)
MOD_INCREASE_SWIM_SPEED58 (0x3A)
MOD_DAMAGE_DONE_CREATURE59 (0x3B)
MOD_PACIFY_SILENCE60 (0x3C)
MOD_SCALE61 (0x3D)
PERIODIC_HEALTH_FUNNEL62 (0x3E)
PERIODIC_MANA_FUNNEL63 (0x3F)
PERIODIC_MANA_LEECH64 (0x40)
MOD_CASTING_SPEED_NOT_STACK65 (0x41)
FEIGN_DEATH66 (0x42)
MOD_DISARM67 (0x43)
MOD_STALKED68 (0x44)
SCHOOL_ABSORB69 (0x45)
EXTRA_ATTACKS70 (0x46)
MOD_SPELL_CRIT_CHANCE_SCHOOL71 (0x47)
MOD_POWER_COST_SCHOOL_PCT72 (0x48)
MOD_POWER_COST_SCHOOL73 (0x49)
REFLECT_SPELLS_SCHOOL74 (0x4A)
MOD_LANGUAGE75 (0x4B)
FAR_SIGHT76 (0x4C)
MECHANIC_IMMUNITY77 (0x4D)
MOUNTED78 (0x4E)
MOD_DAMAGE_PERCENT_DONE79 (0x4F)
MOD_PERCENT_STAT80 (0x50)
SPLIT_DAMAGE_PCT81 (0x51)
WATER_BREATHING82 (0x52)
MOD_BASE_RESISTANCE83 (0x53)
MOD_REGEN84 (0x54)
MOD_POWER_REGEN85 (0x55)
CHANNEL_DEATH_ITEM86 (0x56)
MOD_DAMAGE_PERCENT_TAKEN87 (0x57)
MOD_HEALTH_REGEN_PERCENT88 (0x58)
PERIODIC_DAMAGE_PERCENT89 (0x59)
MOD_RESIST_CHANCE90 (0x5A)
MOD_DETECT_RANGE91 (0x5B)
PREVENTS_FLEEING92 (0x5C)
MOD_UNATTACKABLE93 (0x5D)
INTERRUPT_REGEN94 (0x5E)
GHOST95 (0x5F)
SPELL_MAGNET96 (0x60)
MANA_SHIELD97 (0x61)
MOD_SKILL_TALENT98 (0x62)
MOD_ATTACK_POWER99 (0x63)
AURAS_VISIBLE100 (0x64)
MOD_RESISTANCE_PCT101 (0x65)
MOD_MELEE_ATTACK_POWER_VERSUS102 (0x66)
MOD_TOTAL_THREAT103 (0x67)
WATER_WALK104 (0x68)
FEATHER_FALL105 (0x69)
HOVER106 (0x6A)
ADD_FLAT_MODIFIER107 (0x6B)
ADD_PCT_MODIFIER108 (0x6C)
ADD_TARGET_TRIGGER109 (0x6D)
MOD_POWER_REGEN_PERCENT110 (0x6E)
ADD_CASTER_HIT_TRIGGER111 (0x6F)
OVERRIDE_CLASS_SCRIPTS112 (0x70)
MOD_RANGED_DAMAGE_TAKEN113 (0x71)
MOD_RANGED_DAMAGE_TAKEN_PCT114 (0x72)
MOD_HEALING115 (0x73)
MOD_REGEN_DURING_COMBAT116 (0x74)
MOD_MECHANIC_RESISTANCE117 (0x75)
MOD_HEALING_PCT118 (0x76)
SHARE_PET_TRACKING119 (0x77)
UNTRACKABLE120 (0x78)
EMPATHY121 (0x79)
MOD_OFFHAND_DAMAGE_PCT122 (0x7A)
MOD_TARGET_RESISTANCE123 (0x7B)
MOD_RANGED_ATTACK_POWER124 (0x7C)
MOD_MELEE_DAMAGE_TAKEN125 (0x7D)
MOD_MELEE_DAMAGE_TAKEN_PCT126 (0x7E)
RANGED_ATTACK_POWER_ATTACKER_BONUS127 (0x7F)
MOD_POSSESS_PET128 (0x80)
MOD_SPEED_ALWAYS129 (0x81)
MOD_MOUNTED_SPEED_ALWAYS130 (0x82)
MOD_RANGED_ATTACK_POWER_VERSUS131 (0x83)
MOD_INCREASE_ENERGY_PERCENT132 (0x84)
MOD_INCREASE_HEALTH_PERCENT133 (0x85)
MOD_MANA_REGEN_INTERRUPT134 (0x86)
MOD_HEALING_DONE135 (0x87)
MOD_HEALING_DONE_PERCENT136 (0x88)
MOD_TOTAL_STAT_PERCENTAGE137 (0x89)
MOD_MELEE_HASTE138 (0x8A)
FORCE_REACTION139 (0x8B)
MOD_RANGED_HASTE140 (0x8C)
MOD_RANGED_AMMO_HASTE141 (0x8D)
MOD_BASE_RESISTANCE_PCT142 (0x8E)
MOD_RESISTANCE_EXCLUSIVE143 (0x8F)
SAFE_FALL144 (0x90)
CHARISMA145 (0x91)
PERSUADED146 (0x92)
MECHANIC_IMMUNITY_MASK147 (0x93)
RETAIN_COMBO_POINTS148 (0x94)
RESIST_PUSHBACK149 (0x95)
MOD_SHIELD_BLOCKVALUE_PCT150 (0x96)
TRACK_STEALTHED151 (0x97)
MOD_DETECTED_RANGE152 (0x98)
SPLIT_DAMAGE_FLAT153 (0x99)
MOD_STEALTH_LEVEL154 (0x9A)
MOD_WATER_BREATHING155 (0x9B)
MOD_REPUTATION_GAIN156 (0x9C)
PET_DAMAGE_MULTI157 (0x9D)
MOD_SHIELD_BLOCKVALUE158 (0x9E)
NO_PVP_CREDIT159 (0x9F)
MOD_AOE_AVOIDANCE160 (0xA0)
MOD_HEALTH_REGEN_IN_COMBAT161 (0xA1)
POWER_BURN_MANA162 (0xA2)
MOD_CRIT_DAMAGE_BONUS163 (0xA3)
UNKNOWN164164 (0xA4)
MELEE_ATTACK_POWER_ATTACKER_BONUS165 (0xA5)
MOD_ATTACK_POWER_PCT166 (0xA6)
MOD_RANGED_ATTACK_POWER_PCT167 (0xA7)
MOD_DAMAGE_DONE_VERSUS168 (0xA8)
MOD_CRIT_PERCENT_VERSUS169 (0xA9)
DETECT_AMORE170 (0xAA)
MOD_SPEED_NOT_STACK171 (0xAB)
MOD_MOUNTED_SPEED_NOT_STACK172 (0xAC)
ALLOW_CHAMPION_SPELLS173 (0xAD)
MOD_SPELL_DAMAGE_OF_STAT_PERCENT174 (0xAE)
MOD_SPELL_HEALING_OF_STAT_PERCENT175 (0xAF)
SPIRIT_OF_REDEMPTION176 (0xB0)
AOE_CHARM177 (0xB1)
MOD_DEBUFF_RESISTANCE178 (0xB2)
MOD_ATTACKER_SPELL_CRIT_CHANCE179 (0xB3)
MOD_FLAT_SPELL_DAMAGE_VERSUS180 (0xB4)
MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS181 (0xB5)
MOD_RESISTANCE_OF_STAT_PERCENT182 (0xB6)
MOD_CRITICAL_THREAT183 (0xB7)
MOD_ATTACKER_MELEE_HIT_CHANCE184 (0xB8)
MOD_ATTACKER_RANGED_HIT_CHANCE185 (0xB9)
MOD_ATTACKER_SPELL_HIT_CHANCE186 (0xBA)
MOD_ATTACKER_MELEE_CRIT_CHANCE187 (0xBB)
MOD_ATTACKER_RANGED_CRIT_CHANCE188 (0xBC)
MOD_RATING189 (0xBD)
MOD_FACTION_REPUTATION_GAIN190 (0xBE)
USE_NORMAL_MOVEMENT_SPEED191 (0xBF)
MOD_MELEE_RANGED_HASTE192 (0xC0)
HASTE_ALL193 (0xC1)
MOD_DEPRICATED_1194 (0xC2)
MOD_DEPRICATED_2195 (0xC3)
MOD_COOLDOWN196 (0xC4)
MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE197 (0xC5)
MOD_ALL_WEAPON_SKILLS198 (0xC6)
MOD_INCREASES_SPELL_PCT_TO_HIT199 (0xC7)
MOD_XP_PCT200 (0xC8)
FLY201 (0xC9)
IGNORE_COMBAT_RESULT202 (0xCA)
MOD_ATTACKER_MELEE_CRIT_DAMAGE203 (0xCB)
MOD_ATTACKER_RANGED_CRIT_DAMAGE204 (0xCC)
MOD_ATTACKER_SPELL_CRIT_DAMAGE205 (0xCD)
MOD_FLIGHT_SPEED206 (0xCE)
MOD_FLIGHT_SPEED_MOUNTED207 (0xCF)
MOD_FLIGHT_SPEED_STACKING208 (0xD0)
MOD_FLIGHT_SPEED_MOUNTED_STACKING209 (0xD1)
MOD_FLIGHT_SPEED_NOT_STACKING210 (0xD2)
MOD_FLIGHT_SPEED_MOUNTED_NOT_STACKING211 (0xD3)
MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT212 (0xD4)
MOD_RAGE_FROM_DAMAGE_DEALT213 (0xD5)
UNKNOWN214214 (0xD6)
ARENA_PREPARATION215 (0xD7)
HASTE_SPELLS216 (0xD8)
UNKNOWN217217 (0xD9)
HASTE_RANGED218 (0xDA)
MOD_MANA_REGEN_FROM_STAT219 (0xDB)
MOD_RATING_FROM_STAT220 (0xDC)
UNKNOWN221221 (0xDD)
UNKNOWN222222 (0xDE)
UNKNOWN223223 (0xDF)
UNKNOWN224224 (0xE0)
PRAYER_OF_MENDING225 (0xE1)
PERIODIC_DUMMY226 (0xE2)
PERIODIC_TRIGGER_SPELL_WITH_VALUE227 (0xE3)
DETECT_STEALTH228 (0xE4)
MOD_AOE_DAMAGE_AVOIDANCE229 (0xE5)
UNKNOWN230230 (0xE6)
PROC_TRIGGER_SPELL_WITH_VALUE231 (0xE7)
MECHANIC_DURATION_MOD232 (0xE8)
UNKNOWN233233 (0xE9)
MECHANIC_DURATION_MOD_NOT_STACK234 (0xEA)
MOD_DISPEL_RESIST235 (0xEB)
UNKNOWN236236 (0xEC)
MOD_SPELL_DAMAGE_OF_ATTACK_POWER237 (0xED)
MOD_SPELL_HEALING_OF_ATTACK_POWER238 (0xEE)
MOD_SCALE_2239 (0xEF)
MOD_EXPERTISE240 (0xF0)
FORCE_MOVE_FORWARD241 (0xF1)
UNKNOWN242242 (0xF2)
UNKNOWN243243 (0xF3)
COMPREHEND_LANGUAGE244 (0xF4)
UNKNOWN245245 (0xF5)
UNKNOWN246246 (0xF6)
MIRROR_IMAGE247 (0xF7)
MOD_COMBAT_RESULT_CHANCE248 (0xF8)
UNKNOWN249249 (0xF9)
MOD_INCREASE_HEALTH_2250 (0xFA)
MOD_ENEMY_DODGE251 (0xFB)
UNKNOWN252252 (0xFC)
UNKNOWN253253 (0xFD)
UNKNOWN254254 (0xFE)
UNKNOWN255255 (0xFF)
UNKNOWN256256 (0x100)
UNKNOWN257257 (0x101)
UNKNOWN258258 (0x102)
UNKNOWN259259 (0x103)
UNKNOWN260260 (0x104)
UNKNOWN261261 (0x105)

Used in:

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/external_spell_3_3_5.wowm:3.

enum AuraMod : u32 {
    NONE = 0;
    BIND_SIGHT = 1;
    MOD_POSSESS = 2;
    PERIODIC_DAMAGE = 3;
    DUMMY = 4;
    MOD_CONFUSE = 5;
    MOD_CHARM = 6;
    MOD_FEAR = 7;
    PERIODIC_HEAL = 8;
    MOD_ATTACKSPEED = 9;
    MOD_THREAT = 10;
    MOD_TAUNT = 11;
    MOD_STUN = 12;
    MOD_DAMAGE_DONE = 13;
    MOD_DAMAGE_TAKEN = 14;
    DAMAGE_SHIELD = 15;
    MOD_STEALTH = 16;
    MOD_STEALTH_DETECT = 17;
    MOD_INVISIBILITY = 18;
    MOD_INVISIBILITY_DETECT = 19;
    OBS_MOD_HEALTH = 20;
    OBS_MOD_POWER = 21;
    MOD_RESISTANCE = 22;
    PERIODIC_TRIGGER_SPELL = 23;
    PERIODIC_ENERGIZE = 24;
    MOD_PACIFY = 25;
    MOD_ROOT = 26;
    MOD_SILENCE = 27;
    REFLECT_SPELLS = 28;
    MOD_STAT = 29;
    MOD_SKILL = 30;
    MOD_INCREASE_SPEED = 31;
    MOD_INCREASE_MOUNTED_SPEED = 32;
    MOD_DECREASE_SPEED = 33;
    MOD_INCREASE_HEALTH = 34;
    MOD_INCREASE_ENERGY = 35;
    MOD_SHAPESHIFT = 36;
    EFFECT_IMMUNITY = 37;
    STATE_IMMUNITY = 38;
    SCHOOL_IMMUNITY = 39;
    DAMAGE_IMMUNITY = 40;
    DISPEL_IMMUNITY = 41;
    PROC_TRIGGER_SPELL = 42;
    PROC_TRIGGER_DAMAGE = 43;
    TRACK_CREATURES = 44;
    TRACK_RESOURCES = 45;
    UNKNOWN46 = 46;
    MOD_PARRY_PERCENT = 47;
    PERIODIC_TRIGGER_SPELL_FROM_CLIENT = 48;
    MOD_DODGE_PERCENT = 49;
    MOD_CRITICAL_HEALING_AMOUNT = 50;
    MOD_BLOCK_PERCENT = 51;
    MOD_WEAPON_CRIT_PERCENT = 52;
    PERIODIC_LEECH = 53;
    MOD_HIT_CHANCE = 54;
    MOD_SPELL_HIT_CHANCE = 55;
    TRANSFORM = 56;
    MOD_SPELL_CRIT_CHANCE = 57;
    MOD_INCREASE_SWIM_SPEED = 58;
    MOD_DAMAGE_DONE_CREATURE = 59;
    MOD_PACIFY_SILENCE = 60;
    MOD_SCALE = 61;
    PERIODIC_HEALTH_FUNNEL = 62;
    UNKNOWN63 = 63;
    PERIODIC_MANA_LEECH = 64;
    MOD_CASTING_SPEED_NOT_STACK = 65;
    FEIGN_DEATH = 66;
    MOD_DISARM = 67;
    MOD_STALKED = 68;
    SCHOOL_ABSORB = 69;
    EXTRA_ATTACKS = 70;
    MOD_SPELL_CRIT_CHANCE_SCHOOL = 71;
    MOD_POWER_COST_SCHOOL_PCT = 72;
    MOD_POWER_COST_SCHOOL = 73;
    REFLECT_SPELLS_SCHOOL = 74;
    MOD_LANGUAGE = 75;
    FAR_SIGHT = 76;
    MECHANIC_IMMUNITY = 77;
    MOUNTED = 78;
    MOD_DAMAGE_PERCENT_DONE = 79;
    MOD_PERCENT_STAT = 80;
    SPLIT_DAMAGE_PCT = 81;
    WATER_BREATHING = 82;
    MOD_BASE_RESISTANCE = 83;
    MOD_REGEN = 84;
    MOD_POWER_REGEN = 85;
    CHANNEL_DEATH_ITEM = 86;
    MOD_DAMAGE_PERCENT_TAKEN = 87;
    MOD_HEALTH_REGEN_PERCENT = 88;
    PERIODIC_DAMAGE_PERCENT = 89;
    UNKNOWN90 = 90;
    MOD_DETECT_RANGE = 91;
    PREVENTS_FLEEING = 92;
    MOD_UNATTACKABLE = 93;
    INTERRUPT_REGEN = 94;
    GHOST = 95;
    SPELL_MAGNET = 96;
    MANA_SHIELD = 97;
    MOD_SKILL_TALENT = 98;
    MOD_ATTACK_POWER = 99;
    AURAS_VISIBLE = 100;
    MOD_RESISTANCE_PCT = 101;
    MOD_MELEE_ATTACK_POWER_VERSUS = 102;
    MOD_TOTAL_THREAT = 103;
    WATER_WALK = 104;
    FEATHER_FALL = 105;
    HOVER = 106;
    ADD_FLAT_MODIFIER = 107;
    ADD_PCT_MODIFIER = 108;
    ADD_TARGET_TRIGGER = 109;
    MOD_POWER_REGEN_PERCENT = 110;
    ADD_CASTER_HIT_TRIGGER = 111;
    OVERRIDE_CLASS_SCRIPTS = 112;
    MOD_RANGED_DAMAGE_TAKEN = 113;
    MOD_RANGED_DAMAGE_TAKEN_PCT = 114;
    MOD_HEALING = 115;
    MOD_REGEN_DURING_COMBAT = 116;
    MOD_MECHANIC_RESISTANCE = 117;
    MOD_HEALING_PCT = 118;
    UNKNOWN119 = 119;
    UNTRACKABLE = 120;
    EMPATHY = 121;
    MOD_OFFHAND_DAMAGE_PCT = 122;
    MOD_TARGET_RESISTANCE = 123;
    MOD_RANGED_ATTACK_POWER = 124;
    MOD_MELEE_DAMAGE_TAKEN = 125;
    MOD_MELEE_DAMAGE_TAKEN_PCT = 126;
    RANGED_ATTACK_POWER_ATTACKER_BONUS = 127;
    MOD_POSSESS_PET = 128;
    MOD_SPEED_ALWAYS = 129;
    MOD_MOUNTED_SPEED_ALWAYS = 130;
    MOD_RANGED_ATTACK_POWER_VERSUS = 131;
    MOD_INCREASE_ENERGY_PERCENT = 132;
    MOD_INCREASE_HEALTH_PERCENT = 133;
    MOD_MANA_REGEN_INTERRUPT = 134;
    MOD_HEALING_DONE = 135;
    MOD_HEALING_DONE_PERCENT = 136;
    MOD_TOTAL_STAT_PERCENTAGE = 137;
    MOD_MELEE_HASTE = 138;
    FORCE_REACTION = 139;
    MOD_RANGED_HASTE = 140;
    MOD_RANGED_AMMO_HASTE = 141;
    MOD_BASE_RESISTANCE_PCT = 142;
    MOD_RESISTANCE_EXCLUSIVE = 143;
    SAFE_FALL = 144;
    MOD_PET_TALENT_POINTS = 145;
    ALLOW_TAME_PET_TYPE = 146;
    MECHANIC_IMMUNITY_MASK = 147;
    RETAIN_COMBO_POINTS = 148;
    REDUCE_PUSHBACK = 149;
    MOD_SHIELD_BLOCKVALUE_PCT = 150;
    TRACK_STEALTHED = 151;
    MOD_DETECTED_RANGE = 152;
    SPLIT_DAMAGE_FLAT = 153;
    MOD_STEALTH_LEVEL = 154;
    MOD_WATER_BREATHING = 155;
    MOD_REPUTATION_GAIN = 156;
    PET_DAMAGE_MULTI = 157;
    MOD_SHIELD_BLOCKVALUE = 158;
    NO_PVP_CREDIT = 159;
    MOD_AOE_AVOIDANCE = 160;
    MOD_HEALTH_REGEN_IN_COMBAT = 161;
    POWER_BURN = 162;
    MOD_CRIT_DAMAGE_BONUS = 163;
    UNKNOWN164 = 164;
    MELEE_ATTACK_POWER_ATTACKER_BONUS = 165;
    MOD_ATTACK_POWER_PCT = 166;
    MOD_RANGED_ATTACK_POWER_PCT = 167;
    MOD_DAMAGE_DONE_VERSUS = 168;
    MOD_CRIT_PERCENT_VERSUS = 169;
    DETECT_AMORE = 170;
    MOD_SPEED_NOT_STACK = 171;
    MOD_MOUNTED_SPEED_NOT_STACK = 172;
    UNKNOWN173 = 173;
    MOD_SPELL_DAMAGE_OF_STAT_PERCENT = 174;
    MOD_SPELL_HEALING_OF_STAT_PERCENT = 175;
    SPIRIT_OF_REDEMPTION = 176;
    AOE_CHARM = 177;
    MOD_DEBUFF_RESISTANCE = 178;
    MOD_ATTACKER_SPELL_CRIT_CHANCE = 179;
    MOD_FLAT_SPELL_DAMAGE_VERSUS = 180;
    UNKNOWN181 = 181;
    MOD_RESISTANCE_OF_STAT_PERCENT = 182;
    MOD_CRITICAL_THREAT = 183;
    MOD_ATTACKER_MELEE_HIT_CHANCE = 184;
    MOD_ATTACKER_RANGED_HIT_CHANCE = 185;
    MOD_ATTACKER_SPELL_HIT_CHANCE = 186;
    MOD_ATTACKER_MELEE_CRIT_CHANCE = 187;
    MOD_ATTACKER_RANGED_CRIT_CHANCE = 188;
    MOD_RATING = 189;
    MOD_FACTION_REPUTATION_GAIN = 190;
    USE_NORMAL_MOVEMENT_SPEED = 191;
    MOD_MELEE_RANGED_HASTE = 192;
    MELEE_SLOW = 193;
    MOD_TARGET_ABSORB_SCHOOL = 194;
    MOD_TARGET_ABILITY_ABSORB_SCHOOL = 195;
    MOD_COOLDOWN = 196;
    MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE = 197;
    UNKNOWN198 = 198;
    MOD_INCREASES_SPELL_PCT_TO_HIT = 199;
    MOD_XP_PCT = 200;
    FLY = 201;
    IGNORE_COMBAT_RESULT = 202;
    MOD_ATTACKER_MELEE_CRIT_DAMAGE = 203;
    MOD_ATTACKER_RANGED_CRIT_DAMAGE = 204;
    MOD_SCHOOL_CRIT_DMG_TAKEN = 205;
    MOD_INCREASE_VEHICLE_FLIGHT_SPEED = 206;
    MOD_INCREASE_MOUNTED_FLIGHT_SPEED = 207;
    MOD_INCREASE_FLIGHT_SPEED = 208;
    MOD_MOUNTED_FLIGHT_SPEED_ALWAYS = 209;
    MOD_VEHICLE_SPEED_ALWAYS = 210;
    MOD_FLIGHT_SPEED_NOT_STACK = 211;
    MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT = 212;
    MOD_RAGE_FROM_DAMAGE_DEALT = 213;
    UNKNOWN214 = 214;
    ARENA_PREPARATION = 215;
    HASTE_SPELLS = 216;
    MOD_MELEE_HASTE_2 = 217;
    HASTE_RANGED = 218;
    MOD_MANA_REGEN_FROM_STAT = 219;
    MOD_RATING_FROM_STAT = 220;
    MOD_DETAUNT = 221;
    UNKNOWN222 = 222;
    RAID_PROC_FROM_CHARGE = 223;
    UNKNOWN224 = 224;
    RAID_PROC_FROM_CHARGE_WITH_VALUE = 225;
    PERIODIC_DUMMY = 226;
    PERIODIC_TRIGGER_SPELL_WITH_VALUE = 227;
    DETECT_STEALTH = 228;
    MOD_AOE_DAMAGE_AVOIDANCE = 229;
    UNKNOWN230 = 230;
    PROC_TRIGGER_SPELL_WITH_VALUE = 231;
    MECHANIC_DURATION_MOD = 232;
    CHANGE_MODEL_FOR_ALL_HUMANOIDS = 233;
    MECHANIC_DURATION_MOD_NOT_STACK = 234;
    MOD_DISPEL_RESIST = 235;
    CONTROL_VEHICLE = 236;
    MOD_SPELL_DAMAGE_OF_ATTACK_POWER = 237;
    MOD_SPELL_HEALING_OF_ATTACK_POWER = 238;
    MOD_SCALE_2 = 239;
    MOD_EXPERTISE = 240;
    FORCE_MOVE_FORWARD = 241;
    MOD_SPELL_DAMAGE_FROM_HEALING = 242;
    MOD_FACTION = 243;
    COMPREHEND_LANGUAGE = 244;
    MOD_AURA_DURATION_BY_DISPEL = 245;
    MOD_AURA_DURATION_BY_DISPEL_NOT_STACK = 246;
    CLONE_CASTER = 247;
    MOD_COMBAT_RESULT_CHANCE = 248;
    CONVERT_RUNE = 249;
    MOD_INCREASE_HEALTH_2 = 250;
    MOD_ENEMY_DODGE = 251;
    MOD_SPEED_SLOW_ALL = 252;
    MOD_BLOCK_CRIT_CHANCE = 253;
    MOD_DISARM_OFFHAND = 254;
    MOD_MECHANIC_DAMAGE_TAKEN_PERCENT = 255;
    NO_REAGENT_USE = 256;
    MOD_TARGET_RESIST_BY_SPELL_CLASS = 257;
    UNKNOWN258 = 258;
    MOD_HOT_PCT = 259;
    SCREEN_EFFECT = 260;
    PHASE = 261;
    ABILITY_IGNORE_AURASTATE = 262;
    ALLOW_ONLY_ABILITY = 263;
    UNKNOWN264 = 264;
    UNKNOWN265 = 265;
    UNKNOWN266 = 266;
    MOD_IMMUNE_AURA_APPLY_SCHOOL = 267;
    MOD_ATTACK_POWER_OF_STAT_PERCENT = 268;
    MOD_IGNORE_TARGET_RESIST = 269;
    MOD_ABILITY_IGNORE_TARGET_RESIST = 270;
    MOD_DAMAGE_FROM_CASTER = 271;
    IGNORE_MELEE_RESET = 272;
    X_RAY = 273;
    ABILITY_CONSUME_NO_AMMO = 274;
    MOD_IGNORE_SHAPESHIFT = 275;
    MOD_DAMAGE_DONE_FOR_MECHANIC = 276;
    MOD_MAX_AFFECTED_TARGETS = 277;
    MOD_DISARM_RANGED = 278;
    INITIALIZE_IMAGES = 279;
    MOD_ARMOR_PENETRATION_PCT = 280;
    MOD_HONOR_GAIN_PCT = 281;
    MOD_BASE_HEALTH_PCT = 282;
    MOD_HEALING_RECEIVED = 283;
    LINKED = 284;
    MOD_ATTACK_POWER_OF_ARMOR = 285;
    ABILITY_PERIODIC_CRIT = 286;
    DEFLECT_SPELLS = 287;
    IGNORE_HIT_DIRECTION = 288;
    PREVENT_DURABILITY_LOSS = 289;
    MOD_CRIT_PCT = 290;
    MOD_XP_QUEST_PCT = 291;
    OPEN_STABLE = 292;
    OVERRIDE_SPELLS = 293;
    PREVENT_REGENERATE_POWER = 294;
    UNKNOWN295 = 295;
    SET_VEHICLE_ID = 296;
    BLOCK_SPELL_FAMILY = 297;
    STRANGULATE = 298;
    UNKNOWN299 = 299;
    SHARE_DAMAGE_PCT = 300;
    SCHOOL_HEAL_ABSORB = 301;
    UNKNOWN302 = 302;
    MOD_DAMAGE_DONE_VERSUS_AURASTATE = 303;
    MOD_FAKE_INEBRIATE = 304;
    MOD_MINIMUM_SPEED = 305;
    UNKNOWN306 = 306;
    HEAL_ABSORB_TEST = 307;
    MOD_CRIT_CHANCE_FOR_CASTER = 308;
    UNKNOWN309 = 309;
    MOD_CREATURE_AOE_DAMAGE_AVOIDANCE = 310;
    UNKNOWN311 = 311;
    UNKNOWN312 = 312;
    UNKNOWN313 = 313;
    PREVENT_RESURRECTION = 314;
    UNDERWATER_WALKING = 315;
    PERIODIC_HASTE = 316;
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
BIND_SIGHT1 (0x01)
MOD_POSSESS2 (0x02)
PERIODIC_DAMAGE3 (0x03)
DUMMY4 (0x04)
MOD_CONFUSE5 (0x05)
MOD_CHARM6 (0x06)
MOD_FEAR7 (0x07)
PERIODIC_HEAL8 (0x08)
MOD_ATTACKSPEED9 (0x09)
MOD_THREAT10 (0x0A)
MOD_TAUNT11 (0x0B)
MOD_STUN12 (0x0C)
MOD_DAMAGE_DONE13 (0x0D)
MOD_DAMAGE_TAKEN14 (0x0E)
DAMAGE_SHIELD15 (0x0F)
MOD_STEALTH16 (0x10)
MOD_STEALTH_DETECT17 (0x11)
MOD_INVISIBILITY18 (0x12)
MOD_INVISIBILITY_DETECT19 (0x13)
OBS_MOD_HEALTH20 (0x14)
OBS_MOD_POWER21 (0x15)
MOD_RESISTANCE22 (0x16)
PERIODIC_TRIGGER_SPELL23 (0x17)
PERIODIC_ENERGIZE24 (0x18)
MOD_PACIFY25 (0x19)
MOD_ROOT26 (0x1A)
MOD_SILENCE27 (0x1B)
REFLECT_SPELLS28 (0x1C)
MOD_STAT29 (0x1D)
MOD_SKILL30 (0x1E)
MOD_INCREASE_SPEED31 (0x1F)
MOD_INCREASE_MOUNTED_SPEED32 (0x20)
MOD_DECREASE_SPEED33 (0x21)
MOD_INCREASE_HEALTH34 (0x22)
MOD_INCREASE_ENERGY35 (0x23)
MOD_SHAPESHIFT36 (0x24)
EFFECT_IMMUNITY37 (0x25)
STATE_IMMUNITY38 (0x26)
SCHOOL_IMMUNITY39 (0x27)
DAMAGE_IMMUNITY40 (0x28)
DISPEL_IMMUNITY41 (0x29)
PROC_TRIGGER_SPELL42 (0x2A)
PROC_TRIGGER_DAMAGE43 (0x2B)
TRACK_CREATURES44 (0x2C)
TRACK_RESOURCES45 (0x2D)
UNKNOWN4646 (0x2E)
MOD_PARRY_PERCENT47 (0x2F)
PERIODIC_TRIGGER_SPELL_FROM_CLIENT48 (0x30)
MOD_DODGE_PERCENT49 (0x31)
MOD_CRITICAL_HEALING_AMOUNT50 (0x32)
MOD_BLOCK_PERCENT51 (0x33)
MOD_WEAPON_CRIT_PERCENT52 (0x34)
PERIODIC_LEECH53 (0x35)
MOD_HIT_CHANCE54 (0x36)
MOD_SPELL_HIT_CHANCE55 (0x37)
TRANSFORM56 (0x38)
MOD_SPELL_CRIT_CHANCE57 (0x39)
MOD_INCREASE_SWIM_SPEED58 (0x3A)
MOD_DAMAGE_DONE_CREATURE59 (0x3B)
MOD_PACIFY_SILENCE60 (0x3C)
MOD_SCALE61 (0x3D)
PERIODIC_HEALTH_FUNNEL62 (0x3E)
UNKNOWN6363 (0x3F)
PERIODIC_MANA_LEECH64 (0x40)
MOD_CASTING_SPEED_NOT_STACK65 (0x41)
FEIGN_DEATH66 (0x42)
MOD_DISARM67 (0x43)
MOD_STALKED68 (0x44)
SCHOOL_ABSORB69 (0x45)
EXTRA_ATTACKS70 (0x46)
MOD_SPELL_CRIT_CHANCE_SCHOOL71 (0x47)
MOD_POWER_COST_SCHOOL_PCT72 (0x48)
MOD_POWER_COST_SCHOOL73 (0x49)
REFLECT_SPELLS_SCHOOL74 (0x4A)
MOD_LANGUAGE75 (0x4B)
FAR_SIGHT76 (0x4C)
MECHANIC_IMMUNITY77 (0x4D)
MOUNTED78 (0x4E)
MOD_DAMAGE_PERCENT_DONE79 (0x4F)
MOD_PERCENT_STAT80 (0x50)
SPLIT_DAMAGE_PCT81 (0x51)
WATER_BREATHING82 (0x52)
MOD_BASE_RESISTANCE83 (0x53)
MOD_REGEN84 (0x54)
MOD_POWER_REGEN85 (0x55)
CHANNEL_DEATH_ITEM86 (0x56)
MOD_DAMAGE_PERCENT_TAKEN87 (0x57)
MOD_HEALTH_REGEN_PERCENT88 (0x58)
PERIODIC_DAMAGE_PERCENT89 (0x59)
UNKNOWN9090 (0x5A)
MOD_DETECT_RANGE91 (0x5B)
PREVENTS_FLEEING92 (0x5C)
MOD_UNATTACKABLE93 (0x5D)
INTERRUPT_REGEN94 (0x5E)
GHOST95 (0x5F)
SPELL_MAGNET96 (0x60)
MANA_SHIELD97 (0x61)
MOD_SKILL_TALENT98 (0x62)
MOD_ATTACK_POWER99 (0x63)
AURAS_VISIBLE100 (0x64)
MOD_RESISTANCE_PCT101 (0x65)
MOD_MELEE_ATTACK_POWER_VERSUS102 (0x66)
MOD_TOTAL_THREAT103 (0x67)
WATER_WALK104 (0x68)
FEATHER_FALL105 (0x69)
HOVER106 (0x6A)
ADD_FLAT_MODIFIER107 (0x6B)
ADD_PCT_MODIFIER108 (0x6C)
ADD_TARGET_TRIGGER109 (0x6D)
MOD_POWER_REGEN_PERCENT110 (0x6E)
ADD_CASTER_HIT_TRIGGER111 (0x6F)
OVERRIDE_CLASS_SCRIPTS112 (0x70)
MOD_RANGED_DAMAGE_TAKEN113 (0x71)
MOD_RANGED_DAMAGE_TAKEN_PCT114 (0x72)
MOD_HEALING115 (0x73)
MOD_REGEN_DURING_COMBAT116 (0x74)
MOD_MECHANIC_RESISTANCE117 (0x75)
MOD_HEALING_PCT118 (0x76)
UNKNOWN119119 (0x77)
UNTRACKABLE120 (0x78)
EMPATHY121 (0x79)
MOD_OFFHAND_DAMAGE_PCT122 (0x7A)
MOD_TARGET_RESISTANCE123 (0x7B)
MOD_RANGED_ATTACK_POWER124 (0x7C)
MOD_MELEE_DAMAGE_TAKEN125 (0x7D)
MOD_MELEE_DAMAGE_TAKEN_PCT126 (0x7E)
RANGED_ATTACK_POWER_ATTACKER_BONUS127 (0x7F)
MOD_POSSESS_PET128 (0x80)
MOD_SPEED_ALWAYS129 (0x81)
MOD_MOUNTED_SPEED_ALWAYS130 (0x82)
MOD_RANGED_ATTACK_POWER_VERSUS131 (0x83)
MOD_INCREASE_ENERGY_PERCENT132 (0x84)
MOD_INCREASE_HEALTH_PERCENT133 (0x85)
MOD_MANA_REGEN_INTERRUPT134 (0x86)
MOD_HEALING_DONE135 (0x87)
MOD_HEALING_DONE_PERCENT136 (0x88)
MOD_TOTAL_STAT_PERCENTAGE137 (0x89)
MOD_MELEE_HASTE138 (0x8A)
FORCE_REACTION139 (0x8B)
MOD_RANGED_HASTE140 (0x8C)
MOD_RANGED_AMMO_HASTE141 (0x8D)
MOD_BASE_RESISTANCE_PCT142 (0x8E)
MOD_RESISTANCE_EXCLUSIVE143 (0x8F)
SAFE_FALL144 (0x90)
MOD_PET_TALENT_POINTS145 (0x91)
ALLOW_TAME_PET_TYPE146 (0x92)
MECHANIC_IMMUNITY_MASK147 (0x93)
RETAIN_COMBO_POINTS148 (0x94)
REDUCE_PUSHBACK149 (0x95)
MOD_SHIELD_BLOCKVALUE_PCT150 (0x96)
TRACK_STEALTHED151 (0x97)
MOD_DETECTED_RANGE152 (0x98)
SPLIT_DAMAGE_FLAT153 (0x99)
MOD_STEALTH_LEVEL154 (0x9A)
MOD_WATER_BREATHING155 (0x9B)
MOD_REPUTATION_GAIN156 (0x9C)
PET_DAMAGE_MULTI157 (0x9D)
MOD_SHIELD_BLOCKVALUE158 (0x9E)
NO_PVP_CREDIT159 (0x9F)
MOD_AOE_AVOIDANCE160 (0xA0)
MOD_HEALTH_REGEN_IN_COMBAT161 (0xA1)
POWER_BURN162 (0xA2)
MOD_CRIT_DAMAGE_BONUS163 (0xA3)
UNKNOWN164164 (0xA4)
MELEE_ATTACK_POWER_ATTACKER_BONUS165 (0xA5)
MOD_ATTACK_POWER_PCT166 (0xA6)
MOD_RANGED_ATTACK_POWER_PCT167 (0xA7)
MOD_DAMAGE_DONE_VERSUS168 (0xA8)
MOD_CRIT_PERCENT_VERSUS169 (0xA9)
DETECT_AMORE170 (0xAA)
MOD_SPEED_NOT_STACK171 (0xAB)
MOD_MOUNTED_SPEED_NOT_STACK172 (0xAC)
UNKNOWN173173 (0xAD)
MOD_SPELL_DAMAGE_OF_STAT_PERCENT174 (0xAE)
MOD_SPELL_HEALING_OF_STAT_PERCENT175 (0xAF)
SPIRIT_OF_REDEMPTION176 (0xB0)
AOE_CHARM177 (0xB1)
MOD_DEBUFF_RESISTANCE178 (0xB2)
MOD_ATTACKER_SPELL_CRIT_CHANCE179 (0xB3)
MOD_FLAT_SPELL_DAMAGE_VERSUS180 (0xB4)
UNKNOWN181181 (0xB5)
MOD_RESISTANCE_OF_STAT_PERCENT182 (0xB6)
MOD_CRITICAL_THREAT183 (0xB7)
MOD_ATTACKER_MELEE_HIT_CHANCE184 (0xB8)
MOD_ATTACKER_RANGED_HIT_CHANCE185 (0xB9)
MOD_ATTACKER_SPELL_HIT_CHANCE186 (0xBA)
MOD_ATTACKER_MELEE_CRIT_CHANCE187 (0xBB)
MOD_ATTACKER_RANGED_CRIT_CHANCE188 (0xBC)
MOD_RATING189 (0xBD)
MOD_FACTION_REPUTATION_GAIN190 (0xBE)
USE_NORMAL_MOVEMENT_SPEED191 (0xBF)
MOD_MELEE_RANGED_HASTE192 (0xC0)
MELEE_SLOW193 (0xC1)
MOD_TARGET_ABSORB_SCHOOL194 (0xC2)
MOD_TARGET_ABILITY_ABSORB_SCHOOL195 (0xC3)
MOD_COOLDOWN196 (0xC4)
MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE197 (0xC5)
UNKNOWN198198 (0xC6)
MOD_INCREASES_SPELL_PCT_TO_HIT199 (0xC7)
MOD_XP_PCT200 (0xC8)
FLY201 (0xC9)
IGNORE_COMBAT_RESULT202 (0xCA)
MOD_ATTACKER_MELEE_CRIT_DAMAGE203 (0xCB)
MOD_ATTACKER_RANGED_CRIT_DAMAGE204 (0xCC)
MOD_SCHOOL_CRIT_DMG_TAKEN205 (0xCD)
MOD_INCREASE_VEHICLE_FLIGHT_SPEED206 (0xCE)
MOD_INCREASE_MOUNTED_FLIGHT_SPEED207 (0xCF)
MOD_INCREASE_FLIGHT_SPEED208 (0xD0)
MOD_MOUNTED_FLIGHT_SPEED_ALWAYS209 (0xD1)
MOD_VEHICLE_SPEED_ALWAYS210 (0xD2)
MOD_FLIGHT_SPEED_NOT_STACK211 (0xD3)
MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT212 (0xD4)
MOD_RAGE_FROM_DAMAGE_DEALT213 (0xD5)
UNKNOWN214214 (0xD6)
ARENA_PREPARATION215 (0xD7)
HASTE_SPELLS216 (0xD8)
MOD_MELEE_HASTE_2217 (0xD9)
HASTE_RANGED218 (0xDA)
MOD_MANA_REGEN_FROM_STAT219 (0xDB)
MOD_RATING_FROM_STAT220 (0xDC)
MOD_DETAUNT221 (0xDD)
UNKNOWN222222 (0xDE)
RAID_PROC_FROM_CHARGE223 (0xDF)
UNKNOWN224224 (0xE0)
RAID_PROC_FROM_CHARGE_WITH_VALUE225 (0xE1)
PERIODIC_DUMMY226 (0xE2)
PERIODIC_TRIGGER_SPELL_WITH_VALUE227 (0xE3)
DETECT_STEALTH228 (0xE4)
MOD_AOE_DAMAGE_AVOIDANCE229 (0xE5)
UNKNOWN230230 (0xE6)
PROC_TRIGGER_SPELL_WITH_VALUE231 (0xE7)
MECHANIC_DURATION_MOD232 (0xE8)
CHANGE_MODEL_FOR_ALL_HUMANOIDS233 (0xE9)
MECHANIC_DURATION_MOD_NOT_STACK234 (0xEA)
MOD_DISPEL_RESIST235 (0xEB)
CONTROL_VEHICLE236 (0xEC)
MOD_SPELL_DAMAGE_OF_ATTACK_POWER237 (0xED)
MOD_SPELL_HEALING_OF_ATTACK_POWER238 (0xEE)
MOD_SCALE_2239 (0xEF)
MOD_EXPERTISE240 (0xF0)
FORCE_MOVE_FORWARD241 (0xF1)
MOD_SPELL_DAMAGE_FROM_HEALING242 (0xF2)
MOD_FACTION243 (0xF3)
COMPREHEND_LANGUAGE244 (0xF4)
MOD_AURA_DURATION_BY_DISPEL245 (0xF5)
MOD_AURA_DURATION_BY_DISPEL_NOT_STACK246 (0xF6)
CLONE_CASTER247 (0xF7)
MOD_COMBAT_RESULT_CHANCE248 (0xF8)
CONVERT_RUNE249 (0xF9)
MOD_INCREASE_HEALTH_2250 (0xFA)
MOD_ENEMY_DODGE251 (0xFB)
MOD_SPEED_SLOW_ALL252 (0xFC)
MOD_BLOCK_CRIT_CHANCE253 (0xFD)
MOD_DISARM_OFFHAND254 (0xFE)
MOD_MECHANIC_DAMAGE_TAKEN_PERCENT255 (0xFF)
NO_REAGENT_USE256 (0x100)
MOD_TARGET_RESIST_BY_SPELL_CLASS257 (0x101)
UNKNOWN258258 (0x102)
MOD_HOT_PCT259 (0x103)
SCREEN_EFFECT260 (0x104)
PHASE261 (0x105)
ABILITY_IGNORE_AURASTATE262 (0x106)
ALLOW_ONLY_ABILITY263 (0x107)
UNKNOWN264264 (0x108)
UNKNOWN265265 (0x109)
UNKNOWN266266 (0x10A)
MOD_IMMUNE_AURA_APPLY_SCHOOL267 (0x10B)
MOD_ATTACK_POWER_OF_STAT_PERCENT268 (0x10C)
MOD_IGNORE_TARGET_RESIST269 (0x10D)
MOD_ABILITY_IGNORE_TARGET_RESIST270 (0x10E)
MOD_DAMAGE_FROM_CASTER271 (0x10F)
IGNORE_MELEE_RESET272 (0x110)
X_RAY273 (0x111)
ABILITY_CONSUME_NO_AMMO274 (0x112)
MOD_IGNORE_SHAPESHIFT275 (0x113)
MOD_DAMAGE_DONE_FOR_MECHANIC276 (0x114)
MOD_MAX_AFFECTED_TARGETS277 (0x115)
MOD_DISARM_RANGED278 (0x116)
INITIALIZE_IMAGES279 (0x117)
MOD_ARMOR_PENETRATION_PCT280 (0x118)
MOD_HONOR_GAIN_PCT281 (0x119)
MOD_BASE_HEALTH_PCT282 (0x11A)
MOD_HEALING_RECEIVED283 (0x11B)
LINKED284 (0x11C)
MOD_ATTACK_POWER_OF_ARMOR285 (0x11D)
ABILITY_PERIODIC_CRIT286 (0x11E)
DEFLECT_SPELLS287 (0x11F)
IGNORE_HIT_DIRECTION288 (0x120)
PREVENT_DURABILITY_LOSS289 (0x121)
MOD_CRIT_PCT290 (0x122)
MOD_XP_QUEST_PCT291 (0x123)
OPEN_STABLE292 (0x124)
OVERRIDE_SPELLS293 (0x125)
PREVENT_REGENERATE_POWER294 (0x126)
UNKNOWN295295 (0x127)
SET_VEHICLE_ID296 (0x128)
BLOCK_SPELL_FAMILY297 (0x129)
STRANGULATE298 (0x12A)
UNKNOWN299299 (0x12B)
SHARE_DAMAGE_PCT300 (0x12C)
SCHOOL_HEAL_ABSORB301 (0x12D)
UNKNOWN302302 (0x12E)
MOD_DAMAGE_DONE_VERSUS_AURASTATE303 (0x12F)
MOD_FAKE_INEBRIATE304 (0x130)
MOD_MINIMUM_SPEED305 (0x131)
UNKNOWN306306 (0x132)
HEAL_ABSORB_TEST307 (0x133)
MOD_CRIT_CHANCE_FOR_CASTER308 (0x134)
UNKNOWN309309 (0x135)
MOD_CREATURE_AOE_DAMAGE_AVOIDANCE310 (0x136)
UNKNOWN311311 (0x137)
UNKNOWN312312 (0x138)
UNKNOWN313313 (0x139)
PREVENT_RESURRECTION314 (0x13A)
UNDERWATER_WALKING315 (0x13B)
PERIODIC_HASTE316 (0x13C)

Used in:

CharacterRaceFlags

Client Version 1.12

Used in ChrRaces.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/character_race_flags.wowm:2.

flag CharacterRaceFlags : u8 {
    NONE = 0x00;
    NOT_PLAYABLE = 0x01;
    BARE_FEET = 0x02;
    CAN_CURRENT_FORM_MOUNT = 0x04;
    UNKNOWN2 = 0x08;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
NOT_PLAYABLE1 (0x01)
BARE_FEET2 (0x02)
CAN_CURRENT_FORM_MOUNT4 (0x04)
UNKNOWN28 (0x08)

Used in:

ClientLanguage

Client Version 1.12

Used in GMSurveyCurrentSurvey.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/client_language.wowm:2.

enum ClientLanguage : u8 {
    ENGLISH = 0;
    KOREAN = 1;
    FRENCH = 2;
    GERMAN = 3;
    CHINESE = 4;
    TAIWANESE = 5;
    SPANISH_SPAIN = 6;
    SPANISH_LATIN_AMERICA = 7;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
ENGLISH0 (0x00)
KOREAN1 (0x01)
FRENCH2 (0x02)
GERMAN3 (0x03)
CHINESE4 (0x04)
TAIWANESE5 (0x05)
SPANISH_SPAIN6 (0x06)
SPANISH_LATIN_AMERICA7 (0x07)

Used in:

DefaultChannelFlags

Client Version 1.12

Used in ChatChannels.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/channel_flags.wowm:2.

flag DefaultChannelFlags : u32 {
    NONE = 0x00;
    INITIAL = 0x01;
    ZONE_DEPENDENCY = 0x02;
    GLOBAL = 0x04;
    TRADE = 0x08;
    CITY_ONLY = 0x10;
    CITY_ONLY_2 = 0x20;
    DEFENCE = 0x10000;
    UNSELECTED = 0x40000;
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
INITIAL1 (0x01)
ZONE_DEPENDENCY2 (0x02)
GLOBAL4 (0x04)
TRADE8 (0x08)
CITY_ONLY16 (0x10)
CITY_ONLY_232 (0x20)
DEFENCE65536 (0x10000)
UNSELECTED262144 (0x40000)

Used in:

EmoteFlags

Client Version 1.12

Used in Emotes.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/emote_flags.wowm:2.

flag EmoteFlags : u8 {
    TALK = 0x08;
    QUESTION = 0x10;
    EXCLAMATION = 0x20;
    SHOUT = 0x40;
    LAUGH = 0x80;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
TALK8 (0x08)
QUESTION16 (0x10)
EXCLAMATION32 (0x20)
SHOUT64 (0x40)
LAUGH128 (0x80)

Used in:

EmoteSpecProc

Client Version 1.12

Used in Emotes.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/emote_spec_proc.wowm:2.

enum EmoteSpecProc : u8 {
    NO_LOOP = 0;
    LOOP = 1;
    LOOP_WITH_SOUND = 2;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NO_LOOP0 (0x00)
LOOP1 (0x01)
LOOP_WITH_SOUND2 (0x02)

Used in:

FluidSpeed

Client Version 1.12

Used in SoundWaterType.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/fluid_speed.wowm:2.

enum FluidSpeed : u8 {
    STILL = 0;
    SLOW = 4;
    RAPID = 8;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
STILL0 (0x00)
SLOW4 (0x04)
RAPID8 (0x08)

Used in:

InstanceType

Client Version 1.12

Used in Map.dbc, and LFGDungeons.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/instance_type.wowm:2.

enum InstanceType : u8 {
    NORMAL = 0x00;
    GROUP_INSTANCE = 0x01;
    RAID_INSTANCE = 0x02;
    BATTLEGROUND = 0x03;
    WORLD_ZONE = 0x04;
    BATTLEGROUND2 = 0x05;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NORMAL0 (0x00)
GROUP_INSTANCE1 (0x01)
RAID_INSTANCE2 (0x02)
BATTLEGROUND3 (0x03)
WORLD_ZONE4 (0x04)
BATTLEGROUND25 (0x05)

Used in:

ItemEnvTypes

Client Version 1.12

Used in SheatheSoundLookups.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/item_env_types.wowm:2.

enum ItemEnvTypes : u8 {
    SHIELD = 0;
    METAL_WEAPON = 1;
    WOOD_WEAPON = 2;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
SHIELD0 (0x00)
METAL_WEAPON1 (0x01)
WOOD_WEAPON2 (0x02)

Used in:

ItemWeaponClass

Client Version 1.12

Used in ItemClass.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/item_weapon_class.wowm:2.

enum ItemWeaponClass : u8 {
    ITEM = 0;
    WEAPON = 1;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
ITEM0 (0x00)
WEAPON1 (0x01)

Used in:

LfgFaction

Client Version 1.12

Used in LFGDungeons.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/lfg_faction.wowm:2.

enum LfgFaction : i8 {
    NEUTRAL = -1;
    HORDE = 0;
    ALLIANCE = 1;
}

Type

The basic type is i8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NEUTRAL-1 (0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
HORDE0 (0x00)
ALLIANCE1 (0x01)

Used in:

LockType

Client Version 1.12

Used in Lock.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/lock_type.wowm:2.

enum LockType : u8 {
    NONE = 0;
    ITEM_REQUIRED = 1;
    LOCKTYPE_REFERENCE = 2;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
ITEM_REQUIRED1 (0x01)
LOCKTYPE_REFERENCE2 (0x02)

Used in:

OceanType

Client Version 1.12

Used in LiquidType.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/ocean_type.wowm:2.

enum OceanType : u8 {
    FIRE = 0;
    SLIME = 2;
    WATER = 3;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
FIRE0 (0x00)
SLIME2 (0x02)
WATER3 (0x03)

Used in:

PvpFlags

Client Version 1.12

Used in FactionTemplate.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/pvp_flags.wowm:2.

flag PvpFlags : u16 {
    PVP_FLAGGED = 0x800;
    ATTACK_PVPING_PLAYERS = 0x1000;
}

Type

The basic type is u16, a 2 byte (16 bit) little endian integer.

Enumerators

EnumeratorValueComment
PVP_FLAGGED2048 (0x800)
ATTACK_PVPING_PLAYERS4096 (0x1000)

Used in:

Race

Client Version 0.5.4

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/enums/race.wowm:1.

enum Race : u8 {
    HUMAN = 1;
    ORC = 2;
    DWARF = 3;
    NIGHT_ELF = 4;
    UNDEAD = 5;
    TAUREN = 6;
    GNOME = 7;
    TROLL = 8;
    GOBLIN = 9;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
HUMAN1 (0x01)
ORC2 (0x02)
DWARF3 (0x03)
NIGHT_ELF4 (0x04)
UNDEAD5 (0x05)
TAUREN6 (0x06)
GNOME7 (0x07)
TROLL8 (0x08)
GOBLIN9 (0x09)

Used in:

Client Version 0.5.5, Client Version 0.6, Client Version 0.7, Client Version 0.8, Client Version 0.9, Client Version 0.10, Client Version 0.11, Client Version 0.12, Client Version 1

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/enums/race.wowm:15.

enum Race : u8 {
    HUMAN = 1;
    ORC = 2;
    DWARF = 3;
    NIGHT_ELF = 4;
    UNDEAD = 5;
    TAUREN = 6;
    GNOME = 7;
    TROLL = 8;
    GOBLIN = 9;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
HUMAN1 (0x01)
ORC2 (0x02)
DWARF3 (0x03)
NIGHT_ELF4 (0x04)
UNDEAD5 (0x05)
TAUREN6 (0x06)
GNOME7 (0x07)
TROLL8 (0x08)
GOBLIN9 (0x09)

Used in:

Client Version 2.4.3, Client Version 3.0, Client Version 3.1

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/enums/race.wowm:30.

enum Race : u8 {
    HUMAN = 1;
    ORC = 2;
    DWARF = 3;
    NIGHT_ELF = 4;
    UNDEAD = 5;
    TAUREN = 6;
    GNOME = 7;
    TROLL = 8;
    GOBLIN = 9;
    BLOOD_ELF = 10;
    DRAENEI = 11;
    FEL_ORC = 12;
    NAGA = 13;
    BROKEN = 14;
    SKELETON = 15;
    VRYKUL = 16;
    TUSKARR = 17;
    FOREST_TROLL = 18;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
HUMAN1 (0x01)
ORC2 (0x02)
DWARF3 (0x03)
NIGHT_ELF4 (0x04)
UNDEAD5 (0x05)
TAUREN6 (0x06)
GNOME7 (0x07)
TROLL8 (0x08)
GOBLIN9 (0x09)
BLOOD_ELF10 (0x0A)
DRAENEI11 (0x0B)
FEL_ORC12 (0x0C)
NAGA13 (0x0D)
BROKEN14 (0x0E)
SKELETON15 (0x0F)
VRYKUL16 (0x10)
TUSKARR17 (0x11)
FOREST_TROLL18 (0x12)

Used in:

Client Version 3.2, Client Version 3.3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/enums/race.wowm:54.

enum Race : u8 {
    HUMAN = 1;
    ORC = 2;
    DWARF = 3;
    NIGHT_ELF = 4;
    UNDEAD = 5;
    TAUREN = 6;
    GNOME = 7;
    TROLL = 8;
    GOBLIN = 9;
    BLOOD_ELF = 10;
    DRAENEI = 11;
    FEL_ORC = 12;
    NAGA = 13;
    BROKEN = 14;
    SKELETON = 15;
    VRYKUL = 16;
    TUSKARR = 17;
    FOREST_TROLL = 18;
    TAUNKA = 19;
    NORTHREND_SKELETON = 20;
    ICE_TROLL = 21;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
HUMAN1 (0x01)
ORC2 (0x02)
DWARF3 (0x03)
NIGHT_ELF4 (0x04)
UNDEAD5 (0x05)
TAUREN6 (0x06)
GNOME7 (0x07)
TROLL8 (0x08)
GOBLIN9 (0x09)
BLOOD_ELF10 (0x0A)
DRAENEI11 (0x0B)
FEL_ORC12 (0x0C)
NAGA13 (0x0D)
BROKEN14 (0x0E)
SKELETON15 (0x0F)
VRYKUL16 (0x10)
TUSKARR17 (0x11)
FOREST_TROLL18 (0x12)
TAUNKA19 (0x13)
NORTHREND_SKELETON20 (0x14)
ICE_TROLL21 (0x15)

Used in:

ReputationFlags

Client Version 1.12

Used in Faction.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/reputation_flags.wowm:2.

flag ReputationFlags : u8 {
    VISIBLE_TO_CLIENT = 0x01;
    ENABLE_AT_WAR = 0x02;
    HIDE_IN_CLIENT = 0x04;
    FORCE_HIDE_IN_CLIENT = 0x08;
    FORCE_AT_PEACE = 0x10;
    FACTION_INACTIVE = 0x20;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
VISIBLE_TO_CLIENT1 (0x01)
ENABLE_AT_WAR2 (0x02)
HIDE_IN_CLIENT4 (0x04)
FORCE_HIDE_IN_CLIENT8 (0x08)
FORCE_AT_PEACE16 (0x10)
FACTION_INACTIVE32 (0x20)

Used in:

Scalp

Client Version 1.12

Used in CharHairGeosets.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/scalp.wowm:2.

enum Scalp : u8 {
    HAIR = 0;
    BALD = 1;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
HAIR0 (0x00)
BALD1 (0x01)

Used in:

SelectionType

Client Version 1.12

Used in CharSections.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/selection_type.wowm:2.

enum SelectionType : u8 {
    BASE_SKIN = 0x00;
    FACE = 0x01;
    FACIAL_HAIR = 0x02;
    HAIR = 0x03;
    UNDERWEAR = 0x04;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
BASE_SKIN0 (0x00)
FACE1 (0x01)
FACIAL_HAIR2 (0x02)
HAIR3 (0x03)
UNDERWEAR4 (0x04)

Used in:

ServerCategory

Client Version 1.12

Used in Cfg_Categories.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/server_category.wowm:2.

enum ServerCategory : u8 {
    ONE = 1;
    TWO = 2;
    THREE = 3;
    FIVE = 5;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
ONE1 (0x01)
TWO2 (0x02)
THREE3 (0x03)
FIVE5 (0x05)

Used in:

ServerRegion

Client Version 1.12

Used in Cfg_Categories.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/server_region.wowm:2.

enum ServerRegion : u8 {
    UNITED_STATES = 1;
    KOREA = 2;
    EUROPE = 3;
    TAIWAN = 4;
    CHINA = 5;
    TEST_SERVER = 99;
    QA_SERVER = 101;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
UNITED_STATES1 (0x01)
KOREA2 (0x02)
EUROPE3 (0x03)
TAIWAN4 (0x04)
CHINA5 (0x05)
TEST_SERVER99 (0x63)
QA_SERVER101 (0x65)

Used in:

SizeClass

Client Version 1.12, Client Version 2, Client Version 3

Used in the CreatureDisplayInfo.dbc, CreatureModelData.dbc and DeathThudLookups.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/size_class.wowm:2.

enum SizeClass : i8 {
    NONE = -1;
    SMALL = 0;
    MEDIUM = 1;
    LARGE = 2;
    GIANT = 3;
    COLOSSAL = 4;
}

Type

The basic type is i8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NONE-1 (0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
SMALL0 (0x00)
MEDIUM1 (0x01)
LARGE2 (0x02)
GIANT3 (0x03)
COLOSSAL4 (0x04)

Used in:

SkillCategory

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/skill_category.wowm:3.

enum SkillCategory : u8 {
    ATTRIBUTE = 5;
    WEAPON = 6;
    CLASS = 7;
    ARMOR = 8;
    SECONDARY_PROFESSION = 9;
    LANGUAGE = 10;
    PRIMARY_PROFESSION = 11;
    GENERIC = 12;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
ATTRIBUTE5 (0x05)Not used for anything in Vanilla and TBC, only used for Pet - Exotic Spirit Beast in Wrath.
WEAPON6 (0x06)
CLASS7 (0x07)
ARMOR8 (0x08)
SECONDARY_PROFESSION9 (0x09)
LANGUAGE10 (0x0A)
PRIMARY_PROFESSION11 (0x0B)
GENERIC12 (0x0C)

Used in:

SoundType

Client Version 1.12

Used in SoundEntries.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/sound_type.wowm:2.

enum SoundType : u8 {
    UNUSED = 0x00;
    SPELLS = 0x01;
    UI = 0x02;
    FOOTSTEPS = 0x03;
    WEAPON_IMPACT = 0x04;
    WEAPON_MISS = 0x06;
    PICK_UP_PUT_DOWN = 0x09;
    NPC_COMBAT = 0x0A;
    ERRORS = 0x0C;
    OBJECTS = 0x0E;
    DEATH = 0x10;
    NPC_GREETINGS = 0x11;
    TEST = 0x12;
    ARMOUR_FOLEY = 0x13;
    FOOTSTEPS_2 = 0x14;
    WATER_CHARACTER = 0x15;
    WATER_LIQUID = 0x16;
    TRADESKILLS = 0x17;
    DOODADS = 0x19;
    SPELL_FIZZLE = 0x1A;
    NPC_LOOPS = 0x1B;
    ZONE_MUSIC = 0x1C;
    EMOTES = 0x1D;
    NARRATION_MUSIC = 0x1E;
    NARRATION = 0x1F;
    ZONE_AMBIENCE = 0x32;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
UNUSED0 (0x00)
SPELLS1 (0x01)
UI2 (0x02)
FOOTSTEPS3 (0x03)
WEAPON_IMPACT4 (0x04)
WEAPON_MISS6 (0x06)
PICK_UP_PUT_DOWN9 (0x09)
NPC_COMBAT10 (0x0A)
ERRORS12 (0x0C)
OBJECTS14 (0x0E)
DEATH16 (0x10)
NPC_GREETINGS17 (0x11)
TEST18 (0x12)
ARMOUR_FOLEY19 (0x13)
FOOTSTEPS_220 (0x14)
WATER_CHARACTER21 (0x15)
WATER_LIQUID22 (0x16)
TRADESKILLS23 (0x17)
DOODADS25 (0x19)
SPELL_FIZZLE26 (0x1A)
NPC_LOOPS27 (0x1B)
ZONE_MUSIC28 (0x1C)
EMOTES29 (0x1D)
NARRATION_MUSIC30 (0x1E)
NARRATION31 (0x1F)
ZONE_AMBIENCE50 (0x32)

Used in:

SwingType

Client Version 1.12

Used in WeaponSwingSounds2.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/swing_type.wowm:2.

enum SwingType : u8 {
    LIGHT = 0;
    MEDIUM = 1;
    HEAVY = 2;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
LIGHT0 (0x00)
MEDIUM1 (0x01)
HEAVY2 (0x02)

Used in:

WeaponFlags

Client Version 1.12

Used in AnimationData.dbc.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/external/weapon_flags.wowm:2.

flag WeaponFlags : u8 {
    WEAPON_NOT_AFFECTED_BY_ANIMATION = 0x00;
    SHEATHE_WEAPONS_AUTOMATICALLY = 0x04;
    SHEATHE_WEAPONS_AUTOMATICALLY_2 = 0x10;
    UNSHEATHE_WEAPONS = 0x20;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
WEAPON_NOT_AFFECTED_BY_ANIMATION0 (0x00)
SHEATHE_WEAPONS_AUTOMATICALLY4 (0x04)
SHEATHE_WEAPONS_AUTOMATICALLY_216 (0x10)
UNSHEATHE_WEAPONS32 (0x20)

Used in:

CMD_AUTH_LOGON_CHALLENGE_Client

Protocol Version *

First message sent by the client when attempting to connect. The server will respond with CMD_AUTH_LOGON_CHALLENGE_Server.

Has the exact same layout as CMD_AUTH_RECONNECT_CHALLENGE_Client.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/challenge_client.wowm:21.

clogin CMD_AUTH_LOGON_CHALLENGE_Client = 0x00 {
    ProtocolVersion protocol_version;
    u16 size = self.size;
    u32 game_name = "\0WoW";
    Version version;
    Platform platform;
    Os os;
    Locale locale;
    i32 utc_timezone_offset;
    IpAddress client_ip_address;
    String account_name;
}

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x011 / -ProtocolVersionprotocol_versionDetermines which version of messages are used for further communication.
0x022 / Littleu16size
0x044 / Littleu32game_name
0x085 / -Versionversion
0x0D4 / -Platformplatform
0x114 / -Osos
0x154 / -Localelocale
0x194 / Littlei32utc_timezone_offsetOffset in minutes from UTC time. 180 would be UTC+3
0x1D4 / BigIpAddressclient_ip_address
0x21- / -Stringaccount_nameReal clients can send a maximum of 16 UTF-8 characters. This is not necessarily 16 bytes since one character can be more than one byte.
Real clients will send a fully uppercased username, and will perform authentication calculations on the uppercased version.
Uppercasing in regards to non-ASCII values is little weird. See https://docs.rs/wow_srp/latest/wow_srp/normalized_string/index.html for more info.

Examples

Example 1

Comment

x86 Windows user on enGB attempting to log in with username 'A'.

0, // opcode (0)
3, // protocol_version: ProtocolVersion THREE (3)
31, 0, // size: u16
87, 111, 87, 0, // game_name: u32
1, // Version.major: u8
12, // Version.minor: u8
1, // Version.patch: u8
243, 22, // Version.build: u16
54, 56, 120, 0, // platform: Platform X86 ("\0x86")
110, 105, 87, 0, // os: Os WINDOWS ("\0Win")
66, 71, 110, 101, // locale: Locale EN_GB ("enGB")
60, 0, 0, 0, // utc_timezone_offset: i32
127, 0, 0, 1, // client_ip_address: IpAddress
1, // string length
65, // account_name: String

Locale

Protocol Version *

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/challenge_client_commons.wowm:13.

enum Locale : u32 {
    EN_GB = "enGB";
    EN_US = "enUS";
    ES_MX = "esMX";
    PT_BR = "ptBR";
    FR_FR = "frFR";
    DE_DE = "deDE";
    ES_ES = "esES";
    PT_PT = "ptPT";
    IT_IT = "itIT";
    RU_RU = "ruRU";
    KO_KR = "koKR";
    ZH_TW = "zhTW";
    EN_TW = "enTW";
    EN_CN = "enCN";
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
EN_GB1701726018 (0x656E4742)
EN_US1701729619 (0x656E5553)
ES_MX1702055256 (0x65734D58)
PT_BR1886667346 (0x70744252)
FR_FR1718765138 (0x66724652)
DE_DE1684358213 (0x64654445)
ES_ES1702053203 (0x65734553)
PT_PT1886670932 (0x70745054)
IT_IT1769228628 (0x69744954)
RU_RU1920291413 (0x72755255)
KO_KR1802455890 (0x6B6F4B52)
ZH_TW2053657687 (0x7A685457)
EN_TW1701729367 (0x656E5457)
EN_CN1701725006 (0x656E434E)

Used in:

Os

Protocol Version *

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/challenge_client_commons.wowm:3.

enum Os : u32 {
    WINDOWS = "\0Win";
    MAC_OS_X = "\0OSX";
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
WINDOWS5728622 (0x57696E)
MAC_OS_X5198680 (0x4F5358)

Used in:

Platform

Protocol Version *

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/challenge_client_commons.wowm:8.

enum Platform : u32 {
    X86 = "\0x86";
    POWER_PC = "\0PPC";
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
X867878710 (0x783836)
POWER_PC5263427 (0x505043)

Used in:

ProtocolVersion

Protocol Version *

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/challenge_client.wowm:3.

enum ProtocolVersion : u8 {
    TWO = 2;
    THREE = 3;
    FIVE = 5;
    SIX = 6;
    SEVEN = 7;
    EIGHT = 8;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
TWO2 (0x02)Used for login by 1.1.2.4125.
Used for reconnect by 1.1.2.4125, 1.12.1.5875, 2.0.0.6080, and 2.0.1.6180.
THREE3 (0x03)Used for login by 1.12.1.5875, 2.0.0.6080, and 2.0.1.6180.
FIVE5 (0x05)Used for login and reconnect by 2.0.3.6299.
SIX6 (0x06)Used for login and reconnect by 2.0.5.6320, 2.0.7.6383, 2.0.8.6403, 2.0.10.6448, 2.0.12.6546, 2.1.0.6692, 2.1.0.6729, 2.1.1.6739, 2.1.2.6803, 2.1.3.6898, 2.2.0.7272, 2.2.2.7318, 2.2.2.7318, and 2.2.3.7359.
SEVEN7 (0x07)Used for login and reconnect by 2.3.0.7561, 2.3.2.7741, and 2.3.3.7799.
EIGHT8 (0x08)Used for login and reconnect by 2.4.0.8089, 2.4.1.8125, 2.4.2.8278, 2.4.3.8606, and 3.3.5.12340.

Used in:

CMD_AUTH_LOGON_CHALLENGE_Server

Protocol Version 2

Reply to CMD_AUTH_LOGON_CHALLENGE_Client.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/challenge_server.wowm:2.

slogin CMD_AUTH_LOGON_CHALLENGE_Server = 0x00 {
    u8 protocol_version = 0;
    LoginResult result;
    if (result == SUCCESS) {
        u8[32] server_public_key;
        u8 generator_length;
        u8[generator_length] generator;
        u8 large_safe_prime_length;
        u8[large_safe_prime_length] large_safe_prime;
        u8[32] salt;
        u8[16] crc_salt;
    }
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x011 / -u8protocol_versionMangos statically sets this to 0. It is unknown exactly what it does.
0x021 / -LoginResultresult

If result is equal to SUCCESS:

OffsetSize / EndiannessTypeNameComment
0x0332 / -u8[32]server_public_key
0x231 / -u8generator_lengthThe only realistic values for the generator are well below 255, so there's no reason for this to anything other than 1.
0x24? / -u8[generator_length]generator
-1 / -u8large_safe_prime_lengthClient can not handle arrays greater than 32.
-? / -u8[large_safe_prime_length]large_safe_prime
-32 / -u8[32]salt
-16 / -u8[16]crc_saltUsed for the crc_hash in CMD_AUTH_LOGON_PROOF_Client.

Examples

Example 1

Comment

Reply to CMD_AUTH_LOGON_CHALLENGE_Client.

0, // opcode (0)
0, // protocol_version: u8
0, // result: LoginResult SUCCESS (0x00)
73, 216, 194, 188, 104, 92, 43, 206, 74, 244, 250, 7, 10, 71, 147, 120, 88, 120, 
70, 181, 131, 212, 65, 130, 158, 36, 216, 135, 206, 218, 52, 70, // server_public_key: u8[32]
1, // generator_length: u8
7, // generator: u8[generator_length]
32, // large_safe_prime_length: u8
183, 155, 62, 42, 135, 130, 60, 171, 143, 94, 191, 191, 142, 177, 1, 8, 83, 80, 
6, 41, 139, 91, 173, 189, 91, 83, 225, 137, 94, 100, 75, 137, // large_safe_prime: u8[large_safe_prime_length]
199, 9, 135, 125, 140, 101, 82, 102, 165, 125, 184, 101, 61, 110, 166, 43, 181, 
84, 242, 11, 207, 116, 214, 74, 119, 167, 211, 61, 243, 48, 144, 135, // salt: u8[32]
186, 163, 30, 153, 160, 11, 33, 87, 252, 55, 63, 179, 105, 205, 210, 241, // crc_salt: u8[16]

Protocol Version 3

Reply to CMD_AUTH_LOGON_CHALLENGE_Client.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/challenge_server.wowm:76.

slogin CMD_AUTH_LOGON_CHALLENGE_Server = 0x00 {
    u8 protocol_version = 0;
    LoginResult result;
    if (result == SUCCESS) {
        u8[32] server_public_key;
        u8 generator_length;
        u8[generator_length] generator;
        u8 large_safe_prime_length;
        u8[large_safe_prime_length] large_safe_prime;
        u8[32] salt;
        u8[16] crc_salt;
        SecurityFlag security_flag;
        if (security_flag == PIN) {
            u32 pin_grid_seed;
            u8[16] pin_salt;
        }
    }
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Examples

Example 1

0, // opcode (0)
0, // protocol_version: u8
0, // result: LoginResult SUCCESS (0x00)
73, 216, 194, 188, 104, 92, 43, 206, 74, 244, 250, 7, 10, 71, 147, 120, 88, 120, 
70, 181, 131, 212, 65, 130, 158, 36, 216, 135, 206, 218, 52, 70, // server_public_key: u8[32]
1, // generator_length: u8
7, // generator: u8[generator_length]
32, // large_safe_prime_length: u8
183, 155, 62, 42, 135, 130, 60, 171, 143, 94, 191, 191, 142, 177, 1, 8, 83, 80, 
6, 41, 139, 91, 173, 189, 91, 83, 225, 137, 94, 100, 75, 137, // large_safe_prime: u8[large_safe_prime_length]
199, 9, 135, 125, 140, 101, 82, 102, 165, 125, 184, 101, 61, 110, 166, 43, 181, 
84, 242, 11, 207, 116, 214, 74, 119, 167, 211, 61, 243, 48, 144, 135, // salt: u8[32]
186, 163, 30, 153, 160, 11, 33, 87, 252, 55, 63, 179, 105, 205, 210, 241, // crc_salt: u8[16]
1, // security_flag: SecurityFlag PIN (0x1)
239, 190, 173, 222, // pin_grid_seed: u32
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // pin_salt: u8[16]

Example 2

0, // opcode (0)
0, // protocol_version: u8
0, // result: LoginResult SUCCESS (0x00)
73, 216, 194, 188, 104, 92, 43, 206, 74, 244, 250, 7, 10, 71, 147, 120, 88, 120, 
70, 181, 131, 212, 65, 130, 158, 36, 216, 135, 206, 218, 52, 70, // server_public_key: u8[32]
1, // generator_length: u8
7, // generator: u8[generator_length]
32, // large_safe_prime_length: u8
183, 155, 62, 42, 135, 130, 60, 171, 143, 94, 191, 191, 142, 177, 1, 8, 83, 80, 
6, 41, 139, 91, 173, 189, 91, 83, 225, 137, 94, 100, 75, 137, // large_safe_prime: u8[large_safe_prime_length]
199, 9, 135, 125, 140, 101, 82, 102, 165, 125, 184, 101, 61, 110, 166, 43, 181, 
84, 242, 11, 207, 116, 214, 74, 119, 167, 211, 61, 243, 48, 144, 135, // salt: u8[32]
186, 163, 30, 153, 160, 11, 33, 87, 252, 55, 63, 179, 105, 205, 210, 241, // crc_salt: u8[16]
0, // security_flag: SecurityFlag NONE (0x0)

Protocol Version 5, Protocol Version 6, Protocol Version 7

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/challenge_server.wowm:219.

slogin CMD_AUTH_LOGON_CHALLENGE_Server = 0x00 {
    u8 protocol_version = 0;
    LoginResult result;
    if (result == SUCCESS) {
        u8[32] server_public_key;
        u8 generator_length;
        u8[generator_length] generator;
        u8 large_safe_prime_length;
        u8[large_safe_prime_length] large_safe_prime;
        u8[32] salt;
        u8[16] crc_salt;
        SecurityFlag security_flag;
        if (security_flag & PIN) {
            u32 pin_grid_seed;
            u8[16] pin_salt;
        }
        if (security_flag & MATRIX_CARD) {
            u8 width;
            u8 height;
            u8 digit_count;
            u8 challenge_count;
            u64 seed;
        }
    }
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Examples

Example 1

0, // opcode (0)
0, // protocol_version: u8
0, // result: LoginResult SUCCESS (0x00)
58, 43, 237, 162, 169, 101, 37, 78, 69, 4, 195, 168, 246, 106, 134, 201, 81, 114, 
215, 99, 107, 54, 137, 237, 192, 63, 252, 193, 66, 165, 121, 50, // server_public_key: u8[32]
1, // generator_length: u8
7, // generator: u8[generator_length]
32, // large_safe_prime_length: u8
183, 155, 62, 42, 135, 130, 60, 171, 143, 94, 191, 191, 142, 177, 1, 8, 83, 80, 
6, 41, 139, 91, 173, 189, 91, 83, 225, 137, 94, 100, 75, 137, // large_safe_prime: u8[large_safe_prime_length]
174, 120, 124, 96, 218, 20, 21, 219, 130, 36, 67, 72, 71, 108, 63, 211, 188, 22, 
60, 89, 21, 128, 86, 5, 146, 59, 82, 46, 114, 18, 41, 82, // salt: u8[32]
70, 15, 184, 237, 114, 71, 169, 255, 31, 242, 228, 96, 253, 255, 127, 249, // crc_salt: u8[16]
3, // security_flag: SecurityFlag  PIN| MATRIX_CARD (3)
0, 0, 0, 0, // pin_grid_seed: u32
89, 29, 166, 11, 52, 253, 100, 94, 56, 108, 84, 192, 24, 182, 167, 47, // pin_salt: u8[16]
8, // width: u8
8, // height: u8
2, // digit_count: u8
1, // challenge_count: u8
194, 216, 23, 56, 5, 251, 84, 143, // seed: u64

Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/challenge_server.wowm:300.

slogin CMD_AUTH_LOGON_CHALLENGE_Server = 0x00 {
    u8 protocol_version = 0;
    LoginResult result;
    if (result == SUCCESS) {
        u8[32] server_public_key;
        u8 generator_length;
        u8[generator_length] generator;
        u8 large_safe_prime_length;
        u8[large_safe_prime_length] large_safe_prime;
        u8[32] salt;
        u8[16] crc_salt;
        SecurityFlag security_flag;
        if (security_flag & PIN) {
            u32 pin_grid_seed;
            u8[16] pin_salt;
        }
        if (security_flag & MATRIX_CARD) {
            u8 width;
            u8 height;
            u8 digit_count;
            u8 challenge_count;
            u64 seed;
        }
        if (security_flag & AUTHENTICATOR) {
            u8 required;
        }
    }
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Examples

Example 1

0, // opcode (0)
0, // protocol_version: u8
0, // result: LoginResult SUCCESS (0x00)
73, 216, 194, 188, 104, 92, 43, 206, 74, 244, 250, 7, 10, 71, 147, 120, 88, 120, 
70, 181, 131, 212, 65, 130, 158, 36, 216, 135, 206, 218, 52, 70, // server_public_key: u8[32]
1, // generator_length: u8
7, // generator: u8[generator_length]
32, // large_safe_prime_length: u8
183, 155, 62, 42, 135, 130, 60, 171, 143, 94, 191, 191, 142, 177, 1, 8, 83, 80, 
6, 41, 139, 91, 173, 189, 91, 83, 225, 137, 94, 100, 75, 137, // large_safe_prime: u8[large_safe_prime_length]
199, 9, 135, 125, 140, 101, 82, 102, 165, 125, 184, 101, 61, 110, 166, 43, 181, 
84, 242, 11, 207, 116, 214, 74, 119, 167, 211, 61, 243, 48, 144, 135, // salt: u8[32]
186, 163, 30, 153, 160, 11, 33, 87, 252, 55, 63, 179, 105, 205, 210, 241, // crc_salt: u8[16]
0, // security_flag: SecurityFlag  NONE (0)

Example 2

0, // opcode (0)
0, // protocol_version: u8
0, // result: LoginResult SUCCESS (0x00)
73, 216, 194, 188, 104, 92, 43, 206, 74, 244, 250, 7, 10, 71, 147, 120, 88, 120, 
70, 181, 131, 212, 65, 130, 158, 36, 216, 135, 206, 218, 52, 70, // server_public_key: u8[32]
1, // generator_length: u8
7, // generator: u8[generator_length]
32, // large_safe_prime_length: u8
183, 155, 62, 42, 135, 130, 60, 171, 143, 94, 191, 191, 142, 177, 1, 8, 83, 80, 
6, 41, 139, 91, 173, 189, 91, 83, 225, 137, 94, 100, 75, 137, // large_safe_prime: u8[large_safe_prime_length]
199, 9, 135, 125, 140, 101, 82, 102, 165, 125, 184, 101, 61, 110, 166, 43, 181, 
84, 242, 11, 207, 116, 214, 74, 119, 167, 211, 61, 243, 48, 144, 135, // salt: u8[32]
186, 163, 30, 153, 160, 11, 33, 87, 252, 55, 63, 179, 105, 205, 210, 241, // crc_salt: u8[16]
1, // security_flag: SecurityFlag  PIN (1)
239, 190, 173, 222, // pin_grid_seed: u32
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // pin_salt: u8[16]

Example 3

0, // opcode (0)
0, // protocol_version: u8
0, // result: LoginResult SUCCESS (0x00)
73, 216, 194, 188, 104, 92, 43, 206, 74, 244, 250, 7, 10, 71, 147, 120, 88, 120, 
70, 181, 131, 212, 65, 130, 158, 36, 216, 135, 206, 218, 52, 70, // server_public_key: u8[32]
1, // generator_length: u8
7, // generator: u8[generator_length]
32, // large_safe_prime_length: u8
183, 155, 62, 42, 135, 130, 60, 171, 143, 94, 191, 191, 142, 177, 1, 8, 83, 80, 
6, 41, 139, 91, 173, 189, 91, 83, 225, 137, 94, 100, 75, 137, // large_safe_prime: u8[large_safe_prime_length]
199, 9, 135, 125, 140, 101, 82, 102, 165, 125, 184, 101, 61, 110, 166, 43, 181, 
84, 242, 11, 207, 116, 214, 74, 119, 167, 211, 61, 243, 48, 144, 135, // salt: u8[32]
186, 163, 30, 153, 160, 11, 33, 87, 252, 55, 63, 179, 105, 205, 210, 241, // crc_salt: u8[16]
4, // security_flag: SecurityFlag  AUTHENTICATOR (4)
1, // required: u8

Example 4

0, // opcode (0)
0, // protocol_version: u8
0, // result: LoginResult SUCCESS (0x00)
73, 216, 194, 188, 104, 92, 43, 206, 74, 244, 250, 7, 10, 71, 147, 120, 88, 120, 
70, 181, 131, 212, 65, 130, 158, 36, 216, 135, 206, 218, 52, 70, // server_public_key: u8[32]
1, // generator_length: u8
7, // generator: u8[generator_length]
32, // large_safe_prime_length: u8
183, 155, 62, 42, 135, 130, 60, 171, 143, 94, 191, 191, 142, 177, 1, 8, 83, 80, 
6, 41, 139, 91, 173, 189, 91, 83, 225, 137, 94, 100, 75, 137, // large_safe_prime: u8[large_safe_prime_length]
199, 9, 135, 125, 140, 101, 82, 102, 165, 125, 184, 101, 61, 110, 166, 43, 181, 
84, 242, 11, 207, 116, 214, 74, 119, 167, 211, 61, 243, 48, 144, 135, // salt: u8[32]
186, 163, 30, 153, 160, 11, 33, 87, 252, 55, 63, 179, 105, 205, 210, 241, // crc_salt: u8[16]
2, // security_flag: SecurityFlag  MATRIX_CARD (2)
255, // width: u8
238, // height: u8
221, // digit_count: u8
204, // challenge_count: u8
222, 202, 250, 239, 190, 173, 222, 0, // seed: u64

Example 5

0, // opcode (0)
0, // protocol_version: u8
5, // result: LoginResult FAIL_INCORRECT_PASSWORD (0x05)

Example 6

0, // opcode (0)
0, // protocol_version: u8
0, // result: LoginResult SUCCESS (0x00)
73, 216, 194, 188, 104, 92, 43, 206, 74, 244, 250, 7, 10, 71, 147, 120, 88, 120, 
70, 181, 131, 212, 65, 130, 158, 36, 216, 135, 206, 218, 52, 70, // server_public_key: u8[32]
1, // generator_length: u8
7, // generator: u8[generator_length]
32, // large_safe_prime_length: u8
183, 155, 62, 42, 135, 130, 60, 171, 143, 94, 191, 191, 142, 177, 1, 8, 83, 80, 
6, 41, 139, 91, 173, 189, 91, 83, 225, 137, 94, 100, 75, 137, // large_safe_prime: u8[large_safe_prime_length]
199, 9, 135, 125, 140, 101, 82, 102, 165, 125, 184, 101, 61, 110, 166, 43, 181, 
84, 242, 11, 207, 116, 214, 74, 119, 167, 211, 61, 243, 48, 144, 135, // salt: u8[32]
186, 163, 30, 153, 160, 11, 33, 87, 252, 55, 63, 179, 105, 205, 210, 241, // crc_salt: u8[16]
6, // security_flag: SecurityFlag  MATRIX_CARD| AUTHENTICATOR (6)
255, // width: u8
238, // height: u8
221, // digit_count: u8
204, // challenge_count: u8
222, 202, 250, 239, 190, 173, 222, 0, // seed: u64
1, // required: u8

Example 7

0, // opcode (0)
0, // protocol_version: u8
5, // result: LoginResult FAIL_INCORRECT_PASSWORD (0x05)

LoginResult

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/common.wowm:29.

enum LoginResult : u8 {
    SUCCESS = 0x00;
    FAIL_UNKNOWN0 = 0x01;
    FAIL_UNKNOWN1 = 0x02;
    FAIL_BANNED = 0x03;
    FAIL_UNKNOWN_ACCOUNT = 0x04;
    FAIL_INCORRECT_PASSWORD = 0x05;
    FAIL_ALREADY_ONLINE = 0x06;
    FAIL_NO_TIME = 0x07;
    FAIL_DB_BUSY = 0x08;
    FAIL_VERSION_INVALID = 0x09;
    LOGIN_DOWNLOAD_FILE = 0x0A;
    FAIL_INVALID_SERVER = 0x0B;
    FAIL_SUSPENDED = 0x0C;
    FAIL_NO_ACCESS = 0x0D;
    SUCCESS_SURVEY = 0x0E;
    FAIL_PARENTALCONTROL = 0x0F;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
SUCCESS0 (0x00)
FAIL_UNKNOWN01 (0x01)
FAIL_UNKNOWN12 (0x02)
FAIL_BANNED3 (0x03)
FAIL_UNKNOWN_ACCOUNT4 (0x04)
FAIL_INCORRECT_PASSWORD5 (0x05)
FAIL_ALREADY_ONLINE6 (0x06)
FAIL_NO_TIME7 (0x07)
FAIL_DB_BUSY8 (0x08)
FAIL_VERSION_INVALID9 (0x09)
LOGIN_DOWNLOAD_FILE10 (0x0A)
FAIL_INVALID_SERVER11 (0x0B)
FAIL_SUSPENDED12 (0x0C)
FAIL_NO_ACCESS13 (0x0D)
SUCCESS_SURVEY14 (0x0E)
FAIL_PARENTALCONTROL15 (0x0F)

Used in:

Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/common.wowm:50.

enum LoginResult : u8 {
    SUCCESS = 0x00;
    FAIL_UNKNOWN0 = 0x01;
    FAIL_UNKNOWN1 = 0x02;
    FAIL_BANNED = 0x03;
    FAIL_UNKNOWN_ACCOUNT = 0x04;
    FAIL_INCORRECT_PASSWORD = 0x05;
    FAIL_ALREADY_ONLINE = 0x06;
    FAIL_NO_TIME = 0x07;
    FAIL_DB_BUSY = 0x08;
    FAIL_VERSION_INVALID = 0x09;
    LOGIN_DOWNLOAD_FILE = 0x0A;
    FAIL_INVALID_SERVER = 0x0B;
    FAIL_SUSPENDED = 0x0C;
    FAIL_NO_ACCESS = 0x0D;
    SUCCESS_SURVEY = 0x0E;
    FAIL_PARENTALCONTROL = 0x0F;
    FAIL_LOCKED_ENFORCED = 0x10;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
SUCCESS0 (0x00)
FAIL_UNKNOWN01 (0x01)
FAIL_UNKNOWN12 (0x02)
FAIL_BANNED3 (0x03)
FAIL_UNKNOWN_ACCOUNT4 (0x04)
FAIL_INCORRECT_PASSWORD5 (0x05)
FAIL_ALREADY_ONLINE6 (0x06)
FAIL_NO_TIME7 (0x07)
FAIL_DB_BUSY8 (0x08)
FAIL_VERSION_INVALID9 (0x09)
LOGIN_DOWNLOAD_FILE10 (0x0A)
FAIL_INVALID_SERVER11 (0x0B)
FAIL_SUSPENDED12 (0x0C)
FAIL_NO_ACCESS13 (0x0D)
SUCCESS_SURVEY14 (0x0E)
FAIL_PARENTALCONTROL15 (0x0F)
FAIL_LOCKED_ENFORCED16 (0x10)

Used in:

SecurityFlag

Protocol Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/common.wowm:1.

enum SecurityFlag : u8 {
    NONE = 0x0;
    PIN = 0x1;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
PIN1 (0x01)

Used in:

Protocol Version 5, Protocol Version 6, Protocol Version 7

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/common.wowm:8.

flag SecurityFlag : u8 {
    NONE = 0x00;
    PIN = 0x01;
    MATRIX_CARD = 0x02;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
PIN1 (0x01)
MATRIX_CARD2 (0x02)Matrix Card 2FA which requires a matrix card.
https://forum.xentax.com/viewtopic.php?f=13&p=186022

Used in:

Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/common.wowm:18.

flag SecurityFlag : u8 {
    NONE = 0x00;
    PIN = 0x01;
    MATRIX_CARD = 0x02;
    AUTHENTICATOR = 0x04;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
PIN1 (0x01)
MATRIX_CARD2 (0x02)Matrix Card 2FA which requires a matrix card.
https://forum.xentax.com/viewtopic.php?f=13&p=186022
AUTHENTICATOR4 (0x04)

Used in:

CMD_AUTH_LOGON_PROOF_Client

Protocol Version 2

Reply after successful CMD_AUTH_LOGON_CHALLENGE_Server.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/proof_client.wowm:13.

clogin CMD_AUTH_LOGON_PROOF_Client = 0x01 {
    u8[32] client_public_key;
    u8[20] client_proof;
    u8[20] crc_hash;
    u8 number_of_telemetry_keys;
    TelemetryKey[number_of_telemetry_keys] telemetry_keys;
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x0132 / -u8[32]client_public_key
0x2120 / -u8[20]client_proof
0x3520 / -u8[20]crc_hash
0x491 / -u8number_of_telemetry_keys
0x4A? / -TelemetryKey[number_of_telemetry_keys]telemetry_keys

Examples

Example 1

1, // opcode (1)
241, 62, 229, 209, 131, 196, 200, 169, 80, 14, 63, 90, 93, 138, 238, 78, 46, 69, 
225, 247, 204, 143, 28, 245, 238, 142, 17, 206, 211, 29, 215, 8, // client_public_key: u8[32]
107, 30, 72, 27, 77, 4, 161, 24, 216, 242, 222, 92, 89, 213, 92, 129, 46, 101, 236, 
62, // client_proof: u8[20]
78, 245, 45, 225, 128, 94, 26, 103, 21, 236, 200, 65, 238, 184, 144, 138, 88, 187, 
0, 208, // crc_hash: u8[20]
2, // number_of_telemetry_keys: u8
255, 0, // [0].TelemetryKey.unknown1: u16
239, 190, 173, 222, // [0].TelemetryKey.unknown2: u32
1, 2, 3, 4, // [0].TelemetryKey.unknown3: u8[4]
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // [0].TelemetryKey.cd_key_proof: u8[20]
254, 0, // [1].TelemetryKey.unknown1: u16
238, 190, 173, 222, // [1].TelemetryKey.unknown2: u32
0, 1, 2, 3, // [1].TelemetryKey.unknown3: u8[4]
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, // [1].TelemetryKey.cd_key_proof: u8[20]
// telemetry_keys: TelemetryKey[number_of_telemetry_keys]

Example 2

1, // opcode (1)
241, 62, 229, 209, 131, 196, 200, 169, 80, 14, 63, 90, 93, 138, 238, 78, 46, 69, 
225, 247, 204, 143, 28, 245, 238, 142, 17, 206, 211, 29, 215, 8, // client_public_key: u8[32]
107, 30, 72, 27, 77, 4, 161, 24, 216, 242, 222, 92, 89, 213, 92, 129, 46, 101, 236, 
62, // client_proof: u8[20]
78, 245, 45, 225, 128, 94, 26, 103, 21, 236, 200, 65, 238, 184, 144, 138, 88, 187, 
0, 208, // crc_hash: u8[20]
1, // number_of_telemetry_keys: u8
255, 0, // [0].TelemetryKey.unknown1: u16
239, 190, 173, 222, // [0].TelemetryKey.unknown2: u32
1, 2, 3, 4, // [0].TelemetryKey.unknown3: u8[4]
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // [0].TelemetryKey.cd_key_proof: u8[20]
// telemetry_keys: TelemetryKey[number_of_telemetry_keys]

Example 3

1, // opcode (1)
241, 62, 229, 209, 131, 196, 200, 169, 80, 14, 63, 90, 93, 138, 238, 78, 46, 69, 
225, 247, 204, 143, 28, 245, 238, 142, 17, 206, 211, 29, 215, 8, // client_public_key: u8[32]
107, 30, 72, 27, 77, 4, 161, 24, 216, 242, 222, 92, 89, 213, 92, 129, 46, 101, 236, 
62, // client_proof: u8[20]
78, 245, 45, 225, 128, 94, 26, 103, 21, 236, 200, 65, 238, 184, 144, 138, 88, 187, 
0, 208, // crc_hash: u8[20]
0, // number_of_telemetry_keys: u8
// telemetry_keys: TelemetryKey[number_of_telemetry_keys]

Protocol Version 3

Reply after successful CMD_AUTH_LOGON_CHALLENGE_Server.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/proof_client.wowm:143.

clogin CMD_AUTH_LOGON_PROOF_Client = 0x01 {
    u8[32] client_public_key;
    u8[20] client_proof;
    u8[20] crc_hash;
    u8 number_of_telemetry_keys;
    TelemetryKey[number_of_telemetry_keys] telemetry_keys;
    SecurityFlag security_flag;
    if (security_flag == PIN) {
        u8[16] pin_salt;
        u8[20] pin_hash;
    }
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x0132 / -u8[32]client_public_key
0x2120 / -u8[20]client_proof
0x3520 / -u8[20]crc_hash
0x491 / -u8number_of_telemetry_keys
0x4A? / -TelemetryKey[number_of_telemetry_keys]telemetry_keys
-1 / -SecurityFlagsecurity_flag

If security_flag is equal to PIN:

OffsetSize / EndiannessTypeNameComment
-16 / -u8[16]pin_salt
-20 / -u8[20]pin_hash

Examples

Example 1

1, // opcode (1)
241, 62, 229, 209, 131, 196, 200, 169, 80, 14, 63, 90, 93, 138, 238, 78, 46, 69, 
225, 247, 204, 143, 28, 245, 238, 142, 17, 206, 211, 29, 215, 8, // client_public_key: u8[32]
107, 30, 72, 27, 77, 4, 161, 24, 216, 242, 222, 92, 89, 213, 92, 129, 46, 101, 236, 
62, // client_proof: u8[20]
78, 245, 45, 225, 128, 94, 26, 103, 21, 236, 200, 65, 238, 184, 144, 138, 88, 187, 
0, 208, // crc_hash: u8[20]
2, // number_of_telemetry_keys: u8
255, 0, // [0].TelemetryKey.unknown1: u16
239, 190, 173, 222, // [0].TelemetryKey.unknown2: u32
1, 2, 3, 4, // [0].TelemetryKey.unknown3: u8[4]
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // [0].TelemetryKey.cd_key_proof: u8[20]
254, 0, // [1].TelemetryKey.unknown1: u16
238, 190, 173, 222, // [1].TelemetryKey.unknown2: u32
0, 1, 2, 3, // [1].TelemetryKey.unknown3: u8[4]
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, // [1].TelemetryKey.cd_key_proof: u8[20]
// telemetry_keys: TelemetryKey[number_of_telemetry_keys]
0, // security_flag: SecurityFlag NONE (0x0)

Example 2

1, // opcode (1)
241, 62, 229, 209, 131, 196, 200, 169, 80, 14, 63, 90, 93, 138, 238, 78, 46, 69, 
225, 247, 204, 143, 28, 245, 238, 142, 17, 206, 211, 29, 215, 8, // client_public_key: u8[32]
107, 30, 72, 27, 77, 4, 161, 24, 216, 242, 222, 92, 89, 213, 92, 129, 46, 101, 236, 
62, // client_proof: u8[20]
78, 245, 45, 225, 128, 94, 26, 103, 21, 236, 200, 65, 238, 184, 144, 138, 88, 187, 
0, 208, // crc_hash: u8[20]
1, // number_of_telemetry_keys: u8
255, 0, // [0].TelemetryKey.unknown1: u16
239, 190, 173, 222, // [0].TelemetryKey.unknown2: u32
1, 2, 3, 4, // [0].TelemetryKey.unknown3: u8[4]
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // [0].TelemetryKey.cd_key_proof: u8[20]
// telemetry_keys: TelemetryKey[number_of_telemetry_keys]
0, // security_flag: SecurityFlag NONE (0x0)

Example 3

1, // opcode (1)
241, 62, 229, 209, 131, 196, 200, 169, 80, 14, 63, 90, 93, 138, 238, 78, 46, 69, 
225, 247, 204, 143, 28, 245, 238, 142, 17, 206, 211, 29, 215, 8, // client_public_key: u8[32]
107, 30, 72, 27, 77, 4, 161, 24, 216, 242, 222, 92, 89, 213, 92, 129, 46, 101, 236, 
62, // client_proof: u8[20]
78, 245, 45, 225, 128, 94, 26, 103, 21, 236, 200, 65, 238, 184, 144, 138, 88, 187, 
0, 208, // crc_hash: u8[20]
0, // number_of_telemetry_keys: u8
// telemetry_keys: TelemetryKey[number_of_telemetry_keys]
0, // security_flag: SecurityFlag NONE (0x0)

Example 4

1, // opcode (1)
241, 62, 229, 209, 131, 196, 200, 169, 80, 14, 63, 90, 93, 138, 238, 78, 46, 69, 
225, 247, 204, 143, 28, 245, 238, 142, 17, 206, 211, 29, 215, 8, // client_public_key: u8[32]
107, 30, 72, 27, 77, 4, 161, 24, 216, 242, 222, 92, 89, 213, 92, 129, 46, 101, 236, 
62, // client_proof: u8[20]
78, 245, 45, 225, 128, 94, 26, 103, 21, 236, 200, 65, 238, 184, 144, 138, 88, 187, 
0, 208, // crc_hash: u8[20]
0, // number_of_telemetry_keys: u8
// telemetry_keys: TelemetryKey[number_of_telemetry_keys]
1, // security_flag: SecurityFlag PIN (0x1)
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // pin_salt: u8[16]
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // pin_hash: u8[20]

Protocol Version 5, Protocol Version 6, Protocol Version 7

Reply after successful CMD_AUTH_LOGON_CHALLENGE_Server.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/proof_client.wowm:319.

clogin CMD_AUTH_LOGON_PROOF_Client = 0x01 {
    u8[32] client_public_key;
    u8[20] client_proof;
    u8[20] crc_hash;
    u8 number_of_telemetry_keys;
    TelemetryKey[number_of_telemetry_keys] telemetry_keys;
    SecurityFlag security_flag;
    if (security_flag & PIN) {
        u8[16] pin_salt;
        u8[20] pin_hash;
    }
    if (security_flag & MATRIX_CARD) {
        u8[20] matrix_card_proof;
    }
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x0132 / -u8[32]client_public_key
0x2120 / -u8[20]client_proof
0x3520 / -u8[20]crc_hash
0x491 / -u8number_of_telemetry_keys
0x4A? / -TelemetryKey[number_of_telemetry_keys]telemetry_keys
-1 / -SecurityFlagsecurity_flag

If security_flag contains PIN:

OffsetSize / EndiannessTypeNameComment
-16 / -u8[16]pin_salt
-20 / -u8[20]pin_hash

If security_flag contains MATRIX_CARD:

OffsetSize / EndiannessTypeNameComment
-20 / -u8[20]matrix_card_proofClient proof of matrix input.
Implementation details at https://gist.github.com/barncastle/979c12a9c5e64d810a28ad1728e7e0f9.

Examples

Example 1

1, // opcode (1)
4, 73, 87, 221, 32, 81, 98, 245, 250, 254, 179, 103, 7, 114, 9, 81, 86, 32, 8, 8, 
32, 193, 38, 202, 200, 247, 59, 70, 251, 136, 50, 6, // client_public_key: u8[32]
130, 201, 151, 96, 66, 228, 117, 249, 124, 96, 98, 228, 84, 102, 166, 254, 220, 
233, 170, 124, // client_proof: u8[20]
254, 116, 218, 112, 136, 204, 118, 36, 196, 40, 136, 181, 239, 196, 29, 180, 107, 
197, 44, 251, // crc_hash: u8[20]
0, // number_of_telemetry_keys: u8
// telemetry_keys: TelemetryKey[number_of_telemetry_keys]
3, // security_flag: SecurityFlag  PIN| MATRIX_CARD (3)
221, 105, 240, 247, 88, 76, 88, 240, 134, 54, 58, 26, 190, 110, 30, 77, // pin_salt: u8[16]
90, 78, 192, 86, 88, 136, 230, 41, 1, 108, 191, 61, 247, 142, 130, 147, 111, 29, 
190, 229, // pin_hash: u8[20]
105, 52, 205, 8, 130, 148, 239, 93, 15, 150, 159, 252, 23, 11, 228, 66, 8, 46, 209, 
16, // matrix_card_proof: u8[20]

Protocol Version 8

Reply after successful CMD_AUTH_LOGON_CHALLENGE_Server.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/proof_client.wowm:365.

clogin CMD_AUTH_LOGON_PROOF_Client = 0x01 {
    u8[32] client_public_key;
    u8[20] client_proof;
    u8[20] crc_hash;
    u8 number_of_telemetry_keys;
    TelemetryKey[number_of_telemetry_keys] telemetry_keys;
    SecurityFlag security_flag;
    if (security_flag & PIN) {
        u8[16] pin_salt;
        u8[20] pin_hash;
    }
    if (security_flag & MATRIX_CARD) {
        u8[20] matrix_card_proof;
    }
    if (security_flag & AUTHENTICATOR) {
        String authenticator;
    }
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x0132 / -u8[32]client_public_key
0x2120 / -u8[20]client_proof
0x3520 / -u8[20]crc_hash
0x491 / -u8number_of_telemetry_keys
0x4A? / -TelemetryKey[number_of_telemetry_keys]telemetry_keys
-1 / -SecurityFlagsecurity_flag

If security_flag contains PIN:

OffsetSize / EndiannessTypeNameComment
-16 / -u8[16]pin_salt
-20 / -u8[20]pin_hash

If security_flag contains MATRIX_CARD:

OffsetSize / EndiannessTypeNameComment
-20 / -u8[20]matrix_card_proofClient proof of matrix input.
Implementation details at https://gist.github.com/barncastle/979c12a9c5e64d810a28ad1728e7e0f9.

If security_flag contains AUTHENTICATOR:

OffsetSize / EndiannessTypeNameComment
-- / -StringauthenticatorString entered by the user in the "Authenticator" popup.
Can be empty and up to 16 characters.
Is not used by the client in any way but just sent directly, so this could in theory be used for anything.

Examples

Example 1

1, // opcode (1)
241, 62, 229, 209, 131, 196, 200, 169, 80, 14, 63, 90, 93, 138, 238, 78, 46, 69, 
225, 247, 204, 143, 28, 245, 238, 142, 17, 206, 211, 29, 215, 8, // client_public_key: u8[32]
107, 30, 72, 27, 77, 4, 161, 24, 216, 242, 222, 92, 89, 213, 92, 129, 46, 101, 236, 
62, // client_proof: u8[20]
78, 245, 45, 225, 128, 94, 26, 103, 21, 236, 200, 65, 238, 184, 144, 138, 88, 187, 
0, 208, // crc_hash: u8[20]
2, // number_of_telemetry_keys: u8
255, 0, // [0].TelemetryKey.unknown1: u16
239, 190, 173, 222, // [0].TelemetryKey.unknown2: u32
1, 2, 3, 4, // [0].TelemetryKey.unknown3: u8[4]
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // [0].TelemetryKey.cd_key_proof: u8[20]
254, 0, // [1].TelemetryKey.unknown1: u16
238, 190, 173, 222, // [1].TelemetryKey.unknown2: u32
0, 1, 2, 3, // [1].TelemetryKey.unknown3: u8[4]
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, // [1].TelemetryKey.cd_key_proof: u8[20]
// telemetry_keys: TelemetryKey[number_of_telemetry_keys]
0, // security_flag: SecurityFlag  NONE (0)

Example 2

1, // opcode (1)
241, 62, 229, 209, 131, 196, 200, 169, 80, 14, 63, 90, 93, 138, 238, 78, 46, 69, 
225, 247, 204, 143, 28, 245, 238, 142, 17, 206, 211, 29, 215, 8, // client_public_key: u8[32]
107, 30, 72, 27, 77, 4, 161, 24, 216, 242, 222, 92, 89, 213, 92, 129, 46, 101, 236, 
62, // client_proof: u8[20]
78, 245, 45, 225, 128, 94, 26, 103, 21, 236, 200, 65, 238, 184, 144, 138, 88, 187, 
0, 208, // crc_hash: u8[20]
1, // number_of_telemetry_keys: u8
255, 0, // [0].TelemetryKey.unknown1: u16
239, 190, 173, 222, // [0].TelemetryKey.unknown2: u32
1, 2, 3, 4, // [0].TelemetryKey.unknown3: u8[4]
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // [0].TelemetryKey.cd_key_proof: u8[20]
// telemetry_keys: TelemetryKey[number_of_telemetry_keys]
0, // security_flag: SecurityFlag  NONE (0)

Example 3

1, // opcode (1)
241, 62, 229, 209, 131, 196, 200, 169, 80, 14, 63, 90, 93, 138, 238, 78, 46, 69, 
225, 247, 204, 143, 28, 245, 238, 142, 17, 206, 211, 29, 215, 8, // client_public_key: u8[32]
107, 30, 72, 27, 77, 4, 161, 24, 216, 242, 222, 92, 89, 213, 92, 129, 46, 101, 236, 
62, // client_proof: u8[20]
78, 245, 45, 225, 128, 94, 26, 103, 21, 236, 200, 65, 238, 184, 144, 138, 88, 187, 
0, 208, // crc_hash: u8[20]
0, // number_of_telemetry_keys: u8
// telemetry_keys: TelemetryKey[number_of_telemetry_keys]
0, // security_flag: SecurityFlag  NONE (0)

Example 4

1, // opcode (1)
241, 62, 229, 209, 131, 196, 200, 169, 80, 14, 63, 90, 93, 138, 238, 78, 46, 69, 
225, 247, 204, 143, 28, 245, 238, 142, 17, 206, 211, 29, 215, 8, // client_public_key: u8[32]
107, 30, 72, 27, 77, 4, 161, 24, 216, 242, 222, 92, 89, 213, 92, 129, 46, 101, 236, 
62, // client_proof: u8[20]
78, 245, 45, 225, 128, 94, 26, 103, 21, 236, 200, 65, 238, 184, 144, 138, 88, 187, 
0, 208, // crc_hash: u8[20]
0, // number_of_telemetry_keys: u8
// telemetry_keys: TelemetryKey[number_of_telemetry_keys]
1, // security_flag: SecurityFlag  PIN (1)
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // pin_salt: u8[16]
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // pin_hash: u8[20]

SecurityFlag

Protocol Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/common.wowm:1.

enum SecurityFlag : u8 {
    NONE = 0x0;
    PIN = 0x1;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
PIN1 (0x01)

Used in:

Protocol Version 5, Protocol Version 6, Protocol Version 7

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/common.wowm:8.

flag SecurityFlag : u8 {
    NONE = 0x00;
    PIN = 0x01;
    MATRIX_CARD = 0x02;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
PIN1 (0x01)
MATRIX_CARD2 (0x02)Matrix Card 2FA which requires a matrix card.
https://forum.xentax.com/viewtopic.php?f=13&p=186022

Used in:

Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/common.wowm:18.

flag SecurityFlag : u8 {
    NONE = 0x00;
    PIN = 0x01;
    MATRIX_CARD = 0x02;
    AUTHENTICATOR = 0x04;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
PIN1 (0x01)
MATRIX_CARD2 (0x02)Matrix Card 2FA which requires a matrix card.
https://forum.xentax.com/viewtopic.php?f=13&p=186022
AUTHENTICATOR4 (0x04)

Used in:

CMD_AUTH_LOGON_PROOF_Server

Protocol Version 2, Protocol Version 3

Reply to CMD_AUTH_LOGON_PROOF_Client.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/proof_server.wowm:2.

slogin CMD_AUTH_LOGON_PROOF_Server = 0x01 {
    LoginResult result;
    if (result == SUCCESS) {
        u8[20] server_proof;
        u32 hardware_survey_id;
    }
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x011 / -LoginResultresult

If result is equal to SUCCESS:

OffsetSize / EndiannessTypeNameComment
0x0220 / -u8[20]server_proof
0x164 / Littleu32hardware_survey_id

Examples

Example 1

1, // opcode (1)
0, // result: LoginResult SUCCESS (0x00)
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // server_proof: u8[20]
239, 190, 173, 222, // hardware_survey_id: u32

Protocol Version 5, Protocol Version 6, Protocol Version 7

Reply to CMD_AUTH_LOGON_PROOF_Client.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/proof_server.wowm:35.

slogin CMD_AUTH_LOGON_PROOF_Server = 0x01 {
    LoginResult result;
    if (result == SUCCESS) {
        u8[20] server_proof;
        u32 hardware_survey_id;
        u16 unknown;
    }
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x011 / -LoginResultresult

If result is equal to SUCCESS:

OffsetSize / EndiannessTypeNameComment
0x0220 / -u8[20]server_proof
0x164 / Littleu32hardware_survey_id
0x1A2 / Littleu16unknown

Examples

Example 1

1, // opcode (1)
0, // result: LoginResult SUCCESS (0x00)
25, 255, 233, 250, 100, 169, 155, 175, 246, 179, 141, 156, 17, 171, 220, 174, 128, 
196, 210, 231, // server_proof: u8[20]
0, 0, 0, 0, // hardware_survey_id: u32
0, 0, // unknown: u16

Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/proof_server.wowm:61.

slogin CMD_AUTH_LOGON_PROOF_Server = 0x01 {
    LoginResult result;
    if (result == SUCCESS) {
        u8[20] server_proof;
        AccountFlag account_flag;
        u32 hardware_survey_id;
        u16 unknown;
    }
    else {
        u16 padding = 0;
    }
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x011 / -LoginResultresult

If result is equal to SUCCESS:

OffsetSize / EndiannessTypeNameComment
0x0220 / -u8[20]server_proof
0x164 / -AccountFlagaccount_flag
0x1A4 / Littleu32hardware_survey_id
0x1E2 / Littleu16unknown

Else: | 0x20 | 2 / Little | u16 | padding | |

Examples

Example 1

Comment

Reply to CMD_AUTH_LOGON_PROOF_Client.

1, // opcode (1)
7, // result: LoginResult FAIL_NO_TIME (0x07)
0, 0, // padding: u16

Example 2

1, // opcode (1)
8, // result: LoginResult FAIL_DB_BUSY (0x08)
0, 0, // padding: u16

AccountFlag

Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/proof_server.wowm:26.

flag AccountFlag : u32 {
    GM = 0x000001;
    TRIAL = 0x000008;
    PROPASS = 0x800000;
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
GM1 (0x01)
TRIAL8 (0x08)
PROPASS8388608 (0x800000)

Used in:

LoginResult

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/common.wowm:29.

enum LoginResult : u8 {
    SUCCESS = 0x00;
    FAIL_UNKNOWN0 = 0x01;
    FAIL_UNKNOWN1 = 0x02;
    FAIL_BANNED = 0x03;
    FAIL_UNKNOWN_ACCOUNT = 0x04;
    FAIL_INCORRECT_PASSWORD = 0x05;
    FAIL_ALREADY_ONLINE = 0x06;
    FAIL_NO_TIME = 0x07;
    FAIL_DB_BUSY = 0x08;
    FAIL_VERSION_INVALID = 0x09;
    LOGIN_DOWNLOAD_FILE = 0x0A;
    FAIL_INVALID_SERVER = 0x0B;
    FAIL_SUSPENDED = 0x0C;
    FAIL_NO_ACCESS = 0x0D;
    SUCCESS_SURVEY = 0x0E;
    FAIL_PARENTALCONTROL = 0x0F;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
SUCCESS0 (0x00)
FAIL_UNKNOWN01 (0x01)
FAIL_UNKNOWN12 (0x02)
FAIL_BANNED3 (0x03)
FAIL_UNKNOWN_ACCOUNT4 (0x04)
FAIL_INCORRECT_PASSWORD5 (0x05)
FAIL_ALREADY_ONLINE6 (0x06)
FAIL_NO_TIME7 (0x07)
FAIL_DB_BUSY8 (0x08)
FAIL_VERSION_INVALID9 (0x09)
LOGIN_DOWNLOAD_FILE10 (0x0A)
FAIL_INVALID_SERVER11 (0x0B)
FAIL_SUSPENDED12 (0x0C)
FAIL_NO_ACCESS13 (0x0D)
SUCCESS_SURVEY14 (0x0E)
FAIL_PARENTALCONTROL15 (0x0F)

Used in:

Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/common.wowm:50.

enum LoginResult : u8 {
    SUCCESS = 0x00;
    FAIL_UNKNOWN0 = 0x01;
    FAIL_UNKNOWN1 = 0x02;
    FAIL_BANNED = 0x03;
    FAIL_UNKNOWN_ACCOUNT = 0x04;
    FAIL_INCORRECT_PASSWORD = 0x05;
    FAIL_ALREADY_ONLINE = 0x06;
    FAIL_NO_TIME = 0x07;
    FAIL_DB_BUSY = 0x08;
    FAIL_VERSION_INVALID = 0x09;
    LOGIN_DOWNLOAD_FILE = 0x0A;
    FAIL_INVALID_SERVER = 0x0B;
    FAIL_SUSPENDED = 0x0C;
    FAIL_NO_ACCESS = 0x0D;
    SUCCESS_SURVEY = 0x0E;
    FAIL_PARENTALCONTROL = 0x0F;
    FAIL_LOCKED_ENFORCED = 0x10;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
SUCCESS0 (0x00)
FAIL_UNKNOWN01 (0x01)
FAIL_UNKNOWN12 (0x02)
FAIL_BANNED3 (0x03)
FAIL_UNKNOWN_ACCOUNT4 (0x04)
FAIL_INCORRECT_PASSWORD5 (0x05)
FAIL_ALREADY_ONLINE6 (0x06)
FAIL_NO_TIME7 (0x07)
FAIL_DB_BUSY8 (0x08)
FAIL_VERSION_INVALID9 (0x09)
LOGIN_DOWNLOAD_FILE10 (0x0A)
FAIL_INVALID_SERVER11 (0x0B)
FAIL_SUSPENDED12 (0x0C)
FAIL_NO_ACCESS13 (0x0D)
SUCCESS_SURVEY14 (0x0E)
FAIL_PARENTALCONTROL15 (0x0F)
FAIL_LOCKED_ENFORCED16 (0x10)

Used in:

CMD_AUTH_RECONNECT_CHALLENGE_Client

Protocol Version *

First message sent by the client when attempting to reconnect. The server will respond with CMD_AUTH_RECONNECT_CHALLENGE_Server.

Has the exact same layout as CMD_AUTH_LOGON_CHALLENGE_Client.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_reconnect/challenge_client.wowm:5.

clogin CMD_AUTH_RECONNECT_CHALLENGE_Client = 0x02 {
    ProtocolVersion protocol_version;
    u16 size = self.size;
    u32 game_name = "\0WoW";
    Version version;
    Platform platform;
    Os os;
    Locale locale;
    i32 utc_timezone_offset;
    IpAddress client_ip_address;
    String account_name;
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x011 / -ProtocolVersionprotocol_versionDetermines which version of messages are used for further communication.
0x022 / Littleu16size
0x044 / Littleu32game_name
0x085 / -Versionversion
0x0D4 / -Platformplatform
0x114 / -Osos
0x154 / -Localelocale
0x194 / Littlei32utc_timezone_offsetOffset in minutes from UTC time. 180 would be UTC+3
0x1D4 / BigIpAddressclient_ip_address
0x21- / -Stringaccount_nameReal clients can send a maximum of 16 UTF-8 characters. This is not necessarily 16 bytes since one character can be more than one byte.
Real clients will send a fully uppercased username, and will perform authentication calculations on the uppercased version.
Uppercasing in regards to non-ASCII values is little weird. See https://docs.rs/wow_srp/latest/wow_srp/normalized_string/index.html for more info.

Examples

Example 1

2, // opcode (2)
2, // protocol_version: ProtocolVersion TWO (2)
31, 0, // size: u16
87, 111, 87, 0, // game_name: u32
1, // Version.major: u8
12, // Version.minor: u8
1, // Version.patch: u8
243, 22, // Version.build: u16
54, 56, 120, 0, // platform: Platform X86 ("\0x86")
110, 105, 87, 0, // os: Os WINDOWS ("\0Win")
66, 71, 110, 101, // locale: Locale EN_GB ("enGB")
60, 0, 0, 0, // utc_timezone_offset: i32
127, 0, 0, 1, // client_ip_address: IpAddress
1, // string length
65, // account_name: String

Example 2

2, // opcode (2)
2, // protocol_version: ProtocolVersion TWO (2)
46, 0, // size: u16
87, 111, 87, 0, // game_name: u32
1, // Version.major: u8
12, // Version.minor: u8
1, // Version.patch: u8
243, 22, // Version.build: u16
54, 56, 120, 0, // platform: Platform X86 ("\0x86")
110, 105, 87, 0, // os: Os WINDOWS ("\0Win")
66, 71, 110, 101, // locale: Locale EN_GB ("enGB")
60, 0, 0, 0, // utc_timezone_offset: i32
127, 0, 0, 1, // client_ip_address: IpAddress
16, // string length
65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, // account_name: String

Locale

Protocol Version *

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/challenge_client_commons.wowm:13.

enum Locale : u32 {
    EN_GB = "enGB";
    EN_US = "enUS";
    ES_MX = "esMX";
    PT_BR = "ptBR";
    FR_FR = "frFR";
    DE_DE = "deDE";
    ES_ES = "esES";
    PT_PT = "ptPT";
    IT_IT = "itIT";
    RU_RU = "ruRU";
    KO_KR = "koKR";
    ZH_TW = "zhTW";
    EN_TW = "enTW";
    EN_CN = "enCN";
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
EN_GB1701726018 (0x656E4742)
EN_US1701729619 (0x656E5553)
ES_MX1702055256 (0x65734D58)
PT_BR1886667346 (0x70744252)
FR_FR1718765138 (0x66724652)
DE_DE1684358213 (0x64654445)
ES_ES1702053203 (0x65734553)
PT_PT1886670932 (0x70745054)
IT_IT1769228628 (0x69744954)
RU_RU1920291413 (0x72755255)
KO_KR1802455890 (0x6B6F4B52)
ZH_TW2053657687 (0x7A685457)
EN_TW1701729367 (0x656E5457)
EN_CN1701725006 (0x656E434E)

Used in:

Os

Protocol Version *

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/challenge_client_commons.wowm:3.

enum Os : u32 {
    WINDOWS = "\0Win";
    MAC_OS_X = "\0OSX";
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
WINDOWS5728622 (0x57696E)
MAC_OS_X5198680 (0x4F5358)

Used in:

Platform

Protocol Version *

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/challenge_client_commons.wowm:8.

enum Platform : u32 {
    X86 = "\0x86";
    POWER_PC = "\0PPC";
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
X867878710 (0x783836)
POWER_PC5263427 (0x505043)

Used in:

ProtocolVersion

Protocol Version *

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/challenge_client.wowm:3.

enum ProtocolVersion : u8 {
    TWO = 2;
    THREE = 3;
    FIVE = 5;
    SIX = 6;
    SEVEN = 7;
    EIGHT = 8;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
TWO2 (0x02)Used for login by 1.1.2.4125.
Used for reconnect by 1.1.2.4125, 1.12.1.5875, 2.0.0.6080, and 2.0.1.6180.
THREE3 (0x03)Used for login by 1.12.1.5875, 2.0.0.6080, and 2.0.1.6180.
FIVE5 (0x05)Used for login and reconnect by 2.0.3.6299.
SIX6 (0x06)Used for login and reconnect by 2.0.5.6320, 2.0.7.6383, 2.0.8.6403, 2.0.10.6448, 2.0.12.6546, 2.1.0.6692, 2.1.0.6729, 2.1.1.6739, 2.1.2.6803, 2.1.3.6898, 2.2.0.7272, 2.2.2.7318, 2.2.2.7318, and 2.2.3.7359.
SEVEN7 (0x07)Used for login and reconnect by 2.3.0.7561, 2.3.2.7741, and 2.3.3.7799.
EIGHT8 (0x08)Used for login and reconnect by 2.4.0.8089, 2.4.1.8125, 2.4.2.8278, 2.4.3.8606, and 3.3.5.12340.

Used in:

CMD_AUTH_RECONNECT_CHALLENGE_Server

Protocol Version 2, Protocol Version 5, Protocol Version 6, Protocol Version 7

Reply to CMD_AUTH_RECONNECT_CHALLENGE_Client.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_reconnect/challenge_server.wowm:2.

slogin CMD_AUTH_RECONNECT_CHALLENGE_Server = 0x02 {
    LoginResult result;
    if (result == SUCCESS) {
        u8[16] challenge_data;
        u8[16] checksum_salt;
    }
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x011 / -LoginResultresult

If result is equal to SUCCESS:

OffsetSize / EndiannessTypeNameComment
0x0216 / -u8[16]challenge_data
0x1216 / -u8[16]checksum_salt

Examples

Example 1

2, // opcode (2)
0, // result: LoginResult SUCCESS (0x00)
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // challenge_data: u8[16]
255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, // checksum_salt: u8[16]

Example 2

2, // opcode (2)
3, // result: LoginResult FAIL_BANNED (0x03)

Protocol Version 8

Reply to CMD_AUTH_RECONNECT_CHALLENGE_Client.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_reconnect/challenge_server.wowm:35.

slogin CMD_AUTH_RECONNECT_CHALLENGE_Server = 0x02 {
    LoginResult result;
    if (result == SUCCESS) {
        u8[16] challenge_data;
        u8[16] checksum_salt;
    }
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x011 / -LoginResultresult

If result is equal to SUCCESS:

OffsetSize / EndiannessTypeNameComment
0x0216 / -u8[16]challenge_data
0x1216 / -u8[16]checksum_salt

Examples

Example 1

2, // opcode (2)
0, // result: LoginResult SUCCESS (0x00)
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // challenge_data: u8[16]
255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, // checksum_salt: u8[16]

Example 2

2, // opcode (2)
3, // result: LoginResult FAIL_BANNED (0x03)

LoginResult

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/common.wowm:29.

enum LoginResult : u8 {
    SUCCESS = 0x00;
    FAIL_UNKNOWN0 = 0x01;
    FAIL_UNKNOWN1 = 0x02;
    FAIL_BANNED = 0x03;
    FAIL_UNKNOWN_ACCOUNT = 0x04;
    FAIL_INCORRECT_PASSWORD = 0x05;
    FAIL_ALREADY_ONLINE = 0x06;
    FAIL_NO_TIME = 0x07;
    FAIL_DB_BUSY = 0x08;
    FAIL_VERSION_INVALID = 0x09;
    LOGIN_DOWNLOAD_FILE = 0x0A;
    FAIL_INVALID_SERVER = 0x0B;
    FAIL_SUSPENDED = 0x0C;
    FAIL_NO_ACCESS = 0x0D;
    SUCCESS_SURVEY = 0x0E;
    FAIL_PARENTALCONTROL = 0x0F;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
SUCCESS0 (0x00)
FAIL_UNKNOWN01 (0x01)
FAIL_UNKNOWN12 (0x02)
FAIL_BANNED3 (0x03)
FAIL_UNKNOWN_ACCOUNT4 (0x04)
FAIL_INCORRECT_PASSWORD5 (0x05)
FAIL_ALREADY_ONLINE6 (0x06)
FAIL_NO_TIME7 (0x07)
FAIL_DB_BUSY8 (0x08)
FAIL_VERSION_INVALID9 (0x09)
LOGIN_DOWNLOAD_FILE10 (0x0A)
FAIL_INVALID_SERVER11 (0x0B)
FAIL_SUSPENDED12 (0x0C)
FAIL_NO_ACCESS13 (0x0D)
SUCCESS_SURVEY14 (0x0E)
FAIL_PARENTALCONTROL15 (0x0F)

Used in:

Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/common.wowm:50.

enum LoginResult : u8 {
    SUCCESS = 0x00;
    FAIL_UNKNOWN0 = 0x01;
    FAIL_UNKNOWN1 = 0x02;
    FAIL_BANNED = 0x03;
    FAIL_UNKNOWN_ACCOUNT = 0x04;
    FAIL_INCORRECT_PASSWORD = 0x05;
    FAIL_ALREADY_ONLINE = 0x06;
    FAIL_NO_TIME = 0x07;
    FAIL_DB_BUSY = 0x08;
    FAIL_VERSION_INVALID = 0x09;
    LOGIN_DOWNLOAD_FILE = 0x0A;
    FAIL_INVALID_SERVER = 0x0B;
    FAIL_SUSPENDED = 0x0C;
    FAIL_NO_ACCESS = 0x0D;
    SUCCESS_SURVEY = 0x0E;
    FAIL_PARENTALCONTROL = 0x0F;
    FAIL_LOCKED_ENFORCED = 0x10;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
SUCCESS0 (0x00)
FAIL_UNKNOWN01 (0x01)
FAIL_UNKNOWN12 (0x02)
FAIL_BANNED3 (0x03)
FAIL_UNKNOWN_ACCOUNT4 (0x04)
FAIL_INCORRECT_PASSWORD5 (0x05)
FAIL_ALREADY_ONLINE6 (0x06)
FAIL_NO_TIME7 (0x07)
FAIL_DB_BUSY8 (0x08)
FAIL_VERSION_INVALID9 (0x09)
LOGIN_DOWNLOAD_FILE10 (0x0A)
FAIL_INVALID_SERVER11 (0x0B)
FAIL_SUSPENDED12 (0x0C)
FAIL_NO_ACCESS13 (0x0D)
SUCCESS_SURVEY14 (0x0E)
FAIL_PARENTALCONTROL15 (0x0F)
FAIL_LOCKED_ENFORCED16 (0x10)

Used in:

CMD_AUTH_RECONNECT_PROOF_Client

Protocol Version 2, Protocol Version 5, Protocol Version 6, Protocol Version 7, Protocol Version 8

Reply to CMD_AUTH_RECONNECT_CHALLENGE_Server.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_reconnect/proof_client.wowm:4.

clogin CMD_AUTH_RECONNECT_PROOF_Client = 0x03 {
    u8[16] proof_data;
    u8[20] client_proof;
    u8[20] client_checksum;
    u8 key_count = 0;
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x0116 / -u8[16]proof_data
0x1120 / -u8[20]client_proof
0x2520 / -u8[20]client_checksum
0x391 / -u8key_count

Examples

Example 1

3, // opcode (3)
234, 250, 185, 198, 24, 21, 11, 242, 249, 50, 206, 39, 98, 121, 150, 153, // proof_data: u8[16]
107, 109, 26, 13, 243, 165, 158, 106, 56, 2, 231, 11, 225, 47, 5, 113, 186, 71, 
140, 163, // client_proof: u8[20]
40, 167, 158, 154, 36, 40, 230, 130, 237, 236, 199, 201, 232, 110, 241, 59, 123, 
225, 224, 245, // client_checksum: u8[20]
0, // key_count: u8

CMD_AUTH_RECONNECT_PROOF_Server

Protocol Version 2

Reply to CMD_AUTH_RECONNECT_PROOF_Client.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_reconnect/proof_server.wowm:2.

slogin CMD_AUTH_RECONNECT_PROOF_Server = 0x03 {
    LoginResult result;
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x011 / -LoginResultresult

Examples

Example 1

3, // opcode (3)
0, // result: LoginResult SUCCESS (0x00)

Example 2

3, // opcode (3)
14, // result: LoginResult SUCCESS_SURVEY (0x0E)

Example 3

3, // opcode (3)
14, // result: LoginResult SUCCESS_SURVEY (0x0E)

Protocol Version 5, Protocol Version 6, Protocol Version 7

Reply to CMD_AUTH_RECONNECT_PROOF_Client.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_reconnect/proof_server.wowm:27.

slogin CMD_AUTH_RECONNECT_PROOF_Server = 0x03 {
    LoginResult result;
    u16 padding = 0;
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x011 / -LoginResultresult
0x022 / Littleu16padding

Examples

Example 1

3, // opcode (3)
0, // result: LoginResult SUCCESS (0x00)
0, 0, // padding: u16

Protocol Version 8

Reply to CMD_AUTH_RECONNECT_PROOF_Client.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_reconnect/proof_server.wowm:45.

slogin CMD_AUTH_RECONNECT_PROOF_Server = 0x03 {
    LoginResult result;
    u16 padding = 0;
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x011 / -LoginResultresult
0x022 / Littleu16padding

Examples

Example 1

3, // opcode (3)
0, // result: LoginResult SUCCESS (0x00)
0, 0, // padding: u16

Example 2

3, // opcode (3)
16, // result: LoginResult FAIL_LOCKED_ENFORCED (0x10)
0, 0, // padding: u16

LoginResult

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/common.wowm:29.

enum LoginResult : u8 {
    SUCCESS = 0x00;
    FAIL_UNKNOWN0 = 0x01;
    FAIL_UNKNOWN1 = 0x02;
    FAIL_BANNED = 0x03;
    FAIL_UNKNOWN_ACCOUNT = 0x04;
    FAIL_INCORRECT_PASSWORD = 0x05;
    FAIL_ALREADY_ONLINE = 0x06;
    FAIL_NO_TIME = 0x07;
    FAIL_DB_BUSY = 0x08;
    FAIL_VERSION_INVALID = 0x09;
    LOGIN_DOWNLOAD_FILE = 0x0A;
    FAIL_INVALID_SERVER = 0x0B;
    FAIL_SUSPENDED = 0x0C;
    FAIL_NO_ACCESS = 0x0D;
    SUCCESS_SURVEY = 0x0E;
    FAIL_PARENTALCONTROL = 0x0F;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
SUCCESS0 (0x00)
FAIL_UNKNOWN01 (0x01)
FAIL_UNKNOWN12 (0x02)
FAIL_BANNED3 (0x03)
FAIL_UNKNOWN_ACCOUNT4 (0x04)
FAIL_INCORRECT_PASSWORD5 (0x05)
FAIL_ALREADY_ONLINE6 (0x06)
FAIL_NO_TIME7 (0x07)
FAIL_DB_BUSY8 (0x08)
FAIL_VERSION_INVALID9 (0x09)
LOGIN_DOWNLOAD_FILE10 (0x0A)
FAIL_INVALID_SERVER11 (0x0B)
FAIL_SUSPENDED12 (0x0C)
FAIL_NO_ACCESS13 (0x0D)
SUCCESS_SURVEY14 (0x0E)
FAIL_PARENTALCONTROL15 (0x0F)

Used in:

Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/common.wowm:50.

enum LoginResult : u8 {
    SUCCESS = 0x00;
    FAIL_UNKNOWN0 = 0x01;
    FAIL_UNKNOWN1 = 0x02;
    FAIL_BANNED = 0x03;
    FAIL_UNKNOWN_ACCOUNT = 0x04;
    FAIL_INCORRECT_PASSWORD = 0x05;
    FAIL_ALREADY_ONLINE = 0x06;
    FAIL_NO_TIME = 0x07;
    FAIL_DB_BUSY = 0x08;
    FAIL_VERSION_INVALID = 0x09;
    LOGIN_DOWNLOAD_FILE = 0x0A;
    FAIL_INVALID_SERVER = 0x0B;
    FAIL_SUSPENDED = 0x0C;
    FAIL_NO_ACCESS = 0x0D;
    SUCCESS_SURVEY = 0x0E;
    FAIL_PARENTALCONTROL = 0x0F;
    FAIL_LOCKED_ENFORCED = 0x10;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
SUCCESS0 (0x00)
FAIL_UNKNOWN01 (0x01)
FAIL_UNKNOWN12 (0x02)
FAIL_BANNED3 (0x03)
FAIL_UNKNOWN_ACCOUNT4 (0x04)
FAIL_INCORRECT_PASSWORD5 (0x05)
FAIL_ALREADY_ONLINE6 (0x06)
FAIL_NO_TIME7 (0x07)
FAIL_DB_BUSY8 (0x08)
FAIL_VERSION_INVALID9 (0x09)
LOGIN_DOWNLOAD_FILE10 (0x0A)
FAIL_INVALID_SERVER11 (0x0B)
FAIL_SUSPENDED12 (0x0C)
FAIL_NO_ACCESS13 (0x0D)
SUCCESS_SURVEY14 (0x0E)
FAIL_PARENTALCONTROL15 (0x0F)
FAIL_LOCKED_ENFORCED16 (0x10)

Used in:

CMD_REALM_LIST_Client

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7, Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/client.wowm:3.

clogin CMD_REALM_LIST_Client = 0x10 {
    u32 padding = 0;
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x014 / Littleu32padding

Examples

Example 1

16, // opcode (16)
0, 0, 0, 0, // padding: u32

CMD_REALM_LIST_Server

Protocol Version 2, Protocol Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/server.wowm:57.

slogin CMD_REALM_LIST_Server = 0x10 {
    u16 size = self.size;
    u32 header_padding = 0;
    u8 number_of_realms;
    Realm[number_of_realms] realms;
    u16 footer_padding = 0;
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x012 / Littleu16size
0x034 / Littleu32header_padding
0x071 / -u8number_of_realms
0x08? / -Realm[number_of_realms]realms
-2 / Littleu16footer_padding

Examples

Example 1

16, // opcode (16)
23, 0, // size: u16
0, 0, 0, 0, // header_padding: u32
1, // number_of_realms: u8
0, 0, 0, 0, // [0].Realm.realm_type: RealmType PLAYER_VS_ENVIRONMENT (0)
0, // [0].Realm.flag: RealmFlag  NONE (0)
65, 0, // [0].Realm.name: CString
65, 0, // [0].Realm.address: CString
0, 0, 200, 67, // [0].Realm.population: Population
1, // [0].Realm.number_of_characters_on_realm: u8
0, // [0].Realm.category: RealmCategory DEFAULT (0x0)
2, // [0].Realm.realm_id: u8
// realms: Realm[number_of_realms]
0, 0, // footer_padding: u16

Example 2

16, // opcode (16)
23, 0, // size: u16
0, 0, 0, 0, // header_padding: u32
1, // number_of_realms: u8
0, 0, 0, 0, // [0].Realm.realm_type: RealmType PLAYER_VS_ENVIRONMENT (0)
3, // [0].Realm.flag: RealmFlag  INVALID| OFFLINE (3)
65, 0, // [0].Realm.name: CString
65, 0, // [0].Realm.address: CString
0, 0, 200, 67, // [0].Realm.population: Population
1, // [0].Realm.number_of_characters_on_realm: u8
0, // [0].Realm.category: RealmCategory DEFAULT (0x0)
2, // [0].Realm.realm_id: u8
// realms: Realm[number_of_realms]
0, 0, // footer_padding: u16

Protocol Version 5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/server.wowm:81.

slogin CMD_REALM_LIST_Server = 0x10 {
    u16 size = self.size;
    u32 header_padding = 0;
    u8 number_of_realms;
    Realm[number_of_realms] realms;
    u16 footer_padding = 0;
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x012 / Littleu16size
0x034 / Littleu32header_padding
0x071 / -u8number_of_realms
0x08? / -Realm[number_of_realms]realms
-2 / Littleu16footer_padding

Examples

Example 1

16, // opcode (16)
80, 0, // size: u16
0, 0, 0, 0, // header_padding: u32
2, // number_of_realms: u8
0, // [0].Realm.realm_type: RealmType PLAYER_VS_ENVIRONMENT (0)
0, // [0].Realm.locked: Bool
0, // [0].Realm.flag: RealmFlag  NONE (0)
84, 101, 115, 116, 32, 82, 101, 97, 108, 109, 50, 0, // [0].Realm.name: CString
108, 111, 99, 97, 108, 104, 111, 115, 116, 58, 56, 48, 56, 53, 0, // [0].Realm.address: CString
0, 0, 72, 67, // [0].Realm.population: Population
3, // [0].Realm.number_of_characters_on_realm: u8
1, // [0].Realm.category: RealmCategory ONE (0x1)
1, // [0].Realm.realm_id: u8
0, // [1].Realm.realm_type: RealmType PLAYER_VS_ENVIRONMENT (0)
0, // [1].Realm.locked: Bool
0, // [1].Realm.flag: RealmFlag  NONE (0)
84, 101, 115, 116, 32, 82, 101, 97, 108, 109, 0, // [1].Realm.name: CString
108, 111, 99, 97, 108, 104, 111, 115, 116, 58, 56, 48, 56, 53, 0, // [1].Realm.address: CString
0, 0, 72, 67, // [1].Realm.population: Population
3, // [1].Realm.number_of_characters_on_realm: u8
2, // [1].Realm.category: RealmCategory TWO (0x2)
0, // [1].Realm.realm_id: u8
// realms: Realm[number_of_realms]
0, 0, // footer_padding: u16

Protocol Version 6, Protocol Version 7

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/server.wowm:151.

slogin CMD_REALM_LIST_Server = 0x10 {
    u16 size = self.size;
    u32 header_padding = 0;
    u16 number_of_realms;
    Realm[number_of_realms] realms;
    u16 footer_padding = 0;
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x012 / Littleu16size
0x034 / Littleu32header_padding
0x072 / Littleu16number_of_realms
0x09? / -Realm[number_of_realms]realms
-2 / Littleu16footer_padding

Examples

Example 1

16, // opcode (16)
81, 0, // size: u16
0, 0, 0, 0, // header_padding: u32
2, 0, // number_of_realms: u16
0, // [0].Realm.realm_type: RealmType PLAYER_VS_ENVIRONMENT (0)
0, // [0].Realm.locked: Bool
0, // [0].Realm.flag: RealmFlag  NONE (0)
84, 101, 115, 116, 32, 82, 101, 97, 108, 109, 50, 0, // [0].Realm.name: CString
108, 111, 99, 97, 108, 104, 111, 115, 116, 58, 56, 48, 56, 53, 0, // [0].Realm.address: CString
0, 0, 72, 67, // [0].Realm.population: Population
3, // [0].Realm.number_of_characters_on_realm: u8
1, // [0].Realm.category: RealmCategory ONE (0x1)
1, // [0].Realm.realm_id: u8
0, // [1].Realm.realm_type: RealmType PLAYER_VS_ENVIRONMENT (0)
0, // [1].Realm.locked: Bool
0, // [1].Realm.flag: RealmFlag  NONE (0)
84, 101, 115, 116, 32, 82, 101, 97, 108, 109, 0, // [1].Realm.name: CString
108, 111, 99, 97, 108, 104, 111, 115, 116, 58, 56, 48, 56, 53, 0, // [1].Realm.address: CString
0, 0, 72, 67, // [1].Realm.population: Population
3, // [1].Realm.number_of_characters_on_realm: u8
2, // [1].Realm.category: RealmCategory TWO (0x2)
0, // [1].Realm.realm_id: u8
// realms: Realm[number_of_realms]
0, 0, // footer_padding: u16

Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/server.wowm:301.

slogin CMD_REALM_LIST_Server = 0x10 {
    u16 size = self.size;
    u32 header_padding = 0;
    u16 number_of_realms;
    Realm[number_of_realms] realms;
    u16 footer_padding = 0;
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x012 / Littleu16size
0x034 / Littleu32header_padding
0x072 / Littleu16number_of_realms
0x09? / -Realm[number_of_realms]realms
-2 / Littleu16footer_padding

Examples

Example 1

16, // opcode (16)
22, 0, // size: u16
0, 0, 0, 0, // header_padding: u32
1, 0, // number_of_realms: u16
0, // [0].Realm.realm_type: RealmType PLAYER_VS_ENVIRONMENT (0)
0, // [0].Realm.locked: Bool
3, // [0].Realm.flag: RealmFlag  INVALID| OFFLINE (3)
65, 0, // [0].Realm.name: CString
65, 0, // [0].Realm.address: CString
0, 0, 200, 67, // [0].Realm.population: Population
1, // [0].Realm.number_of_characters_on_realm: u8
0, // [0].Realm.category: RealmCategory DEFAULT (0x0)
2, // [0].Realm.realm_id: u8
// realms: Realm[number_of_realms]
0, 0, // footer_padding: u16

Example 2

16, // opcode (16)
27, 0, // size: u16
0, 0, 0, 0, // header_padding: u32
1, 0, // number_of_realms: u16
0, // [0].Realm.realm_type: RealmType PLAYER_VS_ENVIRONMENT (0)
0, // [0].Realm.locked: Bool
4, // [0].Realm.flag: RealmFlag  SPECIFY_BUILD (4)
65, 0, // [0].Realm.name: CString
65, 0, // [0].Realm.address: CString
0, 0, 200, 67, // [0].Realm.population: Population
1, // [0].Realm.number_of_characters_on_realm: u8
0, // [0].Realm.category: RealmCategory DEFAULT (0x0)
2, // [0].Realm.realm_id: u8
1, // Version.major: u8
12, // Version.minor: u8
1, // Version.patch: u8
243, 22, // Version.build: u16
// realms: Realm[number_of_realms]
0, 0, // footer_padding: u16

RealmCategory

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7, Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/server.wowm:34.

enum RealmCategory : u8 {
    DEFAULT = 0x0;
    ONE = 0x1;
    TWO = 0x2;
    THREE = 0x3;
    FIVE = 0x5;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
DEFAULT0 (0x00)
ONE1 (0x01)
TWO2 (0x02)
THREE3 (0x03)
FIVE5 (0x05)

Used in:

RealmFlag

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/server.wowm:11.

flag RealmFlag : u8 {
    NONE = 0x00;
    INVALID = 0x01;
    OFFLINE = 0x02;
    FORCE_BLUE_RECOMMENDED = 0x20;
    FORCE_GREEN_RECOMMENDED = 0x40;
    FORCE_RED_FULL = 0x80;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
INVALID1 (0x01)
OFFLINE2 (0x02)
FORCE_BLUE_RECOMMENDED32 (0x20)
FORCE_GREEN_RECOMMENDED64 (0x40)
FORCE_RED_FULL128 (0x80)

Used in:

Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/server.wowm:22.

flag RealmFlag : u8 {
    NONE = 0x00;
    INVALID = 0x01;
    OFFLINE = 0x02;
    SPECIFY_BUILD = 0x04;
    FORCE_BLUE_RECOMMENDED = 0x20;
    FORCE_GREEN_RECOMMENDED = 0x40;
    FORCE_RED_FULL = 0x80;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
INVALID1 (0x01)
OFFLINE2 (0x02)
SPECIFY_BUILD4 (0x04)
FORCE_BLUE_RECOMMENDED32 (0x20)
FORCE_GREEN_RECOMMENDED64 (0x40)
FORCE_RED_FULL128 (0x80)

Used in:

RealmType

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7, Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/server.wowm:2.

enum RealmType : u8 {
    PLAYER_VS_ENVIRONMENT = 0;
    PLAYER_VS_PLAYER = 1;
    ROLEPLAYING = 6;
    ROLEPLAYING_PLAYER_VS_PLAYER = 8;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
PLAYER_VS_ENVIRONMENT0 (0x00)
PLAYER_VS_PLAYER1 (0x01)
ROLEPLAYING6 (0x06)
ROLEPLAYING_PLAYER_VS_PLAYER8 (0x08)

Used in:

CMD_SURVEY_RESULT

Protocol Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/survey_result.wowm:3.

clogin CMD_SURVEY_RESULT = 0x04 {
    u32 survey_id;
    u8 error;
    u16 compressed_data_length;
    u8[compressed_data_length] data;
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x014 / Littleu32survey_id
0x051 / -u8error
0x062 / Littleu16compressed_data_length
0x08? / -u8[compressed_data_length]data

Examples

Example 1

4, // opcode (4)
222, 250, 0, 0, // survey_id: u32
0, // error: u8
1, 0, // compressed_data_length: u16
255, // data: u8[compressed_data_length]

CMD_XFER_ACCEPT

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7, Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_xfer.wowm:42.

clogin CMD_XFER_ACCEPT = 0x32 {
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

This message has no fields in the body.

Examples

Example 1

Comment

Client does not already have part of a file with the MD5 sent in CMD_XFER_INITIATE and it wants to download the entire file.

50, // opcode (50)

CMD_XFER_CANCEL

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7, Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_xfer.wowm:69.

clogin CMD_XFER_CANCEL = 0x34 {
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

This message has no fields in the body.

Examples

Example 1

Comment

Client clicking 'cancel' in the updating menu.

52, // opcode (52)

CMD_XFER_DATA

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7, Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_xfer.wowm:23.

slogin CMD_XFER_DATA = 0x31 {
    u16 size;
    u8[size] data;
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x012 / Littleu16size
0x03? / -u8[size]data

Examples

Example 1

Comment

Sending first bytes of 1.12.1 to 1.12.2 update patch.

49, // opcode (49)
64, 0, // size: u16
77, 80, 81, 26, 44, 0, 0, 0, 60, 224, 38, 0, 1, 0, 3, 0, 252, 217, 38, 0, 252, 221, 
38, 0, 64, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 120, 218, 
236, 125, 123, 124, 84, 197, 245, 248, 110, 246, 134, 92, 116, 37, 11, 174, 184, // data: u8[size]

CMD_XFER_INITIATE

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7, Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_xfer.wowm:1.

slogin CMD_XFER_INITIATE = 0x30 {
    String filename;
    u64 file_size;
    u8[16] file_md5;
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x01- / -Stringfilename
-8 / Littleu64file_size
-16 / -u8[16]file_md5

Examples

Example 1

Comment

Sending 1.12.1 to 1.12.2 update patch. filename must be 'Patch' otherwise client will ignore the message.

48, // opcode (48)
5, // string length
80, 97, 116, 99, 104, // filename: String
188, 9, 0, 0, 0, 0, 0, 0, // file_size: u64
17, 91, 85, 89, 127, 183, 223, 14, 134, 217, 179, 174, 90, 235, 203, 98, // file_md5: u8[16]

CMD_XFER_RESUME

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7, Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_xfer.wowm:53.

clogin CMD_XFER_RESUME = 0x33 {
    u64 offset;
}

Header

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x018 / Littleu64offset

Examples

Example 1

Comment

Client already has first 64 bytes of file with MD5 sent in CMD_XFER_INITIATE and wants to resume download from there.

51, // opcode (51)
64, 0, 0, 0, 0, 0, 0, 0, // offset: u64

Realm

Protocol Version 2, Protocol Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/server.wowm:44.

struct Realm {
    (u32)RealmType realm_type;
    RealmFlag flag;
    CString name;
    CString address;
    Population population;
    u8 number_of_characters_on_realm;
    RealmCategory category;
    u8 realm_id;
}

Body

OffsetSize / EndiannessTypeNameComment
0x004 / -RealmTyperealm_type
0x041 / -RealmFlagflag
0x05- / -CStringname
-- / -CStringaddress
-4 / LittlePopulationpopulation
-1 / -u8number_of_characters_on_realm
-1 / -RealmCategorycategory
-1 / -u8realm_id

Used in:

Protocol Version 5, Protocol Version 6, Protocol Version 7

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/server.wowm:67.

struct Realm {
    RealmType realm_type;
    Bool locked;
    RealmFlag flag;
    CString name;
    CString address;
    Population population;
    u8 number_of_characters_on_realm;
    RealmCategory category;
    u8 realm_id;
}

Body

OffsetSize / EndiannessTypeNameComment
0x001 / -RealmTyperealm_type
0x011 / -Boollocked
0x021 / -RealmFlagflag
0x03- / -CStringname
-- / -CStringaddress
-4 / LittlePopulationpopulation
-1 / -u8number_of_characters_on_realm
-1 / -RealmCategorycategory
-1 / -u8realm_id

Used in:

Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/server.wowm:283.

struct Realm {
    RealmType realm_type;
    Bool locked;
    RealmFlag flag;
    CString name;
    CString address;
    Population population;
    u8 number_of_characters_on_realm;
    RealmCategory category;
    u8 realm_id;
    if (flag & SPECIFY_BUILD) {
        Version version;
    }
}

Body

OffsetSize / EndiannessTypeNameComment
0x001 / -RealmTyperealm_typevmangos: this is the second column in Cfg_Configs.dbc
0x011 / -Boollocked
0x021 / -RealmFlagflag
0x03- / -CStringname
-- / -CStringaddress
-4 / LittlePopulationpopulation
-1 / -u8number_of_characters_on_realm
-1 / -RealmCategorycategory
-1 / -u8realm_id

If flag contains SPECIFY_BUILD:

OffsetSize / EndiannessTypeNameComment
-5 / -Versionversion

Used in:

RealmCategory

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7, Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/server.wowm:34.

enum RealmCategory : u8 {
    DEFAULT = 0x0;
    ONE = 0x1;
    TWO = 0x2;
    THREE = 0x3;
    FIVE = 0x5;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
DEFAULT0 (0x00)
ONE1 (0x01)
TWO2 (0x02)
THREE3 (0x03)
FIVE5 (0x05)

Used in:

RealmFlag

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/server.wowm:11.

flag RealmFlag : u8 {
    NONE = 0x00;
    INVALID = 0x01;
    OFFLINE = 0x02;
    FORCE_BLUE_RECOMMENDED = 0x20;
    FORCE_GREEN_RECOMMENDED = 0x40;
    FORCE_RED_FULL = 0x80;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
INVALID1 (0x01)
OFFLINE2 (0x02)
FORCE_BLUE_RECOMMENDED32 (0x20)
FORCE_GREEN_RECOMMENDED64 (0x40)
FORCE_RED_FULL128 (0x80)

Used in:

Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/server.wowm:22.

flag RealmFlag : u8 {
    NONE = 0x00;
    INVALID = 0x01;
    OFFLINE = 0x02;
    SPECIFY_BUILD = 0x04;
    FORCE_BLUE_RECOMMENDED = 0x20;
    FORCE_GREEN_RECOMMENDED = 0x40;
    FORCE_RED_FULL = 0x80;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
INVALID1 (0x01)
OFFLINE2 (0x02)
SPECIFY_BUILD4 (0x04)
FORCE_BLUE_RECOMMENDED32 (0x20)
FORCE_GREEN_RECOMMENDED64 (0x40)
FORCE_RED_FULL128 (0x80)

Used in:

RealmType

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7, Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_realm/server.wowm:2.

enum RealmType : u8 {
    PLAYER_VS_ENVIRONMENT = 0;
    PLAYER_VS_PLAYER = 1;
    ROLEPLAYING = 6;
    ROLEPLAYING_PLAYER_VS_PLAYER = 8;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
PLAYER_VS_ENVIRONMENT0 (0x00)
PLAYER_VS_PLAYER1 (0x01)
ROLEPLAYING6 (0x06)
ROLEPLAYING_PLAYER_VS_PLAYER8 (0x08)

Used in:

TelemetryKey

Protocol Version 2, Protocol Version 3, Protocol Version 5, Protocol Version 6, Protocol Version 7, Protocol Version 8

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_logon/proof_client.wowm:2.

struct TelemetryKey {
    u16 unknown1;
    u32 unknown2;
    u8[4] unknown3;
    u8[20] cd_key_proof;
}

Body

OffsetSize / EndiannessTypeNameComment
0x002 / Littleu16unknown1
0x024 / Littleu32unknown2
0x064 / -u8[4]unknown3
0x0A20 / -u8[20]cd_key_proofSHA1 hash of the session key, server public key, and an unknown 20 byte value.

Used in:

Version

Protocol Version *

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/challenge_client_commons.wowm:30.

struct Version {
    u8 major;
    u8 minor;
    u8 patch;
    u16 build;
}

Body

OffsetSize / EndiannessTypeNameComment
0x001 / -u8major
0x011 / -u8minor
0x021 / -u8patch
0x032 / Littleu16build

Used in:

AchievementDone

Client Version 3.3.5

Used in the AchievementDoneArray built-in type.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/achievement/smsg_respond_inspect_achievements.wowm:17.

struct AchievementDone {
    u32 achievement;
    DateTime time;
}

Body

OffsetSize / EndiannessTypeNameComment
0x004 / Littleu32achievement
0x044 / LittleDateTimetime

Used in:

AchievementInProgress

Client Version 3.3.5

Used in the AchievementInProgressArray built-in type.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/achievement/smsg_respond_inspect_achievements.wowm:25.

struct AchievementInProgress {
    u32 achievement;
    PackedGuid counter;
    PackedGuid player;
    Bool32 timed_criteria_failed;
    DateTime progress_date;
    u32 time_since_progress;
    u32 time_since_progress2;
}

Body

OffsetSize / EndiannessTypeNameComment
0x004 / Littleu32achievement
0x04- / -PackedGuidcounter
-- / -PackedGuidplayer
-4 / LittleBool32timed_criteria_failed
-4 / LittleDateTimeprogress_date
-4 / Littleu32time_since_progress
-4 / Littleu32time_since_progress2

Used in:

ActionButton

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/login_logout/smsg_action_buttons.wowm:13.

struct ActionButton {
    u16 action;
    u8 action_type;
    u8 misc;
}

Body

OffsetSize / EndiannessTypeNameComment
0x002 / Littleu16action
0x021 / -u8action_type
0x031 / -u8misc

Used in:

AddonInfo

Client Version 1, Client Version 2, Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/character_screen/cmsg_auth_session.wowm:1.

struct AddonInfo {
    CString addon_name;
    u8 addon_has_signature;
    u32 addon_crc;
    u32 addon_extra_crc;
}

Body

OffsetSize / EndiannessTypeNameComment
0x00- / -CStringaddon_name
-1 / -u8addon_has_signature
-4 / Littleu32addon_crc
-4 / Littleu32addon_extra_crc

Used in:

Addon

Client Version 1.12

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/login_logout/smsg_addon_info.wowm:40.

struct Addon {
    AddonType addon_type;
    InfoBlock info_block;
    if (info_block == AVAILABLE) {
        KeyVersion key_version;
        if (key_version != ZERO) {
            u8[256] public_key;
        }
        u32 update_available_flag;
    }
    UrlInfo url_info;
    if (url_info == AVAILABLE) {
        CString url;
    }
}

Used in:

Client Version 2.4.3, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/login_logout/smsg_addon_info.wowm:64.

struct Addon {
    u8 addon_type;
    u8 uses_crc;
    Bool uses_diffent_public_key;
    u32 unknown1;
    u8 unknown2;
}

Body

OffsetSize / EndiannessTypeNameComment
0x001 / -u8addon_typeOther emus hardcode this to 2. More research is required
0x011 / -u8uses_crcOther emus hardcode this to 1.
0x021 / -Booluses_diffent_public_key
0x034 / Littleu32unknown1Other emus hardcode this to 0
0x071 / -u8unknown2Other emus hardcode this to 0

Used in:

ArenaTeamMember

Client Version 2.4.3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/arena/smsg_arena_team_roster.wowm:17.

struct ArenaTeamMember {
    Guid guid;
    Bool online;
    CString name;
    Level level;
    Class class;
    u32 games_played_this_week;
    u32 wins_this_week;
    u32 games_played_this_season;
    u32 wins_this_season;
    u32 personal_rating;
}

Body

OffsetSize / EndiannessTypeNameComment
0x008 / LittleGuidguid
0x081 / -Boolonline
0x09- / -CStringname
-1 / -Levellevel
-1 / -Classclass
-4 / Littleu32games_played_this_week
-4 / Littleu32wins_this_week
-4 / Littleu32games_played_this_season
-4 / Littleu32wins_this_season
-4 / Littleu32personal_rating

Used in:

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/arena/smsg_arena_team_roster.wowm:17.

struct ArenaTeamMember {
    Guid guid;
    Bool online;
    CString name;
    Level level;
    Class class;
    u32 games_played_this_week;
    u32 wins_this_week;
    u32 games_played_this_season;
    u32 wins_this_season;
    u32 personal_rating;
}

Body

OffsetSize / EndiannessTypeNameComment
0x008 / LittleGuidguid
0x081 / -Boolonline
0x09- / -CStringname
-1 / -Levellevel
-1 / -Classclass
-4 / Littleu32games_played_this_week
-4 / Littleu32wins_this_week
-4 / Littleu32games_played_this_season
-4 / Littleu32wins_this_season
-4 / Littleu32personal_rating

Used in:

Class

Client Version 1, Client Version 2

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/enums/class.wowm:1.

enum Class : u8 {
    WARRIOR = 1;
    PALADIN = 2;
    HUNTER = 3;
    ROGUE = 4;
    PRIEST = 5;
    SHAMAN = 7;
    MAGE = 8;
    WARLOCK = 9;
    DRUID = 11;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
WARRIOR1 (0x01)
PALADIN2 (0x02)
HUNTER3 (0x03)
ROGUE4 (0x04)
PRIEST5 (0x05)
SHAMAN7 (0x07)
MAGE8 (0x08)
WARLOCK9 (0x09)
DRUID11 (0x0B)

Used in:

Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/enums/class.wowm:16.

enum Class : u8 {
    WARRIOR = 1;
    PALADIN = 2;
    HUNTER = 3;
    ROGUE = 4;
    PRIEST = 5;
    DEATH_KNIGHT = 6;
    SHAMAN = 7;
    MAGE = 8;
    WARLOCK = 9;
    DRUID = 11;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
WARRIOR1 (0x01)
PALADIN2 (0x02)
HUNTER3 (0x03)
ROGUE4 (0x04)
PRIEST5 (0x05)
DEATH_KNIGHT6 (0x06)
SHAMAN7 (0x07)
MAGE8 (0x08)
WARLOCK9 (0x09)
DRUID11 (0x0B)

Used in:

AuctionEnchantment

Client Version 2.4.3, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/auction/auction_common.wowm:20.

struct AuctionEnchantment {
    u32 enchant_id;
    u32 enchant_duration;
    u32 enchant_charges;
}

Body

OffsetSize / EndiannessTypeNameComment
0x004 / Littleu32enchant_id
0x044 / Littleu32enchant_duration
0x084 / Littleu32enchant_charges

Used in:

AuctionListItem

Client Version 1

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/auction/auction_common.wowm:1.

struct AuctionListItem {
    u32 id;
    Item item;
    u32 item_enchantment;
    u32 item_random_property_id;
    u32 item_suffix_factor;
    u32 item_count;
    u32 item_charges;
    Guid item_owner;
    u32 start_bid;
    u32 minimum_bid;
    u32 buyout_amount;
    Milliseconds time_left;
    Guid highest_bidder;
    u32 highest_bid;
}

Body

OffsetSize / EndiannessTypeNameComment
0x004 / Littleu32id
0x044 / LittleItemitem
0x084 / Littleu32item_enchantment
0x0C4 / Littleu32item_random_property_id
0x104 / Littleu32item_suffix_factor
0x144 / Littleu32item_count
0x184 / Littleu32item_charges
0x1C8 / LittleGuiditem_owner
0x244 / Littleu32start_bid
0x284 / Littleu32minimum_bid
0x2C4 / Littleu32buyout_amount
0x304 / LittleMillisecondstime_left
0x348 / LittleGuidhighest_bidder
0x3C4 / Littleu32highest_bid

Used in:

Client Version 2.4.3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/auction/auction_common.wowm:28.

struct AuctionListItem {
    u32 id;
    Item item;
    AuctionEnchantment[6] enchantments;
    u32 item_random_property_id;
    u32 item_suffix_factor;
    u32 item_count;
    u32 item_charges;
    u32 item_flags;
    Guid item_owner;
    u32 start_bid;
    u32 minimum_bid;
    u32 buyout_amount;
    Milliseconds time_left;
    Guid highest_bidder;
    u32 highest_bid;
}

Body

OffsetSize / EndiannessTypeNameComment
0x004 / Littleu32id
0x044 / LittleItemitem
0x0872 / -AuctionEnchantment[6]enchantments
0x504 / Littleu32item_random_property_id
0x544 / Littleu32item_suffix_factor
0x584 / Littleu32item_count
0x5C4 / Littleu32item_charges
0x604 / Littleu32item_flagsmangosone: item flags (dynamic?) (0x04 no lockId?)
0x648 / LittleGuiditem_owner
0x6C4 / Littleu32start_bid
0x704 / Littleu32minimum_bid
0x744 / Littleu32buyout_amount
0x784 / LittleMillisecondstime_left
0x7C8 / LittleGuidhighest_bidder
0x844 / Littleu32highest_bid

Used in:

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/auction/auction_common.wowm:49.

struct AuctionListItem {
    u32 id;
    Item item;
    AuctionEnchantment[7] enchantments;
    u32 item_random_property_id;
    u32 item_suffix_factor;
    u32 item_count;
    u32 item_charges;
    u32 item_flags;
    Guid item_owner;
    u32 start_bid;
    u32 minimum_bid;
    u32 buyout_amount;
    Milliseconds time_left;
    Guid highest_bidder;
    u32 highest_bid;
}

Body

OffsetSize / EndiannessTypeNameComment
0x004 / Littleu32id
0x044 / LittleItemitem
0x0884 / -AuctionEnchantment[7]enchantments
0x5C4 / Littleu32item_random_property_id
0x604 / Littleu32item_suffix_factor
0x644 / Littleu32item_count
0x684 / Littleu32item_charges
0x6C4 / Littleu32item_flagsmangosone: item flags (dynamic?) (0x04 no lockId?)
0x708 / LittleGuiditem_owner
0x784 / Littleu32start_bid
0x7C4 / Littleu32minimum_bid
0x804 / Littleu32buyout_amount
0x844 / LittleMillisecondstime_left
0x888 / LittleGuidhighest_bidder
0x904 / Littleu32highest_bid

Used in:

AuctionSort

Client Version 2.4.3, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/auction/cmsg/cmsg_auction_list_items.wowm:16.

struct AuctionSort {
    u8 column;
    u8 reversed;
}

Body

OffsetSize / EndiannessTypeNameComment
0x001 / -u8column
0x011 / -u8reversed

Used in:

AuraLog

Client Version 1.12

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/spell/smsg_periodicauralog.wowm:242.

struct AuraLog {
    AuraType aura_type;
    if (aura_type == PERIODIC_DAMAGE
        || aura_type == PERIODIC_DAMAGE_PERCENT) {
        u32 damage1;
        SpellSchool school;
        u32 absorbed;
        u32 resisted;
    }
    else if (aura_type == PERIODIC_HEAL
        || aura_type == OBS_MOD_HEALTH) {
        u32 damage2;
    }
    else if (aura_type == OBS_MOD_MANA
        || aura_type == PERIODIC_ENERGIZE) {
        u32 misc_value1;
        u32 damage3;
    }
    else if (aura_type == PERIODIC_MANA_LEECH) {
        u32 misc_value2;
        u32 damage;
        f32 gain_multiplier;
    }
}

Body

OffsetSize / EndiannessTypeNameComment
0x004 / -AuraTypeaura_type

If aura_type is equal to PERIODIC_DAMAGE or is equal to PERIODIC_DAMAGE_PERCENT:

OffsetSize / EndiannessTypeNameComment
0x044 / Littleu32damage1
0x081 / -SpellSchoolschool
0x094 / Littleu32absorbed
0x0D4 / Littleu32resistedvmangos: Sent as int32

Else If aura_type is equal to PERIODIC_HEAL or is equal to OBS_MOD_HEALTH:

OffsetSize / EndiannessTypeNameComment
0x114 / Littleu32damage2

Else If aura_type is equal to OBS_MOD_MANA or is equal to PERIODIC_ENERGIZE:

OffsetSize / EndiannessTypeNameComment
0x154 / Littleu32misc_value1vmangos: A miscvalue that is dependent on what the aura will do, this is usually decided by the AuraType, ie: with AuraType::SPELL_AURA_MOD_BASE_RESISTANCE_PCT this value could be SpellSchoolMask::SPELL_SCHOOL_MASK_NORMAL which would tell the aura that it should change armor. If Modifier::m_auraname would have been AuraType::SPELL_AURA_MOUNTED then m_miscvalue would have decided which model the mount should have
0x194 / Littleu32damage3

Else If aura_type is equal to PERIODIC_MANA_LEECH:

OffsetSize / EndiannessTypeNameComment
0x1D4 / Littleu32misc_value2vmangos: A miscvalue that is dependent on what the aura will do, this is usually decided by the AuraType, ie: with AuraType::SPELL_AURA_MOD_BASE_RESISTANCE_PCT this value could be SpellSchoolMask::SPELL_SCHOOL_MASK_NORMAL which would tell the aura that it should change armor. If Modifier::m_auraname would have been AuraType::SPELL_AURA_MOUNTED then m_miscvalue would have decided which model the mount should have
0x214 / Littleu32damage
0x254 / Littlef32gain_multiplier

Used in:

Client Version 2.4.3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/spell/smsg_periodicauralog.wowm:579.

struct AuraLog {
    AuraType aura_type;
    if (aura_type == PERIODIC_DAMAGE
        || aura_type == PERIODIC_DAMAGE_PERCENT) {
        u32 damage1;
        SpellSchool school;
        u32 absorbed;
        u32 resisted;
    }
    else if (aura_type == PERIODIC_HEAL
        || aura_type == OBS_MOD_HEALTH) {
        u32 damage2;
    }
    else if (aura_type == OBS_MOD_MANA
        || aura_type == PERIODIC_ENERGIZE) {
        u32 misc_value1;
        u32 damage3;
    }
    else if (aura_type == PERIODIC_MANA_LEECH) {
        u32 misc_value2;
        u32 damage;
        f32 gain_multiplier;
    }
}

Body

OffsetSize / EndiannessTypeNameComment
0x004 / -AuraTypeaura_type

If aura_type is equal to PERIODIC_DAMAGE or is equal to PERIODIC_DAMAGE_PERCENT:

OffsetSize / EndiannessTypeNameComment
0x044 / Littleu32damage1
0x081 / -SpellSchoolschool
0x094 / Littleu32absorbed
0x0D4 / Littleu32resistedvmangos: Sent as int32

Else If aura_type is equal to PERIODIC_HEAL or is equal to OBS_MOD_HEALTH:

OffsetSize / EndiannessTypeNameComment
0x114 / Littleu32damage2

Else If aura_type is equal to OBS_MOD_MANA or is equal to PERIODIC_ENERGIZE:

OffsetSize / EndiannessTypeNameComment
0x154 / Littleu32misc_value1vmangos: A miscvalue that is dependent on what the aura will do, this is usually decided by the AuraType, ie: with AuraType::SPELL_AURA_MOD_BASE_RESISTANCE_PCT this value could be SpellSchoolMask::SPELL_SCHOOL_MASK_NORMAL which would tell the aura that it should change armor. If Modifier::m_auraname would have been AuraType::SPELL_AURA_MOUNTED then m_miscvalue would have decided which model the mount should have
0x194 / Littleu32damage3

Else If aura_type is equal to PERIODIC_MANA_LEECH:

OffsetSize / EndiannessTypeNameComment
0x1D4 / Littleu32misc_value2vmangos: A miscvalue that is dependent on what the aura will do, this is usually decided by the AuraType, ie: with AuraType::SPELL_AURA_MOD_BASE_RESISTANCE_PCT this value could be SpellSchoolMask::SPELL_SCHOOL_MASK_NORMAL which would tell the aura that it should change armor. If Modifier::m_auraname would have been AuraType::SPELL_AURA_MOUNTED then m_miscvalue would have decided which model the mount should have
0x214 / Littleu32damage
0x254 / Littlef32gain_multiplier

Used in:

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/spell/smsg_periodicauralog.wowm:956.

struct AuraLog {
    AuraType aura_type;
    if (aura_type == PERIODIC_DAMAGE
        || aura_type == PERIODIC_DAMAGE_PERCENT) {
        u32 damage1;
        u32 overkill_damage;
        SpellSchool school;
        u32 absorb1;
        u32 resisted;
        Bool critical1;
    }
    else if (aura_type == PERIODIC_HEAL
        || aura_type == OBS_MOD_HEALTH) {
        u32 damage2;
        u32 over_damage;
        u32 absorb2;
        Bool critical2;
    }
    else if (aura_type == OBS_MOD_POWER
        || aura_type == PERIODIC_ENERGIZE) {
        u32 misc_value1;
        u32 damage3;
    }
    else if (aura_type == PERIODIC_MANA_LEECH) {
        u32 misc_value2;
        u32 damage4;
        f32 gain_multiplier;
    }
}

Body

OffsetSize / EndiannessTypeNameComment
0x004 / -AuraTypeaura_type

If aura_type is equal to PERIODIC_DAMAGE or is equal to PERIODIC_DAMAGE_PERCENT:

OffsetSize / EndiannessTypeNameComment
0x044 / Littleu32damage1
0x084 / Littleu32overkill_damage
0x0C1 / -SpellSchoolschool
0x0D4 / Littleu32absorb1
0x114 / Littleu32resistedvmangos: Sent as int32
0x151 / -Boolcritical1new 3.1.2 critical tick

Else If aura_type is equal to PERIODIC_HEAL or is equal to OBS_MOD_HEALTH:

OffsetSize / EndiannessTypeNameComment
0x164 / Littleu32damage2
0x1A4 / Littleu32over_damage
0x1E4 / Littleu32absorb2
0x221 / -Boolcritical2new 3.1.2 critical tick

Else If aura_type is equal to OBS_MOD_POWER or is equal to PERIODIC_ENERGIZE:

OffsetSize / EndiannessTypeNameComment
0x234 / Littleu32misc_value1vmangos: A miscvalue that is dependent on what the aura will do, this is usually decided by the AuraType, ie: with AuraType::SPELL_AURA_MOD_BASE_RESISTANCE_PCT this value could be SpellSchoolMask::SPELL_SCHOOL_MASK_NORMAL which would tell the aura that it should change armor. If Modifier::m_auraname would have been AuraType::SPELL_AURA_MOUNTED then m_miscvalue would have decided which model the mount should have
0x274 / Littleu32damage3

Else If aura_type is equal to PERIODIC_MANA_LEECH:

OffsetSize / EndiannessTypeNameComment
0x2B4 / Littleu32misc_value2vmangos: A miscvalue that is dependent on what the aura will do, this is usually decided by the AuraType, ie: with AuraType::SPELL_AURA_MOD_BASE_RESISTANCE_PCT this value could be SpellSchoolMask::SPELL_SCHOOL_MASK_NORMAL which would tell the aura that it should change armor. If Modifier::m_auraname would have been AuraType::SPELL_AURA_MOUNTED then m_miscvalue would have decided which model the mount should have
0x2F4 / Littleu32damage4
0x334 / Littlef32gain_multiplier

Used in:

AuraType

Client Version 1.12

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/spell/smsg_periodicauralog.wowm:11.

enum AuraType : u32 {
    NONE = 0;
    BIND_SIGHT = 1;
    MOD_POSSESS = 2;
    PERIODIC_DAMAGE = 3;
    DUMMY = 4;
    MOD_CONFUSE = 5;
    MOD_CHARM = 6;
    MOD_FEAR = 7;
    PERIODIC_HEAL = 8;
    MOD_ATTACKSPEED = 9;
    MOD_THREAT = 10;
    MOD_TAUNT = 11;
    MOD_STUN = 12;
    MOD_DAMAGE_DONE = 13;
    MOD_DAMAGE_TAKEN = 14;
    DAMAGE_SHIELD = 15;
    MOD_STEALTH = 16;
    MOD_STEALTH_DETECT = 17;
    MOD_INVISIBILITY = 18;
    MOD_INVISIBILITY_DETECTION = 19;
    OBS_MOD_HEALTH = 20;
    OBS_MOD_MANA = 21;
    MOD_RESISTANCE = 22;
    PERIODIC_TRIGGER_SPELL = 23;
    PERIODIC_ENERGIZE = 24;
    MOD_PACIFY = 25;
    MOD_ROOT = 26;
    MOD_SILENCE = 27;
    REFLECT_SPELLS = 28;
    MOD_STAT = 29;
    MOD_SKILL = 30;
    MOD_INCREASE_SPEED = 31;
    MOD_INCREASE_MOUNTED_SPEED = 32;
    MOD_DECREASE_SPEED = 33;
    MOD_INCREASE_HEALTH = 34;
    MOD_INCREASE_ENERGY = 35;
    MOD_SHAPESHIFT = 36;
    EFFECT_IMMUNITY = 37;
    STATE_IMMUNITY = 38;
    SCHOOL_IMMUNITY = 39;
    DAMAGE_IMMUNITY = 40;
    DISPEL_IMMUNITY = 41;
    PROC_TRIGGER_SPELL = 42;
    PROC_TRIGGER_DAMAGE = 43;
    TRACK_CREATURES = 44;
    TRACK_RESOURCES = 45;
    UNKNOWN46 = 46;
    MOD_PARRY_PERCENT = 47;
    UNKNOWN48 = 48;
    MOD_DODGE_PERCENT = 49;
    MOD_BLOCK_SKILL = 50;
    MOD_BLOCK_PERCENT = 51;
    MOD_CRIT_PERCENT = 52;
    PERIODIC_LEECH = 53;
    MOD_HIT_CHANCE = 54;
    MOD_SPELL_HIT_CHANCE = 55;
    TRANSFORM = 56;
    MOD_SPELL_CRIT_CHANCE = 57;
    MOD_INCREASE_SWIM_SPEED = 58;
    MOD_DAMAGE_DONE_CREATURE = 59;
    MOD_PACIFY_SILENCE = 60;
    MOD_SCALE = 61;
    PERIODIC_HEALTH_FUNNEL = 62;
    PERIODIC_MANA_FUNNEL = 63;
    PERIODIC_MANA_LEECH = 64;
    MOD_CASTING_SPEED_NOT_STACK = 65;
    FEIGN_DEATH = 66;
    MOD_DISARM = 67;
    MOD_STALKED = 68;
    SCHOOL_ABSORB = 69;
    EXTRA_ATTACKS = 70;
    MOD_SPELL_CRIT_CHANCE_SCHOOL = 71;
    MOD_POWER_COST_SCHOOL_PCT = 72;
    MOD_POWER_COST_SCHOOL = 73;
    REFLECT_SPELLS_SCHOOL = 74;
    MOD_LANGUAGE = 75;
    FAR_SIGHT = 76;
    MECHANIC_IMMUNITY = 77;
    MOUNTED = 78;
    MOD_DAMAGE_PERCENT_DONE = 79;
    MOD_PERCENT_STAT = 80;
    SPLIT_DAMAGE_PCT = 81;
    WATER_BREATHING = 82;
    MOD_BASE_RESISTANCE = 83;
    MOD_REGEN = 84;
    MOD_POWER_REGEN = 85;
    CHANNEL_DEATH_ITEM = 86;
    MOD_DAMAGE_PERCENT_TAKEN = 87;
    MOD_HEALTH_REGEN_PERCENT = 88;
    PERIODIC_DAMAGE_PERCENT = 89;
    MOD_RESIST_CHANCE = 90;
    MOD_DETECT_RANGE = 91;
    PREVENTS_FLEEING = 92;
    MOD_UNATTACKABLE = 93;
    INTERRUPT_REGEN = 94;
    GHOST = 95;
    SPELL_MAGNET = 96;
    MANA_SHIELD = 97;
    MOD_SKILL_TALENT = 98;
    MOD_ATTACK_POWER = 99;
    AURAS_VISIBLE = 100;
    MOD_RESISTANCE_PCT = 101;
    MOD_MELEE_ATTACK_POWER_VERSUS = 102;
    MOD_TOTAL_THREAT = 103;
    WATER_WALK = 104;
    FEATHER_FALL = 105;
    HOVER = 106;
    ADD_FLAT_MODIFIER = 107;
    ADD_PCT_MODIFIER = 108;
    ADD_TARGET_TRIGGER = 109;
    MOD_POWER_REGEN_PERCENT = 110;
    ADD_CASTER_HIT_TRIGGER = 111;
    OVERRIDE_CLASS_SCRIPTS = 112;
    MOD_RANGED_DAMAGE_TAKEN = 113;
    MOD_RANGED_DAMAGE_TAKEN_PCT = 114;
    MOD_HEALING = 115;
    MOD_REGEN_DURING_COMBAT = 116;
    MOD_MECHANIC_RESISTANCE = 117;
    MOD_HEALING_PCT = 118;
    SHARE_PET_TRACKING = 119;
    UNTRACKABLE = 120;
    EMPATHY = 121;
    MOD_OFFHAND_DAMAGE_PCT = 122;
    MOD_TARGET_RESISTANCE = 123;
    MOD_RANGED_ATTACK_POWER = 124;
    MOD_MELEE_DAMAGE_TAKEN = 125;
    MOD_MELEE_DAMAGE_TAKEN_PCT = 126;
    RANGED_ATTACK_POWER_ATTACKER_BONUS = 127;
    MOD_POSSESS_PET = 128;
    MOD_SPEED_ALWAYS = 129;
    MOD_MOUNTED_SPEED_ALWAYS = 130;
    MOD_RANGED_ATTACK_POWER_VERSUS = 131;
    MOD_INCREASE_ENERGY_PERCENT = 132;
    MOD_INCREASE_HEALTH_PERCENT = 133;
    MOD_MANA_REGEN_INTERRUPT = 134;
    MOD_HEALING_DONE = 135;
    MOD_HEALING_DONE_PERCENT = 136;
    MOD_TOTAL_STAT_PERCENTAGE = 137;
    MOD_MELEE_HASTE = 138;
    FORCE_REACTION = 139;
    MOD_RANGED_HASTE = 140;
    MOD_RANGED_AMMO_HASTE = 141;
    MOD_BASE_RESISTANCE_PCT = 142;
    MOD_RESISTANCE_EXCLUSIVE = 143;
    SAFE_FALL = 144;
    CHARISMA = 145;
    PERSUADED = 146;
    MECHANIC_IMMUNITY_MASK = 147;
    RETAIN_COMBO_POINTS = 148;
    RESIST_PUSHBACK = 149;
    MOD_SHIELD_BLOCKVALUE_PCT = 150;
    TRACK_STEALTHED = 151;
    MOD_DETECTED_RANGE = 152;
    SPLIT_DAMAGE_FLAT = 153;
    MOD_STEALTH_LEVEL = 154;
    MOD_WATER_BREATHING = 155;
    MOD_REPUTATION_GAIN = 156;
    PET_DAMAGE_MULTI = 157;
    MOD_SHIELD_BLOCKVALUE = 158;
    NO_PVP_CREDIT = 159;
    MOD_AOE_AVOIDANCE = 160;
    MOD_HEALTH_REGEN_IN_COMBAT = 161;
    POWER_BURN_MANA = 162;
    MOD_CRIT_DAMAGE_BONUS = 163;
    UNKNOWN164 = 164;
    MELEE_ATTACK_POWER_ATTACKER_BONUS = 165;
    MOD_ATTACK_POWER_PCT = 166;
    MOD_RANGED_ATTACK_POWER_PCT = 167;
    MOD_DAMAGE_DONE_VERSUS = 168;
    MOD_CRIT_PERCENT_VERSUS = 169;
    DETECT_AMORE = 170;
    MOD_SPEED_NOT_STACK = 171;
    MOD_MOUNTED_SPEED_NOT_STACK = 172;
    ALLOW_CHAMPION_SPELLS = 173;
    MOD_SPELL_DAMAGE_OF_STAT_PERCENT = 174;
    MOD_SPELL_HEALING_OF_STAT_PERCENT = 175;
    SPIRIT_OF_REDEMPTION = 176;
    AOE_CHARM = 177;
    MOD_DEBUFF_RESISTANCE = 178;
    MOD_ATTACKER_SPELL_CRIT_CHANCE = 179;
    MOD_FLAT_SPELL_DAMAGE_VERSUS = 180;
    MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS = 181;
    MOD_RESISTANCE_OF_STAT_PERCENT = 182;
    MOD_CRITICAL_THREAT = 183;
    MOD_ATTACKER_MELEE_HIT_CHANCE = 184;
    MOD_ATTACKER_RANGED_HIT_CHANCE = 185;
    MOD_ATTACKER_SPELL_HIT_CHANCE = 186;
    MOD_ATTACKER_MELEE_CRIT_CHANCE = 187;
    MOD_ATTACKER_RANGED_CRIT_CHANCE = 188;
    MOD_RATING = 189;
    MOD_FACTION_REPUTATION_GAIN = 190;
    USE_NORMAL_MOVEMENT_SPEED = 191;
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
BIND_SIGHT1 (0x01)
MOD_POSSESS2 (0x02)
PERIODIC_DAMAGE3 (0x03)vmangos: The aura should do periodic damage, the function that handles this is Aura::HandlePeriodicDamage, the amount is usually decided by the Unit::SpellDamageBonusDone or Unit::MeleeDamageBonusDone which increases/decreases the Modifier::m_amount
DUMMY4 (0x04)vmangos: Used by Aura::HandleAuraDummy
MOD_CONFUSE5 (0x05)vmangos: Used by Aura::HandleModConfuse, will either confuse or unconfuse the target depending on whether the apply flag is set
MOD_CHARM6 (0x06)
MOD_FEAR7 (0x07)
PERIODIC_HEAL8 (0x08)vmangos: The aura will do periodic heals of a target, handled by Aura::HandlePeriodicHeal, uses Unit::SpellHealingBonusDone to calculate whether to increase or decrease Modifier::m_amount
MOD_ATTACKSPEED9 (0x09)vmangos: Changes the attackspeed, the Modifier::m_amount decides how much we change in percent, ie, if the m_amount is 50 the attackspeed will increase by 50%
MOD_THREAT10 (0x0A)vmangos: Modifies the threat that the Aura does in percent, the Modifier::m_miscvalue decides which of the SpellSchools it should affect threat for. \see SpellSchoolMask
MOD_TAUNT11 (0x0B)vmangos: Just applies a taunt which will change the threat a mob has Taken care of in Aura::HandleModThreat
MOD_STUN12 (0x0C)vmangos: Stuns targets in different ways, taken care of in Aura::HandleAuraModStun
MOD_DAMAGE_DONE13 (0x0D)vmangos: Changes the damage done by a weapon in any hand, the Modifier::m_miscvalue will tell what school the damage is from, it's used as a bitmask \see SpellSchoolMask
MOD_DAMAGE_TAKEN14 (0x0E)vmangos: Not handled by the Aura class but instead this is implemented in Unit::MeleeDamageBonusTaken and Unit::SpellBaseDamageBonusTaken
DAMAGE_SHIELD15 (0x0F)vmangos: Not handled by the Aura class, implemented in Unit::DealMeleeDamage
MOD_STEALTH16 (0x10)vmangos: Taken care of in Aura::HandleModStealth, take note that this is not the same thing as invisibility
MOD_STEALTH_DETECT17 (0x11)vmangos: Not handled by the Aura class, implemented in Unit::isVisibleForOrDetect which does a lot of checks to determine whether the person is visible or not, the SPELL_AURA_MOD_STEALTH seems to determine how in/visible ie a rogue is.
MOD_INVISIBILITY18 (0x12)vmangos: Handled by Aura::HandleInvisibility, the Modifier::m_miscvalue in the struct seems to decide what kind of invisibility it is with a bitflag. the miscvalue decides which bit is set, ie: 3 would make the 3rd bit be set.
MOD_INVISIBILITY_DETECTION19 (0x13)vmangos: Adds one of the kinds of detections to the possible detections. As in SPEALL_AURA_MOD_INVISIBILITY the Modifier::m_miscvalue seems to decide what kind of invisibility the Unit should be able to detect.
OBS_MOD_HEALTH20 (0x14)20,21 unofficial
OBS_MOD_MANA21 (0x15)
MOD_RESISTANCE22 (0x16)vmangos: Handled by Aura::HandleAuraModResistance, changes the resistance for a unit the field Modifier::m_miscvalue decides which kind of resistance that should be changed, for possible values see SpellSchools. \see SpellSchools
PERIODIC_TRIGGER_SPELL23 (0x17)vmangos: Currently just sets Aura::m_isPeriodic to apply and has a special case for Curse of the Plaguebringer.
PERIODIC_ENERGIZE24 (0x18)vmangos: Just sets Aura::m_isPeriodic to apply
MOD_PACIFY25 (0x19)vmangos: Changes whether the target is pacified or not depending on the apply flag. Pacify makes the target silenced and have all it's attack skill disabled. See: http://classic.wowhead.com/spell=6462
MOD_ROOT26 (0x1A)vmangos: Roots or unroots the target
MOD_SILENCE27 (0x1B)vmangos: Silences the target and stops and spell casts that should be stopped, they have the flag SpellPreventionType::SPELL_PREVENTION_TYPE_SILENCE
REFLECT_SPELLS28 (0x1C)
MOD_STAT29 (0x1D)
MOD_SKILL30 (0x1E)
MOD_INCREASE_SPEED31 (0x1F)
MOD_INCREASE_MOUNTED_SPEED32 (0x20)
MOD_DECREASE_SPEED33 (0x21)
MOD_INCREASE_HEALTH34 (0x22)
MOD_INCREASE_ENERGY35 (0x23)
MOD_SHAPESHIFT36 (0x24)
EFFECT_IMMUNITY37 (0x25)
STATE_IMMUNITY38 (0x26)
SCHOOL_IMMUNITY39 (0x27)
DAMAGE_IMMUNITY40 (0x28)
DISPEL_IMMUNITY41 (0x29)
PROC_TRIGGER_SPELL42 (0x2A)
PROC_TRIGGER_DAMAGE43 (0x2B)
TRACK_CREATURES44 (0x2C)
TRACK_RESOURCES45 (0x2D)
UNKNOWN4646 (0x2E)Ignore all Gear test spells
MOD_PARRY_PERCENT47 (0x2F)
UNKNOWN4848 (0x30)One periodic spell
MOD_DODGE_PERCENT49 (0x31)
MOD_BLOCK_SKILL50 (0x32)
MOD_BLOCK_PERCENT51 (0x33)
MOD_CRIT_PERCENT52 (0x34)
PERIODIC_LEECH53 (0x35)
MOD_HIT_CHANCE54 (0x36)
MOD_SPELL_HIT_CHANCE55 (0x37)
TRANSFORM56 (0x38)
MOD_SPELL_CRIT_CHANCE57 (0x39)
MOD_INCREASE_SWIM_SPEED58 (0x3A)
MOD_DAMAGE_DONE_CREATURE59 (0x3B)
MOD_PACIFY_SILENCE60 (0x3C)
MOD_SCALE61 (0x3D)
PERIODIC_HEALTH_FUNNEL62 (0x3E)
PERIODIC_MANA_FUNNEL63 (0x3F)
PERIODIC_MANA_LEECH64 (0x40)
MOD_CASTING_SPEED_NOT_STACK65 (0x41)
FEIGN_DEATH66 (0x42)
MOD_DISARM67 (0x43)
MOD_STALKED68 (0x44)
SCHOOL_ABSORB69 (0x45)
EXTRA_ATTACKS70 (0x46)
MOD_SPELL_CRIT_CHANCE_SCHOOL71 (0x47)
MOD_POWER_COST_SCHOOL_PCT72 (0x48)
MOD_POWER_COST_SCHOOL73 (0x49)
REFLECT_SPELLS_SCHOOL74 (0x4A)
MOD_LANGUAGE75 (0x4B)
FAR_SIGHT76 (0x4C)
MECHANIC_IMMUNITY77 (0x4D)
MOUNTED78 (0x4E)
MOD_DAMAGE_PERCENT_DONE79 (0x4F)
MOD_PERCENT_STAT80 (0x50)
SPLIT_DAMAGE_PCT81 (0x51)
WATER_BREATHING82 (0x52)
MOD_BASE_RESISTANCE83 (0x53)
MOD_REGEN84 (0x54)
MOD_POWER_REGEN85 (0x55)
CHANNEL_DEATH_ITEM86 (0x56)
MOD_DAMAGE_PERCENT_TAKEN87 (0x57)
MOD_HEALTH_REGEN_PERCENT88 (0x58)
PERIODIC_DAMAGE_PERCENT89 (0x59)
MOD_RESIST_CHANCE90 (0x5A)
MOD_DETECT_RANGE91 (0x5B)
PREVENTS_FLEEING92 (0x5C)
MOD_UNATTACKABLE93 (0x5D)
INTERRUPT_REGEN94 (0x5E)
GHOST95 (0x5F)
SPELL_MAGNET96 (0x60)
MANA_SHIELD97 (0x61)
MOD_SKILL_TALENT98 (0x62)
MOD_ATTACK_POWER99 (0x63)
AURAS_VISIBLE100 (0x64)
MOD_RESISTANCE_PCT101 (0x65)
MOD_MELEE_ATTACK_POWER_VERSUS102 (0x66)
MOD_TOTAL_THREAT103 (0x67)
WATER_WALK104 (0x68)
FEATHER_FALL105 (0x69)
HOVER106 (0x6A)
ADD_FLAT_MODIFIER107 (0x6B)
ADD_PCT_MODIFIER108 (0x6C)
ADD_TARGET_TRIGGER109 (0x6D)
MOD_POWER_REGEN_PERCENT110 (0x6E)
ADD_CASTER_HIT_TRIGGER111 (0x6F)
OVERRIDE_CLASS_SCRIPTS112 (0x70)
MOD_RANGED_DAMAGE_TAKEN113 (0x71)
MOD_RANGED_DAMAGE_TAKEN_PCT114 (0x72)
MOD_HEALING115 (0x73)
MOD_REGEN_DURING_COMBAT116 (0x74)
MOD_MECHANIC_RESISTANCE117 (0x75)
MOD_HEALING_PCT118 (0x76)
SHARE_PET_TRACKING119 (0x77)
UNTRACKABLE120 (0x78)
EMPATHY121 (0x79)
MOD_OFFHAND_DAMAGE_PCT122 (0x7A)
MOD_TARGET_RESISTANCE123 (0x7B)
MOD_RANGED_ATTACK_POWER124 (0x7C)
MOD_MELEE_DAMAGE_TAKEN125 (0x7D)
MOD_MELEE_DAMAGE_TAKEN_PCT126 (0x7E)
RANGED_ATTACK_POWER_ATTACKER_BONUS127 (0x7F)
MOD_POSSESS_PET128 (0x80)
MOD_SPEED_ALWAYS129 (0x81)
MOD_MOUNTED_SPEED_ALWAYS130 (0x82)
MOD_RANGED_ATTACK_POWER_VERSUS131 (0x83)
MOD_INCREASE_ENERGY_PERCENT132 (0x84)
MOD_INCREASE_HEALTH_PERCENT133 (0x85)
MOD_MANA_REGEN_INTERRUPT134 (0x86)
MOD_HEALING_DONE135 (0x87)
MOD_HEALING_DONE_PERCENT136 (0x88)
MOD_TOTAL_STAT_PERCENTAGE137 (0x89)
MOD_MELEE_HASTE138 (0x8A)
FORCE_REACTION139 (0x8B)
MOD_RANGED_HASTE140 (0x8C)
MOD_RANGED_AMMO_HASTE141 (0x8D)
MOD_BASE_RESISTANCE_PCT142 (0x8E)
MOD_RESISTANCE_EXCLUSIVE143 (0x8F)
SAFE_FALL144 (0x90)
CHARISMA145 (0x91)
PERSUADED146 (0x92)
MECHANIC_IMMUNITY_MASK147 (0x93)
RETAIN_COMBO_POINTS148 (0x94)
RESIST_PUSHBACK149 (0x95)Resist Pushback
MOD_SHIELD_BLOCKVALUE_PCT150 (0x96)
TRACK_STEALTHED151 (0x97)Track Stealthed
MOD_DETECTED_RANGE152 (0x98)Mod Detected Range
SPLIT_DAMAGE_FLAT153 (0x99)Split Damage Flat
MOD_STEALTH_LEVEL154 (0x9A)Stealth Level Modifier
MOD_WATER_BREATHING155 (0x9B)Mod Water Breathing
MOD_REPUTATION_GAIN156 (0x9C)Mod Reputation Gain
PET_DAMAGE_MULTI157 (0x9D)Mod Pet Damage
MOD_SHIELD_BLOCKVALUE158 (0x9E)
NO_PVP_CREDIT159 (0x9F)
MOD_AOE_AVOIDANCE160 (0xA0)
MOD_HEALTH_REGEN_IN_COMBAT161 (0xA1)
POWER_BURN_MANA162 (0xA2)
MOD_CRIT_DAMAGE_BONUS163 (0xA3)
UNKNOWN164164 (0xA4)
MELEE_ATTACK_POWER_ATTACKER_BONUS165 (0xA5)
MOD_ATTACK_POWER_PCT166 (0xA6)
MOD_RANGED_ATTACK_POWER_PCT167 (0xA7)
MOD_DAMAGE_DONE_VERSUS168 (0xA8)
MOD_CRIT_PERCENT_VERSUS169 (0xA9)
DETECT_AMORE170 (0xAA)
MOD_SPEED_NOT_STACK171 (0xAB)
MOD_MOUNTED_SPEED_NOT_STACK172 (0xAC)
ALLOW_CHAMPION_SPELLS173 (0xAD)
MOD_SPELL_DAMAGE_OF_STAT_PERCENT174 (0xAE)in 1.12.1 only dependent spirit case
MOD_SPELL_HEALING_OF_STAT_PERCENT175 (0xAF)
SPIRIT_OF_REDEMPTION176 (0xB0)
AOE_CHARM177 (0xB1)
MOD_DEBUFF_RESISTANCE178 (0xB2)
MOD_ATTACKER_SPELL_CRIT_CHANCE179 (0xB3)
MOD_FLAT_SPELL_DAMAGE_VERSUS180 (0xB4)
MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS181 (0xB5)unused - possible flat spell crit damage versus
MOD_RESISTANCE_OF_STAT_PERCENT182 (0xB6)
MOD_CRITICAL_THREAT183 (0xB7)
MOD_ATTACKER_MELEE_HIT_CHANCE184 (0xB8)
MOD_ATTACKER_RANGED_HIT_CHANCE185 (0xB9)
MOD_ATTACKER_SPELL_HIT_CHANCE186 (0xBA)
MOD_ATTACKER_MELEE_CRIT_CHANCE187 (0xBB)
MOD_ATTACKER_RANGED_CRIT_CHANCE188 (0xBC)
MOD_RATING189 (0xBD)
MOD_FACTION_REPUTATION_GAIN190 (0xBE)
USE_NORMAL_MOVEMENT_SPEED191 (0xBF)

Used in:

Client Version 2.4.3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/spell/smsg_periodicauralog.wowm:273.

enum AuraType : u32 {
    NONE = 0;
    BIND_SIGHT = 1;
    MOD_POSSESS = 2;
    PERIODIC_DAMAGE = 3;
    DUMMY = 4;
    MOD_CONFUSE = 5;
    MOD_CHARM = 6;
    MOD_FEAR = 7;
    PERIODIC_HEAL = 8;
    MOD_ATTACKSPEED = 9;
    MOD_THREAT = 10;
    MOD_TAUNT = 11;
    MOD_STUN = 12;
    MOD_DAMAGE_DONE = 13;
    MOD_DAMAGE_TAKEN = 14;
    DAMAGE_SHIELD = 15;
    MOD_STEALTH = 16;
    MOD_STEALTH_DETECT = 17;
    MOD_INVISIBILITY = 18;
    MOD_INVISIBILITY_DETECTION = 19;
    OBS_MOD_HEALTH = 20;
    OBS_MOD_MANA = 21;
    MOD_RESISTANCE = 22;
    PERIODIC_TRIGGER_SPELL = 23;
    PERIODIC_ENERGIZE = 24;
    MOD_PACIFY = 25;
    MOD_ROOT = 26;
    MOD_SILENCE = 27;
    REFLECT_SPELLS = 28;
    MOD_STAT = 29;
    MOD_SKILL = 30;
    MOD_INCREASE_SPEED = 31;
    MOD_INCREASE_MOUNTED_SPEED = 32;
    MOD_DECREASE_SPEED = 33;
    MOD_INCREASE_HEALTH = 34;
    MOD_INCREASE_ENERGY = 35;
    MOD_SHAPESHIFT = 36;
    EFFECT_IMMUNITY = 37;
    STATE_IMMUNITY = 38;
    SCHOOL_IMMUNITY = 39;
    DAMAGE_IMMUNITY = 40;
    DISPEL_IMMUNITY = 41;
    PROC_TRIGGER_SPELL = 42;
    PROC_TRIGGER_DAMAGE = 43;
    TRACK_CREATURES = 44;
    TRACK_RESOURCES = 45;
    UNKNOWN46 = 46;
    MOD_PARRY_PERCENT = 47;
    UNKNOWN48 = 48;
    MOD_DODGE_PERCENT = 49;
    MOD_BLOCK_SKILL = 50;
    MOD_BLOCK_PERCENT = 51;
    MOD_CRIT_PERCENT = 52;
    PERIODIC_LEECH = 53;
    MOD_HIT_CHANCE = 54;
    MOD_SPELL_HIT_CHANCE = 55;
    TRANSFORM = 56;
    MOD_SPELL_CRIT_CHANCE = 57;
    MOD_INCREASE_SWIM_SPEED = 58;
    MOD_DAMAGE_DONE_CREATURE = 59;
    MOD_PACIFY_SILENCE = 60;
    MOD_SCALE = 61;
    PERIODIC_HEALTH_FUNNEL = 62;
    PERIODIC_MANA_FUNNEL = 63;
    PERIODIC_MANA_LEECH = 64;
    MOD_CASTING_SPEED_NOT_STACK = 65;
    FEIGN_DEATH = 66;
    MOD_DISARM = 67;
    MOD_STALKED = 68;
    SCHOOL_ABSORB = 69;
    EXTRA_ATTACKS = 70;
    MOD_SPELL_CRIT_CHANCE_SCHOOL = 71;
    MOD_POWER_COST_SCHOOL_PCT = 72;
    MOD_POWER_COST_SCHOOL = 73;
    REFLECT_SPELLS_SCHOOL = 74;
    MOD_LANGUAGE = 75;
    FAR_SIGHT = 76;
    MECHANIC_IMMUNITY = 77;
    MOUNTED = 78;
    MOD_DAMAGE_PERCENT_DONE = 79;
    MOD_PERCENT_STAT = 80;
    SPLIT_DAMAGE_PCT = 81;
    WATER_BREATHING = 82;
    MOD_BASE_RESISTANCE = 83;
    MOD_REGEN = 84;
    MOD_POWER_REGEN = 85;
    CHANNEL_DEATH_ITEM = 86;
    MOD_DAMAGE_PERCENT_TAKEN = 87;
    MOD_HEALTH_REGEN_PERCENT = 88;
    PERIODIC_DAMAGE_PERCENT = 89;
    MOD_RESIST_CHANCE = 90;
    MOD_DETECT_RANGE = 91;
    PREVENTS_FLEEING = 92;
    MOD_UNATTACKABLE = 93;
    INTERRUPT_REGEN = 94;
    GHOST = 95;
    SPELL_MAGNET = 96;
    MANA_SHIELD = 97;
    MOD_SKILL_TALENT = 98;
    MOD_ATTACK_POWER = 99;
    AURAS_VISIBLE = 100;
    MOD_RESISTANCE_PCT = 101;
    MOD_MELEE_ATTACK_POWER_VERSUS = 102;
    MOD_TOTAL_THREAT = 103;
    WATER_WALK = 104;
    FEATHER_FALL = 105;
    HOVER = 106;
    ADD_FLAT_MODIFIER = 107;
    ADD_PCT_MODIFIER = 108;
    ADD_TARGET_TRIGGER = 109;
    MOD_POWER_REGEN_PERCENT = 110;
    ADD_CASTER_HIT_TRIGGER = 111;
    OVERRIDE_CLASS_SCRIPTS = 112;
    MOD_RANGED_DAMAGE_TAKEN = 113;
    MOD_RANGED_DAMAGE_TAKEN_PCT = 114;
    MOD_HEALING = 115;
    MOD_REGEN_DURING_COMBAT = 116;
    MOD_MECHANIC_RESISTANCE = 117;
    MOD_HEALING_PCT = 118;
    SHARE_PET_TRACKING = 119;
    UNTRACKABLE = 120;
    EMPATHY = 121;
    MOD_OFFHAND_DAMAGE_PCT = 122;
    MOD_TARGET_RESISTANCE = 123;
    MOD_RANGED_ATTACK_POWER = 124;
    MOD_MELEE_DAMAGE_TAKEN = 125;
    MOD_MELEE_DAMAGE_TAKEN_PCT = 126;
    RANGED_ATTACK_POWER_ATTACKER_BONUS = 127;
    MOD_POSSESS_PET = 128;
    MOD_SPEED_ALWAYS = 129;
    MOD_MOUNTED_SPEED_ALWAYS = 130;
    MOD_RANGED_ATTACK_POWER_VERSUS = 131;
    MOD_INCREASE_ENERGY_PERCENT = 132;
    MOD_INCREASE_HEALTH_PERCENT = 133;
    MOD_MANA_REGEN_INTERRUPT = 134;
    MOD_HEALING_DONE = 135;
    MOD_HEALING_DONE_PERCENT = 136;
    MOD_TOTAL_STAT_PERCENTAGE = 137;
    MOD_MELEE_HASTE = 138;
    FORCE_REACTION = 139;
    MOD_RANGED_HASTE = 140;
    MOD_RANGED_AMMO_HASTE = 141;
    MOD_BASE_RESISTANCE_PCT = 142;
    MOD_RESISTANCE_EXCLUSIVE = 143;
    SAFE_FALL = 144;
    CHARISMA = 145;
    PERSUADED = 146;
    MECHANIC_IMMUNITY_MASK = 147;
    RETAIN_COMBO_POINTS = 148;
    RESIST_PUSHBACK = 149;
    MOD_SHIELD_BLOCKVALUE_PCT = 150;
    TRACK_STEALTHED = 151;
    MOD_DETECTED_RANGE = 152;
    SPLIT_DAMAGE_FLAT = 153;
    MOD_STEALTH_LEVEL = 154;
    MOD_WATER_BREATHING = 155;
    MOD_REPUTATION_GAIN = 156;
    PET_DAMAGE_MULTI = 157;
    MOD_SHIELD_BLOCKVALUE = 158;
    NO_PVP_CREDIT = 159;
    MOD_AOE_AVOIDANCE = 160;
    MOD_HEALTH_REGEN_IN_COMBAT = 161;
    POWER_BURN_MANA = 162;
    MOD_CRIT_DAMAGE_BONUS = 163;
    UNKNOWN164 = 164;
    MELEE_ATTACK_POWER_ATTACKER_BONUS = 165;
    MOD_ATTACK_POWER_PCT = 166;
    MOD_RANGED_ATTACK_POWER_PCT = 167;
    MOD_DAMAGE_DONE_VERSUS = 168;
    MOD_CRIT_PERCENT_VERSUS = 169;
    DETECT_AMORE = 170;
    MOD_SPEED_NOT_STACK = 171;
    MOD_MOUNTED_SPEED_NOT_STACK = 172;
    ALLOW_CHAMPION_SPELLS = 173;
    MOD_SPELL_DAMAGE_OF_STAT_PERCENT = 174;
    MOD_SPELL_HEALING_OF_STAT_PERCENT = 175;
    SPIRIT_OF_REDEMPTION = 176;
    AOE_CHARM = 177;
    MOD_DEBUFF_RESISTANCE = 178;
    MOD_ATTACKER_SPELL_CRIT_CHANCE = 179;
    MOD_FLAT_SPELL_DAMAGE_VERSUS = 180;
    MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS = 181;
    MOD_RESISTANCE_OF_STAT_PERCENT = 182;
    MOD_CRITICAL_THREAT = 183;
    MOD_ATTACKER_MELEE_HIT_CHANCE = 184;
    MOD_ATTACKER_RANGED_HIT_CHANCE = 185;
    MOD_ATTACKER_SPELL_HIT_CHANCE = 186;
    MOD_ATTACKER_MELEE_CRIT_CHANCE = 187;
    MOD_ATTACKER_RANGED_CRIT_CHANCE = 188;
    MOD_RATING = 189;
    MOD_FACTION_REPUTATION_GAIN = 190;
    USE_NORMAL_MOVEMENT_SPEED = 191;
    MOD_MELEE_RANGED_HASTE = 192;
    HASTE_ALL = 193;
    MOD_DEPRICATED_1 = 194;
    MOD_DEPRICATED_2 = 195;
    MOD_COOLDOWN = 196;
    MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE = 197;
    MOD_ALL_WEAPON_SKILLS = 198;
    MOD_INCREASES_SPELL_PCT_TO_HIT = 199;
    MOD_XP_PCT = 200;
    FLY = 201;
    IGNORE_COMBAT_RESULT = 202;
    MOD_ATTACKER_MELEE_CRIT_DAMAGE = 203;
    MOD_ATTACKER_RANGED_CRIT_DAMAGE = 204;
    MOD_ATTACKER_SPELL_CRIT_DAMAGE = 205;
    MOD_FLIGHT_SPEED = 206;
    MOD_FLIGHT_SPEED_MOUNTED = 207;
    MOD_FLIGHT_SPEED_STACKING = 208;
    MOD_FLIGHT_SPEED_MOUNTED_STACKING = 209;
    MOD_FLIGHT_SPEED_NOT_STACKING = 210;
    MOD_FLIGHT_SPEED_MOUNTED_NOT_STACKING = 211;
    MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT = 212;
    MOD_RAGE_FROM_DAMAGE_DEALT = 213;
    UNKNOWN214 = 214;
    ARENA_PREPARATION = 215;
    HASTE_SPELLS = 216;
    UNKNOWN217 = 217;
    HASTE_RANGED = 218;
    MOD_MANA_REGEN_FROM_STAT = 219;
    MOD_RATING_FROM_STAT = 220;
    UNKNOWN221 = 221;
    UNKNOWN222 = 222;
    UNKNOWN223 = 223;
    UNKNOWN224 = 224;
    PRAYER_OF_MENDING = 225;
    PERIODIC_DUMMY = 226;
    PERIODIC_TRIGGER_SPELL_WITH_VALUE = 227;
    DETECT_STEALTH = 228;
    MOD_AOE_DAMAGE_AVOIDANCE = 229;
    UNKNOWN230 = 230;
    PROC_TRIGGER_SPELL_WITH_VALUE = 231;
    MECHANIC_DURATION_MOD = 232;
    UNKNOWN233 = 233;
    MECHANIC_DURATION_MOD_NOT_STACK = 234;
    MOD_DISPEL_RESIST = 235;
    UNKNOWN236 = 236;
    MOD_SPELL_DAMAGE_OF_ATTACK_POWER = 237;
    MOD_SPELL_HEALING_OF_ATTACK_POWER = 238;
    MOD_SCALE_2 = 239;
    MOD_EXPERTISE = 240;
    FORCE_MOVE_FORWARD = 241;
    UNKNOWN242 = 242;
    UNKNOWN243 = 243;
    COMPREHEND_LANGUAGE = 244;
    UNKNOWN245 = 245;
    UNKNOWN246 = 246;
    MIRROR_IMAGE = 247;
    MOD_COMBAT_RESULT_CHANCE = 248;
    UNKNOWN249 = 249;
    MOD_INCREASE_HEALTH_2 = 250;
    MOD_ENEMY_DODGE = 251;
    UNKNOWN252 = 252;
    UNKNOWN253 = 253;
    UNKNOWN254 = 254;
    UNKNOWN255 = 255;
    UNKNOWN256 = 256;
    UNKNOWN257 = 257;
    UNKNOWN258 = 258;
    UNKNOWN259 = 259;
    UNKNOWN260 = 260;
    UNKNOWN261 = 261;
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
BIND_SIGHT1 (0x01)
MOD_POSSESS2 (0x02)
PERIODIC_DAMAGE3 (0x03)The aura should do periodic damage, the function that handles this is Aura::HandlePeriodicDamage, the amount is usually decided by the Unit::SpellDamageBonusDone or Unit::MeleeDamageBonusDone which increases/decreases the Modifier::m_amount.
DUMMY4 (0x04)Used by \ref Aura::HandleAuraDummy
MOD_CONFUSE5 (0x05)Used by Aura::HandleModConfuse, will either confuse or unconfuse the target depending on whether the apply flag is set
MOD_CHARM6 (0x06)
MOD_FEAR7 (0x07)
PERIODIC_HEAL8 (0x08)The aura will do periodic heals of a target, handled by Aura::HandlePeriodicHeal, uses Unit::SpellHealingBonusDone to calculate whether to increase or decrease Modifier::m_amount
MOD_ATTACKSPEED9 (0x09)Changes the attackspeed, the Modifier::m_amount decides how much we change in percent, ie, if the m_amount is 50 the attackspeed will increase by 50%
MOD_THREAT10 (0x0A)Modifies the threat that the Aura does in percent, the Modifier::m_miscvalue decides which of the SpellSchools it should affect threat for.
MOD_TAUNT11 (0x0B)Just applies a taunt which will change the threat a mob has taken care of in Aura::HandleModThreat
MOD_STUN12 (0x0C)Stuns targets in different ways, taken care of in Aura::HandleAuraModStun
MOD_DAMAGE_DONE13 (0x0D)Changes the damage done by a weapon in any hand, the Modifier::m_miscvalue will tell what school the damage is from, it's used as a bitmask SpellSchoolMask
MOD_DAMAGE_TAKEN14 (0x0E)Not handled by the Aura class but instead this is implemented in Unit::MeleeDamageBonusTaken and Unit::SpellBaseDamageBonusTaken
DAMAGE_SHIELD15 (0x0F)Not handled by the Aura class, implemented in Unit::DealMeleeDamage
MOD_STEALTH16 (0x10)Taken care of in Aura::HandleModStealth, take note that this is not the same thing as invisibility
MOD_STEALTH_DETECT17 (0x11)Not handled by the Aura class, implemented in Unit::IsVisibleForOrDetect which does a lot of checks to determine whether the person is visible or not, the AuraType::MOD_STEALTH seems to determine how in/visible ie a rogue is.
MOD_INVISIBILITY18 (0x12)Handled by Aura::HandleInvisibility, the Modifier::m_miscvalue in the struct seems to decide what kind of invisibility it is with a bitflag. the miscvalue decides which bit is set, ie: 3 would make the 3rd bit be set.
MOD_INVISIBILITY_DETECTION19 (0x13)Adds one of the kinds of detections to the possible detections. As in AuraType::SPEALL_AURA_MOD_INVISIBILITY the Modifier::m_miscvalue seems to decide what kind of invisibility the Unit or Player should be able to detect.
OBS_MOD_HEALTH20 (0x14)unofficial
OBS_MOD_MANA21 (0x15)unofficial
MOD_RESISTANCE22 (0x16)Handled by Aura::HandleAuraModResistance, changes the resistance for a Unit the field Modifier::m_miscvalue decides which kind of resistance that should be changed
PERIODIC_TRIGGER_SPELL23 (0x17)Currently just sets Aura::m_isPeriodic to apply and has a special case for Curse of the Plaguebringer.
PERIODIC_ENERGIZE24 (0x18)Just sets Aura::m_isPeriodic to apply
MOD_PACIFY25 (0x19)Changes whether the target is pacified or not depending on the apply flag. Pacify makes the target silenced and have all it's attack skill disabled. See: http://www.wowhead.com/spell=6462/pacified
MOD_ROOT26 (0x1A)Roots or unroots the target
MOD_SILENCE27 (0x1B)Silences the target and stops and spell casts that should be stopped, they have the flag SpellPreventionType::SPELL_PREVENTION_TYPE_SILENCE
REFLECT_SPELLS28 (0x1C)
MOD_STAT29 (0x1D)
MOD_SKILL30 (0x1E)
MOD_INCREASE_SPEED31 (0x1F)
MOD_INCREASE_MOUNTED_SPEED32 (0x20)
MOD_DECREASE_SPEED33 (0x21)
MOD_INCREASE_HEALTH34 (0x22)
MOD_INCREASE_ENERGY35 (0x23)
MOD_SHAPESHIFT36 (0x24)
EFFECT_IMMUNITY37 (0x25)
STATE_IMMUNITY38 (0x26)
SCHOOL_IMMUNITY39 (0x27)
DAMAGE_IMMUNITY40 (0x28)
DISPEL_IMMUNITY41 (0x29)
PROC_TRIGGER_SPELL42 (0x2A)
PROC_TRIGGER_DAMAGE43 (0x2B)
TRACK_CREATURES44 (0x2C)
TRACK_RESOURCES45 (0x2D)
UNKNOWN4646 (0x2E)Ignore all Gear test spells
MOD_PARRY_PERCENT47 (0x2F)
UNKNOWN4848 (0x30)One periodic spell
MOD_DODGE_PERCENT49 (0x31)
MOD_BLOCK_SKILL50 (0x32)
MOD_BLOCK_PERCENT51 (0x33)
MOD_CRIT_PERCENT52 (0x34)
PERIODIC_LEECH53 (0x35)
MOD_HIT_CHANCE54 (0x36)
MOD_SPELL_HIT_CHANCE55 (0x37)
TRANSFORM56 (0x38)
MOD_SPELL_CRIT_CHANCE57 (0x39)
MOD_INCREASE_SWIM_SPEED58 (0x3A)
MOD_DAMAGE_DONE_CREATURE59 (0x3B)
MOD_PACIFY_SILENCE60 (0x3C)
MOD_SCALE61 (0x3D)
PERIODIC_HEALTH_FUNNEL62 (0x3E)
PERIODIC_MANA_FUNNEL63 (0x3F)
PERIODIC_MANA_LEECH64 (0x40)
MOD_CASTING_SPEED_NOT_STACK65 (0x41)
FEIGN_DEATH66 (0x42)
MOD_DISARM67 (0x43)
MOD_STALKED68 (0x44)
SCHOOL_ABSORB69 (0x45)
EXTRA_ATTACKS70 (0x46)
MOD_SPELL_CRIT_CHANCE_SCHOOL71 (0x47)
MOD_POWER_COST_SCHOOL_PCT72 (0x48)
MOD_POWER_COST_SCHOOL73 (0x49)
REFLECT_SPELLS_SCHOOL74 (0x4A)
MOD_LANGUAGE75 (0x4B)
FAR_SIGHT76 (0x4C)
MECHANIC_IMMUNITY77 (0x4D)
MOUNTED78 (0x4E)
MOD_DAMAGE_PERCENT_DONE79 (0x4F)
MOD_PERCENT_STAT80 (0x50)
SPLIT_DAMAGE_PCT81 (0x51)
WATER_BREATHING82 (0x52)
MOD_BASE_RESISTANCE83 (0x53)
MOD_REGEN84 (0x54)
MOD_POWER_REGEN85 (0x55)
CHANNEL_DEATH_ITEM86 (0x56)
MOD_DAMAGE_PERCENT_TAKEN87 (0x57)
MOD_HEALTH_REGEN_PERCENT88 (0x58)
PERIODIC_DAMAGE_PERCENT89 (0x59)
MOD_RESIST_CHANCE90 (0x5A)
MOD_DETECT_RANGE91 (0x5B)
PREVENTS_FLEEING92 (0x5C)
MOD_UNATTACKABLE93 (0x5D)
INTERRUPT_REGEN94 (0x5E)
GHOST95 (0x5F)
SPELL_MAGNET96 (0x60)
MANA_SHIELD97 (0x61)
MOD_SKILL_TALENT98 (0x62)
MOD_ATTACK_POWER99 (0x63)
AURAS_VISIBLE100 (0x64)
MOD_RESISTANCE_PCT101 (0x65)
MOD_MELEE_ATTACK_POWER_VERSUS102 (0x66)
MOD_TOTAL_THREAT103 (0x67)
WATER_WALK104 (0x68)
FEATHER_FALL105 (0x69)
HOVER106 (0x6A)
ADD_FLAT_MODIFIER107 (0x6B)
ADD_PCT_MODIFIER108 (0x6C)
ADD_TARGET_TRIGGER109 (0x6D)
MOD_POWER_REGEN_PERCENT110 (0x6E)
ADD_CASTER_HIT_TRIGGER111 (0x6F)
OVERRIDE_CLASS_SCRIPTS112 (0x70)
MOD_RANGED_DAMAGE_TAKEN113 (0x71)
MOD_RANGED_DAMAGE_TAKEN_PCT114 (0x72)
MOD_HEALING115 (0x73)
MOD_REGEN_DURING_COMBAT116 (0x74)
MOD_MECHANIC_RESISTANCE117 (0x75)
MOD_HEALING_PCT118 (0x76)
SHARE_PET_TRACKING119 (0x77)
UNTRACKABLE120 (0x78)
EMPATHY121 (0x79)
MOD_OFFHAND_DAMAGE_PCT122 (0x7A)
MOD_TARGET_RESISTANCE123 (0x7B)
MOD_RANGED_ATTACK_POWER124 (0x7C)
MOD_MELEE_DAMAGE_TAKEN125 (0x7D)
MOD_MELEE_DAMAGE_TAKEN_PCT126 (0x7E)
RANGED_ATTACK_POWER_ATTACKER_BONUS127 (0x7F)
MOD_POSSESS_PET128 (0x80)
MOD_SPEED_ALWAYS129 (0x81)
MOD_MOUNTED_SPEED_ALWAYS130 (0x82)
MOD_RANGED_ATTACK_POWER_VERSUS131 (0x83)
MOD_INCREASE_ENERGY_PERCENT132 (0x84)
MOD_INCREASE_HEALTH_PERCENT133 (0x85)
MOD_MANA_REGEN_INTERRUPT134 (0x86)
MOD_HEALING_DONE135 (0x87)
MOD_HEALING_DONE_PERCENT136 (0x88)
MOD_TOTAL_STAT_PERCENTAGE137 (0x89)
MOD_MELEE_HASTE138 (0x8A)
FORCE_REACTION139 (0x8B)
MOD_RANGED_HASTE140 (0x8C)
MOD_RANGED_AMMO_HASTE141 (0x8D)
MOD_BASE_RESISTANCE_PCT142 (0x8E)
MOD_RESISTANCE_EXCLUSIVE143 (0x8F)
SAFE_FALL144 (0x90)
CHARISMA145 (0x91)
PERSUADED146 (0x92)
MECHANIC_IMMUNITY_MASK147 (0x93)
RETAIN_COMBO_POINTS148 (0x94)
RESIST_PUSHBACK149 (0x95)Resist Pushback
MOD_SHIELD_BLOCKVALUE_PCT150 (0x96)
TRACK_STEALTHED151 (0x97)Track Stealthed
MOD_DETECTED_RANGE152 (0x98)Mod Detected Range
SPLIT_DAMAGE_FLAT153 (0x99)Split Damage Flat
MOD_STEALTH_LEVEL154 (0x9A)Stealth Level Modifier
MOD_WATER_BREATHING155 (0x9B)Mod Water Breathing
MOD_REPUTATION_GAIN156 (0x9C)Mod Reputation Gain
PET_DAMAGE_MULTI157 (0x9D)Mod Pet Damage
MOD_SHIELD_BLOCKVALUE158 (0x9E)
NO_PVP_CREDIT159 (0x9F)
MOD_AOE_AVOIDANCE160 (0xA0)Reduces the hit chance for AOE spells
MOD_HEALTH_REGEN_IN_COMBAT161 (0xA1)
POWER_BURN_MANA162 (0xA2)
MOD_CRIT_DAMAGE_BONUS163 (0xA3)
UNKNOWN164164 (0xA4)
MELEE_ATTACK_POWER_ATTACKER_BONUS165 (0xA5)
MOD_ATTACK_POWER_PCT166 (0xA6)
MOD_RANGED_ATTACK_POWER_PCT167 (0xA7)
MOD_DAMAGE_DONE_VERSUS168 (0xA8)
MOD_CRIT_PERCENT_VERSUS169 (0xA9)
DETECT_AMORE170 (0xAA)
MOD_SPEED_NOT_STACK171 (0xAB)
MOD_MOUNTED_SPEED_NOT_STACK172 (0xAC)
ALLOW_CHAMPION_SPELLS173 (0xAD)
MOD_SPELL_DAMAGE_OF_STAT_PERCENT174 (0xAE)by defeult intelect, dependent from MOD_SPELL_HEALING_OF_STAT_PERCENT
MOD_SPELL_HEALING_OF_STAT_PERCENT175 (0xAF)
SPIRIT_OF_REDEMPTION176 (0xB0)
AOE_CHARM177 (0xB1)
MOD_DEBUFF_RESISTANCE178 (0xB2)
MOD_ATTACKER_SPELL_CRIT_CHANCE179 (0xB3)
MOD_FLAT_SPELL_DAMAGE_VERSUS180 (0xB4)
MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS181 (0xB5)unused - possible flat spell crit damage versus
MOD_RESISTANCE_OF_STAT_PERCENT182 (0xB6)
MOD_CRITICAL_THREAT183 (0xB7)
MOD_ATTACKER_MELEE_HIT_CHANCE184 (0xB8)
MOD_ATTACKER_RANGED_HIT_CHANCE185 (0xB9)
MOD_ATTACKER_SPELL_HIT_CHANCE186 (0xBA)
MOD_ATTACKER_MELEE_CRIT_CHANCE187 (0xBB)
MOD_ATTACKER_RANGED_CRIT_CHANCE188 (0xBC)
MOD_RATING189 (0xBD)
MOD_FACTION_REPUTATION_GAIN190 (0xBE)
USE_NORMAL_MOVEMENT_SPEED191 (0xBF)
MOD_MELEE_RANGED_HASTE192 (0xC0)
HASTE_ALL193 (0xC1)
MOD_DEPRICATED_1194 (0xC2)not used now, old MOD_SPELL_DAMAGE_OF_INTELLECT
MOD_DEPRICATED_2195 (0xC3)not used now, old MOD_SPELL_HEALING_OF_INTELLECT
MOD_COOLDOWN196 (0xC4)only 24818 Noxious Breath
MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE197 (0xC5)
MOD_ALL_WEAPON_SKILLS198 (0xC6)
MOD_INCREASES_SPELL_PCT_TO_HIT199 (0xC7)
MOD_XP_PCT200 (0xC8)
FLY201 (0xC9)
IGNORE_COMBAT_RESULT202 (0xCA)
MOD_ATTACKER_MELEE_CRIT_DAMAGE203 (0xCB)
MOD_ATTACKER_RANGED_CRIT_DAMAGE204 (0xCC)
MOD_ATTACKER_SPELL_CRIT_DAMAGE205 (0xCD)
MOD_FLIGHT_SPEED206 (0xCE)
MOD_FLIGHT_SPEED_MOUNTED207 (0xCF)
MOD_FLIGHT_SPEED_STACKING208 (0xD0)
MOD_FLIGHT_SPEED_MOUNTED_STACKING209 (0xD1)
MOD_FLIGHT_SPEED_NOT_STACKING210 (0xD2)
MOD_FLIGHT_SPEED_MOUNTED_NOT_STACKING211 (0xD3)
MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT212 (0xD4)
MOD_RAGE_FROM_DAMAGE_DEALT213 (0xD5)
UNKNOWN214214 (0xD6)
ARENA_PREPARATION215 (0xD7)
HASTE_SPELLS216 (0xD8)
UNKNOWN217217 (0xD9)
HASTE_RANGED218 (0xDA)
MOD_MANA_REGEN_FROM_STAT219 (0xDB)
MOD_RATING_FROM_STAT220 (0xDC)
UNKNOWN221221 (0xDD)
UNKNOWN222222 (0xDE)
UNKNOWN223223 (0xDF)
UNKNOWN224224 (0xE0)
PRAYER_OF_MENDING225 (0xE1)
PERIODIC_DUMMY226 (0xE2)
PERIODIC_TRIGGER_SPELL_WITH_VALUE227 (0xE3)
DETECT_STEALTH228 (0xE4)
MOD_AOE_DAMAGE_AVOIDANCE229 (0xE5)
UNKNOWN230230 (0xE6)
PROC_TRIGGER_SPELL_WITH_VALUE231 (0xE7)
MECHANIC_DURATION_MOD232 (0xE8)
UNKNOWN233233 (0xE9)
MECHANIC_DURATION_MOD_NOT_STACK234 (0xEA)
MOD_DISPEL_RESIST235 (0xEB)
UNKNOWN236236 (0xEC)
MOD_SPELL_DAMAGE_OF_ATTACK_POWER237 (0xED)
MOD_SPELL_HEALING_OF_ATTACK_POWER238 (0xEE)
MOD_SCALE_2239 (0xEF)
MOD_EXPERTISE240 (0xF0)
FORCE_MOVE_FORWARD241 (0xF1)
UNKNOWN242242 (0xF2)
UNKNOWN243243 (0xF3)
COMPREHEND_LANGUAGE244 (0xF4)
UNKNOWN245245 (0xF5)
UNKNOWN246246 (0xF6)
MIRROR_IMAGE247 (0xF7)
MOD_COMBAT_RESULT_CHANCE248 (0xF8)
UNKNOWN249249 (0xF9)
MOD_INCREASE_HEALTH_2250 (0xFA)
MOD_ENEMY_DODGE251 (0xFB)
UNKNOWN252252 (0xFC)
UNKNOWN253253 (0xFD)
UNKNOWN254254 (0xFE)
UNKNOWN255255 (0xFF)
UNKNOWN256256 (0x100)
UNKNOWN257257 (0x101)
UNKNOWN258258 (0x102)
UNKNOWN259259 (0x103)
UNKNOWN260260 (0x104)
UNKNOWN261261 (0x105)

Used in:

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/spell/smsg_periodicauralog.wowm:610.

enum AuraType : u32 {
    NONE = 0;
    BIND_SIGHT = 1;
    MOD_POSSESS = 2;
    PERIODIC_DAMAGE = 3;
    DUMMY = 4;
    MOD_CONFUSE = 5;
    MOD_CHARM = 6;
    MOD_FEAR = 7;
    PERIODIC_HEAL = 8;
    MOD_ATTACKSPEED = 9;
    MOD_THREAT = 10;
    MOD_TAUNT = 11;
    MOD_STUN = 12;
    MOD_DAMAGE_DONE = 13;
    MOD_DAMAGE_TAKEN = 14;
    DAMAGE_SHIELD = 15;
    MOD_STEALTH = 16;
    MOD_STEALTH_DETECT = 17;
    MOD_INVISIBILITY = 18;
    MOD_INVISIBILITY_DETECT = 19;
    OBS_MOD_HEALTH = 20;
    OBS_MOD_POWER = 21;
    MOD_RESISTANCE = 22;
    PERIODIC_TRIGGER_SPELL = 23;
    PERIODIC_ENERGIZE = 24;
    MOD_PACIFY = 25;
    MOD_ROOT = 26;
    MOD_SILENCE = 27;
    REFLECT_SPELLS = 28;
    MOD_STAT = 29;
    MOD_SKILL = 30;
    MOD_INCREASE_SPEED = 31;
    MOD_INCREASE_MOUNTED_SPEED = 32;
    MOD_DECREASE_SPEED = 33;
    MOD_INCREASE_HEALTH = 34;
    MOD_INCREASE_ENERGY = 35;
    MOD_SHAPESHIFT = 36;
    EFFECT_IMMUNITY = 37;
    STATE_IMMUNITY = 38;
    SCHOOL_IMMUNITY = 39;
    DAMAGE_IMMUNITY = 40;
    DISPEL_IMMUNITY = 41;
    PROC_TRIGGER_SPELL = 42;
    PROC_TRIGGER_DAMAGE = 43;
    TRACK_CREATURES = 44;
    TRACK_RESOURCES = 45;
    UNKNOWN46 = 46;
    MOD_PARRY_PERCENT = 47;
    PERIODIC_TRIGGER_SPELL_FROM_CLIENT = 48;
    MOD_DODGE_PERCENT = 49;
    MOD_CRITICAL_HEALING_AMOUNT = 50;
    MOD_BLOCK_PERCENT = 51;
    MOD_WEAPON_CRIT_PERCENT = 52;
    PERIODIC_LEECH = 53;
    MOD_HIT_CHANCE = 54;
    MOD_SPELL_HIT_CHANCE = 55;
    TRANSFORM = 56;
    MOD_SPELL_CRIT_CHANCE = 57;
    MOD_INCREASE_SWIM_SPEED = 58;
    MOD_DAMAGE_DONE_CREATURE = 59;
    MOD_PACIFY_SILENCE = 60;
    MOD_SCALE = 61;
    PERIODIC_HEALTH_FUNNEL = 62;
    UNKNOWN63 = 63;
    PERIODIC_MANA_LEECH = 64;
    MOD_CASTING_SPEED_NOT_STACK = 65;
    FEIGN_DEATH = 66;
    MOD_DISARM = 67;
    MOD_STALKED = 68;
    SCHOOL_ABSORB = 69;
    EXTRA_ATTACKS = 70;
    MOD_SPELL_CRIT_CHANCE_SCHOOL = 71;
    MOD_POWER_COST_SCHOOL_PCT = 72;
    MOD_POWER_COST_SCHOOL = 73;
    REFLECT_SPELLS_SCHOOL = 74;
    MOD_LANGUAGE = 75;
    FAR_SIGHT = 76;
    MECHANIC_IMMUNITY = 77;
    MOUNTED = 78;
    MOD_DAMAGE_PERCENT_DONE = 79;
    MOD_PERCENT_STAT = 80;
    SPLIT_DAMAGE_PCT = 81;
    WATER_BREATHING = 82;
    MOD_BASE_RESISTANCE = 83;
    MOD_REGEN = 84;
    MOD_POWER_REGEN = 85;
    CHANNEL_DEATH_ITEM = 86;
    MOD_DAMAGE_PERCENT_TAKEN = 87;
    MOD_HEALTH_REGEN_PERCENT = 88;
    PERIODIC_DAMAGE_PERCENT = 89;
    UNKNOWN90 = 90;
    MOD_DETECT_RANGE = 91;
    PREVENTS_FLEEING = 92;
    MOD_UNATTACKABLE = 93;
    INTERRUPT_REGEN = 94;
    GHOST = 95;
    SPELL_MAGNET = 96;
    MANA_SHIELD = 97;
    MOD_SKILL_TALENT = 98;
    MOD_ATTACK_POWER = 99;
    AURAS_VISIBLE = 100;
    MOD_RESISTANCE_PCT = 101;
    MOD_MELEE_ATTACK_POWER_VERSUS = 102;
    MOD_TOTAL_THREAT = 103;
    WATER_WALK = 104;
    FEATHER_FALL = 105;
    HOVER = 106;
    ADD_FLAT_MODIFIER = 107;
    ADD_PCT_MODIFIER = 108;
    ADD_TARGET_TRIGGER = 109;
    MOD_POWER_REGEN_PERCENT = 110;
    ADD_CASTER_HIT_TRIGGER = 111;
    OVERRIDE_CLASS_SCRIPTS = 112;
    MOD_RANGED_DAMAGE_TAKEN = 113;
    MOD_RANGED_DAMAGE_TAKEN_PCT = 114;
    MOD_HEALING = 115;
    MOD_REGEN_DURING_COMBAT = 116;
    MOD_MECHANIC_RESISTANCE = 117;
    MOD_HEALING_PCT = 118;
    UNKNOWN119 = 119;
    UNTRACKABLE = 120;
    EMPATHY = 121;
    MOD_OFFHAND_DAMAGE_PCT = 122;
    MOD_TARGET_RESISTANCE = 123;
    MOD_RANGED_ATTACK_POWER = 124;
    MOD_MELEE_DAMAGE_TAKEN = 125;
    MOD_MELEE_DAMAGE_TAKEN_PCT = 126;
    RANGED_ATTACK_POWER_ATTACKER_BONUS = 127;
    MOD_POSSESS_PET = 128;
    MOD_SPEED_ALWAYS = 129;
    MOD_MOUNTED_SPEED_ALWAYS = 130;
    MOD_RANGED_ATTACK_POWER_VERSUS = 131;
    MOD_INCREASE_ENERGY_PERCENT = 132;
    MOD_INCREASE_HEALTH_PERCENT = 133;
    MOD_MANA_REGEN_INTERRUPT = 134;
    MOD_HEALING_DONE = 135;
    MOD_HEALING_DONE_PERCENT = 136;
    MOD_TOTAL_STAT_PERCENTAGE = 137;
    MOD_MELEE_HASTE = 138;
    FORCE_REACTION = 139;
    MOD_RANGED_HASTE = 140;
    MOD_RANGED_AMMO_HASTE = 141;
    MOD_BASE_RESISTANCE_PCT = 142;
    MOD_RESISTANCE_EXCLUSIVE = 143;
    SAFE_FALL = 144;
    MOD_PET_TALENT_POINTS = 145;
    ALLOW_TAME_PET_TYPE = 146;
    MECHANIC_IMMUNITY_MASK = 147;
    RETAIN_COMBO_POINTS = 148;
    REDUCE_PUSHBACK = 149;
    MOD_SHIELD_BLOCKVALUE_PCT = 150;
    TRACK_STEALTHED = 151;
    MOD_DETECTED_RANGE = 152;
    SPLIT_DAMAGE_FLAT = 153;
    MOD_STEALTH_LEVEL = 154;
    MOD_WATER_BREATHING = 155;
    MOD_REPUTATION_GAIN = 156;
    PET_DAMAGE_MULTI = 157;
    MOD_SHIELD_BLOCKVALUE = 158;
    NO_PVP_CREDIT = 159;
    MOD_AOE_AVOIDANCE = 160;
    MOD_HEALTH_REGEN_IN_COMBAT = 161;
    POWER_BURN = 162;
    MOD_CRIT_DAMAGE_BONUS = 163;
    UNKNOWN164 = 164;
    MELEE_ATTACK_POWER_ATTACKER_BONUS = 165;
    MOD_ATTACK_POWER_PCT = 166;
    MOD_RANGED_ATTACK_POWER_PCT = 167;
    MOD_DAMAGE_DONE_VERSUS = 168;
    MOD_CRIT_PERCENT_VERSUS = 169;
    DETECT_AMORE = 170;
    MOD_SPEED_NOT_STACK = 171;
    MOD_MOUNTED_SPEED_NOT_STACK = 172;
    UNKNOWN173 = 173;
    MOD_SPELL_DAMAGE_OF_STAT_PERCENT = 174;
    MOD_SPELL_HEALING_OF_STAT_PERCENT = 175;
    SPIRIT_OF_REDEMPTION = 176;
    AOE_CHARM = 177;
    MOD_DEBUFF_RESISTANCE = 178;
    MOD_ATTACKER_SPELL_CRIT_CHANCE = 179;
    MOD_FLAT_SPELL_DAMAGE_VERSUS = 180;
    UNKNOWN181 = 181;
    MOD_RESISTANCE_OF_STAT_PERCENT = 182;
    MOD_CRITICAL_THREAT = 183;
    MOD_ATTACKER_MELEE_HIT_CHANCE = 184;
    MOD_ATTACKER_RANGED_HIT_CHANCE = 185;
    MOD_ATTACKER_SPELL_HIT_CHANCE = 186;
    MOD_ATTACKER_MELEE_CRIT_CHANCE = 187;
    MOD_ATTACKER_RANGED_CRIT_CHANCE = 188;
    MOD_RATING = 189;
    MOD_FACTION_REPUTATION_GAIN = 190;
    USE_NORMAL_MOVEMENT_SPEED = 191;
    MOD_MELEE_RANGED_HASTE = 192;
    MELEE_SLOW = 193;
    MOD_TARGET_ABSORB_SCHOOL = 194;
    MOD_TARGET_ABILITY_ABSORB_SCHOOL = 195;
    MOD_COOLDOWN = 196;
    MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE = 197;
    UNKNOWN198 = 198;
    MOD_INCREASES_SPELL_PCT_TO_HIT = 199;
    MOD_XP_PCT = 200;
    FLY = 201;
    IGNORE_COMBAT_RESULT = 202;
    MOD_ATTACKER_MELEE_CRIT_DAMAGE = 203;
    MOD_ATTACKER_RANGED_CRIT_DAMAGE = 204;
    MOD_SCHOOL_CRIT_DMG_TAKEN = 205;
    MOD_INCREASE_VEHICLE_FLIGHT_SPEED = 206;
    MOD_INCREASE_MOUNTED_FLIGHT_SPEED = 207;
    MOD_INCREASE_FLIGHT_SPEED = 208;
    MOD_MOUNTED_FLIGHT_SPEED_ALWAYS = 209;
    MOD_VEHICLE_SPEED_ALWAYS = 210;
    MOD_FLIGHT_SPEED_NOT_STACK = 211;
    MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT = 212;
    MOD_RAGE_FROM_DAMAGE_DEALT = 213;
    UNKNOWN214 = 214;
    ARENA_PREPARATION = 215;
    HASTE_SPELLS = 216;
    MOD_MELEE_HASTE_2 = 217;
    HASTE_RANGED = 218;
    MOD_MANA_REGEN_FROM_STAT = 219;
    MOD_RATING_FROM_STAT = 220;
    MOD_DETAUNT = 221;
    UNKNOWN222 = 222;
    RAID_PROC_FROM_CHARGE = 223;
    UNKNOWN224 = 224;
    RAID_PROC_FROM_CHARGE_WITH_VALUE = 225;
    PERIODIC_DUMMY = 226;
    PERIODIC_TRIGGER_SPELL_WITH_VALUE = 227;
    DETECT_STEALTH = 228;
    MOD_AOE_DAMAGE_AVOIDANCE = 229;
    UNKNOWN230 = 230;
    PROC_TRIGGER_SPELL_WITH_VALUE = 231;
    MECHANIC_DURATION_MOD = 232;
    CHANGE_MODEL_FOR_ALL_HUMANOIDS = 233;
    MECHANIC_DURATION_MOD_NOT_STACK = 234;
    MOD_DISPEL_RESIST = 235;
    CONTROL_VEHICLE = 236;
    MOD_SPELL_DAMAGE_OF_ATTACK_POWER = 237;
    MOD_SPELL_HEALING_OF_ATTACK_POWER = 238;
    MOD_SCALE_2 = 239;
    MOD_EXPERTISE = 240;
    FORCE_MOVE_FORWARD = 241;
    MOD_SPELL_DAMAGE_FROM_HEALING = 242;
    MOD_FACTION = 243;
    COMPREHEND_LANGUAGE = 244;
    MOD_AURA_DURATION_BY_DISPEL = 245;
    MOD_AURA_DURATION_BY_DISPEL_NOT_STACK = 246;
    CLONE_CASTER = 247;
    MOD_COMBAT_RESULT_CHANCE = 248;
    CONVERT_RUNE = 249;
    MOD_INCREASE_HEALTH_2 = 250;
    MOD_ENEMY_DODGE = 251;
    MOD_SPEED_SLOW_ALL = 252;
    MOD_BLOCK_CRIT_CHANCE = 253;
    MOD_DISARM_OFFHAND = 254;
    MOD_MECHANIC_DAMAGE_TAKEN_PERCENT = 255;
    NO_REAGENT_USE = 256;
    MOD_TARGET_RESIST_BY_SPELL_CLASS = 257;
    UNKNOWN258 = 258;
    MOD_HOT_PCT = 259;
    SCREEN_EFFECT = 260;
    PHASE = 261;
    ABILITY_IGNORE_AURASTATE = 262;
    ALLOW_ONLY_ABILITY = 263;
    UNKNOWN264 = 264;
    UNKNOWN265 = 265;
    UNKNOWN266 = 266;
    MOD_IMMUNE_AURA_APPLY_SCHOOL = 267;
    MOD_ATTACK_POWER_OF_STAT_PERCENT = 268;
    MOD_IGNORE_TARGET_RESIST = 269;
    MOD_ABILITY_IGNORE_TARGET_RESIST = 270;
    MOD_DAMAGE_FROM_CASTER = 271;
    IGNORE_MELEE_RESET = 272;
    X_RAY = 273;
    ABILITY_CONSUME_NO_AMMO = 274;
    MOD_IGNORE_SHAPESHIFT = 275;
    MOD_DAMAGE_DONE_FOR_MECHANIC = 276;
    MOD_MAX_AFFECTED_TARGETS = 277;
    MOD_DISARM_RANGED = 278;
    INITIALIZE_IMAGES = 279;
    MOD_ARMOR_PENETRATION_PCT = 280;
    MOD_HONOR_GAIN_PCT = 281;
    MOD_BASE_HEALTH_PCT = 282;
    MOD_HEALING_RECEIVED = 283;
    LINKED = 284;
    MOD_ATTACK_POWER_OF_ARMOR = 285;
    ABILITY_PERIODIC_CRIT = 286;
    DEFLECT_SPELLS = 287;
    IGNORE_HIT_DIRECTION = 288;
    PREVENT_DURABILITY_LOSS = 289;
    MOD_CRIT_PCT = 290;
    MOD_XP_QUEST_PCT = 291;
    OPEN_STABLE = 292;
    OVERRIDE_SPELLS = 293;
    PREVENT_REGENERATE_POWER = 294;
    UNKNOWN295 = 295;
    SET_VEHICLE_ID = 296;
    BLOCK_SPELL_FAMILY = 297;
    STRANGULATE = 298;
    UNKNOWN299 = 299;
    SHARE_DAMAGE_PCT = 300;
    SCHOOL_HEAL_ABSORB = 301;
    UNKNOWN302 = 302;
    MOD_DAMAGE_DONE_VERSUS_AURASTATE = 303;
    MOD_FAKE_INEBRIATE = 304;
    MOD_MINIMUM_SPEED = 305;
    UNKNOWN306 = 306;
    HEAL_ABSORB_TEST = 307;
    MOD_CRIT_CHANCE_FOR_CASTER = 308;
    UNKNOWN309 = 309;
    MOD_CREATURE_AOE_DAMAGE_AVOIDANCE = 310;
    UNKNOWN311 = 311;
    UNKNOWN312 = 312;
    UNKNOWN313 = 313;
    PREVENT_RESURRECTION = 314;
    UNDERWATER_WALKING = 315;
    PERIODIC_HASTE = 316;
}

Type

The basic type is u32, a 4 byte (32 bit) little endian integer.

Enumerators

EnumeratorValueComment
NONE0 (0x00)
BIND_SIGHT1 (0x01)
MOD_POSSESS2 (0x02)
PERIODIC_DAMAGE3 (0x03)
DUMMY4 (0x04)
MOD_CONFUSE5 (0x05)
MOD_CHARM6 (0x06)
MOD_FEAR7 (0x07)
PERIODIC_HEAL8 (0x08)
MOD_ATTACKSPEED9 (0x09)
MOD_THREAT10 (0x0A)
MOD_TAUNT11 (0x0B)
MOD_STUN12 (0x0C)
MOD_DAMAGE_DONE13 (0x0D)
MOD_DAMAGE_TAKEN14 (0x0E)
DAMAGE_SHIELD15 (0x0F)
MOD_STEALTH16 (0x10)
MOD_STEALTH_DETECT17 (0x11)
MOD_INVISIBILITY18 (0x12)
MOD_INVISIBILITY_DETECT19 (0x13)
OBS_MOD_HEALTH20 (0x14)20, 21 unofficial
OBS_MOD_POWER21 (0x15)
MOD_RESISTANCE22 (0x16)
PERIODIC_TRIGGER_SPELL23 (0x17)
PERIODIC_ENERGIZE24 (0x18)
MOD_PACIFY25 (0x19)
MOD_ROOT26 (0x1A)
MOD_SILENCE27 (0x1B)
REFLECT_SPELLS28 (0x1C)
MOD_STAT29 (0x1D)
MOD_SKILL30 (0x1E)
MOD_INCREASE_SPEED31 (0x1F)
MOD_INCREASE_MOUNTED_SPEED32 (0x20)
MOD_DECREASE_SPEED33 (0x21)
MOD_INCREASE_HEALTH34 (0x22)
MOD_INCREASE_ENERGY35 (0x23)
MOD_SHAPESHIFT36 (0x24)
EFFECT_IMMUNITY37 (0x25)
STATE_IMMUNITY38 (0x26)
SCHOOL_IMMUNITY39 (0x27)
DAMAGE_IMMUNITY40 (0x28)
DISPEL_IMMUNITY41 (0x29)
PROC_TRIGGER_SPELL42 (0x2A)
PROC_TRIGGER_DAMAGE43 (0x2B)
TRACK_CREATURES44 (0x2C)
TRACK_RESOURCES45 (0x2D)
UNKNOWN4646 (0x2E)Ignore all Gear test spells
MOD_PARRY_PERCENT47 (0x2F)
PERIODIC_TRIGGER_SPELL_FROM_CLIENT48 (0x30)One periodic spell
MOD_DODGE_PERCENT49 (0x31)
MOD_CRITICAL_HEALING_AMOUNT50 (0x32)
MOD_BLOCK_PERCENT51 (0x33)
MOD_WEAPON_CRIT_PERCENT52 (0x34)
PERIODIC_LEECH53 (0x35)
MOD_HIT_CHANCE54 (0x36)
MOD_SPELL_HIT_CHANCE55 (0x37)
TRANSFORM56 (0x38)
MOD_SPELL_CRIT_CHANCE57 (0x39)
MOD_INCREASE_SWIM_SPEED58 (0x3A)
MOD_DAMAGE_DONE_CREATURE59 (0x3B)
MOD_PACIFY_SILENCE60 (0x3C)
MOD_SCALE61 (0x3D)
PERIODIC_HEALTH_FUNNEL62 (0x3E)
UNKNOWN6363 (0x3F)old PERIODIC_MANA_FUNNEL
PERIODIC_MANA_LEECH64 (0x40)
MOD_CASTING_SPEED_NOT_STACK65 (0x41)
FEIGN_DEATH66 (0x42)
MOD_DISARM67 (0x43)
MOD_STALKED68 (0x44)
SCHOOL_ABSORB69 (0x45)
EXTRA_ATTACKS70 (0x46)
MOD_SPELL_CRIT_CHANCE_SCHOOL71 (0x47)
MOD_POWER_COST_SCHOOL_PCT72 (0x48)
MOD_POWER_COST_SCHOOL73 (0x49)
REFLECT_SPELLS_SCHOOL74 (0x4A)
MOD_LANGUAGE75 (0x4B)
FAR_SIGHT76 (0x4C)
MECHANIC_IMMUNITY77 (0x4D)
MOUNTED78 (0x4E)
MOD_DAMAGE_PERCENT_DONE79 (0x4F)
MOD_PERCENT_STAT80 (0x50)
SPLIT_DAMAGE_PCT81 (0x51)
WATER_BREATHING82 (0x52)
MOD_BASE_RESISTANCE83 (0x53)
MOD_REGEN84 (0x54)
MOD_POWER_REGEN85 (0x55)
CHANNEL_DEATH_ITEM86 (0x56)
MOD_DAMAGE_PERCENT_TAKEN87 (0x57)
MOD_HEALTH_REGEN_PERCENT88 (0x58)
PERIODIC_DAMAGE_PERCENT89 (0x59)
UNKNOWN9090 (0x5A)old MOD_RESIST_CHANCE
MOD_DETECT_RANGE91 (0x5B)
PREVENTS_FLEEING92 (0x5C)
MOD_UNATTACKABLE93 (0x5D)
INTERRUPT_REGEN94 (0x5E)
GHOST95 (0x5F)
SPELL_MAGNET96 (0x60)
MANA_SHIELD97 (0x61)
MOD_SKILL_TALENT98 (0x62)
MOD_ATTACK_POWER99 (0x63)
AURAS_VISIBLE100 (0x64)
MOD_RESISTANCE_PCT101 (0x65)
MOD_MELEE_ATTACK_POWER_VERSUS102 (0x66)
MOD_TOTAL_THREAT103 (0x67)
WATER_WALK104 (0x68)
FEATHER_FALL105 (0x69)
HOVER106 (0x6A)
ADD_FLAT_MODIFIER107 (0x6B)
ADD_PCT_MODIFIER108 (0x6C)
ADD_TARGET_TRIGGER109 (0x6D)
MOD_POWER_REGEN_PERCENT110 (0x6E)
ADD_CASTER_HIT_TRIGGER111 (0x6F)
OVERRIDE_CLASS_SCRIPTS112 (0x70)
MOD_RANGED_DAMAGE_TAKEN113 (0x71)
MOD_RANGED_DAMAGE_TAKEN_PCT114 (0x72)
MOD_HEALING115 (0x73)
MOD_REGEN_DURING_COMBAT116 (0x74)
MOD_MECHANIC_RESISTANCE117 (0x75)
MOD_HEALING_PCT118 (0x76)
UNKNOWN119119 (0x77)old SHARE_PET_TRACKING
UNTRACKABLE120 (0x78)
EMPATHY121 (0x79)
MOD_OFFHAND_DAMAGE_PCT122 (0x7A)
MOD_TARGET_RESISTANCE123 (0x7B)
MOD_RANGED_ATTACK_POWER124 (0x7C)
MOD_MELEE_DAMAGE_TAKEN125 (0x7D)
MOD_MELEE_DAMAGE_TAKEN_PCT126 (0x7E)
RANGED_ATTACK_POWER_ATTACKER_BONUS127 (0x7F)
MOD_POSSESS_PET128 (0x80)
MOD_SPEED_ALWAYS129 (0x81)
MOD_MOUNTED_SPEED_ALWAYS130 (0x82)
MOD_RANGED_ATTACK_POWER_VERSUS131 (0x83)
MOD_INCREASE_ENERGY_PERCENT132 (0x84)
MOD_INCREASE_HEALTH_PERCENT133 (0x85)
MOD_MANA_REGEN_INTERRUPT134 (0x86)
MOD_HEALING_DONE135 (0x87)
MOD_HEALING_DONE_PERCENT136 (0x88)
MOD_TOTAL_STAT_PERCENTAGE137 (0x89)
MOD_MELEE_HASTE138 (0x8A)
FORCE_REACTION139 (0x8B)
MOD_RANGED_HASTE140 (0x8C)
MOD_RANGED_AMMO_HASTE141 (0x8D)
MOD_BASE_RESISTANCE_PCT142 (0x8E)
MOD_RESISTANCE_EXCLUSIVE143 (0x8F)
SAFE_FALL144 (0x90)
MOD_PET_TALENT_POINTS145 (0x91)
ALLOW_TAME_PET_TYPE146 (0x92)
MECHANIC_IMMUNITY_MASK147 (0x93)
RETAIN_COMBO_POINTS148 (0x94)
REDUCE_PUSHBACK149 (0x95)Reduce Pushback
MOD_SHIELD_BLOCKVALUE_PCT150 (0x96)
TRACK_STEALTHED151 (0x97)Track Stealthed
MOD_DETECTED_RANGE152 (0x98)Mod Detected Range
SPLIT_DAMAGE_FLAT153 (0x99)Split Damage Flat
MOD_STEALTH_LEVEL154 (0x9A)Stealth Level Modifier
MOD_WATER_BREATHING155 (0x9B)Mod Water Breathing
MOD_REPUTATION_GAIN156 (0x9C)Mod Reputation Gain
PET_DAMAGE_MULTI157 (0x9D)Mod Pet Damage
MOD_SHIELD_BLOCKVALUE158 (0x9E)
NO_PVP_CREDIT159 (0x9F)
MOD_AOE_AVOIDANCE160 (0xA0)
MOD_HEALTH_REGEN_IN_COMBAT161 (0xA1)
POWER_BURN162 (0xA2)
MOD_CRIT_DAMAGE_BONUS163 (0xA3)
UNKNOWN164164 (0xA4)
MELEE_ATTACK_POWER_ATTACKER_BONUS165 (0xA5)
MOD_ATTACK_POWER_PCT166 (0xA6)
MOD_RANGED_ATTACK_POWER_PCT167 (0xA7)
MOD_DAMAGE_DONE_VERSUS168 (0xA8)
MOD_CRIT_PERCENT_VERSUS169 (0xA9)
DETECT_AMORE170 (0xAA)
MOD_SPEED_NOT_STACK171 (0xAB)
MOD_MOUNTED_SPEED_NOT_STACK172 (0xAC)
UNKNOWN173173 (0xAD)old ALLOW_CHAMPION_SPELLS
MOD_SPELL_DAMAGE_OF_STAT_PERCENT174 (0xAE)by defeult intelect, dependent from MOD_SPELL_HEALING_OF_STAT_PERCENT
MOD_SPELL_HEALING_OF_STAT_PERCENT175 (0xAF)
SPIRIT_OF_REDEMPTION176 (0xB0)
AOE_CHARM177 (0xB1)
MOD_DEBUFF_RESISTANCE178 (0xB2)
MOD_ATTACKER_SPELL_CRIT_CHANCE179 (0xB3)
MOD_FLAT_SPELL_DAMAGE_VERSUS180 (0xB4)
UNKNOWN181181 (0xB5)old MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS - possible flat spell crit damage versus
MOD_RESISTANCE_OF_STAT_PERCENT182 (0xB6)
MOD_CRITICAL_THREAT183 (0xB7)
MOD_ATTACKER_MELEE_HIT_CHANCE184 (0xB8)
MOD_ATTACKER_RANGED_HIT_CHANCE185 (0xB9)
MOD_ATTACKER_SPELL_HIT_CHANCE186 (0xBA)
MOD_ATTACKER_MELEE_CRIT_CHANCE187 (0xBB)
MOD_ATTACKER_RANGED_CRIT_CHANCE188 (0xBC)
MOD_RATING189 (0xBD)
MOD_FACTION_REPUTATION_GAIN190 (0xBE)
USE_NORMAL_MOVEMENT_SPEED191 (0xBF)
MOD_MELEE_RANGED_HASTE192 (0xC0)
MELEE_SLOW193 (0xC1)
MOD_TARGET_ABSORB_SCHOOL194 (0xC2)
MOD_TARGET_ABILITY_ABSORB_SCHOOL195 (0xC3)
MOD_COOLDOWN196 (0xC4)only 24818 Noxious Breath
MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE197 (0xC5)
UNKNOWN198198 (0xC6)old MOD_ALL_WEAPON_SKILLS
MOD_INCREASES_SPELL_PCT_TO_HIT199 (0xC7)
MOD_XP_PCT200 (0xC8)
FLY201 (0xC9)
IGNORE_COMBAT_RESULT202 (0xCA)
MOD_ATTACKER_MELEE_CRIT_DAMAGE203 (0xCB)
MOD_ATTACKER_RANGED_CRIT_DAMAGE204 (0xCC)
MOD_SCHOOL_CRIT_DMG_TAKEN205 (0xCD)
MOD_INCREASE_VEHICLE_FLIGHT_SPEED206 (0xCE)
MOD_INCREASE_MOUNTED_FLIGHT_SPEED207 (0xCF)
MOD_INCREASE_FLIGHT_SPEED208 (0xD0)
MOD_MOUNTED_FLIGHT_SPEED_ALWAYS209 (0xD1)
MOD_VEHICLE_SPEED_ALWAYS210 (0xD2)
MOD_FLIGHT_SPEED_NOT_STACK211 (0xD3)
MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT212 (0xD4)
MOD_RAGE_FROM_DAMAGE_DEALT213 (0xD5)
UNKNOWN214214 (0xD6)
ARENA_PREPARATION215 (0xD7)
HASTE_SPELLS216 (0xD8)
MOD_MELEE_HASTE_2217 (0xD9)NYI
HASTE_RANGED218 (0xDA)
MOD_MANA_REGEN_FROM_STAT219 (0xDB)
MOD_RATING_FROM_STAT220 (0xDC)
MOD_DETAUNT221 (0xDD)
UNKNOWN222222 (0xDE)
RAID_PROC_FROM_CHARGE223 (0xDF)
UNKNOWN224224 (0xE0)
RAID_PROC_FROM_CHARGE_WITH_VALUE225 (0xE1)
PERIODIC_DUMMY226 (0xE2)
PERIODIC_TRIGGER_SPELL_WITH_VALUE227 (0xE3)
DETECT_STEALTH228 (0xE4)
MOD_AOE_DAMAGE_AVOIDANCE229 (0xE5)
UNKNOWN230230 (0xE6)
PROC_TRIGGER_SPELL_WITH_VALUE231 (0xE7)
MECHANIC_DURATION_MOD232 (0xE8)
CHANGE_MODEL_FOR_ALL_HUMANOIDS233 (0xE9)client-side only
MECHANIC_DURATION_MOD_NOT_STACK234 (0xEA)
MOD_DISPEL_RESIST235 (0xEB)
CONTROL_VEHICLE236 (0xEC)
MOD_SPELL_DAMAGE_OF_ATTACK_POWER237 (0xED)
MOD_SPELL_HEALING_OF_ATTACK_POWER238 (0xEE)
MOD_SCALE_2239 (0xEF)
MOD_EXPERTISE240 (0xF0)
FORCE_MOVE_FORWARD241 (0xF1)
MOD_SPELL_DAMAGE_FROM_HEALING242 (0xF2)
MOD_FACTION243 (0xF3)
COMPREHEND_LANGUAGE244 (0xF4)
MOD_AURA_DURATION_BY_DISPEL245 (0xF5)
MOD_AURA_DURATION_BY_DISPEL_NOT_STACK246 (0xF6)
CLONE_CASTER247 (0xF7)
MOD_COMBAT_RESULT_CHANCE248 (0xF8)
CONVERT_RUNE249 (0xF9)
MOD_INCREASE_HEALTH_2250 (0xFA)
MOD_ENEMY_DODGE251 (0xFB)
MOD_SPEED_SLOW_ALL252 (0xFC)
MOD_BLOCK_CRIT_CHANCE253 (0xFD)
MOD_DISARM_OFFHAND254 (0xFE)
MOD_MECHANIC_DAMAGE_TAKEN_PERCENT255 (0xFF)
NO_REAGENT_USE256 (0x100)
MOD_TARGET_RESIST_BY_SPELL_CLASS257 (0x101)
UNKNOWN258258 (0x102)
MOD_HOT_PCT259 (0x103)
SCREEN_EFFECT260 (0x104)
PHASE261 (0x105)
ABILITY_IGNORE_AURASTATE262 (0x106)
ALLOW_ONLY_ABILITY263 (0x107)
UNKNOWN264264 (0x108)
UNKNOWN265265 (0x109)
UNKNOWN266266 (0x10A)
MOD_IMMUNE_AURA_APPLY_SCHOOL267 (0x10B)
MOD_ATTACK_POWER_OF_STAT_PERCENT268 (0x10C)
MOD_IGNORE_TARGET_RESIST269 (0x10D)
MOD_ABILITY_IGNORE_TARGET_RESIST270 (0x10E)Possibly need swap vs 195 aura used only in 1 spell Chaos Bolt Passive
MOD_DAMAGE_FROM_CASTER271 (0x10F)
IGNORE_MELEE_RESET272 (0x110)
X_RAY273 (0x111)
ABILITY_CONSUME_NO_AMMO274 (0x112)
MOD_IGNORE_SHAPESHIFT275 (0x113)
MOD_DAMAGE_DONE_FOR_MECHANIC276 (0x114)NYI
MOD_MAX_AFFECTED_TARGETS277 (0x115)
MOD_DISARM_RANGED278 (0x116)
INITIALIZE_IMAGES279 (0x117)
MOD_ARMOR_PENETRATION_PCT280 (0x118)
MOD_HONOR_GAIN_PCT281 (0x119)
MOD_BASE_HEALTH_PCT282 (0x11A)
MOD_HEALING_RECEIVED283 (0x11B)Possibly only for some spell family class spells
LINKED284 (0x11C)
MOD_ATTACK_POWER_OF_ARMOR285 (0x11D)
ABILITY_PERIODIC_CRIT286 (0x11E)
DEFLECT_SPELLS287 (0x11F)
IGNORE_HIT_DIRECTION288 (0x120)
PREVENT_DURABILITY_LOSS289 (0x121)
MOD_CRIT_PCT290 (0x122)
MOD_XP_QUEST_PCT291 (0x123)
OPEN_STABLE292 (0x124)
OVERRIDE_SPELLS293 (0x125)
PREVENT_REGENERATE_POWER294 (0x126)
UNKNOWN295295 (0x127)
SET_VEHICLE_ID296 (0x128)
BLOCK_SPELL_FAMILY297 (0x129)
STRANGULATE298 (0x12A)
UNKNOWN299299 (0x12B)
SHARE_DAMAGE_PCT300 (0x12C)
SCHOOL_HEAL_ABSORB301 (0x12D)
UNKNOWN302302 (0x12E)
MOD_DAMAGE_DONE_VERSUS_AURASTATE303 (0x12F)
MOD_FAKE_INEBRIATE304 (0x130)
MOD_MINIMUM_SPEED305 (0x131)
UNKNOWN306306 (0x132)
HEAL_ABSORB_TEST307 (0x133)
MOD_CRIT_CHANCE_FOR_CASTER308 (0x134)
UNKNOWN309309 (0x135)
MOD_CREATURE_AOE_DAMAGE_AVOIDANCE310 (0x136)
UNKNOWN311311 (0x137)
UNKNOWN312312 (0x138)
UNKNOWN313313 (0x139)
PREVENT_RESURRECTION314 (0x13A)
UNDERWATER_WALKING315 (0x13B)
PERIODIC_HASTE316 (0x13C)

Used in:

SpellSchool

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/spell/spell_common.wowm:35.

enum SpellSchool : u8 {
    NORMAL = 0;
    HOLY = 1;
    FIRE = 2;
    NATURE = 3;
    FROST = 4;
    SHADOW = 5;
    ARCANE = 6;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NORMAL0 (0x00)Physical, Armor
HOLY1 (0x01)
FIRE2 (0x02)
NATURE3 (0x03)
FROST4 (0x04)
SHADOW5 (0x05)
ARCANE6 (0x06)

Used in:

AuraUpdate

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/spell/smsg_aura_update_all.wowm:17.

struct AuraUpdate {
    u8 visual_slot;
    Spell spell;
    AuraFlag flags;
    Level level;
    u8 aura_stack_count;
    if (flags & NOT_CASTER) {
        PackedGuid caster;
    }
    if (flags & DURATION) {
        u32 duration;
        u32 time_left;
    }
}

Body

OffsetSize / EndiannessTypeNameComment
0x001 / -u8visual_slot
0x014 / LittleSpellspell
0x051 / -AuraFlagflags
0x061 / -Levellevel
0x071 / -u8aura_stack_count

If flags contains NOT_CASTER:

OffsetSize / EndiannessTypeNameComment
0x08- / -PackedGuidcaster

If flags contains DURATION:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32duration
-4 / Littleu32time_left

Used in:

AuraFlag

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/spell/smsg_aura_update_all.wowm:1.

flag AuraFlag : u8 {
    EMPTY = 0x0;
    EFFECT_1 = 0x1;
    EFFECT_2 = 0x2;
    EFFECT_3 = 0x4;
    NOT_CASTER = 0x8;
    SET = 0x9;
    CANCELLABLE = 0x10;
    DURATION = 0x20;
    HIDE = 0x40;
    NEGATIVE = 0x80;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
EMPTY0 (0x00)
EFFECT_11 (0x01)
EFFECT_22 (0x02)
EFFECT_34 (0x04)
NOT_CASTER8 (0x08)
SET9 (0x09)
CANCELLABLE16 (0x10)
DURATION32 (0x20)
HIDE64 (0x40)Seems to hide the aura and tell client the aura was removed
NEGATIVE128 (0x80)

Used in:

Aura

Client Version 2.4.3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/social/smsg_party_member_stats.wowm:140.

struct Aura {
    u16 aura;
    u8 unknown;
}

Body

OffsetSize / EndiannessTypeNameComment
0x002 / Littleu16aura
0x021 / -u8unknown

Used in:

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/social/smsg_party_member_stats.wowm:219.

struct Aura {
    u32 aura;
    u8 unknown;
}

Body

OffsetSize / EndiannessTypeNameComment
0x004 / Littleu32aura
0x041 / -u8unknown

Used in:

BankTab

Client Version 2.4.3, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/guild/msg_guild_permissions.wowm:9.

struct BankTab {
    u32 flags;
    u32 stacks_per_day;
}

Body

OffsetSize / EndiannessTypeNameComment
0x004 / Littleu32flags
0x044 / Littleu32stacks_per_day

Used in:

BattlegroundPlayerPosition

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/battleground/msg_battleground_player_positions.wowm:5.

struct BattlegroundPlayerPosition {
    Guid player;
    f32 position_x;
    f32 position_y;
}

Body

OffsetSize / EndiannessTypeNameComment
0x008 / LittleGuidplayer
0x084 / Littlef32position_x
0x0C4 / Littlef32position_y

Used in:

BattlegroundPlayer

Client Version 1.12

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/pvp/msg_pvp_log_data_server.wowm:14.

struct BattlegroundPlayer {
    Guid player;
    (u32)PvpRank rank;
    u32 killing_blows;
    u32 honorable_kills;
    u32 deaths;
    u32 bonus_honor;
    u32 amount_of_extra_fields;
    u32[amount_of_extra_fields] fields;
}

Body

OffsetSize / EndiannessTypeNameComment
0x008 / LittleGuidplayer
0x084 / -PvpRankrank
0x0C4 / Littleu32killing_blows
0x104 / Littleu32honorable_kills
0x144 / Littleu32deaths
0x184 / Littleu32bonus_honor
0x1C4 / Littleu32amount_of_extra_fields
0x20? / -u32[amount_of_extra_fields]fieldsThis depends on the BG in question. AV expects 7: Graveyards Assaulted, Graveyards Defended, Towers Assaulted, Towers Defended, Secondary Objectives, LieutenantCount, SecondaryNpc
WSG expects 2: Flag captures and flag returns
AB expects 2: Bases assaulted and bases defended

Used in:

PvpRank

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/pvp/pvp_common.wowm:3.

enum PvpRank : u8 {
    NO_RANK = 0;
    PARIAH = 1;
    OUTLAW = 2;
    EXILED = 3;
    DISHONORED = 4;
    RANK1 = 5;
    RANK2 = 6;
    RANK3 = 7;
    RANK4 = 8;
    RANK5 = 9;
    RANK6 = 10;
    RANK7 = 11;
    RANK8 = 12;
    RANK9 = 13;
    RANK10 = 14;
    RANK11 = 15;
    RANK12 = 16;
    RANK13 = 17;
    RANK14 = 18;
    FACTION_LEADER = 19;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
NO_RANK0 (0x00)
PARIAH1 (0x01)
OUTLAW2 (0x02)
EXILED3 (0x03)
DISHONORED4 (0x04)
RANK15 (0x05)Alliance name: Private
Horde name: Scout
RANK26 (0x06)Alliance name: Corporal
Horde name: Grunt
RANK37 (0x07)Alliance name: Sergeant
Horde name: Sergeant
RANK48 (0x08)Alliance name: Master Sergeant
Horde name: Senior Sergeatn
RANK59 (0x09)Alliance name: Sergeant Major
Horde name: First Sergeant
RANK610 (0x0A)Alliance name: Knight
Horde name: Stone Guard
RANK711 (0x0B)Alliance name: Knight Lieutenant
Horde name: Blood Guard
RANK812 (0x0C)Alliance name: Knight Captain
Horde name: Legionnare
RANK913 (0x0D)Alliance name: Kngith Champion
Horde name: Centurion
RANK1014 (0x0E)Alliance name: Liuetenant Commander
Horde name: Champion
RANK1115 (0x0F)Alliance name: Commander
Horde name: Lieutenant General
RANK1216 (0x10)Alliance name: Marshal
Horde name: General
RANK1317 (0x11)Alliance name: Field Marshal
Horde name: Warlord
RANK1418 (0x12)Alliance name: Grand Marshal
Horde name: High Warlord
FACTION_LEADER19 (0x13)

Used in:

CMSG_ACCEPT_LEVEL_GRANT

Client Version 2.4.3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/gamemaster/cmsg_accept_level_grant.wowm:1.

cmsg CMSG_ACCEPT_LEVEL_GRANT = 0x041F {
    PackedGuid guid;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x06- / -PackedGuidguid

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/gamemaster/cmsg_accept_level_grant.wowm:7.

cmsg CMSG_ACCEPT_LEVEL_GRANT = 0x0420 {
    PackedGuid guid;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x06- / -PackedGuidguid

CMSG_ACCEPT_TRADE

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/trade/cmsg_accept_trade.wowm:3.

cmsg CMSG_ACCEPT_TRADE = 0x011A {
    u32 unknown1;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x064 / Littleu32unknown1Skipped in vmangos and set to 1 for bots

CMSG_ACTIVATETAXIEXPRESS

Client Version 1, Client Version 2

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/movement/cmsg/cmsg_activatetaxiexpress.wowm:1.

cmsg CMSG_ACTIVATETAXIEXPRESS = 0x0312 {
    Guid guid;
    u32 total_cost;
    u32 node_count;
    u32[node_count] nodes;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidguid
0x0E4 / Littleu32total_costvmangos/mangosone: Never used.
0x124 / Littleu32node_count
0x16? / -u32[node_count]nodes

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/movement/cmsg/cmsg_activatetaxiexpress.wowm:11.

cmsg CMSG_ACTIVATETAXIEXPRESS = 0x0312 {
    Guid guid;
    u32 node_count;
    u32[node_count] nodes;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidguid
0x0E4 / Littleu32node_count
0x12? / -u32[node_count]nodes

CMSG_ACTIVATETAXI

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/movement/cmsg/cmsg_activatetaxi.wowm:3.

cmsg CMSG_ACTIVATETAXI = 0x01AD {
    Guid guid;
    u32 source_node;
    u32 destination_node;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidguid
0x0E4 / Littleu32source_node
0x124 / Littleu32destination_node

CMSG_ADD_FRIEND

Client Version 1

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/social/cmsg_add_friend.wowm:1.

cmsg CMSG_ADD_FRIEND = 0x0069 {
    CString name;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x06- / -CStringname

Client Version 2.4.3, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/social/cmsg_add_friend.wowm:7.

cmsg CMSG_ADD_FRIEND = 0x0069 {
    CString name;
    CString note;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x06- / -CStringname
-- / -CStringnote

CMSG_ADD_IGNORE

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/social/cmsg_add_ignore.wowm:3.

cmsg CMSG_ADD_IGNORE = 0x006C {
    CString name;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x06- / -CStringname

CMSG_ALTER_APPEARANCE

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/character_screen/cmsg_alter_appearance.wowm:1.

cmsg CMSG_ALTER_APPEARANCE = 0x0426 {
    u32 hair;
    u32 hair_color;
    u32 facial_hair;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x064 / Littleu32hair
0x0A4 / Littleu32hair_color
0x0E4 / Littleu32facial_hair

CMSG_AREATRIGGER

Client Version 1.12, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/gameobject/cmsg_areatrigger.wowm:3.

cmsg CMSG_AREATRIGGER = 0x00B4 {
    u32 trigger_id;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x064 / Littleu32trigger_id

CMSG_AREA_SPIRIT_HEALER_QUERY

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/queries/cmsg_area_spirit_healer_query.wowm:3.

cmsg CMSG_AREA_SPIRIT_HEALER_QUERY = 0x02E2 {
    Guid guid;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidguid

CMSG_AREA_SPIRIT_HEALER_QUEUE

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/resurrect/cmsg_area_spirit_healer_queue.wowm:3.

cmsg CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x02E3 {
    Guid guid;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidguid

CMSG_ARENA_TEAM_ACCEPT

Client Version 2.4.3, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/arena/cmsg_arena_team_accept.wowm:1.

cmsg CMSG_ARENA_TEAM_ACCEPT = 0x0351 {
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

This message has no fields in the body.

CMSG_ARENA_TEAM_DECLINE

Client Version 2.4.3, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/arena/cmsg_arena_team_decline.wowm:1.

cmsg CMSG_ARENA_TEAM_DECLINE = 0x0352 {
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

This message has no fields in the body.

CMSG_ARENA_TEAM_DISBAND

Client Version 2.4.3, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/arena/cmsg_arena_team_disband.wowm:1.

cmsg CMSG_ARENA_TEAM_DISBAND = 0x0355 {
    u32 arena_team;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x064 / Littleu32arena_team

CMSG_ARENA_TEAM_INVITE

Client Version 2.4.3, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/arena/cmsg_arena_team_invite.wowm:1.

cmsg CMSG_ARENA_TEAM_INVITE = 0x034F {
    u32 arena_team;
    CString player;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x064 / Littleu32arena_team
0x0A- / -CStringplayer

CMSG_ARENA_TEAM_LEADER

Client Version 2.4.3, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/arena/cmsg_arena_team_leader.wowm:1.

cmsg CMSG_ARENA_TEAM_LEADER = 0x0356 {
    u32 arena_team;
    CString player;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x064 / Littleu32arena_team
0x0A- / -CStringplayer

CMSG_ARENA_TEAM_LEAVE

Client Version 2.4.3, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/arena/cmsg_arena_team_leave.wowm:1.

cmsg CMSG_ARENA_TEAM_LEAVE = 0x0353 {
    u32 arena_team;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x064 / Littleu32arena_team

CMSG_ARENA_TEAM_REMOVE

Client Version 2.4.3, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/arena/cmsg_arena_team_remove.wowm:1.

cmsg CMSG_ARENA_TEAM_REMOVE = 0x0354 {
    u32 arena_team;
    CString player;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x064 / Littleu32arena_team
0x0A- / -CStringplayer

CMSG_ARENA_TEAM_ROSTER

Client Version 2.4.3, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/arena/cmsg_arena_team_roster.wowm:1.

cmsg CMSG_ARENA_TEAM_ROSTER = 0x034D {
    u32 arena_team;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x064 / Littleu32arena_team

CMSG_ATTACKSTOP

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/combat/cmsg_attackstop.wowm:3.

cmsg CMSG_ATTACKSTOP = 0x0142 {
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

This message has no fields in the body.

CMSG_ATTACKSWING

Client Version 1, Client Version 2, Client Version 3

Signals that client has right clicked an opponent and is in the attack stance.

Server should reply with SMSG_ATTACKSTART.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/combat/cmsg_attackswing.wowm:5.

cmsg CMSG_ATTACKSWING = 0x0141 {
    Guid guid;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidguid

Examples

Example 1

Comment

Player starts attacking creature with GUID 100.

0, 12, // size
65, 1, 0, 0, // opcode (321)
100, 0, 0, 0, 0, 0, 0, 0, // guid: Guid

CMSG_AUCTION_LIST_BIDDER_ITEMS

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/auction/cmsg/cmsg_auction_list_bidder_items.wowm:3.

cmsg CMSG_AUCTION_LIST_BIDDER_ITEMS = 0x0264 {
    Guid auctioneer;
    u32 start_from_page;
    u32 amount_of_outbid_items;
    u32[amount_of_outbid_items] outbid_item_ids;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidauctioneer
0x0E4 / Littleu32start_from_page
0x124 / Littleu32amount_of_outbid_items
0x16? / -u32[amount_of_outbid_items]outbid_item_ids

CMSG_AUCTION_LIST_ITEMS

Client Version 1.12

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/auction/cmsg/cmsg_auction_list_items.wowm:1.

cmsg CMSG_AUCTION_LIST_ITEMS = 0x0258 {
    Guid auctioneer;
    u32 list_start_item;
    CString searched_name;
    u8 minimum_level;
    u8 maximum_level;
    u32 auction_slot_id;
    u32 auction_main_category;
    u32 auction_sub_category;
    (u32)ItemQuality auction_quality;
    u8 usable;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidauctioneer
0x0E4 / Littleu32list_start_item
0x12- / -CStringsearched_name
-1 / -u8minimum_level
-1 / -u8maximum_level
-4 / Littleu32auction_slot_id
-4 / Littleu32auction_main_category
-4 / Littleu32auction_sub_category
-4 / -ItemQualityauction_quality
-1 / -u8usable

Client Version 2.4.3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/auction/cmsg/cmsg_auction_list_items.wowm:23.

cmsg CMSG_AUCTION_LIST_ITEMS = 0x0258 {
    Guid auctioneer;
    u32 list_start_item;
    CString searched_name;
    u8 minimum_level;
    u8 maximum_level;
    u32 auction_slot_id;
    u32 auction_main_category;
    u32 auction_sub_category;
    (u32)ItemQuality auction_quality;
    u8 usable;
    u8 is_full;
    u8 amount_of_sorted_auctions;
    AuctionSort[amount_of_sorted_auctions] sorted_auctions;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidauctioneer
0x0E4 / Littleu32list_start_item
0x12- / -CStringsearched_name
-1 / -u8minimum_level
-1 / -u8maximum_level
-4 / Littleu32auction_slot_id
-4 / Littleu32auction_main_category
-4 / Littleu32auction_sub_category
-4 / -ItemQualityauction_quality
-1 / -u8usable
-1 / -u8is_full
-1 / -u8amount_of_sorted_auctions
-? / -AuctionSort[amount_of_sorted_auctions]sorted_auctions

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/auction/cmsg/cmsg_auction_list_items.wowm:23.

cmsg CMSG_AUCTION_LIST_ITEMS = 0x0258 {
    Guid auctioneer;
    u32 list_start_item;
    CString searched_name;
    u8 minimum_level;
    u8 maximum_level;
    u32 auction_slot_id;
    u32 auction_main_category;
    u32 auction_sub_category;
    (u32)ItemQuality auction_quality;
    u8 usable;
    u8 is_full;
    u8 amount_of_sorted_auctions;
    AuctionSort[amount_of_sorted_auctions] sorted_auctions;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidauctioneer
0x0E4 / Littleu32list_start_item
0x12- / -CStringsearched_name
-1 / -u8minimum_level
-1 / -u8maximum_level
-4 / Littleu32auction_slot_id
-4 / Littleu32auction_main_category
-4 / Littleu32auction_sub_category
-4 / -ItemQualityauction_quality
-1 / -u8usable
-1 / -u8is_full
-1 / -u8amount_of_sorted_auctions
-? / -AuctionSort[amount_of_sorted_auctions]sorted_auctions

ItemQuality

Client Version 1.12, Client Version 2

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/social/social_common.wowm:11.

enum ItemQuality : u8 {
    POOR = 0;
    NORMAL = 1;
    UNCOMMON = 2;
    RARE = 3;
    EPIC = 4;
    LEGENDARY = 5;
    ARTIFACT = 6;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
POOR0 (0x00)
NORMAL1 (0x01)
UNCOMMON2 (0x02)
RARE3 (0x03)
EPIC4 (0x04)
LEGENDARY5 (0x05)
ARTIFACT6 (0x06)

Used in:

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/social/social_common_3_3_5.wowm:491.

enum ItemQuality : u8 {
    POOR = 0;
    NORMAL = 1;
    UNCOMMON = 2;
    RARE = 3;
    EPIC = 4;
    LEGENDARY = 5;
    ARTIFACT = 6;
    HEIRLOOM = 7;
}

Type

The basic type is u8, a 1 byte (8 bit) integer.

Enumerators

EnumeratorValueComment
POOR0 (0x00)
NORMAL1 (0x01)
UNCOMMON2 (0x02)
RARE3 (0x03)
EPIC4 (0x04)
LEGENDARY5 (0x05)
ARTIFACT6 (0x06)
HEIRLOOM7 (0x07)

Used in:

CMSG_AUCTION_LIST_OWNER_ITEMS

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/auction/cmsg/cmsg_auction_list_owner_items.wowm:3.

cmsg CMSG_AUCTION_LIST_OWNER_ITEMS = 0x0259 {
    Guid auctioneer;
    u32 list_from;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidauctioneer
0x0E4 / Littleu32list_from

CMSG_AUCTION_LIST_PENDING_SALES

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/auction/cmsg/cmsg_auction_list_pending_sales.wowm:1.

cmsg CMSG_AUCTION_LIST_PENDING_SALES = 0x048F {
    Guid auctioneer;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidauctioneer

CMSG_AUCTION_PLACE_BID

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/auction/cmsg/cmsg_auction_place_bid.wowm:3.

cmsg CMSG_AUCTION_PLACE_BID = 0x025A {
    Guid auctioneer;
    u32 auction_id;
    Gold price;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidauctioneer
0x0E4 / Littleu32auction_id
0x124 / LittleGoldprice

CMSG_AUCTION_REMOVE_ITEM

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/auction/cmsg/cmsg_auction_remove_item.wowm:3.

cmsg CMSG_AUCTION_REMOVE_ITEM = 0x0257 {
    Guid auctioneer;
    u32 auction_id;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidauctioneer
0x0E4 / Littleu32auction_id

CMSG_AUCTION_SELL_ITEM

Client Version 1, Client Version 2

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/auction/cmsg/cmsg_auction_sell_item.wowm:1.

cmsg CMSG_AUCTION_SELL_ITEM = 0x0256 {
    Guid auctioneer;
    Guid item;
    u32 starting_bid;
    u32 buyout;
    u32 auction_duration_in_minutes;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidauctioneer
0x0E8 / LittleGuiditem
0x164 / Littleu32starting_bid
0x1A4 / Littleu32buyout
0x1E4 / Littleu32auction_duration_in_minutes

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/auction/cmsg/cmsg_auction_sell_item.wowm:11.

cmsg CMSG_AUCTION_SELL_ITEM = 0x0256 {
    Guid auctioneer;
    u32 unknown1;
    Guid item;
    u32 unknown2;
    u32 starting_bid;
    u32 buyout;
    u32 auction_duration_in_minutes;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x068 / LittleGuidauctioneer
0x0E4 / Littleu32unknown1
0x128 / LittleGuiditem
0x1A4 / Littleu32unknown2
0x1E4 / Littleu32starting_bid
0x224 / Littleu32buyout
0x264 / Littleu32auction_duration_in_minutes

CMSG_AUTH_SESSION

Client Version 1, Client Version 2

Sent after receiving SMSG_AUTH_CHALLENGE.

Followed by SMSG_AUTH_RESPONSE.

This message is never encrypted.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/character_screen/cmsg_auth_session.wowm:13.

cmsg CMSG_AUTH_SESSION = 0x01ED {
    u32 build;
    u32 server_id;
    CString username;
    u32 client_seed;
    u8[20] client_proof;
    AddonInfo[-] addon_info;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x064 / Littleu32build
0x0A4 / Littleu32server_idThis is sent to the client in CMD_REALM_LIST_Server.
0x0E- / -CStringusername
-4 / Littleu32client_seed
-20 / -u8[20]client_proof
-? / -AddonInfo[-]addon_info

Examples

Example 1

0, 172, // size
237, 1, 0, 0, // opcode (493)
243, 22, 0, 0, // build: u32
0, 0, 0, 0, // server_id: u32
65, 0, // username: CString
136, 2, 216, 73, // client_seed: u32
136, 157, 239, 5, 37, 187, 193, 171, 167, 138, 219, 164, 251, 163, 231, 126, 103, 
172, 234, 198, // client_proof: u8[20]
86, 1, 0, 0, // addon_info_decompressed_size: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 65, 117, 99, 116, 105, 111, 110, 85, 73, 0, // [0].AddonInfo.addon_name: CString
1, // [0].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [0].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [0].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 66, 97, 116, 116, 108, 101, 102, 105, 101, 108, 100, 77, 105, 110, 105, 109, 97, 112, 0, // [1].AddonInfo.addon_name: CString
1, // [1].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [1].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [1].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 66, 105, 110, 100, 105, 110, 103, 85, 73, 0, // [2].AddonInfo.addon_name: CString
1, // [2].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [2].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [2].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 67, 111, 109, 98, 97, 116, 84, 101, 120, 116, 0, // [3].AddonInfo.addon_name: CString
1, // [3].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [3].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [3].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 67, 114, 97, 102, 116, 85, 73, 0, // [4].AddonInfo.addon_name: CString
1, // [4].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [4].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [4].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 71, 77, 83, 117, 114, 118, 101, 121, 85, 73, 0, // [5].AddonInfo.addon_name: CString
1, // [5].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [5].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [5].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 73, 110, 115, 112, 101, 99, 116, 85, 73, 0, // [6].AddonInfo.addon_name: CString
1, // [6].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [6].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [6].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 77, 97, 99, 114, 111, 85, 73, 0, // [7].AddonInfo.addon_name: CString
1, // [7].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [7].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [7].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 82, 97, 105, 100, 85, 73, 0, // [8].AddonInfo.addon_name: CString
1, // [8].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [8].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [8].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 84, 97, 108, 101, 110, 116, 85, 73, 0, // [9].AddonInfo.addon_name: CString
1, // [9].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [9].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [9].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 84, 114, 97, 100, 101, 83, 107, 105, 108, 108, 85, 73, 0, // [10].AddonInfo.addon_name: CString
1, // [10].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [10].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [10].AddonInfo.addon_extra_crc: u32
66, 108, 105, 122, 122, 97, 114, 100, 95, 84, 114, 97, 105, 110, 101, 114, 85, 73, 0, // [11].AddonInfo.addon_name: CString
1, // [11].AddonInfo.addon_has_signature: u8
109, 119, 28, 76, // [11].AddonInfo.addon_crc: u32
0, 0, 0, 0, // [11].AddonInfo.addon_extra_crc: u32
// addon_info: AddonInfo[-]

Client Version 3.3.5

Sent after receiving SMSG_AUTH_CHALLENGE.

This message is never encrypted.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/character_screen/cmsg_auth_session.wowm:144.

cmsg CMSG_AUTH_SESSION = 0x01ED {
    u32 client_build;
    u32 login_server_id;
    CString username;
    u32 login_server_type;
    u32 client_seed;
    u32 region_id;
    u32 battleground_id;
    u32 realm_id;
    u64 dos_response;
    u8[20] client_proof;
    u8[-] addon_info;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x064 / Littleu32client_build
0x0A4 / Littleu32login_server_id
0x0E- / -CStringusername
-4 / Littleu32login_server_type
-4 / Littleu32client_seed
-4 / Littleu32region_id
-4 / Littleu32battleground_id
-4 / Littleu32realm_id
-8 / Littleu64dos_responsePurpose and exact meaning of name unknown.
TrinityCore has this name but never uses the variable afterwards.
-20 / -u8[20]client_proof
-? / -u8[-]addon_info

CMSG_AUTOBANK_ITEM

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/item/cmsg_autobank_item.wowm:3.

cmsg CMSG_AUTOBANK_ITEM = 0x0283 {
    u8 bag_index;
    u8 slot_index;
}

Header

CMSG have a header of 6 bytes.

CMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x024 / Littleuint32opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x061 / -u8bag_index
0x071 / -u8slot_index

CMSG_AUTOEQUIP_ITEM

Client Version 1, Client Version 2, Client Version 3

Wowm Representation

Autogenerated from wowm file at