Exemple #1
0
    /// <summary>
    ///
    /// </summary>
    /// <param name="parMother"></param>
    /// <param name="parFather"></param>
    /// <param name="parMultiChildBonus"> amount = floor(range(1,2.1)); where amount equals the amount of fetuses added to womb.</param>
    public void GetImpregnated(BasicChar parMother, BasicChar parFather)
    {
        float parMultiChildBonus = 0 + RaceChildBonusAmountFather(parFather) + RaceChildBonusAmountModsMother(parMother);
        PregnancyBlessings pregnancyBlessings = parMother.PregnancySystem.PregnancyBlessings;

        if (pregnancyBlessings.HasBlessing(PregnancyBlessingsIds.BroadMother))
        {
            parMultiChildBonus += pregnancyBlessings.GetBlessingValue(PregnancyBlessingsIds.BroadMother);
        }
        int parBaseChildAmount = 1 + RaceChildBaseAmountModsFather(parFather) + RaceChildBaseAmountModsMother(parMother);
        // TODO add racemods
        int amount = Mathf.FloorToInt(Random.Range(parBaseChildAmount, 2.1f + Mathf.Max(-1f, parMultiChildBonus)));

        for (int i = 0; i < amount; i++)
        {
            // TODO give secondraces a slim chance to win and make it so babies can become half race of parents.
            // Roll is slighty biased for mother which is intended.
            int   roll     = Random.Range(0, 10);
            Races babyRace = roll < 5 ?
                             parMother.RaceSystem.CurrentRace() : parFather.RaceSystem.CurrentRace();
            fetuses.Add(new Fetus(babyRace, parFather, parMother));
        }
        parFather.PregnancySystem.ImPregnated.Increase(1);
        parMother.PregnancySystem.Pregnant.Increase(1);
    }
    private static void ReGainFluidsTick(this BasicChar basicChar)
    {
        Organs so = basicChar.SexualOrgans;

        if (so.HaveBalls())
        {
            PregnancyBlessings pregnancyBlessings = basicChar.PregnancySystem.PregnancyBlessings;
            if (pregnancyBlessings.HasBlessing(PregnancyBlessingsIds.SpermFactory))
            {
                int blessVal = pregnancyBlessings.GetBlessingValue(PregnancyBlessingsIds.SpermFactory);
                basicChar.Body.Fat.LoseFlat(blessVal / 100); // TODO is this balanced?
                so.Balls.ForEach(b => b.Fluid.ReFill(so.BallsBunusRefillRate.Value + blessVal));
            }
            else
            {
                so.Balls.ForEach(b => b.Fluid.ReFill(so.BallsBunusRefillRate.Value));
            }
        }
        if (so.Lactating)
        {
            so.Boobs.ForEach(b => b.Fluid.ReFill(so.BoobsBonusRefillRate.Value));
        }
    }