fix: forceClearTaxiAndMovementState cleared unrelated death/resurrect state

A function for taxi/movement cleanup was resetting 10 death-related
fields (playerDead_, releasedSpirit_, resurrectPending_, etc.), which
could cancel a pending resurrection or mark a dead player as alive
when called during taxi dismount. Death state is owned by
entity_controller and resurrect packet handlers, not movement cleanup.
This commit is contained in:
Kelsi 2026-03-29 19:01:34 -07:00
parent 2e1f0f15ea
commit a1252a56c9

View file

@ -685,16 +685,11 @@ void MovementHandler::forceClearTaxiAndMovementState() {
taxiMountDisplayId_ = 0;
owner_.currentMountDisplayId_ = 0;
owner_.vehicleId_ = 0;
owner_.resurrectPending_ = false;
owner_.resurrectRequestPending_ = false;
owner_.selfResAvailable_ = false;
owner_.playerDead_ = false;
owner_.releasedSpirit_ = false;
owner_.corpseGuid_ = 0;
owner_.corpseReclaimAvailableMs_ = 0;
owner_.repopPending_ = false;
owner_.pendingSpiritHealerGuid_ = 0;
owner_.resurrectCasterGuid_ = 0;
// Death/resurrect state is intentionally NOT cleared here.
// Previously this method reset 10 death-related fields despite being named
// "forceClearTaxiAndMovementState", which could cancel pending resurrections
// or clear death state on taxi dismount. Death state is managed by
// entity_controller (markPlayerDead) and the resurrect packet handlers.
movementInfo.flags = 0;
movementInfo.flags2 = 0;