fix: Prevent phantom strafe bug by clearing player velocity in ObjectCreateDetailedMessage

Players would strafe without input after mode switches (gmtoggle) or zone transitions
when moving during the transition. The client was receiving stale velocity data in
PlacementData, causing it to restore phantom input state.

Fix: Always send None for velocity in player ObjectCreateDetailedMessage packets.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2revoemag 2025-11-30 20:50:10 -05:00
parent ba8a7caedf
commit fc07513f01

View file

@ -16,7 +16,7 @@ class AvatarConverter extends ObjectCreateConverter[Player]() {
Success( Success(
if (obj.VehicleSeated.isEmpty) { if (obj.VehicleSeated.isEmpty) {
PlayerData( PlayerData(
PlacementData(obj.Position, obj.Orientation, obj.Velocity), PlacementData(obj.Position, obj.Orientation, None),
MakeAppearanceData(obj), MakeAppearanceData(obj),
MakeCharacterData(obj), MakeCharacterData(obj),
MakeInventoryData(obj), MakeInventoryData(obj),
@ -38,7 +38,7 @@ class AvatarConverter extends ObjectCreateConverter[Player]() {
Success( Success(
if (obj.VehicleSeated.isEmpty) { if (obj.VehicleSeated.isEmpty) {
DetailedPlayerData.apply( DetailedPlayerData.apply(
PlacementData(obj.Position, obj.Orientation, obj.Velocity), PlacementData(obj.Position, obj.Orientation, None),
MakeAppearanceData(obj), MakeAppearanceData(obj),
MakeDetailedCharacterData(obj), MakeDetailedCharacterData(obj),
MakeDetailedInventoryData(obj), MakeDetailedInventoryData(obj),