diff --git a/src/openrct2/peep/peep.c b/src/openrct2/peep/peep.c index 99b36b2696..672b1c8685 100644 --- a/src/openrct2/peep/peep.c +++ b/src/openrct2/peep/peep.c @@ -6945,7 +6945,7 @@ void peep_update_crowd_noise() return; viewport = g_music_tracking_viewport; - if (viewport == (rct_viewport*)-1) + if (viewport == NULL || viewport == (rct_viewport*)-1) return; // Count the number of peeps visible diff --git a/src/openrct2/rct2.c b/src/openrct2/rct2.c index 4819822e9f..79d02b3ab7 100644 --- a/src/openrct2/rct2.c +++ b/src/openrct2/rct2.c @@ -329,6 +329,7 @@ bool rct2_open_file(const char *path) { char *extension = strrchr(path, '.'); if (extension == NULL) { + title_load(); return false; } extension++; @@ -338,6 +339,14 @@ bool rct2_open_file(const char *path) if (ParkLoadResult_GetError(result) == PARK_LOAD_ERROR_OK) { ParkLoadResult_Delete(result); gFirstTimeSaving = false; + if (network_get_mode() == NETWORK_MODE_CLIENT) { + network_close(); + } + game_load_init(); + if (network_get_mode() == NETWORK_MODE_SERVER) { + network_send_map(); + } + peep_update_names(gConfigGeneral.show_real_names_of_guests); return true; } else { @@ -384,7 +393,7 @@ bool rct2_open_file(const char *path) return false; } } - + title_load(); return false; } diff --git a/src/openrct2/ride/vehicle.c b/src/openrct2/ride/vehicle.c index bff69a4b1a..06006c1b4a 100644 --- a/src/openrct2/ride/vehicle.c +++ b/src/openrct2/ride/vehicle.c @@ -802,7 +802,7 @@ void vehicle_sounds_update() } } g_music_tracking_viewport = viewport; - if (viewport != (rct_viewport*)-1) { + if (viewport != NULL && viewport != (rct_viewport*)-1) { if (window) { gWindowAudioExclusive = window; gVolumeAdjustZoom = 0; diff --git a/src/openrct2/world/sprite.c b/src/openrct2/world/sprite.c index e313a71106..29bdb90398 100644 --- a/src/openrct2/world/sprite.c +++ b/src/openrct2/world/sprite.c @@ -561,6 +561,9 @@ void sprite_move(sint16 x, sint16 y, sint16 z, rct_sprite *sprite) rct_sprite *sprite2 = get_sprite(*spriteIndex); while (sprite != sprite2) { spriteIndex = &sprite2->unknown.next_in_quadrant; + if (*spriteIndex == SPRITE_INDEX_NULL) { + break; + } sprite2 = get_sprite(*spriteIndex); } }