コード例 #1
0
ファイル: MilkWool.cs プロジェクト: gguake/DragonianRace
        public override bool HasJobOnThing(Pawn pawn, Thing thing, bool forced = false)
        {
            Pawn pawn2 = thing as Pawn;

            if (pawn2 == null || !pawn2.RaceProps.Humanlike)
            {
                return(false);
            }
            CompHasGatherableBodyResource comp = GetComp(pawn2);

            if (comp != null && comp.ActiveAndFull && PawnUtility.CanCasuallyInteractNow(pawn2, false) && pawn2 != pawn)
            {
                LocalTargetInfo localTargetInfo = pawn2;
                if (ReservationUtility.CanReserve(pawn, localTargetInfo, 1, -1, null, forced))
                {
                    return(true);
                }
            }
            return(false);
        }
コード例 #2
0
ファイル: JobGiver_NekoNuzzle.cs プロジェクト: thakyZ/Nekos
        protected override Job TryGiveJob(Pawn pawn)
        {
            bool flag = pawn.RaceProps.nuzzleMtbHours <= 0f;
            Job  result;

            if (!flag)
            {
                List <Pawn> source = pawn.Map.mapPawns.SpawnedPawnsInFaction(pawn.Faction);
                bool        flag2  = !GenCollection.TryRandomElement <Pawn>(from p in source
                                                                            where p.RaceProps.Humanlike && p.Position.InHorDistOf(pawn.Position, 15f) && RegionAndRoomQuery.GetRoom(pawn, RegionType.Set_Passable) == RegionAndRoomQuery.GetRoom(p, RegionType.Set_Passable) && !ForbidUtility.IsForbidden(p.Position, pawn) && PawnUtility.CanCasuallyInteractNow(p, false) && p != pawn && p.relations.OpinionOf(pawn) > 30
                                                                            select p, out Pawn pawn2);
                if (flag2)
                {
                    result = null;
                }
                else
                {
                    result = new Job(JobDefOf.Nuzzle, pawn2)
                    {
                        locomotionUrgency = LocomotionUrgency.Walk,
                        expiryInterval    = 3000
                    };
                }
            }
            else
            {
                result = null;
            }
            return(result);
        }