static void BeginHeist(List <IRobber> team) { string enteredName = ""; Console.WriteLine($"Current number of operatives: {team.Count}"); Console.Write("Enter new team member name: "); enteredName = Console.ReadLine(); while (enteredName != "") { Console.Write(@"Choose a specialty: 1) Hacker (Disables alarms) 2) Muscle (Disables/murders guards) 3) Lock Specialist (Cracks the vault): "); int enteredType = int.Parse(Console.ReadLine()); Console.Write("Enter a skill level (1-100): "); int enteredSkill = int.Parse(Console.ReadLine()); Console.Write("Enter the percentage of cut: "); int enteredCut = int.Parse(Console.ReadLine()); if (enteredType == 1) { Hacker robber1 = new Hacker() { Name = enteredName, SkillLevel = enteredSkill, PercentageCut = enteredCut }; team.Add(robber1); } if (enteredType == 2) { Muscle robber1 = new Muscle() { Name = enteredName, SkillLevel = enteredSkill, PercentageCut = enteredCut }; team.Add(robber1); } if (enteredType == 3) { LockSpecialist robber1 = new LockSpecialist() { Name = enteredName, SkillLevel = enteredSkill, PercentageCut = enteredCut }; team.Add(robber1); } foreach (IRobber criminal in team) { Console.WriteLine(criminal.Name); } Console.WriteLine($"Current number of operatives: {team.Count}"); Console.Write("Enter new team member name: "); enteredName = Console.ReadLine(); } Random r = new Random(); int generatedAlarmScore = r.Next(0, 101); int generatedVaultScore = r.Next(0, 101); int generatedSecurityGuardScore = r.Next(0, 101); int generatedCashOnHand = r.Next(50000, 1000001); Bank suntrust = new Bank() { AlarmScore = generatedAlarmScore, VaultScore = generatedVaultScore, SecurityGuardScore = generatedSecurityGuardScore, CashOnHand = generatedCashOnHand }; Console.WriteLine($"Bank Cash on Hand: {suntrust.CashOnHand}"); List <Scores> bankScores = new List <Scores>() { new Scores() { ScoreType = "Alarm Score", ScoreValue = generatedAlarmScore }, new Scores() { ScoreType = "Vault Score", ScoreValue = generatedVaultScore }, new Scores() { ScoreType = "Security Guard Score", ScoreValue = generatedSecurityGuardScore } }; List <Scores> ScoreList = bankScores.OrderByDescending(bankScore => bankScore.ScoreValue).ToList(); Console.WriteLine($"The strongest point is the {ScoreList.First().ScoreType} and the weakest point is the {ScoreList.Last().ScoreType}"); foreach (IRobber criminal in team) { Console.Write(team.IndexOf(criminal)); Console.Write($". {criminal.Name}"); Console.Write($": {criminal.Specialty}"); Console.Write($" has a skill level of {criminal.SkillLevel}"); Console.Write($", and a {criminal.PercentageCut}% cut."); Console.WriteLine(""); } List <IRobber> crew = new List <IRobber>(); int cutTotal = 100; int foreverZero = 0; while (foreverZero == 0) { Console.Write("Enter Team Member Number: "); string chosenCriminal = Console.ReadLine(); if (chosenCriminal == "") { break; } int criminalIndex = Int32.Parse(chosenCriminal); crew.Add(team[criminalIndex]); cutTotal = cutTotal - team[criminalIndex].PercentageCut; Console.WriteLine($"Cut Remaining: {cutTotal}"); team.RemoveAt(criminalIndex); foreach (IRobber criminal in team) { if (criminal.PercentageCut <= cutTotal) { Console.Write(team.IndexOf(criminal)); Console.Write($". {criminal.Name}"); Console.Write($": {criminal.Specialty}"); Console.Write($" has a skill level of {criminal.SkillLevel}"); Console.Write($", and a {criminal.PercentageCut}% cut."); Console.WriteLine(""); } } } foreach (IRobber member in crew) { member.PerformSkill(suntrust); } if (suntrust.IsSecure) { Console.WriteLine("Failure. You have brought shame on yourself and your family!"); } else { Console.WriteLine("Success! You robbed a bank, good job loser."); foreach (IRobber member in crew) { Console.WriteLine($"{member.Name} gets ${Convert.ToDouble(suntrust.CashOnHand) * (Convert.ToDouble(member.PercentageCut) / 100)}"); } Console.WriteLine($"You Get ${Convert.ToDouble(suntrust.CashOnHand) * (Convert.ToDouble(cutTotal) / 100)}"); } }