void Shoot() //draw a ray out from the player and damage the enemy { RaycastHit hit; //if the ray hits something when firing in a straight line if (Physics.Raycast(barrelEnd.position, barrelEnd.forward, out hit) && animator.GetBool("Firing") == false) { //set the laser line to end whereever the laser hits laserLine.SetPosition(0, barrelEnd.position); laserLine.SetPosition(1, hit.point); animator.SetBool("Firing", true); laserLine.enabled = true; audioS.PlayOneShot(GetComponent <MultipleAudioClips>().clips[1]); if (hit.collider.gameObject.CompareTag("Enemy")) { EnemyAIMachine enemyHit = hit.collider.gameObject.GetComponent <EnemyAIMachine>(); Health enemyHP = hit.collider.gameObject.GetComponent <Health>(); int randCritChance = Random.Range(0, 100); int randHeavyHitChance = Random.Range(0, 100); if (randCritChance <= critChance) { int hitDamage = 2; if (randHeavyHitChance <= heavyHitChance) { hitDamage += heavyHitModifier; } enemyHP.HealthReduce(hitDamage); displayLog.RecieveLog(enemyHit.displayName + " takes " + hitDamage + " Damage, CRITICAL!!!!"); } else { int hitDamage = 1; if (randHeavyHitChance <= heavyHitChance) { hitDamage += heavyHitModifier; } enemyHP.HealthReduce(hitDamage); displayLog.RecieveLog(enemyHit.displayName + " takes " + hitDamage + " Damage"); } hit.collider.gameObject.GetComponent <AudioSource>().PlayOneShot(hit.collider.gameObject.GetComponent <MultipleAudioClips>().clips[0]); enemyHit.enemyObject = gameObject; enemyHit.canSeeEnemy = true; if (enemyHP.health <= 0) { gameManager.OnKill(enemyHit.gameObject); displayLog.RecieveLog(enemyHit.displayName + " was destroyed", Color.red); botStats.KillExpIncrease(hit.collider.gameObject); hit.collider.gameObject.SetActive(false); } } else if (hit.collider.gameObject.CompareTag("EnemyStructure")) { StructureInfo enemyHit = hit.collider.gameObject.GetComponent <StructureInfo>(); Health enemyHP = hit.collider.gameObject.GetComponent <Health>(); int randCritChance = Random.Range(0, 100); int randHeavyHitChance = Random.Range(0, 100); if (randCritChance <= critChance) { int hitDamage = 2; if (randHeavyHitChance <= heavyHitChance) { hitDamage += heavyHitModifier; } enemyHP.HealthReduce(hitDamage); displayLog.RecieveLog(enemyHit.displayName + " takes " + hitDamage + " Damage, CRITICAL!!!!"); } else { int hitDamage = 1; if (randHeavyHitChance <= heavyHitChance) { hitDamage += heavyHitModifier; } enemyHP.HealthReduce(hitDamage); displayLog.RecieveLog(enemyHit.displayName + " takes " + hitDamage + " Damage"); } hit.collider.gameObject.GetComponent <AudioSource>().PlayOneShot(hit.collider.gameObject.GetComponent <MultipleAudioClips>().clips[0]); if (enemyHP.health <= 0) { gameManager.OnKill(enemyHit.gameObject); displayLog.RecieveLog(enemyHit.displayName + " was destroyed", Color.red); botStats.KillExpIncrease(hit.collider.gameObject); hit.collider.gameObject.SetActive(false); } } } }