mirror of https://github.com/OpenRCT2/OpenRCT2.git
Added some M.O.M. safety checks.
Parks using M.O.M. and other hackish features should be less likely to crash now.
This commit is contained in:
parent
1d622ed3e2
commit
d1bc98e121
|
@ -1201,7 +1201,7 @@ void peep_update_ride_sub_state_1(rct_peep* peep){
|
||||||
|
|
||||||
map_element = ride_get_station_start_track_element(ride, peep->current_ride_station);
|
map_element = ride_get_station_start_track_element(ride, peep->current_ride_station);
|
||||||
|
|
||||||
uint8 direction_track = map_element->type & MAP_ELEMENT_DIRECTION_MASK;
|
uint8 direction_track = (!map_element ? 0 : map_element->type & MAP_ELEMENT_DIRECTION_MASK);
|
||||||
|
|
||||||
peep->var_37 = (direction_entrance << 2) | (direction_track << 4);
|
peep->var_37 = (direction_entrance << 2) | (direction_track << 4);
|
||||||
|
|
||||||
|
@ -1246,7 +1246,7 @@ void peep_update_ride_sub_state_1(rct_peep* peep){
|
||||||
|
|
||||||
map_element = ride_get_station_start_track_element(ride, peep->current_ride_station);
|
map_element = ride_get_station_start_track_element(ride, peep->current_ride_station);
|
||||||
|
|
||||||
uint8 direction_track = map_element->type & MAP_ELEMENT_DIRECTION_MASK;
|
uint8 direction_track = (!map_element ? 0 : map_element->type & MAP_ELEMENT_DIRECTION_MASK);
|
||||||
|
|
||||||
vehicle = GET_VEHICLE(ride->vehicles[peep->current_train]);
|
vehicle = GET_VEHICLE(ride->vehicles[peep->current_train]);
|
||||||
ride_entry = GET_RIDE_ENTRY(vehicle->ride_subtype);
|
ride_entry = GET_RIDE_ENTRY(vehicle->ride_subtype);
|
||||||
|
@ -1726,7 +1726,7 @@ static void peep_update_ride_sub_state_7(rct_peep* peep){
|
||||||
|
|
||||||
map_element = ride_get_station_start_track_element(ride, peep->current_ride_station);
|
map_element = ride_get_station_start_track_element(ride, peep->current_ride_station);
|
||||||
|
|
||||||
uint8 station_direction = map_element->type & MAP_ELEMENT_DIRECTION_MASK;
|
uint8 station_direction = (!map_element ? 0 : map_element->type & MAP_ELEMENT_DIRECTION_MASK);
|
||||||
|
|
||||||
vehicle = GET_VEHICLE(ride->vehicles[peep->current_train]);
|
vehicle = GET_VEHICLE(ride->vehicles[peep->current_train]);
|
||||||
|
|
||||||
|
|
|
@ -1707,9 +1707,17 @@ static void ride_prepare_breakdown(int rideIndex, int breakdownReason)
|
||||||
|
|
||||||
// Set flag on broken car
|
// Set flag on broken car
|
||||||
vehicle = &(g_sprite_list[ride->vehicles[ride->broken_vehicle]].vehicle);
|
vehicle = &(g_sprite_list[ride->vehicles[ride->broken_vehicle]].vehicle);
|
||||||
for (i = ride->broken_car; i > 0; i--)
|
for (i = ride->broken_car; i > 0; i--) {
|
||||||
vehicle = &(g_sprite_list[vehicle->next_vehicle_on_train].vehicle);
|
if (vehicle->next_vehicle_on_train == (uint16)0xFFFFFFFF) {
|
||||||
vehicle->var_48 |= 0x100;
|
vehicle = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
vehicle = &(g_sprite_list[vehicle->next_vehicle_on_train].vehicle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (vehicle != NULL)
|
||||||
|
vehicle->var_48 |= 0x100;
|
||||||
break;
|
break;
|
||||||
case BREAKDOWN_VEHICLE_MALFUNCTION:
|
case BREAKDOWN_VEHICLE_MALFUNCTION:
|
||||||
// Choose a random train
|
// Choose a random train
|
||||||
|
|
Loading…
Reference in New Issue