diff options
| author | Shauren <shauren.trinity@gmail.com> | 2025-10-26 09:55:59 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2025-10-26 09:55:59 +0100 |
| commit | ea6bb10d12279c1cdf6f368e67d085c6e70f5cfd (patch) | |
| tree | ea81120b010e8f4284b7f6deed1a20790a96a23e /src | |
| parent | 154f960655de46683250b1f3380322a8286e45e7 (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.cpp | 7 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 21 | ||||
| -rw-r--r-- | src/server/game/Movement/MotionMaster.cpp | 2 |
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; } |
