Skip to content

Commit

Permalink
Add multiple 4.4.0 CMSG handler
Browse files Browse the repository at this point in the history
CMSG_MAIL_RETURN_TO_SENDER
CMSG_MAIL_TAKE_ITEM
CMSG_MAIL_TAKE_MONEY
CMSG_MASTER_LOOT_ITEM
CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM
CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM
CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM
CMSG_MINIMAP_PING
CMSG_MISSILE_TRAJECTORY_COLLISION
CMSG_MOUNT_SET_FAVORITE
CMSG_MOUNT_SPECIAL_ANIM
CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK
CMSG_MOVE_CHANGE_VEHICLE_SEATS
CMSG_MOVE_COLLISION_DISABLE_ACK
CMSG_MOVE_COLLISION_ENABLE_ACK
CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK
CMSG_MOVE_FEATHER_FALL_ACK
CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK
CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK
CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK
CMSG_MOVE_FORCE_ROOT_ACK
CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK
CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK
CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK
CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK
CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK
CMSG_MOVE_FORCE_UNROOT_ACK
CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK
CMSG_MOVE_GRAVITY_DISABLE_ACK
CMSG_MOVE_GRAVITY_ENABLE_ACK
CMSG_MOVE_GUILD_BANK_ITEM
CMSG_MOVE_HOVER_ACK
CMSG_MOVE_INERTIA_DISABLE_ACK
CMSG_MOVE_INERTIA_ENABLE_ACK
CMSG_MOVE_KNOCK_BACK_ACK
CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK
CMSG_MOVE_SET_CAN_FLY_ACK
CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK
CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK
CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK
CMSG_MOVE_SET_VEHICLE_REC_ID_ACK
CMSG_MOVE_SPLINE_DONE
CMSG_MOVE_UPDATE_FALL_SPEED
CMSG_MOVE_WATER_WALK_ACK
CMSG_NEXT_CINEMATIC_CAMERA
CMSG_OBJECT_UPDATE_FAILED
CMSG_OBJECT_UPDATE_RESCUED
  • Loading branch information
