protected void OnNeedyDeactivation() { Dial1.Move(0); Dial2.Move(0); foreach (Nixie n in NumList) { n.SetValue(-1); } }
public override void RealFixedTick() { if (Active) { int t = (int)(GetComponent <KMNeedyModule>().GetNeedyTimeRemaining() + 0.8f); Dial1.Move(t / 10); Dial2.Move(t % 10); } if (InSpin) { Progress++; float angle; if (Progress >= GetSpinLimit()) { InSpin = false; angle = 180f; if (Active) { Response = Response * 10 + Target; ResponsePos++; if (ResponsePos == NUM_DIGITS) { Debug.Log("[Rotary Phone #" + thisLoggingID + "] Provided value: " + Response); Debug.Log("[Rotary Phone #" + thisLoggingID + "] Expected value: " + CurAnswer); Active = false; if (Response == CurAnswer) { GetComponent <KMNeedyModule>().HandlePass(); Sound.PlayGameSoundAtTransform(KMSoundOverride.SoundEffect.ButtonPress, gameObject.transform); } else { GetComponent <KMNeedyModule>().HandleStrike(); GetComponent <KMNeedyModule>().HandlePass(); CurAnswer = DisplayNumber; PhoneDelay = 50; } } } } else { angle = GetSpinPosition(); } PhoneRing.localEulerAngles = new Vector3(0, angle, 0); } if (PhoneDelay > 0) { PhoneDelay--; if (PhoneDelay == 0) { bool voice = false; if (HasFailed) { if (Random.Range(0, 3) == 0) { voice = true; } } HasFailed = true; if (voice) { string name = SoundNames[Random.Range(0, SoundNames.Length)]; Sound.PlaySoundAtTransform(name, gameObject.transform); } else { Sound.PlaySoundAtTransform("NoNumber", gameObject.transform); } } } }