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_anus54
@@ -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_progenity70
@@ -125,7 +127,7 @@
-0.11.21.2
- -0.15
+ +0.15-0.1
@@ -141,7 +143,7 @@
0.150.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
-
+
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_masturbation5512
@@ -100,7 +101,7 @@
-
+
rjw_genes_infectious_low_fertility
@@ -194,7 +195,7 @@
rjw_genes_infectious_bisexualityThis gene makes the pawn bisexual, and has a chance to spread on intercourse.
- Genes/Icons/RoundC
+ Genes/Icons/bisexuality108
@@ -221,7 +222,7 @@
rjw_genes_infectious_homosexualityThis gene makes the pawn homosexual, and has a chance to spread on intercourse.
- Genes/Icons/RoundC
+ Genes/Icons/homosexuality109
@@ -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/Idle12
@@ -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_blinded1111
@@ -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/stretcher1012
@@ -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 @@
ReproductionCarriers of this gene can 'overwrite' an existing pregnancy, keeping the
progress but effectively replacing the father.
- Genes/Icons/RJW_Genes_PheromoneSpit
+ Genes/Icons/pregnancy_overwrite1204
@@ -210,7 +210,7 @@
ReproductionCarriers of this gene are unable to masturbate - they need a partner or equipment.
- Genes/Icons/Hypersexual
+ Genes/Icons/blocked_masturbation6001
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_swapCarriers 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_swap2030
@@ -168,7 +168,7 @@
rjw_genes_sexual_genetic_thiefCarriers 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_thief215-2
@@ -184,7 +184,7 @@
rjw_genes_feminizerCarriers with this gene slowly turn male sexual partners into females.
- UI/Icons/Genes/Gene_PsychicBonding
+ Genes/Icons/feminizer314-1
@@ -203,15 +203,29 @@
truefalse
+
+
+
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_twinkifierCarriers with this gene slowly turn male sexual partners into breedabel cute twinks.
- UI/Icons/Genes/Gene_PsychicBonding
+ Genes/Icons/twinkifier504-1
@@ -230,9 +244,24 @@
truefalse
+
+
+
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/Cumflation536
+ -1
+ 2
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
+
+
+
+
+
+
\ 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 @@
+