} // END - Fixed Update.

    // DOES NOT INCLUDE INITIAL DAMAGE WHEN APPLYING PLASMA DAMAGE!
    void PlasmaDamageOverTime(){
        Collider[] go_ObjectsHit = Physics.OverlapSphere(this.transform.position, v_PlasmaExplosionRadius);
        foreach (Collider objectIndex in go_ObjectsHit){
            CS_DamageModule v_ObjectDamageModule = objectIndex.GetComponent<CS_DamageModule>();
            if (v_ObjectDamageModule != null) { v_ObjectDamageModule.ApplyPlasmaDamage(0, v_PlasmaExplosionSubDamage * Time.deltaTime, (v_PlasmaExplosionEffectDuration * 0.1f) * Time.deltaTime); }
        } // END - ForEach loop.
    } // END - Explosion.
Esempio n. 2
0
    void OnCollisionEnter(Collision p_HitObject){
        // Apply Kinetic damage to hit objects:
        if (v_ApplyKinetic) {
            CS_DamageModule v_DamageModule = p_HitObject.collider.GetComponent<CS_DamageModule>();
            if (v_DamageModule != null && v_ApplyKinetic) { v_DamageModule.ApplyKineticDamage(v_KineticDamage); }
            if (v_KineticShockwave)
            {
                Collider[] v_ObjectsHit = Physics.OverlapSphere(transform.localPosition, v_KineticShockwaveRadius);
                for (int objectHitIndex = 0; objectHitIndex > v_ObjectsHit.Length; objectHitIndex++)
                {
                    CS_DamageModule v_ShockWaveHitDamageModule = v_ObjectsHit[objectHitIndex].gameObject.GetComponent<CS_DamageModule>();
                    if (v_ShockWaveHitDamageModule != null) { v_ShockWaveHitDamageModule.ApplyKineticDamage(v_KineticDamage); }
                }// END - Kinetic shockwave for loop.
            }
        } // END - Apply Kinetic.

        if (v_AllowBounce) { // Bounce.
            if (v_BouncesAllowed <= 0) { // Check remaining bounce count: no more bounces.
                ShellExplode();
            } else {
                v_BouncesAllowed = v_BouncesAllowed - 1;
                v_ExplosionDamage = v_ExplosionDamage - (v_ExplosionDamage * v_EfficiencyDeduction);
                v_ExplosionRadius = v_ExplosionRadius - (v_ExplosionRadius * v_EfficiencyDeduction);
            } // END - Bounce
        } else { // END - If Allow Bounce / Start: Shell Explode on collision.
            ShellExplode();
        }
    } // END - OnCollisionEnter.
Esempio n. 3
0
    //

    // Use this for initialization
    void Start()
    {
        if (go_ObjectHealthToUse == null)
        {
            go_ObjectHealthToUse = gameObject;
        }

        v_DamageModule = go_ObjectHealthToUse.GetComponent <CS_DamageModule>();
    } // END - Start
    //

    // Use this for initialization
    void Start()
    {
        // DEBUG ERROR:  Inform if the script is placed incorrectly.
        if (go_ObjectHoldingEngine == gameObject)
        {
            Debug.LogError("BRIDGE PLACED ON OBJECT HOLDING MAIN SCRIPT!  Move bridge to the gameobject representing the physical engine!");
        }

        else
        {
            v_PhysicalEngineDamageModule = gameObject.GetComponent <CS_DamageModule>();
            v_VehicleEngine = go_ObjectHoldingEngine.GetComponent <CS_VehicleEngine>();
        } // END - If correct script placement is true.
    }     // END - Start
Esempio n. 5
0
    } // END - Update.

    void Explosion(){
        // Generate a sphere and collect all objects within it:
        Collider[] go_ObjectsHit = Physics.OverlapSphere(this.transform.position, v_ExplosionRadius);

        // Run for loop to recursively effect objects:
        foreach( Collider objectIndex in go_ObjectsHit) {
            CS_DamageModule v_ObjectDamageModule = objectIndex.GetComponent<CS_DamageModule>();
            
            // Apply explosion force if rigidbody is not null:
            Rigidbody v_ObjectRigidbody = objectIndex.GetComponent<Rigidbody>();
            if (v_ObjectRigidbody != null) { v_ObjectRigidbody.AddExplosionForce(v_ExplosionForce, transform.position, v_ExplosionRadius, 0, ForceMode.Impulse); }

            // Apply Explosion Damage:
            if(v_ObjectDamageModule != null && v_ExplosionDamage > 0) { v_ObjectDamageModule.ApplyExplosionDamage(v_ExplosionDamage); }
        } // END - ForEach loop.
    } // END - Explosion.
    // END - Variables.


    // Use this for initialization
    void Start(){
        v_ParticleEffect = GetComponent<ParticleSystem>();
        if (!v_DestroyOnNoParticles) { Destroy(gameObject, v_Lifetime); } // If not using emitter life, use lifetime value.


        // Generate a sphere and collect all objects within it:
        Collider[] go_ObjectsHit = Physics.OverlapSphere(this.transform.position, v_PlasmaExplosionRadius);
        // Run for loop to recursively effect objects:
        foreach (Collider objectIndex in go_ObjectsHit){
        // Apply Plasma Damage:
            CS_DamageModule v_ObjectDamageModule = objectIndex.GetComponent<CS_DamageModule>();
            if (v_ObjectDamageModule != null) { v_ObjectDamageModule.ApplyPlasmaDamage(v_PlasmaExplosionDamage, v_PlasmaExplosionSubDamage, v_PlasmaExplosionEffectDuration); }
        } // END - ForEach loop.


    } // END - Start
Esempio n. 7
0
    } // END - Tracking.


    // ------------------------------------------------------------------------------------------------------

    private void OnCollisionEnter(Collision p_Collision){
        CS_DamageModule v_HitObjectDamageModule = p_Collision.gameObject.GetComponent<CS_DamageModule>();
        // Apply kinetic damage immediately:
        if(v_HitObjectDamageModule != null && v_ApplyKinetic) { v_HitObjectDamageModule.ApplyKineticDamage(v_KineticDamage); }
        if (v_KineticShockwave) { 
            Collider[] v_ObjectsHit = Physics.OverlapSphere(transform.localPosition, v_KineticShockwaveRadius);
                for(int objectHitIndex = 0; objectHitIndex > v_ObjectsHit.Length; objectHitIndex++) {
                    CS_DamageModule v_ShockWaveHitDamageModule = v_ObjectsHit[objectHitIndex].gameObject.GetComponent<CS_DamageModule>();
                if(v_ShockWaveHitDamageModule != null) { v_ShockWaveHitDamageModule.ApplyKineticDamage(v_KineticDamage); }
                }// END - Kinetic shockwave for loop.
        }

        // Apply Explosion (Instantiate).
        if (v_ApplyExplosion == true) { CreateStandardExplosion(); }

        // Apply Plasma Damage (Instantiate).
        if (v_ApplyPlasma) { CreatePlasmaExplosion(); }

        Destroy(gameObject);
    } // END - On collision Enter.