IEnumerator UnlightSquares()
    {
        yield return(new WaitForSeconds(1f));

        for (var i = 0; i < ModuleButtons.Length; i++)
        {
            ModuleButtons[i].GetComponent <Renderer>().material.color = squareColors[0];
        }

        pressedFlash = pressedSquares = 0;
        BoltButton.GetComponent <Renderer>().material.color = flashColors[0];
        checkingPass = false;
    }
    void OnFlashPress()
    {
        if (moduleSolved || pressedFlash == 1 || checkingPass)
        {
            return;
        }

        BombAudio.PlayGameSoundAtTransform(KMSoundOverride.SoundEffect.ButtonPress, transform);
        ModuleSelect.AddInteractionPunch(0.5f);

        if (pressedFlash == 2)
        {
            BombModule.HandleStrike();
            pressedSquares = 0;
        }
        else
        {
            squareTotal = squareAmount * currentStage;
            squareSequence.Clear();

            for (var i = 0; i < 3 + squareTotal; i++)
            {
                var checkSquare = 0;

                do
                {
                    checkSquare = Random.Range(0, ModuleButtons.Length);
                } while (squareSequence.Contains(checkSquare));

                squareSequence.Add(checkSquare);
            }

            Debug.LogFormat("[Flash Memory #{0}] Set of squares for stage {1} is: {2}", moduleId, currentStage + 1, squareSequence.Select(x => x.ToCoord(4)).Join(", "));
        }

        BombAudio.PlaySoundAtTransform("Snd_Reveal", transform);
        StartCoroutine(SetSequence());
        BoltButton.GetComponent <Renderer>().material.color = flashColors[1];
        pressedFlash = 1;
    }