diff --git a/src/engine/behavior_script.c b/src/engine/behavior_script.c index faefd977..259e5105 100644 --- a/src/engine/behavior_script.c +++ b/src/engine/behavior_script.c @@ -1287,7 +1287,7 @@ void cur_obj_update(void) { } // handle network area timer - if (gCurrentObject->areaTimerType != AREA_TIMER_TYPE_NONE) { + if (gCurrentObject->areaTimerType != AREA_TIMER_TYPE_NONE && !(gMenuMode != -1 && network_player_connected_count() == 1 && gActiveMods.entryCount == 0)) { // make sure the area is valid if (gNetworkPlayerLocal == NULL || !gNetworkPlayerLocal->currAreaSyncValid) { goto cur_obj_update_end; @@ -1437,7 +1437,7 @@ cur_obj_update_begin:; } // update network area timer - if (gCurrentObject->areaTimerType != AREA_TIMER_TYPE_NONE) { + if (gCurrentObject->areaTimerType != AREA_TIMER_TYPE_NONE && !(gMenuMode != -1 && network_player_connected_count() == 1 && gActiveMods.entryCount == 0)) { gCurrentObject->areaTimer++; if (gCurrentObject->areaTimer < gNetworkAreaTimer) { goto cur_obj_update_begin; diff --git a/src/game/level_update.c b/src/game/level_update.c index 52137833..40353cff 100644 --- a/src/game/level_update.c +++ b/src/game/level_update.c @@ -1667,7 +1667,10 @@ s32 update_level(void) { changeLevel = play_mode_normal(); break; case PLAY_MODE_PAUSED: - changeLevel = play_mode_normal(); + if (!(network_player_connected_count() == 1 && gActiveMods.entryCount == 0)) { + changeLevel = play_mode_normal(); + } + changeLevel = play_mode_paused(); break; case PLAY_MODE_CHANGE_AREA: diff --git a/src/pc/network/network.c b/src/pc/network/network.c index ae6cdcfc..d5c748ae 100644 --- a/src/pc/network/network.c +++ b/src/pc/network/network.c @@ -502,6 +502,7 @@ static void network_rehost_update(void) { djui_panel_do_host(true); } +extern s16 gMenuMode; static void network_update_area_timer(void) { bool brokenClock = false; #ifdef DEVELOPMENT @@ -522,6 +523,9 @@ static void network_update_area_timer(void) { //brokenClock = (skipClockCount > 0); #endif if (!brokenClock) { + if (gMenuMode != -1 && network_player_connected_count() == 1 && gActiveMods.entryCount == 0) { + gNetworkAreaTimerClock++; + } // update network area timer u32 desiredNAT = gNetworkAreaTimer + 1; gNetworkAreaTimer = (clock_elapsed_ticks() - gNetworkAreaTimerClock);