IEnumerator DungeonFloor1Door() { EventManager.TriggerEvent("InCombat"); EventManager.TriggerEvent("StopMoving"); Vector3 BoyNewPos = new Vector3(DungeonDoorFloor1Boy.transform.position.x, boyPlayer.transform.position.y, DungeonDoorFloor1Boy.transform.position.z); Vector3 GirlNewPos = new Vector3(DungeonDoorFloor1Girl.transform.position.x, girlPlayer.transform.position.y, DungeonDoorFloor1Girl.transform.position.z); boyPlayer.GetComponent <NavMeshAgent>().SetDestination(DungeonDoorFloor1Boy.transform.position); girlPlayer.GetComponent <NavMeshAgent>().SetDestination(DungeonDoorFloor1Girl.transform.position); while (boyPlayer.transform.position != BoyNewPos && girlPlayer.transform.position != GirlNewPos) { yield return(null); } yield return(new WaitForSeconds(.5f)); boyPlayer.GetComponent <BetterPlayer_Movement>().SetCurTarget(this.gameObject); Debug.Log(currentHealth); yield return(new WaitUntil(() => currentHealth <= 0)); Debug.Log("It did work"); currentHealth = 0; if (_DestroyEffect) { ScreenFader.PlayLaserDevastation(); yield return(new WaitForSeconds(.5f)); GameObject sfx = Instantiate(_DestroyEffect, transform.position, Quaternion.identity); Destroy(sfx, 5f); } SpriteRenderer[] DoorSprite = Door.GetComponentsInChildren <SpriteRenderer>(); for (int i = 0; i < DoorSprite.Length; i++) { DoorSprite[i].enabled = false; } Destroy(Door); EventManager.TriggerEvent("NotInCombat"); }
private IEnumerator CastUltimateAttack() { StopAttacking = true; Ultimate = true; i = 2; m_warningCastTime = 0; _CastSpellGameobject.SetActive(true); _SpellCasttimer.enabled = true; _SpellCasttimer.text = System.Math.Round((float)(_TimeWarningForSpell[i]), 2).ToString(); m_warningCastTimeBool = true; UltimateGathering = Instantiate(_AttackAnimations[3], transform); Warning = Instantiate(_AttackWarningPrefabs[2], transform.position, Quaternion.identity); yield return(new WaitForSeconds(_TimeWarningForSpell[i] - 5f)); CameraShake cameraShake = GameObject.FindWithTag("CameraHolder").GetComponent <CameraShake>(); StartCoroutine(cameraShake.LaserShake(8f, .15f)); yield return(new WaitForSeconds(5f)); m_warningCastTimeBool = false; _SpellCasttimer.enabled = false; _CastSpellGameobject.SetActive(false); Destroy(UltimateGathering); UltimateAttackGameObject = Instantiate(_AttackAnimations[4], transform); //Start the Attack yield return(new WaitForSeconds(1f)); ScreenFader.PlayLaserDevastation(); yield return(new WaitForSeconds(1.5f)); foreach (Transform player in _Target) { MessageHandler msgHandler = player.GetComponent <MessageHandler>(); DamageData dmgData = new DamageData(); dmgData.damage = _AttackDamage[3]; if (msgHandler) { msgHandler.GiveMessage(MessageTypes.DAMAGED, this.gameObject, dmgData); GameObject go = player.GetComponent <HealthController>().Sprite; Canvas[] canvas = go.GetComponentsInChildren <Canvas>(); for (int i = 0; i < canvas.Length; i++) { if (canvas[i].GetComponentInChildren <DamageDisplayScript>()) { canvas[i].GetComponentInChildren <DamageDisplayScript>().GetDamageText(Color.red, _AttackDamage[3]); } } } } Destroy(UltimateAttackGameObject); Destroy(Warning); m_ultimateAttackTimer = 0; Ultimate = false; StopAttacking = false; }