private void CheckRange() { int position = unit.GetPosition().GetPositionIndex(); //Checks if we are standing in the right spot for the ability. if (!ability.requiredPosition[position]) { Disable(); image.sprite = ability.icon; return; } //Checks whether there's enemies within range for the attack. if (ability.canTargetOpponents) { int enemiesAvailable = 0; for (int i = 0; i < ability.attackRange.Length; i++) { bool canHit = ability.attackRange[i]; //If we can't hit anything in that spot, we don't even care to check for enemies there. if (!canHit) { continue; } if (CombatManager.instance.enemyPool[i].unit != null) { enemiesAvailable++; } } if (enemiesAvailable > 0) { Enable(); } else { Disable(); image.sprite = ability.icon; } } if (ability.canCastOnAllies || ability.canCastOnSelf) { Enable(); } }