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; } }
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)); }
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; } } }
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); }