static Disconnect RandomDisconnect() { switch (Random.Range(0, 3)) { case 0: return(Spasm.Random()); case 1: return(Slowdown.Random()); case 2: return(Delay.Random()); } throw new Exception(); }
void AddDisconnects() { //glitches only start when time runs out if (Astronaut.OxygenTime > 0) { return; } //only allow 3 at once if (disconnects.Count > 2) { return; } //glitch probability linearly scaled to ~100% at 240 seconds var glitchChance = (-Astronaut.OxygenTime / 240f) * Time.deltaTime; if (Random.Range(0f, 1f) > glitchChance) { return; } Disconnect d; if (disconnects.Any(a => !(a is Spasm))) { d = Spasm.Random(); } else { d = RandomDisconnect(); } AudioManager.PlayScream(Random.Range(0, 6)); Debug.Log(d); disconnects.Add(d); }