public static bool Prefix(StarSystem __instance, PilotDef def) { // if (!__instance.AvailablePilots.Contains(def)) if (__instance.AvailablePilots.Any(x => x.Description.Id == def.Description.Id)) { __instance.AvailablePilots.Remove(def); if (__instance.PermanentRonin.Contains(def)) { __instance.PermanentRonin.Remove(def); __instance.Sim.UsedRoninIDs.Add(def.Description.Id); } def.SetDayOfHire(__instance.Sim.DaysPassed); __instance.Sim.AddPilotToRoster(def, true, false); int purchaseCostAfterReputationModifier = __instance.GetPurchaseCostAfterReputationModifier(__instance.Sim.GetMechWarriorHiringCost(def)); __instance.Sim.AddFunds(-purchaseCostAfterReputationModifier, null, true, true); } return(false); }
//Code for randomizing starting pilots public static void RandomizeRonin(SimGameState sim) { while (sim.PilotRoster.Count > 0) { sim.PilotRoster.RemoveAt(0); } List <PilotDef> list = new List <PilotDef>(); if (RngStart.Settings.StartingRonin != null) { var RoninRandomizer = new List <string>(); RoninRandomizer.AddRange(GetRandomSubList(RngStart.Settings.StartingRonin, RngStart.Settings.NumberRoninFromList)); foreach (var roninID in RoninRandomizer) { var pilotDef = sim.DataManager.PilotDefs.Get(roninID); // add directly to roster, don't want to get duplicate ronin from random ronin if (pilotDef != null) { sim.AddPilotToRoster(pilotDef, true, true); } } } if (RngStart.Settings.NumberRandomRonin > 0) { List <PilotDef> list2 = new List <PilotDef>(sim.RoninPilots); for (int m = list2.Count - 1; m >= 0; m--) { for (int n = 0; n < sim.PilotRoster.Count; n++) { if (list2[m].Description.Id == sim.PilotRoster[n].Description.Id) { list2.RemoveAt(m); break; } } } list2.RNGShuffle <PilotDef>(); for (int i = 0; i < RngStart.Settings.NumberRandomRonin; i++) { list.Add(list2[i]); } } if (RngStart.Settings.NumberProceduralPilots > 0) { List <PilotDef> list3 = new List <PilotDef>(); int f = 0; while (f < RngStart.Settings.NumberProceduralPilots) { PilotDef pilotDef = sim.PilotGenerator.GeneratePilots(1, 1, 0f, out list3)[0]; if (sim.CanPilotBeCareerModeStarter(pilotDef)) { pilotDef.SetDayOfHire(sim.DaysPassed); sim.AddPilotToRoster(pilotDef, false, true); f++; } } } }