funjoker committed Sep 6, 2024
1 parent ad86845 commit f500da2
Show file tree
Hide file tree
Showing 10 changed files with 243 additions and 24 deletions.
44 changes: 22 additions & 22 deletions WowPacketParser/Enums/Version/V4_4_0_54481/Opcodes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -366,18 +366,18 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
{ Opcode.CMSG_MAIL_RETURN_TO_SENDER, 0x3654 },
{ Opcode.CMSG_MAIL_TAKE_ITEM, 0x353A },
{ Opcode.CMSG_MAIL_TAKE_MONEY, 0x3539 },
{ Opcode.CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT, 0x322A },
{ Opcode.CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT, 0x322A }, // NYI
{ Opcode.CMSG_MASTER_LOOT_ITEM, 0x3214 },
{ Opcode.CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM, 0x34C0 },
{ Opcode.CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM, 0x34BD },
{ Opcode.CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM, 0x34BB },
{ Opcode.CMSG_MINIMAP_PING, 0x364a },
{ Opcode.CMSG_MINIMAP_PING, 0x364A },
{ Opcode.CMSG_MISSILE_TRAJECTORY_COLLISION, 0x318F },
{ Opcode.CMSG_MOUNT_CLEAR_FANFARE, 0x3127 },
{ Opcode.CMSG_MOUNT_CLEAR_FANFARE, 0x3127 }, // NYI
{ Opcode.CMSG_MOUNT_SET_FAVORITE, 0x362F },
{ Opcode.CMSG_MOUNT_SPECIAL_ANIM, 0x3282 },
{ Opcode.CMSG_MOVE_ADD_IMPULSE_ACK, 0x3A50 },
{ Opcode.CMSG_MOVE_APPLY_INERTIA_ACK, 0x3A4E },
{ Opcode.CMSG_MOVE_ADD_IMPULSE_ACK, 0x3A50 }, // NYI
{ Opcode.CMSG_MOVE_APPLY_INERTIA_ACK, 0x3A4E }, // NYI
{ Opcode.CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK, 0x3A15 },
{ Opcode.CMSG_MOVE_CHANGE_TRANSPORT, 0x3A2F },
{ Opcode.CMSG_MOVE_CHANGE_VEHICLE_SEATS, 0x3A34 },
Expand Down Expand Up @@ -411,25 +411,25 @@ public static BiDictionary<Opcode, int> Opcodes(Direction direction)
{ Opcode.CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE, 0x3A46 },
{ Opcode.CMSG_MOVE_JUMP, 0x39EA },
{ Opcode.CMSG_MOVE_KNOCK_BACK_ACK, 0x3A12 },
{ Opcode.CMSG_MOVE_REMOVE_INERTIA_ACK, 0x3A4F },
{ Opcode.CMSG_MOVE_REMOVE_INERTIA_ACK, 0x3A4F }, // NYI
{ Opcode.CMSG_MOVE_REMOVE_MOVEMENT_FORCES, 0x3A17 },
{ Opcode.CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK, 0x3A16 },
{ Opcode.CMSG_MOVE_SEAMLESS_TRANSFER_COMPLETE, 0x3A44 },
{ Opcode.CMSG_MOVE_SET_ADV_FLY, 0x3A52 },
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED_ACK, 0x3A58 },
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION_ACK, 0x3A53 },
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_BANKING_RATE_ACK, 0x3A59 },
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD_ACK, 0x3A56 },
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT_ACK, 0x3A57 },
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT_ACK, 0x3A60 },
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT_ACK, 0x3A55 },
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_MAX_VEL_ACK, 0x3A54 },
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION_ACK, 0x3A5E },
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN_ACK, 0x3A5A },
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP_ACK, 0x3A5B },
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION_ACK, 0x3A5D },
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD_ACK, 0x3A5C },
{ Opcode.CMSG_MOVE_SET_CAN_ADV_FLY_ACK, 0x3A51 },
{ Opcode.CMSG_MOVE_SEAMLESS_TRANSFER_COMPLETE, 0x3A44 }, // NYI
{ Opcode.CMSG_MOVE_SET_ADV_FLY, 0x3A52 }, // NYI
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED_ACK, 0x3A58 }, // NYI
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION_ACK, 0x3A53 }, // NYI
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_BANKING_RATE_ACK, 0x3A59 }, // NYI
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD_ACK, 0x3A56 }, // NYI
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT_ACK, 0x3A57 }, // NYI
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT_ACK, 0x3A60 }, // NYI
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT_ACK, 0x3A55 }, // NYI
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_MAX_VEL_ACK, 0x3A54 }, // NYI
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION_ACK, 0x3A5E }, // NYI
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN_ACK, 0x3A5A }, // NYI
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP_ACK, 0x3A5B }, // NYI
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION_ACK, 0x3A5D }, // NYI
{ Opcode.CMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD_ACK, 0x3A5C }, // NYI
{ Opcode.CMSG_MOVE_SET_CAN_ADV_FLY_ACK, 0x3A51 }, // NYI
{ Opcode.CMSG_MOVE_SET_CAN_FLY_ACK, 0x3A27 },
{ Opcode.CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK, 0x3A25 },
{ Opcode.CMSG_MOVE_SET_COLLISION_HEIGHT_ACK, 0x3A3B },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -622,6 +622,13 @@ public static void HandleInspect(Packet packet)
packet.ReadPackedGuid128("Target");
}

[Parser(Opcode.CMSG_MOUNT_SET_FAVORITE)]
public static void HandleMountSetFavorite(Packet packet)
{
packet.ReadInt32("MountSpellID");
packet.ReadBit("IsFavorite");
}

[Parser(Opcode.CMSG_CONFIRM_BARBERS_CHOICE)]
[Parser(Opcode.CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT)]
public static void HandleCharNull(Packet packet)
Expand Down
10 changes: 10 additions & 0 deletions WowPacketParserModule.V4_4_0_54481/Parsers/GroupHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,16 @@ public static void HandleDoReadyCheck(Packet packet)
packet.ReadByte("PartyIndex");
}

[Parser(Opcode.CMSG_MINIMAP_PING)]
public static void HandleClientMinimapPing(Packet packet)
{
var hasPartyIndex = packet.ReadBit("HasPartyIndex");
packet.ReadVector2("Position");

if (hasPartyIndex)
packet.ReadByte("PartyIndex");
}

