public void CycleWeapons(Player Target) { var LoadedArmament = Armament.Where(x => x.Status == WeaponStatus.loaded && x.EffectiveDepths.Contains(Target.Depth) && x.Range.Min <DistanceToPlayer && x.Range.Max> DistanceToPlayer); foreach (var Armament in LoadedArmament) { double profile = Math.Max(AcousticalDetectionCalculation(this, Target), VisualDetectionCalculation(this, Target)); int damage = Armament.FireWeapon(profile); if (PlayerCanSee) { Program.CurrentLog.WriteToLog(String.Format("{0} has fired {1}!", UIName, Armament.UIName)); } else { Program.CurrentLog.WriteToLog(String.Format("Incoming {0} fire from unknown vessel!", Armament.Type.ToString().Replace('_', ' '))); } Armament.Status = WeaponStatus.reloading; Target.SetDamage(damage); } ReloadGuns(); }