//events public void DecideOnRandomEnvrionmentalEvent(bool isDay) { if ((isDay && dayEvent != null) || (!isDay && nightEvent != null)) //means something else already set an event for that period { return; } float dieRoll = Random.Range(0.0f, 1.0f); string[] eventsList = isDay? EventsLists.environmentalEventsDay : EventsLists.environmentalEventsNight; if (dieRoll < simParam.randomEnvironmentalEventProbability && eventsList.Length > 0) { int id = Random.Range(0, eventsList.Length); GameObject eventHolder = new GameObject("event_" + id.ToString()); eventHolder.transform.position = Vector3.zero; eventHolder.transform.SetParent(this.transform); eventHolder.name += isDay? "_day" : "_night"; ScenarioEvent newEvent = (ScenarioEvent)eventHolder.AddComponent(System.Type.GetType(eventsList[id])); if (newEvent.CheckRequirement()) { AddScenarioEvent(newEvent, isDay); } else { Destroy(eventHolder); } } }