diff --git a/code/modules/events/event_dynamic.dm b/code/modules/events/event_dynamic.dm index fa0a6c6efc..7edf5b84cc 100644 --- a/code/modules/events/event_dynamic.dm +++ b/code/modules/events/event_dynamic.dm @@ -20,6 +20,8 @@ sleep(2400) */ +var/list/event_last_fired = list() + //Always triggers an event when called, dynamically chooses events based on job population /proc/spawn_dynamic_event() if(!config.allow_random_events) @@ -86,8 +88,14 @@ if(!sent_ninja_to_station && toggle_space_ninja) possibleEvents[/datum/event/space_ninja] = max(active_with_role["Security"], 5) + for(var/event_type in event_last_fired) if(possibleEvents[event_type]) + var/time_passed = world.time - event_last_fired[event_type] + var/weight_modifier = max(0, 60 * 60 - time_passed / 100) + + possibleEvents[event_type] = max(possibleEvents[event_type] - weight_modifier, 0) var/picked_event = pickweight(possibleEvents) + event_last_fired[picked_event] = world.time // Debug code below here, very useful for testing so don't delete please. var/debug_message = "Firing random event. " diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm index b2201c7c92..585cf6122a 100644 --- a/code/modules/events/event_manager.dm +++ b/code/modules/events/event_manager.dm @@ -2,8 +2,8 @@ var/list/allEvents = typesof(/datum/event) - /datum/event var/list/potentialRandomEvents = typesof(/datum/event) - /datum/event //var/list/potentialRandomEvents = typesof(/datum/event) - /datum/event - /datum/event/spider_infestation - /datum/event/alien_infestation -var/eventTimeLower = 10000 //15 minutes -var/eventTimeUpper = 25000 //30 minutes +var/eventTimeLower = 6000 //10 minutes +var/eventTimeUpper = 12000 //15 minutes var/scheduledEvent = null