You forgot the ClientDisconnect() condition. Might/maybe need g_Scheduler.SetTimeout() instead in case checkPlayersDead() returns true if the last player alive is counted as alive during the ClientDisconnect() hook. For you to try.
if (resetTimerStopped && survivalActive && checkPlayersDead()) {
@g_pThinkFunc = g_Scheduler.SetInterval("mapChanger", cvar_resetTime.GetInt());
}
return HOOK_CONTINUE;
}```