├── .gitignore
├── ImplementedOpcode.txt
├── README
├── WoWTools.sln
├── libs
├── MySql.Data.dll
└── System.Data.SQLite.dll
└── src
├── Core
├── BinaryReaderExtensions.cs
├── Core.csproj
├── Guid.cs
├── Movement
│ ├── Coords.cs
│ ├── MovementBlock.cs
│ ├── MovementFlags.cs
│ ├── MovementInfo.cs
│ ├── RegularMovementPacket.cs
│ ├── SplineFlags.cs
│ ├── SplineInfo.cs
│ └── TransportInfo.cs
├── Opcode
│ ├── OpcodeDB.cs
│ └── Opcodes.cs
├── Packet.cs
├── Parser
│ ├── Parser.cs
│ └── ParserAttribute.cs
├── Properties
│ └── AssemblyInfo.cs
├── UpdateFields.cs
├── Utility.cs
├── WoWObject.cs
└── WoWObjectUpdate.cs
├── UpdatePacketParser
├── FilterForm.Designer.cs
├── FilterForm.cs
├── FilterForm.resx
├── FrmMain.Designer.cs
├── FrmMain.cs
├── FrmMain.resx
├── Packet.cs
├── Parser.cs
├── Program.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Readers
│ ├── IzidorPackerReader.cs
│ ├── PacketReader.cs
│ ├── SniffitztPacketReader.cs
│ ├── SqLitePacketReader.cs
│ └── WowCorePacketReader.cs
├── UpdatePacketParser.csproj
├── UpdatePacketParser.csproj.user
└── updatefields
│ ├── 10026.dat
│ ├── 10048.dat
│ ├── 10072.dat
│ ├── 10083.dat
│ ├── 10116.dat
│ ├── 10128.dat
│ ├── 10147.dat
│ ├── 10170.dat
│ ├── 10179.dat
│ ├── 10192.dat
│ ├── 10257.dat
│ ├── 10314.dat
│ ├── 10357.dat
│ ├── 10371.dat
│ ├── 10392.dat
│ ├── 10433.dat
│ ├── 10505.dat
│ ├── 10522.dat
│ ├── 10554.dat
│ ├── 10571.dat
│ ├── 10596.dat
│ ├── 10623.dat
│ ├── 10676.dat
│ ├── 10712.dat
│ ├── 10747.dat
│ ├── 11159.dat
│ ├── 11403.dat
│ ├── 11685.dat
│ ├── 11723.dat
│ ├── 12025.dat
│ ├── 12340.dat
│ ├── 12479.dat
│ ├── 7799.dat
│ ├── 8089.dat
│ ├── 8125.dat
│ ├── 8278.dat
│ ├── 8606.dat
│ ├── 8634.dat
│ ├── 8681.dat
│ ├── 8714.dat
│ ├── 8770.dat
│ ├── 8788.dat
│ ├── 8820.dat
│ ├── 8885.dat
│ ├── 8905.dat
│ ├── 8926.dat
│ ├── 8962.dat
│ ├── 8970.dat
│ ├── 8982.dat
│ ├── 9014.dat
│ ├── 9038.dat
│ ├── 9061.dat
│ ├── 9095.dat
│ ├── 9135.dat
│ ├── 9138.dat
│ ├── 9149.dat
│ ├── 9155.dat
│ ├── 9183.dat
│ ├── 9506.dat
│ ├── 9551.dat
│ ├── 9614.dat
│ ├── 9626.dat
│ ├── 9637.dat
│ ├── 9767.dat
│ ├── 9806.dat
│ ├── 9835.dat
│ ├── 9855.dat
│ ├── 9868.dat
│ ├── 9901.dat
│ └── 9947.dat
└── WoWPacketViewer
├── Forms
├── FrmChangeOpcode.Designer.cs
├── FrmChangeOpcode.cs
├── FrmChangeOpcode.resx
├── FrmMain.Designer.cs
├── FrmMain.cs
├── FrmMain.resx
├── FrmSearch.Designer.cs
├── FrmSearch.cs
├── FrmSearch.resx
├── FrmSettings.Designer.cs
├── FrmSettings.cs
├── FrmSettings.resx
├── FrmWardenDebug.Designer.cs
├── FrmWardenDebug.cs
├── FrmWardenDebug.resx
├── ListViewEx.cs
├── PacketViewTab.Designer.cs
├── PacketViewTab.cs
└── PacketViewTab.resx
├── ISupportFind.cs
├── ParserCompiler.cs
├── ParserFactory.cs
├── Parsers
├── Enums
│ ├── AIReaction.cs
│ ├── AccountDataType.cs
│ ├── ActionButtonType.cs
│ ├── AmmoType.cs
│ ├── AttackerStateFlags.cs
│ ├── AuraFlag.cs
│ ├── AuraType.cs
│ ├── BagFamilyMask.cs
│ ├── BillingFlag.cs
│ ├── CalendarResponseResult.cs
│ ├── CastFlag.cs
│ ├── ChannelFlag.cs
│ ├── ChannelMemberFlag.cs
│ ├── Character.cs
│ ├── CharacterFlag.cs
│ ├── ChatMessageType.cs
│ ├── ChatNotificationType.cs
│ ├── ChatTag.cs
│ ├── ClassMask.cs
│ ├── ClientType.cs
│ ├── ContactEntryFlag.cs
│ ├── ContactListFlag.cs
│ ├── ContactResult.cs
│ ├── ContactStatus.cs
│ ├── CooldownMask.cs
│ ├── CreatureFamily.cs
│ ├── CreatureRank.cs
│ ├── CreatureType.cs
│ ├── CreatureTypeFlag.cs
│ ├── CustomizationFlag.cs
│ ├── DamageType.cs
│ ├── DifficultyChangeType.cs
│ ├── EquipmentSetState.cs
│ ├── FactionFlag.cs
│ ├── GameObjectDynamicFlag.cs
│ ├── GameObjectFlag.cs
│ ├── GameObjectType.cs
│ ├── GossipPoiIcon.cs
│ ├── GroupMemberStatusFlag.cs
│ ├── GroupTypeFlag.cs
│ ├── GroupUpdateFlag.cs
│ ├── Holiday.cs
│ ├── InstanceResetWarningType.cs
│ ├── InstanceStatus.cs
│ ├── InventoryType.cs
│ ├── ItemBonding.cs
│ ├── ItemClass.cs
│ ├── ItemFlag.cs
│ ├── ItemFlagExtra.cs
│ ├── ItemModType.cs
│ ├── ItemQuality.cs
│ ├── ItemSocketColor.cs
│ ├── ItemSpellTriggerType.cs
│ ├── KickReason.cs
│ ├── Language.cs
│ ├── LfgEntryCheckResult.cs
│ ├── LfgError.cs
│ ├── LfgJoinResult.cs
│ ├── LfgRoleCheckResult.cs
│ ├── LfgRoleCheckStatus.cs
│ ├── LfgRoleFlag.cs
│ ├── LfgState.cs
│ ├── LfgUpdateFlag.cs
│ ├── LfgUpdateType.cs
│ ├── LootMethod.cs
│ ├── MapDifficulty.cs
│ ├── Material.cs
│ ├── MiscConstants.cs
│ ├── Miscellaneous.cs
│ ├── MovementAnimationState.cs
│ ├── MovementFlag.cs
│ ├── MovementFlagExtra.cs
│ ├── NPCFlags.cs
│ ├── ObjectType.cs
│ ├── PageMaterial.cs
│ ├── PetTameFailureReason.cs
│ ├── PlayerFieldBytesMiscFlags.cs
│ ├── PlayerFlags.cs
│ ├── PowerType.cs
│ ├── QuestFlag.cs
│ ├── QuestMethod.cs
│ ├── QuestSort.cs
│ ├── QuestType.cs
│ ├── RaceMask.cs
│ ├── ReputationRank.cs
│ ├── SheathType.cs
│ ├── SpeedType.cs
│ ├── SpellCastFailureReason.cs
│ ├── SpellMechanics.cs
│ ├── SpellMissType.cs
│ ├── SpellMod.cs
│ ├── SplineFlag.cs
│ ├── SplineMode.cs
│ ├── SplineType.cs
│ ├── StatType.cs
│ ├── TargetFlag.cs
│ ├── TargetFlags.cs
│ ├── TeamType.cs
│ ├── TotemCategory.cs
│ ├── TrainerSpellState.cs
│ ├── TrainerType.cs
│ ├── TransferAbortReason.cs
│ ├── TypeMask.cs
│ ├── UnitDynamicFlags.cs
│ ├── UnitFlags.cs
│ ├── UnitFlags2.cs
│ ├── UpdateField.cs
│ ├── UpdateFlag.cs
│ ├── UpdateType.cs
│ ├── VehicleFlags.cs
│ ├── WardenCheckType.cs
│ └── WardenOpcode.cs
├── Grouped
│ ├── AccountHandler.cs
│ ├── AchievementHandler.cs
│ ├── ActionBarHandler.cs
│ ├── AuctionHandler.cs
│ ├── BattlegroundHandler.cs
│ ├── CalendarHandler.cs
│ ├── ChannelHandler.cs
│ ├── CharacterHandler.cs
│ ├── ChatHandler.cs
│ ├── CombatHandler.cs
│ ├── ContactHandler.cs
│ ├── CorpseHandler.cs
│ ├── EmptyPackets.cs
│ ├── EquipmentSetHandler.cs
│ ├── GameObjectHandler.cs
│ ├── GroupHandler.cs
│ ├── GuildHandler.cs
│ ├── InstanceHandler.cs
│ ├── ItemHandler.cs
│ ├── MailHandler.cs
│ ├── MiscellaneousHandler.cs
│ ├── NpcHandler.cs
│ ├── PetHandler.cs
│ ├── QueryHandler.cs
│ ├── QuestHandler.cs
│ ├── ReputationHandler.cs
│ ├── SessionHandler.cs
│ ├── SpellHandler.cs
│ ├── TalentHandler.cs
│ ├── TradeHandler.cs
│ ├── VoiceChatHandler.cs
│ └── WorldStateHandler.cs
├── Movement
│ ├── MSG_MOVE_.cs
│ ├── MSG_MOVE_FALL_LAND.cs
│ ├── MSG_MOVE_HEARTBEAT.cs
│ ├── MSG_MOVE_JUMP.cs
│ ├── MSG_MOVE_ROOT.cs
│ ├── MSG_MOVE_SET_FACING.cs
│ ├── MSG_MOVE_SET_PITCH.cs
│ ├── MSG_MOVE_START_ASCEND.cs
│ ├── MSG_MOVE_START_BACKWARD.cs
│ ├── MSG_MOVE_START_DESCEND.cs
│ ├── MSG_MOVE_START_FORWARD.cs
│ ├── MSG_MOVE_START_STRAFE_LEFT.cs
│ ├── MSG_MOVE_START_STRAFE_RIGHT.cs
│ ├── MSG_MOVE_START_SWIM.cs
│ ├── MSG_MOVE_START_TURN_LEFT.cs
│ ├── MSG_MOVE_START_TURN_RIGHT.cs
│ ├── MSG_MOVE_STOP.cs
│ ├── MSG_MOVE_STOP_ASCEND.cs
│ ├── MSG_MOVE_STOP_STRAFE.cs
│ ├── MSG_MOVE_STOP_TURN.cs
│ ├── SMSG_MONSTER_MOVE.cs
│ └── SMSG_PLAYER_MOVE.cs
├── SMSG_CHAR_ENUM.cs
├── SMSG_INSPECT_RESULTS.cs
├── SMSG_LFG_SEARCH_RESULTS.cs
├── SMSG_LOAD_EQUIPMENT_SET.cs
├── SMSG_UPDATE_OBJECT.cs
├── UnknownPacketParser.cs
└── Warden
│ ├── CMSG_WARDEN_DATA.cs
│ ├── SMSG_WARDEN_DATA.cs
│ └── WardenHelpers
│ ├── CheckInfo.cs
│ ├── CheckType.cs
│ └── WardenData.cs
├── Program.cs
├── Properties
├── AssemblyInfo.cs
├── Resources.Designer.cs
├── Resources.resx
├── Settings.Designer.cs
└── Settings.settings
├── Readers
├── IPacketReader.cs
├── IzidorPackerReader.cs
├── PacketReaderFactory.cs
├── SniffitztPacketReader.cs
├── SqLitePacketReader.cs
└── WowCorePacketReader.cs
├── WoWPacketViewer.csproj
└── app.config
/.gitignore:
--------------------------------------------------------------------------------
1 | bin
2 | *.suo
3 | obj
4 |
--------------------------------------------------------------------------------
/README:
--------------------------------------------------------------------------------
1 | This is a WoW Packet Viewer with a set of packet parsers.
2 | Target version is 4.2.0.
3 | Supported input formats include PKT and Izidor.
4 | Opcodes are loaded from a MySQL DB table.
5 | The base structure and content for OpcodesDB: https://github.com/ProjectSkyfire/SkyFireEMU_420/blob/master/sql/opcodes/emuopcodes.sql
6 | And current updates: https://github.com/ProjectSkyfire/SkyFireEMU_420/blob/master/sql/OpcodesUpdates4.2.0.sql
7 |
8 | UpdatePacketParser project is not updated for 4.2 yet.
9 |
10 | The project was originally written by TOM_RUS and is forked from https://github.com/tomrus88/WoWTools
11 | It incldes updates by Chameleon and Singlem as well as code/parsers from:
12 | * SilinoronParser (https://github.com/silinoron/SilinoronParser)
13 | * Kaelima's parser (https://github.com/kaelima/WowPacketParser)
14 | * Zor's parser (https://bitbucket.org/XTZGZoReX/wowpacketparser)
15 | * LordJZ
16 | * and others.
--------------------------------------------------------------------------------
/WoWTools.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Visual Studio 2010
4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WoWPacketViewer", "src\WoWPacketViewer\WoWPacketViewer.csproj", "{9E80DAFC-44D7-4C9E-8AE9-515A78B13232}"
5 | EndProject
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UpdatePacketParser", "src\UpdatePacketParser\UpdatePacketParser.csproj", "{89E7C4DB-8056-47A3-897E-9D8D4A70C305}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core", "src\Core\Core.csproj", "{F403FF24-95D3-442C-A620-6F19CAE22059}"
9 | EndProject
10 | Global
11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 | Debug|Any CPU = Debug|Any CPU
13 | Debug|x86 = Debug|x86
14 | Release|Any CPU = Release|Any CPU
15 | Release|x86 = Release|x86
16 | EndGlobalSection
17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
18 | {9E80DAFC-44D7-4C9E-8AE9-515A78B13232}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
19 | {9E80DAFC-44D7-4C9E-8AE9-515A78B13232}.Debug|Any CPU.Build.0 = Debug|Any CPU
20 | {9E80DAFC-44D7-4C9E-8AE9-515A78B13232}.Debug|x86.ActiveCfg = Debug|x86
21 | {9E80DAFC-44D7-4C9E-8AE9-515A78B13232}.Debug|x86.Build.0 = Debug|x86
22 | {9E80DAFC-44D7-4C9E-8AE9-515A78B13232}.Release|Any CPU.ActiveCfg = Release|Any CPU
23 | {9E80DAFC-44D7-4C9E-8AE9-515A78B13232}.Release|Any CPU.Build.0 = Release|Any CPU
24 | {9E80DAFC-44D7-4C9E-8AE9-515A78B13232}.Release|x86.ActiveCfg = Release|x86
25 | {9E80DAFC-44D7-4C9E-8AE9-515A78B13232}.Release|x86.Build.0 = Release|x86
26 | {89E7C4DB-8056-47A3-897E-9D8D4A70C305}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27 | {89E7C4DB-8056-47A3-897E-9D8D4A70C305}.Debug|Any CPU.Build.0 = Debug|Any CPU
28 | {89E7C4DB-8056-47A3-897E-9D8D4A70C305}.Debug|x86.ActiveCfg = Debug|x86
29 | {89E7C4DB-8056-47A3-897E-9D8D4A70C305}.Debug|x86.Build.0 = Debug|x86
30 | {89E7C4DB-8056-47A3-897E-9D8D4A70C305}.Release|Any CPU.ActiveCfg = Release|Any CPU
31 | {89E7C4DB-8056-47A3-897E-9D8D4A70C305}.Release|Any CPU.Build.0 = Release|Any CPU
32 | {89E7C4DB-8056-47A3-897E-9D8D4A70C305}.Release|x86.ActiveCfg = Release|x86
33 | {89E7C4DB-8056-47A3-897E-9D8D4A70C305}.Release|x86.Build.0 = Release|x86
34 | {F403FF24-95D3-442C-A620-6F19CAE22059}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
35 | {F403FF24-95D3-442C-A620-6F19CAE22059}.Debug|Any CPU.Build.0 = Debug|Any CPU
36 | {F403FF24-95D3-442C-A620-6F19CAE22059}.Debug|x86.ActiveCfg = Debug|x86
37 | {F403FF24-95D3-442C-A620-6F19CAE22059}.Debug|x86.Build.0 = Debug|x86
38 | {F403FF24-95D3-442C-A620-6F19CAE22059}.Release|Any CPU.ActiveCfg = Release|Any CPU
39 | {F403FF24-95D3-442C-A620-6F19CAE22059}.Release|Any CPU.Build.0 = Release|Any CPU
40 | {F403FF24-95D3-442C-A620-6F19CAE22059}.Release|x86.ActiveCfg = Release|x86
41 | {F403FF24-95D3-442C-A620-6F19CAE22059}.Release|x86.Build.0 = Release|x86
42 | EndGlobalSection
43 | GlobalSection(SolutionProperties) = preSolution
44 | HideSolutionNode = FALSE
45 | EndGlobalSection
46 | EndGlobal
47 |
--------------------------------------------------------------------------------
/libs/MySql.Data.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SkyFire/PacketViewer/976dfe3558c079a5118ace5745061370e4af247d/libs/MySql.Data.dll
--------------------------------------------------------------------------------
/libs/System.Data.SQLite.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SkyFire/PacketViewer/976dfe3558c079a5118ace5745061370e4af247d/libs/System.Data.SQLite.dll
--------------------------------------------------------------------------------
/src/Core/Movement/Coords.cs:
--------------------------------------------------------------------------------
1 | using System.Globalization;
2 |
3 | namespace WowTools.Core
4 | {
5 | ///
6 | /// Represents a coordinates of WoW object without orientation.
7 | ///
8 | public struct Coords3
9 | {
10 | public float X;
11 | public float Y;
12 | public float Z;
13 |
14 | ///
15 | /// Converts the numeric values of this instance to its equivalent string representations, separator is space.
16 | ///
17 | public override string ToString()
18 | {
19 | return string.Format(CultureInfo.InvariantCulture, "{0} {1} {2}", X, Y, Z);
20 | }
21 | }
22 |
23 | ///
24 | /// Represents a coordinates of WoW object with specified orientation.
25 | ///
26 | public struct Coords4
27 | {
28 | public float X;
29 | public float Y;
30 | public float Z;
31 | public float O;
32 |
33 | ///
34 | /// Converts the numeric values of this instance to its equivalent string representations, separator is space.
35 | ///
36 | public override string ToString()
37 | {
38 | return string.Format(CultureInfo.InvariantCulture, "{0} {1} {2} {3}", X, Y, Z, O);
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/Core/Movement/MovementFlags.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WowTools.Core
4 | {
5 | [Flags]
6 | public enum MovementFlags : uint
7 | {
8 | NONE = 0x00000000,
9 | FORWARD = 0x00000001,
10 | BACKWARD = 0x00000002,
11 | STRAFELEFT = 0x00000004,
12 | STRAFERIGHT = 0x00000008,
13 | TURNLEFT = 0x00000010,
14 | TURNRIGHT = 0x00000020,
15 | PITCHUP = 0x00000040,
16 | PITCHDOWN = 0x00000080,
17 | WALKMODE = 0x00000100,
18 | ONTRANSPORT = 0x00000200,
19 | LEVITATING = 0x00000400,
20 | ROOT = 0x00000800,
21 | FALLING = 0x00001000,
22 | FALLINGFAR = 0x00002000,
23 | PENDINGSTOP = 0x00004000,
24 | PENDINGSTRAFESTOP = 0x00008000,
25 | PENDINGFORWARD = 0x00010000,
26 | PENDINGBACKWARD = 0x00020000,
27 | PENDINGSTRAFELEFT = 0x00040000,
28 | PENDINGSTRAFERIGHT = 0x00080000,
29 | PENDINGROOT = 0x00100000,
30 | SWIMMING = 0x00200000,
31 | ASCENDING = 0x00400000,
32 | DESCENDING = 0x00800000,
33 | CAN_FLY = 0x01000000,
34 | FLYING = 0x02000000,
35 | SPLINEELEVATION = 0x04000000,
36 | SPLINEENABLED = 0x08000000,
37 | WATERWALKING = 0x10000000,
38 | SAFEFALL = 0x20000000,
39 | HOVER = 0x40000000
40 | };
41 |
42 | [Flags]
43 | public enum MovementFlags2 : ushort
44 | {
45 | None = 0x0000,
46 | Unknown1 = 0x0001,
47 | Unknown2 = 0x0002,
48 | Unknown3 = 0x0004,
49 | FullSpeedTurning = 0x0008,
50 | FullSpeedPitching = 0x0010,
51 | AlwaysAllowPitching = 0x0020,
52 | Unknown4 = 0x0040,
53 | Unknown5 = 0x0080,
54 | Unknown6 = 0x0100,
55 | Unknown7 = 0x0200,
56 | InterpolatedPlayerMovement = 0x0400,
57 | InterpolatedPlayerTurning = 0x0800,
58 | InterpolatedPlayerPitching = 0x1000,
59 | Unknown8 = 0x2000,
60 | Unknown9 = 0x4000,
61 | Unknown10 = 0x8000
62 | };
63 | }
64 |
--------------------------------------------------------------------------------
/src/Core/Movement/SplineFlags.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WowTools.Core
4 | {
5 | [Flags]
6 | public enum SplineFlags : uint
7 | {
8 | NONE = 0x00000000,
9 | FORWARD = 0x00000001,
10 | BACKWARD = 0x00000002,
11 | STRAFELEFT = 0x00000004,
12 | STRAFERIGHT = 0x00000008,
13 | TURNLEFT = 0x00000010,
14 | TURNRIGHT = 0x00000020,
15 | PITCHUP = 0x00000040,
16 | PITCHDOWN = 0x00000080,
17 | DONE = 0x00000100,
18 | FALLING = 0x00000200,
19 | NOSPLINE = 0x00000400,
20 | TRAJECTORY = 0x00000800,
21 | WALKMODE = 0x00001000,
22 | FLYING = 0x00002000,
23 | KNOCKBACK = 0x00004000,
24 | FINALPOINT = 0x00008000,
25 | FINALTARGET = 0x00010000,
26 | FINALORIENT = 0x00020000,
27 | CATMULLROM = 0x00040000,
28 | UNK1 = 0x00080000,
29 | UNK2 = 0x00100000,
30 | UNK3 = 0x00200000,
31 | UNK4 = 0x00400000,
32 | UNK5 = 0x00800000,
33 | UNK6 = 0x01000000,
34 | UNK7 = 0x02000000,
35 | UNK8 = 0x04000000,
36 | UNK9 = 0x08000000,
37 | UNK10 = 0x10000000,
38 | UNK11 = 0x20000000,
39 | UNK12 = 0x40000000,
40 | UNK13 = 0x80000000,
41 | };
42 |
43 | public enum SplineMode : byte
44 | {
45 | Linear = 0,
46 | CatmullRom = 1,
47 | Bezier3 = 2
48 | }
49 |
50 | public enum SplineType : byte
51 | {
52 | Normal = 0,
53 | Stop = 1,
54 | FacingSpot = 2,
55 | FacingTarget = 3,
56 | FacingAngle = 4
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/src/Core/Movement/SplineInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.IO;
3 |
4 | namespace WowTools.Core
5 | {
6 | public class SplineInfo
7 | {
8 | public SplineFlags Flags { get; private set; }
9 | public Coords3 Point { get; private set; }
10 | public ulong Guid { get; private set; }
11 | public float Rotation { get; private set; }
12 | public uint CurrentTime { get; private set; }
13 | public uint FullTime { get; private set; }
14 | public uint Unknown1 { get; private set; }
15 | public float DurationMultiplier { get; private set; }
16 | public float UnknownFloat2 { get; private set; }
17 | public float UnknownFloat3 { get; private set; }
18 | public uint Unknown2 { get; private set; }
19 | public uint Count { get; private set; }
20 | private readonly List splines = new List();
21 | public SplineMode SplineMode { get; private set; }
22 | public Coords3 EndPoint { get; private set; }
23 |
24 | public List Splines
25 | {
26 | get { return splines; }
27 | }
28 |
29 | public static SplineInfo Read(BinaryReader gr)
30 | {
31 | var spline = new SplineInfo();
32 | spline.Flags = (SplineFlags)gr.ReadUInt32();
33 |
34 | if (spline.Flags.HasFlag(SplineFlags.FINALPOINT))
35 | {
36 | spline.Point = gr.ReadCoords3();
37 | }
38 |
39 | if (spline.Flags.HasFlag(SplineFlags.FINALTARGET))
40 | {
41 | spline.Guid = gr.ReadUInt64();
42 | }
43 |
44 | if (spline.Flags.HasFlag(SplineFlags.FINALORIENT))
45 | {
46 | spline.Rotation = gr.ReadSingle();
47 | }
48 |
49 | spline.CurrentTime = gr.ReadUInt32();
50 | spline.FullTime = gr.ReadUInt32();
51 | spline.Unknown1 = gr.ReadUInt32();
52 |
53 | spline.DurationMultiplier = gr.ReadSingle();
54 | spline.UnknownFloat2 = gr.ReadSingle();
55 | spline.UnknownFloat3 = gr.ReadSingle();
56 |
57 | spline.Unknown2 = gr.ReadUInt32();
58 |
59 | spline.Count = gr.ReadUInt32();
60 |
61 | for (uint i = 0; i < spline.Count; ++i)
62 | {
63 | spline.splines.Add(gr.ReadCoords3());
64 | }
65 |
66 | spline.SplineMode = (SplineMode)gr.ReadByte();
67 |
68 | spline.EndPoint = gr.ReadCoords3();
69 | return spline;
70 | }
71 | };
72 | }
73 |
--------------------------------------------------------------------------------
/src/Core/Movement/TransportInfo.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using System.Text;
3 |
4 | namespace WowTools.Core
5 | {
6 | public class TransportInfo
7 | {
8 | public ulong Guid { get; set; }
9 | public Coords3 Position { get; set; }
10 | public float Facing { get; set; }
11 | public uint Time { get; set; }
12 | public byte Seat { get; set; }
13 | public uint Time2 { get; set; }
14 |
15 | public static TransportInfo Read(BinaryReader reader, MovementFlags2 flags2)
16 | {
17 | var tInfo = new TransportInfo();
18 | tInfo.Guid = reader.ReadPackedGuid();
19 | tInfo.Position = reader.ReadCoords3();
20 | tInfo.Facing = reader.ReadSingle();
21 | tInfo.Time = reader.ReadUInt32();
22 | tInfo.Seat = reader.ReadByte();
23 | if (flags2.HasFlag(MovementFlags2.InterpolatedPlayerMovement))
24 | tInfo.Time2 = reader.ReadUInt32();
25 | return tInfo;
26 | }
27 |
28 | public override string ToString()
29 | {
30 | var sb = new StringBuilder();
31 | sb.AppendFormat("Transport Guid: 0x{0:X16}", Guid).AppendLine();
32 | sb.AppendFormat("Transport Position: {0}", Position).AppendLine();
33 | sb.AppendFormat("Transport Facing: {0}", Facing).AppendLine();
34 | sb.AppendFormat("Transport TimeStamp: {0}", Time).AppendLine();
35 | sb.AppendFormat("Transport Seat: {0}", Seat).AppendLine();
36 | sb.AppendFormat("Transport TimeStamp2: {0}", Time2).AppendLine();
37 | return sb.ToString();
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/Core/Packet.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 |
3 | namespace WowTools.Core
4 | {
5 | public enum Direction
6 | {
7 | Client = 0x00, // from client
8 | Server = 0x01 // from server
9 | }
10 |
11 | public class Packet
12 | {
13 | public Direction Direction { get; private set; }
14 |
15 | public uint OpcodeNumber { get; private set; }
16 | public OpCodes Code { get { return OpcodeDB.GetOpcode(OpcodeNumber); } }
17 | public string Name { get { return OpcodeDB.GetName(OpcodeNumber); } }
18 |
19 | public byte[] Data { get; private set; }
20 |
21 | public uint UnixTime { get; private set; }
22 |
23 | public uint TicksCount { get; private set; }
24 |
25 | public Packet(Direction direction, uint opcode, byte[] data, uint unixtime, uint tickscount)
26 | {
27 | Direction = direction;
28 | OpcodeNumber = opcode;
29 | Data = data;
30 | UnixTime = unixtime;
31 | TicksCount = tickscount;
32 | }
33 |
34 | public BinaryReader CreateReader()
35 | {
36 | return new BinaryReader(new MemoryStream(Data));
37 | }
38 |
39 | public void DecompressDataAndSetOpcode(OpCodes opcode)
40 | {
41 | Data = Data.Decompress();
42 | OpcodeNumber = OpcodeDB.GetOpcode(opcode);
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/Core/Parser/ParserAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WowTools.Core
4 | {
5 | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
6 | public class ParserAttribute : Attribute
7 | {
8 | public ParserAttribute(OpCodes code)
9 | {
10 | Code = code;
11 | }
12 |
13 | public OpCodes Code { get; private set; }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Core/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("WowTools.Core")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("WowTools.Core")]
13 | [assembly: AssemblyCopyright("Copyright © 2009")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("7ae081cc-94b9-4915-bafd-7f6dc7074b15")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/src/Core/WoWObject.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using WowTools.Core;
3 |
4 | namespace WowTools.Core
5 | {
6 | ///
7 | /// WoW Object Class
8 | ///
9 | public class WoWObject : WoWObjectUpdate
10 | {
11 | private readonly List updates = new List();
12 |
13 | public WoWObject(ObjectTypes typeId, MovementBlock movement, IDictionary data)
14 | : base(data)
15 | {
16 | TypeId = typeId;
17 | Movement = movement;
18 | }
19 |
20 | public ObjectTypes TypeId { get; private set; }
21 |
22 | public IEnumerable Updates
23 | {
24 | get { return updates; }
25 | }
26 |
27 | public MovementBlock Movement { get; private set; }
28 |
29 | public void AddUpdate(WoWObjectUpdate update)
30 | {
31 | updates.Add(update);
32 | }
33 |
34 | public uint GetGUIDHigh()
35 | {
36 | return GetUInt32Value(1); // OBJECT_FIELD_GUID (high)
37 | }
38 |
39 | public new ObjectTypeMask GetType()
40 | {
41 | return (ObjectTypeMask)GetUInt32Value(2); // OBJECT_FIELD_TYPE
42 | }
43 |
44 | private uint GetUInt32Value(int index)
45 | {
46 | uint result;
47 | Data.TryGetValue(index, out result);
48 | return result;
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/Core/WoWObjectUpdate.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using System.IO;
4 |
5 | namespace WowTools.Core
6 | {
7 | public class WoWObjectUpdate
8 | {
9 | public IDictionary Data { get; private set; }
10 |
11 | protected WoWObjectUpdate(IDictionary data)
12 | {
13 | Data = data;
14 | }
15 |
16 | public static WoWObjectUpdate Read(BinaryReader gr)
17 | {
18 | byte blocksCount = gr.ReadByte();
19 | var updatemask = new int[blocksCount];
20 |
21 | for (int i = 0; i < updatemask.Length; ++i)
22 | updatemask[i] = gr.ReadInt32();
23 |
24 | var mask = new BitArray(updatemask);
25 |
26 | var values = new Dictionary();
27 |
28 | for (int i = 0; i < mask.Count; ++i)
29 | if (mask[i])
30 | values[i] = gr.ReadUInt32();
31 |
32 | return new WoWObjectUpdate(values);
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/UpdatePacketParser/FilterForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 | using WowTools.Core;
4 |
5 | namespace UpdatePacketParser
6 | {
7 | [Flags]
8 | public enum CustomFilterMask
9 | {
10 | CUSTOM_FILTER_NONE = 0,
11 | CUSTOM_FILTER_UNITS = 1,
12 | CUSTOM_FILTER_PETS = 2,
13 | CUSTOM_FILTER_VEHICLES = 4,
14 | CUSTOM_FILTER_OBJECTS = 8,
15 | CUSTOM_FILTER_TRANSPORT = 16,
16 | CUSTOM_FILTER_MO_TRANSPORT = 32
17 | };
18 |
19 | public partial class FilterForm : Form
20 | {
21 | public FilterForm()
22 | {
23 | InitializeComponent();
24 | }
25 |
26 | private void button2_Click(object sender, EventArgs e)
27 | {
28 | Close();
29 | }
30 |
31 | private void button1_Click(object sender, EventArgs e)
32 | {
33 | var mask = ObjectTypeMask.TYPEMASK_NONE;
34 |
35 | if (checkBox1.Checked)
36 | mask |= ObjectTypeMask.TYPEMASK_ITEM;
37 |
38 | if (checkBox2.Checked)
39 | mask |= ObjectTypeMask.TYPEMASK_CONTAINER;
40 |
41 | if (checkBox3.Checked)
42 | mask |= ObjectTypeMask.TYPEMASK_UNIT;
43 |
44 | if (checkBox4.Checked)
45 | mask |= ObjectTypeMask.TYPEMASK_PLAYER;
46 |
47 | if (checkBox5.Checked)
48 | mask |= ObjectTypeMask.TYPEMASK_GAMEOBJECT;
49 |
50 | if (checkBox6.Checked)
51 | mask |= ObjectTypeMask.TYPEMASK_DYNAMICOBJECT;
52 |
53 | if (checkBox7.Checked)
54 | mask |= ObjectTypeMask.TYPEMASK_CORPSE;
55 |
56 | var customMask = CustomFilterMask.CUSTOM_FILTER_NONE;
57 |
58 | if (checkBox8.Checked)
59 | customMask |= CustomFilterMask.CUSTOM_FILTER_TRANSPORT;
60 |
61 | if (checkBox9.Checked)
62 | customMask |= CustomFilterMask.CUSTOM_FILTER_PETS;
63 |
64 | if (checkBox10.Checked)
65 | customMask |= CustomFilterMask.CUSTOM_FILTER_VEHICLES;
66 |
67 | if (checkBox11.Checked)
68 | customMask |= CustomFilterMask.CUSTOM_FILTER_MO_TRANSPORT;
69 |
70 | if (checkBox12.Checked)
71 | customMask |= CustomFilterMask.CUSTOM_FILTER_UNITS;
72 |
73 | if (checkBox13.Checked)
74 | customMask |= CustomFilterMask.CUSTOM_FILTER_OBJECTS;
75 |
76 | ((FrmMain)Owner).PrintObjectType(mask, customMask);
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/UpdatePacketParser/Packet.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using WowTools.Core;
3 |
4 | namespace UpdatePacketParser
5 | {
6 | public class Packet
7 | {
8 | public int Size { get; set; }
9 | public uint OpcodeNumber;
10 | public OpCodes Code
11 | {
12 | get { return OpcodeDB.GetOpcode(OpcodeNumber); }
13 | }
14 | public byte[] Data { get; set; }
15 |
16 | public BinaryReader CreateReader()
17 | {
18 | return new BinaryReader(new MemoryStream(Data));
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/UpdatePacketParser/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace UpdatePacketParser
5 | {
6 | static class Program
7 | {
8 | ///
9 | /// The main entry point for the application.
10 | ///
11 | [STAThread]
12 | static void Main()
13 | {
14 | Application.EnableVisualStyles();
15 | Application.SetCompatibleTextRenderingDefault(false);
16 | Application.Run(new FrmMain());
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/UpdatePacketParser/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("UpdatePacketParser")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("UpdatePacketParser")]
13 | [assembly: AssemblyCopyright("Copyright © 2007")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("48a7a499-27a0-440e-a776-56716de1eba7")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/src/UpdatePacketParser/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.1
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace UpdatePacketParser.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UpdatePacketParser.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/src/UpdatePacketParser/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.1
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace UpdatePacketParser.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/UpdatePacketParser/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/UpdatePacketParser/Readers/IzidorPackerReader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Text;
5 | using WowTools.Core;
6 |
7 | namespace UpdatePacketParser
8 | {
9 | public class IzidorPacketReader : IPacketReader
10 | {
11 | private string FileName;
12 |
13 | public IzidorPacketReader(string filename)
14 | {
15 | FileName = filename;
16 | ushort build = 14333; // assume the latest build cause the format doesn't contain it
17 | UpdateFieldsLoader.LoadUpdateFields(build);
18 | }
19 |
20 | public virtual IEnumerable ReadPackets()
21 | {
22 | var packets = new List();
23 | using (TextReader tr = new StreamReader(FileName))
24 | {
25 | while (tr.Peek() != -1)
26 | {
27 | Packet p = new Packet();
28 | string line = tr.ReadLine();
29 | string[] data = line.Split('<', '>', '"');
30 | p.OpcodeNumber = UInt16.Parse(data[6]);
31 | string directdata = data[8];
32 | p.Data = ParseHex(directdata);
33 | p.Size = p.Data.Length;
34 |
35 | packets.Add(p);
36 | }
37 | }
38 | return packets;
39 | }
40 |
41 | public static byte[] ParseHex(string hex)
42 | {
43 | int offset = hex.StartsWith("0x") ? 2 : 0;
44 | if ((hex.Length % 2) != 0)
45 | {
46 | throw new ArgumentException("Invalid length: " + hex.Length);
47 | }
48 | byte[] ret = new byte[(hex.Length - offset) / 2];
49 |
50 | for (int i = 0; i < ret.Length; i++)
51 | {
52 | ret[i] = (byte)((ParseNybble(hex[offset]) << 4)
53 | | ParseNybble(hex[offset + 1]));
54 | offset += 2;
55 | }
56 | return ret;
57 | }
58 |
59 | static int ParseNybble(char c)
60 | {
61 | if (c >= '0' && c <= '9')
62 | {
63 | return c - '0';
64 | }
65 | if (c >= 'A' && c <= 'F')
66 | {
67 | return c - 'A' + 10;
68 | }
69 | if (c >= 'a' && c <= 'f')
70 | {
71 | return c - 'a' + 10;
72 | }
73 | throw new ArgumentException("Invalid hex digit: " + c);
74 | }
75 |
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/src/UpdatePacketParser/Readers/PacketReader.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace UpdatePacketParser
4 | {
5 | public interface IPacketReader
6 | {
7 | IEnumerable ReadPackets();
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/UpdatePacketParser/Readers/SniffitztPacketReader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Xml;
4 | using WowTools.Core;
5 |
6 | namespace UpdatePacketParser
7 | {
8 | public class SniffitztPacketReader : IPacketReader
9 | {
10 | private readonly XmlDocument _document;
11 | private readonly XmlNodeList _packets;
12 | private int _readPackets;
13 |
14 | public SniffitztPacketReader(string filename)
15 | {
16 | _document = new XmlDocument();
17 | _document.Load(filename);
18 |
19 | var build = Convert.ToUInt32(_document.GetElementsByTagName("header")[0].Attributes["clientBuild"].Value);
20 |
21 | _packets = _document.GetElementsByTagName("packet");
22 |
23 | UpdateFieldsLoader.LoadUpdateFields(build);
24 | }
25 |
26 | public Packet ReadPacket()
27 | {
28 | if (_readPackets >= _packets.Count)
29 | {
30 | return null;
31 | }
32 |
33 | var element = _packets[_readPackets];
34 |
35 | var data = element.InnerText;
36 |
37 | var len = data.Length / 2;
38 |
39 | var bytes = new byte[len];
40 |
41 | for (var i = 0; i < len; ++i)
42 | {
43 | var pos = i * 2;
44 | var str = data[pos].ToString();
45 | str += data[pos + 1];
46 | bytes[i] = byte.Parse(str, System.Globalization.NumberStyles.HexNumber);
47 | }
48 |
49 | var packet = new Packet();
50 | packet.Size = len;
51 | packet.OpcodeNumber = Convert.ToUInt32(element.Attributes["opcode"].Value);
52 | packet.Data = bytes;
53 |
54 | _readPackets++;
55 | return packet;
56 | }
57 |
58 | public virtual IEnumerable ReadPackets()
59 | {
60 | var packets = new List();
61 | Packet packet;
62 | while ((packet = ReadPacket()) != null)
63 | {
64 | packets.Add(packet);
65 | }
66 | return packets;
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/UpdatePacketParser/Readers/SqLitePacketReader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Data.Common;
4 | using WowTools.Core;
5 |
6 | namespace UpdatePacketParser
7 | {
8 | public class SqLitePacketReader : IPacketReader
9 | {
10 | private static readonly DbProviderFactory factory = System.Data.SQLite.SQLiteFactory.Instance;
11 | private readonly DbDataReader _reader;
12 |
13 | public SqLitePacketReader(string filename)
14 | {
15 | var connection = factory.CreateConnection();
16 | connection.ConnectionString = "Data Source=" + filename;
17 | connection.Open();
18 |
19 | //TODO: Добавить определение билда!
20 | var command = connection.CreateCommand();
21 | command.CommandText = "SELECT opcode, data FROM packets WHERE opcode=169 OR opcode=502 ORDER BY id;";
22 | command.Prepare();
23 |
24 | _reader = command.ExecuteReader();
25 |
26 | //TODO: Добавить определение билда!
27 | UpdateFieldsLoader.LoadUpdateFields(10026);
28 | }
29 |
30 | public Packet ReadPacket()
31 | {
32 | if (!_reader.Read())
33 | {
34 | _reader.Close();
35 | return null;
36 | }
37 |
38 | var packet = new Packet();
39 | packet.OpcodeNumber = (uint)_reader.GetInt32(0);
40 | packet.Data = (byte[])_reader.GetValue(1);
41 | packet.Size = packet.Data.Length;
42 | return packet;
43 | }
44 |
45 | public virtual IEnumerable ReadPackets()
46 | {
47 | var packets = new List();
48 | Packet packet;
49 | while ((packet = ReadPacket()) != null)
50 | {
51 | packets.Add(packet);
52 | }
53 | return packets;
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/src/UpdatePacketParser/UpdatePacketParser.csproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | en-US
11 | false
12 |
13 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Forms/FrmSearch.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace WoWPacketViewer
5 | {
6 | public partial class FrmSearch : Form
7 | {
8 | public PacketViewTab CurrentTab { get; set; }
9 |
10 | public FrmSearch()
11 | {
12 | InitializeComponent();
13 | }
14 |
15 | private void button2_Click(object sender, EventArgs e)
16 | {
17 | Close();
18 | }
19 |
20 | private void button1_Click(object sender, EventArgs e)
21 | {
22 | FindNext();
23 | }
24 |
25 | public void FindNext()
26 | {
27 | var viewTab = CurrentTab as ISupportFind;
28 | var opcode = textBox1.Text;
29 | if (viewTab != null && !String.IsNullOrEmpty(opcode))
30 | viewTab.Search(opcode, radioButton1.Checked, !checkBox1.Checked);
31 | }
32 |
33 | private void FrmSearch_FormClosing(object sender, FormClosingEventArgs e)
34 | {
35 | if (e.CloseReason == CloseReason.UserClosing)
36 | {
37 | e.Cancel = true;
38 | Owner.Activate();
39 | Hide();
40 | }
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Forms/FrmSettings.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 | using WoWPacketViewer.Properties;
10 |
11 | namespace WoWPacketViewer
12 | {
13 | public partial class FrmSettings : Form
14 | {
15 | bool canClose = false;
16 |
17 | public FrmSettings()
18 | {
19 | InitializeComponent();
20 | }
21 |
22 | private void FrmSettings_Load(object sender, EventArgs e)
23 | {
24 | edtHost.Text = Settings.Default.Host;
25 | edtPort.Text = Settings.Default.Port;
26 | edtUser.Text = Settings.Default.User;
27 | edtPass.Text = Settings.Default.Pass;
28 | edtOpcodeDBName.Text = Settings.Default.OpcodeDBName;
29 | }
30 |
31 | private void BtnStave_Click(object sender, EventArgs e)
32 | {
33 | canClose = true;
34 | Settings.Default.Host = edtHost.Text;
35 | Settings.Default.Port = edtPort.Text;
36 | Settings.Default.User = edtUser.Text;
37 | Settings.Default.Pass = edtPass.Text;
38 | Settings.Default.OpcodeDBName = edtOpcodeDBName.Text;
39 | Settings.Default.Save();
40 | Settings.Default.Reload();
41 | this.Close();
42 | }
43 |
44 | private void FrmSettings_FormClosing(object sender, FormClosingEventArgs e)
45 | {
46 | if (!canClose)
47 | BtnStave.PerformClick();
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Forms/ListViewEx.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | public class ListViewEx : ListView
6 | {
7 | public ListViewEx()
8 | : base()
9 | {
10 | DoubleBuffered = true;
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/ISupportFind.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public interface ISupportFind
4 | {
5 | void Search(string text, bool searchUp, bool ignoreCase);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/AIReaction.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 | using WowTools.Core;
4 |
5 | namespace WoWPacketViewer
6 | {
7 | public enum AIReaction
8 | {
9 | Alert = 0,
10 | Friendly = 1,
11 | Hostile = 2,
12 | Afraid = 3,
13 | Destroy = 4
14 | }
15 | }
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/AccountDataType.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 | using WowTools.Core;
4 |
5 | namespace WoWPacketViewer
6 | {
7 | public enum AccountDataType : uint
8 | {
9 | GLOBAL_CONFIG_CACHE = 0, // 0x01 g
10 | PER_CHARACTER_CONFIG_CACHE = 1, // 0x02 p
11 | GLOBAL_BINDINGS_CACHE = 2, // 0x04 g
12 | PER_CHARACTER_BINDINGS_CACHE = 3, // 0x08 p
13 | GLOBAL_MACROS_CACHE = 4, // 0x10 g
14 | PER_CHARACTER_MACROS_CACHE = 5, // 0x20 p
15 | PER_CHARACTER_LAYOUT_CACHE = 6, // 0x40 p
16 | PER_CHARACTER_CHAT_CACHE = 7, // 0x80 p
17 | };
18 | }
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ActionButtonType.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 | using WowTools.Core;
4 |
5 | namespace WoWPacketViewer
6 | {
7 | public enum ActionButtonType
8 | {
9 | Spell = 0,
10 | Click = 1,
11 | EquipSet = 32,
12 | Macro = 64,
13 | Item = 128
14 | };
15 | }
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/AmmoType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum AmmoType
4 | {
5 | Arrows = 2,
6 | Bullets = 3,
7 | Thrown = 4
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/AttackerStateFlags.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | enum AttackerStateFlags
7 | {
8 | None = 0,
9 | Unk1 = 0x1,
10 | PlayWoundAnimation = 0x2,
11 | OffHand = 0x4,
12 | Miss = 0x10,
13 | AbsorbType1 = 0x20,
14 | AbsorbType2 = 0x40,
15 | ResistType1 = 0x80,
16 | ResistType2 = 0x100,
17 | Critical = 0x200,
18 |
19 | Block = 0x2000,
20 | HideWorldTextForNoDamage = 0x4000,
21 | BloodSpurtInBack = 0x8000,
22 | Glancing = 0x10000,
23 | Crushing = 0x20000,
24 | Ignore = 0x40000,
25 | ModifyPredictedPower = 0x800000,
26 | ForceShowBloodSpurt = 0x1000000,
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/AuraFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum AuraFlag
7 | {
8 | None = 0x00,
9 | EffectIndex0 = 0x01,
10 | EffectIndex1 = 0x02,
11 | EffectIndex2 = 0x04,
12 | NotCaster = 0x08,
13 | Positive = 0x10,
14 | Duration = 0x20,
15 | Unknown = 0x40,
16 | Negative = 0x80
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/BagFamilyMask.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum BagFamilyMask
4 | {
5 | None = 0x00000000,
6 | Arrows = 0x00000001,
7 | Bullets = 0x00000002,
8 | Soulshards = 0x00000004,
9 | LeatherworkingSupplies = 0x00000008,
10 | InscriptionSupplies = 0x00000010,
11 | Herbs = 0x00000020,
12 | EnchantingSupplies = 0x00000040,
13 | EngineeringSupplies = 0x00000080,
14 | Keys = 0x00000100,
15 | Gems = 0x00000200,
16 | MiningSupplies = 0x00000400,
17 | SoulboundEquipment = 0x00000800,
18 | VanityPets = 0x00001000,
19 | CurrencyTokens = 0x00002000,
20 | QuestItems = 0x00004000
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/BillingFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum BillingFlag
7 | {
8 | None = 0x00,
9 | Unused = 0x01,
10 | RecurringBilling = 0x02,
11 | Trial1 = 0x04,
12 | Igr = 0x08,
13 | Usage = 0x10,
14 | TimeMixture = 0x20,
15 | Restricted = 0x40,
16 | EnableCais = 0x80
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/CalendarResponseResult.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 | using WowTools.Core;
4 |
5 | namespace WoWPacketViewer
6 | {
7 | public enum CalendarResponseResult : uint
8 | {
9 | CALENDAR_ERROR_GUILD_EVENTS_EXCEEDED = 1,
10 | CALENDAR_ERROR_EVENTS_EXCEEDED = 2, // max of 20 (?) exceeded
11 | CALENDAR_ERROR_SELF_INVITES_EXCEEDED = 3,
12 | CALENDAR_ERROR_OTHER_INVITES_EXCEEDED = 4, // std::string
13 | CALENDAR_ERROR_PERMISSIONS = 5,
14 | CALENDAR_ERROR_EVENT_INVALID = 6, // Event not found.
15 | CALENDAR_ERROR_NOT_INVITED = 7,
16 | CALENDAR_ERROR_INTERNAL = 8,
17 | CALENDAR_ERROR_GUILD_PLAYER_NOT_IN_GUILD = 9,
18 | CALENDAR_ERROR_ALREADY_INVITED_TO_EVENT_S = 10, // std::string
19 | CALENDAR_ERROR_PLAYER_NOT_FOUND = 11,
20 | CALENDAR_ERROR_NOT_ALLIED = 12,
21 | CALENDAR_ERROR_IGNORING_YOU_S = 13, // std::string
22 | CALENDAR_ERROR_INVITES_EXCEEDED = 14,
23 | // 15 ?
24 | CALENDAR_ERROR_INVALID_DATE = 16,
25 | CALENDAR_ERROR_INVALID_TIME = 17,
26 | // 18 ?
27 | CALENDAR_ERROR_NEEDS_TITLE = 19,
28 | CALENDAR_ERROR_EVENT_PASSED = 20,
29 | CALENDAR_ERROR_EVENT_LOCKED = 21,
30 | CALENDAR_ERROR_DELETE_CREATOR_FAILED = 22,
31 | CALENDAR_ERROR_SYSTEM_DISABLED = 24,
32 | CALENDAR_ERROR_RESTRICTED_ACCOUNT = 25,
33 | CALENDAR_ERROR_ARENA_EVENTS_EXCEEDED = 26,
34 | CALENDAR_ERROR_RESTRICTED_LEVEL = 27,
35 | CALENDAR_ERROR_USER_SQUELCHED = 28,
36 | CALENDAR_ERROR_NO_INVITE = 29,
37 | // 30-35 ?
38 | CALENDAR_ERROR_EVENT_WRONG_SERVER = 36,
39 | CALENDAR_ERROR_INVITE_WRONG_SERVER = 37,
40 | CALENDAR_ERROR_NO_GUILD_INVITES = 38,
41 | CALENDAR_ERROR_INVALID_SIGNUP = 39,
42 | CALENDAR_ERROR_NO_MODERATOR = 40,
43 | };
44 | }
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/CastFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum CastFlag
7 | {
8 | None = 0x00000000,
9 | PendingCast = 0x00000001, // 4.x NoCombatLog
10 | Unknown1 = 0x00000002,
11 | Unknown2 = 0x00000004,
12 | Unknown3 = 0x00000008,
13 | Unknown4 = 0x00000010,
14 | Projectile = 0x00000020,
15 | Unknown5 = 0x00000040,
16 | Unknown6 = 0x00000080,
17 | Unknown7 = 0x00000100,
18 | Unknown8 = 0x00000200,
19 | Unknown9 = 0x00000400,
20 | PredictedPower = 0x00000800,
21 | Unknown10 = 0x00001000,
22 | Unknown11 = 0x00002000,
23 | Unknown12 = 0x00004000,
24 | Unknown13 = 0x00008000,
25 | Unknown14 = 0x00010000,
26 | AdjustMissile = 0x00020000, // 4.x
27 | Unknown16 = 0x00040000,
28 | VisualChain = 0x00080000, // 4.x
29 | Unknown18 = 0x00100000,
30 | RuneInfo = 0x00200000, // 4.x PredictedRunes
31 | Unknown19 = 0x00400000,
32 | Unknown20 = 0x00800000,
33 | Unknown21 = 0x01000000,
34 | Unknown22 = 0x02000000,
35 | Immunity = 0x04000000 // 4.x
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ChannelFlag.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum ChannelFlag
4 | {
5 | None = 0x00,
6 | Custom = 0x01,
7 | Unknown1 = 0x02,
8 | Trade = 0x04,
9 | NotLfg = 0x08,
10 | General = 0x10,
11 | City = 0x20,
12 | Lfg = 0x40,
13 | Voice = 0x80
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ChannelMemberFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum ChannelMemberFlag
7 | {
8 | None = 0x00,
9 | Owner = 0x01,
10 | Moderator = 0x02,
11 | Voiced = 0x04,
12 | Muted = 0x08,
13 | Custom = 0x10,
14 | MicMuted = 0x20,
15 | Unknown1 = 0x40,
16 | Unknown2 = 0x80
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/CharacterFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum CharacterFlag
7 | {
8 | None = 0x00000000,
9 | TransferLock = 0x00000001,
10 | Unknown1 = 0x00000002,
11 | Unknown2 = 0x00000004,
12 | Unknown3 = 0x00000008,
13 | Unknown4 = 0x00000010,
14 | Unknown5 = 0x00000020,
15 | Unknown6 = 0x00000040,
16 | Unknown7 = 0x00000080,
17 | Unknown8 = 0x00000100,
18 | Unknown9 = 0x00000200,
19 | HideHelm = 0x00000400,
20 | HideCloak = 0x00000800,
21 | Unknown11 = 0x00001000,
22 | Ghost = 0x00002000,
23 | Rename = 0x00004000,
24 | Unknown13 = 0x00008000,
25 | Unknown14 = 0x00010000,
26 | Unknown15 = 0x00020000,
27 | Unknown16 = 0x00040000,
28 | Unknown17 = 0x00080000,
29 | Unknown18 = 0x00100000,
30 | Unknown19 = 0x00200000,
31 | Unknown20 = 0x00400000,
32 | Unknown21 = 0x00800000,
33 | BillingLock = 0x01000000,
34 | Declined = 0x02000000,
35 | Unknown22 = 0x04000000,
36 | Unknown23 = 0x08000000,
37 | Unknown24 = 0x10000000,
38 | Unknown25 = 0x20000000,
39 | Unknown26 = 0x40000000
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ChatMessageType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum ChatMessageType : uint
4 | {
5 | System = 0,
6 | Say = 1,
7 | Party = 2,
8 | Raid = 3,
9 | Guild = 4,
10 | Officer = 5,
11 | Yell = 6,
12 | Whisper = 7,
13 | WhisperForeign = 8,
14 | WhisperInform = 9,
15 | Emote = 10,
16 | TextEmote = 11,
17 | MonsterSay = 12,
18 | MonsterParty = 13,
19 | MonsterYell = 14,
20 | MonsterWhisper = 15,
21 | MonsterEmote = 16,
22 | Channel = 17,
23 | ChannelJoin = 18,
24 | ChannelLeave = 19,
25 | ChannelList = 20,
26 | ChannelNotice = 21,
27 | ChannelNoticeUser = 22,
28 | Afk = 23,
29 | Dnd = 24,
30 | Ignored = 25,
31 | Skill = 26,
32 | Loot = 27,
33 | Money = 28,
34 | Opening = 29,
35 | Tradeskills = 30,
36 | PetInfo = 31,
37 | CombatMiscInfo = 32,
38 | CombatXPGain = 33,
39 | CombatHonorGain = 34,
40 | CombatFactionChange = 35,
41 | BattlegroundNeutral = 36,
42 | BattlegroundAlliance = 37,
43 | BattlegroundHorde = 38,
44 | RaidLeader = 39,
45 | RaidWarning = 40,
46 | RaidBossEmote = 41,
47 | RaidBossWhisper = 42,
48 | Filtered = 43,
49 | Battleground = 44,
50 | BattlegroundLeader = 45,
51 | Restricted = 46,
52 | BattleNet = 47,
53 | Achievement = 48,
54 | GuildAchievement = 49,
55 | ArenaPoints = 50,
56 | PartyLeader = 51,
57 | Addon = uint.MaxValue
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ChatNotificationType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum ChatNotificationType
4 | {
5 | Joined = 0x00,
6 | Left = 0x01,
7 | YouJoined = 0x02,
8 | YouLeft = 0x03,
9 | WrongPassword = 0x04,
10 | NotMember = 0x05,
11 | NotModerator = 0x06,
12 | PasswordChanged = 0x07,
13 | OwnerChanged = 0x08,
14 | PlayerNotFound = 0x09,
15 | NotOwner = 0x0A,
16 | ChannelOwner = 0x0B,
17 | ModeChange = 0x0C,
18 | AnnouncementsOn = 0x0D,
19 | AnnouncementsOff = 0x0E,
20 | ModerationOn = 0x0F,
21 | ModerationOff = 0x10,
22 | Muted = 0x11,
23 | PlayerKicked = 0x12,
24 | Banned = 0x13,
25 | PlayerBanned = 0x14,
26 | PlayerUnbanned = 0x15,
27 | PlayerNotBanned = 0x16,
28 | PlayerAlreadyMember = 0x17,
29 | Invite = 0x18,
30 | InviteWrongFaction = 0x19,
31 | WrongFaction = 0x1A,
32 | InvalidName = 0x1B,
33 | NotModerated = 0x1C,
34 | PlayerInvited = 0x1D,
35 | PlayerInviteBanned = 0x1E,
36 | Throttled = 0x1F,
37 | NotInArea = 0x20,
38 | NotInLfg = 0x21,
39 | VoiceOn = 0x22,
40 | VoiceOff = 0x23
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ChatTag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum ChatTag
7 | {
8 | None = 0x0,
9 | Afk = 0x1,
10 | Dnd = 0x2,
11 | Gm = 0x4,
12 | Unknown = 0x8
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ClassMask.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum ClassMask
7 | {
8 | None = 0x0000,
9 | Warrior = 0x0001,
10 | Paladin = 0x0002,
11 | Hunter = 0x0004,
12 | Rogue = 0x0008,
13 | Priest = 0x0010,
14 | DeathKnight = 0x0020,
15 | Shaman = 0x0040,
16 | Mage = 0x0080,
17 | Warlock = 0x0100,
18 | Druid = 0x0400,
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ClientType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum ClientType
4 | {
5 | WorldOfWarcraft = 0,
6 | TheBurningCrusade = 1,
7 | WrathOfTheLichKing = 2,
8 | Cataclysm = 3
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ContactEntryFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum ContactEntryFlag
7 | {
8 | None = 0x00,
9 | Friend = 0x01,
10 | Ignored = 0x02,
11 | Muted = 0x04,
12 | RecruitAFriend = 0x08
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ContactListFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum ContactListFlag
7 | {
8 | None = 0x00,
9 | Unknown1 = 0x01,
10 | Unknown2 = 0x02,
11 | Unknown3 = 0x04
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ContactResult.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum ContactResult
4 | {
5 | DBError = 0,
6 | FriendListFull = 1,
7 | Online = 2,
8 | Offline = 3,
9 | FriendNotFound = 4,
10 | FriendRemoved = 5,
11 | FriendAddedOnline = 6,
12 | FriendAddedOffline = 7,
13 | AlreadyOnFriendList = 8,
14 | CannotBefriendSelf = 9,
15 | IsEnemy = 10,
16 | IgnoreListFull = 11,
17 | CannotIgnoreSelf = 12,
18 | IgnoreNotFound = 13,
19 | AlreadyOnIgnoreList = 14,
20 | IgnoreAdded = 15,
21 | IgnoreRemoved = 16,
22 | IgnoreNameAmbiguous = 17,
23 | MuteListFull = 18,
24 | CannotMuteSelf = 19,
25 | MuteNotFound = 20,
26 | AlreadyOnMuteList = 21,
27 | MuteAdded = 22,
28 | MuteRemoved = 23,
29 | MuteNameAmbiguous = 24,
30 | Unknown1 = 25,
31 | Unknown2 = 26
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ContactStatus.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum ContactStatus : byte
4 | {
5 | Offline = 0,
6 | Online = 1,
7 | Afk = 2,
8 | Unknown = 4,
9 | Dnd = 5
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/CooldownMask.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | enum CooldownMask : byte
7 | {
8 | RUNE_NONE = 0,
9 | RUNE_BLOOD_0 = 1,
10 | RUNE_BLOOD_1 = 2,
11 | RUNE_UNHOLY_0 = 4,
12 | RUNE_UNHOLY_1 = 8,
13 | RUNE_FROST_0 = 16,
14 | RUNE_FROST_1 = 32
15 | }
16 | }
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/CreatureFamily.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum CreatureFamily
4 | {
5 | None = 0,
6 | Wolf = 1,
7 | Cat = 2,
8 | Spider = 3,
9 | Bear = 4,
10 | Boar = 5,
11 | Crocolisk = 6,
12 | CarrionBird = 7,
13 | Crab = 8,
14 | Gorilla = 9,
15 | HorseCustom = 10,
16 | Raptor = 11,
17 | Tallstrider = 12,
18 | Felhunter = 15,
19 | Voidwalker = 16,
20 | Succubus = 17,
21 | Doomguard = 19,
22 | Scorpid = 20,
23 | Turtle = 21,
24 | Imp = 23,
25 | Bat = 24,
26 | Hyena = 25,
27 | BirdOfPrey = 26,
28 | WindSerpent = 27,
29 | RemoteControl = 28,
30 | Felguard = 29,
31 | Dragonhawk = 30,
32 | Ravager = 31,
33 | WarpStalker = 32,
34 | Sporebat = 33,
35 | NetherRay = 34,
36 | Serpent = 35,
37 | Moth = 37,
38 | Chimaera = 38,
39 | Devilsaur = 39,
40 | Ghoul = 40,
41 | Silithid = 41,
42 | Worm = 42,
43 | Rhino = 43,
44 | Wasp = 44,
45 | CoreHound = 45,
46 | SpiritBeast = 46
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/CreatureRank.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum CreatureRank
4 | {
5 | Normal = 0,
6 | Elite = 1,
7 | RareElite = 2,
8 | WorldBoss = 3,
9 | Rare = 4,
10 | Unknown = 5
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/CreatureType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum CreatureType
4 | {
5 | Beast = 1,
6 | Dragonkin = 2,
7 | Demon = 3,
8 | Elemental = 4,
9 | Giant = 5,
10 | Undead = 6,
11 | Humanoid = 7,
12 | Critter = 8,
13 | Mechanical = 9,
14 | NotSpecified = 10,
15 | Totem = 11,
16 | NonCombatPet = 12,
17 | GasCloud = 13
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/CreatureTypeFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum CreatureTypeFlag
7 | {
8 | None = 0x00000000,
9 | TameablePet = 0x00000001, // 4.x name
10 | GhostVisible = 0x00000002,
11 | BossMob = 0x00000004, // 4.x name
12 | DoNotPlayWoundParryAnimation = 0x00000008, // 4.x
13 | HideFactionTooltip = 0x00000010, // 4.x
14 | Unknown4 = 0x00000020, // sound related
15 | SpellAttackable = 0x00000040,
16 | CanInteractWhileDead = 0x00000080, // 4.x name
17 | HerbSkinningSkill = 0x00000100, // 4.x name
18 | MiningSkinningSkill = 0x00000200, // 4.x name
19 | DoNotLogDeath = 0x00000400, // 4.x
20 | MountedCombatAllowed = 0x000800, // 4.x name
21 | CanAssist = 0x00001000,
22 | IsPetBarUsed = 0x00002000, // 4.x name
23 | MaskUID = 0x00004000, // 4.x
24 | EngineeringSkinningSkill = 0x00008000, // 4.x name
25 | ExoticPet = 0x00010000, // 4.x name
26 | UseDefaultCollisionBox = 0x00020000, // 4.x
27 | IsSiegeWeapon = 0x00040000,
28 | DoesNotCollideWithMissiles = 0x00080000, // 4.x
29 | HideNamePlate = 0x00100000, // 4.x
30 | DoNotPlayMountedAnimations = 0x00200000, // 4.x
31 | IsLinkAll = 0x00400000, // 4.x
32 | InteractOnlyWithCreator = 0x00800000, // 4.x
33 | DoNotPlayUnitEventSounds = 0x01000000, // 4.x
34 | HasNoShadowBlob = 0x02000000, // 4.x
35 | TreatAsRaidUnit = 0x04000000, // 4.x
36 | ForceGossip = 0x08000000, // 4.x
37 | DoNotSheathe = 0x10000000, // 4.x
38 | DoNotTargetOnInteraction = 0x20000000, // 4.x
39 | DoNotRenderObjectName = 0x40000000, // 4.x
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/CustomizationFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum CustomizationFlag
7 | {
8 | None = 0x00000000,
9 | Customize = 0x00000001,
10 | Unknown1 = 0x00000002,
11 | Unknown2 = 0x00000004,
12 | Unknown3 = 0x00000008,
13 | Unknown4 = 0x00000010,
14 | Unknown5 = 0x00000020,
15 | Unknown6 = 0x00000040,
16 | Unknown7 = 0x00000080,
17 | Unknown8 = 0x00000100,
18 | Unknown9 = 0x00000200,
19 | Unknown10 = 0x00000400,
20 | Unknown20 = 0x00000800,
21 | Unknown21 = 0x00001000,
22 | Unknown22 = 0x00002000,
23 | Unknown23 = 0x00004000,
24 | Unknown24 = 0x00008000,
25 | Faction = 0x00010000,
26 | Unknown25 = 0x00020000,
27 | Unknown26 = 0x00040000,
28 | Unknown27 = 0x00080000,
29 | Race = 0x00100000,
30 | Unknown28 = 0x00200000,
31 | Unknown29 = 0x00400000,
32 | Unknown30 = 0x00800000,
33 | Unknown31 = 0x01000000,
34 | Unknown32 = 0x02000000,
35 | Unknown33 = 0x04000000,
36 | Unknown34 = 0x08000000,
37 | Unknown35 = 0x10000000
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/DamageType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum DamageType
4 | {
5 | Physical = 0,
6 | Holy = 1,
7 | Fire = 2,
8 | Nature = 3,
9 | Frost = 4,
10 | Shadow = 5,
11 | Arcane = 6
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/DifficultyChangeType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum DifficultyChangeType
4 | {
5 | PlayerDifficulty1 = 0,
6 | SpellDuration = 1,
7 | WorldState = 2,
8 | Encounter = 3,
9 | Combat = 4,
10 | Unknown1 = 5,
11 | Time = 6,
12 | Unknown2 = 7,
13 | MapDifficulty = 8,
14 | PlayerDifficulty2 = 9,
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/EquipmentSetState.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum EquipmentSetState
4 | {
5 | Unchanged = 0,
6 | Changed = 1,
7 | New = 2,
8 | Deleted = 3
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/FactionFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum FactionFlag
7 | {
8 | None = 0x00,
9 | Visible = 0x01,
10 | AtWar = 0x02,
11 | Hidden = 0x04,
12 | Inivisible = 0x08,
13 | Peace = 0x10,
14 | Inactive = 0x20,
15 | Rival = 0x40
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/GameObjectDynamicFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum GameObjectDynamicFlag // 4.x
7 | {
8 | ConditionalUseOk = 0x01,
9 | LoAnimate = 0x02,
10 | DisableUse = 0x04,
11 | PassiveHighlight = 0x08,
12 | WaitAtCurrentLocation = 0x10,
13 | BlockUse = 0x20,
14 | MoveBackwards = 0x40,
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/GameObjectFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum GameObjectFlag
7 | {
8 | None = 0x00000000,
9 | InUse = 0x00000001,
10 | Locked = 0x00000002,
11 | InteractionCondition = 0x00000004,
12 | Transport = 0x00000008,
13 | ExclusiveUse = 0x00000010, // 4.x
14 | NeverDespawn = 0x00000020,
15 | Triggered = 0x00000040,
16 | Unknown2 = 0x00000080,
17 | Unknown3 = 0x00000100,
18 | Damaged = 0x00000200,
19 | Destroyed = 0x00000400,
20 | DestructableState3 = 0x00000800, // 4.x
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/GameObjectType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum GameObjectType
4 | {
5 | Door = 0,
6 | Button = 1,
7 | QuestGiver = 2,
8 | Chest = 3,
9 | Binder = 4,
10 | Generic = 5,
11 | Trap = 6,
12 | Chair = 7,
13 | SpellFocus = 8,
14 | Text = 9,
15 | Goober = 10,
16 | Transport = 11,
17 | AreaDamage = 12,
18 | Camera = 13,
19 | MapObject = 14,
20 | MOTransport = 15,
21 | DuelFlag = 16,
22 | FishingNode = 17,
23 | SummoningRitual = 18,
24 | Mailbox = 19,
25 | DoNotUse1 = 20,
26 | GuardPost = 21,
27 | SpellCaster = 22,
28 | MeetingStone = 23,
29 | FlagStand = 24,
30 | FishingHole = 25,
31 | FlagDrop = 26,
32 | MiniGame = 27,
33 | DoNotUse2 = 28,
34 | CapturePoint = 29,
35 | AuraGenerator = 30,
36 | DungeonDifficulty = 31,
37 | BarberChair = 32,
38 | DestructibleBuilding = 33,
39 | GuildBank = 34,
40 | TrapDoor = 35
41 | }
42 | }
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/GossipPoiIcon.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum GossipPoiIcon
4 | {
5 | Blank = 0,
6 | GreyAlteracValleyMine = 1,
7 | RedAlteracValleyMine = 2,
8 | BlueAlteracValleyMine = 3,
9 | BlueAndWhiteTombstone = 4,
10 | SmallHouse = 5,
11 | GreyTower = 6,
12 | RedFlag = 7,
13 | Tombstone = 8,
14 | BlueAndWhiteTower = 9,
15 | RedTower = 10,
16 | BlueTower = 11,
17 | RedAndWhiteTower = 12,
18 | RedTombstone = 13,
19 | RedAndWhiteTombstone = 14,
20 | BlueTombstone = 15,
21 | Grey1 = 16,
22 | BlueAndWhite1 = 17,
23 | Blue1 = 18,
24 | RedAndWhite1 = 19,
25 | Red1 = 20,
26 | GreyWoodLogs = 21,
27 | BlueAndWhiteWoodLogs = 22,
28 | BlueWoodLogs = 23,
29 | RedAndWhiteWoodLogs = 24,
30 | RedWoodLogs = 25,
31 | Grey2 = 26,
32 | BlueAndWhite2 = 27,
33 | Blue2 = 28,
34 | RedAndWhite2 = 29,
35 | Red2 = 30,
36 | GreyHouse = 31,
37 | BlueAndWhiteHouse = 32,
38 | BlueHouse = 33,
39 | RedAndWhiteHouse = 34,
40 | RedHouse = 35,
41 | GreyHorse = 36,
42 | BlueAndWhiteHorse = 37,
43 | BlueHorse = 38,
44 | RedAndWhiteHorse = 39,
45 | RedHorse = 40
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/GroupMemberStatusFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum GroupMemberStatusFlag
7 | {
8 | Offline = 0x0000,
9 | Online = 0x0001,
10 | Pvp = 0x0002,
11 | Dead = 0x0004,
12 | Ghost = 0x0008,
13 | Unknown1 = 0x0010,
14 | Unknown2 = 0x0020,
15 | Unknown3 = 0x0040,
16 | Unknown4 = 0x0080
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/GroupTypeFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum GroupTypeFlag
7 | {
8 | Normal = 0x00,
9 | Battleground = 0x01,
10 | Raid = 0x02,
11 | Unknown1 = 0x04,
12 | LookingForDungeon = 0x08,
13 | Unknown2 = 0x10
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/GroupUpdateFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum GroupUpdateFlag
7 | {
8 | None = 0x00000000,
9 | Status = 0x00000001,
10 | CurrentHealth = 0x00000002,
11 | MaxHealth = 0x00000004,
12 | PowerType = 0x00000008,
13 | CurrentPower = 0x00000010,
14 | MaxPower = 0x00000020,
15 | Level = 0x00000040,
16 | Zone = 0x00000080,
17 | Position = 0x00000100,
18 | Auras = 0x00000200,
19 | PetGuid = 0x00000400,
20 | PetName = 0x00000800,
21 | PetModelId = 0x00001000,
22 | PetCurrentHealth = 0x00002000,
23 | PetMaxHealth = 0x00004000,
24 | PetPowerType = 0x00008000,
25 | PetCurrentPower = 0x00010000,
26 | PetMaxPower = 0x00020000,
27 | PetAuras = 0x00040000,
28 | VehicleSeat = 0x00080000
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/Holiday.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum Holiday
4 | {
5 | None = 0,
6 | FireworksSpectacular = 62,
7 | FeastOfWinterVeil = 141,
8 | Noblegarden = 181,
9 | ChildrensWeek = 201,
10 | CallToArmsAlteracValley = 283,
11 | CallToArmsWarsongGulch = 284,
12 | CallToArmsArathiBasin = 285,
13 | FishingExtravaganza = 301,
14 | HarvestFestival = 321,
15 | HallowsEnd = 324,
16 | LunarFestival = 327,
17 | LoveIsInTheAir = 335,
18 | FireFestival = 341,
19 | CallToArmsEyeOfTheStorm = 353,
20 | Brewfest = 372,
21 | DarkmoonFaireElwynn = 374,
22 | DarkmoonFaireThunder = 375,
23 | DarkmoonFaireShattrath = 376,
24 | PiratesDay = 398,
25 | CallToArmsStrandOfTheAncients = 400,
26 | PilgrimsBounty = 404,
27 | WrathOfTheLichKingLaunch = 406,
28 | DayOfTheDead = 409,
29 | CallToArmsIsleOfConquest = 420
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/InstanceResetWarningType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum InstanceResetWarningType
4 | {
5 | Hours = 1,
6 | Minutes = 2,
7 | MinutesSoon = 3,
8 | Welcome = 4,
9 | Expired = 5
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/InstanceStatus.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum InstanceStatus
4 | {
5 | NotSaved = 0,
6 | Saved = 1,
7 | Completed = 2
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/InventoryType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum InventoryType
4 | {
5 | NonEquip = 0,
6 | Head = 1,
7 | Neck = 2,
8 | Shoulders = 3,
9 | Body = 4,
10 | Chest = 5,
11 | Waist = 6,
12 | Legs = 7,
13 | Feet = 8,
14 | Wrists = 9,
15 | Hands = 10,
16 | Finger = 11,
17 | Trinket = 12,
18 | Weapon = 13,
19 | Shield = 14,
20 | Ranged = 15,
21 | Cloak = 16,
22 | TwoHandedWeapon = 17,
23 | Bag = 18,
24 | Tabard = 19,
25 | Robe = 20,
26 | MainHandWeapon = 21,
27 | OffHandWeapon = 22,
28 | Holdable = 23,
29 | Ammo = 24,
30 | Thrown = 25,
31 | RangedRight = 26,
32 | Quiver = 27,
33 | Relic = 28
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ItemBonding.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum ItemBonding
4 | {
5 | None = 0,
6 | WhenPickedUp = 1,
7 | WhenEquipped = 2,
8 | WhenUsed = 3,
9 | QuestItem = 4
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ItemClass.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum ItemClass
4 | {
5 | Consumable = 0,
6 | Container = 1,
7 | Weapon = 2,
8 | Gem = 3,
9 | Armor = 4,
10 | Reagent = 5,
11 | Projectile = 6,
12 | TradeGoods = 7,
13 | Generic = 8,
14 | Recipe = 9,
15 | Money = 10,
16 | Quiver = 11,
17 | Quest = 12,
18 | Key = 13,
19 | Permanent = 14,
20 | Miscellaneous = 15,
21 | Glyph = 16
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ItemFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum ItemFlag : uint
7 | {
8 | None = 0x00000000,
9 | Bound = 0x00000001,
10 | Conjured = 0x00000002,
11 | Openable = 0x00000004,
12 | Wrapped = 0x00000008,
13 | Heroic = 0x00000008,
14 | Broken = 0x00000010,
15 | Indestructible = 0x00000020,
16 | Usable = 0x00000040,
17 | NoEquipCooldown = 0x00000080,
18 | Wrapper = 0x00000200,
19 | IgnoreBagSpace = 0x00000400,
20 | PartyLoot = 0x00000800,
21 | Refundable = 0x00001000,
22 | Charter = 0x00002000,
23 | Unknown = 0x00008000,
24 | Prospectable = 0x00040000,
25 | UniqueEquipped = 0x00080000,
26 | UsableInArena = 0x00200000,
27 | Throwable = 0x00400000,
28 | SpecialUse = 0x00800000,
29 | AccountBound = 0x08000000,
30 | EnchantmentScroll = 0x10000000,
31 | Millable = 0x20000000,
32 | BindOnPickUpTradable = 0x80000000
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ItemFlagExtra.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum ItemFlagExtra
7 | {
8 | None = 0x0000,
9 | HordeOnly = 0x0001,
10 | AllianceOnly = 0x0002,
11 | Refundable = 0x0004,
12 | Unknown1 = 0x0008,
13 | Unknown2 = 0x0010,
14 | Unknown3 = 0x0020,
15 | Unknown4 = 0x0040,
16 | Unknown5 = 0x0080,
17 | NeedRollDisabled = 0x0100
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ItemModType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum ItemModType
4 | {
5 | Mana = 0,
6 | Health = 1,
7 | Agility = 3,
8 | Strength = 4,
9 | Intellect = 5,
10 | Spirit = 6,
11 | Stamina = 7,
12 | DefenseSkillRating = 12,
13 | DodgeRating = 13,
14 | ParryRating = 14,
15 | BlockRating = 15,
16 | MeleeHitRating = 16,
17 | RangedHitRating = 17,
18 | SpellHitRating = 18,
19 | MeleeCritRating = 19,
20 | RangedCritRating = 20,
21 | SpellCritRating = 21,
22 | MeleeHitTakenRating = 22,
23 | RangedHitTakenRating = 23,
24 | SpellHitTakenRating = 24,
25 | MeleeCritTakenRating = 25,
26 | RangedCritTakenRating = 26,
27 | SpellCritTakenRating = 27,
28 | MeleeHasteRating = 28,
29 | RangedHasteRating = 29,
30 | SpellHasteRating = 30,
31 | HitRating = 31,
32 | CritRating = 32,
33 | HitTakenRating = 33,
34 | CritTakenRating = 34,
35 | ResilienceRating = 35,
36 | HasteRating = 36,
37 | ExpertiseRating = 37,
38 | AttackPower = 38,
39 | RangedAttackPower = 39,
40 | FeralAttackPowerOld = 40,
41 | SpellHealingDoneOld = 41,
42 | SpellDamageDoneOld = 42,
43 | ManaRegeneration = 43,
44 | ArmorPenetrationRating = 44,
45 | SpellPower = 45,
46 | HealthRegeneration = 46,
47 | SpellPenetration = 47,
48 | BlockValue = 48,
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ItemQuality.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum ItemQuality
4 | {
5 | Poor = 0,
6 | Normal = 1,
7 | Uncommon = 2,
8 | Rare = 3,
9 | Epic = 4,
10 | Legendary = 5,
11 | Artifact = 6,
12 | Heirloom = 7
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ItemSocketColor.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum ItemSocketColor
4 | {
5 | Meta = 1,
6 | Red = 2,
7 | Yellow = 4,
8 | Blue = 8
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ItemSpellTriggerType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum ItemSpellTriggerType
4 | {
5 | OnUse = 0,
6 | OnEquip = 1,
7 | ChanceOnHit = 2,
8 | Soulstone = 4,
9 | OnNoDelayUse = 5,
10 | LearnSpellId = 6
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/KickReason.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum KickReason
4 | {
5 | NoGenericReason = 0,
6 | DuplicateSession = 1,
7 | NoGameTime = 2,
8 | AccountBanned = 3,
9 | ParentalControl = 4
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/Language.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum Language : uint
4 | {
5 | Universal = 0,
6 | Orcish = 1,
7 | Darnassian = 2,
8 | Taurahe = 3,
9 | Dwarvish = 6,
10 | Common = 7,
11 | Demonic = 8,
12 | Titan = 9,
13 | Thalassian = 10,
14 | Draconic = 11,
15 | Kalimag = 12,
16 | Gnomish = 13,
17 | Troll = 14,
18 | Gutterspeak = 33,
19 | Draenei = 35,
20 | Zombie = 36,
21 | GnomishBinary = 37,
22 | GoblinBinary = 38,
23 | Addon = uint.MaxValue
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/LfgEntryCheckResult.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum LfgEntryCheckResult
4 | {
5 | InsufficientExpansion = 1,
6 | TooLowLevel = 2,
7 | TooHighLevel = 3,
8 | TooLowGearScore = 4,
9 | TooHighGearScore = 5,
10 | RaidLocked = 6,
11 | AttunementTooLowLevel = 1001,
12 | AttunementTooHighLevel = 1002,
13 | QuestNotCompleted = 1022,
14 | MissingItem = 1025,
15 | NotInSeason = 1031
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/LfgError.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum LfgError
4 | {
5 | Unknown1 = 0,
6 | PlayerDead = 1,
7 | Falling = 2,
8 | Unknown2 = 3,
9 | Fatigue = 4,
10 | Unknown3 = 5,
11 | InvalidTeleportLocation = 6,
12 | Unknown4 = 7,
13 | Unknown5 = 8
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/LfgJoinResult.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum LfgJoinResult
4 | {
5 | Initiating = 0,
6 | Failed = 1,
7 | Success = 2
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/LfgRoleCheckResult.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum LfgRoleCheckResult
4 | {
5 | Success = 1,
6 | Initiating = 2,
7 | MissingRole = 3,
8 | NoInstance = 4,
9 | Aborted = 5,
10 | Unknown = 6
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/LfgRoleCheckStatus.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum LfgRoleCheckStatus
4 | {
5 | Success = 1,
6 | Initiating = 2,
7 | MissingRole = 3,
8 | NoInstance = 4,
9 | Aborted = 5,
10 | Unknown = 6
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/LfgRoleFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum LfgRoleFlag
7 | {
8 | None = 0x0,
9 | Leader = 0x1,
10 | Tank = 0x2,
11 | Healer = 0x4,
12 | Damage = 0x8
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/LfgState.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum LfgState
4 | {
5 | Initiating = 0,
6 | Failed = 1,
7 | Success = 2
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/LfgUpdateFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum LfgUpdateFlag
7 | {
8 | None = 0x00,
9 | CharacterInfo = 0x01,
10 | Comment = 0x02,
11 | Unknown1 = 0x04,
12 | Guid = 0x08,
13 | Roles = 0x10,
14 | Unknown2 = 0x20,
15 | Unknown3 = 0x40,
16 | Unknown4 = 0x80
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/LfgUpdateType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum LfgUpdateType
4 | {
5 | GroupLeader = 1,
6 | Unknown1 = 2,
7 | Unknown2 = 3,
8 | RoleCheckAborted = 4,
9 | JoinProposal = 5,
10 | RoleCheckFailed = 6,
11 | RemovedFromQueue = 7,
12 | ProposalFailed = 8,
13 | ProposalDeclined = 9,
14 | GroupFound = 10,
15 | Unknown3 = 11,
16 | AddedToQueue = 12,
17 | ProposalFound = 13,
18 | ClearLockList = 14,
19 | GroupMemberOffline = 15,
20 | GroupDisbanded = 16
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/LootMethod.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum LootMethod
4 | {
5 | FreeForAll = 0,
6 | RoundRobin = 1,
7 | MasterLooter = 2,
8 | GroupLoot = 3,
9 | NeedBeforeGreed = 4
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/MapDifficulty.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum MapDifficulty
4 | {
5 | NormalOrNormal10Man = 0,
6 | HeroicOrNormal25Man = 1,
7 | EpicOrHeroic10Man = 2,
8 | EpicHeroicOrHeroic25Man = 3
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/Material.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum Material
4 | {
5 | Consumable = -1,
6 | None = 0,
7 | Metal = 1,
8 | Wood = 2,
9 | Liquid = 3,
10 | Jewelry = 4,
11 | Chain = 5,
12 | Plate = 6,
13 | Cloth = 7,
14 | Leather = 8
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/MiscConstants.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum MiscConstants
4 | {
5 | MaxDeclinedNameCases = 5,
6 | CreatureMaxSpells = 8,
7 | PetSpellsOffset = 8,
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/Miscellaneous.cs:
--------------------------------------------------------------------------------
1 | using System.Text;
2 | using WowTools.Core;
3 |
4 | namespace WoWPacketViewer
5 | {
6 | public enum RealmSplitState
7 | {
8 | Normal = 0,
9 | Split = 1,
10 | Pending = 2
11 | }
12 |
13 | public enum WeatherState
14 | {
15 | Fine = 0,
16 | LightRain = 3,
17 | MediumRain = 4,
18 | HeavyRain = 5,
19 | LightSnow = 6,
20 | MediumSnow = 7,
21 | HeavySnow = 8,
22 | LightSandstorm = 22,
23 | MediumSandstorm = 41,
24 | HeavySandstorm = 42,
25 | Thunder = 86,
26 | BlackRain = 90
27 | }
28 | }
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/MovementAnimationState.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum MovementAnimationState
4 | {
5 | OnGround = 0,
6 | Swimming = 1,
7 | Hover = 2,
8 | Flying = 3
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/MovementFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum MovementFlag
7 | {
8 | None = 0x00000000,
9 | Forward = 0x00000001,
10 | Backward = 0x00000002,
11 | StrafeLeft = 0x00000004,
12 | StrafeRight = 0x00000008,
13 | TurnLeft = 0x00000010,
14 | TurnRight = 0x00000020,
15 | PitchUp = 0x00000040,
16 | PitchDown = 0x00000080,
17 | WalkMode = 0x00000100,
18 | OnTransport = 0x00000200,
19 | DisableGravity = 0x00000400, // 4.x
20 | Root = 0x00000800,
21 | Falling = 0x00001000,
22 | FallingFar = 0x00002000,
23 | PendingStop = 0x00004000,
24 | PendingStrafeStop = 0x00008000,
25 | PendingForward = 0x00010000,
26 | PendingBackward = 0x00020000,
27 | PendingStrafeLeft = 0x00040000,
28 | PendingStrafeRight = 0x00080000,
29 | PendingRoot = 0x00100000,
30 | Swimming = 0x00200000,
31 | Ascending = 0x00400000,
32 | Descending = 0x00800000,
33 | CanFly = 0x01000000,
34 | Flying = 0x02000000,
35 | SplineElevation = 0x04000000,
36 | SplineEnabled = 0x08000000,
37 | Waterwalking = 0x10000000,
38 | CanSafeFall = 0x20000000, // 4.x name
39 | Hover = 0x40000000,
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/MovementFlagExtra.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum MovementFlagExtra
7 | {
8 | None = 0x0000,
9 | PreventStrafe = 0x0001, // 4.x
10 | PreventJumping = 0x0002, // 4.x
11 | DisableCollision = 0x0004, // 4.x
12 | FullSpeedTurning = 0x0008,
13 | FullSpeedPitching = 0x0010,
14 | AlwaysAllowPitching = 0x0020,
15 | IsVehicleExitVoluntary = 0x0040, // 4.x
16 | IsJumpSplineInAir = 0x0080, // 4.x
17 | IsAnimTierInTrans = 0x0100, // 4.x
18 | PreventChangePitch = 0x0200, // 4.x
19 | InterpolateMove = 0x0400, // 4.x (Interpolation is player only)
20 | InterpolateTurning = 0x0800,
21 | InterpolatePitching = 0x1000,
22 | VehiclePassengerIsTransitionAllowed = 0x2000, // 4.x
23 | CanTransitionBetweenSwimAndFly = 0x4000, // 4.x
24 | Unknown10 = 0x8000
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/NPCFlags.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | enum NPCFlags // 4.x
7 | {
8 | None = 0x00000000,
9 | Gossip = 0x00000001,
10 | QuestGiver = 0x00000002,
11 | Unknown1 = 0x00000004,
12 | Unknown2 = 0x00000008,
13 | Trainer = 0x00000010,
14 | ClassTrainer = 0x00000020,
15 | ProfessionTrainer = 0x00000040,
16 | Vendor = 0x00000080,
17 | AmmoVendor = 0x00000100,
18 | FoodVendor = 0x00000200,
19 | PoisonVendor = 0x00000400,
20 | ReagentVendor = 0x00000800,
21 | Repair = 0x00001000,
22 | FlightMaster = 0x00002000,
23 | SpiritHealer = 0x00004000,
24 | SpiritGuide = 0x00008000,
25 | InnKeeper = 0x00010000,
26 | Banker = 0x00020000,
27 | Petitioner = 0x00040000,
28 | TabardDesigner = 0x00080000,
29 | BattleMaster = 0x00100000,
30 | Auctioneer = 0x00200000,
31 | StableMaster = 0x00400000,
32 | GuildBanker = 0x00800000,
33 | SpellClick = 0x01000000,
34 | PlayerVehicle = 0x02000000,
35 | MailObject = 0x04000000,
36 | ForgeMaster = 0x08000000
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ObjectType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum ObjectType
4 | {
5 | Object = 0,
6 | Item = 1,
7 | Container = 2,
8 | Unit = 3,
9 | Player = 4,
10 | GameObject = 5,
11 | DynamicObject = 6,
12 | Corpse = 7
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/PageMaterial.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum PageMaterial
4 | {
5 | Parchment = 1,
6 | Stone = 2,
7 | Marble = 3,
8 | Silver = 4,
9 | Bronze = 5,
10 | Valentive = 6,
11 | Illidan = 7
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/PetTameFailureReason.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum PetTameFailureReason
4 | {
5 | InvalidCreature = 0,
6 | TooMany = 1,
7 | CreatureAlreadyOwned = 2,
8 | NotTameable = 3,
9 | AnotherSummonActive = 4,
10 | UnitsCannotTame = 5,
11 | NoPetAvailable = 6,
12 | InternalError = 7,
13 | TooHighLevel = 8,
14 | Dead = 9,
15 | NotDead = 10,
16 | CannotControlExotic = 11,
17 | UnknownError = 12
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/PlayerFieldBytesMiscFlags.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum PlayerFieldBytesMiscFlags // 4.x - first byte of PLAYER_FIELD_BYTES
7 | {
8 | Unk1 = 0x1,
9 | TrackStealthed = 0x2,
10 | Unk2 = 0x4,
11 | UseReleaseSpiritTimer = 0x8,
12 | PreventReleaseSpiritAtDeath = 0x10,
13 | HasTempPetBar = 0x20,
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/PlayerFlags.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum PlayerFlags // 4.x
7 | {
8 | GroupLeader = 0x00000001,
9 | AFK = 0x00000002,
10 | DND = 0x00000004,
11 | GameMaster = 0x00000008,
12 | Ghost = 0x00000010,
13 | Resting = 0x00000020,
14 | Unk7 = 0x00000040,
15 | Unk8 = 0x00000080,
16 | ContestedPvP = 0x00000100,
17 | InPvP = 0x00000200,
18 | HideHelm = 0x00000400,
19 | HideCloak = 0x00000800,
20 | PlayedLongTime = 0x00001000,
21 | PlayedTooLong = 0x00002000,
22 | OutOfBounds = 0x00004000,
23 | Developer = 0x00008000,
24 | EnableLowLevelRaid = 0x00010000,
25 | TaxiBenchmark = 0x00020000,
26 | PvPTimerActive = 0x00040000,
27 | Commentator = 0x00080000,
28 | Unk21 = 0x00100000,
29 | Unk22 = 0x00200000,
30 | CommentatorUber = 0x00400000,
31 | AllowOnlyAbility = 0x00800000,
32 | Unk25 = 0x01000000,
33 | NoXPGain = 0x02000000,
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/PowerType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum PowerType
4 | {
5 | Health = -2,
6 | Mana = 0,
7 | Rage = 1,
8 | Focus = 2,
9 | Energy = 3,
10 | Happiness = 4,
11 | Rune = 5,
12 | RunicPower = 6
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/QuestFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum QuestFlag
7 | {
8 | None = 0x00000000,
9 | StayAlive = 0x00000001,
10 | PartyAccept = 0x00000002,
11 | Exploration = 0x00000004,
12 | Sharable = 0x00000008,
13 | None2 = 0x00000010,
14 | Epic = 0x00000020,
15 | Raid = 0x00000040,
16 | TBC = 0x00000080,
17 | DeliverMore = 0x00000100,
18 | HiddenRewards = 0x00000200,
19 | AutoRewarded = 0x00000400,
20 | TBCRaces = 0x00000800,
21 | Daily = 0x00001000,
22 | Pvp = 0x00002000,
23 | Unavailable = 0x00004000,
24 | Weekly = 0x00008000,
25 | AutoComplete = 0x00010000,
26 | SpecialItem = 0x00020000,
27 | ObjText = 0x00040000,
28 | AutoAccept = 0x00080000
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/QuestMethod.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum QuestMethod
4 | {
5 | AutoComplete = 0,
6 | Unknown = 1,
7 | Normal = 2
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/QuestSort.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum QuestSort
4 | {
5 | Epic = 1,
6 | WailingCavernsOld = 21,
7 | Seasonal = 22,
8 | UndercityOld = 23,
9 | Herbalism = 24,
10 | Battlegrounds = 25,
11 | UldamanOld = 41,
12 | Warlock = 61,
13 | Warrior = 81,
14 | Shaman = 82,
15 | Fishing = 101,
16 | Blacksmithing = 121,
17 | Paladin = 141,
18 | Mage = 161,
19 | Rogue = 162,
20 | Alchemy = 181,
21 | Leatherworking = 182,
22 | Engineering = 201,
23 | TreasureMap = 221,
24 | SunkenTempleOld = 241,
25 | Hunter = 261,
26 | Priest = 262,
27 | Druid = 263,
28 | Tailoring = 264,
29 | Special = 284,
30 | Cooking = 304,
31 | FirstAid = 324,
32 | Legendary = 344,
33 | DarkmoonFaire = 364,
34 | AhnQirajWar = 365,
35 | LunarFestival = 366,
36 | Reputation = 367,
37 | Invasion = 368,
38 | Midsummer = 369,
39 | Brewfest = 370,
40 | Inscription = 371,
41 | DeathKnight = 372,
42 | Jewelcrafting = 373
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/QuestType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum QuestType
4 | {
5 | Elite = 1,
6 | Life = 21,
7 | PvP = 41,
8 | Raid = 62,
9 | Dungeon = 81,
10 | WorldEvent = 82,
11 | Legendary = 83,
12 | Escort = 84,
13 | Heroic = 85,
14 | Raid10 = 88,
15 | Raid25 = 89
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/RaceMask.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum RaceMask
7 | {
8 | None = 0x00000000,
9 | Human = 0x00000001,
10 | Orc = 0x00000002,
11 | Dwarf = 0x00000004,
12 | NightElf = 0x00000008,
13 | Undead = 0x00000010,
14 | Tauren = 0x00000020,
15 | Gnome = 0x00000040,
16 | Troll = 0x00000080,
17 | Goblin = 0x00000100,
18 | BloodElf = 0x00000200,
19 | Draenei = 0x00000400,
20 | FelOrc = 0x00000800,
21 | Naga = 0x00001000,
22 | Broken = 0x00002000,
23 | Skeleton = 0x00004000
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/ReputationRank.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum ReputationRank
4 | {
5 | Hated = 0,
6 | Hostile = 1,
7 | Unfriendly = 2,
8 | Neutral = 3,
9 | Friendly = 4,
10 | Honored = 5,
11 | Revered = 6,
12 | Exalted = 7
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/SheathType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum SheathType
4 | {
5 | None = 0,
6 | MainHand = 1,
7 | OffHand = 2,
8 | LargeWeaponLeft = 3,
9 | LargeWeaponRight = 4,
10 | HighWeaponLeft = 5,
11 | HighWeaponRight = 6,
12 | Shield = 7
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/SpeedType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum SpeedType
4 | {
5 | Walk = 0,
6 | Run = 1,
7 | RunBack = 2,
8 | Swim = 3,
9 | SwimBack = 4,
10 | Turn = 5,
11 | Fly = 6,
12 | FlyBack = 7,
13 | Pitch = 8
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/SpellMechanics.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum SpellMechanics
4 | {
5 | None = 0,
6 | Charm = 1,
7 | Disoriented = 2,
8 | Disarm = 3,
9 | Distract = 4,
10 | Fear = 5,
11 | Grip = 6,
12 | Root = 7,
13 | SlowAttack = 8,
14 | Silence = 9,
15 | Sleep = 10,
16 | Snare = 11,
17 | Stun = 12,
18 | Freeze = 13,
19 | Knockout = 14,
20 | Bleed = 15,
21 | Bandage = 16,
22 | Polymorph = 17,
23 | Banish = 18,
24 | Shield = 19,
25 | Shackle = 20,
26 | Mount = 21,
27 | Infected = 22,
28 | Turn = 23,
29 | Horror = 24,
30 | Invulnerability = 25,
31 | Interrupt = 26,
32 | Daze = 27,
33 | Discovery = 28,
34 | ImmuneShield = 29,
35 | Sapped = 30,
36 | Enraged = 31
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/SpellMissType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum SpellMissType
4 | {
5 | None = 0,
6 | Miss = 1,
7 | Resist = 2,
8 | Dodge = 3,
9 | Parry = 4,
10 | Block = 5,
11 | Evade = 6,
12 | Immune1 = 7,
13 | Immune2 = 8,
14 | Deflect = 9,
15 | Absorb = 10,
16 | Reflect = 11
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/SpellMod.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | enum SpellMod : byte
4 | {
5 | Damage = 0,
6 | Duration = 1,
7 | Threat = 2,
8 | Effect1 = 3,
9 | Charges = 4,
10 | Range = 5,
11 | Radius = 6,
12 | CriticalChance = 7,
13 | AllEffects = 8,
14 | NotLoseCastingTime = 9,
15 | CastingTime = 10,
16 | Cooldown = 11,
17 | Effect2 = 12,
18 | IgnoreArmor = 13,
19 | Cost = 14,
20 | CritDamageBonus = 15,
21 | ResistMissChance = 16,
22 | JumpTargets = 17,
23 | ChanceOfSuccess = 18,
24 | ActivationTime = 19,
25 | DamageMultiplier = 20,
26 | GlobalCooldown = 21,
27 | Dot = 22,
28 | Effect3 = 23,
29 | BonusMultiplier = 24,
30 | // Spellmod 25
31 | ProcPerMinute = 26,
32 | ValueMultiplier = 27,
33 | ResistDispelChance = 28,
34 | CritDamageBonus2 = 29, //One Not Used Spell
35 | SpellCostRefundOnFail = 30
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/SplineFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum SplineFlag
7 | {
8 | None = 0x00000000,
9 | Forward = 0x00000001,
10 | Backward = 0x00000002,
11 | StrafeLeft = 0x00000004,
12 | Straferight = 0x00000008,
13 | TurnLeft = 0x00000010,
14 | TurnRight = 0x00000020,
15 | PitchUp = 0x00000040,
16 | PitchDown = 0x00000080,
17 | Done = 0x00000100,
18 | Falling = 0x00000200,
19 | NoSpline = 0x00000400,
20 | Trajectory = 0x00000800,
21 | WalkMode = 0x00001000,
22 | Flying = 0x00002000,
23 | Knockback = 0x00004000,
24 | FinalPoint = 0x00008000,
25 | FinalTarget = 0x00010000,
26 | FinalOrientation = 0x00020000,
27 | CatmullRom = 0x00040000,
28 | Cyclic = 0x00080000, // 4.x
29 | EnterCicle = 0x00100000, // 4.x
30 | AnimationTier = 0x00200000, // 4.x
31 | Frozen = 0x00400000, // 4.x
32 | Unknown5 = 0x00800000,
33 | Unknown6 = 0x01000000,
34 | Unknown7 = 0x02000000,
35 | Unknown8 = 0x04000000,
36 | Unknown9 = 0x08000000,
37 | UsePathSmoothing = 0x10000000, // 4.x
38 | Animation = 0x20000000,
39 | UncompressedPath = 0x40000000 // 4.x
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/SplineMode.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum SplineMode
4 | {
5 | Linear = 0,
6 | CatmullRom = 1,
7 | Smooth = 2 // 4.x
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/SplineType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum SplineType
4 | {
5 | Normal = 0,
6 | Stop = 1,
7 | FacingSpot = 2,
8 | FacingTarget = 3,
9 | FacingAngle = 4
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/StatType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum StatType
4 | {
5 | Strength = 0,
6 | Agility = 1,
7 | Stamina = 2,
8 | Intellect = 3,
9 | Spirit = 4
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/TargetFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum TargetFlag
7 | {
8 | Self = 0x00000000,
9 | SpellDynamic1 = 0x00000001,
10 | Unit = 0x00000002,
11 | SpellDynamic2 = 0x00000004,
12 | SpellDynamic3 = 0x00000008,
13 | Item = 0x00000010,
14 | SourceLocation = 0x00000020,
15 | DestinationLocation = 0x00000040,
16 | ObjectSelfTarget = 0x00000080,
17 | UnitSelfTarget = 0x00000100,
18 | PvpCorpse = 0x00000200,
19 | UnitCorpse = 0x00000400,
20 | Object = 0x00000800,
21 | TradeItem = 0x00001000,
22 | NameString = 0x00002000,
23 | OpenLock = 0x00004000,
24 | Corpse = 0x00008000,
25 | SpellDynamic4 = 0x00010000,
26 | Glyph = 0x00020000,
27 | Unknown4 = 0x00040000,
28 | ExtraTargets = 0x00080000 // 4.x VisualChain
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/TargetFlags.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum TargetFlags : uint
7 | {
8 | TARGET_FLAG_SELF = 0x00000000,
9 | TARGET_FLAG_UNUSED1 = 0x00000001, // not used in any spells as of 3.0.3 (can be set dynamically)
10 | TARGET_FLAG_UNIT = 0x00000002, // pguid
11 | TARGET_FLAG_UNUSED2 = 0x00000004, // not used in any spells as of 3.0.3 (can be set dynamically)
12 | TARGET_FLAG_UNUSED3 = 0x00000008, // not used in any spells as of 3.0.3 (can be set dynamically)
13 | TARGET_FLAG_ITEM = 0x00000010, // pguid
14 | TARGET_FLAG_SOURCE_LOCATION = 0x00000020, // 3 float
15 | TARGET_FLAG_DEST_LOCATION = 0x00000040, // 3 float
16 | TARGET_FLAG_OBJECT_UNK = 0x00000080, // used in 7 spells only
17 | TARGET_FLAG_UNIT_UNK = 0x00000100, // looks like self target (480 spells)
18 | TARGET_FLAG_PVP_CORPSE = 0x00000200, // pguid
19 | TARGET_FLAG_UNIT_CORPSE = 0x00000400, // 10 spells (gathering professions)
20 | TARGET_FLAG_OBJECT = 0x00000800, // pguid, 2 spells
21 | TARGET_FLAG_TRADE_ITEM = 0x00001000, // pguid, 0 spells
22 | TARGET_FLAG_STRING = 0x00002000, // string, 0 spells
23 | TARGET_FLAG_UNK1 = 0x00004000, // 199 spells, opening object/lock
24 | TARGET_FLAG_CORPSE = 0x00008000, // pguid, resurrection spells
25 | TARGET_FLAG_UNK2 = 0x00010000, // pguid, not used in any spells as of 3.0.3 (can be set dynamically)
26 | TARGET_FLAG_GLYPH = 0x00020000 // used in glyph spells
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/TeamType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum TeamType
4 | {
5 | Horde = 67,
6 | SteamwheedleCartel = 169,
7 | Alliance = 469,
8 | AllianceForces = 891,
9 | HordeForces = 892,
10 | Sanctuary = 936,
11 | Outland = 980
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/TotemCategory.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum TotemCategory
4 | {
5 | SkinningSkifeOld = 1,
6 | EarthTotem = 2,
7 | AirTotem = 3,
8 | FireTotem = 4,
9 | WaterTotem = 5,
10 | CopperRod = 6,
11 | SilverRod = 7,
12 | GoldenRod = 8,
13 | TruesilverRod = 9,
14 | ArcaniteRod = 10,
15 | MiningPickOld = 11,
16 | PhilosophersStone = 12,
17 | BlacksmithHammerOld = 13,
18 | ArclightSpanner = 14,
19 | GyromaticMA = 15,
20 | MasterTotem = 21,
21 | FelIronRod = 41,
22 | AdamantiteRod = 62,
23 | EterniumRod = 63,
24 | HollowQuill = 81,
25 | RunedAzuriteRod = 101,
26 | VirtuosoInkingSet = 121,
27 | Drums = 141,
28 | GnomishArmyKnife = 161,
29 | BlacksmithHammer = 162,
30 | MiningPick = 165,
31 | SkinningKnife = 166,
32 | HammerPick = 167,
33 | BladedPickaxe = 168,
34 | FlintAndTinder = 169,
35 | RunedCobaltRod = 189,
36 | RunedTitaniumRod = 190
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/TrainerSpellState.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum TrainerSpellState
4 | {
5 | Green = 0,
6 | Red = 1,
7 | Grey = 2
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/TrainerType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum TrainerType
4 | {
5 | Class = 0,
6 | Mounts = 1,
7 | Tradeskills = 2,
8 | Pets = 3
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/TransferAbortReason.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum TransferAbortReason
4 | {
5 | None = 0,
6 | Error = 1,
7 | MaxPlayers = 2,
8 | InstanceNotFound1 = 3,
9 | TooManyInstances = 4,
10 | Unknown = 5,
11 | ZoneInCombat = 6,
12 | InsufficientExpansion = 7,
13 | DifficultyUnavailable = 8,
14 | UniqueMessage = 9,
15 | TooManyRealmInstances = 10,
16 | GroupRequired = 11,
17 | InstanceNotFound3 = 12,
18 | InstanceNotFound4 = 13,
19 | InstanceNotFound5 = 14,
20 | RealmOnly = 15,
21 | MapNotAllowed = 16
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/TypeMask.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | public enum TypeMask
7 | {
8 | None = 0x0000,
9 | Object = 0x0001,
10 | Item = 0x0002,
11 | Container = 0x0004,
12 | Unit = 0x0008,
13 | Player = 0x0010,
14 | GameObject = 0x0020,
15 | DynamicObject = 0x0040,
16 | Corpse = 0x0080
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/UnitDynamicFlags.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | enum UnitDynamicFlags // 4.x
7 | {
8 | None = 0x0000,
9 | Lootable = 0x0001,
10 | TrackUnit = 0x0002,
11 | Tapped = 0x0004,
12 | TappedByPlayer = 0x0008,
13 | EmpathyInfo = 0x0010,
14 | AppearDead = 0x0020,
15 | ReferAFriendLinked = 0x0040,
16 | TappedByAllThreatList = 0x0080
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/UnitFlags.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | enum UnitFlags // 4.x
7 | {
8 | None = 0,
9 | NotClientControlled = 0x1,
10 | PlayerCannotAttack = 0x2,
11 | RemoveClientControl = 0x4,
12 | PlayerControlled = 0x8,
13 | Unk4 = 0x10,
14 | Preparation = 0x20,
15 | Unk6 = 0x40,
16 | NoAttack = 0x80,
17 | NotAttackbleByPlayerControlled = 0x100,
18 | OnlyAttackableByPlayerControlled = 0x200,
19 | Looting = 0x400,
20 | PetIsAttackingTarget = 0x800,
21 | PVP = 0x1000,
22 | Silenced = 0x2000,
23 | CannotSwim = 0x4000,
24 | OnlySwim = 0x8000,
25 | NoAttack2 = 0x10000,
26 | Pacified = 0x20000,
27 | Stunned = 0x40000,
28 | AffectingCombat = 0x80000,
29 | OnTaxi = 0x100000,
30 | MainHandDisarmed = 0x200000,
31 | Confused = 0x400000,
32 | Feared = 0x800000,
33 | PossessedByPlayer = 0x1000000,
34 | NotSelectable = 0x2000000,
35 | Skinnable = 0x4000000,
36 | Mount = 0x8000000,
37 | PreventKneelingWhenLooting = 0x10000000,
38 | PreventEmotes = 0x20000000,
39 | Sheath = 0x40000000,
40 | // Unk31 = 0x80000000,
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/UnitFlags2.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | enum UnitFlags2 // 4.x
7 | {
8 | AppearDead = 0x1,
9 | Unk1 = 0x2,
10 | IgnoreReputation = 0x4, // ?
11 | ComprehendLanguages = 0x8,
12 | MirrorImage = 0x10,
13 | DoNotFadeIn = 0x20,
14 | ForceMovement = 0x40,
15 | OffHandDisarmed = 0x80,
16 | DisablePredictedStats = 0x100,
17 | RangedDisarm = 0x400,
18 | RegeneratePower = 0x800,
19 | RestrictInteractionToPartyOrRaid = 0x1000,
20 | PreventSpellClick = 0x2000,
21 | CanInteractEvenIfHostile = 0x4000,
22 | CannotTurn = 0x8000,
23 | Unk2 = 0x10000,
24 | PlayDeathAnimationOnDeath = 0x20000,
25 | AllowCastingCheatSpells = 0x40000,
26 |
27 | NoActions = 0x800000,
28 | SwimPrevent = 0x1000000,
29 | HideInCombatLog = 0x2000000,
30 | CannotSwitchTargets = 0x4000000,
31 | IgnoreSpellMinRangeRestrictions = 0x8000000,
32 | Unk3 = 0x10000000,
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/UpdateFlag.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | enum UpdateFlag
7 | {
8 | None = 0x000,
9 | Self = 0x001,
10 | Transport = 0x002,
11 | AttackingTarget = 0x004,
12 | Unknown1 = 0x008,
13 | LowGuid = 0x010,
14 | Living = 0x020,
15 | StationaryObject = 0x040,
16 | Vehicle = 0x080,
17 | GOPosition = 0x100,
18 | GORotation = 0x200,
19 | Unknown2 = 0x400,
20 | AnimKits = 0x800, // 4.x
21 | TransportUnkArray = 0x1000, // 4.x
22 | EnablePortals = 0x2000, // 4.x
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/UpdateType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | enum UpdateType
4 | {
5 | Values = 0,
6 | Movement = 1,
7 | CreateObject1 = 2,
8 | CreateObject2 = 3,
9 | FarObjects = 4,
10 | NearObjects = 5
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/VehicleFlags.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | [Flags]
6 | enum VehicleFlags // 4.x
7 | {
8 | NoStrafe = 0x00000001,
9 | NoJumping = 0x00000002,
10 | FullSpeedTurning = 0x00000004,
11 |
12 | AllowPitching = 0x00000010,
13 | FullSpeedPitching = 0x00000020,
14 | CustomPitch = 0x00000040,
15 | AdjustAimAngle = 0x00000400,
16 | AdjustAimPower = 0x00000800,
17 | }
18 |
19 | [Flags]
20 | enum VehicleSeatFlags // 4.x
21 | {
22 | HasLowerAnimForEnter = 0x1,
23 | HasLowerAnimForRide = 0x2,
24 |
25 | ShouldUseVehicleSeatExitAnimationOnVoluntaryExit = 0x8,
26 |
27 | HidePassanger = 0x200,
28 | AllowsTurning = 0x400,
29 | CanControl = 0x800,
30 | Uncontrolled = 0x2000,
31 | CanAttack = 0x4000,
32 | ShouldUseVehicleSeatExitAnimationOnForcedExit = 0x8000,
33 | Unk1 = 0x20000,
34 | HasVehicleExitAnimForVoluntaryExit = 0x40000,
35 | HasVehicleExitAnimForForcedExit = 0x80000,
36 | Unk2 = 0x200000,
37 | RecHasVehicleEnterAnim = 0x400000,
38 | EnableVehicleZoom = 0x1000000,
39 | CanEnterOrExit = 0x2000000,
40 | CanSwitchFromSeat = 0x4000000,
41 | HasStartWaitingForVehicleTransitionAnimEnter = 0x8000000,
42 | HasStartWaitingForVehicleTransitionAnimExit = 0x10000000,
43 | HasVehicleUI = 0x20000000,
44 | // AllowsInteraction = 0x80000000
45 | }
46 |
47 | [Flags]
48 | enum VehicleSeatFlagsB // 4.x
49 | {
50 | None = 0x00000000,
51 | UsableForced = 0x00000002,
52 | TargetsInRaidUI = 0x00000008,
53 | Ejectable = 0x00000020,
54 | UsableForced2 = 0x00000040,
55 | UsableForced3 = 0x00000100,
56 |
57 | CanSwitch = 0x04000000,
58 |
59 | // VehiclePlayerFrameUI = 0x80000000,
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/WardenCheckType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum WardenCheckType
4 | {
5 | Memoty = 0,
6 | PageA = 1,
7 | PageB = 2,
8 | Mpq = 3,
9 | LuaString = 4,
10 | Driver = 5,
11 | Timing = 6,
12 | Process = 7,
13 | Module = 8
14 | }
15 | }
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Enums/WardenOpcode.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public enum WardenServerOpcode
4 | {
5 | ModuleInfo = 0,
6 | ModuleChunk = 1,
7 | CheatChecks = 2,
8 | Data = 3,
9 | Seed = 5
10 | }
11 |
12 | public enum WardenClientOpcode
13 | {
14 | ModuleLoadFailed = 0,
15 | ModuleLoaded = 1,
16 | CheatCheckResults = 2,
17 | TransformedSeed = 4
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/AccountHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 | using WowTools.Core;
4 |
5 | namespace WoWPacketViewer
6 | {
7 | public class AccountHandler : Parser
8 | {
9 | private const int NUM_ACCOUNT_DATA_TYPES = 8;
10 |
11 | [Parser(OpCodes.SMSG_ACCOUNT_DATA_TIMES)]
12 | public void AccountDataTimes(Parser packet)
13 | {
14 | Time("Time");
15 | Byte("Unk(byte)");
16 |
17 | int mask = packet.ReadInt32("Mask");
18 | for (int i = 0; i < NUM_ACCOUNT_DATA_TYPES; ++i)
19 | {
20 | if ((mask & (1 << i)) != 0)
21 | packet.ReadTime(((AccountDataType)i).ToString());
22 | }
23 | }
24 |
25 | [Parser(OpCodes.CMSG_REQUEST_ACCOUNT_DATA)]
26 | public void AccountDataRequest(Parser packet)
27 | {
28 | ReadEnum("Type");
29 | }
30 |
31 | [Parser(OpCodes.SMSG_UPDATE_ACCOUNT_DATA)]
32 | public void AccountUpdateData(Parser packet)
33 | {
34 | UTF8Encoding encoder = new System.Text.UTF8Encoding();
35 |
36 | UInt64("GUID: {0:X16}");
37 | ReadEnum("Type");
38 | Time("Time");
39 |
40 | byte[] compressedData = Reader.ReadBytes((int)Reader.BaseStream.Length - (int)Reader.BaseStream.Position);
41 | byte[] data = compressedData.Decompress();
42 | AppendFormatLine("Data: {0}", encoder.GetString(data));
43 | }
44 |
45 | [Parser(OpCodes.CMSG_UPDATE_ACCOUNT_DATA)]
46 | public void AccountDataUpdate(Parser packet)
47 | {
48 | UTF8Encoding encoder = new System.Text.UTF8Encoding();
49 |
50 | ReadEnum("Type");
51 | Time("Time");
52 |
53 | byte[] compressedData = Reader.ReadBytes((int)Reader.BaseStream.Length - (int)Reader.BaseStream.Position);
54 | byte[] data = compressedData.Decompress();
55 | AppendFormatLine("Data: {0}", encoder.GetString(data));
56 | }
57 |
58 | [Parser(OpCodes.SMSG_UPDATE_ACCOUNT_DATA_COMPLETE)]
59 | public void HandleUpdateAccountDataComplete(Parser packet)
60 | {
61 | ReadEnum("Type");
62 | UInt32("unk");
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/AchievementHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 | using WowTools.Core;
4 |
5 | namespace WoWPacketViewer
6 | {
7 | public class AchievementHandler : Parser
8 | {
9 | [Parser(OpCodes.SMSG_ACHIEVEMENT_DELETED)]
10 | [Parser(OpCodes.SMSG_CRITERIA_DELETED)]
11 | public void HandleDeleted(Parser packet)
12 | {
13 | UInt32("ID");
14 | }
15 |
16 | [Parser(OpCodes.SMSG_SERVER_FIRST_ACHIEVEMENT)]
17 | public void HandleServerFirstAchievement(Parser packet)
18 | {
19 | CString("PlayerName");
20 | ReadGuid("PlayerGUID");
21 | UInt32("Achievement");
22 | UInt32("LinkedName");
23 | }
24 |
25 | [Parser(OpCodes.SMSG_ACHIEVEMENT_EARNED)]
26 | public void HandleAchievementEarned(Parser packet)
27 | {
28 | ReadPackedGuid("PlayerGUID");
29 | UInt32("Achievement");
30 | PackedTime("Time");
31 | UInt32("unk");
32 | }
33 |
34 | [Parser(OpCodes.SMSG_CRITERIA_UPDATE)]
35 | public void HandleCriteriaUpdate(Parser packet)
36 | {
37 | UInt32("CriteriaID");
38 | ReadPackedGuid("CriteriaCounter");
39 | ReadPackedGuid("PlayerGUID");
40 | UInt32("unk");
41 | ReadPackedTime("CriteriaTime");
42 |
43 | for (var i = 0; i < 2; i++)
44 | UInt32("Timer");
45 | }
46 |
47 | [Parser(OpCodes.SMSG_ALL_ACHIEVEMENT_DATA)]
48 | public void HandleAllAchievementData(Parser packet)
49 | {
50 | UInt32("Achievements");
51 |
52 | //FINISH THIS
53 | }
54 |
55 | [Parser(OpCodes.CMSG_QUERY_INSPECT_ACHIEVEMENTS)]
56 | public void HandleInspectAchievementData(Parser packet)
57 | {
58 | ReadPackedGuid("GUID");
59 | }
60 |
61 | [Parser(OpCodes.SMSG_RESPOND_INSPECT_ACHIEVEMENTS)]
62 | public void HandleInspectAchievementDataResponse(Parser packet)
63 | {
64 | ReadPackedGuid("PlayerGUID");
65 |
66 | UInt32("AchievementID");
67 | ReadPackedTime("AchievementTime");
68 |
69 | UInt32("CriteriaID");
70 | ReadPackedGuid("CriteriaCounter");
71 | ReadPackedGuid("PlayerGUID");
72 | UInt32("unk");
73 | PackedTime("CriteriaTime");
74 |
75 | for (var i = 0; i < 2; i++)
76 | {
77 | UInt32("Timer");
78 | }
79 | }
80 | }
81 | }
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/ActionBarHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 | using WowTools.Core;
4 |
5 | namespace WoWPacketViewer
6 | {
7 | public class ActionBarHandler : Parser
8 | {
9 | [Parser(OpCodes.SMSG_ACTION_BUTTONS)]
10 | public void HandleInitialButtons()
11 | {
12 | Byte("TalentSpec");
13 |
14 | for (var i = 0; i < 144; i++)
15 | {
16 | var packed = Int32();
17 |
18 | if (packed == 0)
19 | continue;
20 |
21 | var action = packed & 0x00FFFFFF;
22 |
23 | var type = (ActionButtonType)((packed & 0xFF000000) >> 24);
24 | WriteLine("{0}: {1} - {2}", i, type, action);
25 | }
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/AuctionHandler.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | public class AuctionHandler : Parser
6 | {
7 | [Parser(OpCodes.SMSG_AUCTION_LIST_PENDING_SALES)]
8 | public void AuctionListPendingSalesHandler(Parser packet)
9 | {
10 | For(Reader.ReadInt32(), i =>
11 | {
12 | ReadCString("Sale {0}: string {1}", i);
13 | ReadCString("Sale {0}: string {1}", i);
14 | ReadUInt32("Sale {0}: uint {1}", i);
15 | ReadUInt32("Sale {0}: uint {1}", i);
16 | ReadSingle("Sale {0}: float {1}", i);
17 | });
18 | }
19 |
20 | [Parser(OpCodes.SMSG_AUCTION_BIDDER_NOTIFICATION)]
21 | public void AuctionBidderNothificationHandler(Parser packet)
22 | {
23 | UInt32("location");
24 | UInt32("AuctionID");
25 | UInt64("Bidder");
26 | UInt32("BidSum");
27 | UInt32("Diff");
28 | UInt32("item_template");
29 | UInt32("unk(uint32)");
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/BattlegroundHandler.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | public class BattlegroundHandler : Parser
6 | {
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/ChannelHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 | using WowTools.Core;
4 |
5 | namespace WoWPacketViewer
6 | {
7 | public class ChannelHandler : Parser
8 | {
9 | [Parser(OpCodes.CMSG_CHANNEL_VOICE_ON)]
10 | [Parser(OpCodes.CMSG_CHANNEL_VOICE_OFF)]
11 | public void HandleChannelSetVoice(Parser packet)
12 | {
13 | CString("ChannelName");
14 | }
15 |
16 | [Parser(OpCodes.CMSG_CHANNEL_SILENCE_VOICE)]
17 | [Parser(OpCodes.CMSG_CHANNEL_UNSILENCE_VOICE)]
18 | [Parser(OpCodes.CMSG_CHANNEL_SILENCE_ALL)]
19 | [Parser(OpCodes.CMSG_CHANNEL_UNSILENCE_ALL)]
20 | public void HandleChannelSilencing(Parser packet)
21 | {
22 | CString("ChannelName");
23 | CString("PlayerName");
24 | }
25 |
26 | [Parser(OpCodes.CMSG_JOIN_CHANNEL)]
27 | public void HandleChannelJoin(Parser packet)
28 | {
29 | UInt8("unk");
30 | UInt8("unk");
31 | UInt32("Channel_ID");
32 | CString("ChannelName");
33 | CString("Pass");
34 | }
35 |
36 | [Parser(OpCodes.CMSG_LEAVE_CHANNEL)]
37 | public void HandleChannelLeave(Parser packet)
38 | {
39 | UInt32("Channel_ID");
40 | CString("ChannelName");
41 | }
42 | }
43 | }
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/CombatHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 | using WowTools.Core;
4 |
5 | namespace WoWPacketViewer
6 | {
7 | public class CombatHandler : Parser
8 | {
9 | [Parser(OpCodes.SMSG_AI_REACTION)]
10 | public void HandleAIReaction(Parser packet)
11 | {
12 | UInt64("GUID");
13 | ReadEnum("Reaction");
14 | }
15 |
16 | [Parser(OpCodes.SMSG_UPDATE_COMBO_POINTS)]
17 | public void HandleUpdateComboPoints(Parser packet)
18 | {
19 | ReadPackedGuid("GUID");
20 | Byte("Combo Points");
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/ContactHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using WowTools.Core;
3 |
4 |
5 |
6 | namespace WoWPacketViewer
7 | {
8 | public class ContactHandler : Parser
9 | {
10 | public void ReadSingleContactBlock(Parser packet, bool onlineCheck)
11 | {
12 | var status = (ContactStatus)packet.ReadByte();
13 | WriteLine("Status: " + status);
14 |
15 | if (onlineCheck && status != ContactStatus.Online)
16 | return;
17 |
18 | UInt32("AreaID");
19 | UInt32("Level");
20 |
21 | var clss = (Class)packet.ReadInt32();
22 | WriteLine("Class: " + clss);
23 | }
24 |
25 | [Parser(OpCodes.SMSG_CONTACT_LIST)]
26 | public void HandleContactList(Parser packet)
27 | {
28 | var flags = (ContactListFlag)packet.ReadInt32();
29 | WriteLine("List Flags: " + flags);
30 |
31 | var count = packet.ReadInt32();
32 | WriteLine("Count: " + count);
33 |
34 | for (var i = 0; i < count; i++)
35 | {
36 | var guid = packet.ReadGuid();
37 | WriteLine("GUID: " + guid);
38 |
39 | var cflags = (ContactEntryFlag)packet.ReadInt32();
40 | WriteLine("Flags: " + cflags);
41 |
42 | var note = packet.ReadCString();
43 | WriteLine("Note: " + note);
44 |
45 | if (!cflags.HasFlag(ContactEntryFlag.Friend))
46 | continue;
47 |
48 | ReadSingleContactBlock(packet, true);
49 | }
50 | }
51 |
52 | [Parser(OpCodes.SMSG_FRIEND_STATUS)]
53 | public void HandleFriendStatus(Parser packet)
54 | {
55 | var result = (ContactResult)packet.ReadByte();
56 | WriteLine("Result: " + result);
57 |
58 | var guid = packet.ReadGuid();
59 | WriteLine("GUID: " + guid);
60 |
61 | switch (result)
62 | {
63 | case ContactResult.FriendAddedOnline:
64 | case ContactResult.FriendAddedOffline:
65 | case ContactResult.Online:
66 | {
67 | if (result != ContactResult.Online)
68 | {
69 | var note = packet.ReadCString();
70 | WriteLine("Note: " + note);
71 | }
72 |
73 | ReadSingleContactBlock(packet, false);
74 | break;
75 | }
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/CorpseHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 | using WowTools.Core;
4 |
5 | namespace WoWPacketViewer
6 | {
7 | public class CorpseHandler : Parser
8 | {
9 | [Parser(OpCodes.CMSG_CORPSE_MAP_POSITION_QUERY)]
10 | public void HandleCorpseMapPositionQuery(Parser packet)
11 | {
12 | UInt32("LowGUID");
13 | }
14 |
15 | [Parser(OpCodes.SMSG_CORPSE_RECLAIM_DELAY)]
16 | public void HandleCorpseReclaimDelay(Parser packet)
17 | {
18 | UInt32("Delay");
19 | }
20 |
21 | [Parser(OpCodes.CMSG_RECLAIM_CORPSE)]
22 | public void HandleReclaimCorpse(Parser packet)
23 | {
24 | ReadGuid("CorpseGUID");
25 | }
26 |
27 | [Parser(OpCodes.SMSG_CORPSE_MAP_POSITION_QUERY_RESPONSE)]
28 | public void HandleCorpseMapPositionResponse(Parser packet)
29 | {
30 | var curr = Reader.ReadCoords3();
31 | WriteLine("Corpse Position: {0}", curr);
32 |
33 | ReadSingle("Unk(Single)");
34 | }
35 |
36 | [Parser(OpCodes.MSG_CORPSE_QUERY)]
37 | public void HandleCorpseQuery(Parser packet)
38 | {
39 | if (Packet.Direction != Direction.Server)
40 | {
41 | WriteLine("MSG Packet that wants response from server");
42 | return;
43 | }
44 |
45 | var found = UInt8("Found");
46 | if (found == 0) return;
47 | UInt32("MapID");
48 | ReadCoords3("Corpse Position");
49 | UInt32("CorpseMapID");
50 | UInt32("CorpseLowGuid");
51 | }
52 | }
53 | }
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/EmptyPackets.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using WowTools.Core;
3 |
4 | namespace WoWPacketViewer
5 | {
6 | public class EmptyPackets : Parser
7 | {
8 | [Parser(OpCodes.CMSG_CANCEL_TRADE)]
9 | [Parser(OpCodes.CMSG_WORLD_STATE_UI_TIMER_UPDATE)]
10 | [Parser(OpCodes.CMSG_CALENDAR_GET_CALENDAR)]
11 | [Parser(OpCodes.CMSG_ATTACKSTOP)]
12 | [Parser(OpCodes.CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY)]
13 | [Parser(OpCodes.CMSG_READY_FOR_ACCOUNT_DATA_TIMES)]
14 | [Parser(OpCodes.CMSG_CHAR_ENUM)]
15 | [Parser(OpCodes.CMSG_REQUEST_RAID_INFO)]
16 | [Parser(OpCodes.CMSG_GMTICKET_GETTICKET)]
17 | [Parser(OpCodes.CMSG_CALENDAR_GET_NUM_PENDING)]
18 | [Parser(OpCodes.CMSG_KEEP_ALIVE)]
19 | [Parser(OpCodes.CMSG_BATTLEFIELD_STATUS)]
20 | [Parser(OpCodes.CMSG_MEETINGSTONE_INFO)]
21 | public void HandleEmptyCMSGPacket(Parser packet)
22 | {
23 | packet.WriteLine("CMSG Packet that wants response from server");
24 | }
25 |
26 | [Parser(OpCodes.SMSG_FORCE_SEND_QUEUED_PACKETS)]
27 | public void HandleEmptySMSGPacket(Parser packet)
28 | {
29 | packet.WriteLine("SMSG Packet that wants response from client");
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/EquipmentSetHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 | using WowTools.Core;
4 |
5 | namespace WoWPacketViewer
6 | {
7 | public class EquipmentSetHandler : Parser
8 | {
9 | public static void ReadSetInfo(Parser packet)
10 | {
11 | packet.ReadPackedGuid("SetID");
12 | packet.ReadInt32("Index");
13 | packet.ReadString("SetName");
14 | packet.ReadString("SetIcon");
15 |
16 | for (var j = 0; j < 19; j++)
17 | packet.ReadPackedGuid("Item GUID");
18 | }
19 |
20 | [Parser(OpCodes.SMSG_EQUIPMENT_SET_LIST)]
21 | public void HandleEquipmentSetList(Parser packet)
22 | {
23 | var count = packet.ReadInt32("Count");
24 | for (var i = 0; i < count; i++)
25 | ReadSetInfo(packet);
26 | }
27 |
28 | [Parser(OpCodes.CMSG_EQUIPMENT_SET_SAVE)]
29 | public void HandleEquipmentSetSave(Parser packet)
30 | {
31 | ReadSetInfo(packet);
32 | }
33 |
34 | [Parser(OpCodes.SMSG_EQUIPMENT_SET_SAVED)]
35 | public void HandleReclaimCorpse(Parser packet)
36 | {
37 | UInt32("Index");
38 | ReadPackedGuid("SetID");
39 | }
40 |
41 | [Parser(OpCodes.CMSG_EQUIPMENT_SET_USE)]
42 | public void HandleEquipmentSetUse(Parser packet)
43 | {
44 | for (var i = 0; i < 19; i++)
45 | {
46 | ReadPackedGuid("ItemGUID");
47 | Byte("SourceBag");
48 | Byte("SourceSlot");
49 | }
50 | }
51 |
52 | [Parser(OpCodes.SMSG_EQUIPMENT_SET_USE_RESULT)]
53 | public void HandleEquipmentSetUseResult(Parser packet)
54 | {
55 | Byte("Result");
56 | }
57 |
58 | [Parser(OpCodes.CMSG_EQUIPMENT_SET_DELETE)]
59 | public void HandleEquipmentSetDelete(Parser packet)
60 | {
61 | ReadPackedGuid("SetID");
62 | }
63 | }
64 | }
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/InstanceHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using WowTools.Core;
3 |
4 |
5 |
6 | namespace WoWPacketViewer
7 | {
8 | public class InstanceHandler : Parser
9 | {
10 | [Parser(OpCodes.MSG_SET_DUNGEON_DIFFICULTY)]
11 | [Parser(OpCodes.MSG_SET_RAID_DIFFICULTY)]
12 | public void HandleSetDifficulty(Parser packet)
13 | {
14 | var difficulty = (MapDifficulty)packet.ReadInt32();
15 | WriteLine("Difficulty: " + difficulty);
16 |
17 | if (Packet.Direction != Direction.Server)
18 | return;
19 |
20 | var unkByte = packet.ReadInt32();
21 | WriteLine("Unk Int32 1: " + unkByte);
22 |
23 | var inGroup = packet.ReadInt32();
24 | WriteLine("In Group: " + inGroup);
25 | }
26 |
27 | [Parser(OpCodes.SMSG_INSTANCE_DIFFICULTY)]
28 | public void HandleInstanceDifficulty(Parser packet)
29 | {
30 | var diff = (MapDifficulty)packet.ReadInt32();
31 | WriteLine("Instance Difficulty: " + diff);
32 |
33 | var unk2 = packet.ReadInt32();
34 | WriteLine("Player Difficulty: " + unk2);
35 | }
36 |
37 | [Parser(OpCodes.SMSG_PLAYER_DIFFICULTY_CHANGE)]
38 | public void HandlePlayerChangeDifficulty(Parser packet)
39 | {
40 | var type = (DifficultyChangeType)packet.ReadInt32();
41 | WriteLine("Change Type: " + type);
42 |
43 | switch (type)
44 | {
45 | case DifficultyChangeType.PlayerDifficulty1:
46 | {
47 | var difficulty = packet.ReadByte();
48 | WriteLine("Player Difficulty: " + difficulty);
49 | break;
50 | }
51 | case DifficultyChangeType.SpellDuration:
52 | {
53 | var duration = packet.ReadInt32();
54 | WriteLine("Spell Duration: " + duration);
55 | break;
56 | }
57 | case DifficultyChangeType.Time:
58 | {
59 | var time = packet.ReadInt32();
60 | WriteLine("Time: " + time);
61 | break;
62 | }
63 | case DifficultyChangeType.MapDifficulty:
64 | {
65 | var difficulty = (MapDifficulty)packet.ReadInt32();
66 | WriteLine("Map Difficulty: " + difficulty);
67 | break;
68 | }
69 | }
70 | }
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/ReputationHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using WowTools.Core;
3 |
4 |
5 |
6 | namespace WoWPacketViewer
7 | {
8 | public class ReputationHandler : Parser
9 | {
10 | [Parser(OpCodes.SMSG_INITIALIZE_FACTIONS)]
11 | public void HandleInitializeFactions(Parser packet)
12 | {
13 | var flags = packet.ReadInt32();
14 | WriteLine("Flags: 0x" + flags.ToString("X8"));
15 |
16 | for (var i = 0; i < 128; i++)
17 | {
18 | var sFlags = (FactionFlag)packet.ReadByte();
19 | WriteLine("Faction Flags " + i + ": " + sFlags);
20 |
21 | var sStand = packet.ReadInt32();
22 | WriteLine("Faction Standing " + i + ": " + sStand);
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/TalentHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using WowTools.Core;
3 |
4 |
5 |
6 | namespace WoWPacketViewer
7 | {
8 | public class TalentHandler : Parser
9 | {
10 | [Parser(OpCodes.SMSG_TALENTS_INVOLUNTARILY_RESET)]
11 | public void HandleTalentsInvoluntarilyReset(Parser packet)
12 | {
13 | var unk = packet.ReadByte();
14 | WriteLine("Unk Byte: " + unk);
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/TradeHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 | using WowTools.Core;
4 |
5 | namespace WoWPacketViewer
6 | {
7 | public class TradeHandler : Parser
8 | {
9 | [Parser(OpCodes.SMSG_TRADE_STATUS)]
10 | public void HandleTradeStatus(Parser packet)
11 | {
12 | UInt8("Unk(uint8)");
13 | UInt64("Unk(uint64)");
14 | UInt32("Unk(uint32)");
15 | UInt32("Status");
16 | UInt32("Unk(uint32)");
17 | UInt8("Unk(uint8)");
18 | UInt32("Unk(uint32)");
19 | UInt32("Unk(uint32)");
20 | UInt32("Unk(uint32)");
21 | }
22 |
23 | [Parser(OpCodes.SMSG_TRADE_STATUS_EXTENDED)]
24 | public void HandleTradeStatusExtended(Parser packet)
25 | {
26 | UInt32("Unk(uint32)");
27 | UInt32("Unk(uint32)");
28 | UInt8("Unk(uint8)");
29 | UInt32("Unk(uint32)");
30 | UInt32("Unk(uint32)");
31 | UInt32("Unk(uint32)");
32 | var count = UInt32("SlotCount");
33 | UInt64("Money");
34 | UInt32("Unk(uint32)");
35 |
36 | for (int i = 0; i < count; ++i)
37 | {
38 | UInt32("Unk(uint32)");
39 | UInt64("Unk(uint64)");
40 | UInt32("Unk(uint32)");
41 | UInt32("ID");
42 | UInt32("Unk(uint32)");
43 | UInt32("Unk(uint32)");
44 | UInt32("Unk(uint32)");
45 | UInt8("Unk(uint8)");
46 | UInt64("Unk(uint64)");
47 | UInt32("Unk(uint32)");
48 | UInt8("SlotNumber");
49 | UInt32("Unk(uint32)");
50 | UInt32("Unk(uint32)");
51 | UInt32("Unk(uint32)");
52 | UInt32("Unk(uint32)");
53 | UInt32("Unk(uint32)");
54 | UInt32("Unk(uint32)");
55 | UInt32("Unk(uint32)");
56 | }
57 | }
58 |
59 | [Parser(OpCodes.CMSG_SET_TRADE_ITEM)]
60 | public void HandleSetTradeItem(Parser packet)
61 | {
62 | UInt8("Slot");
63 | UInt8("Bag");
64 | UInt8("TradeSlot");
65 | }
66 | }
67 | }
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Grouped/WorldStateHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using WowTools.Core;
3 |
4 | namespace WoWPacketViewer
5 | {
6 | public class WorldStateHandler : Parser
7 | {
8 | //[Parser(OpCodes.SMSG_INIT_WORLD_STATES)]
9 | public void SMSG_INIT_WORLD_STATES(Parser packet)
10 | {
11 | var mapId = packet.ReadInt32();
12 | WriteLine("Map ID: " + mapId);
13 |
14 | var zoneId = packet.ReadInt32();
15 | WriteLine("Zone ID: " + zoneId);
16 |
17 | var areaId = packet.ReadInt32();
18 | WriteLine("Area ID: " + areaId);
19 |
20 | var numFields = packet.ReadInt16();
21 | WriteLine("Field Count: " + numFields);
22 |
23 | for (var i = 0; i < numFields; i++)
24 | ReadWorldStateBlock(packet);
25 | }
26 |
27 | public void ReadWorldStateBlock(Parser packet)
28 | {
29 | var fieldId = packet.ReadInt32();
30 | WriteLine(" Field: " + fieldId);
31 |
32 | var fieldVal = packet.ReadInt32();
33 | WriteLine(" Value: " + fieldVal);
34 | WriteLine("");
35 | }
36 |
37 | [Parser(OpCodes.SMSG_UPDATE_WORLD_STATE)]
38 | public void HandleUpdateWorldState(Parser packet)
39 | {
40 | ReadWorldStateBlock(packet);
41 | UInt8("unk(always 0)");
42 | }
43 |
44 | [Parser(OpCodes.SMSG_WORLD_STATE_UI_TIMER_UPDATE)]
45 | public void HandleUpdateUITimer(Parser packet)
46 | {
47 | var time = packet.ReadTime();
48 | WriteLine("Time: " + time);
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser((OpCodes))]
6 | class Movement : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 |
14 | };
15 | }
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_FALL_LAND.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser(OpCodes.MSG_MOVE_FALL_LAND)]
6 | class MovementFallLandParser : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 | MovementStatusElements.GuidByte5,
14 | MovementStatusElements.GuidByte6,
15 | MovementStatusElements.GuidByte4,
16 | MovementStatusElements.GuidByte1,
17 | MovementStatusElements.GuidByte2,
18 | MovementStatusElements.HaveSpline,
19 | MovementStatusElements.Flags2,
20 | MovementStatusElements.GuidByte7,
21 | MovementStatusElements.GuidByte3,
22 | MovementStatusElements.GuidByte0,
23 | MovementStatusElements.Flags,
24 | MovementStatusElements.HaveFallData,
25 | MovementStatusElements.HaveFallDirection,
26 | MovementStatusElements.HaveTransportData,
27 | MovementStatusElements.TransportGuidByte6,
28 | MovementStatusElements.TransportGuidByte3,
29 | MovementStatusElements.TransportGuidByte7,
30 | MovementStatusElements.TransportGuidByte4,
31 | MovementStatusElements.TransportGuidByte1,
32 | MovementStatusElements.TransportGuidByte0,
33 | MovementStatusElements.TransportGuidByte2,
34 | MovementStatusElements.TransportGuidByte5,
35 | MovementStatusElements.TransportHaveTime3,
36 | MovementStatusElements.TransportHaveTime2,
37 | MovementStatusElements.HavePitch,
38 | MovementStatusElements.HaveSplineElev,
39 | MovementStatusElements.Timestamp,
40 | MovementStatusElements.PositionX,
41 | MovementStatusElements.PositionY,
42 | MovementStatusElements.PositionZ,
43 | MovementStatusElements.PositionO,
44 | MovementStatusElements.GuidByte7_2,
45 | MovementStatusElements.GuidByte2_2,
46 | MovementStatusElements.GuidByte3_2,
47 | MovementStatusElements.GuidByte0_2,
48 | MovementStatusElements.GuidByte1_2,
49 | MovementStatusElements.GuidByte5_2,
50 | MovementStatusElements.FallVerticalSpeed,
51 | MovementStatusElements.FallTime,
52 | MovementStatusElements.FallHorizontalSpeed,
53 | MovementStatusElements.FallCosAngle,
54 | MovementStatusElements.FallSinAngle,
55 | MovementStatusElements.TransportTime,
56 | MovementStatusElements.TransportPositionX,
57 | MovementStatusElements.TransportPositionY,
58 | MovementStatusElements.TransportPositionZ,
59 | MovementStatusElements.TransportPositionO,
60 | MovementStatusElements.TransportSeat,
61 | MovementStatusElements.TransportGuidByte3_2,
62 | MovementStatusElements.TransportGuidByte1_2,
63 | MovementStatusElements.TransportTime3,
64 | MovementStatusElements.TransportGuidByte6_2,
65 | MovementStatusElements.TransportGuidByte0_2,
66 | MovementStatusElements.TransportGuidByte5_2,
67 | MovementStatusElements.TransportTime2,
68 | MovementStatusElements.TransportGuidByte7_2,
69 | MovementStatusElements.TransportGuidByte4_2,
70 | MovementStatusElements.TransportGuidByte2_2,
71 | MovementStatusElements.Pitch,
72 | MovementStatusElements.SplineElev,
73 | MovementStatusElements.GuidByte6_2,
74 | MovementStatusElements.GuidByte4_2,
75 | };
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_HEARTBEAT.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser(OpCodes.MSG_MOVE_HEARTBEAT)]
6 | class MovementHeartBeatParser : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 | MovementStatusElements.GuidByte1,
14 | MovementStatusElements.GuidByte5,
15 | MovementStatusElements.GuidByte2,
16 | MovementStatusElements.Flags2,
17 | MovementStatusElements.GuidByte3,
18 | MovementStatusElements.GuidByte4,
19 | MovementStatusElements.HaveSpline,
20 | MovementStatusElements.Flags,
21 | MovementStatusElements.GuidByte0,
22 | MovementStatusElements.GuidByte6,
23 | MovementStatusElements.GuidByte7,
24 | MovementStatusElements.HaveTransportData,
25 | MovementStatusElements.TransportGuidByte6,
26 | MovementStatusElements.TransportGuidByte3,
27 | MovementStatusElements.TransportGuidByte7,
28 | MovementStatusElements.TransportGuidByte4,
29 | MovementStatusElements.TransportGuidByte1,
30 | MovementStatusElements.TransportGuidByte0,
31 | MovementStatusElements.TransportGuidByte2,
32 | MovementStatusElements.TransportGuidByte5,
33 | MovementStatusElements.TransportHaveTime3,
34 | MovementStatusElements.TransportHaveTime2,
35 | MovementStatusElements.HavePitch,
36 | MovementStatusElements.HaveSplineElev,
37 | MovementStatusElements.HaveFallData,
38 | MovementStatusElements.HaveFallDirection,
39 | MovementStatusElements.PositionO,
40 | MovementStatusElements.PositionX,
41 | MovementStatusElements.PositionY,
42 | MovementStatusElements.PositionZ,
43 | MovementStatusElements.Timestamp,
44 | MovementStatusElements.GuidByte6_2,
45 | MovementStatusElements.TransportTime,
46 | MovementStatusElements.TransportPositionX,
47 | MovementStatusElements.TransportPositionY,
48 | MovementStatusElements.TransportPositionZ,
49 | MovementStatusElements.TransportPositionO,
50 | MovementStatusElements.TransportSeat,
51 | MovementStatusElements.TransportGuidByte3_2,
52 | MovementStatusElements.TransportGuidByte1_2,
53 | MovementStatusElements.TransportTime3,
54 | MovementStatusElements.TransportGuidByte6_2,
55 | MovementStatusElements.TransportGuidByte0_2,
56 | MovementStatusElements.TransportGuidByte5_2,
57 | MovementStatusElements.TransportTime2,
58 | MovementStatusElements.TransportGuidByte7_2,
59 | MovementStatusElements.TransportGuidByte4_2,
60 | MovementStatusElements.TransportGuidByte2_2,
61 | MovementStatusElements.Pitch,
62 | MovementStatusElements.SplineElev,
63 | MovementStatusElements.FallVerticalSpeed,
64 | MovementStatusElements.FallTime,
65 | MovementStatusElements.FallHorizontalSpeed,
66 | MovementStatusElements.FallCosAngle,
67 | MovementStatusElements.FallSinAngle,
68 | MovementStatusElements.GuidByte5_2,
69 | MovementStatusElements.GuidByte1_2,
70 | MovementStatusElements.GuidByte7_2,
71 | MovementStatusElements.GuidByte0_2,
72 | MovementStatusElements.GuidByte2_2,
73 | MovementStatusElements.GuidByte4_2,
74 | MovementStatusElements.GuidByte3_2,
75 | };
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_JUMP.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser(OpCodes.MSG_MOVE_JUMP)]
6 | class MovementJumpParser : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 | MovementStatusElements.GuidByte5,
14 | MovementStatusElements.GuidByte1,
15 | MovementStatusElements.GuidByte6,
16 | MovementStatusElements.Flags,
17 | MovementStatusElements.GuidByte2,
18 | MovementStatusElements.HaveSpline,
19 | MovementStatusElements.GuidByte3,
20 | MovementStatusElements.Flags2,
21 | MovementStatusElements.GuidByte4,
22 | MovementStatusElements.GuidByte0,
23 | MovementStatusElements.GuidByte7,
24 | MovementStatusElements.HaveFallData,
25 | MovementStatusElements.HaveFallDirection,
26 | MovementStatusElements.HaveTransportData,
27 | MovementStatusElements.TransportGuidByte6,
28 | MovementStatusElements.TransportGuidByte3,
29 | MovementStatusElements.TransportGuidByte7,
30 | MovementStatusElements.TransportGuidByte4,
31 | MovementStatusElements.TransportGuidByte1,
32 | MovementStatusElements.TransportGuidByte0,
33 | MovementStatusElements.TransportGuidByte2,
34 | MovementStatusElements.TransportGuidByte5,
35 | MovementStatusElements.TransportHaveTime3,
36 | MovementStatusElements.TransportHaveTime2,
37 | MovementStatusElements.HaveSplineElev,
38 | MovementStatusElements.HavePitch,
39 | MovementStatusElements.PositionO,
40 | MovementStatusElements.PositionX,
41 | MovementStatusElements.PositionY,
42 | MovementStatusElements.PositionZ,
43 | MovementStatusElements.Timestamp,
44 | MovementStatusElements.GuidByte1_2,
45 | MovementStatusElements.FallVerticalSpeed,
46 | MovementStatusElements.FallTime,
47 | MovementStatusElements.FallHorizontalSpeed,
48 | MovementStatusElements.FallCosAngle,
49 | MovementStatusElements.FallSinAngle,
50 | MovementStatusElements.TransportTime,
51 | MovementStatusElements.TransportPositionX,
52 | MovementStatusElements.TransportPositionY,
53 | MovementStatusElements.TransportPositionZ,
54 | MovementStatusElements.TransportPositionO,
55 | MovementStatusElements.TransportSeat,
56 | MovementStatusElements.TransportGuidByte3_2,
57 | MovementStatusElements.TransportGuidByte1_2,
58 | MovementStatusElements.TransportTime3,
59 | MovementStatusElements.TransportGuidByte6_2,
60 | MovementStatusElements.TransportGuidByte0_2,
61 | MovementStatusElements.TransportGuidByte5_2,
62 | MovementStatusElements.TransportTime2,
63 | MovementStatusElements.TransportGuidByte7_2,
64 | MovementStatusElements.TransportGuidByte4_2,
65 | MovementStatusElements.TransportGuidByte2_2,
66 | MovementStatusElements.GuidByte6_2,
67 | MovementStatusElements.GuidByte4_2,
68 | MovementStatusElements.SplineElev,
69 | MovementStatusElements.GuidByte0_2,
70 | MovementStatusElements.Pitch,
71 | MovementStatusElements.GuidByte5_2,
72 | MovementStatusElements.GuidByte3_2,
73 | MovementStatusElements.GuidByte7_2,
74 | MovementStatusElements.GuidByte2_2,
75 | };
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_SET_FACING.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser(OpCodes.MSG_MOVE_SET_FACING)]
6 | class MovementSetFacingParser : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 | MovementStatusElements.GuidByte3,
14 | MovementStatusElements.GuidByte1,
15 | MovementStatusElements.GuidByte0,
16 | MovementStatusElements.GuidByte7,
17 | MovementStatusElements.Flags2,
18 | MovementStatusElements.HaveSpline,
19 | MovementStatusElements.GuidByte4,
20 | MovementStatusElements.Flags,
21 | MovementStatusElements.GuidByte6,
22 | MovementStatusElements.GuidByte5,
23 | MovementStatusElements.GuidByte2,
24 | MovementStatusElements.HaveFallData,
25 | MovementStatusElements.HaveFallDirection,
26 | MovementStatusElements.HaveTransportData,
27 | MovementStatusElements.TransportGuidByte6,
28 | MovementStatusElements.TransportGuidByte3,
29 | MovementStatusElements.TransportGuidByte7,
30 | MovementStatusElements.TransportGuidByte4,
31 | MovementStatusElements.TransportGuidByte1,
32 | MovementStatusElements.TransportGuidByte0,
33 | MovementStatusElements.TransportGuidByte2,
34 | MovementStatusElements.TransportGuidByte5,
35 | MovementStatusElements.TransportHaveTime3,
36 | MovementStatusElements.TransportHaveTime2,
37 | MovementStatusElements.HavePitch,
38 | MovementStatusElements.HaveSplineElev,
39 | MovementStatusElements.PositionX,
40 | MovementStatusElements.PositionY,
41 | MovementStatusElements.PositionZ,
42 | MovementStatusElements.PositionO,
43 | MovementStatusElements.Timestamp,
44 | MovementStatusElements.FallVerticalSpeed,
45 | MovementStatusElements.FallTime,
46 | MovementStatusElements.FallHorizontalSpeed,
47 | MovementStatusElements.FallCosAngle,
48 | MovementStatusElements.FallSinAngle,
49 | MovementStatusElements.GuidByte2_2,
50 | MovementStatusElements.GuidByte4_2,
51 | MovementStatusElements.TransportTime,
52 | MovementStatusElements.TransportPositionX,
53 | MovementStatusElements.TransportPositionY,
54 | MovementStatusElements.TransportPositionZ,
55 | MovementStatusElements.TransportPositionO,
56 | MovementStatusElements.TransportSeat,
57 | MovementStatusElements.TransportGuidByte3_2,
58 | MovementStatusElements.TransportGuidByte1_2,
59 | MovementStatusElements.TransportTime3,
60 | MovementStatusElements.TransportGuidByte6_2,
61 | MovementStatusElements.TransportGuidByte0_2,
62 | MovementStatusElements.TransportGuidByte5_2,
63 | MovementStatusElements.TransportTime2,
64 | MovementStatusElements.TransportGuidByte7_2,
65 | MovementStatusElements.TransportGuidByte4_2,
66 | MovementStatusElements.TransportGuidByte2_2,
67 | MovementStatusElements.GuidByte3_2,
68 | MovementStatusElements.GuidByte7_2,
69 | MovementStatusElements.Pitch,
70 | MovementStatusElements.GuidByte5_2,
71 | MovementStatusElements.GuidByte1_2,
72 | MovementStatusElements.GuidByte6_2,
73 | MovementStatusElements.SplineElev,
74 | MovementStatusElements.GuidByte0_2,
75 | };
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_SET_PITCH.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser(OpCodes.MSG_MOVE_SET_PITCH)]
6 | class MovementSetPitchParser : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 | MovementStatusElements.GuidByte4,
14 | MovementStatusElements.GuidByte6,
15 | MovementStatusElements.GuidByte2,
16 | MovementStatusElements.Flags2,
17 | MovementStatusElements.GuidByte1,
18 | MovementStatusElements.GuidByte7,
19 | MovementStatusElements.GuidByte5,
20 | MovementStatusElements.GuidByte3,
21 | MovementStatusElements.HaveSpline,
22 | MovementStatusElements.GuidByte0,
23 | MovementStatusElements.Flags,
24 | MovementStatusElements.HaveFallData,
25 | MovementStatusElements.HaveFallDirection,
26 | MovementStatusElements.HaveTransportData,
27 | MovementStatusElements.TransportGuidByte6,
28 | MovementStatusElements.TransportGuidByte3,
29 | MovementStatusElements.TransportGuidByte7,
30 | MovementStatusElements.TransportGuidByte4,
31 | MovementStatusElements.TransportGuidByte1,
32 | MovementStatusElements.TransportGuidByte0,
33 | MovementStatusElements.TransportGuidByte2,
34 | MovementStatusElements.TransportGuidByte5,
35 | MovementStatusElements.TransportHaveTime3,
36 | MovementStatusElements.TransportHaveTime2,
37 | MovementStatusElements.HaveSplineElev,
38 | MovementStatusElements.HavePitch,
39 | MovementStatusElements.PositionO,
40 | MovementStatusElements.Timestamp,
41 | MovementStatusElements.PositionX,
42 | MovementStatusElements.PositionY,
43 | MovementStatusElements.PositionZ,
44 | MovementStatusElements.GuidByte2_2,
45 | MovementStatusElements.GuidByte6_2,
46 | MovementStatusElements.GuidByte5_2,
47 | MovementStatusElements.FallVerticalSpeed,
48 | MovementStatusElements.FallTime,
49 | MovementStatusElements.FallHorizontalSpeed,
50 | MovementStatusElements.FallCosAngle,
51 | MovementStatusElements.FallSinAngle,
52 | MovementStatusElements.GuidByte3_2,
53 | MovementStatusElements.TransportTime,
54 | MovementStatusElements.TransportPositionX,
55 | MovementStatusElements.TransportPositionY,
56 | MovementStatusElements.TransportPositionZ,
57 | MovementStatusElements.TransportPositionO,
58 | MovementStatusElements.TransportSeat,
59 | MovementStatusElements.TransportGuidByte3_2,
60 | MovementStatusElements.TransportGuidByte1_2,
61 | MovementStatusElements.TransportTime3,
62 | MovementStatusElements.TransportGuidByte6_2,
63 | MovementStatusElements.TransportGuidByte0_2,
64 | MovementStatusElements.TransportGuidByte5_2,
65 | MovementStatusElements.TransportTime2,
66 | MovementStatusElements.TransportGuidByte7_2,
67 | MovementStatusElements.TransportGuidByte4_2,
68 | MovementStatusElements.TransportGuidByte2_2,
69 | MovementStatusElements.GuidByte0_2,
70 | MovementStatusElements.GuidByte1_2,
71 | MovementStatusElements.SplineElev,
72 | MovementStatusElements.GuidByte7_2,
73 | MovementStatusElements.GuidByte4_2,
74 | MovementStatusElements.Pitch,
75 | };
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_START_ASCEND.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser(OpCodes.MSG_MOVE_START_ASCEND)]
6 | class MovementStartAscendParser : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 | MovementStatusElements.GuidByte2,
14 | MovementStatusElements.GuidByte3,
15 | MovementStatusElements.GuidByte6,
16 | MovementStatusElements.GuidByte4,
17 | MovementStatusElements.GuidByte0,
18 | MovementStatusElements.HaveSpline,
19 | MovementStatusElements.GuidByte1,
20 | MovementStatusElements.GuidByte5,
21 | MovementStatusElements.Flags,
22 | MovementStatusElements.Flags2,
23 | MovementStatusElements.GuidByte7,
24 | MovementStatusElements.HaveTransportData,
25 | MovementStatusElements.TransportGuidByte6,
26 | MovementStatusElements.TransportGuidByte3,
27 | MovementStatusElements.TransportGuidByte7,
28 | MovementStatusElements.TransportGuidByte4,
29 | MovementStatusElements.TransportGuidByte1,
30 | MovementStatusElements.TransportGuidByte0,
31 | MovementStatusElements.TransportGuidByte2,
32 | MovementStatusElements.TransportGuidByte5,
33 | MovementStatusElements.TransportHaveTime3,
34 | MovementStatusElements.TransportHaveTime2,
35 | MovementStatusElements.HaveFallData,
36 | MovementStatusElements.HaveFallDirection,
37 | MovementStatusElements.HavePitch,
38 | MovementStatusElements.HaveSplineElev,
39 | MovementStatusElements.PositionO,
40 | MovementStatusElements.PositionX,
41 | MovementStatusElements.PositionY,
42 | MovementStatusElements.PositionZ,
43 | MovementStatusElements.Timestamp,
44 | MovementStatusElements.TransportTime,
45 | MovementStatusElements.TransportPositionX,
46 | MovementStatusElements.TransportPositionY,
47 | MovementStatusElements.TransportPositionZ,
48 | MovementStatusElements.TransportPositionO,
49 | MovementStatusElements.TransportSeat,
50 | MovementStatusElements.TransportGuidByte3_2,
51 | MovementStatusElements.TransportGuidByte1_2,
52 | MovementStatusElements.TransportTime3,
53 | MovementStatusElements.TransportGuidByte6_2,
54 | MovementStatusElements.TransportGuidByte0_2,
55 | MovementStatusElements.TransportGuidByte5_2,
56 | MovementStatusElements.TransportTime2,
57 | MovementStatusElements.TransportGuidByte7_2,
58 | MovementStatusElements.TransportGuidByte4_2,
59 | MovementStatusElements.TransportGuidByte2_2,
60 | MovementStatusElements.GuidByte5_2,
61 | MovementStatusElements.GuidByte3_2,
62 | MovementStatusElements.GuidByte4_2,
63 | MovementStatusElements.FallVerticalSpeed,
64 | MovementStatusElements.FallTime,
65 | MovementStatusElements.FallHorizontalSpeed,
66 | MovementStatusElements.FallCosAngle,
67 | MovementStatusElements.FallSinAngle,
68 | MovementStatusElements.GuidByte0_2,
69 | MovementStatusElements.GuidByte2_2,
70 | MovementStatusElements.Pitch,
71 | MovementStatusElements.GuidByte6_2,
72 | MovementStatusElements.SplineElev,
73 | MovementStatusElements.GuidByte7_2,
74 | MovementStatusElements.GuidByte1_2,
75 | };
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_START_BACKWARD.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser(OpCodes.MSG_MOVE_START_BACKWARD)]
6 | class MovementStartBackwardParser : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 | MovementStatusElements.GuidByte4,
14 | MovementStatusElements.GuidByte1,
15 | MovementStatusElements.GuidByte5,
16 | MovementStatusElements.Flags2,
17 | MovementStatusElements.GuidByte3,
18 | MovementStatusElements.GuidByte6,
19 | MovementStatusElements.GuidByte0,
20 | MovementStatusElements.GuidByte2,
21 | MovementStatusElements.GuidByte7,
22 | MovementStatusElements.Flags,
23 | MovementStatusElements.HaveSpline,
24 | MovementStatusElements.HaveFallData,
25 | MovementStatusElements.HaveFallDirection,
26 | MovementStatusElements.HaveTransportData,
27 | MovementStatusElements.TransportGuidByte6,
28 | MovementStatusElements.TransportGuidByte3,
29 | MovementStatusElements.TransportGuidByte7,
30 | MovementStatusElements.TransportGuidByte4,
31 | MovementStatusElements.TransportGuidByte1,
32 | MovementStatusElements.TransportGuidByte0,
33 | MovementStatusElements.TransportGuidByte2,
34 | MovementStatusElements.TransportGuidByte5,
35 | MovementStatusElements.TransportHaveTime3,
36 | MovementStatusElements.TransportHaveTime2,
37 | MovementStatusElements.HavePitch,
38 | MovementStatusElements.HaveSplineElev,
39 | MovementStatusElements.PositionX,
40 | MovementStatusElements.PositionY,
41 | MovementStatusElements.PositionZ,
42 | MovementStatusElements.Timestamp,
43 | MovementStatusElements.PositionO,
44 | MovementStatusElements.GuidByte0_2,
45 | MovementStatusElements.GuidByte5_2,
46 | MovementStatusElements.FallVerticalSpeed,
47 | MovementStatusElements.FallTime,
48 | MovementStatusElements.FallHorizontalSpeed,
49 | MovementStatusElements.FallCosAngle,
50 | MovementStatusElements.FallSinAngle,
51 | MovementStatusElements.GuidByte4_2,
52 | MovementStatusElements.GuidByte2_2,
53 | MovementStatusElements.TransportTime,
54 | MovementStatusElements.TransportPositionX,
55 | MovementStatusElements.TransportPositionY,
56 | MovementStatusElements.TransportPositionZ,
57 | MovementStatusElements.TransportPositionO,
58 | MovementStatusElements.TransportSeat,
59 | MovementStatusElements.TransportGuidByte3_2,
60 | MovementStatusElements.TransportGuidByte1_2,
61 | MovementStatusElements.TransportTime3,
62 | MovementStatusElements.TransportGuidByte6_2,
63 | MovementStatusElements.TransportGuidByte0_2,
64 | MovementStatusElements.TransportGuidByte5_2,
65 | MovementStatusElements.TransportTime2,
66 | MovementStatusElements.TransportGuidByte7_2,
67 | MovementStatusElements.TransportGuidByte4_2,
68 | MovementStatusElements.TransportGuidByte2_2,
69 | MovementStatusElements.GuidByte6_2,
70 | MovementStatusElements.Pitch,
71 | MovementStatusElements.GuidByte3_2,
72 | MovementStatusElements.SplineElev,
73 | MovementStatusElements.GuidByte1_2,
74 | MovementStatusElements.GuidByte7_2,
75 | };
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_START_DESCEND.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser(OpCodes.MSG_MOVE_START_DESCEND)]
6 | class MovementStartDescendParser : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 | MovementStatusElements.GuidByte7,
14 | MovementStatusElements.GuidByte0,
15 | MovementStatusElements.GuidByte2,
16 | MovementStatusElements.GuidByte1,
17 | MovementStatusElements.GuidByte6,
18 | MovementStatusElements.GuidByte4,
19 | MovementStatusElements.GuidByte5,
20 | MovementStatusElements.HaveSpline,
21 | MovementStatusElements.GuidByte3,
22 | MovementStatusElements.Flags2,
23 | MovementStatusElements.Flags,
24 | MovementStatusElements.HaveFallData,
25 | MovementStatusElements.HaveFallDirection,
26 | MovementStatusElements.HavePitch,
27 | MovementStatusElements.HaveSplineElev,
28 | MovementStatusElements.HaveTransportData,
29 | MovementStatusElements.TransportGuidByte6,
30 | MovementStatusElements.TransportGuidByte3,
31 | MovementStatusElements.TransportGuidByte7,
32 | MovementStatusElements.TransportGuidByte4,
33 | MovementStatusElements.TransportGuidByte1,
34 | MovementStatusElements.TransportGuidByte0,
35 | MovementStatusElements.TransportGuidByte2,
36 | MovementStatusElements.TransportGuidByte5,
37 | MovementStatusElements.TransportHaveTime3,
38 | MovementStatusElements.TransportHaveTime2,
39 | MovementStatusElements.Timestamp,
40 | MovementStatusElements.PositionX,
41 | MovementStatusElements.PositionY,
42 | MovementStatusElements.PositionZ,
43 | MovementStatusElements.PositionO,
44 | MovementStatusElements.GuidByte3_2,
45 | MovementStatusElements.GuidByte4_2,
46 | MovementStatusElements.GuidByte2_2,
47 | MovementStatusElements.FallVerticalSpeed,
48 | MovementStatusElements.FallTime,
49 | MovementStatusElements.FallHorizontalSpeed,
50 | MovementStatusElements.FallCosAngle,
51 | MovementStatusElements.FallSinAngle,
52 | MovementStatusElements.Pitch,
53 | MovementStatusElements.GuidByte5_2,
54 | MovementStatusElements.SplineElev,
55 | MovementStatusElements.TransportTime,
56 | MovementStatusElements.TransportPositionX,
57 | MovementStatusElements.TransportPositionY,
58 | MovementStatusElements.TransportPositionZ,
59 | MovementStatusElements.TransportPositionO,
60 | MovementStatusElements.TransportSeat,
61 | MovementStatusElements.TransportGuidByte3_2,
62 | MovementStatusElements.TransportGuidByte1_2,
63 | MovementStatusElements.TransportTime3,
64 | MovementStatusElements.TransportGuidByte6_2,
65 | MovementStatusElements.TransportGuidByte0_2,
66 | MovementStatusElements.TransportGuidByte5_2,
67 | MovementStatusElements.TransportTime2,
68 | MovementStatusElements.TransportGuidByte7_2,
69 | MovementStatusElements.TransportGuidByte4_2,
70 | MovementStatusElements.TransportGuidByte2_2,
71 | MovementStatusElements.GuidByte1_2,
72 | MovementStatusElements.GuidByte0_2,
73 | MovementStatusElements.GuidByte7_2,
74 | MovementStatusElements.GuidByte6_2,
75 | };
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_START_FORWARD.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser(OpCodes.MSG_MOVE_START_FORWARD)]
6 | class MovementStartForwardParser : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 | MovementStatusElements.GuidByte0,
14 | MovementStatusElements.HaveSpline,
15 | MovementStatusElements.GuidByte5,
16 | MovementStatusElements.GuidByte3,
17 | MovementStatusElements.GuidByte4,
18 | MovementStatusElements.GuidByte2,
19 | MovementStatusElements.GuidByte7,
20 | MovementStatusElements.Flags2,
21 | MovementStatusElements.Flags,
22 | MovementStatusElements.GuidByte6,
23 | MovementStatusElements.GuidByte1,
24 | MovementStatusElements.HavePitch,
25 | MovementStatusElements.HaveFallData,
26 | MovementStatusElements.HaveFallDirection,
27 | MovementStatusElements.HaveTransportData,
28 | MovementStatusElements.TransportGuidByte6,
29 | MovementStatusElements.TransportGuidByte3,
30 | MovementStatusElements.TransportGuidByte7,
31 | MovementStatusElements.TransportGuidByte4,
32 | MovementStatusElements.TransportGuidByte1,
33 | MovementStatusElements.TransportGuidByte0,
34 | MovementStatusElements.TransportGuidByte2,
35 | MovementStatusElements.TransportGuidByte5,
36 | MovementStatusElements.TransportHaveTime3,
37 | MovementStatusElements.TransportHaveTime2,
38 | MovementStatusElements.HaveSplineElev,
39 | MovementStatusElements.Timestamp,
40 | MovementStatusElements.PositionX,
41 | MovementStatusElements.PositionY,
42 | MovementStatusElements.PositionZ,
43 | MovementStatusElements.PositionO,
44 | MovementStatusElements.GuidByte7_2,
45 | MovementStatusElements.Pitch,
46 | MovementStatusElements.GuidByte1_2,
47 | MovementStatusElements.GuidByte2_2,
48 | MovementStatusElements.FallVerticalSpeed,
49 | MovementStatusElements.FallTime,
50 | MovementStatusElements.FallHorizontalSpeed,
51 | MovementStatusElements.FallCosAngle,
52 | MovementStatusElements.FallSinAngle,
53 | MovementStatusElements.GuidByte3_2,
54 | MovementStatusElements.GuidByte5_2,
55 | MovementStatusElements.GuidByte0_2,
56 | MovementStatusElements.GuidByte6_2,
57 | MovementStatusElements.TransportTime,
58 | MovementStatusElements.TransportPositionX,
59 | MovementStatusElements.TransportPositionY,
60 | MovementStatusElements.TransportPositionZ,
61 | MovementStatusElements.TransportPositionO,
62 | MovementStatusElements.TransportSeat,
63 | MovementStatusElements.TransportGuidByte3_2,
64 | MovementStatusElements.TransportGuidByte1_2,
65 | MovementStatusElements.TransportTime3,
66 | MovementStatusElements.TransportGuidByte6_2,
67 | MovementStatusElements.TransportGuidByte0_2,
68 | MovementStatusElements.TransportGuidByte5_2,
69 | MovementStatusElements.TransportTime2,
70 | MovementStatusElements.TransportGuidByte7_2,
71 | MovementStatusElements.TransportGuidByte4_2,
72 | MovementStatusElements.TransportGuidByte2_2,
73 | MovementStatusElements.GuidByte4_2,
74 | MovementStatusElements.SplineElev,
75 | };
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_START_SWIM.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser(OpCodes.MSG_MOVE_START_SWIM)]
6 | class MovementStartSwimParser : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 | MovementStatusElements.GuidByte1,
14 | MovementStatusElements.GuidByte5,
15 | MovementStatusElements.Flags,
16 | MovementStatusElements.GuidByte2,
17 | MovementStatusElements.HaveSpline,
18 | MovementStatusElements.GuidByte6,
19 | MovementStatusElements.Flags2,
20 | MovementStatusElements.GuidByte4,
21 | MovementStatusElements.GuidByte7,
22 | MovementStatusElements.GuidByte0,
23 | MovementStatusElements.GuidByte3,
24 | MovementStatusElements.HavePitch,
25 | MovementStatusElements.HaveSplineElev,
26 | MovementStatusElements.HaveFallData,
27 | MovementStatusElements.HaveFallDirection,
28 | MovementStatusElements.HaveTransportData,
29 | MovementStatusElements.TransportGuidByte6,
30 | MovementStatusElements.TransportGuidByte3,
31 | MovementStatusElements.TransportGuidByte7,
32 | MovementStatusElements.TransportGuidByte4,
33 | MovementStatusElements.TransportGuidByte1,
34 | MovementStatusElements.TransportGuidByte0,
35 | MovementStatusElements.TransportGuidByte2,
36 | MovementStatusElements.TransportGuidByte5,
37 | MovementStatusElements.TransportHaveTime3,
38 | MovementStatusElements.TransportHaveTime2,
39 | MovementStatusElements.PositionO,
40 | MovementStatusElements.PositionX,
41 | MovementStatusElements.PositionY,
42 | MovementStatusElements.PositionZ,
43 | MovementStatusElements.Timestamp,
44 | MovementStatusElements.Pitch,
45 | MovementStatusElements.GuidByte4_2,
46 | MovementStatusElements.SplineElev,
47 | MovementStatusElements.FallVerticalSpeed,
48 | MovementStatusElements.FallTime,
49 | MovementStatusElements.FallHorizontalSpeed,
50 | MovementStatusElements.FallCosAngle,
51 | MovementStatusElements.FallSinAngle,
52 | MovementStatusElements.GuidByte0_2,
53 | MovementStatusElements.GuidByte7_2,
54 | MovementStatusElements.TransportTime,
55 | MovementStatusElements.TransportPositionX,
56 | MovementStatusElements.TransportPositionY,
57 | MovementStatusElements.TransportPositionZ,
58 | MovementStatusElements.TransportPositionO,
59 | MovementStatusElements.TransportSeat,
60 | MovementStatusElements.TransportGuidByte3_2,
61 | MovementStatusElements.TransportGuidByte1_2,
62 | MovementStatusElements.TransportTime3,
63 | MovementStatusElements.TransportGuidByte6_2,
64 | MovementStatusElements.TransportGuidByte0_2,
65 | MovementStatusElements.TransportGuidByte5_2,
66 | MovementStatusElements.TransportTime2,
67 | MovementStatusElements.TransportGuidByte7_2,
68 | MovementStatusElements.TransportGuidByte4_2,
69 | MovementStatusElements.TransportGuidByte2_2,
70 | MovementStatusElements.GuidByte6_2,
71 | MovementStatusElements.GuidByte5_2,
72 | MovementStatusElements.GuidByte2_2,
73 | MovementStatusElements.GuidByte1_2,
74 | MovementStatusElements.GuidByte3_2,
75 | };
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_START_TURN_LEFT.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser(OpCodes.MSG_MOVE_START_TURN_LEFT)]
6 | class MovementStartTurnLeftParser : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 | MovementStatusElements.Flags,
14 | MovementStatusElements.GuidByte3,
15 | MovementStatusElements.GuidByte5,
16 | MovementStatusElements.GuidByte7,
17 | MovementStatusElements.Flags2,
18 | MovementStatusElements.GuidByte6,
19 | MovementStatusElements.HaveSpline,
20 | MovementStatusElements.GuidByte0,
21 | MovementStatusElements.GuidByte2,
22 | MovementStatusElements.GuidByte1,
23 | MovementStatusElements.GuidByte4,
24 | MovementStatusElements.HaveFallData,
25 | MovementStatusElements.HaveFallDirection,
26 | MovementStatusElements.HaveSplineElev,
27 | MovementStatusElements.HavePitch,
28 | MovementStatusElements.HaveTransportData,
29 | MovementStatusElements.TransportGuidByte6,
30 | MovementStatusElements.TransportGuidByte3,
31 | MovementStatusElements.TransportGuidByte7,
32 | MovementStatusElements.TransportGuidByte4,
33 | MovementStatusElements.TransportGuidByte1,
34 | MovementStatusElements.TransportGuidByte0,
35 | MovementStatusElements.TransportGuidByte2,
36 | MovementStatusElements.TransportGuidByte5,
37 | MovementStatusElements.TransportHaveTime3,
38 | MovementStatusElements.TransportHaveTime2,
39 | MovementStatusElements.PositionO,
40 | MovementStatusElements.Timestamp,
41 | MovementStatusElements.PositionX,
42 | MovementStatusElements.PositionY,
43 | MovementStatusElements.PositionZ,
44 | MovementStatusElements.GuidByte2_2,
45 | MovementStatusElements.GuidByte6_2,
46 | MovementStatusElements.FallVerticalSpeed,
47 | MovementStatusElements.FallTime,
48 | MovementStatusElements.FallHorizontalSpeed,
49 | MovementStatusElements.FallCosAngle,
50 | MovementStatusElements.FallSinAngle,
51 | MovementStatusElements.GuidByte4_2,
52 | MovementStatusElements.SplineElev,
53 | MovementStatusElements.GuidByte0_2,
54 | MovementStatusElements.GuidByte7_2,
55 | MovementStatusElements.Pitch,
56 | MovementStatusElements.GuidByte1_2,
57 | MovementStatusElements.GuidByte5_2,
58 | MovementStatusElements.GuidByte3_2,
59 | MovementStatusElements.TransportTime,
60 | MovementStatusElements.TransportPositionX,
61 | MovementStatusElements.TransportPositionY,
62 | MovementStatusElements.TransportPositionZ,
63 | MovementStatusElements.TransportPositionO,
64 | MovementStatusElements.TransportSeat,
65 | MovementStatusElements.TransportGuidByte3_2,
66 | MovementStatusElements.TransportGuidByte1_2,
67 | MovementStatusElements.TransportTime3,
68 | MovementStatusElements.TransportGuidByte6_2,
69 | MovementStatusElements.TransportGuidByte0_2,
70 | MovementStatusElements.TransportGuidByte5_2,
71 | MovementStatusElements.TransportTime2,
72 | MovementStatusElements.TransportGuidByte7_2,
73 | MovementStatusElements.TransportGuidByte4_2,
74 | MovementStatusElements.TransportGuidByte2_2,
75 | };
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_STOP.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser(OpCodes.MSG_MOVE_STOP)]
6 | class MovementStopParser : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 | MovementStatusElements.GuidByte4,
14 | MovementStatusElements.GuidByte3,
15 | MovementStatusElements.Flags,
16 | MovementStatusElements.GuidByte5,
17 | MovementStatusElements.GuidByte6,
18 | MovementStatusElements.GuidByte0,
19 | MovementStatusElements.GuidByte1,
20 | MovementStatusElements.GuidByte2,
21 | MovementStatusElements.GuidByte7,
22 | MovementStatusElements.HaveSpline,
23 | MovementStatusElements.Flags2,
24 | MovementStatusElements.HavePitch,
25 | MovementStatusElements.HaveSplineElev,
26 | MovementStatusElements.HaveFallData,
27 | MovementStatusElements.HaveFallDirection,
28 | MovementStatusElements.HaveTransportData,
29 | MovementStatusElements.TransportGuidByte6,
30 | MovementStatusElements.TransportGuidByte3,
31 | MovementStatusElements.TransportGuidByte7,
32 | MovementStatusElements.TransportGuidByte4,
33 | MovementStatusElements.TransportGuidByte1,
34 | MovementStatusElements.TransportGuidByte0,
35 | MovementStatusElements.TransportGuidByte2,
36 | MovementStatusElements.TransportGuidByte5,
37 | MovementStatusElements.TransportHaveTime3,
38 | MovementStatusElements.TransportHaveTime2,
39 | MovementStatusElements.Timestamp,
40 | MovementStatusElements.PositionX,
41 | MovementStatusElements.PositionY,
42 | MovementStatusElements.PositionZ,
43 | MovementStatusElements.PositionO,
44 | MovementStatusElements.GuidByte6_2,
45 | MovementStatusElements.GuidByte5_2,
46 | MovementStatusElements.GuidByte1_2,
47 | MovementStatusElements.GuidByte3_2,
48 | MovementStatusElements.Pitch,
49 | MovementStatusElements.GuidByte2_2,
50 | MovementStatusElements.SplineElev,
51 | MovementStatusElements.GuidByte4_2,
52 | MovementStatusElements.GuidByte0_2,
53 | MovementStatusElements.GuidByte7_2,
54 | MovementStatusElements.FallVerticalSpeed,
55 | MovementStatusElements.FallTime,
56 | MovementStatusElements.FallHorizontalSpeed,
57 | MovementStatusElements.FallCosAngle,
58 | MovementStatusElements.FallSinAngle,
59 | MovementStatusElements.TransportTime,
60 | MovementStatusElements.TransportPositionX,
61 | MovementStatusElements.TransportPositionY,
62 | MovementStatusElements.TransportPositionZ,
63 | MovementStatusElements.TransportPositionO,
64 | MovementStatusElements.TransportSeat,
65 | MovementStatusElements.TransportGuidByte3_2,
66 | MovementStatusElements.TransportGuidByte1_2,
67 | MovementStatusElements.TransportTime3,
68 | MovementStatusElements.TransportGuidByte6_2,
69 | MovementStatusElements.TransportGuidByte0_2,
70 | MovementStatusElements.TransportGuidByte5_2,
71 | MovementStatusElements.TransportTime2,
72 | MovementStatusElements.TransportGuidByte7_2,
73 | MovementStatusElements.TransportGuidByte4_2,
74 | MovementStatusElements.TransportGuidByte2_2,
75 | };
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_STOP_ASCEND.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser(OpCodes.MSG_MOVE_STOP_ASCEND)]
6 | class MovementStopAscendParser : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 | MovementStatusElements.HaveSpline,
14 | MovementStatusElements.GuidByte5,
15 | MovementStatusElements.GuidByte3,
16 | MovementStatusElements.GuidByte1,
17 | MovementStatusElements.Flags,
18 | MovementStatusElements.GuidByte4,
19 | MovementStatusElements.GuidByte7,
20 | MovementStatusElements.GuidByte2,
21 | MovementStatusElements.Flags2,
22 | MovementStatusElements.GuidByte6,
23 | MovementStatusElements.GuidByte0,
24 | MovementStatusElements.HavePitch,
25 | MovementStatusElements.HaveSplineElev,
26 | MovementStatusElements.HaveFallData,
27 | MovementStatusElements.HaveFallDirection,
28 | MovementStatusElements.HaveTransportData,
29 | MovementStatusElements.TransportGuidByte6,
30 | MovementStatusElements.TransportGuidByte3,
31 | MovementStatusElements.TransportGuidByte7,
32 | MovementStatusElements.TransportGuidByte4,
33 | MovementStatusElements.TransportGuidByte1,
34 | MovementStatusElements.TransportGuidByte0,
35 | MovementStatusElements.TransportGuidByte2,
36 | MovementStatusElements.TransportGuidByte5,
37 | MovementStatusElements.TransportHaveTime3,
38 | MovementStatusElements.TransportHaveTime2,
39 | MovementStatusElements.Timestamp,
40 | MovementStatusElements.PositionX,
41 | MovementStatusElements.PositionY,
42 | MovementStatusElements.PositionZ,
43 | MovementStatusElements.PositionO,
44 | MovementStatusElements.GuidByte5_2,
45 | MovementStatusElements.GuidByte2_2,
46 | MovementStatusElements.GuidByte0_2,
47 | MovementStatusElements.GuidByte7_2,
48 | MovementStatusElements.Pitch,
49 | MovementStatusElements.GuidByte3_2,
50 | MovementStatusElements.GuidByte4_2,
51 | MovementStatusElements.GuidByte1_2,
52 | MovementStatusElements.SplineElev,
53 | MovementStatusElements.FallVerticalSpeed,
54 | MovementStatusElements.FallTime,
55 | MovementStatusElements.FallHorizontalSpeed,
56 | MovementStatusElements.FallCosAngle,
57 | MovementStatusElements.FallSinAngle,
58 | MovementStatusElements.GuidByte6_2,
59 | MovementStatusElements.TransportTime,
60 | MovementStatusElements.TransportPositionX,
61 | MovementStatusElements.TransportPositionY,
62 | MovementStatusElements.TransportPositionZ,
63 | MovementStatusElements.TransportPositionO,
64 | MovementStatusElements.TransportSeat,
65 | MovementStatusElements.TransportGuidByte3_2,
66 | MovementStatusElements.TransportGuidByte1_2,
67 | MovementStatusElements.TransportTime3,
68 | MovementStatusElements.TransportGuidByte6_2,
69 | MovementStatusElements.TransportGuidByte0_2,
70 | MovementStatusElements.TransportGuidByte5_2,
71 | MovementStatusElements.TransportTime2,
72 | MovementStatusElements.TransportGuidByte7_2,
73 | MovementStatusElements.TransportGuidByte4_2,
74 | MovementStatusElements.TransportGuidByte2_2,
75 | };
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_STOP_STRAFE.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser(OpCodes.MSG_MOVE_STOP_STRAFE)]
6 | class MovementStopStrafeParser : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 | MovementStatusElements.GuidByte3,
14 | MovementStatusElements.Flags,
15 | MovementStatusElements.HaveSpline,
16 | MovementStatusElements.GuidByte4,
17 | MovementStatusElements.GuidByte0,
18 | MovementStatusElements.Flags2,
19 | MovementStatusElements.GuidByte5,
20 | MovementStatusElements.GuidByte6,
21 | MovementStatusElements.GuidByte7,
22 | MovementStatusElements.GuidByte1,
23 | MovementStatusElements.GuidByte2,
24 | MovementStatusElements.HaveTransportData,
25 | MovementStatusElements.TransportGuidByte6,
26 | MovementStatusElements.TransportGuidByte3,
27 | MovementStatusElements.TransportGuidByte7,
28 | MovementStatusElements.TransportGuidByte4,
29 | MovementStatusElements.TransportGuidByte1,
30 | MovementStatusElements.TransportGuidByte0,
31 | MovementStatusElements.TransportGuidByte2,
32 | MovementStatusElements.TransportGuidByte5,
33 | MovementStatusElements.TransportHaveTime3,
34 | MovementStatusElements.TransportHaveTime2,
35 | MovementStatusElements.HaveSplineElev,
36 | MovementStatusElements.HavePitch,
37 | MovementStatusElements.HaveFallData,
38 | MovementStatusElements.HaveFallDirection,
39 | MovementStatusElements.PositionX,
40 | MovementStatusElements.PositionY,
41 | MovementStatusElements.PositionZ,
42 | MovementStatusElements.PositionO,
43 | MovementStatusElements.Timestamp,
44 | MovementStatusElements.GuidByte2_2,
45 | MovementStatusElements.GuidByte7_2,
46 | MovementStatusElements.GuidByte5_2,
47 | MovementStatusElements.TransportTime,
48 | MovementStatusElements.TransportPositionX,
49 | MovementStatusElements.TransportPositionY,
50 | MovementStatusElements.TransportPositionZ,
51 | MovementStatusElements.TransportPositionO,
52 | MovementStatusElements.TransportSeat,
53 | MovementStatusElements.TransportGuidByte3_2,
54 | MovementStatusElements.TransportGuidByte1_2,
55 | MovementStatusElements.TransportTime3,
56 | MovementStatusElements.TransportGuidByte6_2,
57 | MovementStatusElements.TransportGuidByte0_2,
58 | MovementStatusElements.TransportGuidByte5_2,
59 | MovementStatusElements.TransportTime2,
60 | MovementStatusElements.TransportGuidByte7_2,
61 | MovementStatusElements.TransportGuidByte4_2,
62 | MovementStatusElements.TransportGuidByte2_2,
63 | MovementStatusElements.GuidByte0_2,
64 | MovementStatusElements.SplineElev,
65 | MovementStatusElements.Pitch,
66 | MovementStatusElements.FallVerticalSpeed,
67 | MovementStatusElements.FallTime,
68 | MovementStatusElements.FallHorizontalSpeed,
69 | MovementStatusElements.FallCosAngle,
70 | MovementStatusElements.FallSinAngle,
71 | MovementStatusElements.GuidByte1_2,
72 | MovementStatusElements.GuidByte3_2,
73 | MovementStatusElements.GuidByte4_2,
74 | MovementStatusElements.GuidByte6_2,
75 | };
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Movement/MSG_MOVE_STOP_TURN.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer.Parsers.Movement
4 | {
5 | [Parser(OpCodes.MSG_MOVE_STOP_TURN)]
6 | class MovementStopTurnParser : RegularMovementPacket
7 | {
8 | protected override MovementStatusElements[] Elements
9 | {
10 | get
11 | {
12 | return new MovementStatusElements[] {
13 | MovementStatusElements.GuidByte3,
14 | MovementStatusElements.GuidByte5,
15 | MovementStatusElements.GuidByte4,
16 | MovementStatusElements.GuidByte2,
17 | MovementStatusElements.Flags2,
18 | MovementStatusElements.GuidByte0,
19 | MovementStatusElements.GuidByte7,
20 | MovementStatusElements.GuidByte6,
21 | MovementStatusElements.GuidByte1,
22 | MovementStatusElements.HaveSpline,
23 | MovementStatusElements.Flags,
24 | MovementStatusElements.HaveFallData,
25 | MovementStatusElements.HaveFallDirection,
26 | MovementStatusElements.HaveTransportData,
27 | MovementStatusElements.TransportGuidByte6,
28 | MovementStatusElements.TransportGuidByte3,
29 | MovementStatusElements.TransportGuidByte7,
30 | MovementStatusElements.TransportGuidByte4,
31 | MovementStatusElements.TransportGuidByte1,
32 | MovementStatusElements.TransportGuidByte0,
33 | MovementStatusElements.TransportGuidByte2,
34 | MovementStatusElements.TransportGuidByte5,
35 | MovementStatusElements.TransportHaveTime3,
36 | MovementStatusElements.TransportHaveTime2,
37 | MovementStatusElements.HaveSplineElev,
38 | MovementStatusElements.HavePitch,
39 | MovementStatusElements.PositionO,
40 | MovementStatusElements.Timestamp,
41 | MovementStatusElements.PositionX,
42 | MovementStatusElements.PositionY,
43 | MovementStatusElements.PositionZ,
44 | MovementStatusElements.GuidByte4_2,
45 | MovementStatusElements.GuidByte2_2,
46 | MovementStatusElements.GuidByte5_2,
47 | MovementStatusElements.FallVerticalSpeed,
48 | MovementStatusElements.FallTime,
49 | MovementStatusElements.FallHorizontalSpeed,
50 | MovementStatusElements.FallCosAngle,
51 | MovementStatusElements.FallSinAngle,
52 | MovementStatusElements.GuidByte0_2,
53 | MovementStatusElements.GuidByte7_2,
54 | MovementStatusElements.GuidByte6_2,
55 | MovementStatusElements.TransportTime,
56 | MovementStatusElements.TransportPositionX,
57 | MovementStatusElements.TransportPositionY,
58 | MovementStatusElements.TransportPositionZ,
59 | MovementStatusElements.TransportPositionO,
60 | MovementStatusElements.TransportSeat,
61 | MovementStatusElements.TransportGuidByte3_2,
62 | MovementStatusElements.TransportGuidByte1_2,
63 | MovementStatusElements.TransportTime3,
64 | MovementStatusElements.TransportGuidByte6_2,
65 | MovementStatusElements.TransportGuidByte0_2,
66 | MovementStatusElements.TransportGuidByte5_2,
67 | MovementStatusElements.TransportTime2,
68 | MovementStatusElements.TransportGuidByte7_2,
69 | MovementStatusElements.TransportGuidByte4_2,
70 | MovementStatusElements.TransportGuidByte2_2,
71 | MovementStatusElements.SplineElev,
72 | MovementStatusElements.GuidByte1_2,
73 | MovementStatusElements.GuidByte3_2,
74 | MovementStatusElements.Pitch,
75 | };
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/SMSG_CHAR_ENUM.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | //[Parser(OpCodes.SMSG_CHAR_ENUM)]
4 | class SMSG_CHAR_ENUM : Parser
5 | {
6 | public override void Parse()
7 | {
8 | const int INVENTORY_SLOT_BAG_END = 23;
9 |
10 | For(ReadUInt8("Characters count: {0}"), i =>
11 | {
12 | ReadUInt64("Character {0} GUID: {1:X16}", i);
13 | ReadCString("Character {0} Name: {1}", i);
14 | ReadUInt8("Character {0} Race: {1}", i);
15 | ReadUInt8("Character {0} Class: {1}", i);
16 | ReadUInt8("Character {0} Gender: {1}", i);
17 | ReadUInt8("Character {0} Skin: {1}", i);
18 | ReadUInt8("Character {0} Face: {1}", i);
19 | ReadUInt8("Character {0} Hair Style: {1}", i);
20 | ReadUInt8("Character {0} Hair Color: {1}", i);
21 | ReadUInt8("Character {0} Facial Hair: {1}", i);
22 | ReadUInt8("Character {0} Level: {1}", i);
23 | ReadUInt32("Character {0} Zone: {1}", i);
24 | ReadUInt32("Character {0} Map: {1}", i);
25 | ReadSingle("Character {0} X: {1}", i);
26 | ReadSingle("Character {0} Y: {1}", i);
27 | ReadSingle("Character {0} Z: {1}", i);
28 | ReadUInt32("Character {0} Guild Id: {1}", i);
29 | ReadUInt32("Character {0} Flags: 0x{1:X8}", i);
30 | ReadUInt32("Character {0} Customize Flags: 0x{1:X8}", i);
31 | ReadUInt8("Character {0} First Login?: {1}", i);
32 | ReadUInt32("Character {0} Pet Display Id: {1}", i);
33 | ReadUInt32("Character {0} Pet Level: {1}", i);
34 | ReadUInt32("Character {0} Pet Family: {1}", i);
35 |
36 | For(INVENTORY_SLOT_BAG_END, j =>
37 | {
38 | ReadUInt32("Character {0} Item {1} Display Id: {2}", i, j);
39 | ReadUInt8("Character {0} Item {1} Inventory Type: {2}", i, j);
40 | ReadUInt32("Character {0} Item {1} Enchant Aura: {2}", i, j);
41 | });
42 | });
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/SMSG_INSPECT_RESULTS.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | //[Parser(OpCodes.SMSG_INSPECT_RESULTS)]
6 | class InspectTalentParser : Parser
7 | {
8 | public override void Parse()
9 | {
10 | AppendFormatLine("GUID: {0:X16}", Reader.ReadPackedGuid());
11 | AppendFormatLine("Free talent points: {0}", Reader.ReadUInt32());
12 | var talentGroupsCount = Reader.ReadByte();
13 | AppendFormatLine("Talent groups count: {0}", talentGroupsCount);
14 | AppendFormatLine("Talent group index: {0}", Reader.ReadByte());
15 |
16 | if (talentGroupsCount > 0)
17 | {
18 | var talentsCount = Reader.ReadByte();
19 | AppendFormatLine("Talents count {0}", talentsCount);
20 |
21 | for (var i = 0; i < talentsCount; ++i)
22 | {
23 | AppendFormatLine("Talent {0}: id {1}, rank {2}", i, Reader.ReadUInt32(), Reader.ReadByte());
24 | }
25 |
26 | var glyphsCount = Reader.ReadByte();
27 | AppendFormatLine("Glyphs count {0}", glyphsCount);
28 |
29 | for (var i = 0; i < glyphsCount; ++i)
30 | {
31 | AppendFormatLine("Glyph {0}: id {1}", i, Reader.ReadUInt16());
32 | }
33 | }
34 |
35 | var slotUsedMask = Reader.ReadUInt32();
36 |
37 | for (var i = 0; i < 19; ++i) // max equip slot
38 | {
39 | if (((1 << i) & slotUsedMask) != 0)
40 | {
41 | AppendFormatLine("Item {0}: entry {1}", i, Reader.ReadUInt32());
42 |
43 | var enchantmentMask = Reader.ReadUInt16();
44 |
45 | for (var j = 0; j < 12; ++j) // max enchantments
46 | {
47 | if (((1 << j) & enchantmentMask) != 0)
48 | {
49 | AppendFormatLine("Item {0}: enchant {1}, id {2}", i, j, Reader.ReadUInt16());
50 | }
51 | }
52 |
53 | AppendFormatLine("Item {0}: unk1 {1:X4}", i, Reader.ReadUInt16());
54 | AppendFormatLine("Item {0}: unk2 {1:X16}", i, Reader.ReadPackedGuid());
55 | AppendFormatLine("Item {0}: unk3 {1:X8}", i, Reader.ReadUInt32());
56 | }
57 | }
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/SMSG_LOAD_EQUIPMENT_SET.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | //[Parser(OpCodes.SMSG_LOAD_EQUIPMENT_SET)]
6 | class EquipmentSetListParser : Parser
7 | {
8 | public override void Parse()
9 | {
10 | var count = Reader.ReadUInt32();
11 | AppendFormatLine("Count: {0}", count);
12 |
13 | for (var i = 0; i < count; ++i)
14 | {
15 | var setguid = Reader.ReadPackedGuid();
16 | var setindex = Reader.ReadUInt32();
17 | var name = Reader.ReadCString();
18 | var iconname = Reader.ReadCString();
19 |
20 | AppendFormatLine("EquipmentSet {0}: guid {1}, index {2}, name {3}, iconname {4}", i, setguid, setindex, name, iconname);
21 |
22 | for (var j = 0; j < 19; ++j)
23 | AppendFormatLine("EquipmentSetItem {0}: guid {1}", j, Reader.ReadPackedGuid().ToString("X16"));
24 |
25 | AppendLine();
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/UnknownPacketParser.cs:
--------------------------------------------------------------------------------
1 | using WowTools.Core;
2 |
3 | namespace WoWPacketViewer
4 | {
5 | class UnknownPacketParser : Parser
6 | {
7 | public override void Parse() { }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Warden/WardenHelpers/CheckInfo.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | struct CheckInfo
4 | {
5 | public int m_length;
6 | public CheckType m_type;
7 |
8 | public CheckInfo(CheckType type, int len)
9 | {
10 | m_type = type;
11 | m_length = len; // for MEM_CHECK result
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Warden/WardenHelpers/CheckType.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | enum CheckType
4 | {
5 | MEM_CHECK = 0, // byte strIndex + uint Offset + byte Len (checks to ensure memory isn't modified?)
6 | PAGE_CHECK_A = 1, // uint Seed + byte[20] SHA1 + uint Addr + byte Len
7 | PAGE_CHECK_B = 2, // uint Seed + byte[20] SHA1 + uint Addr + byte Len
8 | MPQ_CHECK = 3, // byte strIndex (checks to ensure MPQ file isn't modified?)
9 | LUA_STR_CHECK = 4, // byte strIndex (checks to ensure global LUA string isn't used?)
10 | DRIVER_CHECK = 5, // uint Seed + byte[20] SHA1 + byte strIndex (checks to ensure driver isn't loaded?)
11 | TIMING_CHECK = 6, // empty (checks to ensure TickCount isn't detoured?)
12 | PROC_CHECK = 7, // uint Seed + byte[20] SHA1 + byte strIndex1 + byte strIndex2 + uint Offset + byte Len (checks to ensure proc isn't detoured?)
13 | MODULE_CHECK = 8 // uint Seed + byte[20] SHA1 (checks to ensure module isn't loaded)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Parsers/Warden/WardenHelpers/WardenData.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Security.Cryptography;
4 | using System.Text;
5 | using WowTools.Core;
6 |
7 | namespace WoWPacketViewer
8 | {
9 | static class WardenData
10 | {
11 | public static IList CheckInfos = new List();
12 | public static IDictionary CheckTypes = new Dictionary();
13 | private static FrmWardenDebug wardenDebugForm;
14 | public static bool Enabled { get; set; }
15 |
16 | public static void InitCheckTypes()
17 | {
18 | if (wardenDebugForm == null || wardenDebugForm.IsDisposed)
19 | return;
20 | CheckTypes = wardenDebugForm.CheckTypes;
21 | }
22 |
23 | public static void ShowForm(IEnumerable strings, byte[] checks, byte checkByte, long position)
24 | {
25 | if (!Enabled)
26 | return;
27 |
28 | if (wardenDebugForm == null || wardenDebugForm.IsDisposed)
29 | wardenDebugForm = new FrmWardenDebug();
30 |
31 | wardenDebugForm.XorByte = checks[checks.Length - 1];
32 |
33 | wardenDebugForm.Text = String.Format("Warden Debug: 0x{0:X2}", checkByte);
34 |
35 | wardenDebugForm.SetInfo(CreateTextInfo(strings, checks), position);
36 |
37 | wardenDebugForm.CheckTypes = CheckTypes;
38 |
39 | if (!wardenDebugForm.Visible)
40 | wardenDebugForm.Show();
41 | }
42 |
43 | private static string CreateTextInfo(IEnumerable strings, byte[] checks)
44 | {
45 | var sb = new StringBuilder();
46 | sb.Append(checks.HexLike(0, checks.Length));
47 | foreach (string s in strings)
48 | sb.AppendLine(s);
49 | return sb.ToString();
50 | }
51 |
52 | public static string ValidateCheckSum(uint checkSum, byte[] data)
53 | {
54 | var hash = new SHA1CryptoServiceProvider().ComputeHash(data);
55 | var res = new uint[5];
56 |
57 | for (var i = 0; i < 5; ++i)
58 | res[i] = BitConverter.ToUInt32(hash, 4 * i);
59 |
60 | var newCheckSum = res[0] ^ res[1] ^ res[2] ^ res[3] ^ res[4];
61 |
62 | if (checkSum != newCheckSum)
63 | return "is not valid!";
64 | else
65 | return "is valid!";
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace WoWPacketViewer
5 | {
6 | internal static class Program
7 | {
8 | [STAThread]
9 | private static void Main()
10 | {
11 | Application.EnableVisualStyles();
12 | Application.SetCompatibleTextRenderingDefault(false);
13 | Application.Run(new FrmMain());
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SkyFire/PacketViewer/976dfe3558c079a5118ace5745061370e4af247d/src/WoWPacketViewer/Properties/AssemblyInfo.cs
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.1
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace WoWPacketViewer.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WoWPacketViewer.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | MediumSeaGreen
7 |
8 |
9 | WindowText
10 |
11 |
12 | Window
13 |
14 |
15 | WindowText
16 |
17 |
18 | Window
19 |
20 |
21 | WindowText
22 |
23 |
24 | localhost
25 |
26 |
27 | 3306
28 |
29 |
30 | root
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | False
40 |
41 |
42 |
43 |
44 |
45 | True
46 |
47 |
48 |
49 |
50 |
51 | True
52 |
53 |
54 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Readers/IPacketReader.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using WowTools.Core;
3 |
4 | namespace WoWPacketViewer
5 | {
6 | public interface IPacketReader
7 | {
8 | uint Build { get; }
9 | IEnumerable ReadPackets(string file);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Readers/IzidorPackerReader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Text;
5 | using WowTools.Core;
6 |
7 | namespace WoWPacketViewer
8 | {
9 | public class IzidorPacketReader : IPacketReader
10 | {
11 | public uint Build { get; private set; }
12 |
13 | public IEnumerable ReadPackets(string file)
14 | {
15 | Build = 14333; // unknown. not stored
16 | var packets = new List();
17 | using (TextReader tr = new StreamReader(file))
18 | {
19 | while (tr.Peek() != -1)
20 | {
21 | string line = tr.ReadLine();
22 | string[] data = line.Split('<', '>', '"');
23 | uint unixtime = 0; // not stored
24 | uint tickcount = UInt32.Parse(data[2]);
25 | var direction = data[4] == "StoC" ? Direction.Server : Direction.Client;
26 | var opcode = UInt16.Parse(data[6]);
27 | string directdata = data[8];
28 | byte[] byteData = ParseHex(directdata);
29 | packets.Add(new Packet(direction, opcode, byteData, unixtime, tickcount));
30 | }
31 | }
32 | return packets;
33 | }
34 |
35 | public static byte[] ParseHex(string hex)
36 | {
37 | int offset = hex.StartsWith("0x") ? 2 : 0;
38 | if ((hex.Length % 2) != 0)
39 | {
40 | throw new ArgumentException("Invalid length: " + hex.Length);
41 | }
42 | byte[] ret = new byte[(hex.Length - offset) / 2];
43 |
44 | for (int i = 0; i < ret.Length; i++)
45 | {
46 | ret[i] = (byte)((ParseNybble(hex[offset]) << 4)
47 | | ParseNybble(hex[offset + 1]));
48 | offset += 2;
49 | }
50 | return ret;
51 | }
52 |
53 | static int ParseNybble(char c)
54 | {
55 | if (c >= '0' && c <= '9')
56 | {
57 | return c - '0';
58 | }
59 | if (c >= 'A' && c <= 'F')
60 | {
61 | return c - 'A' + 10;
62 | }
63 | if (c >= 'a' && c <= 'f')
64 | {
65 | return c - 'a' + 10;
66 | }
67 | throw new ArgumentException("Invalid hex digit: " + c);
68 | }
69 |
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Readers/PacketReaderFactory.cs:
--------------------------------------------------------------------------------
1 | namespace WoWPacketViewer
2 | {
3 | public static class PacketReaderFactory
4 | {
5 | public static IPacketReader Create(string extension)
6 | {
7 | switch (extension)
8 | {
9 | case ".pkt":
10 | case ".bin":
11 | return new WowCorePacketReader();
12 | case ".sqlite":
13 | return new SqLitePacketReader();
14 | case ".xml":
15 | return new SniffitztPacketReader();
16 | case ".izi":
17 | case "": // Noname sniffer outputs files in Izi format with no extension
18 | return new IzidorPacketReader();
19 | default:
20 | return null;
21 | }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Readers/SniffitztPacketReader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Xml.Linq;
5 | using System.Xml.XPath;
6 | using WowTools.Core;
7 |
8 | namespace WoWPacketViewer
9 | {
10 | public class SniffitztPacketReader : IPacketReader
11 | {
12 | public uint Build
13 | {
14 | get { return 0; }
15 | }
16 |
17 | public IEnumerable ReadPackets(string file)
18 | {
19 | var packets = new List();
20 | var uri = new Uri(Path.GetFullPath(file)).ToString();
21 | var doc = XDocument.Load(uri);
22 | foreach (var packet in doc.XPathSelectElements("*/packet"))
23 | {
24 | var direction = (string)packet.Attribute("direction") == "S2C" ? Direction.Server : Direction.Client;
25 | var opcode = (uint)packet.Attribute("opcode");
26 | packets.Add(new Packet(direction, opcode, packet.Value.ToByteArray(), 0, 0));
27 | }
28 | return packets;
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/Readers/SqLitePacketReader.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Data.SQLite;
3 | using WowTools.Core;
4 |
5 | namespace WoWPacketViewer
6 | {
7 | public class SqLitePacketReader : IPacketReader
8 | {
9 | public uint Build
10 | {
11 | get { return 0; }
12 | }
13 |
14 | public IEnumerable ReadPackets(string file)
15 | {
16 | using (var connection = new SQLiteConnection("Data Source=" + file))
17 | {
18 | var packets = new List();
19 |
20 | connection.Open();
21 |
22 | SQLiteCommand command = connection.CreateCommand();
23 | command.CommandText = "SELECT COUNT(*) FROM packets;";
24 | command.Prepare();
25 |
26 | var rows = (long)command.ExecuteScalar();
27 |
28 | command.CommandText = "SELECT direction, opcode, data FROM packets ORDER BY id;";
29 | command.Prepare();
30 |
31 | SQLiteDataReader reader = command.ExecuteReader();
32 |
33 | while (reader.Read())
34 | {
35 | //worker.ReportProgress((int)((float)m_packets.Count / (float)rows * 100.0f));
36 | try
37 | {
38 | var direction = (Direction)reader.GetByte(0);
39 | var opcode = (uint)reader.GetInt16(1);
40 | var data = (byte[])reader.GetValue(2);
41 |
42 | packets.Add(new Packet(direction, opcode, data, 0, 0));
43 | }
44 | catch
45 | {
46 | }
47 | }
48 | return packets;
49 | }
50 | }
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/src/WoWPacketViewer/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | MediumSeaGreen
12 |
13 |
14 | WindowText
15 |
16 |
17 | Window
18 |
19 |
20 | WindowText
21 |
22 |
23 | Window
24 |
25 |
26 | WindowText
27 |
28 |
29 | localhost
30 |
31 |
32 | 3306
33 |
34 |
35 | root
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 | False
45 |
46 |
47 | True
48 |
49 |
50 |
51 |
52 |
53 | True
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------