Commit graph

167 commits

Author SHA1 Message Date
lutepickle
92fab44764 Simplify a bunch of for loops into functions 2022-07-14 19:12:28 -07:00
lutepickle
1a875dba1c Refactor the transition to ovulation, eliminate some code duplication in follicular and bleeding actions between standard and induced ovulation 2022-07-14 16:24:59 -07:00
lutepickle
5d98d23541 Add code for girlcum, but leave it disabled for now 2022-07-14 15:46:13 -07:00
lutepickle
08c6c28c81 In the context of menstruation, CanImpregnate is called to see if the cum being added is fertile. In RJW, already being pregnant is enough to block a new one, but in menstruation it's fine if fertile cum enters a pregnant womb, or if cum goes into a different womb than the pregnant one. So never have a pawn with a womb be considered pregnant for those checks.
The other times that CanImpregnate is called is for the fetish, but that's already checked against DangerDay.

Also add some more null checks for the transpilers.
2022-07-13 16:50:06 -07:00
lutepickle
05029858d5 Get the right menstruation comp when impregnating. Also remove CanFertilize, it's too much of a pain 2022-07-13 15:44:26 -07:00
lutepickle
28cc9755fd Revert "Bit of a refactor to AddWombGizmos, should be nicer to the Sexperience module"
This reverts commit 3d34ed1e53.
2022-07-13 07:44:47 -07:00
lutepickle
2b8d822542 For multiple vaginas, concealed estrus won't occur if in visible estrus, and visible estrus will cancel concealed estrus 2022-07-12 19:09:19 -07:00
lutepickle
6143fb41fb Implant at the right time for vaginas with odd luteal intervals 2022-07-12 14:43:19 -07:00
lutepickle
70346a0901 Remove availableWomb from CanFertilize. It's only used for fetishes, and it won't be DangerDay if they're all pregnant 2022-07-11 18:30:59 -07:00
lutepickle
c0043d2936 Support for multiple concurrent pregnancies 2022-07-11 18:23:08 -07:00
lutepickle
768f000c5d Rebuild 2022-07-11 12:56:04 -07:00
lutepickle
699c91106f Support for multiple vaginas 2022-07-11 11:52:27 -07:00
lutepickle
1133255b0a Rearrange LutealAction to let the stage end with fertilized eggs 2022-07-10 08:05:08 -07:00
lutepickle
9f66a3ea52 Missing elses in Follicular actions 2022-07-08 18:43:13 -07:00
lutepickle
96c81c70bf Use Max for the avglittersize 2022-07-08 18:35:47 -07:00
lutepickle
096f941762 Account for bleeding when calculating induced ovulator ovary power, for all zero of them that bleed 2022-07-08 14:51:24 -07:00
lutepickle
58b2e4983c Apply cycle speed properly to ovary power by age 2022-07-08 12:10:52 -07:00
lutepickle
f612e0df24 Properly apply cycleSpeed to PeriodRandomizer 2022-07-08 10:28:21 -07:00
lutepickle
862696eef1 Make the recursion limiter on RandomVariabilityPercent return the proper value 2022-07-07 19:09:06 -07:00
lutepickle
5abfa07638 Make the 'sperm lifespan' tip account for drainage, too. Also add a "10 ml" tip for fertilization chance 2022-07-07 18:28:34 -07:00
lutepickle
ba11cf867c Build 2022-07-07 17:34:08 -07:00
lutepickle
4e3fa05af9 Make not-cum not fertilize 2022-07-07 11:27:44 -07:00
lutepickle
75fe253911 Give animal children the standard mother/father relations instead of the old RJW_Sire/RJW_Pup ones 2022-07-02 07:55:31 -07:00
lutepickle
b7a911000e Rename PawnGCPass_Patch to AccumulatePawnGCData_Patch 2022-07-02 07:30:27 -07:00
lutepickle
f503deb09e Have a pawn that becomes fertile go into anestrus if they're out of season. 2022-06-25 20:07:23 -07:00
lutepickle
14174396b0 Increase ovipostor semen to make up for the lowered fert chance 2022-06-25 11:15:54 -07:00
lutepickle
3ac49afade Make the initial fertilization graphic based on the configured acceleration 2022-06-21 23:11:59 -07:00
lutepickle
f021316869 Don't show the implanted egg icon when it's a mechanoid pregnancy 2022-06-21 21:00:37 -07:00
lutepickle
6283baa778 Make the IsNull checks in the hybrid extensions return true if thingDefName really is null. Also add another null check when searching for a hybrid. 2022-06-19 17:09:04 -07:00
lutepickle
204fe0ecc7 Fix null fertilizer when an egg tries to implant 2022-06-16 17:57:52 -07:00
lutepickle
1ef735f328 Migrate Harmony dependency to NuGet 2022-06-16 16:59:34 -07:00
lutepickle
56691171b4 Implement random tick timing 2022-06-05 11:06:57 -07:00
lutepickle
f1fcbf13c1 Handle a null pawn's cum in fertilization 2022-06-04 21:42:59 -07:00
lutepickle
4ebf45aeb8 Make fertilization add to the pawn's record again 2022-06-03 23:32:33 -07:00
lutepickle
961e7f7b73 Better anti-prune algo. Also won't prune pawns with sperm/egg in a player faction/prisoner womb 2022-06-03 14:45:31 -07:00
lutepickle
b814412eb0 Don't prune pawns with sperm or a fertilized egg in a colonist's womb 2022-06-03 11:04:39 -07:00
lutepickle
5e818ab879 Make IsInEstrus into a Pawn extension 2022-06-03 09:06:18 -07:00
lutepickle
9d83860d55 Have the first fertilized graphic go off of just the CycleFactor 2022-06-03 07:57:48 -07:00
lutepickle
e09c4aeb97 Move gather cum gizmo text to this project to account for sexperience removing it 2022-06-02 12:36:54 -07:00
lutepickle
c082c70e68 Add a proper weighted random algo for selecting paternity 2022-06-02 12:31:31 -07:00
lutepickle
5b784c3c59 Display ovaries on the womb dialog when near ovulation 2022-05-31 18:14:11 -07:00
lutepickle
bba7fd8dbb Use more of the fertilization graphics 2022-05-31 12:09:04 -07:00
lutepickle
3aa0450b87 Remove some milder "he came inside" memories when a harsher one is applied. Should reduce unwanted stacking. 2022-05-31 09:54:58 -07:00
lutepickle
e29c7a732a Might as well refactor RecoveryAction out to match the rest 2022-05-31 08:36:27 -07:00
lutepickle
0a7e80b353 Add a short description when mousing over the phase in the womb dialog 2022-05-31 08:10:53 -07:00
lutepickle
f909b8cfce Fix pawn generation for off-map pawns. 2022-05-30 20:22:47 -07:00
lutepickle
c4f5e6b63c A whole mess of spelling, grammar, and description updates 2022-05-30 20:04:48 -07:00
lutepickle
b292c3f931 Properly initialize ovaries for bad litterSizeCurves 2022-05-30 16:54:41 -07:00
lutepickle
7461965174 Add message feedback to the debug actions 2022-05-28 19:18:35 -07:00
lutepickle
41054f979e Update the hookup transpilers to apply the estrus overrides in the other direction. 2022-05-28 19:05:10 -07:00
lutepickle
72e1712394 Set a newly initialized pawn to anestrus when out of season. 2022-05-28 17:55:13 -07:00
lutepickle
b6f220b30b Show the status button in the health tab for pawns with a vagina as a second hediff. 2022-05-28 17:53:20 -07:00
lutepickle
42cd7a98ae Show womb gizmo for any gender 2022-05-27 17:59:36 -07:00
lutepickle
d5f87d0e45 Refactor IsDangerDay into a switch. 2022-05-14 16:50:27 -07:00
lutepickle
1a452cb120 Add a check for BabyHalfAge <= 0, just to be sure 2022-05-14 05:23:53 -07:00
lutepickle
2872d42f67 Fix BabyHalfAge for races with one lifestage 2022-05-13 22:01:07 -07:00
lutepickle
e377f01a7d Make the transpiler noisier when it hits an error. Hopefully it'll make breakages more obvious. 2022-05-11 08:33:33 -07:00
lutepickle
52f9a10496 Fix the transpiler for FindBestPartner 2022-05-09 22:36:53 -07:00
lutepickle
d9ab6cdcde On a littersizecurve exception, show the message in the log 2022-05-07 19:44:54 -07:00
lutepickle
0e34e3d4cc More parenthesis in ThoughtCumInside because I don't trust the compiler 2022-05-06 20:37:23 -07:00
lutepickle
3d5e1cae15 Locked absorbers can't get dirty or cause infections 2022-05-03 22:23:47 -07:00
lutepickle
47d249e716 Update birth faction assignments to match RJW's. 2022-04-29 07:00:41 -07:00
lutepickle
4c2233659a Slight refactor of Roll_To_Skip_Patch.Transpiler and FindBestPartner_Patch.Transpiler. 2022-04-28 15:50:16 -07:00
lutepickle
2e6565fcc6 Resize main settings window dynamically based on selected options. 2022-04-28 11:00:24 -07:00
lutepickle
7b5f0880ed Remove unnecessary parameters from Harmony patches. 2022-04-28 09:52:51 -07:00
lutepickle
00ad2e94d4 The GetBodyFactor patch doesn't need to test for __result <= 0, as that isn't possible. While I'm at it, a slight refactor in CountSatisfiedQuirks. 2022-04-28 09:18:50 -07:00
lutepickle
71f3ba9585 Animals will prefer partners in estrus 2022-04-27 22:13:50 -07:00
lutepickle
fffd4f5f00 Fix null reference on missing hybrid def 2022-04-27 17:42:02 -07:00
lutepickle
1eaa459e04 Put a few nameof()s in the Harmony patches 2022-04-27 11:10:58 -07:00
lutepickle
1c24fab708 Concealed estrus gets a (very small) boost, too 2022-04-27 10:28:40 -07:00
lutepickle
3009a3c6ef Make the estrus hookup override only apply to pawns that can get them pregnant 2022-04-27 07:12:17 -07:00
lutepickle
c5622a10f8 Shift the priorities of the came inside moods a bit 2022-04-27 06:33:31 -07:00
lutepickle
3f02fde439 Allow different hookup settings during estrus 2022-04-26 18:47:33 -07:00
lutepickle
191e4ab5d9 A pawn in estrus will prefer partners that can impregnate them, and prefer to use their vagina 2022-04-26 11:49:20 -07:00
lutepickle
3a044e8bd9 Build dlls 2022-04-26 05:26:02 -07:00
lutepickle
b0984f6d61 Rebuild dlls after merge 2022-04-22 21:54:21 -07:00
lutepickle
a7968b530d Proper rewrite of induced ovulator dangerday 2022-04-17 22:40:30 -07:00
lutepickle
92d732992a Fix null ref when bleeding 0, add debug action to clear out a womb. 2022-04-17 21:39:18 -07:00
lutepickle
0f9bfcd302 Fix CumIn of 0 volume (e.g. setting bleed rate to 0 ml/h) 2022-04-17 19:16:15 -07:00
lutepickle
1511c40001 Make the debug luteal action actually set to luteal 2022-04-06 08:46:57 -07:00
lutepickle
477468f8e4 Proply handle bad litter sizes 2022-04-03 22:12:45 -07:00
lutepickle
23b09b0fa9 Add debug action to recalculate ovary power 2022-03-19 16:32:17 -07:00
lutepickle
38b16c75c3 Set newly initialized (e.g. newborn) pawns' stage to Young if they have 0 fertility 2022-03-19 16:29:48 -07:00
lutepickle
3ae66bd4a6 A whole mess of suggested code refactorings 2022-03-18 09:34:17 -07:00
lutepickle
9e8441ca2e Fix the 'consealed' typo 2022-03-18 07:14:14 -07:00
lutepickle
052b7661e4 Alter updateTraits to properly handle zygotic twin inheritance for differing number of natural traits 2022-03-17 12:14:01 -07:00
lutepickle
26b49379b1 Add various debug actions 2022-03-17 09:19:19 -07:00
lutepickle
531313f5d2 Enzygotic twins get the same inherited traits 2022-03-17 08:17:53 -07:00
lutepickle
8013481634 Properly count quirks for impregnation fetish 2022-03-16 12:28:37 -07:00
lutepickle
51b3b1a924 The womb can hold its extra cum for at least the first part of a pregnancy 2022-03-15 11:21:04 -07:00
lutepickle
1fda8cbab9 Fix the fertilization chance setting slider at default 2022-03-15 09:36:04 -07:00
lutepickle
10e0d67ae6 Set no backstory on newborns to match base RJW 2022-03-13 18:00:26 -07:00
lutepickle
a967c7cfe3 Induced ovulators still get one more shot in climacteric follicular 2022-03-13 08:59:49 -07:00
lutepickle
13a883ea69 Make breast growth handle body size changes 2022-03-12 20:14:06 -08:00
lutepickle
47492f6472 Display correct fertility chance for wombs with a fertility modifier. 2022-03-12 10:16:04 -08:00
lutepickle
e9e352cf9a Overfilled vaginas lose cum up to twice as fast 2022-03-12 10:15:48 -08:00
lutepickle
7ce860dc1e Give induced ovulators special treatment for danger day 2022-03-12 10:15:42 -08:00
lutepickle
7387c0dfe9 Impregnation fetishists only prefer the ovulating 2022-03-12 10:15:36 -08:00
lutepickle
9da2c39d0e Only put cum in the womb when the one with the penis orgasms, and increase the volume to make up for it.
Also remove RJW's cum on body amount setting from the calculations.
2022-03-12 10:15:27 -08:00
lutepickle
6e0d6d691b Default babies to mother's last name instead of father's 2022-03-12 10:15:20 -08:00