Implemented a system to avoid the same event happening too often.

Also bumped event frequency, this shouldn't be as bad with the same event not repeating itself that often.
This commit is contained in:
cib
2013-05-26 00:12:59 +02:00
parent cc020ebeba
commit a764c226f8
2 changed files with 10 additions and 2 deletions

View File

@@ -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. "

View File

@@ -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