From f68fe7d24b2ea85c15c1ed1df305872c1ccd72ac Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Sun, 21 Feb 2016 09:40:50 +0000 Subject: [PATCH] Fix vehicles disobeying gravity when crashing on certain tracks --- src/ride/vehicle.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ride/vehicle.c b/src/ride/vehicle.c index 9cb91776e4..2b83734033 100644 --- a/src/ride/vehicle.c +++ b/src/ride/vehicle.c @@ -2553,12 +2553,12 @@ static void vehicle_update_crash_setup(rct_vehicle* vehicle) { int x = RCT2_ADDRESS(0x009A3AC4, sint16)[trainVehicle->sprite_direction & 0xFE]; int y = RCT2_ADDRESS(0x009A3AC6, sint16)[trainVehicle->sprite_direction & 0xFE]; - int ecx = RCT2_ADDRESS(0x009A37E4, uint32)[trainVehicle->var_1F] >> 15; + int ecx = RCT2_ADDRESS(0x009A37E4, sint32)[trainVehicle->var_1F] >> 15; x *= ecx; y *= ecx; x >>= 16; y >>= 16; - ecx = RCT2_ADDRESS(0x009A38D4, uint32)[trainVehicle->var_1F] >> 23; + ecx = RCT2_ADDRESS(0x009A38D4, sint32)[trainVehicle->var_1F] >> 23; x *= edx; y *= edx; ecx *= edx; @@ -4228,9 +4228,9 @@ static void vehicle_update_crash(rct_vehicle *vehicle){ curPosition.x += (sint8)(curVehicle->var_B6 >> 8); curPosition.y += (sint8)(curVehicle->var_C0 >> 8); curPosition.z += (sint8)(curVehicle->var_4E >> 8); - curVehicle->track_x += (sint16)(curVehicle->var_B6 << 8); - curVehicle->track_y += (sint16)(curVehicle->var_C0 << 8); - curVehicle->track_z += (sint16)(curVehicle->var_4E << 8); + curVehicle->track_x = (sint16)(curVehicle->var_B6 << 8); + curVehicle->track_y = (sint16)(curVehicle->var_C0 << 8); + curVehicle->track_z = (sint16)(curVehicle->var_4E << 8); if (curPosition.x > 0x1FFF || curPosition.y > 0x1FFF) {