static void Postfix(Pawn_PathFollower __instance, Pawn ___pawn) { bool enablePathing = LoadedModManager.GetMod <RimCheats>().GetSettings <RimCheatsSettings>().enablePathing; if (___pawn.IsColonistPlayerControlled && __instance.Moving && enablePathing) { if (___pawn.CurJob != null && (___pawn.CurJob.def == JobDefOf.GotoWander || ___pawn.CurJob.def == JobDefOf.Wait_Wander)) { return; } if (__instance.nextCellCostLeft > 0f) { __instance.nextCellCostLeft = 0; } if (!___pawn.Position.Equals(lastPos)) { lastPos = ___pawn.Position; __instance.PatherTick(); } else { lastPos = ___pawn.Position; } } }
static void Postfix(Pawn_PathFollower __instance, Pawn ___pawn) { bool appliesToPawn = false; if (settings.enablePathing) { appliesToPawn = ___pawn.IsColonistPlayerControlled; } if (settings.enablePathingNonHuman && !___pawn.IsColonistPlayerControlled) { appliesToPawn = ___pawn.Faction != null && ___pawn.Faction.IsPlayer; } if (appliesToPawn && __instance.Moving) { // disable speed on wander or waiting for better idle pawn performance if (___pawn.CurJob != null && (___pawn.CurJob.def == JobDefOf.GotoWander || ___pawn.CurJob.def == JobDefOf.Wait_Wander)) { return; } if (__instance.nextCellCostLeft > 0f) { __instance.nextCellCostLeft = 0; } if (!___pawn.Position.Equals(lastPos)) { lastPos = ___pawn.Position; __instance.PatherTick(); } else { lastPos = ___pawn.Position; } } }