コード例 #1
0
ファイル: Main.cs プロジェクト: Errleng/rimworld-mods
        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;
                }
            }
        }
コード例 #2
0
            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;
                    }
                }
            }