From a1252a56c9319d0a8b02da54b3a5335cf850d3ef Mon Sep 17 00:00:00 2001 From: Kelsi Date: Sun, 29 Mar 2026 19:01:34 -0700 Subject: [PATCH] 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. --- src/game/movement_handler.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/game/movement_handler.cpp b/src/game/movement_handler.cpp index 56840144..79889a02 100644 --- a/src/game/movement_handler.cpp +++ b/src/game/movement_handler.cpp @@ -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;