diff --git a/src/time_system.nvgt b/src/time_system.nvgt index 2825c86..7235668 100644 --- a/src/time_system.nvgt +++ b/src/time_system.nvgt @@ -354,6 +354,18 @@ int get_random_invasion_hour(int min_hour) { return random(min_hour, 11); } +bool is_night_hour(int hour) { + return hour < 6 || hour >= 19; +} + +int get_random_zombie_swarm_hour(int min_hour) { + if (!is_night_hour(min_hour)) return -1; + if (min_hour >= 19) { + return random(min_hour, 23); + } + return random(min_hour, 5); +} + void schedule_invasion() { if (invasion_scheduled_hour != -1) return; int hour = get_random_invasion_hour(current_hour); @@ -432,6 +444,10 @@ void end_zombie_swarm() { void check_zombie_swarm_status() { if (!zombie_swarm_active) return; + if (!is_night_hour(current_hour)) { + end_zombie_swarm(); + return; + } int hours_elapsed = current_hour - zombie_swarm_start_hour; if (hours_elapsed < 0) { hours_elapsed += 24; @@ -443,7 +459,7 @@ void check_zombie_swarm_status() { void schedule_zombie_swarm() { if (zombie_swarm_scheduled_hour != -1) return; - int hour = get_random_invasion_hour(current_hour); + int hour = get_random_zombie_swarm_hour(current_hour); if (hour == -1) return; zombie_swarm_scheduled_hour = hour; } @@ -451,12 +467,14 @@ void schedule_zombie_swarm() { void check_scheduled_zombie_swarm() { if (zombie_swarm_active) return; if (zombie_swarm_scheduled_hour != -1) { + if (!is_night_hour(zombie_swarm_scheduled_hour) || !is_night_hour(current_hour)) { + zombie_swarm_scheduled_hour = -1; + return; + } if (current_hour == zombie_swarm_scheduled_hour) { zombie_swarm_scheduled_hour = -1; zombie_swarm_triggered_today = true; start_zombie_swarm(); - } else if (current_hour > 11) { - zombie_swarm_scheduled_hour = -1; } return; } @@ -466,7 +484,7 @@ void check_scheduled_zombie_swarm() { void attempt_daily_zombie_swarm() { if (!can_roll_zombie_swarm_today()) return; if (zombie_swarm_roll_done_today || zombie_swarm_triggered_today || zombie_swarm_active) return; - if (current_hour < 6) return; + if (!is_night_hour(current_hour)) return; zombie_swarm_roll_done_today = true; int chance = get_zombie_swarm_chance_for_day();