private void ProcessDistracted(bool isComplete = false) { // processes the distracted event // when is complete is true, it means that we should return the distracted unit string message = ""; if (isComplete) { var distractedCrew = Crew.FirstOrDefault(c => c.State == CrewState.Distracted); if (distractedCrew == null) { // sometimes there might be an special scenario where you can't distract a crew member message = "The distracted threat was discarded. "; _eventManager.Trigger("AppendMessage", new DefaultEvent(message)); return; } distractedCrew.State = CrewState.Returning; message = "A distracted crew member will be available on the next round. "; _eventManager.Trigger("AppendMessage", new DefaultEvent(message)); return; } // distract a crew mebmer, look in returning crew first CrewDie crew = null; if (ReturningCrewCount > 0) { crew = Crew.First(c => c.State == CrewState.Returning); } else if (AvailableCrewCount > 0) { crew = Crew.First(c => c.State == CrewState.Available); } else { message = "We have no returning or available crew to distract. "; _eventManager.Trigger("AppendMessage", new DefaultEvent(message)); return; } crew.State = CrewState.Distracted; message = "One crew member is distracted and cannot be used until you send two medical crew on a mission to deal with the distracted threat, or the threat die rolls a three or a four. "; _eventManager.Trigger("AppendMessage", new DefaultEvent(message)); }