static void Postfix(SimGameState __instance) { if (!Core.ModSettings.WarnAboutTrainablePilots) { return; } var pilotsToTrain = 0; var pilots = new List <Pilot>(__instance.PilotRoster) { __instance.Commander }; foreach (var pilot in pilots) { if (pilot.pilotDef.PilotTags.ContainsAny(PilotFatigueTags)) { continue; } var foundTrainable = false; var source = new int[] { pilot.Gunnery, pilot.Tactics, pilot.Guts, pilot.Piloting }; for (var i = 0; i < source.Length && !foundTrainable; i++) { if (source[i] >= Core.ModSettings.PilotSkillLevelForWhichWarningNotNecessary) { continue; } if (pilot.UnspentXP <= __instance.GetLevelCost(source[i] + 1)) { continue; } pilotsToTrain++; foundTrainable = true; } if (foundTrainable) { pilotsToTrain++; } } if (pilotsToTrain >= Core.ModSettings.MinimumPilotsNeedingTrainingForWarning) { __instance .GetInterruptQueue() .QueuePauseNotification( "MechWarrior Training Required", $"Our MechWarriors are gaining in experience and need your guidance, {__instance.Commander.Callsign}. If you head to the Barracks, you can direct their training.", __instance.GetCrewPortrait(SimGameCrew.Crew_Darius), null, new Action(Core.OnNotificationDismissed), "Continue", null, null); } }
public static bool Prefix(SimGameState __instance) { try { Logger.Debug($"[SimGameState_ShowMechWarriorTrainingNotif_PREFIX] Suppressing training notification if number of trainable pilots < {LittleThings.Settings.EnableTrainingNotificationLimit}"); int trainablePilotCount = 0; foreach (Pilot pilot in __instance.PilotRoster) { int[] skillLevels = new int[] { pilot.Gunnery, pilot.Tactics, pilot.Guts, pilot.Piloting }; int currentLevel = 0; foreach (int i in skillLevels) { if (i > currentLevel && i < 10) { currentLevel = i; } } if (currentLevel > 0 && pilot.UnspentXP > __instance.GetLevelCost(currentLevel + 1)) { trainablePilotCount++; } } Logger.Info($"[SimGameState_ShowMechWarriorTrainingNotif_PREFIX] trainablePilotCount: {trainablePilotCount}"); Logger.Info($"[SimGameState_ShowMechWarriorTrainingNotif_PREFIX] LittleThings.Settings.TrainingNotificationLimit: {LittleThings.Settings.EnableTrainingNotificationLimit}"); if (trainablePilotCount >= LittleThings.Settings.EnableTrainingNotificationLimit) { return(true); } else { return(false); } } catch (Exception e) { Logger.Error(e); return(true); } }