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); } } }