예제 #1
0
        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));
        }