Ejemplo n.º 1
0
        public void ActivateThreats()
        {
            if (InternalThreats.Count < 1 && ExternalThreats.Count < 1)
            {
                return;
            }


            ThreatDie threatDie = new ThreatDie();
            string    message   = $"Rolling the threat die. {SoundFx.Dice}The result is {threatDie.Value}. ";

            _eventManager.Trigger("AppendMessage", new DefaultEvent(message));
            var threatsToActivate = InternalThreats.Where(t => !t.IsDisabled && t.ActivationList.Contains(threatDie.Value)).ToList <Threat>();

            threatsToActivate.AddRange(ExternalThreats.Where(t => !t.IsDisabled && t.ActivationList.Contains(threatDie.Value)).OrderByDescending(t => t.Health).ToList <Threat>());


            // if no threats, check if we have mercenary
            if (threatsToActivate.Count < 1)
            {
                var mercenary = ExternalThreats.FirstOrDefault(t => t is MercenaryThreat && !t.IsDisabled);
                if (mercenary != null)
                {
                    threatsToActivate.Add(mercenary);
                }
            }
            // check if Scout needs to be added to the list
            if (threatsToActivate.Count > 0)
            {
                var scout = ExternalThreats.FirstOrDefault(t => t is ScoutingShipThreat && !t.IsDisabled);
                if (scout != null)
                {
                    threatsToActivate.Add(scout);
                }
            }


            if (threatsToActivate.Count < 1)
            {
                message = "No threats were activated on this roll. ";
                _eventManager.Trigger("AppendMessage", new DefaultEvent(message));
            }

            foreach (var item in threatsToActivate)
            {
                item.Activate(_eventManager);
            }

            // if cloaked threats activated, we run this method again
            if (_rollThreatDieAgain)
            {
                _rollThreatDieAgain = false;
                ActivateThreats();
            }
        }
Ejemplo n.º 2
0
        public Threat GetActiveThreat(string id)
        {
            Threat threat = ExternalThreats.FirstOrDefault(t => t.Id == id) as Threat;

            if (threat == null)
            {
                // no active external threat with that id, let's check internal threats
                threat = InternalThreats.FirstOrDefault(t => t.Id == id) as Threat;
            }
            return(threat);
        }
Ejemplo n.º 3
0
        public void RemoveCrewFromMission(RemoveCrewFromMissionEvent e)
        {
            // search external threats first
            var threat = (Threat)ExternalThreats.FirstOrDefault(t => t.Name == e.ThreatName);

            if (threat == null)
            {
                threat = InternalThreats.FirstOrDefault(t => t.Name == e.ThreatName);
            }

            threat.AwayMissions.First(a => a.IsAssigned && a.Type == e.Type).IsAssigned = false;
            string message = $"{e.Type} crew was removed from the {e.ThreatName} mission. ";

            _eventManager.Trigger("AppendMessage", new DefaultEvent(message));
        }