aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-10-26 09:55:59 +0100
committerShauren <shauren.trinity@gmail.com>2025-10-26 09:55:59 +0100
commitea6bb10d12279c1cdf6f368e67d085c6e70f5cfd (patch)
treeea81120b010e8f4284b7f6deed1a20790a96a23e /src
parent154f960655de46683250b1f3380322a8286e45e7 (diff)
Revert "Core/Entities: improve unit on death movement"
This reverts commit f4d8105064afdf98212320b5bd1569f2af3fa68a.
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp7
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp21
-rw-r--r--src/server/game/Movement/MotionMaster.cpp2
3 files changed, 10 insertions, 20 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 0824a95f3c2..0cfa85c237b 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -2006,6 +2006,13 @@ void Creature::setDeathState(DeathState s)
if (m_formation && m_formation->GetLeader() == this)
m_formation->FormationReset(true);
+ bool needsFalling = (IsFlying() || IsHovering()) && !IsUnderWater();
+ SetHover(false, false);
+ SetDisableGravity(false, false);
+
+ if (needsFalling)
+ GetMotionMaster()->MoveFall();
+
Unit::setDeathState(CORPSE);
}
else if (s == JUST_RESPAWNED)
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index cca0d47a7e2..213329d3e96 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -8760,28 +8760,9 @@ void Unit::setDeathState(DeathState s)
if (!isOnVehicle)
{
if (GetMotionMaster()->StopOnDeath())
- {
- if (!HasUnitState(UNIT_STATE_ROOT | UNIT_STATE_STUNNED) && GetTypeId() == TYPEID_UNIT && ToCreature()->IsInAir(*this, GetFloorZ(), false) && !IsUnderWater())
- {
- GetMotionMaster()->AddFlag(MOTIONMASTER_FLAG_STATIC_PREVENT_INITIALIZATION);
- SetFall(true);
- Movement::MoveSplineInit init(this);
- init.MoveTo(GetPositionX(), GetPositionY(), GetFloorZ(), false, true);
- init.SetFall();
- init.Launch();
- }
- else
- {
- StopMoving();
- DisableSpline();
- }
- }
+ DisableSpline();
}
- SetDisableGravity(false);
- SetCanFly(false);
- SetHover(false);
-
// without this when removing IncreaseMaxHealth aura player may stuck with 1 hp
// do not why since in IncreaseMaxHealth currenthealth is checked
SetHealth(0);
diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp
index 444847d355d..b26d769da59 100644
--- a/src/server/game/Movement/MotionMaster.cpp
+++ b/src/server/game/Movement/MotionMaster.cpp
@@ -563,6 +563,8 @@ bool MotionMaster::StopOnDeath()
MoveIdle();
}
+ _owner->StopMoving();
+
return true;
}