public IEnumerator Destr (GameObject b, RaycastHit2D hit)
{
yield return new WaitForSeconds(Vector2.Distance(b.transform.position, hit.transform.position) / (ShootImpulse * 5));
Instantiate(Resources.Load("Walls_Particles") as GameObject, new Vector3(hit.point.x, hit.point.y, 12 + Random.Range(-1f, 1f)), new Quaternion(0, 0, 0, 0));
if (hit.collider.tag == "eviled" || hit.collider.tag == "NPC" || hit.collider.tag == "Player")
{
if (hit.collider.gameObject.GetComponent<HealStorage>() && !hit.collider.gameObject.GetComponent<HealStorage>().invincible)
{
if (hit.collider.gameObject.GetComponentInChildren<ChShieldRegen>())
hit.collider.gameObject.GetComponentInChildren<ChShieldRegen>().timer = 5;
if (hit.collider.gameObject.GetComponent<HealStorage>().shieldHeal > 0)
{
float Damage = ((Random.Range(StatsNum[0], StatsNum[1]) * damegeMultiplier) / shotsInBull);
hit.collider.gameObject.GetComponent<HealStorage>().shieldHeal -= Damage * Mathf.InverseLerp(distance, distance * 0.5f, hit.point.x - Fire_Bulls[0].transform.position.x);
GameObject sc = Instantiate(Resources.Load("DamageCloudShield") as GameObject, new Vector3(hit.point.x + Random.Range(-3, 3), hit.point.y + Random.Range(2, 6), 2), new Quaternion(0, 0, 0, 0));
sc.GetComponent<TextMesh>().text = Mathf.Round(Damage * Mathf.InverseLerp(distance, distance * 0.5f, hit.point.x - Fire_Bulls[0].transform.position.x)).ToString();
}
else
{
float Damage = ((Random.Range(StatsNum[0], StatsNum[1]) * damegeMultiplier) / shotsInBull);
hit.collider.gameObject.GetComponent<HealStorage>().heal -= Damage * Mathf.InverseLerp(distance, distance * 0.5f, hit.point.x - Fire_Bulls[0].transform.position.x);
GameObject sc = Instantiate(Resources.Load("DamageCloud") as GameObject, new Vector3(hit.point.x + Random.Range(-3, 3), hit.point.y + Random.Range(2, 6), 2), new Quaternion(0, 0, 0, 0));
sc.GetComponent<TextMesh>().text = Mathf.Round(Damage * Mathf.InverseLerp(distance, distance * 0.5f, hit.point.x - Fire_Bulls[0].transform.position.x)).ToString();
}
}
if (hit.collider.gameObject.GetComponent<HitZone>() && !hit.collider.gameObject.GetComponentInParent<HealStorage>().invincible && hit.collider.gameObject.GetComponentInParent<HealStorage>().shieldHeal <= 0)
{
if (hit.collider.gameObject.GetComponentInChildren<ChShieldRegen>())
hit.collider.gameObject.GetComponentInChildren<ChShieldRegen>().timer = 5;
float Damage = ((Random.Range(StatsNum[0], StatsNum[1]) * damegeMultiplier) / shotsInBull);
hit.collider.gameObject.GetComponentInParent<HealStorage>().heal -= Damage * Mathf.InverseLerp(distance, distance * 0.5f, hit.point.x - Fire_Bulls[0].transform.position.x) * hitDamageMultiplier;
GameObject sc = Instantiate(Resources.Load("DamageCloudCrit") as GameObject, new Vector3(hit.point.x + Random.Range(-3, 3), hit.point.y + Random.Range(2, 6), 2), new Quaternion(0, 0, 0, 0));
sc.GetComponent<TextMesh>().text = Mathf.Round(Damage * Mathf.InverseLerp(distance, distance * 0.5f, hit.point.x - Fire_Bulls[0].transform.position.x) * hitDamageMultiplier).ToString();
}
}
if (hit.collider.gameObject.GetComponentInParent<Rigidbody2D>())
{
Vector3 forwar = new Vector3(Fire_Bulls[0].transform.forward.x, Fire_Bulls[0].transform.forward.y, Fire_Bulls[0].transform.forward.z);
hit.collider.gameObject.GetComponentInParent<Rigidbody2D>().AddForce(forwar * EnemysImpulse * 10, ForceMode2D.Impulse);
}
if (hit.collider.gameObject.GetComponentInChildren<Rigidbody2D>())
{
Vector3 forwar = new Vector3(Fire_Bulls[0].transform.forward.x, Fire_Bulls[0].transform.forward.y, Fire_Bulls[0].transform.forward.z);
hit.collider.gameObject.GetComponentInChildren<Rigidbody2D>().AddForce(forwar * EnemysImpulse * 10, ForceMode2D.Impulse);
}
b.SetActive(false);
}