[Parser(Opcode.CMSG_REQUEST_RAID_INFO)]
[Parser(Opcode.SMSG_GROUP_DESTROYED)]
[Parser(Opcode.SMSG_GROUP_UNINVITE)]
Expand Down
37 changes: 37 additions & 0 deletions WowPacketParserModule.V4_4_0_54481/Parsers/GuildHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -924,6 +924,43 @@ public static void HandleGuildUpdateInfoText(Packet packet)
packet.ReadWoWString("InfoText", nameLength);
}

[Parser(Opcode.CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM)]
public static void HandleMergeGuildBankItemWithGuildBankItem(Packet packet)
{
packet.ReadPackedGuid128("Banker");
packet.ReadByte("BankTab");
packet.ReadByte("BankSlot");
packet.ReadByte("BankTab1");
packet.ReadByte("BankSlot1");
packet.ReadUInt32("StackCount");
}

[Parser(Opcode.CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM)]
[Parser(Opcode.CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM)]
public static void HandleMergeGuildBankItemWithItem(Packet packet)
{
packet.ReadPackedGuid128("Banker");
packet.ReadByte("BankTab");
packet.ReadByte("BankSlot");
packet.ReadByte("ContainerItemSlot");
packet.ReadUInt32("StackCount");

var hasContainerSlot = packet.ReadBit("HasContainerSlot");

if (hasContainerSlot)
packet.ReadByte("ContainerSlot");
}

[Parser(Opcode.CMSG_MOVE_GUILD_BANK_ITEM)]
public static void HandleMoveGuildBankItem(Packet packet)
{
packet.ReadPackedGuid128("Banker");
packet.ReadByte("BankTab");
packet.ReadByte("BankSlot");
packet.ReadByte("BankTab1");
packet.ReadByte("BankSlot1");
}

[Parser(Opcode.CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY)]
[Parser(Opcode.SMSG_GUILD_EVENT_BANK_CONTENTS_CHANGED)]
[Parser(Opcode.SMSG_GUILD_EVENT_DISBANDED)]
Expand Down
13 changes: 13 additions & 0 deletions WowPacketParserModule.V4_4_0_54481/Parsers/LootHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,19 @@ public static void HandleLoot(Packet packet)
packet.ReadPackedGuid128("Unit");
}

[Parser(Opcode.CMSG_MASTER_LOOT_ITEM)]
public static void HandleMasterLootItem(Packet packet)
{
var count = packet.ReadUInt32("Count");
packet.ReadPackedGuid128("Target");

for (var i = 0; i < count; ++i)
{
packet.ReadPackedGuid128("Object", i);
packet.ReadByte("LootListID", i);
}
}

[Parser(Opcode.SMSG_AE_LOOT_TARGET_ACK)]
[Parser(Opcode.SMSG_LOOT_RELEASE_ALL)]
public static void HandleLootZero(Packet packet)
Expand Down
23 changes: 23 additions & 0 deletions WowPacketParserModule.V4_4_0_54481/Parsers/MailHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,29 @@ public static void HandleMailMarkAsRead(Packet packet)
packet.ReadUInt64("MailID");
}

[Parser(Opcode.CMSG_MAIL_RETURN_TO_SENDER)]
public static void HandleMailReturnToSender(Packet packet)
{
packet.ReadUInt64("MailID");
packet.ReadPackedGuid128("SenderGUID");
}

[Parser(Opcode.CMSG_MAIL_TAKE_ITEM)]
public static void HandleMailTakeItem(Packet packet)
{
packet.ReadPackedGuid128("Mailbox");
packet.ReadUInt64("MailID");
packet.ReadUInt64("AttachID");
}

[Parser(Opcode.CMSG_MAIL_TAKE_MONEY)]
public static void HandleMailTakeMoney(Packet packet)
{
packet.ReadPackedGuid128("Mailbox");
packet.ReadUInt64("MailID");
packet.ReadUInt64("Money");
}

[Parser(Opcode.CMSG_QUERY_NEXT_MAIL_TIME)]
public static void HandleNullMail(Packet packet)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -881,7 +881,17 @@ public static void HandleEjectPassenger(Packet packet)
[Parser(Opcode.CMSG_FAR_SIGHT)]
public static void HandleFarSight(Packet packet)
{
packet.ReadBool("Apply");
packet.ReadBit("Apply");
}

