Exemplo n.º 1
0
        static void DoLovingDebugPrint(Pawn pawn)
        {
            if (pawn.jobs?.debugLog != true)
            {
                return;
            }
            if (!pawn.IsFormerHuman())
            {
                return;
            }

            if (pawn.CurrentBed() == null || pawn.CurrentBed().Medical || !pawn.health.capacities.CanBeAwake)
            {
                Log.Message($"{pawn.Label} failed to love at current bed check");
                return;
            }
            Pawn partnerInMyBed = LovePartnerRelationUtility.GetPartnerInMyBed(pawn);

            if (partnerInMyBed == null || !partnerInMyBed.health.capacities.CanBeAwake || Find.TickManager.TicksGame < partnerInMyBed.mindState.canLovinTick)
            {
                Log.Message($"{pawn.Label} failed at partner check or canBeAwake check or ");
                return;
            }
            if (!pawn.CanReserve(partnerInMyBed) || !partnerInMyBed.CanReserve(pawn))
            {
                Log.Message($"{pawn.Label} failed at partner in bed check");

                return;
            }
        }
Exemplo n.º 2
0
        public static void CancelJob(ref Job __result, Pawn pawn)
        {
            Pawn partner = LovePartnerRelationUtility.GetPartnerInMyBed(pawn);

            if (PsycheHelper.PsychologyEnabled(pawn) && PsycheHelper.PsychologyEnabled(partner) && PsychologyBase.ActivateKinsey())
            {
                float random  = Rand.ValueSeeded((pawn.GetHashCode() ^ (GenLocalDate.DayOfYear(pawn) + GenLocalDate.Year(pawn) + (int)(GenLocalDate.DayPercent(pawn) * 2) * 60) * 391));
                float random2 = Rand.ValueSeeded((pawn.GetHashCode() ^ (GenLocalDate.DayOfYear(partner) + GenLocalDate.Year(partner) + (int)(GenLocalDate.DayPercent(partner) * 2) * 60) * 391));
                if (random > PsycheHelper.Comp(pawn).Sexuality.AdjustedSexDrive&& random2 > PsycheHelper.Comp(partner).Sexuality.AdjustedSexDrive)
                {
                    __result = null;
                }
            }
        }
        protected override float MtbHours(Pawn pawn)
        {
            if (pawn.CurrentBed() == null)
            {
                return(-1f);
            }
            Pawn partnerInMyBed = LovePartnerRelationUtility.GetPartnerInMyBed(pawn);

            if (partnerInMyBed == null)
            {
                return(-1f);
            }
            return(LovePartnerRelationUtility.GetLovinMtbHours(pawn, partnerInMyBed));
        }
Exemplo n.º 4
0
        public static void CancelJob(ref Job __result, Pawn pawn)
        {
            Pawn           partnerInMyBed = LovePartnerRelationUtility.GetPartnerInMyBed(pawn);
            PsychologyPawn realPawn       = pawn as PsychologyPawn;
            PsychologyPawn realPartner    = partnerInMyBed as PsychologyPawn;

            if (realPawn != null && realPartner != null && PsychologyBase.ActivateKinsey() && realPawn.sexuality != null && realPartner.sexuality != null)
            {
                float random = Rand.ValueSeeded((pawn.GetHashCode() ^ (GenLocalDate.DayOfYear(pawn) + GenLocalDate.Year(pawn) + (int)(GenLocalDate.DayPercent(pawn) * 2) * 60) * 391));
                if (random > realPawn.sexuality.AdjustedSexDrive && random > realPartner.sexuality.AdjustedSexDrive)
                {
                    __result = null;
                }
            }
        }
Exemplo n.º 5
0
 public override void PostMake()
 {
     base.PostMake();
     if (pawn.InBed())
     {
         Pawn         partner = LovePartnerRelationUtility.GetPartnerInMyBed(pawn);
         Building_Bed bed     = pawn.CurrentBed();
         if (partner != null)
         {
             pawn.mindState.awokeVoluntarily    = true;
             partner.mindState.awokeVoluntarily = true;
             Job lovin = new Job(JobDefOf.Lovin, partner, bed);
             pawn.jobs.StartJob(lovin, JobCondition.InterruptForced, null, false, true, null);
         }
     }
     pawn.health.RemoveHediff(this);
     return;
 }
        protected override float MtbHours(Pawn pawn)
        {
            float result;

            if (pawn.CurrentBed() == null)
            {
                result = -1f;
            }
            else
            {
                Pawn partnerInMyBed = LovePartnerRelationUtility.GetPartnerInMyBed(pawn);
                if (partnerInMyBed == null)
                {
                    result = -1f;
                }
                else
                {
                    result = LovePartnerRelationUtility.GetLovinMtbHours(pawn, partnerInMyBed);
                }
            }
            return(result);
        }