diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e066a4..c6b9f65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# 2.2.0 (dd-mm-2024) +# 2.2.0 (23-07-2024) ## Explanations @@ -101,8 +101,7 @@ and might try to add a gene that already exists - then nothing happens. - (Major) No Penis - (Major) Minor Vulnerability -These are currently hardcoded but I can change them on popular demand. -In general minor changes are only cosmetic and wont change metabolism. +You can configure all genes, as well as their application chance, in the Genes` XML. *Why are these changes Genetic?* Because this is the genes mod, and I find things here quite robust. @@ -124,10 +123,13 @@ Because this is the genes mod, and I find things here quite robust. - Gene: Sexual Genetic Swap. Pawns have a chance to switch a random gene with their sexpartner. - (Archite) Gene: Sexual Genetic Thief. Pawns have a chance to steal a gene from their sexpartner. Genetic Disease Immunity shields against this. - Gene: Sperm Displacement. Pawns might overwrite an existing pregnancy, becoming the new father. The pregnancy will stay in its gestation progress. -- Gene: Twinkification: Pawns turn their (male) sexual partners into breedable twinks. -- Gene: Feminization: Pawns turn their (male) sexual partners into women. -- Gene: Blocked Masturbation: Pawns cannot masturbate. +- Gene: Twinkification. Pawns turn their (male) sexual partners into breedable twinks. +- Gene: Feminization. Pawns turn their (male) sexual partners into women. +- Gene: Blocked Masturbation. Pawns cannot masturbate. +- {Sexperience} Gene: Living Cumbucket. Pawns with this Gene get "filled" upon sex, and slowly disperse usable gathered cum. - Disease Gene: Infectious Blocked Masturbation +- Gene: Rut. Pawns have a chance to go into heat and need more sex for a day. (Default: 5% chance per day, to go 1 day in heat). +- Disease Gene: Infectious Rut. - Pawns will have negative thoughts about pawns with more genetic diseases than themselves. - Faction Penalties for spreading diseases, stealing genes and aging pawns with age transfer - Patch for [Imphilee Xeno](https://steamcommunity.com/sharedfiles/filedetails/?id=2990674516) by @Bunuffin @@ -142,6 +144,7 @@ Because this is the genes mod, and I find things here quite robust. - Fixed an Issue where pawns would always get the Pheromone social boost, unless they had the pheromone (#113) - Fixed two hidden dependencies on Ideology and Royalty (#115) - Fixed some more hidden dependencies on Ideology Icons (#118) +- Fixed a hidden dependency on Licentialabs (#119) **Internal:** @@ -174,6 +177,19 @@ You can now support me with [buying me a coffee](https://buymeacoffee.com/vegapn The mod will remain free, open source and I will not hide or lock any features. Its just meant if you want to drop me a tip. +**Since Beta-1** (11-07-2024) + +- Made the Feminizer and Twinkifier configurable with XML. +- Typos in the Hediff Defs, tweaking of some values. +- Living Cum-Bucket & Rut Genes +- Great icons by @Alpenglow + +**Since Beta-2** (17-07-2024) + +- Changed behaviour of living cumbucket. Now, once "really full" the output happens more rarely but is much more at once. +- More Icons by @Alpenglow <3 this time attributed correct. +- Adjusted some of the metabolic values - likes cumflation, generous donor and living cumbucket have small costs. + # 2.1.0 (27-06-2024) **Additions**: diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index 19855eb..bb1f065 100644 Binary files a/Common/Assemblies/Rjw-Genes.dll and b/Common/Assemblies/Rjw-Genes.dll differ diff --git a/Common/Defs/GeneDefs/GeneDefs_Breeding.xml b/Common/Defs/GeneDefs/GeneDefs_Breeding.xml index d9ded6c..1b946c2 100644 --- a/Common/Defs/GeneDefs/GeneDefs_Breeding.xml +++ b/Common/Defs/GeneDefs/GeneDefs_Breeding.xml @@ -41,7 +41,8 @@ rjw_genes_fertile_anus - Xenotypes with this gene have a functional uterus if they do not possess one by means of their vagina. + Xenotypes with this gene have a functional uterus if they do not possess one by + means of their vagina. For males, it is connected to the anal cavity and leads to a normal pregnancy. Genes/Icons/Fertile_anus 54 @@ -115,8 +116,9 @@ rjw_genes_hardwired_progenity - Carriers of this gene need to procreate. They suffer negative effects if they are childless, and have increased capabilities if they reach a high amount of offsprings. - Genes/Icons/RJW_Genes_PheromoneSpit + Carriers of this gene need to procreate. They suffer negative effects if they are + childless, and have increased capabilities if they reach a high amount of offsprings. + Genes/Icons/hardwired_progenity 70 @@ -125,7 +127,7 @@ -0.1 1.2 1.2 - -0.15 + +0.15 -0.1 @@ -141,7 +143,7 @@ 0.15 0.25 - 0.25 + -0.25 @@ -150,4 +152,23 @@ 0 + + rjw_genes_basic_rut + + Carriers of this gene can enter a state of heat, resulting in drastically higher + sexual activity. + Genes/Icons/rut + 1 + 1 + 11 + RJW_Genes.Gene_Rut + +
  • + + 60000 + 0.05 +
  • +
    +
    + \ No newline at end of file diff --git a/Common/Defs/GeneDefs/GeneDefs_Diseases.xml b/Common/Defs/GeneDefs/GeneDefs_Diseases.xml index a4afbd0..017c1c4 100644 --- a/Common/Defs/GeneDefs/GeneDefs_Diseases.xml +++ b/Common/Defs/GeneDefs/GeneDefs_Diseases.xml @@ -23,7 +23,7 @@ imply negative side-effects.
    1 -1 - Genes/Icons/TrialDefend + Genes/Icons/disease_immunity
  • @@ -42,7 +42,7 @@ 1 1 0.85 - UI/Icons/ColonistBar/Idle + Genes/Icons/minor_vulnerability 5 @@ -67,7 +67,7 @@ rape. 2 1 - UI/Icons/ColonistBar/Idle + Genes/Icons/major_vulnerability 6 @@ -85,12 +85,13 @@ - + rjw_genes_infectious_blocked_masturbation - Carriers of this gene are unable to masturbate - they need a partner or equipment. - Genes/Icons/Hypersexual + Carriers of this gene are unable to masturbate - they need a partner or + equipment. + Genes/Icons/blocked_masturbation 55 1 2 @@ -100,7 +101,7 @@
  • - + rjw_genes_infectious_low_fertility @@ -194,7 +195,7 @@ rjw_genes_infectious_bisexuality This gene makes the pawn bisexual, and has a chance to spread on intercourse. - Genes/Icons/RoundC + Genes/Icons/bisexuality 1 0 8 @@ -221,7 +222,7 @@ rjw_genes_infectious_homosexuality This gene makes the pawn homosexual, and has a chance to spread on intercourse. - Genes/Icons/RoundC + Genes/Icons/homosexuality 1 0 9 @@ -247,7 +248,8 @@ rjw_genes_fluctual_sexual_needs - Carriers of this genetic disease have a chance to suddenly require sex, gaining a bit of energy to find quick relief. + Carriers of this genetic disease have a chance to suddenly require sex, gaining + a bit of energy to find quick relief. UI/Icons/ColonistBar/Idle 1 2 @@ -269,8 +271,9 @@ rjw_genes_size_blinded - This genetic disease makes the carrier dramatically more drawn to pawns with huge cocks. - UI/Icons/ColonistBar/Idle + This genetic disease makes the carrier dramatically more drawn to pawns with + huge cocks. + Genes/Icons/size_blinded 1 1 11 @@ -284,8 +287,9 @@ rjw_genes_stretcher - Pawns with this gene have a chance to alter the genes of their sexual partners to prefer large cocks. - UI/Icons/ColonistBar/Idle + Pawns with this gene have a chance to alter the genes of their sexual partners + to prefer large cocks. + Genes/Icons/stretcher 1 0 12 @@ -304,4 +308,29 @@ + + + rjw_genes_infectious_rut + + Carriers of this gene can enter a state of heat, resulting in drastically + higher + sexual activity. + Genes/Icons/rut + 1 + 2 + 11 + RJW_Genes.Gene_Rut + +
  • + + 60000 + 0.05 +
  • +
  • + 0.1 +
  • +
    +
    + + \ No newline at end of file diff --git a/Common/Defs/GeneDefs/GeneDefs_Reproduction.xml b/Common/Defs/GeneDefs/GeneDefs_Reproduction.xml index ada888c..a01e245 100644 --- a/Common/Defs/GeneDefs/GeneDefs_Reproduction.xml +++ b/Common/Defs/GeneDefs/GeneDefs_Reproduction.xml @@ -187,7 +187,7 @@ Reproduction Carriers of this gene can 'overwrite' an existing pregnancy, keeping the progress but effectively replacing the father. - Genes/Icons/RJW_Genes_PheromoneSpit + Genes/Icons/pregnancy_overwrite 120 4 @@ -210,7 +210,7 @@ Reproduction Carriers of this gene are unable to masturbate - they need a partner or equipment. - Genes/Icons/Hypersexual + Genes/Icons/blocked_masturbation 60 0 1 diff --git a/Common/Defs/GeneDefs/GeneDefs_SexSpecial.xml b/Common/Defs/GeneDefs/GeneDefs_SexSpecial.xml index d715892..1d44fe7 100644 --- a/Common/Defs/GeneDefs/GeneDefs_SexSpecial.xml +++ b/Common/Defs/GeneDefs/GeneDefs_SexSpecial.xml @@ -153,7 +153,7 @@ rjw_genes_sexual_genetic_swap Carriers with this gene may switch a gene with their sex-partner. Switched Genes are always endogenes. - UI/Icons/Genes/Gene_PsychicBonding + Genes/Icons/sexual_genetic_swap 20 3 0 @@ -168,7 +168,7 @@ rjw_genes_sexual_genetic_thief Carriers with this gene may steal a gene from their sex-partner. Stolen genes are always xenogenes. - UI/Icons/Genes/Gene_PsychicBonding + Genes/Icons/sexual_genetic_thief 21 5 -2 @@ -184,7 +184,7 @@ rjw_genes_feminizer Carriers with this gene slowly turn male sexual partners into females. - UI/Icons/Genes/Gene_PsychicBonding + Genes/Icons/feminizer 31 4 -1 @@ -203,15 +203,29 @@ true false +
  • + +
  • rjw_genes_female_only
  • +
  • rjw_genes_no_penis
  • +
  • rjw_genes_minor_vulnerability
  • + + +
  • rjw_genes_small_male_genitalia
  • +
  • rjw_genes_big_breasts
  • +
  • Beard_NoBeardOnly
  • +
  • Hair_LongOnly
  • +
    + 0.25 + 0.1 +
    - rjw_genes_twinkifier Carriers with this gene slowly turn male sexual partners into breedabel cute twinks. - UI/Icons/Genes/Gene_PsychicBonding + Genes/Icons/twinkifier 50 4 -1 @@ -230,9 +244,24 @@ true false +
  • + +
  • rjw_genes_fertile_anus
  • +
  • Beauty_Pretty
  • +
  • Delicate
  • +
  • rjw_genes_minor_vulnerability
  • +
  • rjw_genes_infectious_homosexuality
  • + + +
  • rjw_genes_small_male_genitalia
  • +
  • Beard_NoBeardOnly
  • +
  • Body_Thin
  • +
  • rjw_genes_homosexual
  • +
    + 0.25 + 0.1 +
    - - \ No newline at end of file diff --git a/Common/Defs/HediffDefs/Hediffs_InfectiveGenderChanges.xml b/Common/Defs/HediffDefs/Hediffs_InfectiveGenderChanges.xml index 1ca0191..45537fd 100644 --- a/Common/Defs/HediffDefs/Hediffs_InfectiveGenderChanges.xml +++ b/Common/Defs/HediffDefs/Hediffs_InfectiveGenderChanges.xml @@ -102,7 +102,7 @@
  • Consciousness - -0.5 + -0.05
  • diff --git a/Common/Defs/HediffDefs/Hediffs_Rut.xml b/Common/Defs/HediffDefs/Hediffs_Rut.xml new file mode 100644 index 0000000..6c6ac10 --- /dev/null +++ b/Common/Defs/HediffDefs/Hediffs_Rut.xml @@ -0,0 +1,51 @@ + + + + rjw_genes_genetic_rut + HediffWithComps + + Based on genetics, this pawn is in heat. + (240,200,110) + false + 1.0 + false + false + +
  • + -1.00 +
  • +
    + +
  • + + + 0.50 + + +
  • + BloodPumping + 0.1 +
  • + + +
  • + + 0.4 + + 2.00 + + +
  • + Moving + 0.1 +
  • +
  • + BloodPumping + 0.15 +
  • + + +
    +
    + +
    \ No newline at end of file diff --git a/Common/Textures/Genes/Icons/Cumflation_Immunity.png b/Common/Textures/Genes/Icons/Cumflation_Immunity.png index 643e0bf..40b40ad 100644 Binary files a/Common/Textures/Genes/Icons/Cumflation_Immunity.png and b/Common/Textures/Genes/Icons/Cumflation_Immunity.png differ diff --git a/Common/Textures/Genes/Icons/Samples/Cumflation_Immunity.psd b/Common/Textures/Genes/Icons/Samples/Cumflation_Immunity.psd new file mode 100644 index 0000000..06e07e4 Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/Cumflation_Immunity.psd differ diff --git a/Common/Textures/Genes/Icons/Samples/Gene_Fertile.png b/Common/Textures/Genes/Icons/Samples/Gene_Fertile.png new file mode 100644 index 0000000..46abbae Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/Gene_Fertile.png differ diff --git a/Common/Textures/Genes/Icons/Samples/Gene_Inbred.png b/Common/Textures/Genes/Icons/Samples/Gene_Inbred.png new file mode 100644 index 0000000..3d8d705 Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/Gene_Inbred.png differ diff --git a/Common/Textures/Genes/Icons/Samples/Gene_MaxTemperatureLargeIncrease.png b/Common/Textures/Genes/Icons/Samples/Gene_MaxTemperatureLargeIncrease.png new file mode 100644 index 0000000..b07b305 Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/Gene_MaxTemperatureLargeIncrease.png differ diff --git a/Common/Textures/Genes/Icons/Samples/Gene_MaxTemperatureSmallIncrease копия.png b/Common/Textures/Genes/Icons/Samples/Gene_MaxTemperatureSmallIncrease копия.png new file mode 100644 index 0000000..25ad570 Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/Gene_MaxTemperatureSmallIncrease копия.png differ diff --git a/Common/Textures/Genes/Icons/Samples/Gene_PsychicBonding.png b/Common/Textures/Genes/Icons/Samples/Gene_PsychicBonding.png new file mode 100644 index 0000000..a558928 Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/Gene_PsychicBonding.png differ diff --git a/Common/Textures/Genes/Icons/Samples/Gene_PsychicallyDeaf.png b/Common/Textures/Genes/Icons/Samples/Gene_PsychicallyDeaf.png new file mode 100644 index 0000000..9a9eb8c Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/Gene_PsychicallyDeaf.png differ diff --git a/Common/Textures/Genes/Icons/Samples/Gene_TotalHealing.png b/Common/Textures/Genes/Icons/Samples/Gene_TotalHealing.png new file mode 100644 index 0000000..dda02fd Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/Gene_TotalHealing.png differ diff --git a/Common/Textures/Genes/Icons/Samples/Gene_TotalHealing.psd b/Common/Textures/Genes/Icons/Samples/Gene_TotalHealing.psd new file mode 100644 index 0000000..35dadab Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/Gene_TotalHealing.psd differ diff --git a/Common/Textures/Genes/Icons/Samples/Time.png b/Common/Textures/Genes/Icons/Samples/Time.png new file mode 100644 index 0000000..84cc532 Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/Time.png differ diff --git a/Common/Textures/Genes/Icons/Samples/blocked_masturbation.psd b/Common/Textures/Genes/Icons/Samples/blocked_masturbation.psd new file mode 100644 index 0000000..79ca75b Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/blocked_masturbation.psd differ diff --git a/Common/Textures/Genes/Icons/Samples/disease_immunity.psd b/Common/Textures/Genes/Icons/Samples/disease_immunity.psd new file mode 100644 index 0000000..f6a0ac3 Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/disease_immunity.psd differ diff --git a/Common/Textures/Genes/Icons/Samples/feminizer&twinkifier.psd b/Common/Textures/Genes/Icons/Samples/feminizer&twinkifier.psd new file mode 100644 index 0000000..cfda363 Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/feminizer&twinkifier.psd differ diff --git a/Common/Textures/Genes/Icons/Samples/hardwired_progenity.psd b/Common/Textures/Genes/Icons/Samples/hardwired_progenity.psd new file mode 100644 index 0000000..25721ce Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/hardwired_progenity.psd differ diff --git a/Common/Textures/Genes/Icons/Samples/la-copa-menstrual-04.png b/Common/Textures/Genes/Icons/Samples/la-copa-menstrual-04.png new file mode 100644 index 0000000..fdb0ccd Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/la-copa-menstrual-04.png differ diff --git a/Common/Textures/Genes/Icons/Samples/living_cumbucket.psd b/Common/Textures/Genes/Icons/Samples/living_cumbucket.psd new file mode 100644 index 0000000..85796b3 Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/living_cumbucket.psd differ diff --git a/Common/Textures/Genes/Icons/Samples/low_fertility.psd b/Common/Textures/Genes/Icons/Samples/low_fertility.psd new file mode 100644 index 0000000..5f6af24 Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/low_fertility.psd differ diff --git a/Common/Textures/Genes/Icons/Samples/pregnancy_overwrite.psd b/Common/Textures/Genes/Icons/Samples/pregnancy_overwrite.psd new file mode 100644 index 0000000..eaf1210 Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/pregnancy_overwrite.psd differ diff --git a/Common/Textures/Genes/Icons/Samples/rut.psd b/Common/Textures/Genes/Icons/Samples/rut.psd new file mode 100644 index 0000000..b15bcc6 Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/rut.psd differ diff --git a/Common/Textures/Genes/Icons/Samples/sexual_genetic_swap.psd b/Common/Textures/Genes/Icons/Samples/sexual_genetic_swap.psd new file mode 100644 index 0000000..354b409 Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/sexual_genetic_swap.psd differ diff --git a/Common/Textures/Genes/Icons/Samples/sexual_genetic_thief.psd b/Common/Textures/Genes/Icons/Samples/sexual_genetic_thief.psd new file mode 100644 index 0000000..a2b92b2 Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/sexual_genetic_thief.psd differ diff --git a/Common/Textures/Genes/Icons/Samples/size_blinded&stretcher.psd b/Common/Textures/Genes/Icons/Samples/size_blinded&stretcher.psd new file mode 100644 index 0000000..41faa92 Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/size_blinded&stretcher.psd differ diff --git a/Common/Textures/Genes/Icons/Samples/vulnerability.psd b/Common/Textures/Genes/Icons/Samples/vulnerability.psd new file mode 100644 index 0000000..5fdc6aa Binary files /dev/null and b/Common/Textures/Genes/Icons/Samples/vulnerability.psd differ diff --git a/Common/Textures/Genes/Icons/bisexuality.png b/Common/Textures/Genes/Icons/bisexuality.png new file mode 100644 index 0000000..e9356e8 Binary files /dev/null and b/Common/Textures/Genes/Icons/bisexuality.png differ diff --git a/Common/Textures/Genes/Icons/blocked_masturbation.png b/Common/Textures/Genes/Icons/blocked_masturbation.png new file mode 100644 index 0000000..f696996 Binary files /dev/null and b/Common/Textures/Genes/Icons/blocked_masturbation.png differ diff --git a/Common/Textures/Genes/Icons/disease_immunity.png b/Common/Textures/Genes/Icons/disease_immunity.png new file mode 100644 index 0000000..9567e1a Binary files /dev/null and b/Common/Textures/Genes/Icons/disease_immunity.png differ diff --git a/Common/Textures/Genes/Icons/feminizer.png b/Common/Textures/Genes/Icons/feminizer.png new file mode 100644 index 0000000..fafd7ed Binary files /dev/null and b/Common/Textures/Genes/Icons/feminizer.png differ diff --git a/Common/Textures/Genes/Icons/hardwired_progenity.png b/Common/Textures/Genes/Icons/hardwired_progenity.png new file mode 100644 index 0000000..97811e3 Binary files /dev/null and b/Common/Textures/Genes/Icons/hardwired_progenity.png differ diff --git a/Common/Textures/Genes/Icons/homosexuality.png b/Common/Textures/Genes/Icons/homosexuality.png new file mode 100644 index 0000000..cab42c7 Binary files /dev/null and b/Common/Textures/Genes/Icons/homosexuality.png differ diff --git a/Common/Textures/Genes/Icons/living_cumbucket.png b/Common/Textures/Genes/Icons/living_cumbucket.png new file mode 100644 index 0000000..b79f8cc Binary files /dev/null and b/Common/Textures/Genes/Icons/living_cumbucket.png differ diff --git a/Common/Textures/Genes/Icons/low_fertility.png b/Common/Textures/Genes/Icons/low_fertility.png new file mode 100644 index 0000000..0522d94 Binary files /dev/null and b/Common/Textures/Genes/Icons/low_fertility.png differ diff --git a/Common/Textures/Genes/Icons/major_vulnerability.png b/Common/Textures/Genes/Icons/major_vulnerability.png new file mode 100644 index 0000000..6e96a10 Binary files /dev/null and b/Common/Textures/Genes/Icons/major_vulnerability.png differ diff --git a/Common/Textures/Genes/Icons/minor_vulnerability.png b/Common/Textures/Genes/Icons/minor_vulnerability.png new file mode 100644 index 0000000..9a82f52 Binary files /dev/null and b/Common/Textures/Genes/Icons/minor_vulnerability.png differ diff --git a/Common/Textures/Genes/Icons/pregnancy_overwrite.png b/Common/Textures/Genes/Icons/pregnancy_overwrite.png new file mode 100644 index 0000000..9404a6c Binary files /dev/null and b/Common/Textures/Genes/Icons/pregnancy_overwrite.png differ diff --git a/Common/Textures/Genes/Icons/rut.png b/Common/Textures/Genes/Icons/rut.png new file mode 100644 index 0000000..05a0d23 Binary files /dev/null and b/Common/Textures/Genes/Icons/rut.png differ diff --git a/Common/Textures/Genes/Icons/sexual_genetic_swap.png b/Common/Textures/Genes/Icons/sexual_genetic_swap.png new file mode 100644 index 0000000..b0407c4 Binary files /dev/null and b/Common/Textures/Genes/Icons/sexual_genetic_swap.png differ diff --git a/Common/Textures/Genes/Icons/sexual_genetic_thief.png b/Common/Textures/Genes/Icons/sexual_genetic_thief.png new file mode 100644 index 0000000..d871b9f Binary files /dev/null and b/Common/Textures/Genes/Icons/sexual_genetic_thief.png differ diff --git a/Common/Textures/Genes/Icons/size_blinded.png b/Common/Textures/Genes/Icons/size_blinded.png new file mode 100644 index 0000000..824a00d Binary files /dev/null and b/Common/Textures/Genes/Icons/size_blinded.png differ diff --git a/Common/Textures/Genes/Icons/stretcher.png b/Common/Textures/Genes/Icons/stretcher.png new file mode 100644 index 0000000..4c25049 Binary files /dev/null and b/Common/Textures/Genes/Icons/stretcher.png differ diff --git a/Common/Textures/Genes/Icons/twinkifier.png b/Common/Textures/Genes/Icons/twinkifier.png new file mode 100644 index 0000000..3b92f1f Binary files /dev/null and b/Common/Textures/Genes/Icons/twinkifier.png differ diff --git a/LoadFolders.xml b/LoadFolders.xml index 8f11ba4..d3c2a27 100644 --- a/LoadFolders.xml +++ b/LoadFolders.xml @@ -16,5 +16,6 @@
  • Mods/Android
  • Mods/VE_Genetics
  • Mods/LicentiaLabs
  • +
  • Mods/Sexperience
  • \ No newline at end of file diff --git a/Mods/LicentiaLabs/Defs/GeneDefs/LicentiaLabs_GeneDefs.xml b/Mods/LicentiaLabs/Defs/GeneDefs/LicentiaLabs_GeneDefs.xml index 22fb911..a0a7eee 100644 --- a/Mods/LicentiaLabs/Defs/GeneDefs/LicentiaLabs_GeneDefs.xml +++ b/Mods/LicentiaLabs/Defs/GeneDefs/LicentiaLabs_GeneDefs.xml @@ -27,6 +27,8 @@ This Xenotype loves being cumflated. Genes/Icons/Cumflation 536 + -1 + 2
  • LikesCumflation @@ -71,6 +73,8 @@ Genes/Icons/Generous_Donor 538 + 2 + -1
  • Genes/Icons/RJW_Genes_Endogene_Background diff --git a/Common/Defs/HediffDefs/Hediffs_CounterCumflation.xml b/Mods/LicentiaLabs/Defs/HediffDefs/Hediffs_CounterCumflation.xml similarity index 95% rename from Common/Defs/HediffDefs/Hediffs_CounterCumflation.xml rename to Mods/LicentiaLabs/Defs/HediffDefs/Hediffs_CounterCumflation.xml index 1b30c82..282e54f 100644 --- a/Common/Defs/HediffDefs/Hediffs_CounterCumflation.xml +++ b/Mods/LicentiaLabs/Defs/HediffDefs/Hediffs_CounterCumflation.xml @@ -98,15 +98,6 @@
  • -0.75
  • -
  • - -
  • 0
  • -
  • 0
  • -
  • 0.75
  • -
  • 0.5
  • -
  • 0.2
  • - -
  • diff --git a/Mods/Sexperience/Defs/GeneDefs/Sexperience_GeneDefs.xml b/Mods/Sexperience/Defs/GeneDefs/Sexperience_GeneDefs.xml new file mode 100644 index 0000000..1d89b7e --- /dev/null +++ b/Mods/Sexperience/Defs/GeneDefs/Sexperience_GeneDefs.xml @@ -0,0 +1,21 @@ + + + + + rjw_genes_living_cumbucket + + rjw_genes_cum + When this Xenotype partakes in sexual activity, they store cum and produce it as an item. + Genes/Icons/living_cumbucket + 559 + 3 + -2 + +
  • + Genes/Icons/RJW_Genes_Endogene_Background + Genes/Icons/RJW_Genes_Xenogene_Background +
  • + +
    + + \ No newline at end of file diff --git a/Mods/Sexperience/Defs/HediffDefs/Sexperience_HediffDefs.xml b/Mods/Sexperience/Defs/HediffDefs/Sexperience_HediffDefs.xml new file mode 100644 index 0000000..2c55a7a --- /dev/null +++ b/Mods/Sexperience/Defs/HediffDefs/Sexperience_HediffDefs.xml @@ -0,0 +1,94 @@ + + + + rjw_genes_filled_living_cumbucket + HediffWithComps + + This pawn is a (filled) living cum bucket. Thanks to a generous donation, this pawn will slowly generate cum for pickup. + (240,200,110) + false + + false + false + +
  • + -0.5 +
  • +
  • + +
  • 0
  • +
  • 0.5
  • +
  • 0.25
  • +
  • 0.1
  • +
  • 0.5
  • + + +
    + +
  • + + + -0.1 + +
  • +
  • + + 0.4 + 0.8 + + -0.25 + + +
  • + Moving + -0.05 +
  • + + +
  • + + 0.65 + 0.75 + + -0.25 + + +
  • + Moving + -0.1 +
  • + + +
  • + + 1.1 + 0.6 + + -0.5 + + +
  • + Moving + -0.15 +
  • + + +
  • + + 10.1 + 0.1 + + -1.5 + + +
  • + Moving + -0.55 +
  • + + +
    +
    + + +
    diff --git a/Mods/Sexperience/Defs/JobDefs/Sexperience_JobProcessCumbucket.xml b/Mods/Sexperience/Defs/JobDefs/Sexperience_JobProcessCumbucket.xml new file mode 100644 index 0000000..6cbb372 --- /dev/null +++ b/Mods/Sexperience/Defs/JobDefs/Sexperience_JobProcessCumbucket.xml @@ -0,0 +1,15 @@ + + + + + + + ProcessCumbucket + RJW_Genes.JobDriver_ProcessingCumbucket + false + false + processing internal cumbucket. + false + + + diff --git a/Source/GeneDefOf.cs b/Source/GeneDefOf.cs index 7f0465f..c410aea 100644 --- a/Source/GeneDefOf.cs +++ b/Source/GeneDefOf.cs @@ -75,6 +75,7 @@ namespace RJW_Genes public static readonly GeneDef rjw_genes_insectincubator; public static readonly GeneDef rjw_genes_hardwired_progenity; public static readonly GeneDef rjw_genes_blocked_masturbation; + public static readonly GeneDef rjw_genes_basic_rut; // Cum public static readonly GeneDef rjw_genes_no_cum; @@ -83,6 +84,7 @@ namespace RJW_Genes [MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_likes_cumflation; [MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_cumflation_immunity; [MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_generous_donor; + [MayRequire("rjw.sexperience")] public static readonly GeneDef rjw_genes_living_cumbucket; // Reproduction @@ -141,6 +143,7 @@ namespace RJW_Genes public static readonly GeneDef rjw_genes_infectious_hypersexuality; public static readonly GeneDef rjw_genes_stretcher; public static readonly GeneDef rjw_genes_infectious_blocked_masturbation; + public static readonly GeneDef rjw_genes_infectious_rut; //Other Defs public static readonly XenotypeDef rjw_genes_succubus; diff --git a/Source/Genes/Breeding/Genes/Gene_Rut.cs b/Source/Genes/Breeding/Genes/Gene_Rut.cs new file mode 100644 index 0000000..9240dcd --- /dev/null +++ b/Source/Genes/Breeding/Genes/Gene_Rut.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace RJW_Genes +{ + public class Gene_Rut : Gene + { + public override void Tick() + { + base.Tick(); + + if (pawn == null || pawn.genes == null) + return; + + var chanceExtension = this.def.GetModExtension(); + if (chanceExtension == null) return; + + if (pawn.IsHashIntervalTick(chanceExtension.tickInterval)){ + Random r = new Random(); + if (r.NextDouble() < chanceExtension.eventChance) + { + Hediff rut = pawn.health.GetOrAddHediff(HediffDefOf.rjw_genes_genetic_rut); + rut.Severity = 1; + ModLog.Debug($"Pawn {pawn} gained rjw_genes_genetic_rut based on chance."); + } + } + } + } +} diff --git a/Source/Genes/Cum/Gene_ChangeCumAmount.cs b/Source/Genes/Cum/Genes/Gene_ChangeCumAmount.cs similarity index 100% rename from Source/Genes/Cum/Gene_ChangeCumAmount.cs rename to Source/Genes/Cum/Genes/Gene_ChangeCumAmount.cs diff --git a/Source/Genes/Cum/HediffComp_ProcessCumbucket.cs b/Source/Genes/Cum/HediffComp_ProcessCumbucket.cs new file mode 100644 index 0000000..48708cb --- /dev/null +++ b/Source/Genes/Cum/HediffComp_ProcessCumbucket.cs @@ -0,0 +1,28 @@ + +using RimWorld; +using System; +using Verse; + +namespace RJW_Genes +{ + public class HediffComp_ProcessCumbucket : HediffComp + { + + public HediffsCompProperties_ProcessCumbucketMTB Props + { + get + { + return (HediffsCompProperties_ProcessCumbucketMTB)this.props; + } + } + + public override void CompPostTick(ref float severityAdjustment) + { + if (this.Props.mtbDaysPerStage[this.parent.CurStageIndex] > 0f && base.Pawn.IsHashIntervalTick(60) && Rand.MTBEventOccurs(this.Props.mtbDaysPerStage[this.parent.CurStageIndex], 60000f, 60f)) + { + ModLog.Debug($"Triggered HediffComp_ProcessCumbucket CompPostTick - Starting a JobDriver ProcessCumbucket for {this.parent.pawn}"); + this.Pawn.jobs.StartJob(JobMaker.MakeJob(DefDatabase.GetNamed("ProcessCumbucket")), lastJobEndCondition: Verse.AI.JobCondition.InterruptForced, resumeCurJobAfterwards: true); + } + } + } +} diff --git a/Source/Genes/Cum/HediffsCompProperties_ProcessCumbucketMTB.cs b/Source/Genes/Cum/HediffsCompProperties_ProcessCumbucketMTB.cs new file mode 100644 index 0000000..919b715 --- /dev/null +++ b/Source/Genes/Cum/HediffsCompProperties_ProcessCumbucketMTB.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace RJW_Genes +{ + public class HediffsCompProperties_ProcessCumbucketMTB : HediffCompProperties + { + public HediffsCompProperties_ProcessCumbucketMTB() + { + this.compClass = typeof(HediffComp_ProcessCumbucket); + } + + public override IEnumerable ConfigErrors(HediffDef parentDef) + { + foreach (string text in base.ConfigErrors(parentDef)) + { + yield return text; + } + if (this.mtbDaysPerStage == null) + { + yield return "mtbDaysPerStage is not defined"; + } + else if (this.mtbDaysPerStage.Count != parentDef.stages.Count) + { + yield return "mtbDaysPerStage count doesn't match Hediffs number of stages"; + } + yield break; + } + + public List mtbDaysPerStage; + } +} diff --git a/Source/Genes/Cum/JobDriver_ProcessingCumbucket.cs b/Source/Genes/Cum/JobDriver_ProcessingCumbucket.cs new file mode 100644 index 0000000..b924a6d --- /dev/null +++ b/Source/Genes/Cum/JobDriver_ProcessingCumbucket.cs @@ -0,0 +1,132 @@ +using LicentiaLabs; +using System.Collections.Generic; +using Verse; +using Verse.AI; +using UnityEngine; +using System; +using rjw; +using RimWorld; + +namespace RJW_Genes +{ + /// + /// Shamelessly stolen from LicentaLabs + /// [Jaals Fork] https://gitgud.io/Jaaldabaoth/licentia-labs/-/blob/master/Source/LicentiaLabs/LicentiaLabs/JobDriver_VomitCum.cs + /// + class JobDriver_ProcessingCumbucket : JobDriver_Vomit + { + public override bool CanBeginNowWhileLyingDown() + { + return true; + } + + protected override IEnumerable MakeNewToils() + { + if (!ModsConfig.IsActive("rjw.sexperience")) + yield break; + + Toil toil = new Toil(); + toil.initAction = delegate () + { + this.ticksLeft = Rand.Range(150, 600); + int num = 0; + IntVec3 c; + for (; ; ) + { + c = this.pawn.Position + GenAdj.AdjacentCellsAndInside[Rand.Range(0, 9)]; + num++; + if (num > 12) + { + break; + } + if (c.InBounds(this.pawn.Map) && c.Standable(this.pawn.Map)) + { + // DevNote: I am not 100% what this all means, but IL_77 is a jump to the case below (it says IL_77). + // basically, this calls the next part of the function, but I am not super sure why this has to be like this. + // JobDrivers are scary. + goto IL_77; + } + } + c = this.pawn.Position; + IL_77: + this.job.targetA = c; + this.pawn.pather.StopDead(); + }; + toil.tickAction = delegate () + { + if (this.ticksLeft % 150 == 149) + { + if (!sourceName.NullOrEmpty()) + { + if (ModsConfig.IsActive("LustLicentia.RJWLabs")) + FilthMaker.TryMakeFilth(this.job.targetA.Cell, base.Map, Licentia.ThingDefs.FilthCum, sourceName); + SpawnCum(this.pawn, this.job.targetA.Cell, base.Map); + } + else + { + if (ModsConfig.IsActive("LustLicentia.RJWLabs")) + FilthMaker.TryMakeFilth(this.job.targetA.Cell, base.Map, Licentia.ThingDefs.FilthCum); + SpawnCum(this.pawn, this.job.targetA.Cell, base.Map); + } + } + this.ticksLeft--; + if (this.ticksLeft <= 0) + { + base.ReadyForNextToil(); + TaleRecorder.RecordTale(Licentia.TaleDefs.VomitedCum, new object[] + { + this.pawn + }); + } + }; + toil.defaultCompleteMode = ToilCompleteMode.Never; + toil.WithEffect(EffecterDefOf.Vomit, TargetIndex.A, new Color(100f, 100f, 100f, 0.5f)); + toil.PlaySustainerOrSound(() => SoundDefOf.Vomit, 1f); + yield return toil; + yield break; + } + + private void SpawnCum(Pawn pawn, IntVec3 cell, Map map) + { + ThingDef cumDef = DefDatabase.GetNamed("GatheredCum", true); + + Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_filled_living_cumbucket); + if (hediff == null) + { + ModLog.Warning($"{pawn} has the JobDriver_ProcessCumbucket but does not have the Hediff for filled cumbucket."); + return; + } + + // Case 1: "Normal Severity", just puke out a bit of cum here and there. + if (hediff.Severity <= 10) + { + Thing cum = ThingMaker.MakeThing(cumDef); + cum.Position = cell; + int stacks = Math.Max(1, (int)(hediff.Severity * 1.5)); + stacks = Math.Min(stacks, 75); // 75 is the default max stacksize ... + cum.stackCount = stacks; + cum.SpawnSetup(map, false); + hediff.Severity -= (stacks / 50); + } else + // Case 2: Reserviour mode, put out a lot of cum at once but less often. + { + int stacks = Math.Max(1, (int)(hediff.Severity * 1.5)); + + while (stacks > 0) + { + Thing cum = ThingMaker.MakeThing(cumDef); + cum.Position = cell; + var curStacks = Math.Min(stacks, 75); // 75 is the default max stacksize ... + cum.stackCount = stacks; + cum.SpawnSetup(map, false); + hediff.Severity -= (curStacks / 50); + stacks -= curStacks; + } + } + } + + private int ticksLeft; + + public string sourceName; + } +} diff --git a/Source/Genes/Cum/Patch_CumflationImmunity.cs b/Source/Genes/Cum/Patches/Patch_CumflationImmunity.cs similarity index 100% rename from Source/Genes/Cum/Patch_CumflationImmunity.cs rename to Source/Genes/Cum/Patches/Patch_CumflationImmunity.cs diff --git a/Source/Genes/Cum/Patch_LikesCumflation.cs b/Source/Genes/Cum/Patches/Patch_LikesCumflation.cs similarity index 100% rename from Source/Genes/Cum/Patch_LikesCumflation.cs rename to Source/Genes/Cum/Patches/Patch_LikesCumflation.cs diff --git a/Source/Genes/Cum/Patches/Patch_LivingCumbucket_StackHediff.cs b/Source/Genes/Cum/Patches/Patch_LivingCumbucket_StackHediff.cs new file mode 100644 index 0000000..67ec45e --- /dev/null +++ b/Source/Genes/Cum/Patches/Patch_LivingCumbucket_StackHediff.cs @@ -0,0 +1,64 @@ +using HarmonyLib; +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using static System.Net.Mime.MediaTypeNames; + +namespace RJW_Genes +{ + + [HarmonyPatch(typeof(SexUtility), nameof(SexUtility.SatisfyPersonal))] + public class Patch_LivingCumbucket_StackHediff + { + + /// + /// This is the amount of fluid required if the pawn has a bodysize of 1, to reach a severity in the hediff of 1. + /// The hediff can still be increased over 1.0. + /// + const float fluid_amount_required_for_hediff_severity_ = 100.0f; + + public static void Postfix(SexProps props) + { + if (!ModsConfig.IsActive("rjw.sexperience")) + return; + + // ShortCuts: Exit Early if Pawn or Partner are null (can happen with Masturbation or other nieche-cases) + if (props == null || props.pawn == null || !props.hasPartner()) + return; + + Pawn pawnA = props.pawn; + Pawn pawnB = props.partner; + + if (pawnA.genes != null && pawnA.genes.HasActiveGene(GeneDefOf.rjw_genes_living_cumbucket) && CumUtility.GetTotalFluidAmount(pawnB) > 0) + { + ProcessLivingCumbucket(pawnA, CumUtility.GetTotalFluidAmount(pawnB)); + } + + if (pawnB.genes != null && pawnB.genes.HasActiveGene(GeneDefOf.rjw_genes_living_cumbucket) && CumUtility.GetTotalFluidAmount(pawnA) > 0) + { + ProcessLivingCumbucket(pawnB, CumUtility.GetTotalFluidAmount(pawnA)); + } + } + + public static void ProcessLivingCumbucket(Pawn pawn, float cumamount) + { + float bodysize = pawn.BodySize; + float result_severity_increase = cumamount / (fluid_amount_required_for_hediff_severity_ * bodysize); + + + Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_filled_living_cumbucket); + if (hediff == null) + { + hediff = pawn.health.GetOrAddHediff(HediffDefOf.rjw_genes_filled_living_cumbucket); + hediff.Severity = 0.01f; + } + + hediff.Severity += result_severity_increase; + ModLog.Debug($"Pumping the living cumbucket {pawn} (Bodysize {bodysize}) with {cumamount} cum, resulting in severity {hediff.Severity} (+{result_severity_increase})"); + } + } +} diff --git a/Source/Genes/Cum/Patch_TransferNutrition.cs b/Source/Genes/Cum/Patches/Patch_TransferNutrition.cs similarity index 100% rename from Source/Genes/Cum/Patch_TransferNutrition.cs rename to Source/Genes/Cum/Patches/Patch_TransferNutrition.cs diff --git a/Source/Genes/GenitaliaSize/Gene_GenitaliaResizingGene.cs b/Source/Genes/GenitaliaSize/Gene_GenitaliaResizingGene.cs index adae607..b7de209 100644 --- a/Source/Genes/GenitaliaSize/Gene_GenitaliaResizingGene.cs +++ b/Source/Genes/GenitaliaSize/Gene_GenitaliaResizingGene.cs @@ -17,8 +17,6 @@ namespace RJW_Genes public abstract class Gene_GenitaliaResizingGene : RJW_Gene { - - /// /// Whether or not the gene was already applied. /// If not, it is checked on every birthday and will be applied accordingly. diff --git a/Source/Genes/Special/Defs/GeneAlteringExtension.cs b/Source/Genes/Special/Defs/GeneAlteringExtension.cs new file mode 100644 index 0000000..64b40d4 --- /dev/null +++ b/Source/Genes/Special/Defs/GeneAlteringExtension.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace RJW_Genes +{ + public class GeneAlteringExtension : DefModExtension + { + public List minorGenes; + public List majorGenes; + + public float minorApplicationChance; + public float majorApplicationChance; + } +} diff --git a/Source/Genes/Special/Patches/Patch_Feminizer.cs b/Source/Genes/Special/Patches/Patch_Feminizer.cs index 952f63a..4259654 100644 --- a/Source/Genes/Special/Patches/Patch_Feminizer.cs +++ b/Source/Genes/Special/Patches/Patch_Feminizer.cs @@ -16,8 +16,8 @@ namespace RJW_Genes [HarmonyPatch(typeof(SexUtility), "Aftersex")] public static class Patch_Feminizer { - const float MINOR_APPLICATION_CHANCE = 0.25f; // = 25% to have a minor transformation - const float MAJOR_APPLICATION_CHANCE = 0.10f; // = 10% to have a major transformation + + static GeneAlteringExtension geneAlteringExtension = GeneDefOf.rjw_genes_feminizer.GetModExtension(); public static void Postfix(SexProps props) { @@ -26,6 +26,12 @@ namespace RJW_Genes if (props.pawn.IsAnimal() || props.partner.IsAnimal()) return; + if (geneAlteringExtension == null) + { + ModLog.Warning("Did not find a (well-formed) GeneAlteringExtension for Feminizer"); + return; + } + ApplyFeminization(props.pawn); ApplyFeminization(props.partner); } @@ -44,12 +50,12 @@ namespace RJW_Genes { case float f when f > 0.8f: { - if (Random.NextDouble() < MAJOR_APPLICATION_CHANCE) + if (Random.NextDouble() < geneAlteringExtension.majorApplicationChance) MajorChange(pawn); } break; case float f when f > 0.6f: { - if (Random.NextDouble() < MINOR_APPLICATION_CHANCE) + if (Random.NextDouble() < geneAlteringExtension.minorApplicationChance) MinorChange(pawn); } break; default: @@ -57,19 +63,11 @@ namespace RJW_Genes ModLog.Debug($"Tried to feminize {pawn} - severity of feminization was too low ({hediff.def} @ {hediff.Severity} - {hediff.Label})") ; } break; } - } private static void MinorChange(Pawn pawn) { - List possibleGenes = new List() { - GeneDefOf.rjw_genes_small_male_genitalia, - GeneDefOf.rjw_genes_big_breasts, - GeneDefOf.rjw_genes_no_cum, - DefDatabase.GetNamed("Beard_NoBeardOnly"), - DefDatabase.GetNamed("Hair_LongOnly") - }; - + List possibleGenes = geneAlteringExtension.minorGenes.ToList(); GeneDef chosen = possibleGenes.RandomElement(); if (chosen == null) { @@ -90,12 +88,7 @@ namespace RJW_Genes private static void MajorChange(Pawn pawn) { - List possibleGenes = new List() { - GeneDefOf.rjw_genes_female_only, - GeneDefOf.rjw_genes_no_penis, - GeneDefOf.rjw_genes_minor_vulnerability, - }; - + List possibleGenes = geneAlteringExtension.majorGenes.ToList(); GeneDef chosen = possibleGenes.RandomElement(); if (chosen == null) { diff --git a/Source/Genes/Special/Patches/Patch_Twinkifier.cs b/Source/Genes/Special/Patches/Patch_Twinkifier.cs index 87b43bc..b7205fb 100644 --- a/Source/Genes/Special/Patches/Patch_Twinkifier.cs +++ b/Source/Genes/Special/Patches/Patch_Twinkifier.cs @@ -16,8 +16,8 @@ namespace RJW_Genes [HarmonyPatch(typeof(SexUtility), "Aftersex")] public static class Patch_Twinkifier { - const float MINOR_APPLICATION_CHANCE = 0.25f; // = 25% to have a minor transformation - const float MAJOR_APPLICATION_CHANCE = 0.10f; // = 10% to have a major transformation + + static GeneAlteringExtension geneAlteringExtension = GeneDefOf.rjw_genes_twinkifier.GetModExtension(); public static void Postfix(SexProps props) { @@ -26,6 +26,12 @@ namespace RJW_Genes if (props.pawn.IsAnimal() || props.partner.IsAnimal()) return; + if (geneAlteringExtension == null) + { + ModLog.Warning("Did not find a (well-formed) GeneAlteringExtension for Twinkifier"); + return; + } + ApplyTwinkification(props.pawn); ApplyTwinkification(props.partner); } @@ -44,12 +50,12 @@ namespace RJW_Genes { case float f when f > 0.8f: { - if (Random.NextDouble() < MAJOR_APPLICATION_CHANCE) + if (Random.NextDouble() < geneAlteringExtension.majorApplicationChance) MajorChange(pawn); } break; case float f when f > 0.6f: { - if (Random.NextDouble() < MINOR_APPLICATION_CHANCE) + if (Random.NextDouble() < geneAlteringExtension.minorApplicationChance) MinorChange(pawn); } break; default: @@ -62,12 +68,7 @@ namespace RJW_Genes private static void MinorChange(Pawn pawn) { - List possibleGenes = new List() { - GeneDefOf.rjw_genes_small_male_genitalia, - DefDatabase.GetNamed("Beard_NoBeardOnly"), - DefDatabase.GetNamed("Body_Thin"), - GeneDefOf.rjw_genes_homosexual - }; + List possibleGenes = geneAlteringExtension.minorGenes.ToList(); GeneDef chosen = possibleGenes.RandomElement(); if (chosen == null) @@ -89,13 +90,7 @@ namespace RJW_Genes private static void MajorChange(Pawn pawn) { - List possibleGenes = new List() { - GeneDefOf.rjw_genes_fertile_anus, - DefDatabase.GetNamed("Beauty_Pretty"), - DefDatabase.GetNamed("Delicate"), - GeneDefOf.rjw_genes_minor_vulnerability, - GeneDefOf.rjw_genes_infectious_homosexuality - }; + List possibleGenes = geneAlteringExtension.majorGenes.ToList(); GeneDef chosen = possibleGenes.RandomElement(); if (chosen == null) diff --git a/Source/HediffDefOf.cs b/Source/HediffDefOf.cs index 4214041..e06d6fc 100644 --- a/Source/HediffDefOf.cs +++ b/Source/HediffDefOf.cs @@ -23,11 +23,15 @@ namespace RJW_Genes public static readonly HediffDef rjw_genes_twinkification_progress; public static readonly HediffDef rjw_genes_feminization_progress; + public static readonly HediffDef rjw_genes_genetic_rut; + // Note: Counter does meant it counters it, not it's counting [MayRequire("LustLicentia.RJWLabs")] public static readonly HediffDef rjw_genes_cumstuffed_counter; [MayRequire("LustLicentia.RJWLabs")] public static readonly HediffDef rjw_genes_cumflation_counter; public static readonly HediffDef OvaryAgitator; public static readonly HediffDef Bioscaffold; + + [MayRequire("rjw.sexperience")] public static readonly HediffDef rjw_genes_filled_living_cumbucket; } } diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index 5182089..ddfa721 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -81,8 +81,13 @@ + - + + + + + @@ -109,10 +114,10 @@ - - + + - + @@ -190,6 +195,7 @@ +