[Parser(Opcode.CMSG_MOUNT_SPECIAL_ANIM)]
public static void HandleMountSpecialAnim(Packet packet)
{
var count = packet.ReadUInt32();
packet.ReadInt32("SequenceVariation");

for (var i = 0; i < count; ++i)
packet.ReadInt32("SpellVisualKitID", i);
}

[Parser(Opcode.SMSG_RESUME_COMMS)]
Expand All @@ -896,6 +906,7 @@ public static void HandleFarSight(Packet packet)
[Parser(Opcode.CMSG_COMPLETE_CINEMATIC)]
[Parser(Opcode.CMSG_COMPLETE_MOVIE)]
[Parser(Opcode.CMSG_ENABLE_NAGLE)]
[Parser(Opcode.CMSG_NEXT_CINEMATIC_CAMERA)]
public static void HandleZeroLengthPackets(Packet packet)
{
}
Expand Down
104 changes: 103 additions & 1 deletion WowPacketParserModule.V4_4_0_54481/Parsers/MovementHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,13 @@ public static void ReadMoveStateChange(Packet packet, params object[] idx)
packet.ReadUInt32("MovementInertiaLifetimeMs", idx);
}

public static MovementInfo ReadMovementAck(Packet packet, params object[] idx)
{
var stats = ReadMovementStats(packet, idx);
packet.ReadInt32("AckIndex", idx);
return stats;
}

