Ejemplo n.º 1
0
 public static bool CanTalkTo(this Pawn talker, Pawn talkee)
 {
     return(talker.MapHeld == talkee.MapHeld &&
            InteractionUtility.CanInitiateInteraction(talker) &&
            InteractionUtility.CanReceiveInteraction(talkee) &&
            CanSee(talker, talkee));
 }
Ejemplo n.º 2
0
 public static bool CanTalkTo(this Pawn talker, Pawn talkee)
 {
     return(talker.MapHeld == talkee.MapHeld &&
            InteractionUtility.CanInitiateInteraction(talker) &&
            InteractionUtility.CanReceiveInteraction(talkee) &&
            (talker.Position - talkee.Position).LengthHorizontalSquared <= 36.0 &&
            GenSight.LineOfSight(talker.Position, talkee.Position, talker.MapHeld, true));
 }
Ejemplo n.º 3
0
 private static bool CanInteractNowWith(Pawn pawn, Pawn recipient) // Had to add, copy
 {
     return(recipient.Spawned &&
            ((pawn.Position - recipient.Position).LengthHorizontalSquared <= 36.0 &&
             InteractionUtility.CanInitiateInteraction(pawn) &&
             (InteractionUtility.CanReceiveInteraction(recipient) &&
              GenSight.LineOfSight(pawn.Position, recipient.Position, pawn.MapHeld, true))));
 }
        protected override bool Satisfied(Pawn p)
        {
            // No animal whorin' for now.
            if (xxx.is_animal(p))
            {
                return(false);
            }

            if (!InteractionUtility.CanInitiateInteraction(p))
            {
                return(false);
            }

            return(xxx.is_whore(p));
        }
