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 flag
s or enum
s.
enum
s can only have one valid named value, while flag
s can have multiple.
flag
s 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 struct
s 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 Emote
s 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 TODO
s 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
, andu64
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 u8
s 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
.
Type | Purpose | C Name |
---|---|---|
u8 | Unsigned 8 bit integer. Min value 0, max value 256. | unsigned char |
u16 | Unsigned 16 bit integer. Min value 0, max value 65536. | unsigned short |
u32 | Unsigned 32 bit integer. Min value 0, max value 4294967296. | unsigned int |
u64 | Unsigned 64 bit integer. Min value 0, max value 18446744073709551616. | unsigned long long |
i32 | Unsigned 32 bit integer. Min value -2147483648, max value 4294967296. | signed int |
Bool | Unsigned 1 bit integer. 0 means false and all other values mean true . | unsigned char |
Bool32 | Unsigned 4 bit integer. 0 means false and all other values mean true . | unsigned int |
PackedGuid | Guid sent in the "packed" format. See PackedGuid. | - |
Guid | Unsigned 8 bit integer. Can be replaced with a u64 . | unsigned long long |
NamedGuid | A Guid (u64 ) followed by a CString if the value of the Guid is not 0 . | - |
DateTime | u32 in a special format. See DateTime. | unsigned int |
f32 | Floating point value of 4 bytes. | f32 |
CString | UTF-8 string type that is terminated by a zero byte value. | char* |
SizedCString | A 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* |
String | UTF-8 string type of exactly length len . | unsigned char + char* |
UpdateMask | Update values sent in a relatively complex format. See UpdateMask. | - |
MonsterMoveSplines | Array of positions. See MonsterMoveSpline. | - |
AuraMask | Aura values sent using a mask. See Masks. | - |
AchievementDoneArray | Array that terminates on a sentinel value. See AchievementDoneArray | - |
AchievementInProgressArray | Array that terminates on a sentinel value. See AchievementInProgressArray | - |
EnchantMask | Enchant values sent using a mask. See EnchantMasks. | - |
InspectTalentGearMask | InspectTalentGear values sent using a mask. See Masks. | - |
Gold | Alias for u32 . | unsigned int |
Population | f32 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 |
Level | Alias for u8 . | unsigned char |
Level16 | Alias for u16 . | unsigned short |
Level32 | Alias for u32 . | unsigned int |
VariableItemRandomProperty | A u32 followed by another u32 if the first value is not equal to 0 . | - |
AddonArray | Array of Addons for TBC and Wrath that rely on externally knowing the amount of array members. See AddonArray. | - |
IpAddress | Alias for big endian u32 . | unsigned int |
Seconds | Alias for u32 . | unsigned int |
Milliseconds | Alias for u32 . | unsigned int |
Spell | Alias for u32 that represents a spell. | unsigned int |
Spell16 | Alias for u16 that represents a spell. | unsigned short |
Item | Alias for u32 that represents an item entry. | unsigned int |
CacheMask | Client 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 struct
s, 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 flag
s 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 u32
s.
A C function for converting to and from the packed u32
s 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:
- A
u8
with the amount of mask bytes. - The mask bytes as
u32
s. - The data values as
u32
s.
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:
Name | Offset | Size | Type |
---|---|---|---|
OBJECT_GUID | 0x0000 | 2 | GUID |
OBJECT_TYPE | 0x0002 | 1 | INT |
OBJECT_ENTRY | 0x0003 | 1 | INT |
OBJECT_SCALE_X | 0x0004 | 1 | FLOAT |
Fields that all items have:
Name | Offset | Size | Type |
---|---|---|---|
ITEM_OWNER | 0x0006 | 2 | GUID |
ITEM_CONTAINED | 0x0008 | 2 | GUID |
ITEM_CREATOR | 0x000a | 2 | GUID |
ITEM_GIFTCREATOR | 0x000c | 2 | GUID |
ITEM_STACK_COUNT | 0x000e | 1 | INT |
ITEM_DURATION | 0x000f | 1 | INT |
ITEM_SPELL_CHARGES | 0x0010 | 5 | INT |
ITEM_FLAGS | 0x0015 | 1 | INT |
ITEM_ENCHANTMENT | 0x0016 | 21 | INT |
ITEM_PROPERTY_SEED | 0x002b | 1 | INT |
ITEM_RANDOM_PROPERTIES_ID | 0x002c | 1 | INT |
ITEM_ITEM_TEXT_ID | 0x002d | 1 | INT |
ITEM_DURABILITY | 0x002e | 1 | INT |
ITEM_MAXDURABILITY | 0x002f | 1 | INT |
Fields that all containers have:
Name | Offset | Size | Type |
---|---|---|---|
CONTAINER_NUM_SLOTS | 0x0030 | 1 | INT |
CONTAINER_SLOT_1 | 0x0032 | 72 | GUID |
Fields that all units have:
Name | Offset | Size | Type |
---|---|---|---|
UNIT_CHARM | 0x0006 | 2 | GUID |
UNIT_SUMMON | 0x0008 | 2 | GUID |
UNIT_CHARMEDBY | 0x000a | 2 | GUID |
UNIT_SUMMONEDBY | 0x000c | 2 | GUID |
UNIT_CREATEDBY | 0x000e | 2 | GUID |
UNIT_TARGET | 0x0010 | 2 | GUID |
UNIT_PERSUADED | 0x0012 | 2 | GUID |
UNIT_CHANNEL_OBJECT | 0x0014 | 2 | GUID |
UNIT_HEALTH | 0x0016 | 1 | INT |
UNIT_POWER1 | 0x0017 | 1 | INT |
UNIT_POWER2 | 0x0018 | 1 | INT |
UNIT_POWER3 | 0x0019 | 1 | INT |
UNIT_POWER4 | 0x001a | 1 | INT |
UNIT_POWER5 | 0x001b | 1 | INT |
UNIT_MAXHEALTH | 0x001c | 1 | INT |
UNIT_MAXPOWER1 | 0x001d | 1 | INT |
UNIT_MAXPOWER2 | 0x001e | 1 | INT |
UNIT_MAXPOWER3 | 0x001f | 1 | INT |
UNIT_MAXPOWER4 | 0x0020 | 1 | INT |
UNIT_MAXPOWER5 | 0x0021 | 1 | INT |
UNIT_LEVEL | 0x0022 | 1 | INT |
UNIT_FACTIONTEMPLATE | 0x0023 | 1 | INT |
UNIT_BYTES_0 | 0x0024 | 1 | BYTES |
UNIT_VIRTUAL_ITEM_SLOT_DISPLAY | 0x0025 | 3 | INT |
UNIT_VIRTUAL_ITEM_INFO | 0x0028 | 6 | BYTES |
UNIT_FLAGS | 0x002e | 1 | INT |
UNIT_AURA | 0x002f | 48 | INT |
UNIT_AURAFLAGS | 0x005f | 6 | BYTES |
UNIT_AURALEVELS | 0x0065 | 12 | BYTES |
UNIT_AURAAPPLICATIONS | 0x0071 | 12 | BYTES |
UNIT_AURASTATE | 0x007d | 1 | INT |
UNIT_BASEATTACKTIME | 0x007e | 2 | INT |
UNIT_RANGEDATTACKTIME | 0x0080 | 1 | INT |
UNIT_BOUNDINGRADIUS | 0x0081 | 1 | FLOAT |
UNIT_COMBATREACH | 0x0082 | 1 | FLOAT |
UNIT_DISPLAYID | 0x0083 | 1 | INT |
UNIT_NATIVEDISPLAYID | 0x0084 | 1 | INT |
UNIT_MOUNTDISPLAYID | 0x0085 | 1 | INT |
UNIT_MINDAMAGE | 0x0086 | 1 | FLOAT |
UNIT_MAXDAMAGE | 0x0087 | 1 | FLOAT |
UNIT_MINOFFHANDDAMAGE | 0x0088 | 1 | FLOAT |
UNIT_MAXOFFHANDDAMAGE | 0x0089 | 1 | FLOAT |
UNIT_BYTES_1 | 0x008a | 1 | BYTES |
UNIT_PETNUMBER | 0x008b | 1 | INT |
UNIT_PET_NAME_TIMESTAMP | 0x008c | 1 | INT |
UNIT_PETEXPERIENCE | 0x008d | 1 | INT |
UNIT_PETNEXTLEVELEXP | 0x008e | 1 | INT |
UNIT_DYNAMIC_FLAGS | 0x008f | 1 | INT |
UNIT_CHANNEL_SPELL | 0x0090 | 1 | INT |
UNIT_MOD_CAST_SPEED | 0x0091 | 1 | FLOAT |
UNIT_CREATED_BY_SPELL | 0x0092 | 1 | INT |
UNIT_NPC_FLAGS | 0x0093 | 1 | INT |
UNIT_NPC_EMOTESTATE | 0x0094 | 1 | INT |
UNIT_TRAINING_POINTS | 0x0095 | 1 | TWO_SHORT |
UNIT_STRENGTH | 0x0096 | 1 | INT |
UNIT_AGILITY | 0x0097 | 1 | INT |
UNIT_STAMINA | 0x0098 | 1 | INT |
UNIT_INTELLECT | 0x0099 | 1 | INT |
UNIT_SPIRIT | 0x009a | 1 | INT |
UNIT_NORMAL_RESISTANCE | 0x009b | 1 | INT |
UNIT_HOLY_RESISTANCE | 0x009c | 1 | INT |
UNIT_FIRE_RESISTANCE | 0x009d | 1 | INT |
UNIT_NATURE_RESISTANCE | 0x009e | 1 | INT |
UNIT_FROST_RESISTANCE | 0x009f | 1 | INT |
UNIT_SHADOW_RESISTANCE | 0x00a0 | 1 | INT |
UNIT_ARCANE_RESISTANCE | 0x00a1 | 1 | INT |
UNIT_BASE_MANA | 0x00a2 | 1 | INT |
UNIT_BASE_HEALTH | 0x00a3 | 1 | INT |
UNIT_BYTES_2 | 0x00a4 | 1 | BYTES |
UNIT_ATTACK_POWER | 0x00a5 | 1 | INT |
UNIT_ATTACK_POWER_MODS | 0x00a6 | 1 | TWO_SHORT |
UNIT_ATTACK_POWER_MULTIPLIER | 0x00a7 | 1 | FLOAT |
UNIT_RANGED_ATTACK_POWER | 0x00a8 | 1 | INT |
UNIT_RANGED_ATTACK_POWER_MODS | 0x00a9 | 1 | TWO_SHORT |
UNIT_RANGED_ATTACK_POWER_MULTIPLIER | 0x00aa | 1 | FLOAT |
UNIT_MINRANGEDDAMAGE | 0x00ab | 1 | FLOAT |
UNIT_MAXRANGEDDAMAGE | 0x00ac | 1 | FLOAT |
UNIT_POWER_COST_MODIFIER | 0x00ad | 7 | INT |
UNIT_POWER_COST_MULTIPLIER | 0x00b4 | 7 | FLOAT |
Fields that all players have:
Name | Offset | Size | Type |
---|---|---|---|
PLAYER_DUEL_ARBITER | 0x00bc | 2 | GUID |
PLAYER_FLAGS | 0x00be | 1 | INT |
PLAYER_GUILDID | 0x00bf | 1 | INT |
PLAYER_GUILDRANK | 0x00c0 | 1 | INT |
PLAYER_FEATURES | 0x00c1 | 1 | BYTES |
PLAYER_BYTES_2 | 0x00c2 | 1 | BYTES |
PLAYER_BYTES_3 | 0x00c3 | 1 | BYTES |
PLAYER_DUEL_TEAM | 0x00c4 | 1 | INT |
PLAYER_GUILD_TIMESTAMP | 0x00c5 | 1 | INT |
PLAYER_QUEST_LOG_1_1 | 0x00c6 | 1 | INT |
PLAYER_QUEST_LOG_1_2 | 0x00c7 | 2 | INT |
PLAYER_QUEST_LOG_2_1 | 0x00c9 | 1 | INT |
PLAYER_QUEST_LOG_2_2 | 0x00ca | 2 | INT |
PLAYER_QUEST_LOG_3_1 | 0x00cc | 1 | INT |
PLAYER_QUEST_LOG_3_2 | 0x00cd | 2 | INT |
PLAYER_QUEST_LOG_4_1 | 0x00cf | 1 | INT |
PLAYER_QUEST_LOG_4_2 | 0x00d0 | 2 | INT |
PLAYER_QUEST_LOG_5_1 | 0x00d2 | 1 | INT |
PLAYER_QUEST_LOG_5_2 | 0x00d3 | 2 | INT |
PLAYER_QUEST_LOG_6_1 | 0x00d5 | 1 | INT |
PLAYER_QUEST_LOG_6_2 | 0x00d6 | 2 | INT |
PLAYER_QUEST_LOG_7_1 | 0x00d8 | 1 | INT |
PLAYER_QUEST_LOG_7_2 | 0x00d9 | 2 | INT |
PLAYER_QUEST_LOG_8_1 | 0x00db | 1 | INT |
PLAYER_QUEST_LOG_8_2 | 0x00dc | 2 | INT |
PLAYER_QUEST_LOG_9_1 | 0x00de | 1 | INT |
PLAYER_QUEST_LOG_9_2 | 0x00df | 2 | INT |
PLAYER_QUEST_LOG_10_1 | 0x00e1 | 1 | INT |
PLAYER_QUEST_LOG_10_2 | 0x00e2 | 2 | INT |
PLAYER_QUEST_LOG_11_1 | 0x00e4 | 1 | INT |
PLAYER_QUEST_LOG_11_2 | 0x00e5 | 2 | INT |
PLAYER_QUEST_LOG_12_1 | 0x00e7 | 1 | INT |
PLAYER_QUEST_LOG_12_2 | 0x00e8 | 2 | INT |
PLAYER_QUEST_LOG_13_1 | 0x00ea | 1 | INT |
PLAYER_QUEST_LOG_13_2 | 0x00eb | 2 | INT |
PLAYER_QUEST_LOG_14_1 | 0x00ed | 1 | INT |
PLAYER_QUEST_LOG_14_2 | 0x00ee | 2 | INT |
PLAYER_QUEST_LOG_15_1 | 0x00f0 | 1 | INT |
PLAYER_QUEST_LOG_15_2 | 0x00f1 | 2 | INT |
PLAYER_QUEST_LOG_16_1 | 0x00f3 | 1 | INT |
PLAYER_QUEST_LOG_16_2 | 0x00f4 | 2 | INT |
PLAYER_QUEST_LOG_17_1 | 0x00f6 | 1 | INT |
PLAYER_QUEST_LOG_17_2 | 0x00f7 | 2 | INT |
PLAYER_QUEST_LOG_18_1 | 0x00f9 | 1 | INT |
PLAYER_QUEST_LOG_18_2 | 0x00fa | 2 | INT |
PLAYER_QUEST_LOG_19_1 | 0x00fc | 1 | INT |
PLAYER_QUEST_LOG_19_2 | 0x00fd | 2 | INT |
PLAYER_QUEST_LOG_20_1 | 0x00ff | 1 | INT |
PLAYER_QUEST_LOG_20_2 | 0x0100 | 2 | INT |
PLAYER_VISIBLE_ITEM | 0x0102 | 228 | CUSTOM |
PLAYER_FIELD_INV | 0x01e6 | 226 | CUSTOM |
PLAYER_FARSIGHT | 0x02c8 | 2 | GUID |
PLAYER_FIELD_COMBO_TARGET | 0x02ca | 2 | GUID |
PLAYER_XP | 0x02cc | 1 | INT |
PLAYER_NEXT_LEVEL_XP | 0x02cd | 1 | INT |
PLAYER_SKILL_INFO | 0x02ce | 384 | CUSTOM |
PLAYER_CHARACTER_POINTS1 | 0x044e | 1 | INT |
PLAYER_CHARACTER_POINTS2 | 0x044f | 1 | INT |
PLAYER_TRACK_CREATURES | 0x0450 | 1 | INT |
PLAYER_TRACK_RESOURCES | 0x0451 | 1 | INT |
PLAYER_BLOCK_PERCENTAGE | 0x0452 | 1 | FLOAT |
PLAYER_DODGE_PERCENTAGE | 0x0453 | 1 | FLOAT |
PLAYER_PARRY_PERCENTAGE | 0x0454 | 1 | FLOAT |
PLAYER_CRIT_PERCENTAGE | 0x0455 | 1 | FLOAT |
PLAYER_RANGED_CRIT_PERCENTAGE | 0x0456 | 1 | FLOAT |
PLAYER_EXPLORED_ZONES_1 | 0x0457 | 64 | BYTES |
PLAYER_REST_STATE_EXPERIENCE | 0x0497 | 1 | INT |
PLAYER_FIELD_COINAGE | 0x0498 | 1 | INT |
PLAYER_FIELD_POSSTAT0 | 0x0499 | 1 | INT |
PLAYER_FIELD_POSSTAT1 | 0x049a | 1 | INT |
PLAYER_FIELD_POSSTAT2 | 0x049b | 1 | INT |
PLAYER_FIELD_POSSTAT3 | 0x049c | 1 | INT |
PLAYER_FIELD_POSSTAT4 | 0x049d | 1 | INT |
PLAYER_FIELD_NEGSTAT0 | 0x049e | 1 | INT |
PLAYER_FIELD_NEGSTAT1 | 0x049f | 1 | INT |
PLAYER_FIELD_NEGSTAT2 | 0x04a0 | 1 | INT |
PLAYER_FIELD_NEGSTAT3 | 0x04a1 | 1 | INT |
PLAYER_FIELD_NEGSTAT4 | 0x04a2 | 1 | INT |
PLAYER_FIELD_RESISTANCEBUFFMODSPOSITIVE | 0x04a3 | 7 | INT |
PLAYER_FIELD_RESISTANCEBUFFMODSNEGATIVE | 0x04aa | 7 | INT |
PLAYER_FIELD_MOD_DAMAGE_DONE_POS | 0x04b1 | 7 | INT |
PLAYER_FIELD_MOD_DAMAGE_DONE_NEG | 0x04b8 | 7 | INT |
PLAYER_FIELD_MOD_DAMAGE_DONE_PCT | 0x04bf | 7 | INT |
PLAYER_FIELD_BYTES | 0x04c6 | 1 | BYTES |
PLAYER_AMMO_ID | 0x04c7 | 1 | INT |
PLAYER_SELF_RES_SPELL | 0x04c8 | 1 | INT |
PLAYER_FIELD_PVP_MEDALS | 0x04c9 | 1 | INT |
PLAYER_FIELD_BUYBACK_PRICE_1 | 0x04ca | 12 | INT |
PLAYER_FIELD_BUYBACK_TIMESTAMP_1 | 0x04d6 | 12 | INT |
PLAYER_FIELD_SESSION_KILLS | 0x04e2 | 1 | TWO_SHORT |
PLAYER_FIELD_YESTERDAY_KILLS | 0x04e3 | 1 | TWO_SHORT |
PLAYER_FIELD_LAST_WEEK_KILLS | 0x04e4 | 1 | TWO_SHORT |
PLAYER_FIELD_THIS_WEEK_KILLS | 0x04e5 | 1 | TWO_SHORT |
PLAYER_FIELD_THIS_WEEK_CONTRIBUTION | 0x04e6 | 1 | INT |
PLAYER_FIELD_LIFETIME_HONORBALE_KILLS | 0x04e7 | 1 | INT |
PLAYER_FIELD_LIFETIME_DISHONORBALE_KILLS | 0x04e8 | 1 | INT |
PLAYER_FIELD_YESTERDAY_CONTRIBUTION | 0x04e9 | 1 | INT |
PLAYER_FIELD_LAST_WEEK_CONTRIBUTION | 0x04ea | 1 | INT |
PLAYER_FIELD_LAST_WEEK_RANK | 0x04eb | 1 | INT |
PLAYER_FIELD_BYTES2 | 0x04ec | 1 | BYTES |
PLAYER_FIELD_WATCHED_FACTION_INDEX | 0x04ed | 1 | INT |
PLAYER_FIELD_COMBAT_RATING_1 | 0x04ee | 20 | INT |
Fields that all gameobjects have:
Name | Offset | Size | Type |
---|---|---|---|
GAMEOBJECT_CREATED_BY | 0x0006 | 2 | GUID |
GAMEOBJECT_DISPLAYID | 0x0008 | 1 | INT |
GAMEOBJECT_FLAGS | 0x0009 | 1 | INT |
GAMEOBJECT_ROTATION | 0x000a | 4 | FLOAT |
GAMEOBJECT_STATE | 0x000e | 1 | INT |
GAMEOBJECT_POS_X | 0x000f | 1 | FLOAT |
GAMEOBJECT_POS_Y | 0x0010 | 1 | FLOAT |
GAMEOBJECT_POS_Z | 0x0011 | 1 | FLOAT |
GAMEOBJECT_FACING | 0x0012 | 1 | FLOAT |
GAMEOBJECT_DYN_FLAGS | 0x0013 | 1 | INT |
GAMEOBJECT_FACTION | 0x0014 | 1 | INT |
GAMEOBJECT_TYPE_ID | 0x0015 | 1 | INT |
GAMEOBJECT_LEVEL | 0x0016 | 1 | INT |
GAMEOBJECT_ARTKIT | 0x0017 | 1 | INT |
GAMEOBJECT_ANIMPROGRESS | 0x0018 | 1 | INT |
Fields that all dynamicobjects have:
Name | Offset | Size | Type |
---|---|---|---|
DYNAMICOBJECT_CASTER | 0x0006 | 2 | GUID |
DYNAMICOBJECT_BYTES | 0x0008 | 1 | BYTES |
DYNAMICOBJECT_SPELLID | 0x0009 | 1 | INT |
DYNAMICOBJECT_RADIUS | 0x000a | 1 | FLOAT |
DYNAMICOBJECT_POS_X | 0x000b | 1 | FLOAT |
DYNAMICOBJECT_POS_Y | 0x000c | 1 | FLOAT |
DYNAMICOBJECT_POS_Z | 0x000d | 1 | FLOAT |
DYNAMICOBJECT_FACING | 0x000e | 1 | FLOAT |
Fields that all corpses have:
Name | Offset | Size | Type |
---|---|---|---|
CORPSE_OWNER | 0x0006 | 2 | GUID |
CORPSE_FACING | 0x0008 | 1 | FLOAT |
CORPSE_POS_X | 0x0009 | 1 | FLOAT |
CORPSE_POS_Y | 0x000a | 1 | FLOAT |
CORPSE_POS_Z | 0x000b | 1 | FLOAT |
CORPSE_DISPLAY_ID | 0x000c | 1 | INT |
CORPSE_ITEM | 0x000d | 19 | INT |
CORPSE_BYTES_1 | 0x0020 | 1 | BYTES |
CORPSE_BYTES_2 | 0x0021 | 1 | BYTES |
CORPSE_GUILD | 0x0022 | 1 | INT |
CORPSE_FLAGS | 0x0023 | 1 | INT |
CORPSE_DYNAMIC_FLAGS | 0x0024 | 1 | INT |
Version 2.4.3
Taken from mangosone with some modifications.
Fields that all objects have:
Name | Offset | Size | Type |
---|---|---|---|
OBJECT_GUID | 0x0000 | 2 | GUID |
OBJECT_TYPE | 0x0002 | 1 | INT |
OBJECT_ENTRY | 0x0003 | 1 | INT |
OBJECT_SCALE_X | 0x0004 | 1 | FLOAT |
OBJECT_CREATED_BY | 0x0006 | 2 | GUID |
Fields that all items have:
Name | Offset | Size | Type |
---|---|---|---|
ITEM_OWNER | 0x0006 | 2 | GUID |
ITEM_CONTAINED | 0x0008 | 2 | GUID |
ITEM_CREATOR | 0x000a | 2 | GUID |
ITEM_GIFTCREATOR | 0x000c | 2 | GUID |
ITEM_STACK_COUNT | 0x000e | 1 | INT |
ITEM_DURATION | 0x000f | 1 | INT |
ITEM_SPELL_CHARGES | 0x0010 | 5 | INT |
ITEM_FLAGS | 0x0015 | 1 | INT |
ITEM_ENCHANTMENT_1_1 | 0x0016 | 33 | INT |
ITEM_PROPERTY_SEED | 0x0037 | 1 | INT |
ITEM_RANDOM_PROPERTIES_ID | 0x0038 | 1 | INT |
ITEM_ITEM_TEXT_ID | 0x0039 | 1 | INT |
ITEM_DURABILITY | 0x003a | 1 | INT |
ITEM_MAXDURABILITY | 0x003b | 1 | INT |
Fields that all containers have:
Name | Offset | Size | Type |
---|---|---|---|
CONTAINER_NUM_SLOTS | 0x003c | 1 | INT |
CONTAINER_SLOT_1 | 0x003e | 72 | GUID |
Fields that all units have:
Name | Offset | Size | Type |
---|---|---|---|
UNIT_CHARM | 0x0006 | 2 | GUID |
UNIT_SUMMON | 0x0008 | 2 | GUID |
UNIT_CHARMEDBY | 0x000a | 2 | GUID |
UNIT_SUMMONEDBY | 0x000c | 2 | GUID |
UNIT_CREATEDBY | 0x000e | 2 | GUID |
UNIT_TARGET | 0x0010 | 2 | GUID |
UNIT_PERSUADED | 0x0012 | 2 | GUID |
UNIT_CHANNEL_OBJECT | 0x0014 | 2 | GUID |
UNIT_HEALTH | 0x0016 | 1 | INT |
UNIT_POWER1 | 0x0017 | 1 | INT |
UNIT_POWER2 | 0x0018 | 1 | INT |
UNIT_POWER3 | 0x0019 | 1 | INT |
UNIT_POWER4 | 0x001a | 1 | INT |
UNIT_POWER5 | 0x001b | 1 | INT |
UNIT_MAXHEALTH | 0x001c | 1 | INT |
UNIT_MAXPOWER1 | 0x001d | 1 | INT |
UNIT_MAXPOWER2 | 0x001e | 1 | INT |
UNIT_MAXPOWER3 | 0x001f | 1 | INT |
UNIT_MAXPOWER4 | 0x0020 | 1 | INT |
UNIT_MAXPOWER5 | 0x0021 | 1 | INT |
UNIT_LEVEL | 0x0022 | 1 | INT |
UNIT_FACTIONTEMPLATE | 0x0023 | 1 | INT |
UNIT_BYTES_0 | 0x0024 | 1 | BYTES |
UNIT_VIRTUAL_ITEM_SLOT_DISPLAY | 0x0025 | 3 | INT |
UNIT_VIRTUAL_ITEM_INFO | 0x0028 | 6 | BYTES |
UNIT_FLAGS | 0x002e | 1 | INT |
UNIT_FLAGS_2 | 0x002f | 1 | INT |
UNIT_AURA | 0x0030 | 56 | INT |
UNIT_AURAFLAGS | 0x0068 | 14 | BYTES |
UNIT_AURALEVELS | 0x0076 | 14 | BYTES |
UNIT_AURAAPPLICATIONS | 0x0084 | 14 | BYTES |
UNIT_AURASTATE | 0x0092 | 1 | INT |
UNIT_BASEATTACKTIME | 0x0093 | 2 | INT |
UNIT_RANGEDATTACKTIME | 0x0095 | 1 | INT |
UNIT_BOUNDINGRADIUS | 0x0096 | 1 | FLOAT |
UNIT_COMBATREACH | 0x0097 | 1 | FLOAT |
UNIT_DISPLAYID | 0x0098 | 1 | INT |
UNIT_NATIVEDISPLAYID | 0x0099 | 1 | INT |
UNIT_MOUNTDISPLAYID | 0x009a | 1 | INT |
UNIT_MINDAMAGE | 0x009b | 1 | FLOAT |
UNIT_MAXDAMAGE | 0x009c | 1 | FLOAT |
UNIT_MINOFFHANDDAMAGE | 0x009d | 1 | FLOAT |
UNIT_MAXOFFHANDDAMAGE | 0x009e | 1 | FLOAT |
UNIT_BYTES_1 | 0x009f | 1 | BYTES |
UNIT_PETNUMBER | 0x00a0 | 1 | INT |
UNIT_PET_NAME_TIMESTAMP | 0x00a1 | 1 | INT |
UNIT_PETEXPERIENCE | 0x00a2 | 1 | INT |
UNIT_PETNEXTLEVELEXP | 0x00a3 | 1 | INT |
UNIT_DYNAMIC_FLAGS | 0x00a4 | 1 | INT |
UNIT_CHANNEL_SPELL | 0x00a5 | 1 | INT |
UNIT_MOD_CAST_SPEED | 0x00a6 | 1 | FLOAT |
UNIT_CREATED_BY_SPELL | 0x00a7 | 1 | INT |
UNIT_NPC_FLAGS | 0x00a8 | 1 | INT |
UNIT_NPC_EMOTESTATE | 0x00a9 | 1 | INT |
UNIT_TRAINING_POINTS | 0x00aa | 1 | TWO_SHORT |
UNIT_STRENGTH | 0x00ab | 1 | INT |
UNIT_AGILITY | 0x00ac | 1 | INT |
UNIT_STAMINA | 0x00ad | 1 | INT |
UNIT_INTELLECT | 0x00ae | 1 | INT |
UNIT_SPIRIT | 0x00af | 1 | INT |
UNIT_POSSTAT1 | 0x00b1 | 1 | INT |
UNIT_POSSTAT2 | 0x00b2 | 1 | INT |
UNIT_POSSTAT3 | 0x00b3 | 1 | INT |
UNIT_NEGSTAT1 | 0x00b6 | 1 | INT |
UNIT_NEGSTAT2 | 0x00b7 | 1 | INT |
UNIT_NEGSTAT3 | 0x00b8 | 1 | INT |
UNIT_RESISTANCES | 0x00ba | 7 | INT |
UNIT_BASE_MANA | 0x00cf | 1 | INT |
UNIT_BASE_HEALTH | 0x00d0 | 1 | INT |
UNIT_BYTES_2 | 0x00d1 | 1 | BYTES |
UNIT_ATTACK_POWER | 0x00d2 | 1 | INT |
UNIT_ATTACK_POWER_MODS | 0x00d3 | 1 | TWO_SHORT |
UNIT_ATTACK_POWER_MULTIPLIER | 0x00d4 | 1 | FLOAT |
UNIT_RANGED_ATTACK_POWER | 0x00d5 | 1 | INT |
UNIT_RANGED_ATTACK_POWER_MODS | 0x00d6 | 1 | TWO_SHORT |
UNIT_RANGED_ATTACK_POWER_MULTIPLIER | 0x00d7 | 1 | FLOAT |
UNIT_MINRANGEDDAMAGE | 0x00d8 | 1 | FLOAT |
UNIT_MAXRANGEDDAMAGE | 0x00d9 | 1 | FLOAT |
UNIT_POWER_COST_MODIFIER | 0x00da | 7 | INT |
UNIT_POWER_COST_MULTIPLIER | 0x00e1 | 7 | FLOAT |
UNIT_MAXHEALTHMODIFIER | 0x00e8 | 1 | FLOAT |
Fields that all players have:
Name | Offset | Size | Type |
---|---|---|---|
PLAYER_POSSTAT0 | 0x00b0 | 1 | INT |
PLAYER_POSSTAT4 | 0x00b4 | 1 | INT |
PLAYER_NEGSTAT0 | 0x00b5 | 1 | INT |
PLAYER_NEGSTAT4 | 0x00b9 | 1 | INT |
PLAYER_RESISTANCEBUFFMODSPOSITIVE | 0x00c1 | 7 | INT |
PLAYER_RESISTANCEBUFFMODSNEGATIVE | 0x00c8 | 7 | INT |
PLAYER_DUEL_ARBITER | 0x00ea | 2 | GUID |
PLAYER_FLAGS | 0x00ec | 1 | INT |
PLAYER_GUILDID | 0x00ed | 1 | INT |
PLAYER_GUILDRANK | 0x00ee | 1 | INT |
PLAYER_FIELD_BYTES | 0x00ef | 1 | BYTES |
PLAYER_BYTES_2 | 0x00f0 | 1 | BYTES |
PLAYER_BYTES_3 | 0x00f1 | 1 | BYTES |
PLAYER_DUEL_TEAM | 0x00f2 | 1 | INT |
PLAYER_GUILD_TIMESTAMP | 0x00f3 | 1 | INT |
PLAYER_QUEST_LOG_1_1 | 0x00f4 | 1 | INT |
PLAYER_QUEST_LOG_1_2 | 0x00f5 | 1 | INT |
PLAYER_QUEST_LOG_1_3 | 0x00f6 | 1 | BYTES |
PLAYER_QUEST_LOG_1_4 | 0x00f7 | 1 | INT |
PLAYER_QUEST_LOG_2_1 | 0x00f8 | 1 | INT |
PLAYER_QUEST_LOG_2_2 | 0x00f9 | 1 | INT |
PLAYER_QUEST_LOG_2_3 | 0x00fa | 1 | BYTES |
PLAYER_QUEST_LOG_2_4 | 0x00fb | 1 | INT |
PLAYER_QUEST_LOG_3_1 | 0x00fc | 1 | INT |
PLAYER_QUEST_LOG_3_2 | 0x00fd | 1 | INT |
PLAYER_QUEST_LOG_3_3 | 0x00fe | 1 | BYTES |
PLAYER_QUEST_LOG_3_4 | 0x00ff | 1 | INT |
PLAYER_QUEST_LOG_4_1 | 0x0100 | 1 | INT |
PLAYER_QUEST_LOG_4_2 | 0x0101 | 1 | INT |
PLAYER_QUEST_LOG_4_3 | 0x0102 | 1 | BYTES |
PLAYER_QUEST_LOG_4_4 | 0x0103 | 1 | INT |
PLAYER_QUEST_LOG_5_1 | 0x0104 | 1 | INT |
PLAYER_QUEST_LOG_5_2 | 0x0105 | 1 | INT |
PLAYER_QUEST_LOG_5_3 | 0x0106 | 1 | BYTES |
PLAYER_QUEST_LOG_5_4 | 0x0107 | 1 | INT |
PLAYER_QUEST_LOG_6_1 | 0x0108 | 1 | INT |
PLAYER_QUEST_LOG_6_2 | 0x0109 | 1 | INT |
PLAYER_QUEST_LOG_6_3 | 0x010a | 1 | BYTES |
PLAYER_QUEST_LOG_6_4 | 0x010b | 1 | INT |
PLAYER_QUEST_LOG_7_1 | 0x010c | 1 | INT |
PLAYER_QUEST_LOG_7_2 | 0x010d | 1 | INT |
PLAYER_QUEST_LOG_7_3 | 0x010e | 1 | BYTES |
PLAYER_QUEST_LOG_7_4 | 0x010f | 1 | INT |
PLAYER_QUEST_LOG_8_1 | 0x0110 | 1 | INT |
PLAYER_QUEST_LOG_8_2 | 0x0111 | 1 | INT |
PLAYER_QUEST_LOG_8_3 | 0x0112 | 1 | BYTES |
PLAYER_QUEST_LOG_8_4 | 0x0113 | 1 | INT |
PLAYER_QUEST_LOG_9_1 | 0x0114 | 1 | INT |
PLAYER_QUEST_LOG_9_2 | 0x0115 | 1 | INT |
PLAYER_QUEST_LOG_9_3 | 0x0116 | 1 | BYTES |
PLAYER_QUEST_LOG_9_4 | 0x0117 | 1 | INT |
PLAYER_QUEST_LOG_10_1 | 0x0118 | 1 | INT |
PLAYER_QUEST_LOG_10_2 | 0x0119 | 1 | INT |
PLAYER_QUEST_LOG_10_3 | 0x011a | 1 | BYTES |
PLAYER_QUEST_LOG_10_4 | 0x011b | 1 | INT |
PLAYER_QUEST_LOG_11_1 | 0x011c | 1 | INT |
PLAYER_QUEST_LOG_11_2 | 0x011d | 1 | INT |
PLAYER_QUEST_LOG_11_3 | 0x011e | 1 | BYTES |
PLAYER_QUEST_LOG_11_4 | 0x011f | 1 | INT |
PLAYER_QUEST_LOG_12_1 | 0x0120 | 1 | INT |
PLAYER_QUEST_LOG_12_2 | 0x0121 | 1 | INT |
PLAYER_QUEST_LOG_12_3 | 0x0122 | 1 | BYTES |
PLAYER_QUEST_LOG_12_4 | 0x0123 | 1 | INT |
PLAYER_QUEST_LOG_13_1 | 0x0124 | 1 | INT |
PLAYER_QUEST_LOG_13_2 | 0x0125 | 1 | INT |
PLAYER_QUEST_LOG_13_3 | 0x0126 | 1 | BYTES |
PLAYER_QUEST_LOG_13_4 | 0x0127 | 1 | INT |
PLAYER_QUEST_LOG_14_1 | 0x0128 | 1 | INT |
PLAYER_QUEST_LOG_14_2 | 0x0129 | 1 | INT |
PLAYER_QUEST_LOG_14_3 | 0x012a | 1 | BYTES |
PLAYER_QUEST_LOG_14_4 | 0x012b | 1 | INT |
PLAYER_QUEST_LOG_15_1 | 0x012c | 1 | INT |
PLAYER_QUEST_LOG_15_2 | 0x012d | 1 | INT |
PLAYER_QUEST_LOG_15_3 | 0x012e | 1 | BYTES |
PLAYER_QUEST_LOG_15_4 | 0x012f | 1 | INT |
PLAYER_QUEST_LOG_16_1 | 0x0130 | 1 | INT |
PLAYER_QUEST_LOG_16_2 | 0x0131 | 1 | INT |
PLAYER_QUEST_LOG_16_3 | 0x0132 | 1 | BYTES |
PLAYER_QUEST_LOG_16_4 | 0x0133 | 1 | INT |
PLAYER_QUEST_LOG_17_1 | 0x0134 | 1 | INT |
PLAYER_QUEST_LOG_17_2 | 0x0135 | 1 | INT |
PLAYER_QUEST_LOG_17_3 | 0x0136 | 1 | BYTES |
PLAYER_QUEST_LOG_17_4 | 0x0137 | 1 | INT |
PLAYER_QUEST_LOG_18_1 | 0x0138 | 1 | INT |
PLAYER_QUEST_LOG_18_2 | 0x0139 | 1 | INT |
PLAYER_QUEST_LOG_18_3 | 0x013a | 1 | BYTES |
PLAYER_QUEST_LOG_18_4 | 0x013b | 1 | INT |
PLAYER_QUEST_LOG_19_1 | 0x013c | 1 | INT |
PLAYER_QUEST_LOG_19_2 | 0x013d | 1 | INT |
PLAYER_QUEST_LOG_19_3 | 0x013e | 1 | BYTES |
PLAYER_QUEST_LOG_19_4 | 0x013f | 1 | INT |
PLAYER_QUEST_LOG_20_1 | 0x0140 | 1 | INT |
PLAYER_QUEST_LOG_20_2 | 0x0141 | 1 | INT |
PLAYER_QUEST_LOG_20_3 | 0x0142 | 1 | BYTES |
PLAYER_QUEST_LOG_20_4 | 0x0143 | 1 | INT |
PLAYER_QUEST_LOG_21_1 | 0x0144 | 1 | INT |
PLAYER_QUEST_LOG_21_2 | 0x0145 | 1 | INT |
PLAYER_QUEST_LOG_21_3 | 0x0146 | 1 | BYTES |
PLAYER_QUEST_LOG_21_4 | 0x0147 | 1 | INT |
PLAYER_QUEST_LOG_22_1 | 0x0148 | 1 | INT |
PLAYER_QUEST_LOG_22_2 | 0x0149 | 1 | INT |
PLAYER_QUEST_LOG_22_3 | 0x014a | 1 | BYTES |
PLAYER_QUEST_LOG_22_4 | 0x014b | 1 | INT |
PLAYER_QUEST_LOG_23_1 | 0x014c | 1 | INT |
PLAYER_QUEST_LOG_23_2 | 0x014d | 1 | INT |
PLAYER_QUEST_LOG_23_3 | 0x014e | 1 | BYTES |
PLAYER_QUEST_LOG_23_4 | 0x014f | 1 | INT |
PLAYER_QUEST_LOG_24_1 | 0x0150 | 1 | INT |
PLAYER_QUEST_LOG_24_2 | 0x0151 | 1 | INT |
PLAYER_QUEST_LOG_24_3 | 0x0152 | 1 | BYTES |
PLAYER_QUEST_LOG_24_4 | 0x0153 | 1 | INT |
PLAYER_QUEST_LOG_25_1 | 0x0154 | 1 | INT |
PLAYER_QUEST_LOG_25_2 | 0x0155 | 1 | INT |
PLAYER_QUEST_LOG_25_3 | 0x0156 | 1 | BYTES |
PLAYER_QUEST_LOG_25_4 | 0x0157 | 1 | INT |
PLAYER_VISIBLE_ITEM | 0x0158 | 228 | CUSTOM |
PLAYER_CHOSEN_TITLE | 0x0288 | 1 | INT |
PLAYER_FIELD_INV | 0x01e6 | 272 | CUSTOM |
PLAYER_FARSIGHT | 0x039a | 2 | GUID |
PLAYER_KNOWN_TITLES | 0x039c | 2 | GUID |
PLAYER_XP | 0x039e | 1 | INT |
PLAYER_NEXT_LEVEL_XP | 0x039f | 1 | INT |
PLAYER_SKILL_INFO | 0x03a0 | 384 | CUSTOM |
PLAYER_CHARACTER_POINTS1 | 0x0520 | 1 | INT |
PLAYER_CHARACTER_POINTS2 | 0x0521 | 1 | INT |
PLAYER_TRACK_CREATURES | 0x0522 | 1 | INT |
PLAYER_TRACK_RESOURCES | 0x0523 | 1 | INT |
PLAYER_BLOCK_PERCENTAGE | 0x0524 | 1 | FLOAT |
PLAYER_DODGE_PERCENTAGE | 0x0525 | 1 | FLOAT |
PLAYER_PARRY_PERCENTAGE | 0x0526 | 1 | FLOAT |
PLAYER_EXPERTISE | 0x0527 | 1 | INT |
PLAYER_OFFHAND_EXPERTISE | 0x0528 | 1 | INT |
PLAYER_CRIT_PERCENTAGE | 0x0529 | 1 | FLOAT |
PLAYER_RANGED_CRIT_PERCENTAGE | 0x052a | 1 | FLOAT |
PLAYER_OFFHAND_CRIT_PERCENTAGE | 0x052b | 1 | FLOAT |
PLAYER_SPELL_CRIT_PERCENTAGE1 | 0x052c | 7 | FLOAT |
PLAYER_SHIELD_BLOCK | 0x0533 | 1 | INT |
PLAYER_EXPLORED_ZONES_1 | 0x0534 | 128 | BYTES |
PLAYER_REST_STATE_EXPERIENCE | 0x05b4 | 1 | INT |
PLAYER_COINAGE | 0x05b5 | 1 | INT |
PLAYER_MOD_DAMAGE_DONE_POS | 0x05b6 | 7 | INT |
PLAYER_MOD_DAMAGE_DONE_NEG | 0x05bd | 7 | INT |
PLAYER_MOD_DAMAGE_DONE_PCT | 0x05c4 | 7 | INT |
PLAYER_MOD_HEALING_DONE_POS | 0x05cb | 1 | INT |
PLAYER_MOD_TARGET_RESISTANCE | 0x05cc | 1 | INT |
PLAYER_MOD_TARGET_PHYSICAL_RESISTANCE | 0x05cd | 1 | INT |
PLAYER_FEATURES | 0x05ce | 1 | BYTES |
PLAYER_AMMO_ID | 0x05cf | 1 | INT |
PLAYER_SELF_RES_SPELL | 0x05d0 | 1 | INT |
PLAYER_PVP_MEDALS | 0x05d1 | 1 | INT |
PLAYER_BUYBACK_PRICE_1 | 0x05d2 | 12 | INT |
PLAYER_BUYBACK_TIMESTAMP_1 | 0x05de | 12 | INT |
PLAYER_KILLS | 0x05ea | 1 | TWO_SHORT |
PLAYER_TODAY_CONTRIBUTION | 0x05eb | 1 | INT |
PLAYER_YESTERDAY_CONTRIBUTION | 0x05ec | 1 | INT |
PLAYER_LIFETIME_HONORABLE_KILLS | 0x05ed | 1 | INT |
PLAYER_BYTES2_GLOW | 0x05ee | 1 | BYTES |
PLAYER_WATCHED_FACTION_INDEX | 0x05ef | 1 | INT |
PLAYER_COMBAT_RATING_1 | 0x05f0 | 24 | INT |
PLAYER_ARENA_TEAM_INFO_1_1 | 0x0608 | 18 | INT |
PLAYER_HONOR_CURRENCY | 0x061a | 1 | INT |
PLAYER_ARENA_CURRENCY | 0x061b | 1 | INT |
PLAYER_MOD_MANA_REGEN | 0x061c | 1 | FLOAT |
PLAYER_MOD_MANA_REGEN_INTERRUPT | 0x061d | 1 | FLOAT |
PLAYER_MAX_LEVEL | 0x061e | 1 | INT |
PLAYER_DAILY_QUESTS_1 | 0x061f | 25 | INT |
Fields that all gameobjects have:
Name | Offset | Size | Type |
---|---|---|---|
GAMEOBJECT_DISPLAYID | 0x0008 | 1 | INT |
GAMEOBJECT_FLAGS | 0x0009 | 1 | INT |
GAMEOBJECT_ROTATION | 0x000a | 4 | FLOAT |
GAMEOBJECT_STATE | 0x000e | 1 | INT |
GAMEOBJECT_POS_X | 0x000f | 1 | FLOAT |
GAMEOBJECT_POS_Y | 0x0010 | 1 | FLOAT |
GAMEOBJECT_POS_Z | 0x0011 | 1 | FLOAT |
GAMEOBJECT_FACING | 0x0012 | 1 | FLOAT |
GAMEOBJECT_DYN_FLAGS | 0x0013 | 1 | INT |
GAMEOBJECT_FACTION | 0x0014 | 1 | INT |
GAMEOBJECT_TYPE_ID | 0x0015 | 1 | INT |
GAMEOBJECT_LEVEL | 0x0016 | 1 | INT |
GAMEOBJECT_ARTKIT | 0x0017 | 1 | INT |
GAMEOBJECT_ANIMPROGRESS | 0x0018 | 1 | INT |
Fields that all dynamicobjects have:
Name | Offset | Size | Type |
---|---|---|---|
DYNAMICOBJECT_CASTER | 0x0006 | 2 | GUID |
DYNAMICOBJECT_BYTES | 0x0008 | 1 | BYTES |
DYNAMICOBJECT_SPELLID | 0x0009 | 1 | INT |
DYNAMICOBJECT_RADIUS | 0x000a | 1 | FLOAT |
DYNAMICOBJECT_POS_X | 0x000b | 1 | FLOAT |
DYNAMICOBJECT_POS_Y | 0x000c | 1 | FLOAT |
DYNAMICOBJECT_POS_Z | 0x000d | 1 | FLOAT |
DYNAMICOBJECT_FACING | 0x000e | 1 | FLOAT |
DYNAMICOBJECT_CASTTIME | 0x000f | 1 | INT |
Fields that all corpses have:
Name | Offset | Size | Type |
---|---|---|---|
CORPSE_OWNER | 0x0006 | 2 | GUID |
CORPSE_PARTY | 0x0008 | 2 | GUID |
CORPSE_FACING | 0x000a | 1 | FLOAT |
CORPSE_POS_X | 0x000b | 1 | FLOAT |
CORPSE_POS_Y | 0x000c | 1 | FLOAT |
CORPSE_POS_Z | 0x000d | 1 | FLOAT |
CORPSE_DISPLAY_ID | 0x000e | 1 | INT |
CORPSE_ITEM | 0x000f | 19 | INT |
CORPSE_BYTES_1 | 0x0022 | 1 | BYTES |
CORPSE_BYTES_2 | 0x0023 | 1 | BYTES |
CORPSE_GUILD | 0x0024 | 1 | INT |
CORPSE_FLAGS | 0x0025 | 1 | INT |
CORPSE_DYNAMIC_FLAGS | 0x0026 | 1 | INT |
Version 3.3.5
Taken from ArcEmu with some modifications.
Fields that all objects have:
Name | Offset | Size | Type |
---|---|---|---|
OBJECT_GUID | 0x0000 | 2 | GUID |
OBJECT_TYPE | 0x0002 | 1 | INT |
OBJECT_ENTRY | 0x0003 | 1 | INT |
OBJECT_SCALE_X | 0x0004 | 1 | FLOAT |
OBJECT_CREATED_BY | 0x0006 | 2 | GUID |
Fields that all items have:
Name | Offset | Size | Type |
---|---|---|---|
ITEM_OWNER | 0x0006 | 2 | GUID |
ITEM_CONTAINED | 0x0008 | 2 | GUID |
ITEM_CREATOR | 0x000a | 2 | GUID |
ITEM_GIFTCREATOR | 0x000c | 2 | GUID |
ITEM_STACK_COUNT | 0x000e | 1 | INT |
ITEM_DURATION | 0x000f | 1 | INT |
ITEM_SPELL_CHARGES | 0x0010 | 5 | INT |
ITEM_FLAGS | 0x0015 | 1 | INT |
ITEM_ENCHANTMENT_1_1 | 0x0016 | 2 | INT |
ITEM_ENCHANTMENT_1_3 | 0x0018 | 1 | TWO_SHORT |
ITEM_ENCHANTMENT_2_1 | 0x0019 | 2 | INT |
ITEM_ENCHANTMENT_2_3 | 0x001b | 1 | TWO_SHORT |
ITEM_ENCHANTMENT_3_1 | 0x001c | 2 | INT |
ITEM_ENCHANTMENT_3_3 | 0x001e | 1 | TWO_SHORT |
ITEM_ENCHANTMENT_4_1 | 0x001f | 2 | INT |
ITEM_ENCHANTMENT_4_3 | 0x0021 | 1 | TWO_SHORT |
ITEM_ENCHANTMENT_5_1 | 0x0022 | 2 | INT |
ITEM_ENCHANTMENT_5_3 | 0x0024 | 1 | TWO_SHORT |
ITEM_ENCHANTMENT_6_1 | 0x0025 | 2 | INT |
ITEM_ENCHANTMENT_6_3 | 0x0027 | 1 | TWO_SHORT |
ITEM_ENCHANTMENT_7_1 | 0x0028 | 2 | INT |
ITEM_ENCHANTMENT_7_3 | 0x002a | 1 | TWO_SHORT |
ITEM_ENCHANTMENT_8_1 | 0x002b | 2 | INT |
ITEM_ENCHANTMENT_8_3 | 0x002d | 1 | TWO_SHORT |
ITEM_ENCHANTMENT_9_1 | 0x002e | 2 | INT |
ITEM_ENCHANTMENT_9_3 | 0x0030 | 1 | TWO_SHORT |
ITEM_ENCHANTMENT_10_1 | 0x0031 | 2 | INT |
ITEM_ENCHANTMENT_10_3 | 0x0033 | 1 | TWO_SHORT |
ITEM_ENCHANTMENT_11_1 | 0x0034 | 2 | INT |
ITEM_ENCHANTMENT_11_3 | 0x0036 | 1 | TWO_SHORT |
ITEM_ENCHANTMENT_12_1 | 0x0037 | 2 | INT |
ITEM_ENCHANTMENT_12_3 | 0x0039 | 1 | TWO_SHORT |
ITEM_PROPERTY_SEED | 0x003a | 1 | INT |
ITEM_RANDOM_PROPERTIES_ID | 0x003b | 1 | INT |
ITEM_DURABILITY | 0x003c | 1 | INT |
ITEM_MAXDURABILITY | 0x003d | 1 | INT |
ITEM_CREATE_PLAYED_TIME | 0x003e | 1 | INT |
Fields that all containers have:
Name | Offset | Size | Type |
---|---|---|---|
CONTAINER_NUM_SLOTS | 0x0040 | 1 | INT |
CONTAINER_SLOT_1 | 0x0042 | 72 | GUID |
Fields that all units have:
Name | Offset | Size | Type |
---|---|---|---|
UNIT_CHARM | 0x0006 | 2 | GUID |
UNIT_SUMMON | 0x0008 | 2 | GUID |
UNIT_CRITTER | 0x000a | 2 | GUID |
UNIT_CHARMEDBY | 0x000c | 2 | GUID |
UNIT_SUMMONEDBY | 0x000e | 2 | GUID |
UNIT_CREATEDBY | 0x0010 | 2 | GUID |
UNIT_TARGET | 0x0012 | 2 | GUID |
UNIT_CHANNEL_OBJECT | 0x0014 | 2 | GUID |
UNIT_CHANNEL_SPELL | 0x0016 | 1 | INT |
UNIT_BYTES_0 | 0x0017 | 1 | BYTES |
UNIT_HEALTH | 0x0018 | 1 | INT |
UNIT_POWER1 | 0x0019 | 1 | INT |
UNIT_POWER2 | 0x001a | 1 | INT |
UNIT_POWER3 | 0x001b | 1 | INT |
UNIT_POWER4 | 0x001c | 1 | INT |
UNIT_POWER5 | 0x001d | 1 | INT |
UNIT_POWER6 | 0x001e | 1 | INT |
UNIT_POWER7 | 0x001f | 1 | INT |
UNIT_MAXHEALTH | 0x0020 | 1 | INT |
UNIT_MAXPOWER1 | 0x0021 | 1 | INT |
UNIT_MAXPOWER2 | 0x0022 | 1 | INT |
UNIT_MAXPOWER3 | 0x0023 | 1 | INT |
UNIT_MAXPOWER4 | 0x0024 | 1 | INT |
UNIT_MAXPOWER5 | 0x0025 | 1 | INT |
UNIT_MAXPOWER6 | 0x0026 | 1 | INT |
UNIT_MAXPOWER7 | 0x0027 | 1 | INT |
UNIT_POWER_REGEN_FLAT_MODIFIER | 0x0028 | 7 | FLOAT |
UNIT_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER | 0x002f | 7 | FLOAT |
UNIT_LEVEL | 0x0036 | 1 | INT |
UNIT_FACTIONTEMPLATE | 0x0037 | 1 | INT |
UNIT_VIRTUAL_ITEM_SLOT_ID | 0x0038 | 3 | INT |
UNIT_FLAGS | 0x003b | 1 | INT |
UNIT_FLAGS_2 | 0x003c | 1 | INT |
UNIT_AURASTATE | 0x003d | 1 | INT |
UNIT_BASEATTACKTIME | 0x003e | 2 | INT |
UNIT_RANGEDATTACKTIME | 0x0040 | 1 | INT |
UNIT_BOUNDINGRADIUS | 0x0041 | 1 | FLOAT |
UNIT_COMBATREACH | 0x0042 | 1 | FLOAT |
UNIT_DISPLAYID | 0x0043 | 1 | INT |
UNIT_NATIVEDISPLAYID | 0x0044 | 1 | INT |
UNIT_MOUNTDISPLAYID | 0x0045 | 1 | INT |
UNIT_MINDAMAGE | 0x0046 | 1 | FLOAT |
UNIT_MAXDAMAGE | 0x0047 | 1 | FLOAT |
UNIT_MINOFFHANDDAMAGE | 0x0048 | 1 | FLOAT |
UNIT_MAXOFFHANDDAMAGE | 0x0049 | 1 | FLOAT |
UNIT_BYTES_1 | 0x004a | 1 | BYTES |
UNIT_PETNUMBER | 0x004b | 1 | INT |
UNIT_PET_NAME_TIMESTAMP | 0x004c | 1 | INT |
UNIT_PETEXPERIENCE | 0x004d | 1 | INT |
UNIT_PETNEXTLEVELEXP | 0x004e | 1 | INT |
UNIT_DYNAMIC_FLAGS | 0x004f | 1 | INT |
UNIT_MOD_CAST_SPEED | 0x0050 | 1 | FLOAT |
UNIT_CREATED_BY_SPELL | 0x0051 | 1 | INT |
UNIT_NPC_FLAGS | 0x0052 | 1 | INT |
UNIT_NPC_EMOTESTATE | 0x0053 | 1 | INT |
UNIT_STRENGTH | 0x0054 | 1 | INT |
UNIT_AGILITY | 0x0055 | 1 | INT |
UNIT_STAMINA | 0x0056 | 1 | INT |
UNIT_INTELLECT | 0x0057 | 1 | INT |
UNIT_SPIRIT | 0x0058 | 1 | INT |
UNIT_POSSTAT0 | 0x0059 | 1 | INT |
UNIT_POSSTAT1 | 0x005a | 1 | INT |
UNIT_POSSTAT2 | 0x005b | 1 | INT |
UNIT_POSSTAT3 | 0x005c | 1 | INT |
UNIT_POSSTAT4 | 0x005d | 1 | INT |
UNIT_NEGSTAT0 | 0x005e | 1 | INT |
UNIT_NEGSTAT1 | 0x005f | 1 | INT |
UNIT_NEGSTAT2 | 0x0060 | 1 | INT |
UNIT_NEGSTAT3 | 0x0061 | 1 | INT |
UNIT_NEGSTAT4 | 0x0062 | 1 | INT |
UNIT_RESISTANCES | 0x0063 | 7 | INT |
UNIT_RESISTANCEBUFFMODSPOSITIVE | 0x006a | 7 | INT |
UNIT_RESISTANCEBUFFMODSNEGATIVE | 0x0071 | 7 | INT |
UNIT_BASE_MANA | 0x0078 | 1 | INT |
UNIT_BASE_HEALTH | 0x0079 | 1 | INT |
UNIT_BYTES_2 | 0x007a | 1 | BYTES |
UNIT_ATTACK_POWER | 0x007b | 1 | INT |
UNIT_ATTACK_POWER_MODS | 0x007c | 1 | TWO_SHORT |
UNIT_ATTACK_POWER_MULTIPLIER | 0x007d | 1 | FLOAT |
UNIT_RANGED_ATTACK_POWER | 0x007e | 1 | INT |
UNIT_RANGED_ATTACK_POWER_MODS | 0x007f | 1 | TWO_SHORT |
UNIT_RANGED_ATTACK_POWER_MULTIPLIER | 0x0080 | 1 | FLOAT |
UNIT_MINRANGEDDAMAGE | 0x0081 | 1 | FLOAT |
UNIT_MAXRANGEDDAMAGE | 0x0082 | 1 | FLOAT |
UNIT_POWER_COST_MODIFIER | 0x0083 | 7 | INT |
UNIT_POWER_COST_MULTIPLIER | 0x008a | 7 | FLOAT |
UNIT_MAXHEALTHMODIFIER | 0x0091 | 1 | FLOAT |
UNIT_HOVERHEIGHT | 0x0092 | 1 | FLOAT |
Fields that all players have:
Name | Offset | Size | Type |
---|---|---|---|
PLAYER_DUEL_ARBITER | 0x0094 | 2 | GUID |
PLAYER_FLAGS | 0x0096 | 1 | INT |
PLAYER_GUILDID | 0x0097 | 1 | INT |
PLAYER_GUILDRANK | 0x0098 | 1 | INT |
PLAYER_FIELD_BYTES | 0x0099 | 1 | BYTES |
PLAYER_BYTES_2 | 0x009a | 1 | BYTES |
PLAYER_BYTES_3 | 0x009b | 1 | BYTES |
PLAYER_DUEL_TEAM | 0x009c | 1 | INT |
PLAYER_GUILD_TIMESTAMP | 0x009d | 1 | INT |
PLAYER_QUEST_LOG_1_1 | 0x009e | 1 | INT |
PLAYER_QUEST_LOG_1_2 | 0x009f | 1 | INT |
PLAYER_QUEST_LOG_1_3 | 0x00a0 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_1_4 | 0x00a2 | 1 | INT |
PLAYER_QUEST_LOG_2_1 | 0x00a3 | 1 | INT |
PLAYER_QUEST_LOG_2_2 | 0x00a4 | 1 | INT |
PLAYER_QUEST_LOG_2_3 | 0x00a5 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_2_5 | 0x00a7 | 1 | INT |
PLAYER_QUEST_LOG_3_1 | 0x00a8 | 1 | INT |
PLAYER_QUEST_LOG_3_2 | 0x00a9 | 1 | INT |
PLAYER_QUEST_LOG_3_3 | 0x00aa | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_3_5 | 0x00ac | 1 | INT |
PLAYER_QUEST_LOG_4_1 | 0x00ad | 1 | INT |
PLAYER_QUEST_LOG_4_2 | 0x00ae | 1 | INT |
PLAYER_QUEST_LOG_4_3 | 0x00af | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_4_5 | 0x00b1 | 1 | INT |
PLAYER_QUEST_LOG_5_1 | 0x00b2 | 1 | INT |
PLAYER_QUEST_LOG_5_2 | 0x00b3 | 1 | INT |
PLAYER_QUEST_LOG_5_3 | 0x00b4 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_5_5 | 0x00b6 | 1 | INT |
PLAYER_QUEST_LOG_6_1 | 0x00b7 | 1 | INT |
PLAYER_QUEST_LOG_6_2 | 0x00b8 | 1 | INT |
PLAYER_QUEST_LOG_6_3 | 0x00b9 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_6_5 | 0x00bb | 1 | INT |
PLAYER_QUEST_LOG_7_1 | 0x00bc | 1 | INT |
PLAYER_QUEST_LOG_7_2 | 0x00bd | 1 | INT |
PLAYER_QUEST_LOG_7_3 | 0x00be | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_7_5 | 0x00c0 | 1 | INT |
PLAYER_QUEST_LOG_8_1 | 0x00c1 | 1 | INT |
PLAYER_QUEST_LOG_8_2 | 0x00c2 | 1 | INT |
PLAYER_QUEST_LOG_8_3 | 0x00c3 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_8_5 | 0x00c5 | 1 | INT |
PLAYER_QUEST_LOG_9_1 | 0x00c6 | 1 | INT |
PLAYER_QUEST_LOG_9_2 | 0x00c7 | 1 | INT |
PLAYER_QUEST_LOG_9_3 | 0x00c8 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_9_5 | 0x00ca | 1 | INT |
PLAYER_QUEST_LOG_10_1 | 0x00cb | 1 | INT |
PLAYER_QUEST_LOG_10_2 | 0x00cc | 1 | INT |
PLAYER_QUEST_LOG_10_3 | 0x00cd | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_10_5 | 0x00cf | 1 | INT |
PLAYER_QUEST_LOG_11_1 | 0x00d0 | 1 | INT |
PLAYER_QUEST_LOG_11_2 | 0x00d1 | 1 | INT |
PLAYER_QUEST_LOG_11_3 | 0x00d2 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_11_5 | 0x00d4 | 1 | INT |
PLAYER_QUEST_LOG_12_1 | 0x00d5 | 1 | INT |
PLAYER_QUEST_LOG_12_2 | 0x00d6 | 1 | INT |
PLAYER_QUEST_LOG_12_3 | 0x00d7 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_12_5 | 0x00d9 | 1 | INT |
PLAYER_QUEST_LOG_13_1 | 0x00da | 1 | INT |
PLAYER_QUEST_LOG_13_2 | 0x00db | 1 | INT |
PLAYER_QUEST_LOG_13_3 | 0x00dc | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_13_5 | 0x00de | 1 | INT |
PLAYER_QUEST_LOG_14_1 | 0x00df | 1 | INT |
PLAYER_QUEST_LOG_14_2 | 0x00e0 | 1 | INT |
PLAYER_QUEST_LOG_14_3 | 0x00e1 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_14_5 | 0x00e3 | 1 | INT |
PLAYER_QUEST_LOG_15_1 | 0x00e4 | 1 | INT |
PLAYER_QUEST_LOG_15_2 | 0x00e5 | 1 | INT |
PLAYER_QUEST_LOG_15_3 | 0x00e6 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_15_5 | 0x00e8 | 1 | INT |
PLAYER_QUEST_LOG_16_1 | 0x00e9 | 1 | INT |
PLAYER_QUEST_LOG_16_2 | 0x00ea | 1 | INT |
PLAYER_QUEST_LOG_16_3 | 0x00eb | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_16_5 | 0x00ed | 1 | INT |
PLAYER_QUEST_LOG_17_1 | 0x00ee | 1 | INT |
PLAYER_QUEST_LOG_17_2 | 0x00ef | 1 | INT |
PLAYER_QUEST_LOG_17_3 | 0x00f0 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_17_5 | 0x00f2 | 1 | INT |
PLAYER_QUEST_LOG_18_1 | 0x00f3 | 1 | INT |
PLAYER_QUEST_LOG_18_2 | 0x00f4 | 1 | INT |
PLAYER_QUEST_LOG_18_3 | 0x00f5 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_18_5 | 0x00f7 | 1 | INT |
PLAYER_QUEST_LOG_19_1 | 0x00f8 | 1 | INT |
PLAYER_QUEST_LOG_19_2 | 0x00f9 | 1 | INT |
PLAYER_QUEST_LOG_19_3 | 0x00fa | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_19_5 | 0x00fc | 1 | INT |
PLAYER_QUEST_LOG_20_1 | 0x00fd | 1 | INT |
PLAYER_QUEST_LOG_20_2 | 0x00fe | 1 | INT |
PLAYER_QUEST_LOG_20_3 | 0x00ff | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_20_5 | 0x0101 | 1 | INT |
PLAYER_QUEST_LOG_21_1 | 0x0102 | 1 | INT |
PLAYER_QUEST_LOG_21_2 | 0x0103 | 1 | INT |
PLAYER_QUEST_LOG_21_3 | 0x0104 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_21_5 | 0x0106 | 1 | INT |
PLAYER_QUEST_LOG_22_1 | 0x0107 | 1 | INT |
PLAYER_QUEST_LOG_22_2 | 0x0108 | 1 | INT |
PLAYER_QUEST_LOG_22_3 | 0x0109 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_22_5 | 0x010b | 1 | INT |
PLAYER_QUEST_LOG_23_1 | 0x010c | 1 | INT |
PLAYER_QUEST_LOG_23_2 | 0x010d | 1 | INT |
PLAYER_QUEST_LOG_23_3 | 0x010e | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_23_5 | 0x0110 | 1 | INT |
PLAYER_QUEST_LOG_24_1 | 0x0111 | 1 | INT |
PLAYER_QUEST_LOG_24_2 | 0x0112 | 1 | INT |
PLAYER_QUEST_LOG_24_3 | 0x0113 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_24_5 | 0x0115 | 1 | INT |
PLAYER_QUEST_LOG_25_1 | 0x0116 | 1 | INT |
PLAYER_QUEST_LOG_25_2 | 0x0117 | 1 | INT |
PLAYER_QUEST_LOG_25_3 | 0x0118 | 2 | TWO_SHORT |
PLAYER_QUEST_LOG_25_5 | 0x011a | 1 | INT |
PLAYER_VISIBLE_ITEM | 0x011b | 38 | CUSTOM |
PLAYER_CHOSEN_TITLE | 0x0141 | 1 | INT |
PLAYER_FAKE_INEBRIATION | 0x0142 | 1 | INT |
PLAYER_FIELD_INV | 0x0144 | 300 | CUSTOM |
PLAYER_FARSIGHT | 0x0270 | 2 | GUID |
PLAYER_KNOWN_TITLES | 0x0272 | 2 | GUID |
PLAYER_KNOWN_TITLES1 | 0x0274 | 2 | GUID |
PLAYER_KNOWN_TITLES2 | 0x0276 | 2 | GUID |
PLAYER_KNOWN_CURRENCIES | 0x0278 | 2 | GUID |
PLAYER_XP | 0x027a | 1 | INT |
PLAYER_NEXT_LEVEL_XP | 0x027b | 1 | INT |
PLAYER_SKILL_INFO | 0x027c | 384 | CUSTOM |
PLAYER_CHARACTER_POINTS1 | 0x03fc | 1 | INT |
PLAYER_CHARACTER_POINTS2 | 0x03fd | 1 | INT |
PLAYER_TRACK_CREATURES | 0x03fe | 1 | INT |
PLAYER_TRACK_RESOURCES | 0x03ff | 1 | INT |
PLAYER_BLOCK_PERCENTAGE | 0x0400 | 1 | FLOAT |
PLAYER_DODGE_PERCENTAGE | 0x0401 | 1 | FLOAT |
PLAYER_PARRY_PERCENTAGE | 0x0402 | 1 | FLOAT |
PLAYER_EXPERTISE | 0x0403 | 1 | INT |
PLAYER_OFFHAND_EXPERTISE | 0x0404 | 1 | INT |
PLAYER_CRIT_PERCENTAGE | 0x0405 | 1 | FLOAT |
PLAYER_RANGED_CRIT_PERCENTAGE | 0x0406 | 1 | FLOAT |
PLAYER_OFFHAND_CRIT_PERCENTAGE | 0x0407 | 1 | FLOAT |
PLAYER_SPELL_CRIT_PERCENTAGE1 | 0x0408 | 7 | FLOAT |
PLAYER_SHIELD_BLOCK | 0x040f | 1 | INT |
PLAYER_SHIELD_BLOCK_CRIT_PERCENTAGE | 0x0410 | 1 | FLOAT |
PLAYER_EXPLORED_ZONES_1 | 0x0411 | 128 | BYTES |
PLAYER_REST_STATE_EXPERIENCE | 0x0491 | 1 | INT |
PLAYER_COINAGE | 0x0492 | 1 | INT |
PLAYER_MOD_DAMAGE_DONE_POS | 0x0493 | 7 | INT |
PLAYER_MOD_DAMAGE_DONE_NEG | 0x049a | 7 | INT |
PLAYER_MOD_DAMAGE_DONE_PCT | 0x04a1 | 7 | INT |
PLAYER_MOD_HEALING_DONE_POS | 0x04a8 | 1 | INT |
PLAYER_MOD_HEALING_PCT | 0x04a9 | 1 | FLOAT |
PLAYER_MOD_HEALING_DONE_PCT | 0x04aa | 1 | FLOAT |
PLAYER_MOD_TARGET_RESISTANCE | 0x04ab | 1 | INT |
PLAYER_MOD_TARGET_PHYSICAL_RESISTANCE | 0x04ac | 1 | INT |
PLAYER_FEATURES | 0x04ad | 1 | BYTES |
PLAYER_AMMO_ID | 0x04ae | 1 | INT |
PLAYER_SELF_RES_SPELL | 0x04af | 1 | INT |
PLAYER_PVP_MEDALS | 0x04b0 | 1 | INT |
PLAYER_BUYBACK_PRICE_1 | 0x04b1 | 12 | INT |
PLAYER_BUYBACK_TIMESTAMP_1 | 0x04bd | 12 | INT |
PLAYER_KILLS | 0x04c9 | 1 | TWO_SHORT |
PLAYER_TODAY_CONTRIBUTION | 0x04ca | 1 | INT |
PLAYER_YESTERDAY_CONTRIBUTION | 0x04cb | 1 | INT |
PLAYER_LIFETIME_HONORBALE_KILLS | 0x04cc | 1 | INT |
PLAYER_BYTES2_GLOW | 0x04cd | 1 | BYTES |
PLAYER_WATCHED_FACTION_INDEX | 0x04ce | 1 | INT |
PLAYER_COMBAT_RATING_1 | 0x04cf | 25 | INT |
PLAYER_ARENA_TEAM_INFO_1_1 | 0x04e8 | 21 | INT |
PLAYER_HONOR_CURRENCY | 0x04fd | 1 | INT |
PLAYER_ARENA_CURRENCY | 0x04fe | 1 | INT |
PLAYER_MAX_LEVEL | 0x04ff | 1 | INT |
PLAYER_DAILY_QUESTS_1 | 0x0500 | 25 | INT |
PLAYER_RUNE_REGEN_1 | 0x0519 | 4 | FLOAT |
PLAYER_NO_REAGENT_COST_1 | 0x051d | 3 | INT |
PLAYER_GLYPH_SLOTS_1 | 0x0520 | 6 | INT |
PLAYER_GLYPHS_1 | 0x0526 | 6 | INT |
PLAYER_GLYPHS_ENABLED | 0x052c | 1 | INT |
PLAYER_PET_SPELL_POWER | 0x052d | 1 | INT |
Fields that all gameobjects have:
Name | Offset | Size | Type |
---|---|---|---|
GAMEOBJECT_DISPLAYID | 0x0008 | 1 | INT |
GAMEOBJECT_FLAGS | 0x0009 | 1 | INT |
GAMEOBJECT_PARENTROTATION | 0x000a | 4 | FLOAT |
GAMEOBJECT_DYNAMIC | 0x000e | 1 | TWO_SHORT |
GAMEOBJECT_FACTION | 0x000f | 1 | INT |
GAMEOBJECT_LEVEL | 0x0010 | 1 | INT |
GAMEOBJECT_BYTES_1 | 0x0011 | 1 | BYTES |
Fields that all dynamicobjects have:
Name | Offset | Size | Type |
---|---|---|---|
DYNAMICOBJECT_CASTER | 0x0006 | 2 | GUID |
DYNAMICOBJECT_BYTES | 0x0008 | 1 | BYTES |
DYNAMICOBJECT_SPELLID | 0x0009 | 1 | INT |
DYNAMICOBJECT_RADIUS | 0x000a | 1 | FLOAT |
DYNAMICOBJECT_CASTTIME | 0x000b | 1 | INT |
Fields that all corpses have:
Name | Offset | Size | Type |
---|---|---|---|
CORPSE_OWNER | 0x0006 | 2 | GUID |
CORPSE_PARTY | 0x0008 | 2 | GUID |
CORPSE_DISPLAY_ID | 0x000a | 1 | INT |
CORPSE_ITEM | 0x000b | 19 | INT |
CORPSE_BYTES_1 | 0x001e | 1 | BYTES |
CORPSE_BYTES_2 | 0x001f | 1 | BYTES |
CORPSE_GUILD | 0x0020 | 1 | INT |
CORPSE_FLAGS | 0x0021 | 1 | INT |
CORPSE_DYNAMIC_FLAGS | 0x0022 | 1 | INT |
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:
Type | Purpose | C Name |
---|---|---|
u8 | Unsigned 8 bit integer. Min value 0, max value 256. | unsigned char |
u16 | Unsigned 16 bit integer. Min value 0, max value 65536. | unsigned short |
u32 | Unsigned 32 bit integer. Min value 0, max value 4294967296. | unsigned int |
u64 | Unsigned 64 bit integer. Min value 0, max value 18446744073709551616. | unsigned long long |
i32 | Unsigned 32 bit integer. Min value -2147483648, max value 4294967296. | signed int |
Bool | Unsigned 1 bit integer. 0 means false and all other values mean true . | unsigned char |
CString | UTF-8 string type that is terminated by a zero byte value. | char* |
String | UTF-8 string type of exactly length len . | unsigned char + char* |
Population | f32 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 |
IpAddress | Alias 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:
Type | Purpose | C Name |
---|---|---|
u8 | Unsigned 8 bit integer. Min value 0, max value 256. | unsigned char |
u16 | Unsigned 16 bit integer. Min value 0, max value 65536. | unsigned short |
u32 | Unsigned 32 bit integer. Min value 0, max value 4294967296. | unsigned int |
u64 | Unsigned 64 bit integer. Min value 0, max value 18446744073709551616. | unsigned long long |
i32 | Unsigned 32 bit integer. Min value -2147483648, max value 4294967296. | signed int |
Bool | Unsigned 1 bit integer. 0 means false and all other values mean true . | unsigned char |
Bool32 | Unsigned 4 bit integer. 0 means false and all other values mean true . | unsigned int |
PackedGuid | Guid sent in the "packed" format. See PackedGuid. | - |
Guid | Unsigned 8 bit integer. Can be replaced with a u64 . | unsigned long long |
NamedGuid | A Guid (u64 ) followed by a CString if the value of the Guid is not 0 . | - |
DateTime | u32 in a special format. See DateTime. | unsigned int |
f32 | Floating point value of 4 bytes. | f32 |
CString | UTF-8 string type that is terminated by a zero byte value. | char* |
SizedCString | A 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* |
UpdateMask | Update values sent in a relatively complex format. See UpdateMask. | - |
MonsterMoveSplines | Array of positions. See MonsterMoveSpline. | - |
AuraMask | Aura values sent using a mask. See Masks. | - |
AchievementDoneArray | Array that terminates on a sentinel value. See AchievementDoneArray | - |
AchievementInProgressArray | Array that terminates on a sentinel value. See AchievementInProgressArray | - |
EnchantMask | Enchant values sent using a mask. See EnchantMasks. | - |
InspectTalentGearMask | InspectTalentGear values sent using a mask. See Masks. | - |
Gold | Alias for u32 . | unsigned int |
Level | Alias for u8 . | unsigned char |
Level16 | Alias for u16 . | unsigned short |
Level32 | Alias for u32 . | unsigned int |
VariableItemRandomProperty | A u32 followed by another u32 if the first value is not equal to 0 . | - |
AddonArray | Array of Addons for TBC and Wrath that rely on externally knowing the amount of array members. See AddonArray. | - |
Seconds | Alias for u32 . | unsigned int |
Milliseconds | Alias for u32 . | unsigned int |
Spell | Alias for u32 that represents a spell. | unsigned int |
Spell16 | Alias for u16 that represents a spell. | unsigned short |
Item | Alias for u32 that represents an item entry. | unsigned int |
CacheMask | Client 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
Enumerator | Value | Comment |
---|---|---|
SNOW | 1 (0x01) | |
UNK | 2 (0x02) | |
DEVELOPMENT | 4 (0x04) | |
UNK2 | 8 (0x08) | |
UNK3 | 16 (0x10) | |
CITY_SLAVE | 32 (0x20) | |
CITY_ALLOW_DUELS | 64 (0x40) | |
UNK4 | 128 (0x80) | |
CITY | 256 (0x100) | |
TEST | 512 (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
Enumerator | Value | Comment |
---|---|---|
CAPTAIN | 0 (0x00) | |
MEMBER | 1 (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
Enumerator | Value | Comment |
---|---|---|
MAIN_HAND | 0 (0x00) | |
OFF_HAND | 1 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
DISMISS_PET_FIRST | 1 (0x01) | |
USE_ALL_MANA | 2 (0x02) | |
IS_CHANNELED | 4 (0x04) | |
NO_REDIRECTION | 8 (0x08) | |
NO_SKILL_INCREASE | 16 (0x10) | |
ALLOW_WHILE_STEALTHED | 32 (0x20) | |
IS_SELF_CHANNELED | 64 (0x40) | |
NO_REFLECTION | 128 (0x80) | |
ONLY_PEACEFUL_TARGETS | 256 (0x100) | |
INITIATES_COMBAT_ENABLES_AUTO_ATTACK | 512 (0x200) | |
NO_THREAT | 1024 (0x400) | |
AURA_UNIQUE | 2048 (0x800) | |
FAILURE_BREAKS_STEALTH | 4096 (0x1000) | |
TOGGLE_FARSIGHT | 8192 (0x2000) | |
TRACK_TARGET_IN_CHANNEL | 16384 (0x4000) | |
IMMUNITY_PURGES_EFFECT | 32768 (0x8000) | |
IMMUNITY_TO_HOSTILE_AND_FRIENDLY_EFFECTS | 65536 (0x10000) | |
NO_AUTOCAST_AI | 131072 (0x20000) | |
PREVENTS_ANIM | 262144 (0x40000) | |
EXCLUDE_CASTER | 524288 (0x80000) | |
FINISHING_MOVE_DAMAGE | 1048576 (0x100000) | |
THREAT_ONLY_ON_MISS | 2097152 (0x200000) | |
FINISHING_MOVE_DURATION | 4194304 (0x400000) | |
UNK23 | 8388608 (0x800000) | |
SPECIAL_SKILLUP | 16777216 (0x1000000) | |
AURA_STAYS_AFTER_COMBAT | 33554432 (0x2000000) | |
REQUIRE_ALL_TARGETS | 67108864 (0x4000000) | |
DISCOUNT_POWER_ON_MISS | 134217728 (0x8000000) | |
NO_AURA_ICON | 268435456 (0x10000000) | |
NAME_IN_CHANNEL_BAR | 536870912 (0x20000000) | |
COMBO_ON_BLOCK | 1073741824 (0x40000000) | |
CAST_WHEN_LEARNED | 2147483648 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
ALLOW_DEAD_TARGET | 1 (0x01) | |
NO_SHAPESHIFT_UI | 2 (0x02) | |
IGNORE_LINE_OF_SIGHT | 4 (0x04) | |
ALLOW_LOW_LEVEL_BUFF | 8 (0x08) | |
USE_SHAPESHIFT_BAR | 16 (0x10) | |
AUTO_REPEAT | 32 (0x20) | |
CANNOT_CAST_ON_TAPPED | 64 (0x40) | |
DO_NOT_REPORT_SPELL_FAILURE | 128 (0x80) | |
INCLUDE_IN_ADVANCED_COMBAT_LOG | 256 (0x100) | |
ALWAYS_CAST_AS_UNIT | 512 (0x200) | |
SPECIAL_TAMING_FLAG | 1024 (0x400) | |
NO_TARGET_PER_SECOND_COSTS | 2048 (0x800) | |
CHAIN_FROM_CASTER | 4096 (0x1000) | |
ENCHANT_OWN_ITEM_ONLY | 8192 (0x2000) | |
ALLOW_WHILE_INVISIBLE | 16384 (0x4000) | |
UNK15 | 32768 (0x8000) | |
NO_ACTIVE_PETS | 65536 (0x10000) | |
DO_NOT_RESET_COMBAT_TIMERS | 131072 (0x20000) | |
REQ_DEAD_PET | 262144 (0x40000) | |
ALLOW_WHILE_NOT_SHAPESHIFTED | 524288 (0x80000) | |
INITIATE_COMBAT_POST_CAST | 1048576 (0x100000) | |
FAIL_ON_ALL_TARGETS_IMMUNE | 2097152 (0x200000) | |
NO_INITIAL_THREAT | 4194304 (0x400000) | |
PROC_COOLDOWN_ON_FAILURE | 8388608 (0x800000) | |
ITEM_CAST_WITH_OWNER_SKILL | 16777216 (0x1000000) | |
DONT_BLOCK_MANA_REGEN | 33554432 (0x2000000) | |
NO_SCHOOL_IMMUNITIES | 67108864 (0x4000000) | |
IGNORE_WEAPONSKILL | 134217728 (0x8000000) | |
NOT_AN_ACTION | 268435456 (0x10000000) | |
CANT_CRIT | 536870912 (0x20000000) | |
ACTIVE_THREAT | 1073741824 (0x40000000) | |
RETAIN_ITEM_CAST | 2147483648 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
PVP_ENABLING | 1 (0x01) | |
NO_PROC_EQUIP_REQUIREMENT | 2 (0x02) | |
NO_CASTING_BAR_TEXT | 4 (0x04) | |
COMPLETELY_BLOCKED | 8 (0x08) | |
NO_RES_TIMER | 16 (0x10) | |
NO_DURABILITY_LOSS | 32 (0x20) | |
NO_AVOIDANCE | 64 (0x40) | |
DOT_STACKING_RULE | 128 (0x80) | |
ONLY_ON_PLAYER | 256 (0x100) | |
NOT_A_PROC | 512 (0x200) | |
REQUIRES_MAIN_HAND_WEAPON | 1024 (0x400) | |
ONLY_BATTLEGROUNDS | 2048 (0x800) | |
ONLY_ON_GHOSTS | 4096 (0x1000) | |
HIDE_CHANNEL_BAR | 8192 (0x2000) | |
HIDE_IN_RAID_FILTER | 16384 (0x4000) | |
NORMAL_RANGED_ATTACK | 32768 (0x8000) | |
SUPPRESS_CASTER_PROCS | 65536 (0x10000) | |
SUPPRESS_TARGET_PROCS | 131072 (0x20000) | |
ALWAYS_HIT | 262144 (0x40000) | |
INSTANT_TARGET_PROCS | 524288 (0x80000) | |
ALLOW_AURA_WHILE_DEAD | 1048576 (0x100000) | |
ONLY_PROC_OUTDOORS | 2097152 (0x200000) | |
CASTING_CANCELS_AUTOREPEAT | 4194304 (0x400000) | |
NO_DAMAGE_HISTORY | 8388608 (0x800000) | |
REQUIRES_OFFHAND_WEAPON | 16777216 (0x1000000) | |
TREAT_AS_PERIODIC | 33554432 (0x2000000) | |
CAN_PROC_FROM_PROCS | 67108864 (0x4000000) | |
ONLY_PROC_ON_CASTER | 134217728 (0x8000000) | |
IGNORE_CASTER_AND_TARGET_RESTRICTIONS | 268435456 (0x10000000) | |
IGNORE_CASTER_MODIFIERS | 536870912 (0x20000000) | |
DO_NOT_DISPLAY_RANGE | 1073741824 (0x40000000) | |
NOT_ON_AOE_IMMUNE | 2147483648 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
NO_CAST_LOG | 1 (0x01) | |
CLASS_TRIGGER_ONLY_ON_TARGET | 2 (0x02) | |
AURA_EXPIRES_OFFLINE | 4 (0x04) | |
NO_HELPFUL_THREAT | 8 (0x08) | |
NO_HARMFUL_THREAT | 16 (0x10) | |
ALLOW_CLIENT_TARGETING | 32 (0x20) | |
CANNOT_BE_STOLEN | 64 (0x40) | |
ALLOW_CAST_WHILE_CASTING | 128 (0x80) | |
IGNORE_DAMAGE_TAKEN_MODIFIERS | 256 (0x100) | |
COMBAT_FEEDBACK_WHEN_USABLE | 512 (0x200) | |
WEAPON_SPEED_COST_SCALING | 1024 (0x400) | |
NO_PARTIAL_IMMUNITY | 2048 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
PROC_FAILURE_BURNS_CHARGE | 1 (0x01) | |
USES_RANGED_SLOT | 2 (0x02) | |
ON_NEXT_SWING_NO_DAMAGE | 4 (0x04) | |
NEED_EXOTIC_AMMO | 8 (0x08) | |
IS_ABILITY | 16 (0x10) | |
IS_TRADESKILL | 32 (0x20) | |
PASSIVE | 64 (0x40) | |
DO_NOT_DISPLAY | 128 (0x80) | |
DO_NOT_LOG | 256 (0x100) | |
HELD_ITEM_ONLY | 512 (0x200) | |
ON_NEXT_SWING | 1024 (0x400) | |
WEARER_CASTS_PROC_TRIGGER | 2048 (0x800) | |
DAYTIME_ONLY | 4096 (0x1000) | |
NIGHT_ONLY | 8192 (0x2000) | |
ONLY_INDOORS | 16384 (0x4000) | |
ONLY_OUTDOORS | 32768 (0x8000) | |
NOT_SHAPESHIFT | 65536 (0x10000) | |
ONLY_STEALTHED | 131072 (0x20000) | |
DO_NOT_SHEATH | 262144 (0x40000) | |
SCALES_WITH_CREATURE_LEVEL | 524288 (0x80000) | |
CANCELS_AUTO_ATTACK_COMBAT | 1048576 (0x100000) | |
NO_ACTIVE_DEFENSE | 2097152 (0x200000) | |
TRACK_TARGET_IN_CAST_PLAYER_ONLY | 4194304 (0x400000) | |
ALLOW_CAST_WHILE_DEAD | 8388608 (0x800000) | |
ALLOW_WHILE_MOUNTED | 16777216 (0x1000000) | |
COOLDOWN_ON_EVENT | 33554432 (0x2000000) | |
AURA_IS_DEBUFF | 67108864 (0x4000000) | |
ALLOW_WHILE_SITTING | 134217728 (0x8000000) | |
NOT_IN_COMBAT_ONLY_PEACEFUL | 268435456 (0x10000000) | |
NO_IMMUNITIES | 536870912 (0x20000000) | |
HEARTBEAT_RESIST | 1073741824 (0x40000000) | |
NO_AURA_CANCEL | 2147483648 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
BIND_SIGHT | 1 (0x01) | |
MOD_POSSESS | 2 (0x02) | |
PERIODIC_DAMAGE | 3 (0x03) | |
DUMMY | 4 (0x04) | |
MOD_CONFUSE | 5 (0x05) | |
MOD_CHARM | 6 (0x06) | |
MOD_FEAR | 7 (0x07) | |
PERIODIC_HEAL | 8 (0x08) | |
MOD_ATTACKSPEED | 9 (0x09) | |
MOD_THREAT | 10 (0x0A) | |
MOD_TAUNT | 11 (0x0B) | |
MOD_STUN | 12 (0x0C) | |
MOD_DAMAGE_DONE | 13 (0x0D) | |
MOD_DAMAGE_TAKEN | 14 (0x0E) | |
DAMAGE_SHIELD | 15 (0x0F) | |
MOD_STEALTH | 16 (0x10) | |
MOD_STEALTH_DETECT | 17 (0x11) | |
MOD_INVISIBILITY | 18 (0x12) | |
MOD_INVISIBILITY_DETECTION | 19 (0x13) | |
OBS_MOD_HEALTH | 20 (0x14) | |
OBS_MOD_MANA | 21 (0x15) | |
MOD_RESISTANCE | 22 (0x16) | |
PERIODIC_TRIGGER_SPELL | 23 (0x17) | |
PERIODIC_ENERGIZE | 24 (0x18) | |
MOD_PACIFY | 25 (0x19) | |
MOD_ROOT | 26 (0x1A) | |
MOD_SILENCE | 27 (0x1B) | |
REFLECT_SPELLS | 28 (0x1C) | |
MOD_STAT | 29 (0x1D) | |
MOD_SKILL | 30 (0x1E) | |
MOD_INCREASE_SPEED | 31 (0x1F) | |
MOD_INCREASE_MOUNTED_SPEED | 32 (0x20) | |
MOD_DECREASE_SPEED | 33 (0x21) | |
MOD_INCREASE_HEALTH | 34 (0x22) | |
MOD_INCREASE_ENERGY | 35 (0x23) | |
MOD_SHAPESHIFT | 36 (0x24) | |
EFFECT_IMMUNITY | 37 (0x25) | |
STATE_IMMUNITY | 38 (0x26) | |
SCHOOL_IMMUNITY | 39 (0x27) | |
DAMAGE_IMMUNITY | 40 (0x28) | |
DISPEL_IMMUNITY | 41 (0x29) | |
PROC_TRIGGER_SPELL | 42 (0x2A) | |
PROC_TRIGGER_DAMAGE | 43 (0x2B) | |
TRACK_CREATURES | 44 (0x2C) | |
TRACK_RESOURCES | 45 (0x2D) | |
MOD_PARRY_SKILL | 46 (0x2E) | |
MOD_PARRY_PERCENT | 47 (0x2F) | |
MOD_DODGE_SKILL | 48 (0x30) | |
MOD_DODGE_PERCENT | 49 (0x31) | |
MOD_BLOCK_SKILL | 50 (0x32) | |
MOD_BLOCK_PERCENT | 51 (0x33) | |
MOD_CRIT_PERCENT | 52 (0x34) | |
PERIODIC_LEECH | 53 (0x35) | |
MOD_HIT_CHANCE | 54 (0x36) | |
MOD_SPELL_HIT_CHANCE | 55 (0x37) | |
TRANSFORM | 56 (0x38) | |
MOD_SPELL_CRIT_CHANCE | 57 (0x39) | |
MOD_INCREASE_SWIM_SPEED | 58 (0x3A) | |
MOD_DAMAGE_DONE_CREATURE | 59 (0x3B) | |
MOD_PACIFY_SILENCE | 60 (0x3C) | |
MOD_SCALE | 61 (0x3D) | |
PERIODIC_HEALTH_FUNNEL | 62 (0x3E) | |
PERIODIC_MANA_FUNNEL | 63 (0x3F) | |
PERIODIC_MANA_LEECH | 64 (0x40) | |
MOD_CASTING_SPEED_NOT_STACK | 65 (0x41) | |
FEIGN_DEATH | 66 (0x42) | |
MOD_DISARM | 67 (0x43) | |
MOD_STALKED | 68 (0x44) | |
SCHOOL_ABSORB | 69 (0x45) | |
EXTRA_ATTACKS | 70 (0x46) | |
MOD_SPELL_CRIT_CHANCE_SCHOOL | 71 (0x47) | |
MOD_POWER_COST_SCHOOL_PCT | 72 (0x48) | |
MOD_POWER_COST_SCHOOL | 73 (0x49) | |
REFLECT_SPELLS_SCHOOL | 74 (0x4A) | |
MOD_LANGUAGE | 75 (0x4B) | |
FAR_SIGHT | 76 (0x4C) | |
MECHANIC_IMMUNITY | 77 (0x4D) | |
MOUNTED | 78 (0x4E) | |
MOD_DAMAGE_PERCENT_DONE | 79 (0x4F) | |
MOD_PERCENT_STAT | 80 (0x50) | |
SPLIT_DAMAGE_PCT | 81 (0x51) | |
WATER_BREATHING | 82 (0x52) | |
MOD_BASE_RESISTANCE | 83 (0x53) | |
MOD_REGEN | 84 (0x54) | |
MOD_POWER_REGEN | 85 (0x55) | |
CHANNEL_DEATH_ITEM | 86 (0x56) | |
MOD_DAMAGE_PERCENT_TAKEN | 87 (0x57) | |
MOD_HEALTH_REGEN_PERCENT | 88 (0x58) | |
PERIODIC_DAMAGE_PERCENT | 89 (0x59) | |
MOD_RESIST_CHANCE | 90 (0x5A) | |
MOD_DETECT_RANGE | 91 (0x5B) | |
PREVENTS_FLEEING | 92 (0x5C) | |
MOD_UNATTACKABLE | 93 (0x5D) | |
INTERRUPT_REGEN | 94 (0x5E) | |
GHOST | 95 (0x5F) | |
SPELL_MAGNET | 96 (0x60) | |
MANA_SHIELD | 97 (0x61) | |
MOD_SKILL_TALENT | 98 (0x62) | |
MOD_ATTACK_POWER | 99 (0x63) | |
AURAS_VISIBLE | 100 (0x64) | |
MOD_RESISTANCE_PCT | 101 (0x65) | |
MOD_MELEE_ATTACK_POWER_VERSUS | 102 (0x66) | |
MOD_TOTAL_THREAT | 103 (0x67) | |
WATER_WALK | 104 (0x68) | |
FEATHER_FALL | 105 (0x69) | |
HOVER | 106 (0x6A) | |
ADD_FLAT_MODIFIER | 107 (0x6B) | |
ADD_PCT_MODIFIER | 108 (0x6C) | |
ADD_TARGET_TRIGGER | 109 (0x6D) | |
MOD_POWER_REGEN_PERCENT | 110 (0x6E) | |
ADD_CASTER_HIT_TRIGGER | 111 (0x6F) | |
OVERRIDE_CLASS_SCRIPTS | 112 (0x70) | |
MOD_RANGED_DAMAGE_TAKEN | 113 (0x71) | |
MOD_RANGED_DAMAGE_TAKEN_PCT | 114 (0x72) | |
MOD_HEALING | 115 (0x73) | |
MOD_REGEN_DURING_COMBAT | 116 (0x74) | |
MOD_MECHANIC_RESISTANCE | 117 (0x75) | |
MOD_HEALING_PCT | 118 (0x76) | |
SHARE_PET_TRACKING | 119 (0x77) | |
UNTRACKABLE | 120 (0x78) | |
EMPATHY | 121 (0x79) | |
MOD_OFFHAND_DAMAGE_PCT | 122 (0x7A) | |
MOD_TARGET_RESISTANCE | 123 (0x7B) | |
MOD_RANGED_ATTACK_POWER | 124 (0x7C) | |
MOD_MELEE_DAMAGE_TAKEN | 125 (0x7D) | |
MOD_MELEE_DAMAGE_TAKEN_PCT | 126 (0x7E) | |
RANGED_ATTACK_POWER_ATTACKER_BONUS | 127 (0x7F) | |
MOD_POSSESS_PET | 128 (0x80) | |
MOD_SPEED_ALWAYS | 129 (0x81) | |
MOD_MOUNTED_SPEED_ALWAYS | 130 (0x82) | |
MOD_RANGED_ATTACK_POWER_VERSUS | 131 (0x83) | |
MOD_INCREASE_ENERGY_PERCENT | 132 (0x84) | |
MOD_INCREASE_HEALTH_PERCENT | 133 (0x85) | |
MOD_MANA_REGEN_INTERRUPT | 134 (0x86) | |
MOD_HEALING_DONE | 135 (0x87) | |
MOD_HEALING_DONE_PERCENT | 136 (0x88) | |
MOD_TOTAL_STAT_PERCENTAGE | 137 (0x89) | |
MOD_MELEE_HASTE | 138 (0x8A) | |
FORCE_REACTION | 139 (0x8B) | |
MOD_RANGED_HASTE | 140 (0x8C) | |
MOD_RANGED_AMMO_HASTE | 141 (0x8D) | |
MOD_BASE_RESISTANCE_PCT | 142 (0x8E) | |
MOD_RESISTANCE_EXCLUSIVE | 143 (0x8F) | |
SAFE_FALL | 144 (0x90) | |
CHARISMA | 145 (0x91) | |
PERSUADED | 146 (0x92) | |
MECHANIC_IMMUNITY_MASK | 147 (0x93) | |
RETAIN_COMBO_POINTS | 148 (0x94) | |
RESIST_PUSHBACK | 149 (0x95) | |
MOD_SHIELD_BLOCKVALUE_PCT | 150 (0x96) | |
TRACK_STEALTHED | 151 (0x97) | |
MOD_DETECTED_RANGE | 152 (0x98) | |
SPLIT_DAMAGE_FLAT | 153 (0x99) | |
MOD_STEALTH_LEVEL | 154 (0x9A) | |
MOD_WATER_BREATHING | 155 (0x9B) | |
MOD_REPUTATION_GAIN | 156 (0x9C) | |
PET_DAMAGE_MULTI | 157 (0x9D) | |
MOD_SHIELD_BLOCKVALUE | 158 (0x9E) | |
NO_PVP_CREDIT | 159 (0x9F) | |
MOD_AOE_AVOIDANCE | 160 (0xA0) | |
MOD_HEALTH_REGEN_IN_COMBAT | 161 (0xA1) | |
POWER_BURN_MANA | 162 (0xA2) | |
MOD_CRIT_DAMAGE_BONUS | 163 (0xA3) | |
UNKNOWN164 | 164 (0xA4) | |
MELEE_ATTACK_POWER_ATTACKER_BONUS | 165 (0xA5) | |
MOD_ATTACK_POWER_PCT | 166 (0xA6) | |
MOD_RANGED_ATTACK_POWER_PCT | 167 (0xA7) | |
MOD_DAMAGE_DONE_VERSUS | 168 (0xA8) | |
MOD_CRIT_PERCENT_VERSUS | 169 (0xA9) | |
DETECT_AMORE | 170 (0xAA) | |
MOD_SPEED_NOT_STACK | 171 (0xAB) | |
MOD_MOUNTED_SPEED_NOT_STACK | 172 (0xAC) | |
ALLOW_CHAMPION_SPELLS | 173 (0xAD) | |
MOD_SPELL_DAMAGE_OF_STAT_PERCENT | 174 (0xAE) | |
MOD_SPELL_HEALING_OF_STAT_PERCENT | 175 (0xAF) | |
SPIRIT_OF_REDEMPTION | 176 (0xB0) | |
AOE_CHARM | 177 (0xB1) | |
MOD_DEBUFF_RESISTANCE | 178 (0xB2) | |
MOD_ATTACKER_SPELL_CRIT_CHANCE | 179 (0xB3) | |
MOD_FLAT_SPELL_DAMAGE_VERSUS | 180 (0xB4) | |
MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS | 181 (0xB5) | |
MOD_RESISTANCE_OF_STAT_PERCENT | 182 (0xB6) | |
MOD_CRITICAL_THREAT | 183 (0xB7) | |
MOD_ATTACKER_MELEE_HIT_CHANCE | 184 (0xB8) | |
MOD_ATTACKER_RANGED_HIT_CHANCE | 185 (0xB9) | |
MOD_ATTACKER_SPELL_HIT_CHANCE | 186 (0xBA) | |
MOD_ATTACKER_MELEE_CRIT_CHANCE | 187 (0xBB) | |
MOD_ATTACKER_RANGED_CRIT_CHANCE | 188 (0xBC) | |
MOD_RATING | 189 (0xBD) | |
MOD_FACTION_REPUTATION_GAIN | 190 (0xBE) | |
USE_NORMAL_MOVEMENT_SPEED | 191 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
BIND_SIGHT | 1 (0x01) | |
MOD_POSSESS | 2 (0x02) | |
PERIODIC_DAMAGE | 3 (0x03) | |
DUMMY | 4 (0x04) | |
MOD_CONFUSE | 5 (0x05) | |
MOD_CHARM | 6 (0x06) | |
MOD_FEAR | 7 (0x07) | |
PERIODIC_HEAL | 8 (0x08) | |
MOD_ATTACKSPEED | 9 (0x09) | |
MOD_THREAT | 10 (0x0A) | |
MOD_TAUNT | 11 (0x0B) | |
MOD_STUN | 12 (0x0C) | |
MOD_DAMAGE_DONE | 13 (0x0D) | |
MOD_DAMAGE_TAKEN | 14 (0x0E) | |
DAMAGE_SHIELD | 15 (0x0F) | |
MOD_STEALTH | 16 (0x10) | |
MOD_STEALTH_DETECT | 17 (0x11) | |
MOD_INVISIBILITY | 18 (0x12) | |
MOD_INVISIBILITY_DETECTION | 19 (0x13) | |
OBS_MOD_HEALTH | 20 (0x14) | |
OBS_MOD_MANA | 21 (0x15) | |
MOD_RESISTANCE | 22 (0x16) | |
PERIODIC_TRIGGER_SPELL | 23 (0x17) | |
PERIODIC_ENERGIZE | 24 (0x18) | |
MOD_PACIFY | 25 (0x19) | |
MOD_ROOT | 26 (0x1A) | |
MOD_SILENCE | 27 (0x1B) | |
REFLECT_SPELLS | 28 (0x1C) | |
MOD_STAT | 29 (0x1D) | |
MOD_SKILL | 30 (0x1E) | |
MOD_INCREASE_SPEED | 31 (0x1F) | |
MOD_INCREASE_MOUNTED_SPEED | 32 (0x20) | |
MOD_DECREASE_SPEED | 33 (0x21) | |
MOD_INCREASE_HEALTH | 34 (0x22) | |
MOD_INCREASE_ENERGY | 35 (0x23) | |
MOD_SHAPESHIFT | 36 (0x24) | |
EFFECT_IMMUNITY | 37 (0x25) | |
STATE_IMMUNITY | 38 (0x26) | |
SCHOOL_IMMUNITY | 39 (0x27) | |
DAMAGE_IMMUNITY | 40 (0x28) | |
DISPEL_IMMUNITY | 41 (0x29) | |
PROC_TRIGGER_SPELL | 42 (0x2A) | |
PROC_TRIGGER_DAMAGE | 43 (0x2B) | |
TRACK_CREATURES | 44 (0x2C) | |
TRACK_RESOURCES | 45 (0x2D) | |
UNKNOWN46 | 46 (0x2E) | |
MOD_PARRY_PERCENT | 47 (0x2F) | |
UNKNOWN48 | 48 (0x30) | |
MOD_DODGE_PERCENT | 49 (0x31) | |
MOD_BLOCK_SKILL | 50 (0x32) | |
MOD_BLOCK_PERCENT | 51 (0x33) | |
MOD_CRIT_PERCENT | 52 (0x34) | |
PERIODIC_LEECH | 53 (0x35) | |
MOD_HIT_CHANCE | 54 (0x36) | |
MOD_SPELL_HIT_CHANCE | 55 (0x37) | |
TRANSFORM | 56 (0x38) | |
MOD_SPELL_CRIT_CHANCE | 57 (0x39) | |
MOD_INCREASE_SWIM_SPEED | 58 (0x3A) | |
MOD_DAMAGE_DONE_CREATURE | 59 (0x3B) | |
MOD_PACIFY_SILENCE | 60 (0x3C) | |
MOD_SCALE | 61 (0x3D) | |
PERIODIC_HEALTH_FUNNEL | 62 (0x3E) | |
PERIODIC_MANA_FUNNEL | 63 (0x3F) | |
PERIODIC_MANA_LEECH | 64 (0x40) | |
MOD_CASTING_SPEED_NOT_STACK | 65 (0x41) | |
FEIGN_DEATH | 66 (0x42) | |
MOD_DISARM | 67 (0x43) | |
MOD_STALKED | 68 (0x44) | |
SCHOOL_ABSORB | 69 (0x45) | |
EXTRA_ATTACKS | 70 (0x46) | |
MOD_SPELL_CRIT_CHANCE_SCHOOL | 71 (0x47) | |
MOD_POWER_COST_SCHOOL_PCT | 72 (0x48) | |
MOD_POWER_COST_SCHOOL | 73 (0x49) | |
REFLECT_SPELLS_SCHOOL | 74 (0x4A) | |
MOD_LANGUAGE | 75 (0x4B) | |
FAR_SIGHT | 76 (0x4C) | |
MECHANIC_IMMUNITY | 77 (0x4D) | |
MOUNTED | 78 (0x4E) | |
MOD_DAMAGE_PERCENT_DONE | 79 (0x4F) | |
MOD_PERCENT_STAT | 80 (0x50) | |
SPLIT_DAMAGE_PCT | 81 (0x51) | |
WATER_BREATHING | 82 (0x52) | |
MOD_BASE_RESISTANCE | 83 (0x53) | |
MOD_REGEN | 84 (0x54) | |
MOD_POWER_REGEN | 85 (0x55) | |
CHANNEL_DEATH_ITEM | 86 (0x56) | |
MOD_DAMAGE_PERCENT_TAKEN | 87 (0x57) | |
MOD_HEALTH_REGEN_PERCENT | 88 (0x58) | |
PERIODIC_DAMAGE_PERCENT | 89 (0x59) | |
MOD_RESIST_CHANCE | 90 (0x5A) | |
MOD_DETECT_RANGE | 91 (0x5B) | |
PREVENTS_FLEEING | 92 (0x5C) | |
MOD_UNATTACKABLE | 93 (0x5D) | |
INTERRUPT_REGEN | 94 (0x5E) | |
GHOST | 95 (0x5F) | |
SPELL_MAGNET | 96 (0x60) | |
MANA_SHIELD | 97 (0x61) | |
MOD_SKILL_TALENT | 98 (0x62) | |
MOD_ATTACK_POWER | 99 (0x63) | |
AURAS_VISIBLE | 100 (0x64) | |
MOD_RESISTANCE_PCT | 101 (0x65) | |
MOD_MELEE_ATTACK_POWER_VERSUS | 102 (0x66) | |
MOD_TOTAL_THREAT | 103 (0x67) | |
WATER_WALK | 104 (0x68) | |
FEATHER_FALL | 105 (0x69) | |
HOVER | 106 (0x6A) | |
ADD_FLAT_MODIFIER | 107 (0x6B) | |
ADD_PCT_MODIFIER | 108 (0x6C) | |
ADD_TARGET_TRIGGER | 109 (0x6D) | |
MOD_POWER_REGEN_PERCENT | 110 (0x6E) | |
ADD_CASTER_HIT_TRIGGER | 111 (0x6F) | |
OVERRIDE_CLASS_SCRIPTS | 112 (0x70) | |
MOD_RANGED_DAMAGE_TAKEN | 113 (0x71) | |
MOD_RANGED_DAMAGE_TAKEN_PCT | 114 (0x72) | |
MOD_HEALING | 115 (0x73) | |
MOD_REGEN_DURING_COMBAT | 116 (0x74) | |
MOD_MECHANIC_RESISTANCE | 117 (0x75) | |
MOD_HEALING_PCT | 118 (0x76) | |
SHARE_PET_TRACKING | 119 (0x77) | |
UNTRACKABLE | 120 (0x78) | |
EMPATHY | 121 (0x79) | |
MOD_OFFHAND_DAMAGE_PCT | 122 (0x7A) | |
MOD_TARGET_RESISTANCE | 123 (0x7B) | |
MOD_RANGED_ATTACK_POWER | 124 (0x7C) | |
MOD_MELEE_DAMAGE_TAKEN | 125 (0x7D) | |
MOD_MELEE_DAMAGE_TAKEN_PCT | 126 (0x7E) | |
RANGED_ATTACK_POWER_ATTACKER_BONUS | 127 (0x7F) | |
MOD_POSSESS_PET | 128 (0x80) | |
MOD_SPEED_ALWAYS | 129 (0x81) | |
MOD_MOUNTED_SPEED_ALWAYS | 130 (0x82) | |
MOD_RANGED_ATTACK_POWER_VERSUS | 131 (0x83) | |
MOD_INCREASE_ENERGY_PERCENT | 132 (0x84) | |
MOD_INCREASE_HEALTH_PERCENT | 133 (0x85) | |
MOD_MANA_REGEN_INTERRUPT | 134 (0x86) | |
MOD_HEALING_DONE | 135 (0x87) | |
MOD_HEALING_DONE_PERCENT | 136 (0x88) | |
MOD_TOTAL_STAT_PERCENTAGE | 137 (0x89) | |
MOD_MELEE_HASTE | 138 (0x8A) | |
FORCE_REACTION | 139 (0x8B) | |
MOD_RANGED_HASTE | 140 (0x8C) | |
MOD_RANGED_AMMO_HASTE | 141 (0x8D) | |
MOD_BASE_RESISTANCE_PCT | 142 (0x8E) | |
MOD_RESISTANCE_EXCLUSIVE | 143 (0x8F) | |
SAFE_FALL | 144 (0x90) | |
CHARISMA | 145 (0x91) | |
PERSUADED | 146 (0x92) | |
MECHANIC_IMMUNITY_MASK | 147 (0x93) | |
RETAIN_COMBO_POINTS | 148 (0x94) | |
RESIST_PUSHBACK | 149 (0x95) | |
MOD_SHIELD_BLOCKVALUE_PCT | 150 (0x96) | |
TRACK_STEALTHED | 151 (0x97) | |
MOD_DETECTED_RANGE | 152 (0x98) | |
SPLIT_DAMAGE_FLAT | 153 (0x99) | |
MOD_STEALTH_LEVEL | 154 (0x9A) | |
MOD_WATER_BREATHING | 155 (0x9B) | |
MOD_REPUTATION_GAIN | 156 (0x9C) | |
PET_DAMAGE_MULTI | 157 (0x9D) | |
MOD_SHIELD_BLOCKVALUE | 158 (0x9E) | |
NO_PVP_CREDIT | 159 (0x9F) | |
MOD_AOE_AVOIDANCE | 160 (0xA0) | |
MOD_HEALTH_REGEN_IN_COMBAT | 161 (0xA1) | |
POWER_BURN_MANA | 162 (0xA2) | |
MOD_CRIT_DAMAGE_BONUS | 163 (0xA3) | |
UNKNOWN164 | 164 (0xA4) | |
MELEE_ATTACK_POWER_ATTACKER_BONUS | 165 (0xA5) | |
MOD_ATTACK_POWER_PCT | 166 (0xA6) | |
MOD_RANGED_ATTACK_POWER_PCT | 167 (0xA7) | |
MOD_DAMAGE_DONE_VERSUS | 168 (0xA8) | |
MOD_CRIT_PERCENT_VERSUS | 169 (0xA9) | |
DETECT_AMORE | 170 (0xAA) | |
MOD_SPEED_NOT_STACK | 171 (0xAB) | |
MOD_MOUNTED_SPEED_NOT_STACK | 172 (0xAC) | |
ALLOW_CHAMPION_SPELLS | 173 (0xAD) | |
MOD_SPELL_DAMAGE_OF_STAT_PERCENT | 174 (0xAE) | |
MOD_SPELL_HEALING_OF_STAT_PERCENT | 175 (0xAF) | |
SPIRIT_OF_REDEMPTION | 176 (0xB0) | |
AOE_CHARM | 177 (0xB1) | |
MOD_DEBUFF_RESISTANCE | 178 (0xB2) | |
MOD_ATTACKER_SPELL_CRIT_CHANCE | 179 (0xB3) | |
MOD_FLAT_SPELL_DAMAGE_VERSUS | 180 (0xB4) | |
MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS | 181 (0xB5) | |
MOD_RESISTANCE_OF_STAT_PERCENT | 182 (0xB6) | |
MOD_CRITICAL_THREAT | 183 (0xB7) | |
MOD_ATTACKER_MELEE_HIT_CHANCE | 184 (0xB8) | |
MOD_ATTACKER_RANGED_HIT_CHANCE | 185 (0xB9) | |
MOD_ATTACKER_SPELL_HIT_CHANCE | 186 (0xBA) | |
MOD_ATTACKER_MELEE_CRIT_CHANCE | 187 (0xBB) | |
MOD_ATTACKER_RANGED_CRIT_CHANCE | 188 (0xBC) | |
MOD_RATING | 189 (0xBD) | |
MOD_FACTION_REPUTATION_GAIN | 190 (0xBE) | |
USE_NORMAL_MOVEMENT_SPEED | 191 (0xBF) | |
MOD_MELEE_RANGED_HASTE | 192 (0xC0) | |
HASTE_ALL | 193 (0xC1) | |
MOD_DEPRICATED_1 | 194 (0xC2) | |
MOD_DEPRICATED_2 | 195 (0xC3) | |
MOD_COOLDOWN | 196 (0xC4) | |
MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE | 197 (0xC5) | |
MOD_ALL_WEAPON_SKILLS | 198 (0xC6) | |
MOD_INCREASES_SPELL_PCT_TO_HIT | 199 (0xC7) | |
MOD_XP_PCT | 200 (0xC8) | |
FLY | 201 (0xC9) | |
IGNORE_COMBAT_RESULT | 202 (0xCA) | |
MOD_ATTACKER_MELEE_CRIT_DAMAGE | 203 (0xCB) | |
MOD_ATTACKER_RANGED_CRIT_DAMAGE | 204 (0xCC) | |
MOD_ATTACKER_SPELL_CRIT_DAMAGE | 205 (0xCD) | |
MOD_FLIGHT_SPEED | 206 (0xCE) | |
MOD_FLIGHT_SPEED_MOUNTED | 207 (0xCF) | |
MOD_FLIGHT_SPEED_STACKING | 208 (0xD0) | |
MOD_FLIGHT_SPEED_MOUNTED_STACKING | 209 (0xD1) | |
MOD_FLIGHT_SPEED_NOT_STACKING | 210 (0xD2) | |
MOD_FLIGHT_SPEED_MOUNTED_NOT_STACKING | 211 (0xD3) | |
MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT | 212 (0xD4) | |
MOD_RAGE_FROM_DAMAGE_DEALT | 213 (0xD5) | |
UNKNOWN214 | 214 (0xD6) | |
ARENA_PREPARATION | 215 (0xD7) | |
HASTE_SPELLS | 216 (0xD8) | |
UNKNOWN217 | 217 (0xD9) | |
HASTE_RANGED | 218 (0xDA) | |
MOD_MANA_REGEN_FROM_STAT | 219 (0xDB) | |
MOD_RATING_FROM_STAT | 220 (0xDC) | |
UNKNOWN221 | 221 (0xDD) | |
UNKNOWN222 | 222 (0xDE) | |
UNKNOWN223 | 223 (0xDF) | |
UNKNOWN224 | 224 (0xE0) | |
PRAYER_OF_MENDING | 225 (0xE1) | |
PERIODIC_DUMMY | 226 (0xE2) | |
PERIODIC_TRIGGER_SPELL_WITH_VALUE | 227 (0xE3) | |
DETECT_STEALTH | 228 (0xE4) | |
MOD_AOE_DAMAGE_AVOIDANCE | 229 (0xE5) | |
UNKNOWN230 | 230 (0xE6) | |
PROC_TRIGGER_SPELL_WITH_VALUE | 231 (0xE7) | |
MECHANIC_DURATION_MOD | 232 (0xE8) | |
UNKNOWN233 | 233 (0xE9) | |
MECHANIC_DURATION_MOD_NOT_STACK | 234 (0xEA) | |
MOD_DISPEL_RESIST | 235 (0xEB) | |
UNKNOWN236 | 236 (0xEC) | |
MOD_SPELL_DAMAGE_OF_ATTACK_POWER | 237 (0xED) | |
MOD_SPELL_HEALING_OF_ATTACK_POWER | 238 (0xEE) | |
MOD_SCALE_2 | 239 (0xEF) | |
MOD_EXPERTISE | 240 (0xF0) | |
FORCE_MOVE_FORWARD | 241 (0xF1) | |
UNKNOWN242 | 242 (0xF2) | |
UNKNOWN243 | 243 (0xF3) | |
COMPREHEND_LANGUAGE | 244 (0xF4) | |
UNKNOWN245 | 245 (0xF5) | |
UNKNOWN246 | 246 (0xF6) | |
MIRROR_IMAGE | 247 (0xF7) | |
MOD_COMBAT_RESULT_CHANCE | 248 (0xF8) | |
UNKNOWN249 | 249 (0xF9) | |
MOD_INCREASE_HEALTH_2 | 250 (0xFA) | |
MOD_ENEMY_DODGE | 251 (0xFB) | |
UNKNOWN252 | 252 (0xFC) | |
UNKNOWN253 | 253 (0xFD) | |
UNKNOWN254 | 254 (0xFE) | |
UNKNOWN255 | 255 (0xFF) | |
UNKNOWN256 | 256 (0x100) | |
UNKNOWN257 | 257 (0x101) | |
UNKNOWN258 | 258 (0x102) | |
UNKNOWN259 | 259 (0x103) | |
UNKNOWN260 | 260 (0x104) | |
UNKNOWN261 | 261 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
BIND_SIGHT | 1 (0x01) | |
MOD_POSSESS | 2 (0x02) | |
PERIODIC_DAMAGE | 3 (0x03) | |
DUMMY | 4 (0x04) | |
MOD_CONFUSE | 5 (0x05) | |
MOD_CHARM | 6 (0x06) | |
MOD_FEAR | 7 (0x07) | |
PERIODIC_HEAL | 8 (0x08) | |
MOD_ATTACKSPEED | 9 (0x09) | |
MOD_THREAT | 10 (0x0A) | |
MOD_TAUNT | 11 (0x0B) | |
MOD_STUN | 12 (0x0C) | |
MOD_DAMAGE_DONE | 13 (0x0D) | |
MOD_DAMAGE_TAKEN | 14 (0x0E) | |
DAMAGE_SHIELD | 15 (0x0F) | |
MOD_STEALTH | 16 (0x10) | |
MOD_STEALTH_DETECT | 17 (0x11) | |
MOD_INVISIBILITY | 18 (0x12) | |
MOD_INVISIBILITY_DETECT | 19 (0x13) | |
OBS_MOD_HEALTH | 20 (0x14) | |
OBS_MOD_POWER | 21 (0x15) | |
MOD_RESISTANCE | 22 (0x16) | |
PERIODIC_TRIGGER_SPELL | 23 (0x17) | |
PERIODIC_ENERGIZE | 24 (0x18) | |
MOD_PACIFY | 25 (0x19) | |
MOD_ROOT | 26 (0x1A) | |
MOD_SILENCE | 27 (0x1B) | |
REFLECT_SPELLS | 28 (0x1C) | |
MOD_STAT | 29 (0x1D) | |
MOD_SKILL | 30 (0x1E) | |
MOD_INCREASE_SPEED | 31 (0x1F) | |
MOD_INCREASE_MOUNTED_SPEED | 32 (0x20) | |
MOD_DECREASE_SPEED | 33 (0x21) | |
MOD_INCREASE_HEALTH | 34 (0x22) | |
MOD_INCREASE_ENERGY | 35 (0x23) | |
MOD_SHAPESHIFT | 36 (0x24) | |
EFFECT_IMMUNITY | 37 (0x25) | |
STATE_IMMUNITY | 38 (0x26) | |
SCHOOL_IMMUNITY | 39 (0x27) | |
DAMAGE_IMMUNITY | 40 (0x28) | |
DISPEL_IMMUNITY | 41 (0x29) | |
PROC_TRIGGER_SPELL | 42 (0x2A) | |
PROC_TRIGGER_DAMAGE | 43 (0x2B) | |
TRACK_CREATURES | 44 (0x2C) | |
TRACK_RESOURCES | 45 (0x2D) | |
UNKNOWN46 | 46 (0x2E) | |
MOD_PARRY_PERCENT | 47 (0x2F) | |
PERIODIC_TRIGGER_SPELL_FROM_CLIENT | 48 (0x30) | |
MOD_DODGE_PERCENT | 49 (0x31) | |
MOD_CRITICAL_HEALING_AMOUNT | 50 (0x32) | |
MOD_BLOCK_PERCENT | 51 (0x33) | |
MOD_WEAPON_CRIT_PERCENT | 52 (0x34) | |
PERIODIC_LEECH | 53 (0x35) | |
MOD_HIT_CHANCE | 54 (0x36) | |
MOD_SPELL_HIT_CHANCE | 55 (0x37) | |
TRANSFORM | 56 (0x38) | |
MOD_SPELL_CRIT_CHANCE | 57 (0x39) | |
MOD_INCREASE_SWIM_SPEED | 58 (0x3A) | |
MOD_DAMAGE_DONE_CREATURE | 59 (0x3B) | |
MOD_PACIFY_SILENCE | 60 (0x3C) | |
MOD_SCALE | 61 (0x3D) | |
PERIODIC_HEALTH_FUNNEL | 62 (0x3E) | |
UNKNOWN63 | 63 (0x3F) | |
PERIODIC_MANA_LEECH | 64 (0x40) | |
MOD_CASTING_SPEED_NOT_STACK | 65 (0x41) | |
FEIGN_DEATH | 66 (0x42) | |
MOD_DISARM | 67 (0x43) | |
MOD_STALKED | 68 (0x44) | |
SCHOOL_ABSORB | 69 (0x45) | |
EXTRA_ATTACKS | 70 (0x46) | |
MOD_SPELL_CRIT_CHANCE_SCHOOL | 71 (0x47) | |
MOD_POWER_COST_SCHOOL_PCT | 72 (0x48) | |
MOD_POWER_COST_SCHOOL | 73 (0x49) | |
REFLECT_SPELLS_SCHOOL | 74 (0x4A) | |
MOD_LANGUAGE | 75 (0x4B) | |
FAR_SIGHT | 76 (0x4C) | |
MECHANIC_IMMUNITY | 77 (0x4D) | |
MOUNTED | 78 (0x4E) | |
MOD_DAMAGE_PERCENT_DONE | 79 (0x4F) | |
MOD_PERCENT_STAT | 80 (0x50) | |
SPLIT_DAMAGE_PCT | 81 (0x51) | |
WATER_BREATHING | 82 (0x52) | |
MOD_BASE_RESISTANCE | 83 (0x53) | |
MOD_REGEN | 84 (0x54) | |
MOD_POWER_REGEN | 85 (0x55) | |
CHANNEL_DEATH_ITEM | 86 (0x56) | |
MOD_DAMAGE_PERCENT_TAKEN | 87 (0x57) | |
MOD_HEALTH_REGEN_PERCENT | 88 (0x58) | |
PERIODIC_DAMAGE_PERCENT | 89 (0x59) | |
UNKNOWN90 | 90 (0x5A) | |
MOD_DETECT_RANGE | 91 (0x5B) | |
PREVENTS_FLEEING | 92 (0x5C) | |
MOD_UNATTACKABLE | 93 (0x5D) | |
INTERRUPT_REGEN | 94 (0x5E) | |
GHOST | 95 (0x5F) | |
SPELL_MAGNET | 96 (0x60) | |
MANA_SHIELD | 97 (0x61) | |
MOD_SKILL_TALENT | 98 (0x62) | |
MOD_ATTACK_POWER | 99 (0x63) | |
AURAS_VISIBLE | 100 (0x64) | |
MOD_RESISTANCE_PCT | 101 (0x65) | |
MOD_MELEE_ATTACK_POWER_VERSUS | 102 (0x66) | |
MOD_TOTAL_THREAT | 103 (0x67) | |
WATER_WALK | 104 (0x68) | |
FEATHER_FALL | 105 (0x69) | |
HOVER | 106 (0x6A) | |
ADD_FLAT_MODIFIER | 107 (0x6B) | |
ADD_PCT_MODIFIER | 108 (0x6C) | |
ADD_TARGET_TRIGGER | 109 (0x6D) | |
MOD_POWER_REGEN_PERCENT | 110 (0x6E) | |
ADD_CASTER_HIT_TRIGGER | 111 (0x6F) | |
OVERRIDE_CLASS_SCRIPTS | 112 (0x70) | |
MOD_RANGED_DAMAGE_TAKEN | 113 (0x71) | |
MOD_RANGED_DAMAGE_TAKEN_PCT | 114 (0x72) | |
MOD_HEALING | 115 (0x73) | |
MOD_REGEN_DURING_COMBAT | 116 (0x74) | |
MOD_MECHANIC_RESISTANCE | 117 (0x75) | |
MOD_HEALING_PCT | 118 (0x76) | |
UNKNOWN119 | 119 (0x77) | |
UNTRACKABLE | 120 (0x78) | |
EMPATHY | 121 (0x79) | |
MOD_OFFHAND_DAMAGE_PCT | 122 (0x7A) | |
MOD_TARGET_RESISTANCE | 123 (0x7B) | |
MOD_RANGED_ATTACK_POWER | 124 (0x7C) | |
MOD_MELEE_DAMAGE_TAKEN | 125 (0x7D) | |
MOD_MELEE_DAMAGE_TAKEN_PCT | 126 (0x7E) | |
RANGED_ATTACK_POWER_ATTACKER_BONUS | 127 (0x7F) | |
MOD_POSSESS_PET | 128 (0x80) | |
MOD_SPEED_ALWAYS | 129 (0x81) | |
MOD_MOUNTED_SPEED_ALWAYS | 130 (0x82) | |
MOD_RANGED_ATTACK_POWER_VERSUS | 131 (0x83) | |
MOD_INCREASE_ENERGY_PERCENT | 132 (0x84) | |
MOD_INCREASE_HEALTH_PERCENT | 133 (0x85) | |
MOD_MANA_REGEN_INTERRUPT | 134 (0x86) | |
MOD_HEALING_DONE | 135 (0x87) | |
MOD_HEALING_DONE_PERCENT | 136 (0x88) | |
MOD_TOTAL_STAT_PERCENTAGE | 137 (0x89) | |
MOD_MELEE_HASTE | 138 (0x8A) | |
FORCE_REACTION | 139 (0x8B) | |
MOD_RANGED_HASTE | 140 (0x8C) | |
MOD_RANGED_AMMO_HASTE | 141 (0x8D) | |
MOD_BASE_RESISTANCE_PCT | 142 (0x8E) | |
MOD_RESISTANCE_EXCLUSIVE | 143 (0x8F) | |
SAFE_FALL | 144 (0x90) | |
MOD_PET_TALENT_POINTS | 145 (0x91) | |
ALLOW_TAME_PET_TYPE | 146 (0x92) | |
MECHANIC_IMMUNITY_MASK | 147 (0x93) | |
RETAIN_COMBO_POINTS | 148 (0x94) | |
REDUCE_PUSHBACK | 149 (0x95) | |
MOD_SHIELD_BLOCKVALUE_PCT | 150 (0x96) | |
TRACK_STEALTHED | 151 (0x97) | |
MOD_DETECTED_RANGE | 152 (0x98) | |
SPLIT_DAMAGE_FLAT | 153 (0x99) | |
MOD_STEALTH_LEVEL | 154 (0x9A) | |
MOD_WATER_BREATHING | 155 (0x9B) | |
MOD_REPUTATION_GAIN | 156 (0x9C) | |
PET_DAMAGE_MULTI | 157 (0x9D) | |
MOD_SHIELD_BLOCKVALUE | 158 (0x9E) | |
NO_PVP_CREDIT | 159 (0x9F) | |
MOD_AOE_AVOIDANCE | 160 (0xA0) | |
MOD_HEALTH_REGEN_IN_COMBAT | 161 (0xA1) | |
POWER_BURN | 162 (0xA2) | |
MOD_CRIT_DAMAGE_BONUS | 163 (0xA3) | |
UNKNOWN164 | 164 (0xA4) | |
MELEE_ATTACK_POWER_ATTACKER_BONUS | 165 (0xA5) | |
MOD_ATTACK_POWER_PCT | 166 (0xA6) | |
MOD_RANGED_ATTACK_POWER_PCT | 167 (0xA7) | |
MOD_DAMAGE_DONE_VERSUS | 168 (0xA8) | |
MOD_CRIT_PERCENT_VERSUS | 169 (0xA9) | |
DETECT_AMORE | 170 (0xAA) | |
MOD_SPEED_NOT_STACK | 171 (0xAB) | |
MOD_MOUNTED_SPEED_NOT_STACK | 172 (0xAC) | |
UNKNOWN173 | 173 (0xAD) | |
MOD_SPELL_DAMAGE_OF_STAT_PERCENT | 174 (0xAE) | |
MOD_SPELL_HEALING_OF_STAT_PERCENT | 175 (0xAF) | |
SPIRIT_OF_REDEMPTION | 176 (0xB0) | |
AOE_CHARM | 177 (0xB1) | |
MOD_DEBUFF_RESISTANCE | 178 (0xB2) | |
MOD_ATTACKER_SPELL_CRIT_CHANCE | 179 (0xB3) | |
MOD_FLAT_SPELL_DAMAGE_VERSUS | 180 (0xB4) | |
UNKNOWN181 | 181 (0xB5) | |
MOD_RESISTANCE_OF_STAT_PERCENT | 182 (0xB6) | |
MOD_CRITICAL_THREAT | 183 (0xB7) | |
MOD_ATTACKER_MELEE_HIT_CHANCE | 184 (0xB8) | |
MOD_ATTACKER_RANGED_HIT_CHANCE | 185 (0xB9) | |
MOD_ATTACKER_SPELL_HIT_CHANCE | 186 (0xBA) | |
MOD_ATTACKER_MELEE_CRIT_CHANCE | 187 (0xBB) | |
MOD_ATTACKER_RANGED_CRIT_CHANCE | 188 (0xBC) | |
MOD_RATING | 189 (0xBD) | |
MOD_FACTION_REPUTATION_GAIN | 190 (0xBE) | |
USE_NORMAL_MOVEMENT_SPEED | 191 (0xBF) | |
MOD_MELEE_RANGED_HASTE | 192 (0xC0) | |
MELEE_SLOW | 193 (0xC1) | |
MOD_TARGET_ABSORB_SCHOOL | 194 (0xC2) | |
MOD_TARGET_ABILITY_ABSORB_SCHOOL | 195 (0xC3) | |
MOD_COOLDOWN | 196 (0xC4) | |
MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE | 197 (0xC5) | |
UNKNOWN198 | 198 (0xC6) | |
MOD_INCREASES_SPELL_PCT_TO_HIT | 199 (0xC7) | |
MOD_XP_PCT | 200 (0xC8) | |
FLY | 201 (0xC9) | |
IGNORE_COMBAT_RESULT | 202 (0xCA) | |
MOD_ATTACKER_MELEE_CRIT_DAMAGE | 203 (0xCB) | |
MOD_ATTACKER_RANGED_CRIT_DAMAGE | 204 (0xCC) | |
MOD_SCHOOL_CRIT_DMG_TAKEN | 205 (0xCD) | |
MOD_INCREASE_VEHICLE_FLIGHT_SPEED | 206 (0xCE) | |
MOD_INCREASE_MOUNTED_FLIGHT_SPEED | 207 (0xCF) | |
MOD_INCREASE_FLIGHT_SPEED | 208 (0xD0) | |
MOD_MOUNTED_FLIGHT_SPEED_ALWAYS | 209 (0xD1) | |
MOD_VEHICLE_SPEED_ALWAYS | 210 (0xD2) | |
MOD_FLIGHT_SPEED_NOT_STACK | 211 (0xD3) | |
MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT | 212 (0xD4) | |
MOD_RAGE_FROM_DAMAGE_DEALT | 213 (0xD5) | |
UNKNOWN214 | 214 (0xD6) | |
ARENA_PREPARATION | 215 (0xD7) | |
HASTE_SPELLS | 216 (0xD8) | |
MOD_MELEE_HASTE_2 | 217 (0xD9) | |
HASTE_RANGED | 218 (0xDA) | |
MOD_MANA_REGEN_FROM_STAT | 219 (0xDB) | |
MOD_RATING_FROM_STAT | 220 (0xDC) | |
MOD_DETAUNT | 221 (0xDD) | |
UNKNOWN222 | 222 (0xDE) | |
RAID_PROC_FROM_CHARGE | 223 (0xDF) | |
UNKNOWN224 | 224 (0xE0) | |
RAID_PROC_FROM_CHARGE_WITH_VALUE | 225 (0xE1) | |
PERIODIC_DUMMY | 226 (0xE2) | |
PERIODIC_TRIGGER_SPELL_WITH_VALUE | 227 (0xE3) | |
DETECT_STEALTH | 228 (0xE4) | |
MOD_AOE_DAMAGE_AVOIDANCE | 229 (0xE5) | |
UNKNOWN230 | 230 (0xE6) | |
PROC_TRIGGER_SPELL_WITH_VALUE | 231 (0xE7) | |
MECHANIC_DURATION_MOD | 232 (0xE8) | |
CHANGE_MODEL_FOR_ALL_HUMANOIDS | 233 (0xE9) | |
MECHANIC_DURATION_MOD_NOT_STACK | 234 (0xEA) | |
MOD_DISPEL_RESIST | 235 (0xEB) | |
CONTROL_VEHICLE | 236 (0xEC) | |
MOD_SPELL_DAMAGE_OF_ATTACK_POWER | 237 (0xED) | |
MOD_SPELL_HEALING_OF_ATTACK_POWER | 238 (0xEE) | |
MOD_SCALE_2 | 239 (0xEF) | |
MOD_EXPERTISE | 240 (0xF0) | |
FORCE_MOVE_FORWARD | 241 (0xF1) | |
MOD_SPELL_DAMAGE_FROM_HEALING | 242 (0xF2) | |
MOD_FACTION | 243 (0xF3) | |
COMPREHEND_LANGUAGE | 244 (0xF4) | |
MOD_AURA_DURATION_BY_DISPEL | 245 (0xF5) | |
MOD_AURA_DURATION_BY_DISPEL_NOT_STACK | 246 (0xF6) | |
CLONE_CASTER | 247 (0xF7) | |
MOD_COMBAT_RESULT_CHANCE | 248 (0xF8) | |
CONVERT_RUNE | 249 (0xF9) | |
MOD_INCREASE_HEALTH_2 | 250 (0xFA) | |
MOD_ENEMY_DODGE | 251 (0xFB) | |
MOD_SPEED_SLOW_ALL | 252 (0xFC) | |
MOD_BLOCK_CRIT_CHANCE | 253 (0xFD) | |
MOD_DISARM_OFFHAND | 254 (0xFE) | |
MOD_MECHANIC_DAMAGE_TAKEN_PERCENT | 255 (0xFF) | |
NO_REAGENT_USE | 256 (0x100) | |
MOD_TARGET_RESIST_BY_SPELL_CLASS | 257 (0x101) | |
UNKNOWN258 | 258 (0x102) | |
MOD_HOT_PCT | 259 (0x103) | |
SCREEN_EFFECT | 260 (0x104) | |
PHASE | 261 (0x105) | |
ABILITY_IGNORE_AURASTATE | 262 (0x106) | |
ALLOW_ONLY_ABILITY | 263 (0x107) | |
UNKNOWN264 | 264 (0x108) | |
UNKNOWN265 | 265 (0x109) | |
UNKNOWN266 | 266 (0x10A) | |
MOD_IMMUNE_AURA_APPLY_SCHOOL | 267 (0x10B) | |
MOD_ATTACK_POWER_OF_STAT_PERCENT | 268 (0x10C) | |
MOD_IGNORE_TARGET_RESIST | 269 (0x10D) | |
MOD_ABILITY_IGNORE_TARGET_RESIST | 270 (0x10E) | |
MOD_DAMAGE_FROM_CASTER | 271 (0x10F) | |
IGNORE_MELEE_RESET | 272 (0x110) | |
X_RAY | 273 (0x111) | |
ABILITY_CONSUME_NO_AMMO | 274 (0x112) | |
MOD_IGNORE_SHAPESHIFT | 275 (0x113) | |
MOD_DAMAGE_DONE_FOR_MECHANIC | 276 (0x114) | |
MOD_MAX_AFFECTED_TARGETS | 277 (0x115) | |
MOD_DISARM_RANGED | 278 (0x116) | |
INITIALIZE_IMAGES | 279 (0x117) | |
MOD_ARMOR_PENETRATION_PCT | 280 (0x118) | |
MOD_HONOR_GAIN_PCT | 281 (0x119) | |
MOD_BASE_HEALTH_PCT | 282 (0x11A) | |
MOD_HEALING_RECEIVED | 283 (0x11B) | |
LINKED | 284 (0x11C) | |
MOD_ATTACK_POWER_OF_ARMOR | 285 (0x11D) | |
ABILITY_PERIODIC_CRIT | 286 (0x11E) | |
DEFLECT_SPELLS | 287 (0x11F) | |
IGNORE_HIT_DIRECTION | 288 (0x120) | |
PREVENT_DURABILITY_LOSS | 289 (0x121) | |
MOD_CRIT_PCT | 290 (0x122) | |
MOD_XP_QUEST_PCT | 291 (0x123) | |
OPEN_STABLE | 292 (0x124) | |
OVERRIDE_SPELLS | 293 (0x125) | |
PREVENT_REGENERATE_POWER | 294 (0x126) | |
UNKNOWN295 | 295 (0x127) | |
SET_VEHICLE_ID | 296 (0x128) | |
BLOCK_SPELL_FAMILY | 297 (0x129) | |
STRANGULATE | 298 (0x12A) | |
UNKNOWN299 | 299 (0x12B) | |
SHARE_DAMAGE_PCT | 300 (0x12C) | |
SCHOOL_HEAL_ABSORB | 301 (0x12D) | |
UNKNOWN302 | 302 (0x12E) | |
MOD_DAMAGE_DONE_VERSUS_AURASTATE | 303 (0x12F) | |
MOD_FAKE_INEBRIATE | 304 (0x130) | |
MOD_MINIMUM_SPEED | 305 (0x131) | |
UNKNOWN306 | 306 (0x132) | |
HEAL_ABSORB_TEST | 307 (0x133) | |
MOD_CRIT_CHANCE_FOR_CASTER | 308 (0x134) | |
UNKNOWN309 | 309 (0x135) | |
MOD_CREATURE_AOE_DAMAGE_AVOIDANCE | 310 (0x136) | |
UNKNOWN311 | 311 (0x137) | |
UNKNOWN312 | 312 (0x138) | |
UNKNOWN313 | 313 (0x139) | |
PREVENT_RESURRECTION | 314 (0x13A) | |
UNDERWATER_WALKING | 315 (0x13B) | |
PERIODIC_HASTE | 316 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
NOT_PLAYABLE | 1 (0x01) | |
BARE_FEET | 2 (0x02) | |
CAN_CURRENT_FORM_MOUNT | 4 (0x04) | |
UNKNOWN2 | 8 (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
Enumerator | Value | Comment |
---|---|---|
ENGLISH | 0 (0x00) | |
KOREAN | 1 (0x01) | |
FRENCH | 2 (0x02) | |
GERMAN | 3 (0x03) | |
CHINESE | 4 (0x04) | |
TAIWANESE | 5 (0x05) | |
SPANISH_SPAIN | 6 (0x06) | |
SPANISH_LATIN_AMERICA | 7 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
INITIAL | 1 (0x01) | |
ZONE_DEPENDENCY | 2 (0x02) | |
GLOBAL | 4 (0x04) | |
TRADE | 8 (0x08) | |
CITY_ONLY | 16 (0x10) | |
CITY_ONLY_2 | 32 (0x20) | |
DEFENCE | 65536 (0x10000) | |
UNSELECTED | 262144 (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
Enumerator | Value | Comment |
---|---|---|
TALK | 8 (0x08) | |
QUESTION | 16 (0x10) | |
EXCLAMATION | 32 (0x20) | |
SHOUT | 64 (0x40) | |
LAUGH | 128 (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
Enumerator | Value | Comment |
---|---|---|
NO_LOOP | 0 (0x00) | |
LOOP | 1 (0x01) | |
LOOP_WITH_SOUND | 2 (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
Enumerator | Value | Comment |
---|---|---|
STILL | 0 (0x00) | |
SLOW | 4 (0x04) | |
RAPID | 8 (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
Enumerator | Value | Comment |
---|---|---|
NORMAL | 0 (0x00) | |
GROUP_INSTANCE | 1 (0x01) | |
RAID_INSTANCE | 2 (0x02) | |
BATTLEGROUND | 3 (0x03) | |
WORLD_ZONE | 4 (0x04) | |
BATTLEGROUND2 | 5 (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
Enumerator | Value | Comment |
---|---|---|
SHIELD | 0 (0x00) | |
METAL_WEAPON | 1 (0x01) | |
WOOD_WEAPON | 2 (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
Enumerator | Value | Comment |
---|---|---|
ITEM | 0 (0x00) | |
WEAPON | 1 (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
Enumerator | Value | Comment |
---|---|---|
NEUTRAL | -1 (0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) | |
HORDE | 0 (0x00) | |
ALLIANCE | 1 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
ITEM_REQUIRED | 1 (0x01) | |
LOCKTYPE_REFERENCE | 2 (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
Enumerator | Value | Comment |
---|---|---|
FIRE | 0 (0x00) | |
SLIME | 2 (0x02) | |
WATER | 3 (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
Enumerator | Value | Comment |
---|---|---|
PVP_FLAGGED | 2048 (0x800) | |
ATTACK_PVPING_PLAYERS | 4096 (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
Enumerator | Value | Comment |
---|---|---|
HUMAN | 1 (0x01) | |
ORC | 2 (0x02) | |
DWARF | 3 (0x03) | |
NIGHT_ELF | 4 (0x04) | |
UNDEAD | 5 (0x05) | |
TAUREN | 6 (0x06) | |
GNOME | 7 (0x07) | |
TROLL | 8 (0x08) | |
GOBLIN | 9 (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
Enumerator | Value | Comment |
---|---|---|
HUMAN | 1 (0x01) | |
ORC | 2 (0x02) | |
DWARF | 3 (0x03) | |
NIGHT_ELF | 4 (0x04) | |
UNDEAD | 5 (0x05) | |
TAUREN | 6 (0x06) | |
GNOME | 7 (0x07) | |
TROLL | 8 (0x08) | |
GOBLIN | 9 (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
Enumerator | Value | Comment |
---|---|---|
HUMAN | 1 (0x01) | |
ORC | 2 (0x02) | |
DWARF | 3 (0x03) | |
NIGHT_ELF | 4 (0x04) | |
UNDEAD | 5 (0x05) | |
TAUREN | 6 (0x06) | |
GNOME | 7 (0x07) | |
TROLL | 8 (0x08) | |
GOBLIN | 9 (0x09) | |
BLOOD_ELF | 10 (0x0A) | |
DRAENEI | 11 (0x0B) | |
FEL_ORC | 12 (0x0C) | |
NAGA | 13 (0x0D) | |
BROKEN | 14 (0x0E) | |
SKELETON | 15 (0x0F) | |
VRYKUL | 16 (0x10) | |
TUSKARR | 17 (0x11) | |
FOREST_TROLL | 18 (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
Enumerator | Value | Comment |
---|---|---|
HUMAN | 1 (0x01) | |
ORC | 2 (0x02) | |
DWARF | 3 (0x03) | |
NIGHT_ELF | 4 (0x04) | |
UNDEAD | 5 (0x05) | |
TAUREN | 6 (0x06) | |
GNOME | 7 (0x07) | |
TROLL | 8 (0x08) | |
GOBLIN | 9 (0x09) | |
BLOOD_ELF | 10 (0x0A) | |
DRAENEI | 11 (0x0B) | |
FEL_ORC | 12 (0x0C) | |
NAGA | 13 (0x0D) | |
BROKEN | 14 (0x0E) | |
SKELETON | 15 (0x0F) | |
VRYKUL | 16 (0x10) | |
TUSKARR | 17 (0x11) | |
FOREST_TROLL | 18 (0x12) | |
TAUNKA | 19 (0x13) | |
NORTHREND_SKELETON | 20 (0x14) | |
ICE_TROLL | 21 (0x15) |
Used in:
- CMSG_CHAR_CREATE
- CMSG_CHAR_FACTION_CHANGE
- CMSG_CHAR_RACE_CHANGE
- Character
- LfgListPlayer
- SMSG_CHAR_FACTION_CHANGE
- SMSG_MIRRORIMAGE_DATA
- SMSG_NAME_QUERY_RESPONSE
- WhoPlayer
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
Enumerator | Value | Comment |
---|---|---|
VISIBLE_TO_CLIENT | 1 (0x01) | |
ENABLE_AT_WAR | 2 (0x02) | |
HIDE_IN_CLIENT | 4 (0x04) | |
FORCE_HIDE_IN_CLIENT | 8 (0x08) | |
FORCE_AT_PEACE | 16 (0x10) | |
FACTION_INACTIVE | 32 (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
Enumerator | Value | Comment |
---|---|---|
HAIR | 0 (0x00) | |
BALD | 1 (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
Enumerator | Value | Comment |
---|---|---|
BASE_SKIN | 0 (0x00) | |
FACE | 1 (0x01) | |
FACIAL_HAIR | 2 (0x02) | |
HAIR | 3 (0x03) | |
UNDERWEAR | 4 (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
Enumerator | Value | Comment |
---|---|---|
ONE | 1 (0x01) | |
TWO | 2 (0x02) | |
THREE | 3 (0x03) | |
FIVE | 5 (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
Enumerator | Value | Comment |
---|---|---|
UNITED_STATES | 1 (0x01) | |
KOREA | 2 (0x02) | |
EUROPE | 3 (0x03) | |
TAIWAN | 4 (0x04) | |
CHINA | 5 (0x05) | |
TEST_SERVER | 99 (0x63) | |
QA_SERVER | 101 (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
Enumerator | Value | Comment |
---|---|---|
NONE | -1 (0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) | |
SMALL | 0 (0x00) | |
MEDIUM | 1 (0x01) | |
LARGE | 2 (0x02) | |
GIANT | 3 (0x03) | |
COLOSSAL | 4 (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
Enumerator | Value | Comment |
---|---|---|
ATTRIBUTE | 5 (0x05) | Not used for anything in Vanilla and TBC, only used for Pet - Exotic Spirit Beast in Wrath. |
WEAPON | 6 (0x06) | |
CLASS | 7 (0x07) | |
ARMOR | 8 (0x08) | |
SECONDARY_PROFESSION | 9 (0x09) | |
LANGUAGE | 10 (0x0A) | |
PRIMARY_PROFESSION | 11 (0x0B) | |
GENERIC | 12 (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
Enumerator | Value | Comment |
---|---|---|
UNUSED | 0 (0x00) | |
SPELLS | 1 (0x01) | |
UI | 2 (0x02) | |
FOOTSTEPS | 3 (0x03) | |
WEAPON_IMPACT | 4 (0x04) | |
WEAPON_MISS | 6 (0x06) | |
PICK_UP_PUT_DOWN | 9 (0x09) | |
NPC_COMBAT | 10 (0x0A) | |
ERRORS | 12 (0x0C) | |
OBJECTS | 14 (0x0E) | |
DEATH | 16 (0x10) | |
NPC_GREETINGS | 17 (0x11) | |
TEST | 18 (0x12) | |
ARMOUR_FOLEY | 19 (0x13) | |
FOOTSTEPS_2 | 20 (0x14) | |
WATER_CHARACTER | 21 (0x15) | |
WATER_LIQUID | 22 (0x16) | |
TRADESKILLS | 23 (0x17) | |
DOODADS | 25 (0x19) | |
SPELL_FIZZLE | 26 (0x1A) | |
NPC_LOOPS | 27 (0x1B) | |
ZONE_MUSIC | 28 (0x1C) | |
EMOTES | 29 (0x1D) | |
NARRATION_MUSIC | 30 (0x1E) | |
NARRATION | 31 (0x1F) | |
ZONE_AMBIENCE | 50 (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
Enumerator | Value | Comment |
---|---|---|
LIGHT | 0 (0x00) | |
MEDIUM | 1 (0x01) | |
HEAVY | 2 (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
Enumerator | Value | Comment |
---|---|---|
WEAPON_NOT_AFFECTED_BY_ANIMATION | 0 (0x00) | |
SHEATHE_WEAPONS_AUTOMATICALLY | 4 (0x04) | |
SHEATHE_WEAPONS_AUTOMATICALLY_2 | 16 (0x10) | |
UNSHEATHE_WEAPONS | 32 (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;
}
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 1 / - | ProtocolVersion | protocol_version | Determines which version of messages are used for further communication. |
0x02 | 2 / Little | u16 | size | |
0x04 | 4 / Little | u32 | game_name | |
0x08 | 5 / - | Version | version | |
0x0D | 4 / - | Platform | platform | |
0x11 | 4 / - | Os | os | |
0x15 | 4 / - | Locale | locale | |
0x19 | 4 / Little | i32 | utc_timezone_offset | Offset in minutes from UTC time. 180 would be UTC+3 |
0x1D | 4 / Big | IpAddress | client_ip_address | |
0x21 | - / - | String | account_name | Real 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
Enumerator | Value | Comment |
---|---|---|
EN_GB | 1701726018 (0x656E4742) | |
EN_US | 1701729619 (0x656E5553) | |
ES_MX | 1702055256 (0x65734D58) | |
PT_BR | 1886667346 (0x70744252) | |
FR_FR | 1718765138 (0x66724652) | |
DE_DE | 1684358213 (0x64654445) | |
ES_ES | 1702053203 (0x65734553) | |
PT_PT | 1886670932 (0x70745054) | |
IT_IT | 1769228628 (0x69744954) | |
RU_RU | 1920291413 (0x72755255) | |
KO_KR | 1802455890 (0x6B6F4B52) | |
ZH_TW | 2053657687 (0x7A685457) | |
EN_TW | 1701729367 (0x656E5457) | |
EN_CN | 1701725006 (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
Enumerator | Value | Comment |
---|---|---|
WINDOWS | 5728622 (0x57696E) | |
MAC_OS_X | 5198680 (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
Enumerator | Value | Comment |
---|---|---|
X86 | 7878710 (0x783836) | |
POWER_PC | 5263427 (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
Enumerator | Value | Comment |
---|---|---|
TWO | 2 (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 . |
THREE | 3 (0x03) | Used for login by 1.12.1.5875 , 2.0.0.6080 , and 2.0.1.6180 . |
FIVE | 5 (0x05) | Used for login and reconnect by 2.0.3.6299 . |
SIX | 6 (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 . |
SEVEN | 7 (0x07) | Used for login and reconnect by 2.3.0.7561 , 2.3.2.7741 , and 2.3.3.7799 . |
EIGHT | 8 (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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 1 / - | u8 | protocol_version | Mangos statically sets this to 0. It is unknown exactly what it does. |
0x02 | 1 / - | LoginResult | result |
If result is equal to SUCCESS
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x03 | 32 / - | u8[32] | server_public_key | |
0x23 | 1 / - | u8 | generator_length | The 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 / - | u8 | large_safe_prime_length | Client can not handle arrays greater than 32. |
- | ? / - | u8[large_safe_prime_length] | large_safe_prime | |
- | 32 / - | u8[32] | salt | |
- | 16 / - | u8[16] | crc_salt | Used 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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode 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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode 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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode 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
Enumerator | Value | Comment |
---|---|---|
SUCCESS | 0 (0x00) | |
FAIL_UNKNOWN0 | 1 (0x01) | |
FAIL_UNKNOWN1 | 2 (0x02) | |
FAIL_BANNED | 3 (0x03) | |
FAIL_UNKNOWN_ACCOUNT | 4 (0x04) | |
FAIL_INCORRECT_PASSWORD | 5 (0x05) | |
FAIL_ALREADY_ONLINE | 6 (0x06) | |
FAIL_NO_TIME | 7 (0x07) | |
FAIL_DB_BUSY | 8 (0x08) | |
FAIL_VERSION_INVALID | 9 (0x09) | |
LOGIN_DOWNLOAD_FILE | 10 (0x0A) | |
FAIL_INVALID_SERVER | 11 (0x0B) | |
FAIL_SUSPENDED | 12 (0x0C) | |
FAIL_NO_ACCESS | 13 (0x0D) | |
SUCCESS_SURVEY | 14 (0x0E) | |
FAIL_PARENTALCONTROL | 15 (0x0F) |
Used in:
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_PROOF_Server
- CMD_AUTH_LOGON_PROOF_Server
- CMD_AUTH_RECONNECT_CHALLENGE_Server
- CMD_AUTH_RECONNECT_PROOF_Server
- CMD_AUTH_RECONNECT_PROOF_Server
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
Enumerator | Value | Comment |
---|---|---|
SUCCESS | 0 (0x00) | |
FAIL_UNKNOWN0 | 1 (0x01) | |
FAIL_UNKNOWN1 | 2 (0x02) | |
FAIL_BANNED | 3 (0x03) | |
FAIL_UNKNOWN_ACCOUNT | 4 (0x04) | |
FAIL_INCORRECT_PASSWORD | 5 (0x05) | |
FAIL_ALREADY_ONLINE | 6 (0x06) | |
FAIL_NO_TIME | 7 (0x07) | |
FAIL_DB_BUSY | 8 (0x08) | |
FAIL_VERSION_INVALID | 9 (0x09) | |
LOGIN_DOWNLOAD_FILE | 10 (0x0A) | |
FAIL_INVALID_SERVER | 11 (0x0B) | |
FAIL_SUSPENDED | 12 (0x0C) | |
FAIL_NO_ACCESS | 13 (0x0D) | |
SUCCESS_SURVEY | 14 (0x0E) | |
FAIL_PARENTALCONTROL | 15 (0x0F) | |
FAIL_LOCKED_ENFORCED | 16 (0x10) |
Used in:
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_PROOF_Server
- CMD_AUTH_RECONNECT_CHALLENGE_Server
- CMD_AUTH_RECONNECT_PROOF_Server
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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
PIN | 1 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
PIN | 1 (0x01) | |
MATRIX_CARD | 2 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
PIN | 1 (0x01) | |
MATRIX_CARD | 2 (0x02) | Matrix Card 2FA which requires a matrix card.https://forum.xentax.com/viewtopic.php?f=13&p=186022 |
AUTHENTICATOR | 4 (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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 32 / - | u8[32] | client_public_key | |
0x21 | 20 / - | u8[20] | client_proof | |
0x35 | 20 / - | u8[20] | crc_hash | |
0x49 | 1 / - | u8 | number_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 32 / - | u8[32] | client_public_key | |
0x21 | 20 / - | u8[20] | client_proof | |
0x35 | 20 / - | u8[20] | crc_hash | |
0x49 | 1 / - | u8 | number_of_telemetry_keys | |
0x4A | ? / - | TelemetryKey[number_of_telemetry_keys] | telemetry_keys | |
- | 1 / - | SecurityFlag | security_flag |
If security_flag is equal to PIN
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 32 / - | u8[32] | client_public_key | |
0x21 | 20 / - | u8[20] | client_proof | |
0x35 | 20 / - | u8[20] | crc_hash | |
0x49 | 1 / - | u8 | number_of_telemetry_keys | |
0x4A | ? / - | TelemetryKey[number_of_telemetry_keys] | telemetry_keys | |
- | 1 / - | SecurityFlag | security_flag |
If security_flag contains PIN
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 16 / - | u8[16] | pin_salt | |
- | 20 / - | u8[20] | pin_hash |
If security_flag contains MATRIX_CARD
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 20 / - | u8[20] | matrix_card_proof | Client 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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 32 / - | u8[32] | client_public_key | |
0x21 | 20 / - | u8[20] | client_proof | |
0x35 | 20 / - | u8[20] | crc_hash | |
0x49 | 1 / - | u8 | number_of_telemetry_keys | |
0x4A | ? / - | TelemetryKey[number_of_telemetry_keys] | telemetry_keys | |
- | 1 / - | SecurityFlag | security_flag |
If security_flag contains PIN
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 16 / - | u8[16] | pin_salt | |
- | 20 / - | u8[20] | pin_hash |
If security_flag contains MATRIX_CARD
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 20 / - | u8[20] | matrix_card_proof | Client proof of matrix input. Implementation details at https://gist.github.com/barncastle/979c12a9c5e64d810a28ad1728e7e0f9 . |
If security_flag contains AUTHENTICATOR
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | - / - | String | authenticator | String 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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
PIN | 1 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
PIN | 1 (0x01) | |
MATRIX_CARD | 2 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
PIN | 1 (0x01) | |
MATRIX_CARD | 2 (0x02) | Matrix Card 2FA which requires a matrix card.https://forum.xentax.com/viewtopic.php?f=13&p=186022 |
AUTHENTICATOR | 4 (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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 1 / - | LoginResult | result |
If result is equal to SUCCESS
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x02 | 20 / - | u8[20] | server_proof | |
0x16 | 4 / Little | u32 | hardware_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 1 / - | LoginResult | result |
If result is equal to SUCCESS
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x02 | 20 / - | u8[20] | server_proof | |
0x16 | 4 / Little | u32 | hardware_survey_id | |
0x1A | 2 / Little | u16 | unknown |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 1 / - | LoginResult | result |
If result is equal to SUCCESS
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x02 | 20 / - | u8[20] | server_proof | |
0x16 | 4 / - | AccountFlag | account_flag | |
0x1A | 4 / Little | u32 | hardware_survey_id | |
0x1E | 2 / Little | u16 | unknown |
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
Enumerator | Value | Comment |
---|---|---|
GM | 1 (0x01) | |
TRIAL | 8 (0x08) | |
PROPASS | 8388608 (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
Enumerator | Value | Comment |
---|---|---|
SUCCESS | 0 (0x00) | |
FAIL_UNKNOWN0 | 1 (0x01) | |
FAIL_UNKNOWN1 | 2 (0x02) | |
FAIL_BANNED | 3 (0x03) | |
FAIL_UNKNOWN_ACCOUNT | 4 (0x04) | |
FAIL_INCORRECT_PASSWORD | 5 (0x05) | |
FAIL_ALREADY_ONLINE | 6 (0x06) | |
FAIL_NO_TIME | 7 (0x07) | |
FAIL_DB_BUSY | 8 (0x08) | |
FAIL_VERSION_INVALID | 9 (0x09) | |
LOGIN_DOWNLOAD_FILE | 10 (0x0A) | |
FAIL_INVALID_SERVER | 11 (0x0B) | |
FAIL_SUSPENDED | 12 (0x0C) | |
FAIL_NO_ACCESS | 13 (0x0D) | |
SUCCESS_SURVEY | 14 (0x0E) | |
FAIL_PARENTALCONTROL | 15 (0x0F) |
Used in:
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_PROOF_Server
- CMD_AUTH_LOGON_PROOF_Server
- CMD_AUTH_RECONNECT_CHALLENGE_Server
- CMD_AUTH_RECONNECT_PROOF_Server
- CMD_AUTH_RECONNECT_PROOF_Server
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
Enumerator | Value | Comment |
---|---|---|
SUCCESS | 0 (0x00) | |
FAIL_UNKNOWN0 | 1 (0x01) | |
FAIL_UNKNOWN1 | 2 (0x02) | |
FAIL_BANNED | 3 (0x03) | |
FAIL_UNKNOWN_ACCOUNT | 4 (0x04) | |
FAIL_INCORRECT_PASSWORD | 5 (0x05) | |
FAIL_ALREADY_ONLINE | 6 (0x06) | |
FAIL_NO_TIME | 7 (0x07) | |
FAIL_DB_BUSY | 8 (0x08) | |
FAIL_VERSION_INVALID | 9 (0x09) | |
LOGIN_DOWNLOAD_FILE | 10 (0x0A) | |
FAIL_INVALID_SERVER | 11 (0x0B) | |
FAIL_SUSPENDED | 12 (0x0C) | |
FAIL_NO_ACCESS | 13 (0x0D) | |
SUCCESS_SURVEY | 14 (0x0E) | |
FAIL_PARENTALCONTROL | 15 (0x0F) | |
FAIL_LOCKED_ENFORCED | 16 (0x10) |
Used in:
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_PROOF_Server
- CMD_AUTH_RECONNECT_CHALLENGE_Server
- CMD_AUTH_RECONNECT_PROOF_Server
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 1 / - | ProtocolVersion | protocol_version | Determines which version of messages are used for further communication. |
0x02 | 2 / Little | u16 | size | |
0x04 | 4 / Little | u32 | game_name | |
0x08 | 5 / - | Version | version | |
0x0D | 4 / - | Platform | platform | |
0x11 | 4 / - | Os | os | |
0x15 | 4 / - | Locale | locale | |
0x19 | 4 / Little | i32 | utc_timezone_offset | Offset in minutes from UTC time. 180 would be UTC+3 |
0x1D | 4 / Big | IpAddress | client_ip_address | |
0x21 | - / - | String | account_name | Real 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
Enumerator | Value | Comment |
---|---|---|
EN_GB | 1701726018 (0x656E4742) | |
EN_US | 1701729619 (0x656E5553) | |
ES_MX | 1702055256 (0x65734D58) | |
PT_BR | 1886667346 (0x70744252) | |
FR_FR | 1718765138 (0x66724652) | |
DE_DE | 1684358213 (0x64654445) | |
ES_ES | 1702053203 (0x65734553) | |
PT_PT | 1886670932 (0x70745054) | |
IT_IT | 1769228628 (0x69744954) | |
RU_RU | 1920291413 (0x72755255) | |
KO_KR | 1802455890 (0x6B6F4B52) | |
ZH_TW | 2053657687 (0x7A685457) | |
EN_TW | 1701729367 (0x656E5457) | |
EN_CN | 1701725006 (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
Enumerator | Value | Comment |
---|---|---|
WINDOWS | 5728622 (0x57696E) | |
MAC_OS_X | 5198680 (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
Enumerator | Value | Comment |
---|---|---|
X86 | 7878710 (0x783836) | |
POWER_PC | 5263427 (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
Enumerator | Value | Comment |
---|---|---|
TWO | 2 (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 . |
THREE | 3 (0x03) | Used for login by 1.12.1.5875 , 2.0.0.6080 , and 2.0.1.6180 . |
FIVE | 5 (0x05) | Used for login and reconnect by 2.0.3.6299 . |
SIX | 6 (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 . |
SEVEN | 7 (0x07) | Used for login and reconnect by 2.3.0.7561 , 2.3.2.7741 , and 2.3.3.7799 . |
EIGHT | 8 (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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 1 / - | LoginResult | result |
If result is equal to SUCCESS
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x02 | 16 / - | u8[16] | challenge_data | |
0x12 | 16 / - | 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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 1 / - | LoginResult | result |
If result is equal to SUCCESS
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x02 | 16 / - | u8[16] | challenge_data | |
0x12 | 16 / - | 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
Enumerator | Value | Comment |
---|---|---|
SUCCESS | 0 (0x00) | |
FAIL_UNKNOWN0 | 1 (0x01) | |
FAIL_UNKNOWN1 | 2 (0x02) | |
FAIL_BANNED | 3 (0x03) | |
FAIL_UNKNOWN_ACCOUNT | 4 (0x04) | |
FAIL_INCORRECT_PASSWORD | 5 (0x05) | |
FAIL_ALREADY_ONLINE | 6 (0x06) | |
FAIL_NO_TIME | 7 (0x07) | |
FAIL_DB_BUSY | 8 (0x08) | |
FAIL_VERSION_INVALID | 9 (0x09) | |
LOGIN_DOWNLOAD_FILE | 10 (0x0A) | |
FAIL_INVALID_SERVER | 11 (0x0B) | |
FAIL_SUSPENDED | 12 (0x0C) | |
FAIL_NO_ACCESS | 13 (0x0D) | |
SUCCESS_SURVEY | 14 (0x0E) | |
FAIL_PARENTALCONTROL | 15 (0x0F) |
Used in:
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_PROOF_Server
- CMD_AUTH_LOGON_PROOF_Server
- CMD_AUTH_RECONNECT_CHALLENGE_Server
- CMD_AUTH_RECONNECT_PROOF_Server
- CMD_AUTH_RECONNECT_PROOF_Server
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
Enumerator | Value | Comment |
---|---|---|
SUCCESS | 0 (0x00) | |
FAIL_UNKNOWN0 | 1 (0x01) | |
FAIL_UNKNOWN1 | 2 (0x02) | |
FAIL_BANNED | 3 (0x03) | |
FAIL_UNKNOWN_ACCOUNT | 4 (0x04) | |
FAIL_INCORRECT_PASSWORD | 5 (0x05) | |
FAIL_ALREADY_ONLINE | 6 (0x06) | |
FAIL_NO_TIME | 7 (0x07) | |
FAIL_DB_BUSY | 8 (0x08) | |
FAIL_VERSION_INVALID | 9 (0x09) | |
LOGIN_DOWNLOAD_FILE | 10 (0x0A) | |
FAIL_INVALID_SERVER | 11 (0x0B) | |
FAIL_SUSPENDED | 12 (0x0C) | |
FAIL_NO_ACCESS | 13 (0x0D) | |
SUCCESS_SURVEY | 14 (0x0E) | |
FAIL_PARENTALCONTROL | 15 (0x0F) | |
FAIL_LOCKED_ENFORCED | 16 (0x10) |
Used in:
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_PROOF_Server
- CMD_AUTH_RECONNECT_CHALLENGE_Server
- CMD_AUTH_RECONNECT_PROOF_Server
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 16 / - | u8[16] | proof_data | |
0x11 | 20 / - | u8[20] | client_proof | |
0x25 | 20 / - | u8[20] | client_checksum | |
0x39 | 1 / - | u8 | key_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 1 / - | LoginResult | result |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 1 / - | LoginResult | result | |
0x02 | 2 / Little | u16 | padding |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 1 / - | LoginResult | result | |
0x02 | 2 / Little | u16 | padding |
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
Enumerator | Value | Comment |
---|---|---|
SUCCESS | 0 (0x00) | |
FAIL_UNKNOWN0 | 1 (0x01) | |
FAIL_UNKNOWN1 | 2 (0x02) | |
FAIL_BANNED | 3 (0x03) | |
FAIL_UNKNOWN_ACCOUNT | 4 (0x04) | |
FAIL_INCORRECT_PASSWORD | 5 (0x05) | |
FAIL_ALREADY_ONLINE | 6 (0x06) | |
FAIL_NO_TIME | 7 (0x07) | |
FAIL_DB_BUSY | 8 (0x08) | |
FAIL_VERSION_INVALID | 9 (0x09) | |
LOGIN_DOWNLOAD_FILE | 10 (0x0A) | |
FAIL_INVALID_SERVER | 11 (0x0B) | |
FAIL_SUSPENDED | 12 (0x0C) | |
FAIL_NO_ACCESS | 13 (0x0D) | |
SUCCESS_SURVEY | 14 (0x0E) | |
FAIL_PARENTALCONTROL | 15 (0x0F) |
Used in:
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_PROOF_Server
- CMD_AUTH_LOGON_PROOF_Server
- CMD_AUTH_RECONNECT_CHALLENGE_Server
- CMD_AUTH_RECONNECT_PROOF_Server
- CMD_AUTH_RECONNECT_PROOF_Server
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
Enumerator | Value | Comment |
---|---|---|
SUCCESS | 0 (0x00) | |
FAIL_UNKNOWN0 | 1 (0x01) | |
FAIL_UNKNOWN1 | 2 (0x02) | |
FAIL_BANNED | 3 (0x03) | |
FAIL_UNKNOWN_ACCOUNT | 4 (0x04) | |
FAIL_INCORRECT_PASSWORD | 5 (0x05) | |
FAIL_ALREADY_ONLINE | 6 (0x06) | |
FAIL_NO_TIME | 7 (0x07) | |
FAIL_DB_BUSY | 8 (0x08) | |
FAIL_VERSION_INVALID | 9 (0x09) | |
LOGIN_DOWNLOAD_FILE | 10 (0x0A) | |
FAIL_INVALID_SERVER | 11 (0x0B) | |
FAIL_SUSPENDED | 12 (0x0C) | |
FAIL_NO_ACCESS | 13 (0x0D) | |
SUCCESS_SURVEY | 14 (0x0E) | |
FAIL_PARENTALCONTROL | 15 (0x0F) | |
FAIL_LOCKED_ENFORCED | 16 (0x10) |
Used in:
- CMD_AUTH_LOGON_CHALLENGE_Server
- CMD_AUTH_LOGON_PROOF_Server
- CMD_AUTH_RECONNECT_CHALLENGE_Server
- CMD_AUTH_RECONNECT_PROOF_Server
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 4 / Little | u32 | padding |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 2 / Little | u16 | size | |
0x03 | 4 / Little | u32 | header_padding | |
0x07 | 1 / - | u8 | number_of_realms | |
0x08 | ? / - | Realm[number_of_realms] | realms | |
- | 2 / Little | u16 | footer_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 2 / Little | u16 | size | |
0x03 | 4 / Little | u32 | header_padding | |
0x07 | 1 / - | u8 | number_of_realms | |
0x08 | ? / - | Realm[number_of_realms] | realms | |
- | 2 / Little | u16 | footer_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 2 / Little | u16 | size | |
0x03 | 4 / Little | u32 | header_padding | |
0x07 | 2 / Little | u16 | number_of_realms | |
0x09 | ? / - | Realm[number_of_realms] | realms | |
- | 2 / Little | u16 | footer_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 2 / Little | u16 | size | |
0x03 | 4 / Little | u32 | header_padding | |
0x07 | 2 / Little | u16 | number_of_realms | |
0x09 | ? / - | Realm[number_of_realms] | realms | |
- | 2 / Little | u16 | footer_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
Enumerator | Value | Comment |
---|---|---|
DEFAULT | 0 (0x00) | |
ONE | 1 (0x01) | |
TWO | 2 (0x02) | |
THREE | 3 (0x03) | |
FIVE | 5 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
INVALID | 1 (0x01) | |
OFFLINE | 2 (0x02) | |
FORCE_BLUE_RECOMMENDED | 32 (0x20) | |
FORCE_GREEN_RECOMMENDED | 64 (0x40) | |
FORCE_RED_FULL | 128 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
INVALID | 1 (0x01) | |
OFFLINE | 2 (0x02) | |
SPECIFY_BUILD | 4 (0x04) | |
FORCE_BLUE_RECOMMENDED | 32 (0x20) | |
FORCE_GREEN_RECOMMENDED | 64 (0x40) | |
FORCE_RED_FULL | 128 (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
Enumerator | Value | Comment |
---|---|---|
PLAYER_VS_ENVIRONMENT | 0 (0x00) | |
PLAYER_VS_PLAYER | 1 (0x01) | |
ROLEPLAYING | 6 (0x06) | |
ROLEPLAYING_PLAYER_VS_PLAYER | 8 (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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 4 / Little | u32 | survey_id | |
0x05 | 1 / - | u8 | error | |
0x06 | 2 / Little | u16 | compressed_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode 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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode 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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 2 / Little | u16 | size | |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | - / - | String | filename | |
- | 8 / Little | u64 | file_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 8 / Little | u64 | offset |
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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 4 / - | RealmType | realm_type | |
0x04 | 1 / - | RealmFlag | flag | |
0x05 | - / - | CString | name | |
- | - / - | CString | address | |
- | 4 / Little | Population | population | |
- | 1 / - | u8 | number_of_characters_on_realm | |
- | 1 / - | RealmCategory | category | |
- | 1 / - | u8 | realm_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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 1 / - | RealmType | realm_type | |
0x01 | 1 / - | Bool | locked | |
0x02 | 1 / - | RealmFlag | flag | |
0x03 | - / - | CString | name | |
- | - / - | CString | address | |
- | 4 / Little | Population | population | |
- | 1 / - | u8 | number_of_characters_on_realm | |
- | 1 / - | RealmCategory | category | |
- | 1 / - | u8 | realm_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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 1 / - | RealmType | realm_type | vmangos: this is the second column in Cfg_Configs.dbc |
0x01 | 1 / - | Bool | locked | |
0x02 | 1 / - | RealmFlag | flag | |
0x03 | - / - | CString | name | |
- | - / - | CString | address | |
- | 4 / Little | Population | population | |
- | 1 / - | u8 | number_of_characters_on_realm | |
- | 1 / - | RealmCategory | category | |
- | 1 / - | u8 | realm_id |
If flag contains SPECIFY_BUILD
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 5 / - | Version | version |
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
Enumerator | Value | Comment |
---|---|---|
DEFAULT | 0 (0x00) | |
ONE | 1 (0x01) | |
TWO | 2 (0x02) | |
THREE | 3 (0x03) | |
FIVE | 5 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
INVALID | 1 (0x01) | |
OFFLINE | 2 (0x02) | |
FORCE_BLUE_RECOMMENDED | 32 (0x20) | |
FORCE_GREEN_RECOMMENDED | 64 (0x40) | |
FORCE_RED_FULL | 128 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
INVALID | 1 (0x01) | |
OFFLINE | 2 (0x02) | |
SPECIFY_BUILD | 4 (0x04) | |
FORCE_BLUE_RECOMMENDED | 32 (0x20) | |
FORCE_GREEN_RECOMMENDED | 64 (0x40) | |
FORCE_RED_FULL | 128 (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
Enumerator | Value | Comment |
---|---|---|
PLAYER_VS_ENVIRONMENT | 0 (0x00) | |
PLAYER_VS_PLAYER | 1 (0x01) | |
ROLEPLAYING | 6 (0x06) | |
ROLEPLAYING_PLAYER_VS_PLAYER | 8 (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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 2 / Little | u16 | unknown1 | |
0x02 | 4 / Little | u32 | unknown2 | |
0x06 | 4 / - | u8[4] | unknown3 | |
0x0A | 20 / - | u8[20] | cd_key_proof | SHA1 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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 1 / - | u8 | major | |
0x01 | 1 / - | u8 | minor | |
0x02 | 1 / - | u8 | patch | |
0x03 | 2 / Little | u16 | build |
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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 4 / Little | u32 | achievement | |
0x04 | 4 / Little | DateTime | time |
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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 4 / Little | u32 | achievement | |
0x04 | - / - | PackedGuid | counter | |
- | - / - | PackedGuid | player | |
- | 4 / Little | Bool32 | timed_criteria_failed | |
- | 4 / Little | DateTime | progress_date | |
- | 4 / Little | u32 | time_since_progress | |
- | 4 / Little | u32 | time_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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 2 / Little | u16 | action | |
0x02 | 1 / - | u8 | action_type | |
0x03 | 1 / - | u8 | misc |
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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | - / - | CString | addon_name | |
- | 1 / - | u8 | addon_has_signature | |
- | 4 / Little | u32 | addon_crc | |
- | 4 / Little | u32 | addon_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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 1 / - | u8 | addon_type | Other emus hardcode this to 2. More research is required |
0x01 | 1 / - | u8 | uses_crc | Other emus hardcode this to 1. |
0x02 | 1 / - | Bool | uses_diffent_public_key | |
0x03 | 4 / Little | u32 | unknown1 | Other emus hardcode this to 0 |
0x07 | 1 / - | u8 | unknown2 | Other 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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 8 / Little | Guid | guid | |
0x08 | 1 / - | Bool | online | |
0x09 | - / - | CString | name | |
- | 1 / - | Level | level | |
- | 1 / - | Class | class | |
- | 4 / Little | u32 | games_played_this_week | |
- | 4 / Little | u32 | wins_this_week | |
- | 4 / Little | u32 | games_played_this_season | |
- | 4 / Little | u32 | wins_this_season | |
- | 4 / Little | u32 | personal_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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 8 / Little | Guid | guid | |
0x08 | 1 / - | Bool | online | |
0x09 | - / - | CString | name | |
- | 1 / - | Level | level | |
- | 1 / - | Class | class | |
- | 4 / Little | u32 | games_played_this_week | |
- | 4 / Little | u32 | wins_this_week | |
- | 4 / Little | u32 | games_played_this_season | |
- | 4 / Little | u32 | wins_this_season | |
- | 4 / Little | u32 | personal_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
Enumerator | Value | Comment |
---|---|---|
WARRIOR | 1 (0x01) | |
PALADIN | 2 (0x02) | |
HUNTER | 3 (0x03) | |
ROGUE | 4 (0x04) | |
PRIEST | 5 (0x05) | |
SHAMAN | 7 (0x07) | |
MAGE | 8 (0x08) | |
WARLOCK | 9 (0x09) | |
DRUID | 11 (0x0B) |
Used in:
- ArenaTeamMember
- CMSG_CHAR_CREATE
- CMSG_CHAR_CREATE
- Character
- Character
- Friend
- GuildMember
- GuildMember
- Relation
- SMSG_NAME_QUERY_RESPONSE
- SMSG_NAME_QUERY_RESPONSE
- WhoPlayer
- WhoPlayer
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
Enumerator | Value | Comment |
---|---|---|
WARRIOR | 1 (0x01) | |
PALADIN | 2 (0x02) | |
HUNTER | 3 (0x03) | |
ROGUE | 4 (0x04) | |
PRIEST | 5 (0x05) | |
DEATH_KNIGHT | 6 (0x06) | |
SHAMAN | 7 (0x07) | |
MAGE | 8 (0x08) | |
WARLOCK | 9 (0x09) | |
DRUID | 11 (0x0B) |
Used in:
- ArenaTeamMember
- CMSG_CHAR_CREATE
- Character
- GuildMember
- LfgListPlayer
- Relation
- SMSG_MIRRORIMAGE_DATA
- SMSG_NAME_QUERY_RESPONSE
- WhoPlayer
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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 4 / Little | u32 | enchant_id | |
0x04 | 4 / Little | u32 | enchant_duration | |
0x08 | 4 / Little | u32 | enchant_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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 4 / Little | u32 | id | |
0x04 | 4 / Little | Item | item | |
0x08 | 4 / Little | u32 | item_enchantment | |
0x0C | 4 / Little | u32 | item_random_property_id | |
0x10 | 4 / Little | u32 | item_suffix_factor | |
0x14 | 4 / Little | u32 | item_count | |
0x18 | 4 / Little | u32 | item_charges | |
0x1C | 8 / Little | Guid | item_owner | |
0x24 | 4 / Little | u32 | start_bid | |
0x28 | 4 / Little | u32 | minimum_bid | |
0x2C | 4 / Little | u32 | buyout_amount | |
0x30 | 4 / Little | Milliseconds | time_left | |
0x34 | 8 / Little | Guid | highest_bidder | |
0x3C | 4 / Little | u32 | highest_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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 4 / Little | u32 | id | |
0x04 | 4 / Little | Item | item | |
0x08 | 72 / - | AuctionEnchantment[6] | enchantments | |
0x50 | 4 / Little | u32 | item_random_property_id | |
0x54 | 4 / Little | u32 | item_suffix_factor | |
0x58 | 4 / Little | u32 | item_count | |
0x5C | 4 / Little | u32 | item_charges | |
0x60 | 4 / Little | u32 | item_flags | mangosone: item flags (dynamic?) (0x04 no lockId?) |
0x64 | 8 / Little | Guid | item_owner | |
0x6C | 4 / Little | u32 | start_bid | |
0x70 | 4 / Little | u32 | minimum_bid | |
0x74 | 4 / Little | u32 | buyout_amount | |
0x78 | 4 / Little | Milliseconds | time_left | |
0x7C | 8 / Little | Guid | highest_bidder | |
0x84 | 4 / Little | u32 | highest_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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 4 / Little | u32 | id | |
0x04 | 4 / Little | Item | item | |
0x08 | 84 / - | AuctionEnchantment[7] | enchantments | |
0x5C | 4 / Little | u32 | item_random_property_id | |
0x60 | 4 / Little | u32 | item_suffix_factor | |
0x64 | 4 / Little | u32 | item_count | |
0x68 | 4 / Little | u32 | item_charges | |
0x6C | 4 / Little | u32 | item_flags | mangosone: item flags (dynamic?) (0x04 no lockId?) |
0x70 | 8 / Little | Guid | item_owner | |
0x78 | 4 / Little | u32 | start_bid | |
0x7C | 4 / Little | u32 | minimum_bid | |
0x80 | 4 / Little | u32 | buyout_amount | |
0x84 | 4 / Little | Milliseconds | time_left | |
0x88 | 8 / Little | Guid | highest_bidder | |
0x90 | 4 / Little | u32 | highest_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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 1 / - | u8 | column | |
0x01 | 1 / - | u8 | reversed |
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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 4 / - | AuraType | aura_type |
If aura_type is equal to PERIODIC_DAMAGE
or
is equal to PERIODIC_DAMAGE_PERCENT
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x04 | 4 / Little | u32 | damage1 | |
0x08 | 1 / - | SpellSchool | school | |
0x09 | 4 / Little | u32 | absorbed | |
0x0D | 4 / Little | u32 | resisted | vmangos: Sent as int32 |
Else If aura_type is equal to PERIODIC_HEAL
or
is equal to OBS_MOD_HEALTH
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x11 | 4 / Little | u32 | damage2 |
Else If aura_type is equal to OBS_MOD_MANA
or
is equal to PERIODIC_ENERGIZE
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x15 | 4 / Little | u32 | misc_value1 | vmangos: 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 |
0x19 | 4 / Little | u32 | damage3 |
Else If aura_type is equal to PERIODIC_MANA_LEECH
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x1D | 4 / Little | u32 | misc_value2 | vmangos: 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 |
0x21 | 4 / Little | u32 | damage | |
0x25 | 4 / Little | f32 | gain_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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 4 / - | AuraType | aura_type |
If aura_type is equal to PERIODIC_DAMAGE
or
is equal to PERIODIC_DAMAGE_PERCENT
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x04 | 4 / Little | u32 | damage1 | |
0x08 | 1 / - | SpellSchool | school | |
0x09 | 4 / Little | u32 | absorbed | |
0x0D | 4 / Little | u32 | resisted | vmangos: Sent as int32 |
Else If aura_type is equal to PERIODIC_HEAL
or
is equal to OBS_MOD_HEALTH
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x11 | 4 / Little | u32 | damage2 |
Else If aura_type is equal to OBS_MOD_MANA
or
is equal to PERIODIC_ENERGIZE
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x15 | 4 / Little | u32 | misc_value1 | vmangos: 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 |
0x19 | 4 / Little | u32 | damage3 |
Else If aura_type is equal to PERIODIC_MANA_LEECH
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x1D | 4 / Little | u32 | misc_value2 | vmangos: 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 |
0x21 | 4 / Little | u32 | damage | |
0x25 | 4 / Little | f32 | gain_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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 4 / - | AuraType | aura_type |
If aura_type is equal to PERIODIC_DAMAGE
or
is equal to PERIODIC_DAMAGE_PERCENT
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x04 | 4 / Little | u32 | damage1 | |
0x08 | 4 / Little | u32 | overkill_damage | |
0x0C | 1 / - | SpellSchool | school | |
0x0D | 4 / Little | u32 | absorb1 | |
0x11 | 4 / Little | u32 | resisted | vmangos: Sent as int32 |
0x15 | 1 / - | Bool | critical1 | new 3.1.2 critical tick |
Else If aura_type is equal to PERIODIC_HEAL
or
is equal to OBS_MOD_HEALTH
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x16 | 4 / Little | u32 | damage2 | |
0x1A | 4 / Little | u32 | over_damage | |
0x1E | 4 / Little | u32 | absorb2 | |
0x22 | 1 / - | Bool | critical2 | new 3.1.2 critical tick |
Else If aura_type is equal to OBS_MOD_POWER
or
is equal to PERIODIC_ENERGIZE
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x23 | 4 / Little | u32 | misc_value1 | vmangos: 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 |
0x27 | 4 / Little | u32 | damage3 |
Else If aura_type is equal to PERIODIC_MANA_LEECH
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x2B | 4 / Little | u32 | misc_value2 | vmangos: 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 |
0x2F | 4 / Little | u32 | damage4 | |
0x33 | 4 / Little | f32 | gain_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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
BIND_SIGHT | 1 (0x01) | |
MOD_POSSESS | 2 (0x02) | |
PERIODIC_DAMAGE | 3 (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 |
DUMMY | 4 (0x04) | vmangos: Used by Aura::HandleAuraDummy |
MOD_CONFUSE | 5 (0x05) | vmangos: Used by Aura::HandleModConfuse, will either confuse or unconfuse the target depending on whether the apply flag is set |
MOD_CHARM | 6 (0x06) | |
MOD_FEAR | 7 (0x07) | |
PERIODIC_HEAL | 8 (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_ATTACKSPEED | 9 (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_THREAT | 10 (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_TAUNT | 11 (0x0B) | vmangos: Just applies a taunt which will change the threat a mob has Taken care of in Aura::HandleModThreat |
MOD_STUN | 12 (0x0C) | vmangos: Stuns targets in different ways, taken care of in Aura::HandleAuraModStun |
MOD_DAMAGE_DONE | 13 (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_TAKEN | 14 (0x0E) | vmangos: Not handled by the Aura class but instead this is implemented in Unit::MeleeDamageBonusTaken and Unit::SpellBaseDamageBonusTaken |
DAMAGE_SHIELD | 15 (0x0F) | vmangos: Not handled by the Aura class, implemented in Unit::DealMeleeDamage |
MOD_STEALTH | 16 (0x10) | vmangos: Taken care of in Aura::HandleModStealth, take note that this is not the same thing as invisibility |
MOD_STEALTH_DETECT | 17 (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_INVISIBILITY | 18 (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_DETECTION | 19 (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_HEALTH | 20 (0x14) | 20,21 unofficial |
OBS_MOD_MANA | 21 (0x15) | |
MOD_RESISTANCE | 22 (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_SPELL | 23 (0x17) | vmangos: Currently just sets Aura::m_isPeriodic to apply and has a special case for Curse of the Plaguebringer. |
PERIODIC_ENERGIZE | 24 (0x18) | vmangos: Just sets Aura::m_isPeriodic to apply |
MOD_PACIFY | 25 (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_ROOT | 26 (0x1A) | vmangos: Roots or unroots the target |
MOD_SILENCE | 27 (0x1B) | vmangos: Silences the target and stops and spell casts that should be stopped, they have the flag SpellPreventionType::SPELL_PREVENTION_TYPE_SILENCE |
REFLECT_SPELLS | 28 (0x1C) | |
MOD_STAT | 29 (0x1D) | |
MOD_SKILL | 30 (0x1E) | |
MOD_INCREASE_SPEED | 31 (0x1F) | |
MOD_INCREASE_MOUNTED_SPEED | 32 (0x20) | |
MOD_DECREASE_SPEED | 33 (0x21) | |
MOD_INCREASE_HEALTH | 34 (0x22) | |
MOD_INCREASE_ENERGY | 35 (0x23) | |
MOD_SHAPESHIFT | 36 (0x24) | |
EFFECT_IMMUNITY | 37 (0x25) | |
STATE_IMMUNITY | 38 (0x26) | |
SCHOOL_IMMUNITY | 39 (0x27) | |
DAMAGE_IMMUNITY | 40 (0x28) | |
DISPEL_IMMUNITY | 41 (0x29) | |
PROC_TRIGGER_SPELL | 42 (0x2A) | |
PROC_TRIGGER_DAMAGE | 43 (0x2B) | |
TRACK_CREATURES | 44 (0x2C) | |
TRACK_RESOURCES | 45 (0x2D) | |
UNKNOWN46 | 46 (0x2E) | Ignore all Gear test spells |
MOD_PARRY_PERCENT | 47 (0x2F) | |
UNKNOWN48 | 48 (0x30) | One periodic spell |
MOD_DODGE_PERCENT | 49 (0x31) | |
MOD_BLOCK_SKILL | 50 (0x32) | |
MOD_BLOCK_PERCENT | 51 (0x33) | |
MOD_CRIT_PERCENT | 52 (0x34) | |
PERIODIC_LEECH | 53 (0x35) | |
MOD_HIT_CHANCE | 54 (0x36) | |
MOD_SPELL_HIT_CHANCE | 55 (0x37) | |
TRANSFORM | 56 (0x38) | |
MOD_SPELL_CRIT_CHANCE | 57 (0x39) | |
MOD_INCREASE_SWIM_SPEED | 58 (0x3A) | |
MOD_DAMAGE_DONE_CREATURE | 59 (0x3B) | |
MOD_PACIFY_SILENCE | 60 (0x3C) | |
MOD_SCALE | 61 (0x3D) | |
PERIODIC_HEALTH_FUNNEL | 62 (0x3E) | |
PERIODIC_MANA_FUNNEL | 63 (0x3F) | |
PERIODIC_MANA_LEECH | 64 (0x40) | |
MOD_CASTING_SPEED_NOT_STACK | 65 (0x41) | |
FEIGN_DEATH | 66 (0x42) | |
MOD_DISARM | 67 (0x43) | |
MOD_STALKED | 68 (0x44) | |
SCHOOL_ABSORB | 69 (0x45) | |
EXTRA_ATTACKS | 70 (0x46) | |
MOD_SPELL_CRIT_CHANCE_SCHOOL | 71 (0x47) | |
MOD_POWER_COST_SCHOOL_PCT | 72 (0x48) | |
MOD_POWER_COST_SCHOOL | 73 (0x49) | |
REFLECT_SPELLS_SCHOOL | 74 (0x4A) | |
MOD_LANGUAGE | 75 (0x4B) | |
FAR_SIGHT | 76 (0x4C) | |
MECHANIC_IMMUNITY | 77 (0x4D) | |
MOUNTED | 78 (0x4E) | |
MOD_DAMAGE_PERCENT_DONE | 79 (0x4F) | |
MOD_PERCENT_STAT | 80 (0x50) | |
SPLIT_DAMAGE_PCT | 81 (0x51) | |
WATER_BREATHING | 82 (0x52) | |
MOD_BASE_RESISTANCE | 83 (0x53) | |
MOD_REGEN | 84 (0x54) | |
MOD_POWER_REGEN | 85 (0x55) | |
CHANNEL_DEATH_ITEM | 86 (0x56) | |
MOD_DAMAGE_PERCENT_TAKEN | 87 (0x57) | |
MOD_HEALTH_REGEN_PERCENT | 88 (0x58) | |
PERIODIC_DAMAGE_PERCENT | 89 (0x59) | |
MOD_RESIST_CHANCE | 90 (0x5A) | |
MOD_DETECT_RANGE | 91 (0x5B) | |
PREVENTS_FLEEING | 92 (0x5C) | |
MOD_UNATTACKABLE | 93 (0x5D) | |
INTERRUPT_REGEN | 94 (0x5E) | |
GHOST | 95 (0x5F) | |
SPELL_MAGNET | 96 (0x60) | |
MANA_SHIELD | 97 (0x61) | |
MOD_SKILL_TALENT | 98 (0x62) | |
MOD_ATTACK_POWER | 99 (0x63) | |
AURAS_VISIBLE | 100 (0x64) | |
MOD_RESISTANCE_PCT | 101 (0x65) | |
MOD_MELEE_ATTACK_POWER_VERSUS | 102 (0x66) | |
MOD_TOTAL_THREAT | 103 (0x67) | |
WATER_WALK | 104 (0x68) | |
FEATHER_FALL | 105 (0x69) | |
HOVER | 106 (0x6A) | |
ADD_FLAT_MODIFIER | 107 (0x6B) | |
ADD_PCT_MODIFIER | 108 (0x6C) | |
ADD_TARGET_TRIGGER | 109 (0x6D) | |
MOD_POWER_REGEN_PERCENT | 110 (0x6E) | |
ADD_CASTER_HIT_TRIGGER | 111 (0x6F) | |
OVERRIDE_CLASS_SCRIPTS | 112 (0x70) | |
MOD_RANGED_DAMAGE_TAKEN | 113 (0x71) | |
MOD_RANGED_DAMAGE_TAKEN_PCT | 114 (0x72) | |
MOD_HEALING | 115 (0x73) | |
MOD_REGEN_DURING_COMBAT | 116 (0x74) | |
MOD_MECHANIC_RESISTANCE | 117 (0x75) | |
MOD_HEALING_PCT | 118 (0x76) | |
SHARE_PET_TRACKING | 119 (0x77) | |
UNTRACKABLE | 120 (0x78) | |
EMPATHY | 121 (0x79) | |
MOD_OFFHAND_DAMAGE_PCT | 122 (0x7A) | |
MOD_TARGET_RESISTANCE | 123 (0x7B) | |
MOD_RANGED_ATTACK_POWER | 124 (0x7C) | |
MOD_MELEE_DAMAGE_TAKEN | 125 (0x7D) | |
MOD_MELEE_DAMAGE_TAKEN_PCT | 126 (0x7E) | |
RANGED_ATTACK_POWER_ATTACKER_BONUS | 127 (0x7F) | |
MOD_POSSESS_PET | 128 (0x80) | |
MOD_SPEED_ALWAYS | 129 (0x81) | |
MOD_MOUNTED_SPEED_ALWAYS | 130 (0x82) | |
MOD_RANGED_ATTACK_POWER_VERSUS | 131 (0x83) | |
MOD_INCREASE_ENERGY_PERCENT | 132 (0x84) | |
MOD_INCREASE_HEALTH_PERCENT | 133 (0x85) | |
MOD_MANA_REGEN_INTERRUPT | 134 (0x86) | |
MOD_HEALING_DONE | 135 (0x87) | |
MOD_HEALING_DONE_PERCENT | 136 (0x88) | |
MOD_TOTAL_STAT_PERCENTAGE | 137 (0x89) | |
MOD_MELEE_HASTE | 138 (0x8A) | |
FORCE_REACTION | 139 (0x8B) | |
MOD_RANGED_HASTE | 140 (0x8C) | |
MOD_RANGED_AMMO_HASTE | 141 (0x8D) | |
MOD_BASE_RESISTANCE_PCT | 142 (0x8E) | |
MOD_RESISTANCE_EXCLUSIVE | 143 (0x8F) | |
SAFE_FALL | 144 (0x90) | |
CHARISMA | 145 (0x91) | |
PERSUADED | 146 (0x92) | |
MECHANIC_IMMUNITY_MASK | 147 (0x93) | |
RETAIN_COMBO_POINTS | 148 (0x94) | |
RESIST_PUSHBACK | 149 (0x95) | Resist Pushback |
MOD_SHIELD_BLOCKVALUE_PCT | 150 (0x96) | |
TRACK_STEALTHED | 151 (0x97) | Track Stealthed |
MOD_DETECTED_RANGE | 152 (0x98) | Mod Detected Range |
SPLIT_DAMAGE_FLAT | 153 (0x99) | Split Damage Flat |
MOD_STEALTH_LEVEL | 154 (0x9A) | Stealth Level Modifier |
MOD_WATER_BREATHING | 155 (0x9B) | Mod Water Breathing |
MOD_REPUTATION_GAIN | 156 (0x9C) | Mod Reputation Gain |
PET_DAMAGE_MULTI | 157 (0x9D) | Mod Pet Damage |
MOD_SHIELD_BLOCKVALUE | 158 (0x9E) | |
NO_PVP_CREDIT | 159 (0x9F) | |
MOD_AOE_AVOIDANCE | 160 (0xA0) | |
MOD_HEALTH_REGEN_IN_COMBAT | 161 (0xA1) | |
POWER_BURN_MANA | 162 (0xA2) | |
MOD_CRIT_DAMAGE_BONUS | 163 (0xA3) | |
UNKNOWN164 | 164 (0xA4) | |
MELEE_ATTACK_POWER_ATTACKER_BONUS | 165 (0xA5) | |
MOD_ATTACK_POWER_PCT | 166 (0xA6) | |
MOD_RANGED_ATTACK_POWER_PCT | 167 (0xA7) | |
MOD_DAMAGE_DONE_VERSUS | 168 (0xA8) | |
MOD_CRIT_PERCENT_VERSUS | 169 (0xA9) | |
DETECT_AMORE | 170 (0xAA) | |
MOD_SPEED_NOT_STACK | 171 (0xAB) | |
MOD_MOUNTED_SPEED_NOT_STACK | 172 (0xAC) | |
ALLOW_CHAMPION_SPELLS | 173 (0xAD) | |
MOD_SPELL_DAMAGE_OF_STAT_PERCENT | 174 (0xAE) | in 1.12.1 only dependent spirit case |
MOD_SPELL_HEALING_OF_STAT_PERCENT | 175 (0xAF) | |
SPIRIT_OF_REDEMPTION | 176 (0xB0) | |
AOE_CHARM | 177 (0xB1) | |
MOD_DEBUFF_RESISTANCE | 178 (0xB2) | |
MOD_ATTACKER_SPELL_CRIT_CHANCE | 179 (0xB3) | |
MOD_FLAT_SPELL_DAMAGE_VERSUS | 180 (0xB4) | |
MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS | 181 (0xB5) | unused - possible flat spell crit damage versus |
MOD_RESISTANCE_OF_STAT_PERCENT | 182 (0xB6) | |
MOD_CRITICAL_THREAT | 183 (0xB7) | |
MOD_ATTACKER_MELEE_HIT_CHANCE | 184 (0xB8) | |
MOD_ATTACKER_RANGED_HIT_CHANCE | 185 (0xB9) | |
MOD_ATTACKER_SPELL_HIT_CHANCE | 186 (0xBA) | |
MOD_ATTACKER_MELEE_CRIT_CHANCE | 187 (0xBB) | |
MOD_ATTACKER_RANGED_CRIT_CHANCE | 188 (0xBC) | |
MOD_RATING | 189 (0xBD) | |
MOD_FACTION_REPUTATION_GAIN | 190 (0xBE) | |
USE_NORMAL_MOVEMENT_SPEED | 191 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
BIND_SIGHT | 1 (0x01) | |
MOD_POSSESS | 2 (0x02) | |
PERIODIC_DAMAGE | 3 (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 . |
DUMMY | 4 (0x04) | Used by \ref Aura::HandleAuraDummy |
MOD_CONFUSE | 5 (0x05) | Used by Aura::HandleModConfuse , will either confuse or unconfuse the target depending on whether the apply flag is set |
MOD_CHARM | 6 (0x06) | |
MOD_FEAR | 7 (0x07) | |
PERIODIC_HEAL | 8 (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_ATTACKSPEED | 9 (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_THREAT | 10 (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_TAUNT | 11 (0x0B) | Just applies a taunt which will change the threat a mob has taken care of in Aura::HandleModThreat |
MOD_STUN | 12 (0x0C) | Stuns targets in different ways, taken care of in Aura::HandleAuraModStun |
MOD_DAMAGE_DONE | 13 (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_TAKEN | 14 (0x0E) | Not handled by the Aura class but instead this is implemented in Unit::MeleeDamageBonusTaken and Unit::SpellBaseDamageBonusTaken |
DAMAGE_SHIELD | 15 (0x0F) | Not handled by the Aura class, implemented in Unit::DealMeleeDamage |
MOD_STEALTH | 16 (0x10) | Taken care of in Aura::HandleModStealth , take note that this is not the same thing as invisibility |
MOD_STEALTH_DETECT | 17 (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_INVISIBILITY | 18 (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_DETECTION | 19 (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_HEALTH | 20 (0x14) | unofficial |
OBS_MOD_MANA | 21 (0x15) | unofficial |
MOD_RESISTANCE | 22 (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_SPELL | 23 (0x17) | Currently just sets Aura::m_isPeriodic to apply and has a special case for Curse of the Plaguebringer. |
PERIODIC_ENERGIZE | 24 (0x18) | Just sets Aura::m_isPeriodic to apply |
MOD_PACIFY | 25 (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_ROOT | 26 (0x1A) | Roots or unroots the target |
MOD_SILENCE | 27 (0x1B) | Silences the target and stops and spell casts that should be stopped, they have the flag SpellPreventionType::SPELL_PREVENTION_TYPE_SILENCE |
REFLECT_SPELLS | 28 (0x1C) | |
MOD_STAT | 29 (0x1D) | |
MOD_SKILL | 30 (0x1E) | |
MOD_INCREASE_SPEED | 31 (0x1F) | |
MOD_INCREASE_MOUNTED_SPEED | 32 (0x20) | |
MOD_DECREASE_SPEED | 33 (0x21) | |
MOD_INCREASE_HEALTH | 34 (0x22) | |
MOD_INCREASE_ENERGY | 35 (0x23) | |
MOD_SHAPESHIFT | 36 (0x24) | |
EFFECT_IMMUNITY | 37 (0x25) | |
STATE_IMMUNITY | 38 (0x26) | |
SCHOOL_IMMUNITY | 39 (0x27) | |
DAMAGE_IMMUNITY | 40 (0x28) | |
DISPEL_IMMUNITY | 41 (0x29) | |
PROC_TRIGGER_SPELL | 42 (0x2A) | |
PROC_TRIGGER_DAMAGE | 43 (0x2B) | |
TRACK_CREATURES | 44 (0x2C) | |
TRACK_RESOURCES | 45 (0x2D) | |
UNKNOWN46 | 46 (0x2E) | Ignore all Gear test spells |
MOD_PARRY_PERCENT | 47 (0x2F) | |
UNKNOWN48 | 48 (0x30) | One periodic spell |
MOD_DODGE_PERCENT | 49 (0x31) | |
MOD_BLOCK_SKILL | 50 (0x32) | |
MOD_BLOCK_PERCENT | 51 (0x33) | |
MOD_CRIT_PERCENT | 52 (0x34) | |
PERIODIC_LEECH | 53 (0x35) | |
MOD_HIT_CHANCE | 54 (0x36) | |
MOD_SPELL_HIT_CHANCE | 55 (0x37) | |
TRANSFORM | 56 (0x38) | |
MOD_SPELL_CRIT_CHANCE | 57 (0x39) | |
MOD_INCREASE_SWIM_SPEED | 58 (0x3A) | |
MOD_DAMAGE_DONE_CREATURE | 59 (0x3B) | |
MOD_PACIFY_SILENCE | 60 (0x3C) | |
MOD_SCALE | 61 (0x3D) | |
PERIODIC_HEALTH_FUNNEL | 62 (0x3E) | |
PERIODIC_MANA_FUNNEL | 63 (0x3F) | |
PERIODIC_MANA_LEECH | 64 (0x40) | |
MOD_CASTING_SPEED_NOT_STACK | 65 (0x41) | |
FEIGN_DEATH | 66 (0x42) | |
MOD_DISARM | 67 (0x43) | |
MOD_STALKED | 68 (0x44) | |
SCHOOL_ABSORB | 69 (0x45) | |
EXTRA_ATTACKS | 70 (0x46) | |
MOD_SPELL_CRIT_CHANCE_SCHOOL | 71 (0x47) | |
MOD_POWER_COST_SCHOOL_PCT | 72 (0x48) | |
MOD_POWER_COST_SCHOOL | 73 (0x49) | |
REFLECT_SPELLS_SCHOOL | 74 (0x4A) | |
MOD_LANGUAGE | 75 (0x4B) | |
FAR_SIGHT | 76 (0x4C) | |
MECHANIC_IMMUNITY | 77 (0x4D) | |
MOUNTED | 78 (0x4E) | |
MOD_DAMAGE_PERCENT_DONE | 79 (0x4F) | |
MOD_PERCENT_STAT | 80 (0x50) | |
SPLIT_DAMAGE_PCT | 81 (0x51) | |
WATER_BREATHING | 82 (0x52) | |
MOD_BASE_RESISTANCE | 83 (0x53) | |
MOD_REGEN | 84 (0x54) | |
MOD_POWER_REGEN | 85 (0x55) | |
CHANNEL_DEATH_ITEM | 86 (0x56) | |
MOD_DAMAGE_PERCENT_TAKEN | 87 (0x57) | |
MOD_HEALTH_REGEN_PERCENT | 88 (0x58) | |
PERIODIC_DAMAGE_PERCENT | 89 (0x59) | |
MOD_RESIST_CHANCE | 90 (0x5A) | |
MOD_DETECT_RANGE | 91 (0x5B) | |
PREVENTS_FLEEING | 92 (0x5C) | |
MOD_UNATTACKABLE | 93 (0x5D) | |
INTERRUPT_REGEN | 94 (0x5E) | |
GHOST | 95 (0x5F) | |
SPELL_MAGNET | 96 (0x60) | |
MANA_SHIELD | 97 (0x61) | |
MOD_SKILL_TALENT | 98 (0x62) | |
MOD_ATTACK_POWER | 99 (0x63) | |
AURAS_VISIBLE | 100 (0x64) | |
MOD_RESISTANCE_PCT | 101 (0x65) | |
MOD_MELEE_ATTACK_POWER_VERSUS | 102 (0x66) | |
MOD_TOTAL_THREAT | 103 (0x67) | |
WATER_WALK | 104 (0x68) | |
FEATHER_FALL | 105 (0x69) | |
HOVER | 106 (0x6A) | |
ADD_FLAT_MODIFIER | 107 (0x6B) | |
ADD_PCT_MODIFIER | 108 (0x6C) | |
ADD_TARGET_TRIGGER | 109 (0x6D) | |
MOD_POWER_REGEN_PERCENT | 110 (0x6E) | |
ADD_CASTER_HIT_TRIGGER | 111 (0x6F) | |
OVERRIDE_CLASS_SCRIPTS | 112 (0x70) | |
MOD_RANGED_DAMAGE_TAKEN | 113 (0x71) | |
MOD_RANGED_DAMAGE_TAKEN_PCT | 114 (0x72) | |
MOD_HEALING | 115 (0x73) | |
MOD_REGEN_DURING_COMBAT | 116 (0x74) | |
MOD_MECHANIC_RESISTANCE | 117 (0x75) | |
MOD_HEALING_PCT | 118 (0x76) | |
SHARE_PET_TRACKING | 119 (0x77) | |
UNTRACKABLE | 120 (0x78) | |
EMPATHY | 121 (0x79) | |
MOD_OFFHAND_DAMAGE_PCT | 122 (0x7A) | |
MOD_TARGET_RESISTANCE | 123 (0x7B) | |
MOD_RANGED_ATTACK_POWER | 124 (0x7C) | |
MOD_MELEE_DAMAGE_TAKEN | 125 (0x7D) | |
MOD_MELEE_DAMAGE_TAKEN_PCT | 126 (0x7E) | |
RANGED_ATTACK_POWER_ATTACKER_BONUS | 127 (0x7F) | |
MOD_POSSESS_PET | 128 (0x80) | |
MOD_SPEED_ALWAYS | 129 (0x81) | |
MOD_MOUNTED_SPEED_ALWAYS | 130 (0x82) | |
MOD_RANGED_ATTACK_POWER_VERSUS | 131 (0x83) | |
MOD_INCREASE_ENERGY_PERCENT | 132 (0x84) | |
MOD_INCREASE_HEALTH_PERCENT | 133 (0x85) | |
MOD_MANA_REGEN_INTERRUPT | 134 (0x86) | |
MOD_HEALING_DONE | 135 (0x87) | |
MOD_HEALING_DONE_PERCENT | 136 (0x88) | |
MOD_TOTAL_STAT_PERCENTAGE | 137 (0x89) | |
MOD_MELEE_HASTE | 138 (0x8A) | |
FORCE_REACTION | 139 (0x8B) | |
MOD_RANGED_HASTE | 140 (0x8C) | |
MOD_RANGED_AMMO_HASTE | 141 (0x8D) | |
MOD_BASE_RESISTANCE_PCT | 142 (0x8E) | |
MOD_RESISTANCE_EXCLUSIVE | 143 (0x8F) | |
SAFE_FALL | 144 (0x90) | |
CHARISMA | 145 (0x91) | |
PERSUADED | 146 (0x92) | |
MECHANIC_IMMUNITY_MASK | 147 (0x93) | |
RETAIN_COMBO_POINTS | 148 (0x94) | |
RESIST_PUSHBACK | 149 (0x95) | Resist Pushback |
MOD_SHIELD_BLOCKVALUE_PCT | 150 (0x96) | |
TRACK_STEALTHED | 151 (0x97) | Track Stealthed |
MOD_DETECTED_RANGE | 152 (0x98) | Mod Detected Range |
SPLIT_DAMAGE_FLAT | 153 (0x99) | Split Damage Flat |
MOD_STEALTH_LEVEL | 154 (0x9A) | Stealth Level Modifier |
MOD_WATER_BREATHING | 155 (0x9B) | Mod Water Breathing |
MOD_REPUTATION_GAIN | 156 (0x9C) | Mod Reputation Gain |
PET_DAMAGE_MULTI | 157 (0x9D) | Mod Pet Damage |
MOD_SHIELD_BLOCKVALUE | 158 (0x9E) | |
NO_PVP_CREDIT | 159 (0x9F) | |
MOD_AOE_AVOIDANCE | 160 (0xA0) | Reduces the hit chance for AOE spells |
MOD_HEALTH_REGEN_IN_COMBAT | 161 (0xA1) | |
POWER_BURN_MANA | 162 (0xA2) | |
MOD_CRIT_DAMAGE_BONUS | 163 (0xA3) | |
UNKNOWN164 | 164 (0xA4) | |
MELEE_ATTACK_POWER_ATTACKER_BONUS | 165 (0xA5) | |
MOD_ATTACK_POWER_PCT | 166 (0xA6) | |
MOD_RANGED_ATTACK_POWER_PCT | 167 (0xA7) | |
MOD_DAMAGE_DONE_VERSUS | 168 (0xA8) | |
MOD_CRIT_PERCENT_VERSUS | 169 (0xA9) | |
DETECT_AMORE | 170 (0xAA) | |
MOD_SPEED_NOT_STACK | 171 (0xAB) | |
MOD_MOUNTED_SPEED_NOT_STACK | 172 (0xAC) | |
ALLOW_CHAMPION_SPELLS | 173 (0xAD) | |
MOD_SPELL_DAMAGE_OF_STAT_PERCENT | 174 (0xAE) | by defeult intelect, dependent from MOD_SPELL_HEALING_OF_STAT_PERCENT |
MOD_SPELL_HEALING_OF_STAT_PERCENT | 175 (0xAF) | |
SPIRIT_OF_REDEMPTION | 176 (0xB0) | |
AOE_CHARM | 177 (0xB1) | |
MOD_DEBUFF_RESISTANCE | 178 (0xB2) | |
MOD_ATTACKER_SPELL_CRIT_CHANCE | 179 (0xB3) | |
MOD_FLAT_SPELL_DAMAGE_VERSUS | 180 (0xB4) | |
MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS | 181 (0xB5) | unused - possible flat spell crit damage versus |
MOD_RESISTANCE_OF_STAT_PERCENT | 182 (0xB6) | |
MOD_CRITICAL_THREAT | 183 (0xB7) | |
MOD_ATTACKER_MELEE_HIT_CHANCE | 184 (0xB8) | |
MOD_ATTACKER_RANGED_HIT_CHANCE | 185 (0xB9) | |
MOD_ATTACKER_SPELL_HIT_CHANCE | 186 (0xBA) | |
MOD_ATTACKER_MELEE_CRIT_CHANCE | 187 (0xBB) | |
MOD_ATTACKER_RANGED_CRIT_CHANCE | 188 (0xBC) | |
MOD_RATING | 189 (0xBD) | |
MOD_FACTION_REPUTATION_GAIN | 190 (0xBE) | |
USE_NORMAL_MOVEMENT_SPEED | 191 (0xBF) | |
MOD_MELEE_RANGED_HASTE | 192 (0xC0) | |
HASTE_ALL | 193 (0xC1) | |
MOD_DEPRICATED_1 | 194 (0xC2) | not used now, old MOD_SPELL_DAMAGE_OF_INTELLECT |
MOD_DEPRICATED_2 | 195 (0xC3) | not used now, old MOD_SPELL_HEALING_OF_INTELLECT |
MOD_COOLDOWN | 196 (0xC4) | only 24818 Noxious Breath |
MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE | 197 (0xC5) | |
MOD_ALL_WEAPON_SKILLS | 198 (0xC6) | |
MOD_INCREASES_SPELL_PCT_TO_HIT | 199 (0xC7) | |
MOD_XP_PCT | 200 (0xC8) | |
FLY | 201 (0xC9) | |
IGNORE_COMBAT_RESULT | 202 (0xCA) | |
MOD_ATTACKER_MELEE_CRIT_DAMAGE | 203 (0xCB) | |
MOD_ATTACKER_RANGED_CRIT_DAMAGE | 204 (0xCC) | |
MOD_ATTACKER_SPELL_CRIT_DAMAGE | 205 (0xCD) | |
MOD_FLIGHT_SPEED | 206 (0xCE) | |
MOD_FLIGHT_SPEED_MOUNTED | 207 (0xCF) | |
MOD_FLIGHT_SPEED_STACKING | 208 (0xD0) | |
MOD_FLIGHT_SPEED_MOUNTED_STACKING | 209 (0xD1) | |
MOD_FLIGHT_SPEED_NOT_STACKING | 210 (0xD2) | |
MOD_FLIGHT_SPEED_MOUNTED_NOT_STACKING | 211 (0xD3) | |
MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT | 212 (0xD4) | |
MOD_RAGE_FROM_DAMAGE_DEALT | 213 (0xD5) | |
UNKNOWN214 | 214 (0xD6) | |
ARENA_PREPARATION | 215 (0xD7) | |
HASTE_SPELLS | 216 (0xD8) | |
UNKNOWN217 | 217 (0xD9) | |
HASTE_RANGED | 218 (0xDA) | |
MOD_MANA_REGEN_FROM_STAT | 219 (0xDB) | |
MOD_RATING_FROM_STAT | 220 (0xDC) | |
UNKNOWN221 | 221 (0xDD) | |
UNKNOWN222 | 222 (0xDE) | |
UNKNOWN223 | 223 (0xDF) | |
UNKNOWN224 | 224 (0xE0) | |
PRAYER_OF_MENDING | 225 (0xE1) | |
PERIODIC_DUMMY | 226 (0xE2) | |
PERIODIC_TRIGGER_SPELL_WITH_VALUE | 227 (0xE3) | |
DETECT_STEALTH | 228 (0xE4) | |
MOD_AOE_DAMAGE_AVOIDANCE | 229 (0xE5) | |
UNKNOWN230 | 230 (0xE6) | |
PROC_TRIGGER_SPELL_WITH_VALUE | 231 (0xE7) | |
MECHANIC_DURATION_MOD | 232 (0xE8) | |
UNKNOWN233 | 233 (0xE9) | |
MECHANIC_DURATION_MOD_NOT_STACK | 234 (0xEA) | |
MOD_DISPEL_RESIST | 235 (0xEB) | |
UNKNOWN236 | 236 (0xEC) | |
MOD_SPELL_DAMAGE_OF_ATTACK_POWER | 237 (0xED) | |
MOD_SPELL_HEALING_OF_ATTACK_POWER | 238 (0xEE) | |
MOD_SCALE_2 | 239 (0xEF) | |
MOD_EXPERTISE | 240 (0xF0) | |
FORCE_MOVE_FORWARD | 241 (0xF1) | |
UNKNOWN242 | 242 (0xF2) | |
UNKNOWN243 | 243 (0xF3) | |
COMPREHEND_LANGUAGE | 244 (0xF4) | |
UNKNOWN245 | 245 (0xF5) | |
UNKNOWN246 | 246 (0xF6) | |
MIRROR_IMAGE | 247 (0xF7) | |
MOD_COMBAT_RESULT_CHANCE | 248 (0xF8) | |
UNKNOWN249 | 249 (0xF9) | |
MOD_INCREASE_HEALTH_2 | 250 (0xFA) | |
MOD_ENEMY_DODGE | 251 (0xFB) | |
UNKNOWN252 | 252 (0xFC) | |
UNKNOWN253 | 253 (0xFD) | |
UNKNOWN254 | 254 (0xFE) | |
UNKNOWN255 | 255 (0xFF) | |
UNKNOWN256 | 256 (0x100) | |
UNKNOWN257 | 257 (0x101) | |
UNKNOWN258 | 258 (0x102) | |
UNKNOWN259 | 259 (0x103) | |
UNKNOWN260 | 260 (0x104) | |
UNKNOWN261 | 261 (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
Enumerator | Value | Comment |
---|---|---|
NONE | 0 (0x00) | |
BIND_SIGHT | 1 (0x01) | |
MOD_POSSESS | 2 (0x02) | |
PERIODIC_DAMAGE | 3 (0x03) | |
DUMMY | 4 (0x04) | |
MOD_CONFUSE | 5 (0x05) | |
MOD_CHARM | 6 (0x06) | |
MOD_FEAR | 7 (0x07) | |
PERIODIC_HEAL | 8 (0x08) | |
MOD_ATTACKSPEED | 9 (0x09) | |
MOD_THREAT | 10 (0x0A) | |
MOD_TAUNT | 11 (0x0B) | |
MOD_STUN | 12 (0x0C) | |
MOD_DAMAGE_DONE | 13 (0x0D) | |
MOD_DAMAGE_TAKEN | 14 (0x0E) | |
DAMAGE_SHIELD | 15 (0x0F) | |
MOD_STEALTH | 16 (0x10) | |
MOD_STEALTH_DETECT | 17 (0x11) | |
MOD_INVISIBILITY | 18 (0x12) | |
MOD_INVISIBILITY_DETECT | 19 (0x13) | |
OBS_MOD_HEALTH | 20 (0x14) | 20, 21 unofficial |
OBS_MOD_POWER | 21 (0x15) | |
MOD_RESISTANCE | 22 (0x16) | |
PERIODIC_TRIGGER_SPELL | 23 (0x17) | |
PERIODIC_ENERGIZE | 24 (0x18) | |
MOD_PACIFY | 25 (0x19) | |
MOD_ROOT | 26 (0x1A) | |
MOD_SILENCE | 27 (0x1B) | |
REFLECT_SPELLS | 28 (0x1C) | |
MOD_STAT | 29 (0x1D) | |
MOD_SKILL | 30 (0x1E) | |
MOD_INCREASE_SPEED | 31 (0x1F) | |
MOD_INCREASE_MOUNTED_SPEED | 32 (0x20) | |
MOD_DECREASE_SPEED | 33 (0x21) | |
MOD_INCREASE_HEALTH | 34 (0x22) | |
MOD_INCREASE_ENERGY | 35 (0x23) | |
MOD_SHAPESHIFT | 36 (0x24) | |
EFFECT_IMMUNITY | 37 (0x25) | |
STATE_IMMUNITY | 38 (0x26) | |
SCHOOL_IMMUNITY | 39 (0x27) | |
DAMAGE_IMMUNITY | 40 (0x28) | |
DISPEL_IMMUNITY | 41 (0x29) | |
PROC_TRIGGER_SPELL | 42 (0x2A) | |
PROC_TRIGGER_DAMAGE | 43 (0x2B) | |
TRACK_CREATURES | 44 (0x2C) | |
TRACK_RESOURCES | 45 (0x2D) | |
UNKNOWN46 | 46 (0x2E) | Ignore all Gear test spells |
MOD_PARRY_PERCENT | 47 (0x2F) | |
PERIODIC_TRIGGER_SPELL_FROM_CLIENT | 48 (0x30) | One periodic spell |
MOD_DODGE_PERCENT | 49 (0x31) | |
MOD_CRITICAL_HEALING_AMOUNT | 50 (0x32) | |
MOD_BLOCK_PERCENT | 51 (0x33) | |
MOD_WEAPON_CRIT_PERCENT | 52 (0x34) | |
PERIODIC_LEECH | 53 (0x35) | |
MOD_HIT_CHANCE | 54 (0x36) | |
MOD_SPELL_HIT_CHANCE | 55 (0x37) | |
TRANSFORM | 56 (0x38) | |
MOD_SPELL_CRIT_CHANCE | 57 (0x39) | |
MOD_INCREASE_SWIM_SPEED | 58 (0x3A) | |
MOD_DAMAGE_DONE_CREATURE | 59 (0x3B) | |
MOD_PACIFY_SILENCE | 60 (0x3C) | |
MOD_SCALE | 61 (0x3D) | |
PERIODIC_HEALTH_FUNNEL | 62 (0x3E) | |
UNKNOWN63 | 63 (0x3F) | old PERIODIC_MANA_FUNNEL |
PERIODIC_MANA_LEECH | 64 (0x40) | |
MOD_CASTING_SPEED_NOT_STACK | 65 (0x41) | |
FEIGN_DEATH | 66 (0x42) | |
MOD_DISARM | 67 (0x43) | |
MOD_STALKED | 68 (0x44) | |
SCHOOL_ABSORB | 69 (0x45) | |
EXTRA_ATTACKS | 70 (0x46) | |
MOD_SPELL_CRIT_CHANCE_SCHOOL | 71 (0x47) | |
MOD_POWER_COST_SCHOOL_PCT | 72 (0x48) | |
MOD_POWER_COST_SCHOOL | 73 (0x49) | |
REFLECT_SPELLS_SCHOOL | 74 (0x4A) | |
MOD_LANGUAGE | 75 (0x4B) | |
FAR_SIGHT | 76 (0x4C) | |
MECHANIC_IMMUNITY | 77 (0x4D) | |
MOUNTED | 78 (0x4E) | |
MOD_DAMAGE_PERCENT_DONE | 79 (0x4F) | |
MOD_PERCENT_STAT | 80 (0x50) | |
SPLIT_DAMAGE_PCT | 81 (0x51) | |
WATER_BREATHING | 82 (0x52) | |
MOD_BASE_RESISTANCE | 83 (0x53) | |
MOD_REGEN | 84 (0x54) | |
MOD_POWER_REGEN | 85 (0x55) | |
CHANNEL_DEATH_ITEM | 86 (0x56) | |
MOD_DAMAGE_PERCENT_TAKEN | 87 (0x57) | |
MOD_HEALTH_REGEN_PERCENT | 88 (0x58) | |
PERIODIC_DAMAGE_PERCENT | 89 (0x59) | |
UNKNOWN90 | 90 (0x5A) | old MOD_RESIST_CHANCE |
MOD_DETECT_RANGE | 91 (0x5B) | |
PREVENTS_FLEEING | 92 (0x5C) | |
MOD_UNATTACKABLE | 93 (0x5D) | |
INTERRUPT_REGEN | 94 (0x5E) | |
GHOST | 95 (0x5F) | |
SPELL_MAGNET | 96 (0x60) | |
MANA_SHIELD | 97 (0x61) | |
MOD_SKILL_TALENT | 98 (0x62) | |
MOD_ATTACK_POWER | 99 (0x63) | |
AURAS_VISIBLE | 100 (0x64) | |
MOD_RESISTANCE_PCT | 101 (0x65) | |
MOD_MELEE_ATTACK_POWER_VERSUS | 102 (0x66) | |
MOD_TOTAL_THREAT | 103 (0x67) | |
WATER_WALK | 104 (0x68) | |
FEATHER_FALL | 105 (0x69) | |
HOVER | 106 (0x6A) | |
ADD_FLAT_MODIFIER | 107 (0x6B) | |
ADD_PCT_MODIFIER | 108 (0x6C) | |
ADD_TARGET_TRIGGER | 109 (0x6D) | |
MOD_POWER_REGEN_PERCENT | 110 (0x6E) | |
ADD_CASTER_HIT_TRIGGER | 111 (0x6F) | |
OVERRIDE_CLASS_SCRIPTS | 112 (0x70) | |
MOD_RANGED_DAMAGE_TAKEN | 113 (0x71) | |
MOD_RANGED_DAMAGE_TAKEN_PCT | 114 (0x72) | |
MOD_HEALING | 115 (0x73) | |
MOD_REGEN_DURING_COMBAT | 116 (0x74) | |
MOD_MECHANIC_RESISTANCE | 117 (0x75) | |
MOD_HEALING_PCT | 118 (0x76) | |
UNKNOWN119 | 119 (0x77) | old SHARE_PET_TRACKING |
UNTRACKABLE | 120 (0x78) | |
EMPATHY | 121 (0x79) | |
MOD_OFFHAND_DAMAGE_PCT | 122 (0x7A) | |
MOD_TARGET_RESISTANCE | 123 (0x7B) | |
MOD_RANGED_ATTACK_POWER | 124 (0x7C) | |
MOD_MELEE_DAMAGE_TAKEN | 125 (0x7D) | |
MOD_MELEE_DAMAGE_TAKEN_PCT | 126 (0x7E) | |
RANGED_ATTACK_POWER_ATTACKER_BONUS | 127 (0x7F) | |
MOD_POSSESS_PET | 128 (0x80) | |
MOD_SPEED_ALWAYS | 129 (0x81) | |
MOD_MOUNTED_SPEED_ALWAYS | 130 (0x82) | |
MOD_RANGED_ATTACK_POWER_VERSUS | 131 (0x83) | |
MOD_INCREASE_ENERGY_PERCENT | 132 (0x84) | |
MOD_INCREASE_HEALTH_PERCENT | 133 (0x85) | |
MOD_MANA_REGEN_INTERRUPT | 134 (0x86) | |
MOD_HEALING_DONE | 135 (0x87) | |
MOD_HEALING_DONE_PERCENT | 136 (0x88) | |
MOD_TOTAL_STAT_PERCENTAGE | 137 (0x89) | |
MOD_MELEE_HASTE | 138 (0x8A) | |
FORCE_REACTION | 139 (0x8B) | |
MOD_RANGED_HASTE | 140 (0x8C) | |
MOD_RANGED_AMMO_HASTE | 141 (0x8D) | |
MOD_BASE_RESISTANCE_PCT | 142 (0x8E) | |
MOD_RESISTANCE_EXCLUSIVE | 143 (0x8F) | |
SAFE_FALL | 144 (0x90) | |
MOD_PET_TALENT_POINTS | 145 (0x91) | |
ALLOW_TAME_PET_TYPE | 146 (0x92) | |
MECHANIC_IMMUNITY_MASK | 147 (0x93) | |
RETAIN_COMBO_POINTS | 148 (0x94) | |
REDUCE_PUSHBACK | 149 (0x95) | Reduce Pushback |
MOD_SHIELD_BLOCKVALUE_PCT | 150 (0x96) | |
TRACK_STEALTHED | 151 (0x97) | Track Stealthed |
MOD_DETECTED_RANGE | 152 (0x98) | Mod Detected Range |
SPLIT_DAMAGE_FLAT | 153 (0x99) | Split Damage Flat |
MOD_STEALTH_LEVEL | 154 (0x9A) | Stealth Level Modifier |
MOD_WATER_BREATHING | 155 (0x9B) | Mod Water Breathing |
MOD_REPUTATION_GAIN | 156 (0x9C) | Mod Reputation Gain |
PET_DAMAGE_MULTI | 157 (0x9D) | Mod Pet Damage |
MOD_SHIELD_BLOCKVALUE | 158 (0x9E) | |
NO_PVP_CREDIT | 159 (0x9F) | |
MOD_AOE_AVOIDANCE | 160 (0xA0) | |
MOD_HEALTH_REGEN_IN_COMBAT | 161 (0xA1) | |
POWER_BURN | 162 (0xA2) | |
MOD_CRIT_DAMAGE_BONUS | 163 (0xA3) | |
UNKNOWN164 | 164 (0xA4) | |
MELEE_ATTACK_POWER_ATTACKER_BONUS | 165 (0xA5) | |
MOD_ATTACK_POWER_PCT | 166 (0xA6) | |
MOD_RANGED_ATTACK_POWER_PCT | 167 (0xA7) | |
MOD_DAMAGE_DONE_VERSUS | 168 (0xA8) | |
MOD_CRIT_PERCENT_VERSUS | 169 (0xA9) | |
DETECT_AMORE | 170 (0xAA) | |
MOD_SPEED_NOT_STACK | 171 (0xAB) | |
MOD_MOUNTED_SPEED_NOT_STACK | 172 (0xAC) | |
UNKNOWN173 | 173 (0xAD) | old ALLOW_CHAMPION_SPELLS |
MOD_SPELL_DAMAGE_OF_STAT_PERCENT | 174 (0xAE) | by defeult intelect, dependent from MOD_SPELL_HEALING_OF_STAT_PERCENT |
MOD_SPELL_HEALING_OF_STAT_PERCENT | 175 (0xAF) | |
SPIRIT_OF_REDEMPTION | 176 (0xB0) | |
AOE_CHARM | 177 (0xB1) | |
MOD_DEBUFF_RESISTANCE | 178 (0xB2) | |
MOD_ATTACKER_SPELL_CRIT_CHANCE | 179 (0xB3) | |
MOD_FLAT_SPELL_DAMAGE_VERSUS | 180 (0xB4) | |
UNKNOWN181 | 181 (0xB5) | old MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS - possible flat spell crit damage versus |
MOD_RESISTANCE_OF_STAT_PERCENT | 182 (0xB6) | |
MOD_CRITICAL_THREAT | 183 (0xB7) | |
MOD_ATTACKER_MELEE_HIT_CHANCE | 184 (0xB8) | |
MOD_ATTACKER_RANGED_HIT_CHANCE | 185 (0xB9) | |
MOD_ATTACKER_SPELL_HIT_CHANCE | 186 (0xBA) | |
MOD_ATTACKER_MELEE_CRIT_CHANCE | 187 (0xBB) | |
MOD_ATTACKER_RANGED_CRIT_CHANCE | 188 (0xBC) | |
MOD_RATING | 189 (0xBD) | |
MOD_FACTION_REPUTATION_GAIN | 190 (0xBE) | |
USE_NORMAL_MOVEMENT_SPEED | 191 (0xBF) | |
MOD_MELEE_RANGED_HASTE | 192 (0xC0) | |
MELEE_SLOW | 193 (0xC1) | |
MOD_TARGET_ABSORB_SCHOOL | 194 (0xC2) | |
MOD_TARGET_ABILITY_ABSORB_SCHOOL | 195 (0xC3) | |
MOD_COOLDOWN | 196 (0xC4) | only 24818 Noxious Breath |
MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE | 197 (0xC5) | |
UNKNOWN198 | 198 (0xC6) | old MOD_ALL_WEAPON_SKILLS |
MOD_INCREASES_SPELL_PCT_TO_HIT | 199 (0xC7) | |
MOD_XP_PCT | 200 (0xC8) | |
FLY | 201 (0xC9) | |
IGNORE_COMBAT_RESULT | 202 (0xCA) | |
MOD_ATTACKER_MELEE_CRIT_DAMAGE | 203 (0xCB) | |
MOD_ATTACKER_RANGED_CRIT_DAMAGE | 204 (0xCC) | |
MOD_SCHOOL_CRIT_DMG_TAKEN | 205 (0xCD) | |
MOD_INCREASE_VEHICLE_FLIGHT_SPEED | 206 (0xCE) | |
MOD_INCREASE_MOUNTED_FLIGHT_SPEED | 207 (0xCF) | |
MOD_INCREASE_FLIGHT_SPEED | 208 (0xD0) | |
MOD_MOUNTED_FLIGHT_SPEED_ALWAYS | 209 (0xD1) | |
MOD_VEHICLE_SPEED_ALWAYS | 210 (0xD2) | |
MOD_FLIGHT_SPEED_NOT_STACK | 211 (0xD3) | |
MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT | 212 (0xD4) | |
MOD_RAGE_FROM_DAMAGE_DEALT | 213 (0xD5) | |
UNKNOWN214 | 214 (0xD6) | |
ARENA_PREPARATION | 215 (0xD7) | |
HASTE_SPELLS | 216 (0xD8) | |
MOD_MELEE_HASTE_2 | 217 (0xD9) | NYI |
HASTE_RANGED | 218 (0xDA) | |
MOD_MANA_REGEN_FROM_STAT | 219 (0xDB) | |
MOD_RATING_FROM_STAT | 220 (0xDC) | |
MOD_DETAUNT | 221 (0xDD) | |
UNKNOWN222 | 222 (0xDE) | |
RAID_PROC_FROM_CHARGE | 223 (0xDF) | |
UNKNOWN224 | 224 (0xE0) | |
RAID_PROC_FROM_CHARGE_WITH_VALUE | 225 (0xE1) | |
PERIODIC_DUMMY | 226 (0xE2) | |
PERIODIC_TRIGGER_SPELL_WITH_VALUE | 227 (0xE3) | |
DETECT_STEALTH | 228 (0xE4) | |
MOD_AOE_DAMAGE_AVOIDANCE | 229 (0xE5) | |
UNKNOWN230 | 230 (0xE6) | |
PROC_TRIGGER_SPELL_WITH_VALUE | 231 (0xE7) | |
MECHANIC_DURATION_MOD | 232 (0xE8) | |
CHANGE_MODEL_FOR_ALL_HUMANOIDS | 233 (0xE9) | client-side only |
MECHANIC_DURATION_MOD_NOT_STACK | 234 (0xEA) | |
MOD_DISPEL_RESIST | 235 (0xEB) | |
CONTROL_VEHICLE | 236 (0xEC) | |
MOD_SPELL_DAMAGE_OF_ATTACK_POWER | 237 (0xED) | |
MOD_SPELL_HEALING_OF_ATTACK_POWER | 238 (0xEE) | |
MOD_SCALE_2 | 239 (0xEF) | |
MOD_EXPERTISE | 240 (0xF0) | |
FORCE_MOVE_FORWARD | 241 (0xF1) | |
MOD_SPELL_DAMAGE_FROM_HEALING | 242 (0xF2) | |
MOD_FACTION | 243 (0xF3) | |
COMPREHEND_LANGUAGE | 244 (0xF4) | |
MOD_AURA_DURATION_BY_DISPEL | 245 (0xF5) | |
MOD_AURA_DURATION_BY_DISPEL_NOT_STACK | 246 (0xF6) | |
CLONE_CASTER | 247 (0xF7) | |
MOD_COMBAT_RESULT_CHANCE | 248 (0xF8) | |
CONVERT_RUNE | 249 (0xF9) | |
MOD_INCREASE_HEALTH_2 | 250 (0xFA) | |
MOD_ENEMY_DODGE | 251 (0xFB) | |
MOD_SPEED_SLOW_ALL | 252 (0xFC) | |
MOD_BLOCK_CRIT_CHANCE | 253 (0xFD) | |
MOD_DISARM_OFFHAND | 254 (0xFE) | |
MOD_MECHANIC_DAMAGE_TAKEN_PERCENT | 255 (0xFF) | |
NO_REAGENT_USE | 256 (0x100) | |
MOD_TARGET_RESIST_BY_SPELL_CLASS | 257 (0x101) | |
UNKNOWN258 | 258 (0x102) | |
MOD_HOT_PCT | 259 (0x103) | |
SCREEN_EFFECT | 260 (0x104) | |
PHASE | 261 (0x105) | |
ABILITY_IGNORE_AURASTATE | 262 (0x106) | |
ALLOW_ONLY_ABILITY | 263 (0x107) | |
UNKNOWN264 | 264 (0x108) | |
UNKNOWN265 | 265 (0x109) | |
UNKNOWN266 | 266 (0x10A) | |
MOD_IMMUNE_AURA_APPLY_SCHOOL | 267 (0x10B) | |
MOD_ATTACK_POWER_OF_STAT_PERCENT | 268 (0x10C) | |
MOD_IGNORE_TARGET_RESIST | 269 (0x10D) | |
MOD_ABILITY_IGNORE_TARGET_RESIST | 270 (0x10E) | Possibly need swap vs 195 aura used only in 1 spell Chaos Bolt Passive |
MOD_DAMAGE_FROM_CASTER | 271 (0x10F) | |
IGNORE_MELEE_RESET | 272 (0x110) | |
X_RAY | 273 (0x111) | |
ABILITY_CONSUME_NO_AMMO | 274 (0x112) | |
MOD_IGNORE_SHAPESHIFT | 275 (0x113) | |
MOD_DAMAGE_DONE_FOR_MECHANIC | 276 (0x114) | NYI |
MOD_MAX_AFFECTED_TARGETS | 277 (0x115) | |
MOD_DISARM_RANGED | 278 (0x116) | |
INITIALIZE_IMAGES | 279 (0x117) | |
MOD_ARMOR_PENETRATION_PCT | 280 (0x118) | |
MOD_HONOR_GAIN_PCT | 281 (0x119) | |
MOD_BASE_HEALTH_PCT | 282 (0x11A) | |
MOD_HEALING_RECEIVED | 283 (0x11B) | Possibly only for some spell family class spells |
LINKED | 284 (0x11C) | |
MOD_ATTACK_POWER_OF_ARMOR | 285 (0x11D) | |
ABILITY_PERIODIC_CRIT | 286 (0x11E) | |
DEFLECT_SPELLS | 287 (0x11F) | |
IGNORE_HIT_DIRECTION | 288 (0x120) | |
PREVENT_DURABILITY_LOSS | 289 (0x121) | |
MOD_CRIT_PCT | 290 (0x122) | |
MOD_XP_QUEST_PCT | 291 (0x123) | |
OPEN_STABLE | 292 (0x124) | |
OVERRIDE_SPELLS | 293 (0x125) | |
PREVENT_REGENERATE_POWER | 294 (0x126) | |
UNKNOWN295 | 295 (0x127) | |
SET_VEHICLE_ID | 296 (0x128) | |
BLOCK_SPELL_FAMILY | 297 (0x129) | |
STRANGULATE | 298 (0x12A) | |
UNKNOWN299 | 299 (0x12B) | |
SHARE_DAMAGE_PCT | 300 (0x12C) | |
SCHOOL_HEAL_ABSORB | 301 (0x12D) | |
UNKNOWN302 | 302 (0x12E) | |
MOD_DAMAGE_DONE_VERSUS_AURASTATE | 303 (0x12F) | |
MOD_FAKE_INEBRIATE | 304 (0x130) | |
MOD_MINIMUM_SPEED | 305 (0x131) | |
UNKNOWN306 | 306 (0x132) | |
HEAL_ABSORB_TEST | 307 (0x133) | |
MOD_CRIT_CHANCE_FOR_CASTER | 308 (0x134) | |
UNKNOWN309 | 309 (0x135) | |
MOD_CREATURE_AOE_DAMAGE_AVOIDANCE | 310 (0x136) | |
UNKNOWN311 | 311 (0x137) | |
UNKNOWN312 | 312 (0x138) | |
UNKNOWN313 | 313 (0x139) | |
PREVENT_RESURRECTION | 314 (0x13A) | |
UNDERWATER_WALKING | 315 (0x13B) | |
PERIODIC_HASTE | 316 (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
Enumerator | Value | Comment |
---|---|---|
NORMAL | 0 (0x00) | Physical, Armor |
HOLY | 1 (0x01) | |
FIRE | 2 (0x02) | |
NATURE | 3 (0x03) | |
FROST | 4 (0x04) | |
SHADOW | 5 (0x05) | |
ARCANE | 6 (0x06) |
Used in:
- AuraLog
- AuraLog
- AuraLog
- ItemDamageType
- SMSG_SPELLDAMAGESHIELD
- SMSG_SPELLDAMAGESHIELD
- SMSG_SPELLDAMAGESHIELD
- SMSG_SPELLNONMELEEDAMAGELOG
- SMSG_SPELLNONMELEEDAMAGELOG
- SMSG_SPELLNONMELEEDAMAGELOG
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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 1 / - | u8 | visual_slot | |
0x01 | 4 / Little | Spell | spell | |
0x05 | 1 / - | AuraFlag | flags | |
0x06 | 1 / - | Level | level | |
0x07 | 1 / - | u8 | aura_stack_count |
If flags contains NOT_CASTER
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x08 | - / - | PackedGuid | caster |
If flags contains DURATION
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | u32 | duration | |
- | 4 / Little | u32 | time_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
Enumerator | Value | Comment |
---|---|---|
EMPTY | 0 (0x00) | |
EFFECT_1 | 1 (0x01) | |
EFFECT_2 | 2 (0x02) | |
EFFECT_3 | 4 (0x04) | |
NOT_CASTER | 8 (0x08) | |
SET | 9 (0x09) | |
CANCELLABLE | 16 (0x10) | |
DURATION | 32 (0x20) | |
HIDE | 64 (0x40) | Seems to hide the aura and tell client the aura was removed |
NEGATIVE | 128 (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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 2 / Little | u16 | aura | |
0x02 | 1 / - | u8 | unknown |
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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 4 / Little | u32 | aura | |
0x04 | 1 / - | u8 | unknown |
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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 4 / Little | u32 | flags | |
0x04 | 4 / Little | u32 | stacks_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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 8 / Little | Guid | player | |
0x08 | 4 / Little | f32 | position_x | |
0x0C | 4 / Little | f32 | position_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
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 8 / Little | Guid | player | |
0x08 | 4 / - | PvpRank | rank | |
0x0C | 4 / Little | u32 | killing_blows | |
0x10 | 4 / Little | u32 | honorable_kills | |
0x14 | 4 / Little | u32 | deaths | |
0x18 | 4 / Little | u32 | bonus_honor | |
0x1C | 4 / Little | u32 | amount_of_extra_fields | |
0x20 | ? / - | u32[amount_of_extra_fields] | fields | This 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
Enumerator | Value | Comment |
---|---|---|
NO_RANK | 0 (0x00) | |
PARIAH | 1 (0x01) | |
OUTLAW | 2 (0x02) | |
EXILED | 3 (0x03) | |
DISHONORED | 4 (0x04) | |
RANK1 | 5 (0x05) | Alliance name: Private Horde name: Scout |
RANK2 | 6 (0x06) | Alliance name: Corporal Horde name: Grunt |
RANK3 | 7 (0x07) | Alliance name: Sergeant Horde name: Sergeant |
RANK4 | 8 (0x08) | Alliance name: Master Sergeant Horde name: Senior Sergeatn |
RANK5 | 9 (0x09) | Alliance name: Sergeant Major Horde name: First Sergeant |
RANK6 | 10 (0x0A) | Alliance name: Knight Horde name: Stone Guard |
RANK7 | 11 (0x0B) | Alliance name: Knight Lieutenant Horde name: Blood Guard |
RANK8 | 12 (0x0C) | Alliance name: Knight Captain Horde name: Legionnare |
RANK9 | 13 (0x0D) | Alliance name: Kngith Champion Horde name: Centurion |
RANK10 | 14 (0x0E) | Alliance name: Liuetenant Commander Horde name: Champion |
RANK11 | 15 (0x0F) | Alliance name: Commander Horde name: Lieutenant General |
RANK12 | 16 (0x10) | Alliance name: Marshal Horde name: General |
RANK13 | 17 (0x11) | Alliance name: Field Marshal Horde name: Warlord |
RANK14 | 18 (0x12) | Alliance name: Grand Marshal Horde name: High Warlord |
FACTION_LEADER | 19 (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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | - / - | PackedGuid | guid |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | - / - | PackedGuid | guid |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 4 / Little | u32 | unknown1 | Skipped 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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | guid | |
0x0E | 4 / Little | u32 | total_cost | vmangos/mangosone: Never used. |
0x12 | 4 / Little | u32 | node_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | guid | |
0x0E | 4 / Little | u32 | node_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | guid | |
0x0E | 4 / Little | u32 | source_node | |
0x12 | 4 / Little | u32 | destination_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | - / - | CString | name |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | - / - | CString | name | |
- | - / - | CString | note |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | - / - | CString | name |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 4 / Little | u32 | hair | |
0x0A | 4 / Little | u32 | hair_color | |
0x0E | 4 / Little | u32 | facial_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 4 / Little | u32 | trigger_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | guid |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | guid |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode 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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode 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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 4 / Little | u32 | arena_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 4 / Little | u32 | arena_team | |
0x0A | - / - | CString | player |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 4 / Little | u32 | arena_team | |
0x0A | - / - | CString | player |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 4 / Little | u32 | arena_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 4 / Little | u32 | arena_team | |
0x0A | - / - | CString | player |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 4 / Little | u32 | arena_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode 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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | guid |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | auctioneer | |
0x0E | 4 / Little | u32 | start_from_page | |
0x12 | 4 / Little | u32 | amount_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | auctioneer | |
0x0E | 4 / Little | u32 | list_start_item | |
0x12 | - / - | CString | searched_name | |
- | 1 / - | u8 | minimum_level | |
- | 1 / - | u8 | maximum_level | |
- | 4 / Little | u32 | auction_slot_id | |
- | 4 / Little | u32 | auction_main_category | |
- | 4 / Little | u32 | auction_sub_category | |
- | 4 / - | ItemQuality | auction_quality | |
- | 1 / - | u8 | usable |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | auctioneer | |
0x0E | 4 / Little | u32 | list_start_item | |
0x12 | - / - | CString | searched_name | |
- | 1 / - | u8 | minimum_level | |
- | 1 / - | u8 | maximum_level | |
- | 4 / Little | u32 | auction_slot_id | |
- | 4 / Little | u32 | auction_main_category | |
- | 4 / Little | u32 | auction_sub_category | |
- | 4 / - | ItemQuality | auction_quality | |
- | 1 / - | u8 | usable | |
- | 1 / - | u8 | is_full | |
- | 1 / - | u8 | amount_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | auctioneer | |
0x0E | 4 / Little | u32 | list_start_item | |
0x12 | - / - | CString | searched_name | |
- | 1 / - | u8 | minimum_level | |
- | 1 / - | u8 | maximum_level | |
- | 4 / Little | u32 | auction_slot_id | |
- | 4 / Little | u32 | auction_main_category | |
- | 4 / Little | u32 | auction_sub_category | |
- | 4 / - | ItemQuality | auction_quality | |
- | 1 / - | u8 | usable | |
- | 1 / - | u8 | is_full | |
- | 1 / - | u8 | amount_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
Enumerator | Value | Comment |
---|---|---|
POOR | 0 (0x00) | |
NORMAL | 1 (0x01) | |
UNCOMMON | 2 (0x02) | |
RARE | 3 (0x03) | |
EPIC | 4 (0x04) | |
LEGENDARY | 5 (0x05) | |
ARTIFACT | 6 (0x06) |
Used in:
- CMSG_AUCTION_LIST_ITEMS
- CMSG_AUCTION_LIST_ITEMS
- CMSG_LOOT_METHOD
- CMSG_LOOT_METHOD
- SMSG_GROUP_LIST
- SMSG_GROUP_LIST
- SMSG_ITEM_QUERY_SINGLE_RESPONSE
- SMSG_ITEM_QUERY_SINGLE_RESPONSE
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
Enumerator | Value | Comment |
---|---|---|
POOR | 0 (0x00) | |
NORMAL | 1 (0x01) | |
UNCOMMON | 2 (0x02) | |
RARE | 3 (0x03) | |
EPIC | 4 (0x04) | |
LEGENDARY | 5 (0x05) | |
ARTIFACT | 6 (0x06) | |
HEIRLOOM | 7 (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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | auctioneer | |
0x0E | 4 / Little | u32 | list_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | auctioneer |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | auctioneer | |
0x0E | 4 / Little | u32 | auction_id | |
0x12 | 4 / Little | Gold | price |
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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | auctioneer | |
0x0E | 4 / Little | u32 | auction_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | auctioneer | |
0x0E | 8 / Little | Guid | item | |
0x16 | 4 / Little | u32 | starting_bid | |
0x1A | 4 / Little | u32 | buyout | |
0x1E | 4 / Little | u32 | auction_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 8 / Little | Guid | auctioneer | |
0x0E | 4 / Little | u32 | unknown1 | |
0x12 | 8 / Little | Guid | item | |
0x1A | 4 / Little | u32 | unknown2 | |
0x1E | 4 / Little | u32 | starting_bid | |
0x22 | 4 / Little | u32 | buyout | |
0x26 | 4 / Little | u32 | auction_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 4 / Little | u32 | build | |
0x0A | 4 / Little | u32 | server_id | This is sent to the client in CMD_REALM_LIST_Server. |
0x0E | - / - | CString | username | |
- | 4 / Little | u32 | client_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 4 / Little | u32 | client_build | |
0x0A | 4 / Little | u32 | login_server_id | |
0x0E | - / - | CString | username | |
- | 4 / Little | u32 | login_server_type | |
- | 4 / Little | u32 | client_seed | |
- | 4 / Little | u32 | region_id | |
- | 4 / Little | u32 | battleground_id | |
- | 4 / Little | u32 | realm_id | |
- | 8 / Little | u64 | dos_response | Purpose 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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 4 / Little | uint32 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x06 | 1 / - | u8 | bag_index | |
0x07 | 1 / - | u8 | slot_index |
CMSG_AUTOEQUIP_ITEM
Client Version 1, Client Version 2, Client Version 3
Wowm Representation
Autogenerated from wowm
file at