//Function used to manage damages taken by the shield
    public void takingDamages(EnnemyProjectile ennemyProjectile)
    {
        if (shieldPoints > 0)
        {
            animator.Play("Damaged");

            float finalDamage = ennemyProjectile.damage;

            //Calculate damages taken
            switch (ennemyProjectile.damageType)
            {
            case DamageType.Kinetic:
                finalDamage *= 0.7f;
                break;

            case DamageType.Laser:
                finalDamage *= 0.8f;
                break;

            case DamageType.Plasma:
                finalDamage *= 0.9f;
                break;

            case DamageType.Ion:
                finalDamage *= 3f;
                break;

            case DamageType.Explosive:
                finalDamage *= 1f;
                break;
            }

            if (overshieldActive && ennemyProjectile.damageType != DamageType.Ion && ennemyProjectile.projectileSize == ProjectileSize.Light) //Reduce damages of small projectiles (execpt ions)
            {
                finalDamage *= 0.5f;
            }

            //Apply damages
            shieldPoints -= finalDamage;
            playerStats.updateShieldIndicators();

            //Activate shield regeneration cooldown
            if (cooldownTimer > 0 && cooldownTimer < cooldown)
            {
                cooldownTimer += 0.5f;
            }
            else
            {
                cooldownTimer = cooldown;
            }
        }
        else if (shieldPoints <= 0)
        {
            shieldPoints  = 0;
            cooldownTimer = cooldown;
            StartCoroutine(ShieldDestruction());
            col.enabled = false;
        }
    }
Esempio n. 2
0
        /// <summary>
        /// Shoot a projectile
        /// </summary>
        protected override void Shoot()
        {
            if (TimeToShoot && RandomNumbers.Randint(0, 100) <= ShootPercentage)
            {
                base.Shoot();
                Projectile = new EnnemyProjectile(ProjectileCoords(), MissileImage);
            }

            TimeToShoot = false;
            Timer.Start();
        }
Esempio n. 3
0
    private void OnTriggerEnter2D(Collider2D collider)
    {
        if (collider.tag.Equals("Ennemy") && damage > 0)
        {
            Ennemy ennemyGO = collider.GetComponent <Ennemy>();
            dealDamages(ennemyGO);

            StartCoroutine(Destruction());
        }
        else if (collider.name.Equals("BulletDestroyer"))
        {
            StartCoroutine(Destruction());
        }
        else if (collider.tag.Equals("EnnemyProjectile") && isDestroyable)
        {
            EnnemyProjectile ennemyProjectileGO = collider.GetComponent <EnnemyProjectile>();
            health -= ennemyProjectileGO.damage;

            if (health <= 0)
            {
                StartCoroutine(Destruction());
            }
        }
    }
Esempio n. 4
0
    //Fonction qui gère les dégats subis par le vaisseau
    public void takingDamages(EnnemyProjectile ennemyProjectile)
    {
        //Add shield regeneration cooldown if the battleship taken damages
        hasTakenDamagesRecently = true;
        shield.cooldownTimer   += 0.5f;

        float finalDamage = ennemyProjectile.damage;

        if (platePoints > 0 && shield.shieldPoints <= 0)
        {
            //Calculate damages taken
            switch (ennemyProjectile.damageType)
            {
            case DamageType.Kinetic:
                finalDamage *= 1.3f;
                break;

            case DamageType.Laser:
                finalDamage *= 1f;
                break;

            case DamageType.Plasma:
                finalDamage *= 1.1f;
                break;

            case DamageType.Ion:
                finalDamage *= 0.5f;
                break;

            case DamageType.Explosive:
                finalDamage *= 1.5f;
                break;
            }

            platePoints -= finalDamage;
        }
        else if (platePoints <= 0 && shield.shieldPoints <= 0)
        {
            //Calculate damages taken
            switch (ennemyProjectile.damageType)
            {
            case DamageType.Kinetic:
                finalDamage *= 1f;
                break;

            case DamageType.Laser:
                finalDamage *= 1f;
                break;

            case DamageType.Plasma:
                finalDamage *= 1.3f;
                break;

            case DamageType.Ion:
                finalDamage *= 0.5f;
                break;

            case DamageType.Explosive:
                finalDamage *= 1f;
                break;
            }

            hullPoints -= finalDamage;
            playerStats.updateHullIndicators();

            animator.Play("Damaged");
        }
    }