Skip to content

Commit

Permalink
Add monster move capabilities to 1.15.5+ handler
Browse files Browse the repository at this point in the history
  • Loading branch information
killerwife committed Feb 3, 2025
1 parent 3021c09 commit c9ecc4e
Showing 1 changed file with 19 additions and 7 deletions.
26 changes: 19 additions & 7 deletions WowPacketParserModule.V4_4_0_54481/Parsers/UpdateHandler11x.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
using WowPacketParser.Store;
using WowPacketParser.Store.Objects;
using WowPacketParser.Store.Objects.UpdateFields;
using WowPacketParserModule.V7_0_3_22248.Enums;
using CoreFields = WowPacketParser.Enums.Version;
using CoreParsers = WowPacketParser.Parsing.Parsers;
using MovementFlag = WowPacketParser.Enums.v4.MovementFlag;
Expand Down Expand Up @@ -588,7 +589,7 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, WowGuid guid,
if (hasMovementUpdate)
{
packet.ResetBitReader();
packet.ReadPackedGuid128("MoverGUID", index);
var moverGuid = packet.ReadPackedGuid128("MoverGUID", index);

moveInfo.Flags = (uint)packet.ReadUInt32E<MovementFlag>("Movement Flags", index);
moveInfo.Flags2 = (uint)packet.ReadUInt32E<MovementFlag2>("Movement Flags 2", index);
Expand Down Expand Up @@ -699,16 +700,22 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, WowGuid guid,

if (moveInfo.HasSplineData)
{
PacketMonsterMove monsterMove = packet.Holder.MonsterMove = new();
monsterMove.Mover = moverGuid;
packet.ResetBitReader();
packet.ReadInt32("ID", index);
packet.ReadVector3("Destination", index);

var destination = packet.ReadVector3("Destination", index);
monsterMove.Destination = destination;

var hasMovementSplineMove = packet.ReadBit("MovementSplineMove", index);
if (hasMovementSplineMove)
{
packet.ResetBitReader();

packet.ReadUInt32E<SplineFlag>("SplineFlags", index);
var splineFlag = packet.ReadUInt32E<SplineFlag>("SplineFlags", index);
monsterMove.Flags = splineFlag.ToUniversal();

packet.ReadInt32("Elapsed", index);
packet.ReadUInt32("Duration", index);
packet.ReadSingle("DurationModifier", index);
Expand Down Expand Up @@ -742,14 +749,15 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, WowGuid guid,
switch (face)
{
case 1:
var faceSpot = packet.ReadVector3("FaceSpot", index);
var faceSpot = monsterMove.LookPosition = packet.ReadVector3("FaceSpot", index);
orientation = GetAngle(moveInfo.Position.X, moveInfo.Position.Y, faceSpot.X, faceSpot.Y);
break;
case 2:
packet.ReadPackedGuid128("FaceGUID", index);
monsterMove.LookTarget = new();
monsterMove.LookTarget.Target = packet.ReadPackedGuid128("FaceGUID", index);
break;
case 3:
orientation = packet.ReadSingle("FaceDirection", index);
monsterMove.LookOrientation = orientation = packet.ReadSingle("FaceDirection", index);
break;
default:
break;
Expand All @@ -761,13 +769,17 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, WowGuid guid,
for (var i = 0; i < pointsCount; ++i)
{
var spot = packet.ReadVector3("Points", index, i);
if (splineFlag.HasFlag(SplineFlag.EnterCycle) || splineFlag.HasFlag(SplineFlag.Cyclic))
monsterMove.Points.Add(spot);
else
monsterMove.PackedPoints.Add(spot);
}

if (hasSpellEffectExtraData)
MovementHandler.ReadMonsterSplineSpellEffectExtraData(packet, index);

if (hasJumpExtraData)
MovementHandler.ReadMonsterSplineJumpExtraData(packet, index);
monsterMove.Jump = MovementHandler.ReadMonsterSplineJumpExtraData(packet, index);

if (hasAnimationTierTransition)
{
Expand Down

0 comments on commit c9ecc4e

Please sign in to comment.