IEnumerator FinalTrial() { //Phase 1: Attack Rift Head and dodge death bolt. Shoot(); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(1f))); StrafeLeft(); FireBolt(); GameObject bolt = Instantiate(deathBolt, riftHead.transform.position, riftHead.transform.rotation); bolt.GetComponent <Rigidbody>().velocity = Vector3.back * Constants.SpellStats.C_MagicMissileSpeed; yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(1f))); isRunning = false; yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(1f))); ResetPosition(); //Phase 2: Destroy Skeleton to deactivate shields. apprenticeAnim.Play("2Fire", -1, 0f); skeleton.SetActive(true); forceField.SetActive(true); isChasing = true; canShoot = true; yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(2.0f))); skeleton.SetActive(false); forceField.SetActive(false); canShoot = false; yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(1.5f))); Debug.Log("End of Instruction."); }
IEnumerator DestroyTheNecromancer() { //Phase 1: Attack retreating Necromancer. apprenticeAnim.Play("Run", -1, 0f); Shoot(); _bulletLifetime = 1f; yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(2f))); isRunning = false; canShoot = false; yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(0.5f))); necromancer.SetActive(false); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(0.5f))); //Phase 2: Necromancer Spawns Skeletons ResetPosition(); _bulletLifetime = 0.4f; StartCoroutine(NecromancerSummon()); apprenticeAnim.Play("3Fire", -1, 0f); //yield return StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(0.5f)); Shoot(); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(3f))); canShoot = false; yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(1f))); Debug.Log("End of Instruction."); }
IEnumerator CrystalHockey() { //Phase 1: Wind parry the puck into the goal. MoveToPuck(); anim1.Play("Wind Parry", -1, 0f); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(1.1f))); pushGem(); push1 = true; yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(0.5f))); GoalReached(); puck.transform.position = puckPosition; puck.transform.rotation = puckRotation; yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(1))); //Phase 2: Opponent Intercepts anim1.Play("Wind Parry", -1, 0f); apprentice1.transform.position = originalPos; puck.SetActive(true); windParry1.SetActive(false); apprentice2.SetActive(true); MoveToPuck(); StartCoroutine(EnemyInterception()); MoveToPuck(); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(1.1f))); pushGem(); }
IEnumerator NecromancerSummon() { necroAnim.Play("Summon", -1, 0f); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(0.2f))); Summon(); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(2.8f))); skeletons[0].SetActive(false); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(1.2f))); isChasing = false; }
IEnumerator EnemyInterception() { //yield return StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(0.5f)); Chase(); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(0.6f))); magicMissileRun = true; yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(0.8f))); magicMissile.SetActive(false); //Destroy(magicMissile, 0.8f); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(0.4f))); apprentince2Run = false; //anim2.SetTrigger("stop"); }
IEnumerator EnemyInterception() { Chase(); anim2.Play("Wind Parry", -1, 0f); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(1.5f))); windParry2.SetActive(true); apprentince2Run = false; push1 = false; push2 = true; yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(2))); puck.SetActive(false); Debug.Log("End of Instruction."); }
IEnumerator CaptureTheGem() { //Phase 1: Grab the Gem and take it to the goal. //yield return StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(0.5f)); MoveToGem(); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(0.8f))); GrabGem(); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(1))); GoalReached(); DropGem(); gem.SetActive(false); //apprentice1.GetComponent<PlayerController>().DropFlag(); gem.transform.position = gemPosition; yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(1))); //Phase 2: Opponenet Intercepts //anim1.Play("Run"); //animation["Run"].time = 0.0; anim1.Play("Run", -1, 0f); apprentice1.transform.position = originalPos; gem.SetActive(true); apprentice2.SetActive(true); magicMissile.SetActive(true); StartCoroutine(EnemyInterception()); //yield return StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(0.5f)); MoveToGem(); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(0.8f))); GrabGem(); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(0.5f))); DropGem(); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(0.5f))); GoalReached(); yield return(StartCoroutine(CoroutineUnscaledWait.WaitForSecondsUnscaled(1))); Debug.Log("End of Instruction."); }