//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; } }
/// <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(); }
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()); } } }
//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"); } }