diff --git a/WowPacketParser/Enums/Version/V5_4_7_17898/Opcodes.cs b/WowPacketParser/Enums/Version/V5_4_7_17898/Opcodes.cs index a89283682e..5e8bc3ce40 100644 --- a/WowPacketParser/Enums/Version/V5_4_7_17898/Opcodes.cs +++ b/WowPacketParser/Enums/Version/V5_4_7_17898/Opcodes.cs @@ -123,6 +123,7 @@ public static BiDictionary Opcodes(Direction direction) {Opcode.CMSG_LOGOUT_CANCEL, 0x11D4}, {Opcode.CMSG_LOGOUT_REQUEST, 0x0476}, {Opcode.CMSG_LOG_DISCONNECT, 0x1A13}, + {Opcode.CMSG_LOG_STREAMING_ERROR, 0x1A12}, {Opcode.CMSG_LOOT_UNIT, 0x1E52}, {Opcode.CMSG_SET_LOOT_METHOD, 0x1C10}, {Opcode.CMSG_LOOT_MONEY, 0x15A0}, @@ -406,6 +407,7 @@ public static BiDictionary Opcodes(Direction direction) {Opcode.SMSG_PLAY_SPELL_VISUAL_KIT, 0x0500}, {Opcode.SMSG_PONG, 0x15B1}, {Opcode.SMSG_POWER_UPDATE, 0x1441}, + {Opcode.SMSG_PVP_CREDIT, 0x13BB}, {Opcode.SMSG_PVP_LOG_DATA, 0x076A}, {Opcode.SMSG_PVP_SEASON, 0x00E1}, {Opcode.SMSG_QUERY_TIME_RESPONSE, 0x0E2A}, diff --git a/WowPacketParserModule.V5_4_2_17658/Parsers/MovementHandler.cs b/WowPacketParserModule.V5_4_2_17658/Parsers/MovementHandler.cs index e5d386d469..bff16e7155 100644 --- a/WowPacketParserModule.V5_4_2_17658/Parsers/MovementHandler.cs +++ b/WowPacketParserModule.V5_4_2_17658/Parsers/MovementHandler.cs @@ -187,7 +187,7 @@ public static void HandleMonsterMove(Packet packet) var splineCount = (int)packet.ReadBits(20); var bit98 = packet.ReadBit(); - var splineType = (int)packet.ReadBits(3); + var splineType = (int)packet.ReadBits("Facing", 3); if (splineType == 3) packet.StartBitStream(factingTargetGUID, 0, 7, 3, 4, 5, 6, 1, 2); diff --git a/WowPacketParserModule.V5_4_7_17898/Parsers/CombatHandler.cs b/WowPacketParserModule.V5_4_7_17898/Parsers/CombatHandler.cs index 6091bf68eb..19247e9dbd 100644 --- a/WowPacketParserModule.V5_4_7_17898/Parsers/CombatHandler.cs +++ b/WowPacketParserModule.V5_4_7_17898/Parsers/CombatHandler.cs @@ -263,5 +263,25 @@ public static void HandleCanelCombat(Packet packet) { packet.ReadBits("bits10", 2); } + + [Parser(Opcode.SMSG_PVP_CREDIT)] + public static void HandlePvPCredit(Packet packet) + { + var guid = new byte[8]; + packet.StartBitStream(guid, 7, 0, 1, 3, 5, 4, 2, 6); + + packet.ReadXORByte(guid, 1); + packet.ReadXORByte(guid, 0); + packet.ReadInt32("Rank"); + packet.ReadXORByte(guid, 3); + packet.ReadInt32("Honor"); + packet.ReadXORByte(guid, 5); + packet.ReadXORByte(guid, 7); + packet.ReadXORByte(guid, 6); + packet.ReadXORByte(guid, 4); + packet.ReadXORByte(guid, 2); + + packet.WriteGuid("Target", guid); + } } } diff --git a/WowPacketParserModule.V5_4_7_17898/Parsers/MiscellaneousHandler.cs b/WowPacketParserModule.V5_4_7_17898/Parsers/MiscellaneousHandler.cs index 7fe7e53cbe..6124f5f454 100644 --- a/WowPacketParserModule.V5_4_7_17898/Parsers/MiscellaneousHandler.cs +++ b/WowPacketParserModule.V5_4_7_17898/Parsers/MiscellaneousHandler.cs @@ -369,113 +369,118 @@ public static void Handletest(Packet packet) } [Parser(Opcode.SMSG_VIGNETTE_UPDATE)] - public static void HandleSetVignette(Packet packet) + public static void HandleVignetteUpdate(Packet packet) { + packet.ReadBit("ForceUpdate"); + var updatedCount = packet.ReadBits(24); - packet.ReadBit("bit20"); - var bits10 = packet.ReadBits(24); + var updatedGuids = new byte[updatedCount][]; - var guid1 = new byte[bits10][]; - - for (var i = 0; i < bits10; ++i) + for (var i = 0; i < updatedCount; ++i) { - guid1[i] = new byte[8]; - packet.StartBitStream(guid1[i], 0, 4, 3, 6, 5, 2, 7, 1); + updatedGuids[i] = new byte[8]; + packet.StartBitStream(updatedGuids[i], 0, 4, 3, 6, 5, 2, 7, 1); } - var bits34 = packet.ReadBits(20); + var addedDataCount = packet.ReadBits(20); - var guid2 = new byte[bits34][]; + var addedDatas = new byte[addedDataCount][]; - for (var i = 0; i < bits34; ++i) + for (var i = 0; i < addedDataCount; ++i) { - guid2[i] = new byte[8]; - packet.StartBitStream(guid2[i], 6, 3, 7, 1, 5, 4, 0, 2); + addedDatas[i] = new byte[8]; + packet.StartBitStream(addedDatas[i], 6, 3, 7, 1, 5, 4, 0, 2); } - var bits44 = packet.ReadBits(24); + var removedCount = packet.ReadBits(24); - var guid3 = new byte[bits44][]; + var removedGuids = new byte[removedCount][]; - for (var i = 0; i < bits44; ++i) + for (var i = 0; i < removedCount; ++i) { - guid3[i] = new byte[8]; - packet.StartBitStream(guid3[i], 0, 6, 7, 1, 4, 3, 2, 5); + removedGuids[i] = new byte[8]; + packet.StartBitStream(removedGuids[i], 0, 6, 7, 1, 4, 3, 2, 5); } - var bits24 = packet.ReadBits(24); + var addedIDsCount = packet.ReadBits(24); - var guid4 = new byte[bits24][]; + var addedIDs = new byte[addedIDsCount][]; - for (var i = 0; i < bits24; ++i) + for (var i = 0; i < addedIDsCount; ++i) { - guid4[i] = new byte[8]; - packet.StartBitStream(guid4[i], 4, 5, 2, 3, 1, 6, 7, 0); + addedIDs[i] = new byte[8]; + packet.StartBitStream(addedIDs[i], 4, 5, 2, 3, 1, 6, 7, 0); } - var bits54 = packet.ReadBits(20); + var updatedDataCount = packet.ReadBits(20); - var guid5 = new byte[bits54][]; + var updatedDataIDs = new byte[updatedDataCount][]; - for (var i = 0; i < bits54; ++i) + for (var i = 0; i < updatedDataCount; ++i) { - guid5[i] = new byte[8]; - packet.StartBitStream(guid5[i], 6, 1, 7, 3, 5, 2, 0, 4); + updatedDataIDs[i] = new byte[8]; + packet.StartBitStream(updatedDataIDs[i], 6, 1, 7, 3, 5, 2, 0, 4); } - for (var i = 0; i < bits54; ++i) + for (var i = 0; i < updatedDataCount; ++i) { - packet.ReadXORByte(guid5[i], 5); - packet.ReadXORByte(guid5[i], 0); - packet.ReadXORByte(guid5[i], 7); - packet.ReadSingle("1"); - packet.ReadSingle("2"); - packet.ReadXORByte(guid5[i], 1); - packet.ReadXORByte(guid5[i], 3); - packet.ReadXORByte(guid5[i], 4); - packet.ReadInt32("Vignette Id"); - packet.ReadXORByte(guid5[i], 6); - packet.ReadXORByte(guid5[i], 7); - packet.ReadSingle("3"); - - packet.WriteGuid("Guid5", guid5[i]); + packet.ReadXORByte(updatedDataIDs[i], 5); + packet.ReadXORByte(updatedDataIDs[i], 0); + packet.ReadXORByte(updatedDataIDs[i], 7); + packet.ReadSingle("PositionX"); + packet.ReadSingle("PositionY"); + packet.ReadXORByte(updatedDataIDs[i], 1); + packet.ReadXORByte(updatedDataIDs[i], 3); + packet.ReadXORByte(updatedDataIDs[i], 4); + packet.ReadInt32("Vignette ID"); + packet.ReadXORByte(updatedDataIDs[i], 6); + packet.ReadXORByte(updatedDataIDs[i], 2); + packet.ReadSingle("PositionZ"); + + packet.WriteGuid("UpdatedDataObjGuid", updatedDataIDs[i], i); } - for (var i = 0; i < bits34; ++i) + for (var i = 0; i < addedDataCount; ++i) { - packet.ReadXORByte(guid2[i], 0); - packet.ReadXORByte(guid2[i], 5); - packet.ReadXORByte(guid2[i], 6); - packet.ReadXORByte(guid2[i], 2); - packet.ReadInt32("Vignette Id"); - packet.ReadXORByte(guid2[i], 4); - packet.ReadXORByte(guid2[i], 7); - packet.ReadSingle("1"); - packet.ReadSingle("2"); - packet.ReadXORByte(guid2[i], 3); - packet.ReadSingle("3"); - packet.ReadXORByte(guid2[i], 1); - - packet.WriteGuid("Guid2", guid2[i]); + packet.ReadXORByte(addedDatas[i], 0); + packet.ReadXORByte(addedDatas[i], 5); + packet.ReadXORByte(addedDatas[i], 6); + packet.ReadXORByte(addedDatas[i], 2); + int v =packet.ReadInt32("Vignette Id"); + packet.ReadXORByte(addedDatas[i], 4); + packet.ReadXORByte(addedDatas[i], 7); + packet.ReadSingle("PositionZ"); + packet.ReadSingle("PositionY"); + packet.ReadXORByte(addedDatas[i], 3); + packet.ReadSingle("PositionX"); + packet.ReadXORByte(addedDatas[i], 1); + + packet.WriteGuid("AddedDataObjGuid", addedDatas[i], i); } - for (var i = 0; i < bits24; ++i) + for (var i = 0; i < removedCount; ++i) { - packet.ParseBitStream(guid4[i], 5, 2, 1, 0, 7, 4, 3, 6); - packet.WriteGuid("Guid4", guid4[i]); + packet.ParseBitStream(removedGuids[i], 5, 2, 1, 0, 7, 4, 3, 6); + packet.WriteGuid("RemovedGuid", removedGuids[i], i); } - for (var i = 0; i < bits10; ++i) + for (var i = 0; i < addedIDsCount; ++i) { - packet.ParseBitStream(guid1[i], 5, 1, 2, 0, 6, 7, 4, 3); - packet.WriteGuid("Guid1", guid1[i]); + packet.ParseBitStream(addedIDs[i], 5, 1, 2, 0, 6, 7, 4, 3); + packet.WriteGuid("AddedGuid", addedIDs[i], i); } - for (var i = 0; i < bits44; ++i) + for (var i = 0; i < updatedCount; ++i) { - packet.ParseBitStream(guid3[i], 3, 6, 4, 2, 1, 7, 5, 0); - packet.WriteGuid("Guid3", guid3[i]); + packet.ParseBitStream(updatedGuids[i], 3, 6, 4, 2, 1, 7, 5, 0); + packet.WriteGuid("UpdatedGuid", updatedGuids[i], i); } } + + [Parser(Opcode.CMSG_LOG_STREAMING_ERROR)] + public static void HandleLogStreamingError(Packet packet) + { + packet.ReadWoWString("Error", packet.ReadBits(9)); + } } } diff --git a/WowPacketParserModule.V5_4_7_17898/Parsers/MovementHandler.cs b/WowPacketParserModule.V5_4_7_17898/Parsers/MovementHandler.cs index dbe8fc01da..0f924ac498 100644 --- a/WowPacketParserModule.V5_4_7_17898/Parsers/MovementHandler.cs +++ b/WowPacketParserModule.V5_4_7_17898/Parsers/MovementHandler.cs @@ -95,7 +95,7 @@ public static void HandleMonsterMove(Packet packet) var dest = new Vector3(); var ownerGUID = new byte[8]; - var guid2 = new byte[8]; + var transportGuid = new byte[8]; var factingTargetGUID = new byte[8]; dest.Y = packet.ReadSingle(); @@ -110,12 +110,12 @@ public static void HandleMonsterMove(Packet packet) packet.AddValue("Destination", dest); ownerGUID[3] = packet.ReadBit(); - var bit40 = !packet.ReadBit(); + bool hasFlags = !packet.ReadBit(); ownerGUID[6] = packet.ReadBit(); - var bit45 = !packet.ReadBit(); - var bit6D = !packet.ReadBit(); - var splineType = packet.ReadBits(3); - var bit78 = !packet.ReadBit(); + bool hasAnimTier = !packet.ReadBit(); + var hasVehicleExitVoluntary = !packet.ReadBit(); + var splineType = packet.ReadBits("Face", 3); + var hasVehicleSeat = !packet.ReadBit(); ownerGUID[2] = packet.ReadBit(); ownerGUID[7] = packet.ReadBit(); ownerGUID[5] = packet.ReadBit(); @@ -123,36 +123,39 @@ public static void HandleMonsterMove(Packet packet) if (splineType == 3) packet.StartBitStream(factingTargetGUID, 6, 7, 0, 5, 2, 3, 4, 1); - var bit58 = !packet.ReadBit(); + bool hasSpecialTime = !packet.ReadBit(); ownerGUID[4] = packet.ReadBit(); var waypointCount = packet.ReadBits(22); - var bit4C = !packet.ReadBit(); + bool hasElapsed = !packet.ReadBit(); packet.ReadBit(); // fake bit ownerGUID[0] = packet.ReadBit(); - guid2[3] = packet.ReadBit(); - guid2[6] = packet.ReadBit(); - guid2[5] = packet.ReadBit(); - guid2[0] = packet.ReadBit(); - guid2[1] = packet.ReadBit(); - guid2[2] = packet.ReadBit(); - guid2[4] = packet.ReadBit(); - guid2[7] = packet.ReadBit(); - var bit6C = !packet.ReadBit(); - var bit54 = !packet.ReadBit(); + + transportGuid[3] = packet.ReadBit(); + transportGuid[6] = packet.ReadBit(); + transportGuid[5] = packet.ReadBit(); + transportGuid[0] = packet.ReadBit(); + transportGuid[1] = packet.ReadBit(); + transportGuid[2] = packet.ReadBit(); + transportGuid[4] = packet.ReadBit(); + transportGuid[7] = packet.ReadBit(); + + bool hasMode = !packet.ReadBit(); + var hasJumpGravity = !packet.ReadBit(); var bit48 = !packet.ReadBit(); var splineCount = (int)packet.ReadBits(20); ownerGUID[1] = packet.ReadBit(); - var bitB0 = packet.ReadBit(); + var hasSplineFilter = packet.ReadBit(); var bits8C = 0u; - if (bitB0) + if (hasSplineFilter) { bits8C = packet.ReadBits(22); packet.ReadBits("SplineFilterFlags", 2); } - var bit38 = packet.ReadBit(); - var bit50 = !packet.ReadBit(); + packet.ReadBit("CrzTeleport"); + var hasMoveTime = !packet.ReadBit(); + if (splineType == 3) { packet.ParseBitStream(factingTargetGUID, 5, 3, 6, 1, 4, 2, 0, 7); @@ -162,10 +165,10 @@ public static void HandleMonsterMove(Packet packet) packet.ReadXORByte(ownerGUID, 3); - packet.ParseBitStream(guid2, 7, 3, 2, 0, 6, 4, 5, 1); + packet.ParseBitStream(transportGuid, 7, 3, 2, 0, 6, 4, 5, 1); - if (bitB0) + if (hasSplineFilter) { packet.ReadSingle("SplineFilterBaseSpeed"); @@ -180,21 +183,24 @@ public static void HandleMonsterMove(Packet packet) packet.ReadInt16("FilterAddedToStart"); } - if (bit6D) + if (hasVehicleExitVoluntary) packet.ReadByte("VehicleExitVoluntary"); if (splineType == 4) monsterMove.LookOrientation = packet.ReadSingle("Facing Angle"); - if (bit40) + if (hasFlags) packet.ReadInt32("Flags"); packet.ReadXORByte(ownerGUID, 7); - if (bit78) + + if (hasVehicleSeat) packet.ReadByte("VehicleSeat"); - if (bit4C) + + if (hasElapsed) packet.ReadInt32("Elapsed"); - if (bit45) + + if (hasAnimTier) packet.ReadByte("AnimTier"); var waypoints = new Vector3[waypointCount]; @@ -234,7 +240,7 @@ public static void HandleMonsterMove(Packet packet) packet.ReadXORByte(ownerGUID, 6); - if (bit50) + if (hasMoveTime) packet.ReadInt32("MoveTime"); if (splineType == 2) @@ -242,15 +248,15 @@ public static void HandleMonsterMove(Packet packet) monsterMove.LookPosition = packet.ReadVector3("Facing Spot"); } - if (bit54) + if (hasJumpGravity) packet.ReadSingle("JumpGravity"); - if (bit6C) + if (hasMode) packet.ReadByte("Mode"); packet.ReadXORByte(ownerGUID, 0); - if (bit58) + if (hasSpecialTime) packet.ReadInt32("SpecialTime"); packet.ReadXORByte(ownerGUID, 4); @@ -273,7 +279,7 @@ public static void HandleMonsterMove(Packet packet) } monsterMove.Mover = packet.WriteGuid("Owner GUID", ownerGUID); - packet.WriteGuid("Transport GUID", guid2); + packet.WriteGuid("Transport GUID", transportGuid); monsterMove.Position = pos; } diff --git a/WowPacketParserModule.V5_4_7_17898/Parsers/QueryHandler.cs b/WowPacketParserModule.V5_4_7_17898/Parsers/QueryHandler.cs index fe84caffb9..9e8804e30e 100644 --- a/WowPacketParserModule.V5_4_7_17898/Parsers/QueryHandler.cs +++ b/WowPacketParserModule.V5_4_7_17898/Parsers/QueryHandler.cs @@ -23,25 +23,26 @@ public static void HandleCreatureQuery(Packet packet) public static void HandleCreatureQueryResponse(Packet packet) { PacketQueryCreatureResponse response = packet.Holder.QueryCreatureResponse = new PacketQueryCreatureResponse(); - var entry = packet.ReadEntry("Entry"); + var entry = packet.ReadEntry("CreatureID"); CreatureTemplate creature = new CreatureTemplate { Entry = (uint)entry.Key }; + response.Entry = (uint) entry.Key; - Bit hasData = packet.ReadBit(); - response.HasData = hasData; - if (!hasData) + bool allow = packet.ReadBit(); + response.HasData = allow; + if (!allow) return; // nothing to do creature.ModelIDs = new uint?[4]; creature.KillCredits = new uint?[2]; - creature.RacialLeader = packet.ReadBit("Racial Leader"); + creature.RacialLeader = packet.ReadBit("Leader"); - uint bits2C = packet.ReadBits(6); + uint cursorNamesSize = packet.ReadBits(6); var stringLens = new int[4][]; for (int i = 0; i < 4; i++) @@ -52,25 +53,26 @@ public static void HandleCreatureQueryResponse(Packet packet) } uint qItemCount = packet.ReadBits(22); - uint bits24 = packet.ReadBits(11); - uint bits1C = packet.ReadBits(11); + uint titleSize = packet.ReadBits(11); + uint titleAltSize = packet.ReadBits(11); - creature.ManaModifier = packet.ReadSingle("Modifier 2"); + creature.ManaModifier = packet.ReadSingle("EnergyMulti"); var name = new string[4]; - var femaleName = new string[4]; + var nameAlt = new string[4]; for (int i = 0; i < 4; ++i) { if (stringLens[i][0] > 1) name[i] = packet.ReadCString("Name", i); + if (stringLens[i][1] > 1) - femaleName[i] = packet.ReadCString("Female Name", i); + nameAlt[i] = packet.ReadCString("NameAlt", i); } creature.Name = name[0]; - creature.FemaleName = femaleName[0]; + creature.FemaleName = nameAlt[0]; - creature.HealthModifier = packet.ReadSingle("Modifier 1"); + creature.HealthModifier = packet.ReadSingle("HpMulti"); creature.KillCredits[1] = packet.ReadUInt32(); creature.ModelIDs[2] = packet.ReadUInt32(); @@ -80,29 +82,29 @@ public static void HandleCreatureQueryResponse(Packet packet) for (int i = 0; i < qItemCount; ++i) /*creature.QuestItems[i] = (uint)*/response.QuestItems.Add((uint)packet.ReadInt32("Quest Item", i)); - creature.Type = packet.ReadInt32E("Type"); + creature.Type = packet.ReadInt32E("CreatureType"); - if (bits2C > 1) - creature.IconName = packet.ReadCString("Icon Name"); + if (cursorNamesSize > 1) + creature.IconName = packet.ReadCString("CursorName"); creature.TypeFlags = packet.ReadUInt32E("Type Flags"); creature.TypeFlags2 = packet.ReadUInt32("Creature Type Flags 2"); // Missing enum creature.KillCredits[0] = packet.ReadUInt32(); - creature.Family = packet.ReadInt32E("Family"); - creature.MovementID = packet.ReadUInt32("Movement ID"); - creature.RequiredExpansion = packet.ReadUInt32E("Expansion"); + creature.Family = packet.ReadInt32E("CreatureFamily"); + creature.MovementID = packet.ReadUInt32("CreatureMovementInfoID"); + creature.RequiredExpansion = packet.ReadUInt32E("RequiredExpansion"); creature.ModelIDs[0] = packet.ReadUInt32(); creature.ModelIDs[1] = packet.ReadUInt32(); - if (bits1C > 1) + if (titleAltSize > 1) creature.TitleAlt = packet.ReadCString("TitleAlt"); - creature.Rank = packet.ReadInt32E("Rank"); + creature.Rank = packet.ReadInt32E("Classification"); - if (bits24 > 1) - creature.SubName = packet.ReadCString("Sub Name"); + if (titleSize > 1) + creature.SubName = packet.ReadCString("Title"); creature.ModelIDs[3] = packet.ReadUInt32(); diff --git a/WowPacketParserModule.V5_4_8_18291/Parsers/MovementHandler.cs b/WowPacketParserModule.V5_4_8_18291/Parsers/MovementHandler.cs index f5457ad15a..f016ebb0e8 100644 --- a/WowPacketParserModule.V5_4_8_18291/Parsers/MovementHandler.cs +++ b/WowPacketParserModule.V5_4_8_18291/Parsers/MovementHandler.cs @@ -585,11 +585,11 @@ public static void HandleMonsterMove(Packet packet) pos.X = packet.ReadSingle(); // +4 packet.ReadInt32("Move Ticks"); // +10 pos.Y = packet.ReadSingle(); // +5 - packet.ReadSingle("Float12"); // +12 - packet.ReadSingle("Float13"); // +13 - packet.ReadSingle("Float11"); // +11 + packet.ReadSingle("TransportY"); // +12 + packet.ReadSingle("TransportZ"); // +13 + packet.ReadSingle("TransportX"); // +11 - var bit21 = !packet.ReadBit(); // +21 + var parabolic = !packet.ReadBit(); // +21 ownerGUID[0] = packet.ReadBit(); // +32 - 0 var splineType = (int)packet.ReadBits(3); // +68 @@ -602,13 +602,13 @@ public static void HandleMonsterMove(Packet packet) var splineCount = (int)packet.ReadBits(20); // +92 - var bit16 = !packet.ReadBit(); // +16 + var splineFlags = !packet.ReadBit(); // +16 ownerGUID[3] = packet.ReadBit(); // +35 - 3 var bit108 = !packet.ReadBit(); // +108 var bit22 = !packet.ReadBit(); // +22 var bit109 = !packet.ReadBit(); // +109 - var bit20 = !packet.ReadBit(); // +20 + var hasDuration = !packet.ReadBit(); // +20 ownerGUID[7] = packet.ReadBit(); // +39 - 7 ownerGUID[4] = packet.ReadBit(); // +36 - 4 var bit18 = !packet.ReadBit(); // +18 @@ -677,8 +677,8 @@ public static void HandleMonsterMove(Packet packet) packet.ReadXORByte(ownerGUID, 5); // +37 - 5 - if (bit21) - packet.ReadSingle("Float21"); // +21 + if (parabolic) + packet.ReadSingle("vertical_acceleration"); // +21 if (bit176) { @@ -702,13 +702,12 @@ public static void HandleMonsterMove(Packet packet) packet.ReadXORByte(ownerGUID, 3); // +35 - 3 - if (bit16) + if (splineFlags) monsterMove.Flags = packet.ReadInt32E("Spline Flags").ToUniversal(); // +16 if (bit69) packet.ReadByte("Byte69"); // +69 - packet.ReadXORByte(ownerGUID, 6); // +38 - 6 if (bit109) @@ -735,7 +734,7 @@ public static void HandleMonsterMove(Packet packet) packet.ReadXORByte(ownerGUID, 4); // +36 - 4 - if (bit20) + if (hasDuration) monsterMove.MoveTime = (uint)packet.ReadInt32("Move Time"); // +20 // Calculate mid pos diff --git a/WowPacketParserModule.V5_4_8_18291/Parsers/NpcHandler.cs b/WowPacketParserModule.V5_4_8_18291/Parsers/NpcHandler.cs index b08f9cc685..5a89260eb6 100644 --- a/WowPacketParserModule.V5_4_8_18291/Parsers/NpcHandler.cs +++ b/WowPacketParserModule.V5_4_8_18291/Parsers/NpcHandler.cs @@ -128,16 +128,14 @@ public static void HandleNpcGossip(Packet packet) gossipMenuOption.BoxMoney = packet.ReadUInt32("Required money", i); var boxText = packet.ReadWoWString("Box Text", boxTextLen[i], i); gossipMenuOption.OptionID = packet.ReadUInt32("OptionID", i); - gossipMenuOption.BoxCoded = packet.ReadBool("Box", i); + gossipMenuOption.BoxCoded = Convert.ToBoolean(packet.ReadByte("Box", i)); gossipMenuOption.OptionText = packet.ReadWoWString("Text", optionTextLen[i], i); gossipMenuOption.OptionNpc = packet.ReadByteE("OptionNPC", i); - - if (!string.IsNullOrEmpty(boxText)) - gossipMenuOption.BoxText = boxText; - + gossipMenuOption.BoxText = !string.IsNullOrEmpty(boxText) ? boxText : string.Empty; + gossipOptions.Add(gossipMenuOption); - packetGossip.Options.Add(new GossipMessageOption() + packetGossip.Options.Add(new GossipMessageOption { OptionIndex = gossipMenuOption.OptionID.Value, OptionNpc = (int)gossipMenuOption.OptionNpc, diff --git a/WowPacketParserModule.V5_4_8_18291/Parsers/UpdateHandler.cs b/WowPacketParserModule.V5_4_8_18291/Parsers/UpdateHandler.cs index cfd44449cf..ccb66b53b1 100644 --- a/WowPacketParserModule.V5_4_8_18291/Parsers/UpdateHandler.cs +++ b/WowPacketParserModule.V5_4_8_18291/Parsers/UpdateHandler.cs @@ -124,23 +124,23 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, WowGuid guid, var guid7 = new byte[8]; var bit160 = false; - var bit528 = false; - var bit600 = false; - var bit544 = false; + var unk = false; + var hasAreaTriggerBox = false; + var hasMorphCurveID = false; var bit526 = false; - var bit552 = false; + var hasFacingCurveID = false; var bit524 = false; - var bit572 = false; + var hasAreaTriggerSphere = false; var bit525 = false; - var bit664 = false; + var hasAreaTriggerSpline = false; var bit527 = false; - var bit536 = false; - var bit644 = false; - var bit560 = false; + var hasScaleCurveID = false; + var hasAreaTriggerPolygon = false; + var hasMoveCurveID = false; - var hasAnimKit1 = false; - var hasAnimKit2 = false; - var hasAnimKit3 = false; + var hasAIAnimKitId = false; + var hasMovementAnimKitId = false; + var hasMeleeAnimKitId = false; var hasFullSpline = false; var hasSplineStartTime = false; var hasSplineVerticalAcceleration = false; @@ -163,31 +163,31 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, WowGuid guid, var splineCount = 0u; var bits138 = 0u; var bits98 = 0u; - var bits25C = 0u; - var bits26C = 0u; - var bits288 = 0u; + var polygonVerticesCount = 0u; + var polygonVerticesTargetCount = 0u; + var areaTriggerSplineCount = 0u; var bits418 = 0u; var bits2AA = 0u; var splineType = SplineType.Stop; - var bit676 = packet.ReadBit("bit676", index); - var hasAnimKits = packet.ReadBit("Has Anim Kits", index); // 498 + var hasWorldEffect = packet.ReadBit("Has World Effect", index); + var animKitCreate = packet.ReadBit("Has Anim Kits", index); // 498 var isLiving = packet.ReadBit("Is Living", index); // 368 - var bit810 = packet.ReadBit("bit810", index); - packet.ReadBit(); //fake bit + var hasSceneScript = packet.ReadBit("Has Scene Script", index); + var playHoverAnim = packet.ReadBit("Has Hover Anim"); var transportFrames = packet.ReadBits("Transport Frames Count", 22, index); // 1068 var hasVehicleData = packet.ReadBit("Has Vehicle Data", index); // 488 var bit1044 = packet.ReadBit("bit1044", index); - packet.ReadBit(); //fake bit - var bit476 = packet.ReadBit("bit476", index); + var enablePortals = packet.ReadBit("Enable Portals"); + var hasServerTime = packet.ReadBit("Has Server Time", index); var hasGameObjectRotation = packet.ReadBit("Has GameObject Rotation", index); // 512 - packet.ReadBit(); //fake bit - var bit680 = packet.ReadBit("bit680", index); + packet.ReadBit("Is Suppressing Greetings"); + var thisIsYou = packet.ReadBit("This Is You", index); var hasAttackingTarget = packet.ReadBit("Has Attacking Target", index); // 464 - var hasSceneObjectData = packet.ReadBit("Has Scene Object Data", index); // 1032 + var hasSceneObjectData = packet.ReadBit("Is Scene Object", index); // 1032 var bit1064 = packet.ReadBit("bit1064", index); - packet.ReadBit(); //fake bit - var bit668 = packet.ReadBit("bit668", index); + packet.ReadBit("No Birth Anim"); + var hasAreaTrigger = packet.ReadBit("Has AreaTrigger", index); var hasTransportPosition = packet.ReadBit("Has Transport Position", index); // 424 var bit681 = packet.ReadBit("bit681", index); var hasStationaryPosition = packet.ReadBit("Has Stationary Position", index); // 448 @@ -287,38 +287,38 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, WowGuid guid, } - if (bit668) + if (hasAreaTrigger) { - bit528 = packet.ReadBit(); - bit600 = packet.ReadBit(); - bit544 = packet.ReadBit(); - bit526 = packet.ReadBit(); - bit552 = packet.ReadBit(); - bit524 = packet.ReadBit(); - bit572 = packet.ReadBit(); - bit525 = packet.ReadBit(); - bit664 = packet.ReadBit(); - bit527 = packet.ReadBit(); - - if (bit664) - bits288 = packet.ReadBits(20); - - bit536 = packet.ReadBit(); - bit644 = packet.ReadBit(); - bit560 = packet.ReadBit(); - - if (bit644) + unk = packet.ReadBit(); + hasAreaTriggerBox = packet.ReadBit(); + hasMorphCurveID = packet.ReadBit(); + packet.ReadBit("Attached"); + hasFacingCurveID = packet.ReadBit(); + packet.ReadBit("AbsoluteOrientation"); + hasAreaTriggerSphere = packet.ReadBit(); + packet.ReadBit("DynamicShape"); + hasAreaTriggerSpline = packet.ReadBit(); + packet.ReadBit("FaceMovementDir"); + + if (hasAreaTriggerSpline) + areaTriggerSplineCount = packet.ReadBits(20); + + hasScaleCurveID = packet.ReadBit(); + hasAreaTriggerPolygon = packet.ReadBit(); + hasMoveCurveID = packet.ReadBit(); + + if (hasAreaTriggerPolygon) { - bits25C = packet.ReadBits(21); //604 - bits26C = packet.ReadBits(21); //624 + polygonVerticesCount = packet.ReadBits(21); + polygonVerticesTargetCount = packet.ReadBits(21); } } - if (hasAnimKits) + if (animKitCreate) { - hasAnimKit2 = !packet.ReadBit(); - hasAnimKit3 = !packet.ReadBit(); - hasAnimKit1 = !packet.ReadBit(); + hasMovementAnimKitId = !packet.ReadBit(); + hasMeleeAnimKitId = !packet.ReadBit(); + hasAIAnimKitId = !packet.ReadBit(); } if (hasAttackingTarget) @@ -327,7 +327,7 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, WowGuid guid, if (bit1064) bits418 = packet.ReadBits(22); - if (bit810) + if (hasSceneScript) bits2AA = packet.ReadBits(7); packet.ResetBitReader(); @@ -455,6 +455,7 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, WowGuid guid, packet.ReadUInt32("Spline ID", index); //208 moveInfo.Position.Y = packet.ReadSingle(); //216 } + packet.ReadSingle("Fly Speed", index); //188 if (bit160) @@ -514,64 +515,64 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, WowGuid guid, packet.AddValue("Position", moveInfo.Position, index); - if (bit668) + if (hasAreaTrigger) { - if (bit664) + if (hasAreaTriggerSpline) { - for (var i = 0; i < bits288; ++i) + for (var i = 0; i < areaTriggerSplineCount; ++i) { - packet.ReadSingle("Float652+4", index, i); - packet.ReadSingle("Float652", index, i); - packet.ReadSingle("Float652+8", index, i); + packet.ReadSingle("SplineY", index, i); + packet.ReadSingle("SplineX", index, i); + packet.ReadSingle("SplineZ", index, i); } } - if (bit600) + if (hasAreaTriggerBox) { - packet.ReadSingle("Float584", index); - packet.ReadSingle("Float580", index); - packet.ReadSingle("Float596", index); - packet.ReadSingle("Float592", index); - packet.ReadSingle("Float576", index); - packet.ReadSingle("Float588", index); + packet.ReadSingle("m_BoxDatas.m_Extent[2]", index); + packet.ReadSingle("m_BoxDatas.m_Extent[1]", index); + packet.ReadSingle("m_BoxDatas.m_ExtentTarget[2]", index); + packet.ReadSingle("m_BoxDatas.m_ExtentTarget[1]", index); + packet.ReadSingle("m_BoxDatas.m_Extent[0]", index); + packet.ReadSingle("m_BoxDatas.m_ExtentTarget[0]", index); } - if (bit644) + if (hasAreaTriggerPolygon) { - for (var i = 0; i < bits25C; ++i) + for (var i = 0; i < polygonVerticesCount; ++i) { - packet.ReadSingle("Float608", index, i); - packet.ReadSingle("Float608+4", index, i); + packet.ReadSingle("m_PolygonDatas.m_Vertices[0]", index, i); + packet.ReadSingle("m_PolygonDatas.m_Vertices[1]", index, i); } - for (var i = 0; i < bits26C; ++i) + for (var i = 0; i < polygonVerticesTargetCount; ++i) { - packet.ReadSingle("Float260+0", index, i); - packet.ReadSingle("Float260+1", index, i); + packet.ReadSingle("m_PolygonDatas.m_VerticesTarget[0]", index, i); + packet.ReadSingle("m_PolygonDatas.m_VerticesTarget[1]", index, i); } - packet.ReadSingle("Float624", index); - packet.ReadSingle("Float624+4", index); + packet.ReadSingle("m_PolygonDatas.m_HeightTarget", index); + packet.ReadSingle("m_PolygonDatas.m_Height", index); } - packet.ReadUInt32("unk520", index); + packet.ReadUInt32("AreaTriggerCreateTime", index); - if (bit544) - packet.ReadUInt32("unk544", index); + if (hasMorphCurveID) + packet.ReadUInt32("MorphCurveID", index); - if (bit552) - packet.ReadUInt32("unk548", index); + if (hasFacingCurveID) + packet.ReadUInt32("FacingCurveID", index); - if (bit536) - packet.ReadUInt32("unk532", index); + if (hasScaleCurveID) + packet.ReadUInt32("ScaleCurveID", index); - if (bit560) - packet.ReadUInt32("unk556", index); + if (hasMoveCurveID) + packet.ReadUInt32("MoveCurveID", index); - if (bit572) + if (hasAreaTriggerSphere) { - packet.ReadSingle("Float564", index); - packet.ReadSingle("Float568", index); + packet.ReadSingle("ScaleX", index); + packet.ReadSingle("ScaleY", index); } } @@ -624,23 +625,23 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, WowGuid guid, packet.AddValue("Stationary Position", moveInfo.Position, index); } - if (bit676) + if (hasWorldEffect) packet.ReadUInt32("unk672"); - if (hasAnimKits) + if (animKitCreate) { - if (hasAnimKit1) + if (hasAIAnimKitId) packet.ReadUInt16("Anim Kit 1", index); - if (hasAnimKit3) + if (hasMeleeAnimKitId) packet.ReadUInt16("Anim Kit 3", index); - if (hasAnimKit2) + if (hasMovementAnimKitId) packet.ReadUInt16("Anim Kit 2", index); } - if (bit810) + if (hasSceneScript) packet.ReadBytes("Bytes", (int)bits2AA); - if (bit476) + if (hasServerTime) packet.ReadUInt32("unk472"); if (bit1064)