IEnumerator LaunchExplodeDeath() { GetComponent <NavMeshAgent>().enabled = false; Rigidbody rb = GetComponent <Rigidbody>(); rb.useGravity = true; rb.isKinematic = false; rb.freezeRotation = false; rb.AddForce((Random.insideUnitSphere + (Vector3.up * 2)).normalized * 50000); rb.maxAngularVelocity = Mathf.Infinity; rb.angularVelocity = Random.insideUnitSphere * Random.Range(20, 80); yield return(new WaitForSeconds((FindObjectOfType <BaseOverseer>().allPartyDied ? 3 : 1))); if (deathEffect != null) { ParticleSystem[] AllInside = ((GameObject)Instantiate(deathEffect, transform.position, Quaternion.identity)).GetComponentsInChildren <ParticleSystem>(); BaseOverseer overseer = FindObjectOfType <BaseOverseer>(); if (overseer.allPartyDied && GetComponent <BaseEntity>() == overseer.leader) { foreach (ParticleSystem curr in AllInside) { curr.startLifetime *= 5; } } } Destroy(gameObject); }
IEnumerator GivenSecondChance() { BaseOverseer overseer = FindObjectOfType <BaseOverseer>(); GetComponent <NavMeshAgent>().enabled = true; overseer.AddToParty(this); NowInParty(); TakeDamage(1000, ElementType.Heal); transform.GetChild(1).GetComponent <Renderer>().enabled = true; Rigidbody rb = GetComponent <Rigidbody>(); rb.useGravity = false; rb.isKinematic = true; rb.freezeRotation = true; rb.angularDrag /= 10; hasDeathThrown = false; while (transform.up != Vector3.up) { transform.up = Vector3.Slerp(transform.up, Vector3.up, 4 * Time.deltaTime); yield return(null); } yield return(null); }
// Use this for initialization void Start() { my = GetComponentInParent <OsmiumChrysanthemum>(); player = FindObjectOfType <BaseOverseer>(); target = player.leader.transform; lineOfSight = GetComponentInChildren <LineRenderer>(); currWaitTime = maxWaitTime; eyeBase = transform.GetChild(0); laserEye = transform.GetChild(0).GetChild(0).GetChild(5).GetChild(0); enabled = false; }
void OnCollisionEnter(Collision coll) { BaseEntity collidedWith = coll.gameObject.GetComponent <BaseEntity>(); BaseOverseer overseer = FindObjectOfType <BaseOverseer>(); if (collidedWith == overseer.leader && hasDeathThrown) { StopAllCoroutines(); // REVIVE StartCoroutine(GivenSecondChance()); } }