Esempio n. 1
0
    void Attack3()
    {
        // Typically used for secondary projectile or grenade attack
        if (attack3SoundTime < Time.time && SFXAttack3)
        {
            SFX.PlayOneShot(SFXAttack3);
            attack3SoundTime = Time.time + timeBetweenProj2;
        }

        if (explodeOnAttack3)
        {
            ExplosionForce ef    = GetComponent <ExplosionForce>();
            DamageData     ddNPC = Const.SetNPCDamageData(index, Const.aiState.Attack3, gameObject);
            float          take  = Const.a.GetDamageTakeAmount(ddNPC);
            ddNPC.other  = gameObject;
            ddNPC.damage = take;
            //enemy.GetComponent<HealthManager>().TakeDamage(ddNPC); Handled by ExplodeInner
            if (ef != null)
            {
                ef.ExplodeInner(transform.position + explosionOffset, attack3Force, attack3Radius, ddNPC);
            }
            healthManager.ObjectDeath(SFXDeathClip);
            return;
        }
    }
Esempio n. 2
0
    public void Explode()
    {
        // Disable collision
        if (boxCol != null)
        {
            boxCol.enabled = false;
        }
        if (meshCol != null)
        {
            meshCol.enabled = false;
        }
        if (sphereCol != null)
        {
            sphereCol.enabled = false;
        }
        if (capCol != null)
        {
            capCol.enabled = false;
        }

        explosion = GetComponent <ExplosionForce>();
        if (explosion != null)
        {
            explosion.ExplodeOuter(transform.position);
        }
        if (explosion != null)
        {
            explosion.ExplodeInner(transform.position, nearforce, nearradius, null);
        }

        GameObject explosionEffect = Const.a.GetObjectFromPool(Const.PoolType.GrenadeFragExplosions);

        if (explosionEffect != null)
        {
            explosionEffect.SetActive(true);
            explosionEffect.transform.position = transform.position;
            // TODO: Do I need more than one temporary audio entity for this sort of thing?
            if (deathSound != null)
            {
                GameObject tempAud = GameObject.Find("TemporaryAudio");
                tempAud.transform.position = transform.position;
                AudioSource aS = tempAud.GetComponent <AudioSource>();
                if (aS != null)
                {
                    aS.PlayOneShot(deathSound);
                }
            }
            gameObject.SetActive(false);
        }

        //if (explosionEffect != null) Instantiate(explosion, transform.position, Quaternion.identity); //TODO: use pool
        //Destroy(this.gameObject); //TODO: use pool
    }
Esempio n. 3
0
    void ExplodeOnDeath()
    {
        ExplosionForce ef    = GetComponent <ExplosionForce> ();
        DamageData     ddNPC = Const.SetNPCDamageData(index, Const.aiState.Attack3, gameObject);
        float          take  = Const.a.GetDamageTakeAmount(ddNPC);

        ddNPC.other  = gameObject;
        ddNPC.damage = take;
        //enemy.GetComponent<HealthManager>().TakeDamage(ddNPC); Handled by ExplodeInner
        if (ef != null)
        {
            ef.ExplodeInner((transform.position + viewVerticalOffset) + explosionOffset, attack3Force, attack3Radius, ddNPC);
        }
        healthManager.ObjectDeath(SFXAttack1);
        GetComponent <MeshRenderer> ().enabled = false;
    }
Esempio n. 4
0
 void Dead()
 {
     nav.isStopped = true;         // Stop moving
     //anim.speed = 0f; // Stop animation
     ai_dead           = true;
     ai_dying          = false;
     rbody.isKinematic = true;
     currentState      = Const.aiState.Dead;
     firstSighting     = false;
     if (healthManager.gibOnDeath)
     {
         ExplosionForce ef    = GetComponent <ExplosionForce>();
         DamageData     ddNPC = Const.SetNPCDamageData(index, Const.aiState.Attack3, gameObject);
         float          take  = Const.a.GetDamageTakeAmount(ddNPC);
         ddNPC.other  = gameObject;
         ddNPC.damage = take;
         if (ef != null)
         {
             ef.ExplodeInner(transform.position + explosionOffset, attack3Force, attack3Radius, ddNPC);
         }
         healthManager.ObjectDeath(SFXDeathClip);
     }
 }