From 2075879183a364bcdcb86c7cdf7c4663a9bdb42e Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Thu, 19 Nov 2020 03:13:12 +0100 Subject: [PATCH] Core/Movement: * splines that are being sent via StopMoving() will now send the correct spline data when a unit has died * corrected setting the NowDead field in SMSG_ATTACK_STOP to prevent creature's from looking away from the cool guys when dying --- src/server/game/Movement/Spline/MoveSplineInit.cpp | 10 +++++++++- src/server/game/Server/Packets/CombatPackets.cpp | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp index c0c275b03c7..361f33de75a 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.cpp +++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp @@ -173,7 +173,15 @@ namespace Movement packet.MoverGUID = unit->GetGUID(); packet.Pos = Position(loc.x, loc.y, loc.z, loc.orientation); packet.SplineData.ID = move_spline.GetId(); - packet.SplineData.Move.Face = MONSTER_MOVE_STOP; + + if (unit->IsAlive()) + packet.SplineData.Move.Face = MONSTER_MOVE_STOP; + else + { + // Stopping splines for killed creatures send a normal packet with their current position as first path point + packet.SplineData.Move.Face = MONSTER_MOVE_NORMAL; + packet.SplineData.Move.Points.push_back({ loc.x, loc.y, loc.z }); + } if (transport) { diff --git a/src/server/game/Server/Packets/CombatPackets.cpp b/src/server/game/Server/Packets/CombatPackets.cpp index 20599ce776a..426c8ce24df 100644 --- a/src/server/game/Server/Packets/CombatPackets.cpp +++ b/src/server/game/Server/Packets/CombatPackets.cpp @@ -101,7 +101,7 @@ WorldPackets::Combat::SAttackStop::SAttackStop(Unit const* attacker, Unit const* if (victim) { Victim = victim->GetGUID(); - NowDead = victim->isDead(); + NowDead = !attacker->IsAlive(); // using IsAlive instead of IsDead to catch JUST_DIED death states as well } }