Exemplo n.º 1
0
 public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false)
 {
     return(base.HasJobOnThing(pawn, t, forced) &&
            FertilityChecker.is_fertile(pawn) &&
            FertilityChecker.is_fertile(t as Pawn) &&
            (
                FertilityChecker.is_FemaleForBabies(pawn) || FertilityChecker.is_FemaleForBabies(t as Pawn)
            )
            );
 }
        public virtual bool IsMate(Pawn pawn, Pawn pawn2)
        {
            float fert = FertilityChecker.getFetility(pawn) + FertilityChecker.getFetility(pawn2) / 2.0f;

            fert *= MateChance();
            //TODO dice roll
            if (pawn.gender == pawn2.gender && !WoohooSettingHelper.latest.sameGender)
            {
                return(false);
            }
            return(Rand.Value < fert);
        }
Exemplo n.º 3
0
        public static Toil DoMakeBaby(Pawn pawn, Pawn TargetA)
        {
            return(new Toil
            {
                initAction = delegate
                {
                    /* Log.Message("Baby Making"); */
                    Pawn mate = (Pawn)TargetA;


                    //check fertility then ensemenate wombs
                    if (!FertilityChecker.is_fertile(pawn))
                    {
                        /* Log.Message("Woohoo for baby, but youre not fertile", false); */
                    }
                    else if (!FertilityChecker.is_fertile(mate))
                    {
                        /* Log.Message("Woohoo for baby, but not fertile mate", false); */
                    }
                    else
                    {
                        //for each womb make pregnant
                        if (FertilityChecker.is_FemaleForBabies(pawn))
                        {
                            /* Log.Message("Getting innitialer pregnant", false); */
                            //(donor , has womb)
                            Mate.Mated(mate, pawn);
                            pawn.records.Increment(Constants.TimesWooHooedGotPregnant);
                        }
                        else
                        {
                            /* Log.Message("Initiator lacks womb", false); */
                        }

                        if (FertilityChecker.is_FemaleForBabies(mate))
                        {
                            /* Log.Message("Getting talkee pregnant", false); */
                            //(donor , has womb)
                            Mate.Mated(pawn, mate);
                            mate.records.Increment(Constants.TimesWooHooedGotPregnant);
                        }
                        else
                        {
                            /* Log.Message("talkee lacks womb", false); */
                        }
                    }
                },
                socialMode = RandomSocialMode.Off,
                defaultCompleteMode = ToilCompleteMode.Instant
            });
        }
Exemplo n.º 4
0
        public virtual bool IsMate(Pawn pawn, Pawn pawn2)
        {
            float fert = FertilityChecker.getFetility(pawn) + FertilityChecker.getFetility(pawn2) / 2.0f;

            fert *= MateChance();
            if (pawn.gender == pawn2.gender && !WoohooSettingHelper.latest.sameGender)
            {
                return(false);
            }
            var rand = Rand.Value;

            bool isMate = rand < fert;

            //Log.Message("TRACE:ROLL ["+rand+"] < ["+fert+"] = ["+isMate+"]");
            if (isMate)
            {
                Log.Message("Doing A Risky Woohoo! [" + rand + "] < [" + fert + "] = [" + isMate + "]");
            }

            return(isMate);
        }