public override void OnEnter() { AmbitionApp.Game.Activity = ActivityType.Evening; IncidentModel story = AmbitionApp.Story; GossipModel gossip = AmbitionApp.Gossip; IncidentVO[] incidents; IncidentVO incident; if (gossip.GossipActivity > 0 && Util.RNG.Generate(100) < gossip.ReproachChance[gossip.GossipActivity - 1]) { incidents = AmbitionApp.Story.GetIncidents(IncidentType.Caught); incident = TakeRandom(incidents); if (incident != null) { incident.Date = AmbitionApp.Calendar.Today.AddDays(1); AmbitionApp.SendMessage(CalendarMessages.SCHEDULE, incident); } } gossip.GossipActivity = 0; if (AmbitionApp.Game.Perilous) { incidents = story.GetIncidents(IncidentType.Peril); incident = TakeRandom(incidents); if (incident != null) { incident.Date = AmbitionApp.Calendar.Today; AmbitionApp.SendMessage(CalendarMessages.SCHEDULE, incident); } } AmbitionApp.Game.Perilous = false; }
public override void OnEnter() { PartyModel model = AmbitionApp.GetModel <PartyModel>(); IncidentVO[] incidents = new IncidentVO[model.NumRooms]; IncidentModel story = AmbitionApp.Story; if (model.Incidents != null) { incidents = new IncidentVO[model.NumRooms]; for (int i = model.NumRooms - 1; i >= 0; --i) { incidents[i] = story.GetIncident(model.Incidents[i]); } } else { HashSet <string> characters = new HashSet <string>(); if (model.RequiredIncident != null) { int index = RNG.Generate(model.NumRooms); incidents[index] = story.GetIncident(model.RequiredIncident); } else { List <IncidentVO> result = new List <IncidentVO>(); IncidentVO incident; if (model.Party.SupplementalIncidents != null) { string[] shuffle = RNG.Shuffle(model.Party.SupplementalIncidents); foreach (string incidentID in shuffle) { incident = story.GetIncident(incidentID); if (result.Count < model.NumRooms) { if (FindCharacters(incident, characters)) { result.Add(incident); } } } } if (result.Count < model.NumRooms) { incidents = story.GetIncidents(IncidentType.Party); incidents = RNG.Shuffle(incidents); foreach (IncidentVO rand in incidents) { if (AmbitionApp.CheckIncidentEligible(rand) && (rand.Factions?.Length == 0 || Array.IndexOf(rand.Factions, model.Party.Faction) >= 0) && FindCharacters(rand, characters)) { result.Add(rand); } if (result.Count >= model.NumRooms) { break; } } } while (result.Count < model.NumRooms) { result.Add(null); } incidents = RNG.Shuffle(result); } model.Incidents = new string[model.NumRooms]; for (int i = model.NumRooms - 1; i >= 0; --i) { model.Incidents[i] = incidents[i]?.ID; } } AmbitionApp.SendMessage(PartyMessages.SELECT_INCIDENTS, incidents); string title = AmbitionApp.Localize(PartyConstants.PARTY_NAME + model.Party.ID); if (string.IsNullOrEmpty(title)) { title = PartyConstants.PARTY_REASON + model.Party.Faction.ToString().ToLower() + "." + model.Party.phrases[0]; } AmbitionApp.SendMessage(GameMessages.SHOW_HEADER, title); }