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);
        }
Ejemplo n.º 2
0
        //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++;
                    }
                }
            }
        }