protected override void BasicDamage() { //Debug.Log(attackTimer); bool attacked = false; if (!attacked) { for (int curITarget = 0; curITarget < inactiveTargets.Count; curITarget++) { if (inactiveTargets[curITarget] != null) { float dis = Mathf.Abs(inactiveTargets[curITarget].transform.position.x - transform.position.x); bool faced = (transform.localScale.x * (inactiveTargets[curITarget].transform.position.x - transform.position.x)) > 0; if ((dis < attackScope) && (inactiveTargets[curITarget].curHealth > 0f) && faced) { // Deal with object targets firstly inactiveTargets[curITarget].TakeDamage(this.gameObject, attackDamage); isAttacking = true; attacked = true; break; } } } } if (!attacked) { float minDisMinion = float.PositiveInfinity; float minDisChamp = float.PositiveInfinity; MinionController targetMinion = null; ChampionController targetChamp = null; for (int curATarget = 0; curATarget < activeTargets.Count; curATarget++) { if (activeTargets[curATarget] != null) { float dis = Vector3.Distance(transform.position, activeTargets[curATarget].transform.position); bool faced = (transform.localScale.x * (activeTargets[curATarget].transform.position.x - transform.position.x)) > 0; if ((dis < attackScope) && (activeTargets[curATarget].curHealth > 0f)) { if (!faced) { Vector3 tempScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z); transform.localScale = tempScale; } if (activeTargets[curATarget] is MinionController) { if (dis < minDisMinion) { minDisMinion = dis; targetMinion = (MinionController)activeTargets[curATarget]; } } else if (activeTargets[curATarget] is ChampionController) { if (dis < minDisChamp) { minDisChamp = dis; targetChamp = (ChampionController)activeTargets[curATarget]; } } } } } // Deal with minion targets secondly if (targetMinion != null) { targetMinion.TakeDamage(this.gameObject, attackDamage); isAttacking = true; attacked = true; } // Finally deal with champion targets else if (targetChamp != null) { targetChamp.TakeDamage(this.gameObject, attackDamage); isAttacking = true; attacked = true; } } if (!attacked) { //Debug.Log("End of attacking"); isAttacking = false; } // reset the timer attackTimer = 0f; }