private static void Prefix() { LogDebug("OnDayPassed"); var starSystem = Globals.Sim.CurSystem; var contractEmployers = starSystem.Def.contractEmployerIDs; var contractTargets = starSystem.Def.contractTargetIDs; var owner = starSystem.OwnerValue; LogDebug($"{starSystem.Name} owned by {owner.Name}"); LogDebug($"Employers in {starSystem.Name}"); contractEmployers.Do(x => LogDebug($" {x}")); LogDebug($"Targets in {starSystem.Name}"); contractTargets.Do(x => LogDebug($" {x}")); Globals.Sim.GetAllCurrentlySelectableContracts().Do(x => LogDebug($"{x.Name,-25} {x.Difficulty} ({x.Override.GetUIDifficulty()})")); var systemStatus = Globals.WarStatusTracker.systems.Find(x => x.starSystem == starSystem); var employers = systemStatus.influenceTracker.OrderByDescending(x => x.Value).Select(x => x.Key).Take(2); foreach (var faction in Globals.Settings.IncludedFactions.Intersect(employers)) { LogDebug($"{faction} Enemies:"); FactionEnumeration.GetFactionByName(faction).factionDef?.Enemies.Distinct().Do(x => LogDebug($" {x}")); LogDebug($"{faction} Allies:"); FactionEnumeration.GetFactionByName(faction).factionDef?.Allies.Do(x => LogDebug($" {x}")); Log(""); } LogDebug("Player allies:"); foreach (var faction in Globals.Sim.AlliedFactions) { LogDebug($" {faction}"); } if (Globals.Sim.IsCampaign && !Globals.Sim.CompanyTags.Contains("story_complete")) { return; } Globals.WarStatusTracker.CurSystem = Globals.Sim.CurSystem.Name; if (Globals.WarStatusTracker.HotBox.Contains(Globals.Sim.CurSystem.Name) && !Globals.WarStatusTracker.HotBoxTravelling) { Globals.WarStatusTracker.EscalationDays--; if (!Globals.WarStatusTracker.Deployment) { if (Globals.WarStatusTracker.EscalationDays == 0) { HotSpots.CompleteEscalation(); } if (Globals.WarStatusTracker.EscalationOrder != null) { Globals.WarStatusTracker.EscalationOrder.PayCost(1); var activeItems = Globals.TaskTimelineWidget.ActiveItems; if (activeItems.TryGetValue(Globals.WarStatusTracker.EscalationOrder, out var taskManagementElement4)) { taskManagementElement4.UpdateItem(0); } } } else { if (Globals.WarStatusTracker.EscalationOrder != null) { Globals.WarStatusTracker.EscalationOrder.PayCost(1); var activeItems = Globals.TaskTimelineWidget.ActiveItems; if (activeItems.TryGetValue(Globals.WarStatusTracker.EscalationOrder, out var taskManagementElement4)) { taskManagementElement4.UpdateItem(0); } } if (Globals.WarStatusTracker.EscalationDays <= 0) { Globals.Sim.StopPlayMode(); Globals.Sim.CurSystem.activeSystemContracts.Clear(); Globals.Sim.CurSystem.activeSystemBreadcrumbs.Clear(); HotSpots.TemporaryFlip(Globals.Sim.CurSystem, Globals.WarStatusTracker.DeploymentEmployer); var maxHolder = Globals.Sim.CurSystem.CurMaxBreadcrumbs; var rand = Globals.Rng.Next(1, (int)Globals.Settings.DeploymentContracts); Traverse.Create(Globals.Sim.CurSystem).Property("CurMaxBreadcrumbs").SetValue(rand); Globals.Sim.GeneratePotentialContracts(true, null, Globals.Sim.CurSystem); Traverse.Create(Globals.Sim.CurSystem).Property("CurMaxBreadcrumbs").SetValue(maxHolder); Globals.Sim.QueueCompleteBreadcrumbProcess(true); Globals.SimGameInterruptManager.QueueTravelPauseNotification("New Mission", "Our Employer has launched an attack. We must take a mission to support their operation. Let's check out our contracts and get to it!", Globals.Sim.GetCrewPortrait(SimGameCrew.Crew_Darius), string.Empty, null, "Proceed"); } } } if (!Globals.WarStatusTracker.StartGameInitialized) { LogDebug("Reinitializing contracts because !StartGameInitialized"); var cmdCenter = Globals.Sim.RoomManager.CmdCenterRoom; Globals.Sim.CurSystem.GenerateInitialContracts(() => Traverse.Create(cmdCenter).Method("OnContractsFetched")); Globals.WarStatusTracker.StartGameInitialized = true; } }