Ejemplo n.º 1
0
    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);
                }
            }
        }
    }