diff --git a/code/modules/events/false_alarm.dm b/code/modules/events/false_alarm.dm index 3fba86ca377..7441766a83f 100644 --- a/code/modules/events/false_alarm.dm +++ b/code/modules/events/false_alarm.dm @@ -4,25 +4,18 @@ weight = 20 max_occurrences = 5 +/datum/round_event_control/canSpawnEvent(players_amt, gamemode) + return ..() && length(gather_false_events()) + /datum/round_event/falsealarm announceWhen = 0 endWhen = 1 /datum/round_event/falsealarm/announce() - var/list/events_list = list() - var/players_amt = get_active_player_count(alive_check = 1, afk_check = 1, human_check = 1) var/gamemode = ticker.mode.config_tag - for(var/datum/round_event_control/E in SSevent.control) - if(!E.canSpawnEvent(players_amt, gamemode)) - continue - - var/datum/round_event/event = E.typepath - if(initial(event.announceWhen) <= 0) - continue - events_list += E - + var/events_list = gather_false_events(players_amt, gamemode) var/datum/round_event_control/event_control = pick(events_list) if(event_control) var/datum/round_event/Event = new event_control.typepath() @@ -30,4 +23,13 @@ Event.kill() //do not process this event - no starts, no ticks, no ends Event.announce() //just announce it like it's happening +/proc/gather_false_events(players_amt, gamemode) + . = list() + for(var/datum/round_event_control/E in SSevent.control) + if(!E.canSpawnEvent(players_amt, gamemode)) + continue + var/datum/round_event/event = E.typepath + if(initial(event.announceWhen) <= 0) + continue + . += E