IEnumerator Cutscene() { engine.Dialogue("The exit is too small", 1.0f); yield return(new WaitForSeconds(3.0f)); engine.Dialogue("One of us has to go first", 1.0f); yield return(new WaitForSeconds(3.0f)); engine.Dialogue2("Press Left if she goes.", 1.5f); yield return(new WaitForSeconds(0.5f)); engine.Dialogue("Press Right if he goes.", 1.5f); yield return(new WaitForSeconds(1.5f)); engine.PlayerGoFirst = true; while (true) { if (Input.GetKeyDown(KeyCode.LeftArrow)) { engine.PlayerGoFirst = false; break; } else if (Input.GetKeyDown(KeyCode.RightArrow)) { break; } yield return(null); } yield return(null); engine.Dialogue(); engine.Dialogue2(); yield return(new WaitForSeconds(1.0f)); player.isAlone = true; bool choice = engine.PlayerGoFirst; if (choice) { Vector3 pos = new Vector3(105f, 23.56365f, -0.1f); Female fem = Instantiate(_female_prefab, pos, Quaternion.identity) as Female; fem.gameObject.SetActive(true); tk2dSpriteAnimator anim = fem.GetComponent <tk2dSpriteAnimator>(); yield return(null); anim.Play("she_idle"); player.AutoMove(0, 0.3f); yield return(new WaitForSeconds(1.0f)); fem.climbing = true; anim.Play("she_climb"); yield return(new WaitForSeconds(1.0f)); cam.FadeDark(1.0f); yield return(new WaitForSeconds(1.0f)); player.AutoMove(0, 0); engine.Dialogue(); _isDone = true; } else { Vector3 pos = new Vector3(105f, 25f, 0.1f); Female fem = Instantiate(_female_prefab, pos, Quaternion.identity) as Female; fem.gameObject.SetActive(true); fem.climbing = true; engine.Dialogue2("Drat! My leg!", 1.0f); yield return(new WaitForSeconds(3.0f)); engine.Dialogue2("Sorry. I'm slowing you down.", 1.0f); yield return(new WaitForSeconds(1.0f)); engine.Dialogue("Everything's gonna be alright.", 1.0f); yield return(new WaitForSeconds(1.0f)); engine.Dialogue2(); yield return(new WaitForSeconds(1.0f)); engine.Dialogue(); boss.EndingPos(cam.transform.position.y); engine.endingBox.SetActive(true); yield return(new WaitForSeconds(2.0f)); engine.Dialogue("Wait, what?", 0.8f); engine.lastTarget.SetActive(true); AudioManager.Instance.playSound(Sfx.LOCK, engine.lastTarget.transform.position); cam.chasing = true; player.canControl = true; float lasttimer = 0; while (true) { lasttimer += Time.deltaTime; if (lasttimer > 5.0f) { engine.Dialogue(); engine.endingBox.SetActive(false); engine.lastTarget.SetActive(false); boss.EndingShot(engine.lastTarget.transform.position); fem.climbing = false; yield return(new WaitForSeconds(0.3f)); player.Kill(); tk2dSpriteAnimator anim = fem.GetComponent <tk2dSpriteAnimator>(); anim.Play("she_death"); yield return(new WaitForSeconds(1.0f)); cam.FadeDark(1.0f); yield return(new WaitForSeconds(3.0f)); engine.TryAgain = true; Destroy(fem.gameObject); cam.chasing = false; boss.force_stop = true; player.IsDead = false; player.freeze = true; player.transform.position = new Vector3(115.0f, 0.0f, 0.0f); player.Halt(); break; } if (engine.GoodEnding) { engine.Dialogue(); cam.Fade(Color.white, 0.1f); yield return(new WaitForSeconds(1.0f)); engine.endingBox.SetActive(false); engine.lastTarget.SetActive(false); Destroy(fem.gameObject); cam.chasing = false; player.canControl = false; boss.force_stop = true; break; } yield return(null); } _isDone = true; } yield return(null); }