public void Destroy() { if (buildHealth != null) { buildHealth.SuddenDeath(); } else { AudioManager.instance.Play("Error"); } Cancel(); }
private void Explosion() { Vector3 center = agent.position; float effectAreaRadius = slime.areaEffectRadius; float attackDamage = slime.attackDamage; List <Transform> enemyTeam = gameManager.GetEnemies(transform.root) .Where(x => DistanceCalculate(center, x.position) <= effectAreaRadius * effectAreaRadius).ToList(); for (int i = 0; i < enemyTeam.Count; i++) { float distanceFromCentre = DistanceCalculate(enemyTeam[i].position, center); //explosion constant(higher = lower damage, lower = higher damage received) float dmg = attackDamage - distanceFromCentre * 0.15f; //Debug.Log("Distance: " + distanceFromCentre + " Damage: " + areaDamage); if (dmg < 0) { continue; //if the damage is lower than 0, just skip it } enemyTeam[i].root.GetComponent <SlimeHealth>().TakeDamage(dmg); } health.SuddenDeath(); }
public void Action() { if (coolDown <= 0f && health.currentHealth > 0) { if (slime.isMeleeAttack) { MeleeAttack(slime.attackDamage); if (slime.isInvisible) { GetComponent <ShadowAppear>().Appear(); } } else if (slime.isRangedAttack) { photonView.RPC("RangedAttack", PhotonTargets.All, slime.attackDamage); } else if (slime.isHealing) { Healing(slime.healPercentage * tarHealth.startHealth); if (tarHealth.currentHealth / tarHealth.startHealth > 0.9) { movement.FindTheTargetAgain(); } } else if (slime.isAreaEffectHealing) { AreaEffectHealing(slime.healingPoint, slime.areaEffectRadius, target.position); if (tarHealth.currentHealth / tarHealth.startHealth > 0.9) { movement.FindTheTargetAgain(); } } else if (slime.isAreaEffectDamage) { AreaEffectDamage(slime.attackDamage, slime.areaEffectRadius, target.position, true); } else if (slime.isExplosion) { AreaEffectDamage(slime.attackDamage, slime.areaEffectRadius, agent.position, true); /* Explosion Effect */ health.SuddenDeath(); } else if (slime.isMagicalAreaEffectDamage) { /* Cast time delay */ if (castTime <= 0f) { AreaEffectDamage(slime.attackDamage, slime.areaEffectRadius, target.position, false); castTime = slime.castTime; } else { castTime -= Time.deltaTime; return; } } coolDown = slime.actionCoolDown; } else { coolDown -= Time.deltaTime; } }