public WeaponController AttackFuntcion(WeaponController[] _weapons, HealthController _health, float _distance, float _time) { if (Time.time > _time) { List <WeaponController> inReach = new List <WeaponController> (); for (int i = 0; i < _weapons.Length; i++) { if (_weapons[i].GetReach() > _distance) { inReach.Add(_weapons [i]); } } List <WeaponController> canAfford = new List <WeaponController> (); foreach (WeaponController WC in inReach) { if (WC.GetManaCost() < _health.GetCurrentMana()) { canAfford.Add(WC); } } WeaponController selectedAttack = null; float highestCooldown = 0; foreach (WeaponController WC in canAfford) { if (WC.GetAttackCoolDown() > highestCooldown) { selectedAttack = WC; } } return(selectedAttack); } return(null); }