[Parser(Opcode.SMSG_ADJUST_SPLINE_DURATION)]
public static void HandleAdjustSplineDuration(Packet packet)
{
Expand Down Expand Up @@ -541,6 +548,7 @@ public static void HandleFlightSplineSync(Packet packet)
[Parser(Opcode.CMSG_MOVE_STOP_SWIM)]
[Parser(Opcode.CMSG_MOVE_STOP_TURN)]
[Parser(Opcode.CMSG_MOVE_DOUBLE_JUMP)]
[Parser(Opcode.CMSG_MOVE_UPDATE_FALL_SPEED)]
public static void HandleClientPlayerMove(Packet packet)
{
var stats = ReadMovementStats(packet);
Expand Down Expand Up @@ -593,7 +601,7 @@ public static void HandleSetCollisionHeight(Packet packet)
[Parser(Opcode.CMSG_MOVE_SET_COLLISION_HEIGHT_ACK)]
public static void HandleMoveSetCollisionHeightAck(Packet packet)
{
V6_0_2_19033.Parsers.MovementHandler.ReadMovementAck(packet, "MovementAck");
ReadMovementAck(packet, "MovementAck");
packet.ReadSingle("Height");
packet.ReadInt32("MountDisplayID");
packet.ReadByte("Reason");
Expand Down Expand Up @@ -877,6 +885,100 @@ public static void HandleTransferPending(Packet packet)
packet.ReadUInt32<SpellId>("TransferSpellID");
}

[Parser(Opcode.CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK)]
public static void HandleMoveApplyMovementForceAck(Packet packet)
{
var stats = ReadMovementAck(packet);
packet.Holder.ClientMove = new() { Mover = stats.MoverGuid, Position = stats.PositionAsVector4 };
ReadMovementForce(packet, "MovementForce");
}

[Parser(Opcode.CMSG_MOVE_CHANGE_VEHICLE_SEATS)]
public static void HandleMoveChangeVehicleSeats(Packet packet)
{
ReadMovementStats(packet);
packet.ReadPackedGuid128("DstVehicle");
packet.ReadByte("DstSeatIndex");
}

[Parser(Opcode.CMSG_MOVE_COLLISION_DISABLE_ACK)]
[Parser(Opcode.CMSG_MOVE_COLLISION_ENABLE_ACK)]
[Parser(Opcode.CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK)]
[Parser(Opcode.CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK)]
[Parser(Opcode.CMSG_MOVE_FEATHER_FALL_ACK)]
[Parser(Opcode.CMSG_MOVE_FORCE_ROOT_ACK)]
[Parser(Opcode.CMSG_MOVE_FORCE_UNROOT_ACK)]
[Parser(Opcode.CMSG_MOVE_GRAVITY_DISABLE_ACK)]
[Parser(Opcode.CMSG_MOVE_GRAVITY_ENABLE_ACK)]
[Parser(Opcode.CMSG_MOVE_HOVER_ACK)]
[Parser(Opcode.CMSG_MOVE_INERTIA_DISABLE_ACK)]
[Parser(Opcode.CMSG_MOVE_INERTIA_ENABLE_ACK)]
[Parser(Opcode.CMSG_MOVE_SET_CAN_FLY_ACK)]
[Parser(Opcode.CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK)]
[Parser(Opcode.CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK)]
[Parser(Opcode.CMSG_MOVE_WATER_WALK_ACK)]
public static void HandleMoveAck(Packet packet)
{
var stats = ReadMovementAck(packet);
packet.Holder.ClientMove = new() { Mover = stats.MoverGuid, Position = stats.PositionAsVector4 };
}

[Parser(Opcode.CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK)]
[Parser(Opcode.CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK)]
[Parser(Opcode.CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK)]
[Parser(Opcode.CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK)]
[Parser(Opcode.CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK)]
[Parser(Opcode.CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK)]
[Parser(Opcode.CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK)]
[Parser(Opcode.CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK)]
[Parser(Opcode.CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK)]
[Parser(Opcode.CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK)]
public static void HandleMoveSpeedAck(Packet packet)
{
var stats = ReadMovementAck(packet);
packet.Holder.ClientMove = new() { Mover = stats.MoverGuid, Position = stats.PositionAsVector4 };
packet.ReadSingle("Speed");
}

[Parser(Opcode.CMSG_MOVE_KNOCK_BACK_ACK)]
public static void HandleMoveKnockBackAck(Packet packet)
{
var stats = ReadMovementAck(packet, "MovementAck");
packet.Holder.ClientMove = new() { Mover = stats.MoverGuid, Position = stats.PositionAsVector4 };

packet.ResetBitReader();

var hasSpeeds = packet.ReadBit("HasSpeeds");
if (hasSpeeds)
{
packet.ReadSingle("HorzSpeed");
packet.ReadSingle("VertSpeed");
}
}

[Parser(Opcode.CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK)]
public static void HandleMoveRemoveMovementForceAck(Packet packet)
{
var stats = ReadMovementAck(packet);
packet.Holder.ClientMove = new() { Mover = stats.MoverGuid, Position = stats.PositionAsVector4 };
packet.ReadPackedGuid128("TriggerGUID");
}

[Parser(Opcode.CMSG_MOVE_SET_VEHICLE_REC_ID_ACK)]
public static void HandleMoveSetVehicleRecIdAck(Packet packet)
{
var stats = ReadMovementAck(packet);
packet.Holder.ClientMove = new() { Mover = stats.MoverGuid, Position = stats.PositionAsVector4 };
packet.ReadInt32("VehicleRecID");
}

[Parser(Opcode.CMSG_MOVE_SPLINE_DONE)]
public static void HandleMoveSplineDone(Packet packet)
{
ReadMovementStats(packet);
packet.ReadInt32("SplineID");
}

[Parser(Opcode.SMSG_ABORT_NEW_WORLD)]
public static void HandleAbortNewWorld(Packet packet)
{
Expand Down
9 changes: 9 additions & 0 deletions WowPacketParserModule.V4_4_0_54481/Parsers/SpellHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1114,6 +1114,15 @@ public static void HandleLearnPreviewTalents(Packet packet)
}
}

[Parser(Opcode.CMSG_MISSILE_TRAJECTORY_COLLISION)]
public static void HandleMissileTrajectoryCollision(Packet packet)
{
packet.ReadPackedGuid128("CasterGUID");
packet.ReadInt32<SpellId>("SpellID");
packet.ReadPackedGuid128("CastID");
packet.ReadVector3("CollisionPos");
}

[Parser(Opcode.SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA)]
[Parser(Opcode.CMSG_CANCEL_AUTO_REPEAT_SPELL)]
[Parser(Opcode.CMSG_CANCEL_GROWTH_AURA)]
Expand Down
7 changes: 7 additions & 0 deletions WowPacketParserModule.V4_4_0_54481/Parsers/UpdateHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -829,5 +829,12 @@ public static void HandleDestroyArenaUnit(Packet packet)
{
packet.ReadPackedGuid128("Guid");
}

[Parser(Opcode.CMSG_OBJECT_UPDATE_FAILED)]
[Parser(Opcode.CMSG_OBJECT_UPDATE_RESCUED)]
public static void HandleObjectUpdateOrRescued(Packet packet)
{
packet.ReadPackedGuid128("ObjectGUID");
}
}
}

0 comments on commit f500da2

Please sign in to comment.