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(); } }
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); }
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)); }