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