Пример #1
0
 static bool Prefix(LordToil_PrepareCaravan_Leave __instance)
 {
     if (Find.TickManager.TicksGame % 100 > RefcellRespeedConfig.currentTimeMultiplier - 1)
     {
         return(false);
     }
     GatherAnimalsAndSlavesForCaravanUtility.CheckArrived(
         __instance.lord, __instance.lord.ownedPawns, __instance.exitSpot, "ReadyToExitMap", (Predicate <Pawn>)(x => true));
     return(false);
 }
        //For compatibility with other mods (Save our ship 2), add any missing mounts to the lord.
        private static void AddMissingPawnsToLord(LordToil_PrepareCaravan_Leave __instance)
        {
            List <Pawn> shouldAddOwnedPawns = new List <Pawn>();

            foreach (Pawn pawn in __instance.lord.ownedPawns)
            {
                ExtendedPawnData pawnData             = GiddyUpCore.Base.Instance.GetExtendedDataStorage().GetExtendedDataFor(pawn);
                bool             caravanContainsMount = __instance.lord.ownedPawns.Contains(pawnData.caravanMount);
                if (pawnData.caravanMount != null && !caravanContainsMount)
                {
                    shouldAddOwnedPawns.Add(pawnData.caravanMount);
                }
            }
            foreach (Pawn pawn in shouldAddOwnedPawns)
            {
                __instance.lord.ownedPawns.Add(pawn);
                pawn.mindState.duty = new PawnDuty(DutyDefOf.TravelOrWait, Traverse.Create(__instance).Field("exitSpot").GetValue <IntVec3>());
            }
        }
 static void Prefix(LordToil_PrepareCaravan_Leave __instance)
 {
     foreach (Pawn pawn in __instance.lord.ownedPawns)
     {
         ExtendedPawnData pawnData = GiddyUpCore.Base.Instance.GetExtendedDataStorage().GetExtendedDataFor(pawn);
         if (pawnData.caravanMount != null && __instance.lord.ownedPawns.Contains(pawnData.caravanMount))
         {
             Pawn animal   = pawnData.caravanMount;
             Job  jobRider = new Job(GUC_JobDefOf.Mount, animal);
             jobRider.count = 1;
             pawn.jobs.TryTakeOrderedJob(jobRider);
             animal.jobs.StopAll();
             animal.pather.StopDead();
             Job jobAnimal = new Job(GUC_JobDefOf.Mounted, pawn);
             jobAnimal.count = 1;
             animal.jobs.TryTakeOrderedJob(jobAnimal);
         }
     }
 }