Ejemplo n.º 5
0
        public static bool ShouldImproveRelationship(this Pawn pawn, Pawn guest)
        {
            if (!pawn.IsColonist)
            {
                return(false);
            }
            if (!ViableGuestTarget(guest))
            {
                return(false);
            }
            if (!guest.ImproveRelationship())
            {
                return(false);
            }
            //if (guest.Faction.ColonyGoodwill >= 100) return false;
            if (guest.relations.OpinionOf(pawn) >= 100)
            {
                return(false);
            }
            if (guest.InMentalState)
            {
                return(false);
            }
            if (!guest.IsInGuestZone(guest))
            {
                return(false);
            }
            if (!InteractionUtility.CanInitiateInteraction(pawn))
            {
                return(false);
            }
            if (!InteractionUtility.CanReceiveInteraction(guest))
            {
                return(false);
            }
            if (!pawn.HasReserved(guest) && !pawn.CanReserveAndReach(guest, PathEndMode.OnCell, pawn.NormalMaxDanger()))
            {
                return(false);
            }
            if (guest.CurJob?.def.suspendable == false)
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 6
0
        public static bool ShouldMakeFriends(this Pawn pawn, Pawn guest)
        {
            if (!pawn.IsColonist)
            {
                return(false);
            }
            if (!ViableGuestTarget(guest, true))
            {
                return(false);
            }
            if (!guest.MakeFriends())
            {
                return(false);
            }
            if (guest.InMentalState)
            {
                return(false);
            }
            //if (guest.relations.OpinionOf(pawn) >= 100) return false;
            //if (guest.RelativeTrust() < 50) return false;
            if (guest.relations.OpinionOf(pawn) <= -10)
            {
                return(false);
            }
            if (!InteractionUtility.CanInitiateInteraction(pawn))
            {
                return(false);
            }
            if (!InteractionUtility.CanReceiveInteraction(guest))
            {
                return(false);
            }
            if (!pawn.HasReserved(guest) && !pawn.CanReserveAndReach(guest, PathEndMode.OnCell, pawn.NormalMaxDanger()))
            {
                return(false);
            }
            if (guest.CurJob?.def.suspendable == false)
            {
                return(false);
            }

            return(true);
        }
        protected override bool Satisfied(Pawn p)
        {
            // No animal whorin' for now.
            if (xxx.is_animal(p))
            {
                return(false);
            }

            if (!InteractionUtility.CanInitiateInteraction(p))
            {
                return(false);
            }

            if (DebugSettings.alwaysDoLovin)
            {
                return(true);
            }

            return(xxx.is_whore(p) || RJWSettings.WildMode);
        }
Ejemplo n.º 8
0
        public override bool ShouldSkip(Pawn pawn, bool forced = false)
        {
            if (!InteractionUtility.CanInitiateInteraction(pawn))
            {
                return(true);
            }

            if (!pawn.GetRestaurant().IsOpenedRightNow)
            {
                return(true);
            }
            var list = pawn.GetRestaurant().SpawnedDiningPawns;

            var anyPatrons = list.Any(p => {
                var driver = p.jobs.curDriver as JobDriver_Dine;
                return(driver?.wantsToOrder == true);
            });

            return(!anyPatrons);
        }
Ejemplo n.º 9
0
        protected override Job TryGiveJob(Pawn pawn)
        {
            //--Log.Message("[RJW] JobGiver_WhoreInvitingVisitors::TryGiveJob( " + pawn.NameStringShort + " ) called0");
            if (pawn == null || !InteractionUtility.CanInitiateInteraction(pawn))
            {
                return(null);
            }
            if (PawnUtility.WillSoonHaveBasicNeed(pawn) || !xxx.is_healthy(pawn) || !xxx.can_be_fucked(pawn))             //As long as pawns is older than minimum sex age, they can be assigned as w****s.
            {
                return(null);
            }

            if (Find.TickManager.TicksGame >= pawn.mindState.canLovinTick && pawn.CurJob == null)
            {
                int  price;
                Pawn pawn2 = FindAttractivePawn(pawn, out price);
                //--Log.Message("[RJW] JobGiver_WhoreInvitingVisitors::TryGiveJob( " + pawn.NameStringShort + " ) called1 - pawn2 is " + (pawn2 == null ? "NULL" : pawn2.NameStringShort));
                if (pawn2 == null)
                {
                    return(null);
                }
                Building_WhoreBed whorebed = xxx.FindWhoreBed(pawn);
                if ((whorebed == null) || !xxx.CanUse(pawn, whorebed) || (100f * Rand.Value) > percentRate)
                {
                    //--Log.Message("resetting ticks");
                    if (xxx.config.whores_always_findjob)
                    {
                        pawn.mindState.canLovinTick = Find.TickManager.TicksGame + 5;
                    }
                    else
                    {
                        pawn.mindState.canLovinTick = Find.TickManager.TicksGame + Rand.Range(75, 150);
                    }
                    return(null);
                }
                //--Log.Message("[RJW] JobGiver_WhoreInvitingVisitors::TryGiveJob( " + pawn.NameStringShort + " ) called2 - " + pawn2.NameStringShort + " is pawn2.");
                whorebed.priceOfWhore = price;
                return(new Job(xxx.inviting_visitors, pawn2, whorebed));
            }
            return(null);
        }
Ejemplo n.º 10
0
        public static bool ShouldRecruit(this Pawn pawn, Pawn guest)
        {
            if (!ViableGuestTarget(guest, true))
            {
                return(false);
            }
            if (!guest.TryRecruit())
            {
                return(false);
            }
            if (guest.InMentalState)
            {
                return(false);
            }
            //if (guest.relations.OpinionOf(pawn) >= 100) return false;
            //if (guest.RelativeTrust() < 50) return false;
            if (guest.relations.OpinionOf(pawn) <= -10)
            {
                return(false);
            }
            //if (guest.interactions.InteractedTooRecentlyToInteract()) return false;
            //if (pawn.interactions.InteractedTooRecentlyToInteract()) return false;
            if (!InteractionUtility.CanInitiateInteraction(pawn))
            {
                return(false);
            }
            if (!InteractionUtility.CanReceiveInteraction(guest))
            {
                return(false);
            }
            if (!pawn.HasReserved(guest) && !pawn.CanReserveAndReach(guest, PathEndMode.OnCell, pawn.NormalMaxDanger()))
            {
                return(false);
            }

            return(true);
        }
        protected override Job TryGiveJob(Pawn pawn)
        {
            if (!InteractionUtility.CanInitiateInteraction(pawn))
            {
                return(null);
            }
            Pawn patient = SickPawnVisitUtility.FindRandomSickPawn(pawn, JoyCategory.High);

            if (patient == null)
            {
                return(null);
            }

            Thing wheelChair = ToolsForHaulUtility.FindWheelChair(patient, pawn);

            if (wheelChair == null || !pawn.CanReserve(wheelChair))
            {
                return(null);
            }
            return(new Job(DefDatabase <JobDef> .GetNamed("TakeToWheelChair"), patient, wheelChair)
            {
                maxNumToCarry = 1
            });
        }
 public override bool ShouldSkip(Pawn pawn)
 {
     return(!InteractionUtility.CanInitiateInteraction(pawn));
 }