Compare commits
85 commits
2.3.0-beta
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b70b975b67 |
||
|
|
4946df511e | ||
|
|
ef953fa1b7 | ||
|
|
be27255832 | ||
|
|
83e9f9ef5b |
||
|
|
45a451a127 | ||
|
|
7692ce3425 | ||
|
|
b13f761ede | ||
|
|
ed761327d2 | ||
|
|
e0a333f539 | ||
|
|
5025700727 | ||
|
|
a407f3f400 | ||
|
|
6e26d596cf | ||
|
|
670361a748 | ||
|
|
c7ea7144dc | ||
|
|
97eabd540d | ||
|
|
61fdb2c3b7 | ||
|
|
27511a29f3 | ||
|
|
ef05a5bbc3 | ||
|
|
7f6dc2a668 | ||
|
|
ba53413687 | ||
|
|
aa3d3985bc | ||
|
|
11226249b3 | ||
|
|
dde1c98b18 | ||
|
|
7540b96ecb |
||
|
|
b0da74ebd3 |
||
|
|
e9fa05d218 |
||
|
|
8577c3ee55 | ||
|
|
19148cc768 | ||
|
|
72acfbb8bf | ||
|
|
f5975212b1 | ||
|
|
f1ea695516 | ||
|
|
2d055a134f | ||
|
|
e402a6b2a8 |
||
|
|
f5898523a9 | ||
|
|
f3bf271381 | ||
|
|
626ae5bbd4 | ||
|
|
8e272db117 | ||
|
|
93e9c5471c | ||
|
|
b336c3059e | ||
|
|
89028f361b |
||
|
|
f470213a3c | ||
|
|
67cd837166 |
||
|
|
5aadcffcb1 |
||
|
|
44c0fff37e |
||
|
|
74b16b9ff3 |
||
|
|
4712e5fdf2 |
||
|
|
ea8f2a35a5 | ||
|
|
cb0c8c408b | ||
|
|
2413ab8f79 | ||
|
|
8b70ac8965 | ||
|
|
2941dd9a47 | ||
|
|
ab726f8279 |
||
|
|
abd0e2e8d9 | ||
|
|
07b0d2bb37 | ||
|
|
152b6157ba | ||
|
|
e8e3bc43be | ||
|
|
3d8e1f79cd | ||
|
|
564cee8da8 | ||
|
|
c4919e20e8 | ||
|
|
c7d1a9c734 | ||
|
|
6135cfe449 | ||
|
|
5744d5df0f | ||
|
|
ec40a6cfb6 | ||
|
|
fe52686b9a | ||
|
|
55a005463e |
||
|
|
183a5b75fe |
||
|
|
c8395c80be | ||
|
|
921f25b387 | ||
|
|
bffa601e36 | ||
|
|
31bd50b763 | ||
|
|
ef3f89f996 | ||
|
|
ddf218f514 |
||
|
|
1e8e4f1449 | ||
|
|
ed3d35850b |
||
|
|
9a12a901e5 | ||
|
|
df832b6556 | ||
|
|
b867ab284c | ||
|
|
d514722de0 | ||
|
|
03fd7b37de | ||
|
|
9b0da1ffc9 |
||
|
|
dd54129d7c | ||
|
|
1cfd3b7f2d | ||
|
|
b777640cb4 | ||
|
|
17ee471d9a |
31
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
---
|
||||||
|
name: Bug Report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Description**
|
||||||
|
Whats happening? What should happen?
|
||||||
|
|
||||||
|
Put any error message here too.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots.
|
||||||
|
|
||||||
|
Add the Error Message, if there is some
|
||||||
|
|
||||||
|
**Hugslog / ModList**
|
||||||
|
|
||||||
|
Please put your Link to Hugslog here.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add anything else here.
|
||||||
|
|
||||||
|
Please mention if you have a changed config or if you suspect a certain mod / interaction.
|
||||||
19
.github/ISSUE_TEMPLATE/feature.md
vendored
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
name: Feature Request
|
||||||
|
about: Suggest an Idea for this project
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. I'm always frustrated when [...]
|
||||||
|
**OR**
|
||||||
|
I would love to see something like [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
|
||||||
|
Feel free to be oppinionated, or a bit crazy.
|
||||||
|
I might not do it, but I usually don't judge.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
||||||
|
Feel free to share your paint-sketch
|
||||||
2
.gitignore
vendored
|
|
@ -255,3 +255,5 @@ paket-files/
|
||||||
# Python Tools for Visual Studio (PTVS)
|
# Python Tools for Visual Studio (PTVS)
|
||||||
__pycache__/
|
__pycache__/
|
||||||
*.pyc
|
*.pyc
|
||||||
|
|
||||||
|
*.dds
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
|
@ -18,7 +18,7 @@
|
||||||
<GeneDef ParentName="BreedingBase">
|
<GeneDef ParentName="BreedingBase">
|
||||||
<defName>rjw_genes_mechbreeder</defName>
|
<defName>rjw_genes_mechbreeder</defName>
|
||||||
<label>mechbreeder</label>
|
<label>mechbreeder</label>
|
||||||
<description>Pawns with this gene are able to birth mechanoids unharmed.</description>
|
<description>Carriers of this gene are able to birth mechanoids unharmed.</description>
|
||||||
<iconPath>World/WorldObjects/Expanding/Mechanoids</iconPath>
|
<iconPath>World/WorldObjects/Expanding/Mechanoids</iconPath>
|
||||||
<displayOrderInCategory>51</displayOrderInCategory>
|
<displayOrderInCategory>51</displayOrderInCategory>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
<GeneDef ParentName="BreedingBase">
|
<GeneDef ParentName="BreedingBase">
|
||||||
<defName>rjw_genes_zoophile</defName>
|
<defName>rjw_genes_zoophile</defName>
|
||||||
<label>zoophile</label>
|
<label>zoophile</label>
|
||||||
<description>Xenotypes with this Gene are Zoophile.</description>
|
<description>Carriers of this Gene are drawn to animals sexually.</description>
|
||||||
<iconPath>Genes/Icons/Zoophile</iconPath>
|
<iconPath>Genes/Icons/Zoophile</iconPath>
|
||||||
<displayOrderInCategory>54</displayOrderInCategory>
|
<displayOrderInCategory>54</displayOrderInCategory>
|
||||||
<forcedTraits>
|
<forcedTraits>
|
||||||
|
|
@ -41,9 +41,7 @@
|
||||||
<GeneDef ParentName="BreedingBase">
|
<GeneDef ParentName="BreedingBase">
|
||||||
<defName>rjw_genes_fertile_anus</defName>
|
<defName>rjw_genes_fertile_anus</defName>
|
||||||
<label>fertile anus</label>
|
<label>fertile anus</label>
|
||||||
<description>Xenotypes with this gene have a functional uterus if they do not possess one by
|
<description>Carriers of 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.</description>
|
||||||
means of their vagina.
|
|
||||||
For males, it is connected to the anal cavity and leads to a normal pregnancy.</description>
|
|
||||||
<iconPath>Genes/Icons/Fertile_anus</iconPath>
|
<iconPath>Genes/Icons/Fertile_anus</iconPath>
|
||||||
<displayOrderInCategory>54</displayOrderInCategory>
|
<displayOrderInCategory>54</displayOrderInCategory>
|
||||||
</GeneDef>
|
</GeneDef>
|
||||||
|
|
@ -52,7 +50,7 @@
|
||||||
<defName>rjw_genes_insectincubator</defName>
|
<defName>rjw_genes_insectincubator</defName>
|
||||||
<label>insect incubator</label>
|
<label>insect incubator</label>
|
||||||
<geneClass>RJW_Genes.Gene_InsectIncubator</geneClass>
|
<geneClass>RJW_Genes.Gene_InsectIncubator</geneClass>
|
||||||
<description>Pawns with this gene fertilize insect eggs that are placed inside them.</description>
|
<description>Carriers of this gene fertilize insect eggs that are placed inside them.</description>
|
||||||
<iconPath>Genes/Icons/Egg</iconPath>
|
<iconPath>Genes/Icons/Egg</iconPath>
|
||||||
<displayOrderInCategory>52</displayOrderInCategory>
|
<displayOrderInCategory>52</displayOrderInCategory>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
|
|
@ -62,7 +60,7 @@
|
||||||
<GeneDef ParentName="BreedingBase">
|
<GeneDef ParentName="BreedingBase">
|
||||||
<defName>rjw_genes_insectbreeder</defName>
|
<defName>rjw_genes_insectbreeder</defName>
|
||||||
<label>insect breeder</label>
|
<label>insect breeder</label>
|
||||||
<description>Pawns with this gene are able to fertilize eggs with any fertile penis.</description>
|
<description>Carriers of this gene are able to fertilize eggs with any fertile penis.</description>
|
||||||
<iconPath>Genes/Icons/Insect_Breeder</iconPath>
|
<iconPath>Genes/Icons/Insect_Breeder</iconPath>
|
||||||
<displayOrderInCategory>53</displayOrderInCategory>
|
<displayOrderInCategory>53</displayOrderInCategory>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
|
|
@ -73,8 +71,7 @@
|
||||||
<defName>rjw_genes_fervent_ovipositor</defName>
|
<defName>rjw_genes_fervent_ovipositor</defName>
|
||||||
<label>fervent ovipositor</label>
|
<label>fervent ovipositor</label>
|
||||||
<geneClass>RJW_Genes.Gene_FerventOvipositor</geneClass>
|
<geneClass>RJW_Genes.Gene_FerventOvipositor</geneClass>
|
||||||
<description>Pawns that have a female (egg producing) ovipositor produce eggs at drastically
|
<description>Carriers of this gene that have a female (egg producing) ovipositor produce eggs at drastically increased speed.</description>
|
||||||
increased speed.</description>
|
|
||||||
<iconPath>Genes/Icons/Fervent_Ovipositor</iconPath>
|
<iconPath>Genes/Icons/Fervent_Ovipositor</iconPath>
|
||||||
<displayOrderInCategory>55</displayOrderInCategory>
|
<displayOrderInCategory>55</displayOrderInCategory>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
|
|
@ -84,7 +81,7 @@
|
||||||
<GeneDef ParentName="BreedingBase">
|
<GeneDef ParentName="BreedingBase">
|
||||||
<defName>rjw_genes_mating_call</defName>
|
<defName>rjw_genes_mating_call</defName>
|
||||||
<label>mating call</label>
|
<label>mating call</label>
|
||||||
<description>This gene allows to call nearby animals and invite them for mating.</description>
|
<description>Carriers of this gene are able to call nearby animals and invite them for mating.</description>
|
||||||
<iconPath>Genes/Icons/RJW_Genes_Mating_Call</iconPath>
|
<iconPath>Genes/Icons/RJW_Genes_Mating_Call</iconPath>
|
||||||
<displayOrderInCategory>65</displayOrderInCategory>
|
<displayOrderInCategory>65</displayOrderInCategory>
|
||||||
<abilities>
|
<abilities>
|
||||||
|
|
@ -100,7 +97,7 @@
|
||||||
<GeneDef ParentName="BreedingBase">
|
<GeneDef ParentName="BreedingBase">
|
||||||
<defName>rjw_genes_pheromone_spit</defName>
|
<defName>rjw_genes_pheromone_spit</defName>
|
||||||
<label>pheromone spit</label>
|
<label>pheromone spit</label>
|
||||||
<description>This gene allows to mark targets for breeding, enticing nearby animals for a ride.</description>
|
<description>Carriers of this gene are able to release a burst of pheremones on another, making them desirable and breedable to nearby animals.</description>
|
||||||
<iconPath>Genes/Icons/RJW_Genes_PheromoneSpit</iconPath>
|
<iconPath>Genes/Icons/RJW_Genes_PheromoneSpit</iconPath>
|
||||||
<displayOrderInCategory>66</displayOrderInCategory>
|
<displayOrderInCategory>66</displayOrderInCategory>
|
||||||
<abilities>
|
<abilities>
|
||||||
|
|
@ -116,8 +113,7 @@
|
||||||
<GeneDef ParentName="BreedingBase">
|
<GeneDef ParentName="BreedingBase">
|
||||||
<defName>rjw_genes_hardwired_progenity</defName>
|
<defName>rjw_genes_hardwired_progenity</defName>
|
||||||
<label>hardwired progenity</label>
|
<label>hardwired progenity</label>
|
||||||
<description>Carriers of this gene need to procreate. They suffer negative effects if they are
|
<description>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.</description>
|
||||||
childless, and have increased capabilities if they reach a high amount of offsprings.</description>
|
|
||||||
<iconPath>Genes/Icons/hardwired_progenity</iconPath>
|
<iconPath>Genes/Icons/hardwired_progenity</iconPath>
|
||||||
<displayOrderInCategory>70</displayOrderInCategory>
|
<displayOrderInCategory>70</displayOrderInCategory>
|
||||||
|
|
||||||
|
|
@ -155,8 +151,7 @@
|
||||||
<GeneDef ParentName="BreedingBase">
|
<GeneDef ParentName="BreedingBase">
|
||||||
<defName>rjw_genes_basic_rut</defName>
|
<defName>rjw_genes_basic_rut</defName>
|
||||||
<label>rut</label>
|
<label>rut</label>
|
||||||
<description>Carriers of this gene can enter a state of heat, resulting in drastically higher
|
<description>Carriers of this gene can enter a state of heat, resulting in drastically higher sexual activity.</description>
|
||||||
sexual activity.</description>
|
|
||||||
<iconPath>Genes/Icons/rut</iconPath>
|
<iconPath>Genes/Icons/rut</iconPath>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
<biostatMet>1</biostatMet>
|
<biostatMet>1</biostatMet>
|
||||||
|
|
|
||||||
|
|
@ -58,8 +58,7 @@
|
||||||
<GeneDef ParentName="GeneTailBase">
|
<GeneDef ParentName="GeneTailBase">
|
||||||
<defName>rjw_genes_succubus_tail</defName>
|
<defName>rjw_genes_succubus_tail</defName>
|
||||||
<label>succubus tail</label>
|
<label>succubus tail</label>
|
||||||
<description>Carriers of this gene grow a slender tail ending with a heart that can act as a
|
<description>Carriers of this gene grow a slender tail ending with a heart that can act as a dexterous fifth limb.</description>
|
||||||
dexterous fifth limb.</description>
|
|
||||||
<iconPath>Genes/Icons/Succubus_Tail</iconPath>
|
<iconPath>Genes/Icons/Succubus_Tail</iconPath>
|
||||||
<iconColor>(1, 0, 0)</iconColor>
|
<iconColor>(1, 0, 0)</iconColor>
|
||||||
<displayOrderInCategory>1000</displayOrderInCategory>
|
<displayOrderInCategory>1000</displayOrderInCategory>
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,7 @@
|
||||||
<defName>rjw_genes_unbreakable</defName>
|
<defName>rjw_genes_unbreakable</defName>
|
||||||
<label>unbreakable</label>
|
<label>unbreakable</label>
|
||||||
<displayCategory>rjw_genes_damage</displayCategory>
|
<displayCategory>rjw_genes_damage</displayCategory>
|
||||||
<description>This Gene makes the Carrier unable to get mood or social penalties from being raped
|
<description>Carriers of this gene are unable to get mood or social penalties from being raped and they cannot be broken for a long period of time.</description>
|
||||||
and they cannot be broken for a long period of time.</description>
|
|
||||||
<iconPath>Genes/Icons/TrialDefend</iconPath>
|
<iconPath>Genes/Icons/TrialDefend</iconPath>
|
||||||
<displayOrderInCategory>2</displayOrderInCategory>
|
<displayOrderInCategory>2</displayOrderInCategory>
|
||||||
<biostatMet>-1</biostatMet>
|
<biostatMet>-1</biostatMet>
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,9 @@
|
||||||
<displayCategory>rjw_genes_diseases</displayCategory>
|
<displayCategory>rjw_genes_diseases</displayCategory>
|
||||||
<defName>rjw_genes_genetic_disease_immunity</defName>
|
<defName>rjw_genes_genetic_disease_immunity</defName>
|
||||||
<displayOrderInCategory>1</displayOrderInCategory>
|
<displayOrderInCategory>1</displayOrderInCategory>
|
||||||
<marketValueFactor>0.95</marketValueFactor>
|
<marketValueFactor>1.15</marketValueFactor>
|
||||||
<label>genetic disease immunity</label>
|
<label>genetic disease immunity</label>
|
||||||
<description>This gene makes the pawn immune against genetic STDs and some other genes that
|
<description>Carriers of this gene are immune against genetic STDs and some other genes that imply negative side-effects.</description>
|
||||||
imply negative side-effects.</description>
|
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
<biostatMet>-1</biostatMet>
|
<biostatMet>-1</biostatMet>
|
||||||
<iconPath>Genes/Icons/disease_immunity</iconPath>
|
<iconPath>Genes/Icons/disease_immunity</iconPath>
|
||||||
|
|
@ -32,13 +31,31 @@
|
||||||
</li>
|
</li>
|
||||||
</modExtensions>
|
</modExtensions>
|
||||||
</GeneDef>
|
</GeneDef>
|
||||||
|
|
||||||
|
<GeneDef>
|
||||||
|
<displayCategory>rjw_genes_diseases</displayCategory>
|
||||||
|
<defName>rjw_genes_disease_carrier</defName>
|
||||||
|
<displayOrderInCategory>1</displayOrderInCategory>
|
||||||
|
<marketValueFactor>1.1</marketValueFactor>
|
||||||
|
<label>disease carrier</label>
|
||||||
|
<description>Carriers of this gene are asymptomatic to genetic STDs, yet they are capable of spreading them on intercourse. </description>
|
||||||
|
<biostatCpx>2</biostatCpx>
|
||||||
|
<biostatMet>-2</biostatMet>
|
||||||
|
<iconPath>Genes/Icons/disease_immunity</iconPath>
|
||||||
|
<modExtensions>
|
||||||
|
<li MayRequire="OskarPotocki.VanillaFactionsExpanded.Core"
|
||||||
|
Class="VanillaGenesExpanded.GeneExtension">
|
||||||
|
<backgroundPathEndogenes>Genes/Icons/RJW_Genes_Endogene_Background</backgroundPathEndogenes>
|
||||||
|
<backgroundPathXenogenes>Genes/Icons/RJW_Genes_Xenogene_Background</backgroundPathXenogenes>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
|
</GeneDef>
|
||||||
|
|
||||||
|
|
||||||
<GeneDef ParentName="RJWGeneDisease">
|
<GeneDef ParentName="RJWGeneDisease">
|
||||||
<defName>rjw_genes_minor_vulnerability</defName>
|
<defName>rjw_genes_minor_vulnerability</defName>
|
||||||
<label>minor vulnerability</label>
|
<label>minor vulnerability</label>
|
||||||
<description>This gene makes the pawn a bit more vulnerable, and a slightly more attractive
|
<description>Carriers of this gene are a bit more vulnerable, and a slightly more attractive target for rape.</description>
|
||||||
target for rape.</description>
|
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
<biostatMet>1</biostatMet>
|
<biostatMet>1</biostatMet>
|
||||||
<marketValueFactor>0.85</marketValueFactor>
|
<marketValueFactor>0.85</marketValueFactor>
|
||||||
|
|
@ -63,8 +80,7 @@
|
||||||
<GeneDef ParentName="RJWGeneDisease">
|
<GeneDef ParentName="RJWGeneDisease">
|
||||||
<defName>rjw_genes_major_vulnerability</defName>
|
<defName>rjw_genes_major_vulnerability</defName>
|
||||||
<label>major vulnerability</label>
|
<label>major vulnerability</label>
|
||||||
<description>This gene makes the pawn more vulnerable, and a more attractive target for
|
<description>Carriers of this gene are more vulnerable, and a more attractive target for rape.</description>
|
||||||
rape.</description>
|
|
||||||
<biostatCpx>2</biostatCpx>
|
<biostatCpx>2</biostatCpx>
|
||||||
<biostatMet>1</biostatMet>
|
<biostatMet>1</biostatMet>
|
||||||
<iconPath>Genes/Icons/major_vulnerability</iconPath>
|
<iconPath>Genes/Icons/major_vulnerability</iconPath>
|
||||||
|
|
@ -89,8 +105,7 @@
|
||||||
<GeneDef ParentName="RJWGeneDisease">
|
<GeneDef ParentName="RJWGeneDisease">
|
||||||
<defName>rjw_genes_infectious_blocked_masturbation</defName>
|
<defName>rjw_genes_infectious_blocked_masturbation</defName>
|
||||||
<label>infectious masturbation block</label>
|
<label>infectious masturbation block</label>
|
||||||
<description>Carriers of this gene are unable to masturbate - they need a partner or
|
<description>Carriers of this gene are unable to masturbate - they need a partner or equipment.</description>
|
||||||
equipment.</description>
|
|
||||||
<iconPath>Genes/Icons/blocked_masturbation</iconPath>
|
<iconPath>Genes/Icons/blocked_masturbation</iconPath>
|
||||||
<displayOrderInCategory>55</displayOrderInCategory>
|
<displayOrderInCategory>55</displayOrderInCategory>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
|
|
@ -168,8 +183,7 @@
|
||||||
<GeneDef ParentName="RJWGeneDisease">
|
<GeneDef ParentName="RJWGeneDisease">
|
||||||
<defName>rjw_genes_infectious_hypersexuality</defName>
|
<defName>rjw_genes_infectious_hypersexuality</defName>
|
||||||
<label>infectious hypersexuality</label>
|
<label>infectious hypersexuality</label>
|
||||||
<description>This gene makes the pawn hypersexual, and has a chance to spread on
|
<description>Carriers of this genetic disease are hypersexual, and have a chance to spread this gene during intercourse.</description>
|
||||||
intercourse.</description>
|
|
||||||
<iconPath>Genes/Icons/Hypersexual</iconPath>
|
<iconPath>Genes/Icons/Hypersexual</iconPath>
|
||||||
<biostatCpx>2</biostatCpx>
|
<biostatCpx>2</biostatCpx>
|
||||||
<biostatMet>2</biostatMet>
|
<biostatMet>2</biostatMet>
|
||||||
|
|
@ -194,7 +208,7 @@
|
||||||
<GeneDef ParentName="RJWGeneDisease">
|
<GeneDef ParentName="RJWGeneDisease">
|
||||||
<defName>rjw_genes_infectious_bisexuality</defName>
|
<defName>rjw_genes_infectious_bisexuality</defName>
|
||||||
<label>infectious bisexuality</label>
|
<label>infectious bisexuality</label>
|
||||||
<description>This gene makes the pawn bisexual, and has a chance to spread on intercourse.</description>
|
<description>Carriers of this genetic disease are bisexual, and have a chance to spread this gene during intercourse.</description>
|
||||||
<iconPath>Genes/Icons/bisexuality</iconPath>
|
<iconPath>Genes/Icons/bisexuality</iconPath>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
<biostatMet>0</biostatMet>
|
<biostatMet>0</biostatMet>
|
||||||
|
|
@ -221,7 +235,7 @@
|
||||||
<GeneDef ParentName="RJWGeneDisease">
|
<GeneDef ParentName="RJWGeneDisease">
|
||||||
<defName>rjw_genes_infectious_homosexuality</defName>
|
<defName>rjw_genes_infectious_homosexuality</defName>
|
||||||
<label>infectious homosexuality</label>
|
<label>infectious homosexuality</label>
|
||||||
<description>This gene makes the pawn homosexual, and has a chance to spread on intercourse.</description>
|
<description>Carriers of this genetic diseases are homosexual, and have a chance to spread this gene during intercourse.</description>
|
||||||
<iconPath>Genes/Icons/homosexuality</iconPath>
|
<iconPath>Genes/Icons/homosexuality</iconPath>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
<biostatMet>0</biostatMet>
|
<biostatMet>0</biostatMet>
|
||||||
|
|
@ -248,8 +262,7 @@
|
||||||
<GeneDef ParentName="RJWGeneDisease">
|
<GeneDef ParentName="RJWGeneDisease">
|
||||||
<defName>rjw_genes_fluctual_sexual_needs</defName>
|
<defName>rjw_genes_fluctual_sexual_needs</defName>
|
||||||
<label>fluctual sexual needs</label>
|
<label>fluctual sexual needs</label>
|
||||||
<description>Carriers of this genetic disease have a chance to suddenly require sex, gaining
|
<description>Carriers of this genetic disease have a chance to suddenly require sex, gaining a bit of energy to find quick relief.</description>
|
||||||
a bit of energy to find quick relief.</description>
|
|
||||||
<iconPath>UI/Icons/ColonistBar/Idle</iconPath>
|
<iconPath>UI/Icons/ColonistBar/Idle</iconPath>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
<biostatMet>2</biostatMet>
|
<biostatMet>2</biostatMet>
|
||||||
|
|
@ -271,8 +284,7 @@
|
||||||
<GeneDef ParentName="RJWGeneDisease">
|
<GeneDef ParentName="RJWGeneDisease">
|
||||||
<defName>rjw_genes_size_blinded</defName>
|
<defName>rjw_genes_size_blinded</defName>
|
||||||
<label>size blinded</label>
|
<label>size blinded</label>
|
||||||
<description>This genetic disease makes the carrier dramatically more drawn to pawns with
|
<description>Carriers of this genetic disease are dramatically more drawn to pawns with huge cocks.</description>
|
||||||
huge cocks.</description>
|
|
||||||
<iconPath>Genes/Icons/size_blinded</iconPath>
|
<iconPath>Genes/Icons/size_blinded</iconPath>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
<biostatMet>1</biostatMet>
|
<biostatMet>1</biostatMet>
|
||||||
|
|
@ -287,8 +299,7 @@
|
||||||
<GeneDef ParentName="RJWGeneDisease">
|
<GeneDef ParentName="RJWGeneDisease">
|
||||||
<defName>rjw_genes_stretcher</defName>
|
<defName>rjw_genes_stretcher</defName>
|
||||||
<label>genetic stretcher</label>
|
<label>genetic stretcher</label>
|
||||||
<description>Pawns with this gene have a chance to alter the genes of their sexual partners
|
<description>Carriers of this gene have a chance to alter the genes of their sexual partners to prefer large cocks.</description>
|
||||||
to prefer large cocks.</description>
|
|
||||||
<iconPath>Genes/Icons/stretcher</iconPath>
|
<iconPath>Genes/Icons/stretcher</iconPath>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
<biostatMet>0</biostatMet>
|
<biostatMet>0</biostatMet>
|
||||||
|
|
@ -312,9 +323,7 @@
|
||||||
<GeneDef ParentName="RJWGeneDisease">
|
<GeneDef ParentName="RJWGeneDisease">
|
||||||
<defName>rjw_genes_infectious_rut</defName>
|
<defName>rjw_genes_infectious_rut</defName>
|
||||||
<label>Rut</label>
|
<label>Rut</label>
|
||||||
<description>Carriers of this gene can enter a state of heat, resulting in drastically
|
<description>Carriers of this gene can enter a state of heat, resulting in drastically higher sexual activity.</description>
|
||||||
higher
|
|
||||||
sexual activity.</description>
|
|
||||||
<iconPath>Genes/Icons/rut</iconPath>
|
<iconPath>Genes/Icons/rut</iconPath>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
<biostatMet>2</biostatMet>
|
<biostatMet>2</biostatMet>
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
<label>extra penis</label>
|
<label>extra penis</label>
|
||||||
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
||||||
|
|
||||||
<description>Males of this species grow an additional penis .</description>
|
<description>Male Carriers with this gene grow an additional penis .</description>
|
||||||
<iconPath>Genes/Icons/extra_male</iconPath>
|
<iconPath>Genes/Icons/extra_male</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_ExtraPenis</geneClass>
|
<geneClass>RJW_Genes.Gene_ExtraPenis</geneClass>
|
||||||
<displayOrderInCategory>701</displayOrderInCategory>
|
<displayOrderInCategory>701</displayOrderInCategory>
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
<defName>rjw_genes_no_penis</defName>
|
<defName>rjw_genes_no_penis</defName>
|
||||||
<label>no penis</label>
|
<label>no penis</label>
|
||||||
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
||||||
<description>Males of this do not have a penis.</description>
|
<description>Male Carriers of this gene do not have a penis.</description>
|
||||||
<iconPath>Genes/Icons/No_Male_Genitalia</iconPath>
|
<iconPath>Genes/Icons/No_Male_Genitalia</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_NoPenis</geneClass>
|
<geneClass>RJW_Genes.Gene_NoPenis</geneClass>
|
||||||
<displayOrderInCategory>702</displayOrderInCategory>
|
<displayOrderInCategory>702</displayOrderInCategory>
|
||||||
|
|
@ -44,7 +44,7 @@
|
||||||
<defName>rjw_genes_extra_vagina</defName>
|
<defName>rjw_genes_extra_vagina</defName>
|
||||||
<label>extra vagina</label>
|
<label>extra vagina</label>
|
||||||
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
||||||
<description>Females of this species grow an additional vagina .</description>
|
<description>Female Carriers with this gene grow an additional vagina .</description>
|
||||||
<iconPath>Genes/Icons/Extra_Vagina</iconPath>
|
<iconPath>Genes/Icons/Extra_Vagina</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_ExtraVagina</geneClass>
|
<geneClass>RJW_Genes.Gene_ExtraVagina</geneClass>
|
||||||
<displayOrderInCategory>703</displayOrderInCategory>
|
<displayOrderInCategory>703</displayOrderInCategory>
|
||||||
|
|
@ -57,7 +57,7 @@
|
||||||
<defName>rjw_genes_no_vagina</defName>
|
<defName>rjw_genes_no_vagina</defName>
|
||||||
<label>no vagina</label>
|
<label>no vagina</label>
|
||||||
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
||||||
<description>Females of this do not have a vagina.</description>
|
<description>Female Carriers of this gene do not have a vagina.</description>
|
||||||
<iconPath>Genes/Icons/No_Vagina</iconPath>
|
<iconPath>Genes/Icons/No_Vagina</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_NoVagina</geneClass>
|
<geneClass>RJW_Genes.Gene_NoVagina</geneClass>
|
||||||
<displayOrderInCategory>704</displayOrderInCategory>
|
<displayOrderInCategory>704</displayOrderInCategory>
|
||||||
|
|
@ -71,7 +71,7 @@
|
||||||
<defName>rjw_genes_extra_breasts</defName>
|
<defName>rjw_genes_extra_breasts</defName>
|
||||||
<label>extra breasts</label>
|
<label>extra breasts</label>
|
||||||
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
||||||
<description>Females of this species grow an additional pair of breasts .</description>
|
<description>Female Carriers of this gene grow an additional pair of breasts .</description>
|
||||||
<iconPath>Genes/Icons/Extra_Breasts</iconPath>
|
<iconPath>Genes/Icons/Extra_Breasts</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_ExtraBreasts</geneClass>
|
<geneClass>RJW_Genes.Gene_ExtraBreasts</geneClass>
|
||||||
<displayOrderInCategory>705</displayOrderInCategory>
|
<displayOrderInCategory>705</displayOrderInCategory>
|
||||||
|
|
@ -84,7 +84,7 @@
|
||||||
<defName>rjw_genes_no_breasts</defName>
|
<defName>rjw_genes_no_breasts</defName>
|
||||||
<label>no breasts</label>
|
<label>no breasts</label>
|
||||||
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
||||||
<description>Females of this do not have a pair of breasts, but only nipples.</description>
|
<description>Female Carriers of this gene do not have a pair of breasts, but only nipples.</description>
|
||||||
<iconPath>Genes/Icons/No_Breasts</iconPath>
|
<iconPath>Genes/Icons/No_Breasts</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_NoBreasts</geneClass>
|
<geneClass>RJW_Genes.Gene_NoBreasts</geneClass>
|
||||||
<displayOrderInCategory>706</displayOrderInCategory>
|
<displayOrderInCategory>706</displayOrderInCategory>
|
||||||
|
|
@ -97,7 +97,7 @@
|
||||||
<defName>rjw_genes_extra_anus</defName>
|
<defName>rjw_genes_extra_anus</defName>
|
||||||
<label>extra anus</label>
|
<label>extra anus</label>
|
||||||
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
||||||
<description>This specias has an extra anus.</description>
|
<description>Carriers of this gene have an extra anus.</description>
|
||||||
<iconPath>Genes/Icons/Extra_Anus</iconPath>
|
<iconPath>Genes/Icons/Extra_Anus</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_ExtraAnus</geneClass>
|
<geneClass>RJW_Genes.Gene_ExtraAnus</geneClass>
|
||||||
<displayOrderInCategory>707</displayOrderInCategory>
|
<displayOrderInCategory>707</displayOrderInCategory>
|
||||||
|
|
@ -110,7 +110,7 @@
|
||||||
<defName>rjw_genes_no_anus</defName>
|
<defName>rjw_genes_no_anus</defName>
|
||||||
<label>no anus</label>
|
<label>no anus</label>
|
||||||
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
|
||||||
<description>This specias has no anus.</description>
|
<description>Carriers of this gene have no anus.</description>
|
||||||
<iconPath>Genes/Icons/No_Anus</iconPath>
|
<iconPath>Genes/Icons/No_Anus</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_NoAnus</geneClass>
|
<geneClass>RJW_Genes.Gene_NoAnus</geneClass>
|
||||||
<displayOrderInCategory>708</displayOrderInCategory>
|
<displayOrderInCategory>708</displayOrderInCategory>
|
||||||
|
|
@ -123,8 +123,7 @@
|
||||||
<defName>rjw_genes_futa</defName>
|
<defName>rjw_genes_futa</defName>
|
||||||
<label>futanari</label>
|
<label>futanari</label>
|
||||||
<displayCategory>rjw_genes_gender</displayCategory>
|
<displayCategory>rjw_genes_gender</displayCategory>
|
||||||
<description>Males with this gene grow additional female genitalia, females grow additional male
|
<description>Male Carriers of this gene grow additional female genitalia, Female Carriers grow additional male genitalia.</description>
|
||||||
genitalia.</description>
|
|
||||||
<iconPath>Genes/Icons/Futa</iconPath>
|
<iconPath>Genes/Icons/Futa</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_Futa</geneClass>
|
<geneClass>RJW_Genes.Gene_Futa</geneClass>
|
||||||
<displayOrderInCategory>709</displayOrderInCategory>
|
<displayOrderInCategory>709</displayOrderInCategory>
|
||||||
|
|
@ -138,7 +137,7 @@
|
||||||
<defName>rjw_genes_femboy</defName>
|
<defName>rjw_genes_femboy</defName>
|
||||||
<label>femboy</label>
|
<label>femboy</label>
|
||||||
<displayCategory>rjw_genes_gender</displayCategory>
|
<displayCategory>rjw_genes_gender</displayCategory>
|
||||||
<description>Males with this gene are considered female despite having a penis</description>
|
<description>Male Carriers of this gene are considered female despite having a penis</description>
|
||||||
<iconPath>Genes/Icons/Futa</iconPath>
|
<iconPath>Genes/Icons/Futa</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_Femboy</geneClass>
|
<geneClass>RJW_Genes.Gene_Femboy</geneClass>
|
||||||
<displayOrderInCategory>709</displayOrderInCategory>
|
<displayOrderInCategory>709</displayOrderInCategory>
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
<GeneDef ParentName="GeneFluidAmount">
|
<GeneDef ParentName="GeneFluidAmount">
|
||||||
<defName>rjw_genes_no_fluid</defName>
|
<defName>rjw_genes_no_fluid</defName>
|
||||||
<label>no fluid</label>
|
<label>no fluid</label>
|
||||||
<description>Genitalia of these species have no fluid.</description>
|
<description>Carriers of this gene produce no sexual fluids.</description>
|
||||||
<iconPath>Genes/Icons/No_Cum</iconPath>
|
<iconPath>Genes/Icons/No_Cum</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_ChangeFluidAmount</geneClass>
|
<geneClass>RJW_Genes.Gene_ChangeFluidAmount</geneClass>
|
||||||
<displayOrderInCategory>533</displayOrderInCategory>
|
<displayOrderInCategory>533</displayOrderInCategory>
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
<GeneDef ParentName="GeneFluidAmount">
|
<GeneDef ParentName="GeneFluidAmount">
|
||||||
<defName>rjw_genes_much_fluid</defName>
|
<defName>rjw_genes_much_fluid</defName>
|
||||||
<label>much fluid</label>
|
<label>much fluid</label>
|
||||||
<description>Genitalia of this species produce a lot of fluid.</description>
|
<description>Carriers of this gene produce a lot of sexual fluids.</description>
|
||||||
<iconPath>Genes/Icons/Much_Cum</iconPath>
|
<iconPath>Genes/Icons/Much_Cum</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_ChangeFluidAmount</geneClass>
|
<geneClass>RJW_Genes.Gene_ChangeFluidAmount</geneClass>
|
||||||
<displayOrderInCategory>534</displayOrderInCategory>
|
<displayOrderInCategory>534</displayOrderInCategory>
|
||||||
|
|
@ -50,8 +50,7 @@
|
||||||
<GeneDef ParentName="GeneFluidAmount">
|
<GeneDef ParentName="GeneFluidAmount">
|
||||||
<defName>rjw_genes_very_much_fluid</defName>
|
<defName>rjw_genes_very_much_fluid</defName>
|
||||||
<label>very much fluid</label>
|
<label>very much fluid</label>
|
||||||
<description>Genitalia of this species produce a whole lot of fluid. They are like fountains
|
<description>Carriers of this gene produce an excessive amount of sexual fluids.</description>
|
||||||
basically.</description>
|
|
||||||
<iconPath>Genes/Icons/Very_Much_Cum</iconPath>
|
<iconPath>Genes/Icons/Very_Much_Cum</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_ChangeFluidAmount</geneClass>
|
<geneClass>RJW_Genes.Gene_ChangeFluidAmount</geneClass>
|
||||||
<displayOrderInCategory>535</displayOrderInCategory>
|
<displayOrderInCategory>535</displayOrderInCategory>
|
||||||
|
|
@ -81,7 +80,7 @@
|
||||||
<GeneDef ParentName="GeneFluidType">
|
<GeneDef ParentName="GeneFluidType">
|
||||||
<defName>rjw_genes_fluid_insect_spunk</defName>
|
<defName>rjw_genes_fluid_insect_spunk</defName>
|
||||||
<label>insect spunk</label>
|
<label>insect spunk</label>
|
||||||
<description>Penises and Vaginas with this gene produce insect spunk.</description>
|
<description>Carriers of this gene produce insect spunk instead of cum.</description>
|
||||||
<iconPath>Genes/Icons/RoundC</iconPath>
|
<iconPath>Genes/Icons/RoundC</iconPath>
|
||||||
<displayOrderInCategory>311</displayOrderInCategory>
|
<displayOrderInCategory>311</displayOrderInCategory>
|
||||||
<modExtensions>
|
<modExtensions>
|
||||||
|
|
@ -97,7 +96,7 @@
|
||||||
<GeneDef ParentName="GeneFluidType">
|
<GeneDef ParentName="GeneFluidType">
|
||||||
<defName>rjw_genes_fluid_cum_breasts</defName>
|
<defName>rjw_genes_fluid_cum_breasts</defName>
|
||||||
<label>cum milk</label>
|
<label>cum milk</label>
|
||||||
<description>Breasts of this xenotype produce cum.</description>
|
<description>Carriers of this gene produce cum from their breasts instead of milk.</description>
|
||||||
<iconPath>Genes/Icons/RoundC</iconPath>
|
<iconPath>Genes/Icons/RoundC</iconPath>
|
||||||
<displayOrderInCategory>312</displayOrderInCategory>
|
<displayOrderInCategory>312</displayOrderInCategory>
|
||||||
<modExtensions>
|
<modExtensions>
|
||||||
|
|
@ -109,8 +108,8 @@
|
||||||
|
|
||||||
<GeneDef ParentName="GeneFluidType">
|
<GeneDef ParentName="GeneFluidType">
|
||||||
<defName>rjw_genes_fluid_milk_penis</defName>
|
<defName>rjw_genes_fluid_milk_penis</defName>
|
||||||
<label>cum milk</label>
|
<label>milk cum</label>
|
||||||
<description>Penises of this xenotype produce milk.</description>
|
<description>Carriers of this gene produce milk from their penis instead of cum.</description>
|
||||||
<iconPath>Genes/Icons/RoundC</iconPath>
|
<iconPath>Genes/Icons/RoundC</iconPath>
|
||||||
<displayOrderInCategory>313</displayOrderInCategory>
|
<displayOrderInCategory>313</displayOrderInCategory>
|
||||||
<modExtensions>
|
<modExtensions>
|
||||||
|
|
@ -120,4 +119,23 @@
|
||||||
</modExtensions>
|
</modExtensions>
|
||||||
</GeneDef>
|
</GeneDef>
|
||||||
|
|
||||||
|
<GeneDef>
|
||||||
|
<defName>rjw_genes_generous_donor</defName>
|
||||||
|
<label>generous donor</label>
|
||||||
|
<displayCategory>rjw_genes_fluids</displayCategory>
|
||||||
|
<description>When this Xenotype transfers fluids during sex, the giver will not get hungry.</description>
|
||||||
|
<iconPath>Genes/Icons/Generous_Donor</iconPath>
|
||||||
|
<displayOrderInCategory>538</displayOrderInCategory>
|
||||||
|
|
||||||
|
<biostatCpx>2</biostatCpx>
|
||||||
|
<biostatMet>-1</biostatMet>
|
||||||
|
<modExtensions>
|
||||||
|
<li MayRequire="OskarPotocki.VanillaFactionsExpanded.Core"
|
||||||
|
Class="VanillaGenesExpanded.GeneExtension">
|
||||||
|
<backgroundPathEndogenes>Genes/Icons/RJW_Genes_Endogene_Background</backgroundPathEndogenes>
|
||||||
|
<backgroundPathXenogenes>Genes/Icons/RJW_Genes_Xenogene_Background</backgroundPathXenogenes>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
|
</GeneDef>
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
||||||
<defName>rjw_genes_big_male_genitalia</defName>
|
<defName>rjw_genes_big_male_genitalia</defName>
|
||||||
<label>big male genitalia</label>
|
<label>big male genitalia</label>
|
||||||
<description>Penises of this Xenotype are bigger.(Resizing takes place at 20th Birthday)</description>
|
<description>Carriers of this gene have larger penises.(Resizing takes place at 20th Birthday)</description>
|
||||||
<iconPath>Genes/Icons/Big_Male_Genitalia</iconPath>
|
<iconPath>Genes/Icons/Big_Male_Genitalia</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_BigMaleGenitalia</geneClass>
|
<geneClass>RJW_Genes.Gene_BigMaleGenitalia</geneClass>
|
||||||
<displayOrderInCategory>751</displayOrderInCategory>
|
<displayOrderInCategory>751</displayOrderInCategory>
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
||||||
<defName>rjw_genes_small_male_genitalia</defName>
|
<defName>rjw_genes_small_male_genitalia</defName>
|
||||||
<label>small male genitalia</label>
|
<label>small male genitalia</label>
|
||||||
<description>Penises of this Xenotype are smaller. (Resizing takes place at 20th Birthday)</description>
|
<description>Carriers of this gene have smaller penises. (Resizing takes place at 20th Birthday)</description>
|
||||||
<iconPath>Genes/Icons/Small_Male_Genitalia</iconPath>
|
<iconPath>Genes/Icons/Small_Male_Genitalia</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_SmallMaleGenitalia</geneClass>
|
<geneClass>RJW_Genes.Gene_SmallMaleGenitalia</geneClass>
|
||||||
<displayOrderInCategory>753</displayOrderInCategory>
|
<displayOrderInCategory>753</displayOrderInCategory>
|
||||||
|
|
@ -53,7 +53,7 @@
|
||||||
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
||||||
<defName>rjw_genes_loose_female_genitalia</defName>
|
<defName>rjw_genes_loose_female_genitalia</defName>
|
||||||
<label>loose female genitalia</label>
|
<label>loose female genitalia</label>
|
||||||
<description>Vaginas of this Xenotype are quite spacy. (Resizing takes place at 20th Birthday)</description>
|
<description>Carriers of this gene have spacious vaginas. (Resizing takes place at 20th Birthday)</description>
|
||||||
<iconPath>Genes/Icons/Loose_Vagina</iconPath>
|
<iconPath>Genes/Icons/Loose_Vagina</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_LooseFemaleGenitalia</geneClass>
|
<geneClass>RJW_Genes.Gene_LooseFemaleGenitalia</geneClass>
|
||||||
<displayOrderInCategory>754</displayOrderInCategory>
|
<displayOrderInCategory>754</displayOrderInCategory>
|
||||||
|
|
@ -71,7 +71,7 @@
|
||||||
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
||||||
<defName>rjw_genes_tight_female_genitalia</defName>
|
<defName>rjw_genes_tight_female_genitalia</defName>
|
||||||
<label>tight female genitalia</label>
|
<label>tight female genitalia</label>
|
||||||
<description>Vaginas of this Xenotype are pretty tight.(Resizing takes place at 20th Birthday)</description>
|
<description>Carriers of this gene have tight vaginas.(Resizing takes place at 20th Birthday)</description>
|
||||||
<iconPath>Genes/Icons/Tight_Vagina</iconPath>
|
<iconPath>Genes/Icons/Tight_Vagina</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_TightFemaleGenitalia</geneClass>
|
<geneClass>RJW_Genes.Gene_TightFemaleGenitalia</geneClass>
|
||||||
<displayOrderInCategory>756</displayOrderInCategory>
|
<displayOrderInCategory>756</displayOrderInCategory>
|
||||||
|
|
@ -90,7 +90,7 @@
|
||||||
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
||||||
<defName>rjw_genes_big_breasts</defName>
|
<defName>rjw_genes_big_breasts</defName>
|
||||||
<label>big breasts</label>
|
<label>big breasts</label>
|
||||||
<description>Females of this Xenotype have big honkers.(Resizing takes place at 20th Birthday)</description>
|
<description>Carriers of this gene have larger breasts.(Resizing takes place at 20th Birthday)</description>
|
||||||
<iconPath>Genes/Icons/Big_Breasts</iconPath>
|
<iconPath>Genes/Icons/Big_Breasts</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_BigBreasts</geneClass>
|
<geneClass>RJW_Genes.Gene_BigBreasts</geneClass>
|
||||||
<displayOrderInCategory>757</displayOrderInCategory>
|
<displayOrderInCategory>757</displayOrderInCategory>
|
||||||
|
|
@ -108,7 +108,7 @@
|
||||||
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
||||||
<defName>rjw_genes_small_breasts</defName>
|
<defName>rjw_genes_small_breasts</defName>
|
||||||
<label>small breasts</label>
|
<label>small breasts</label>
|
||||||
<description>Females of this Xenotype have smaller breasts.(Resizing takes place at 20th Birthday)</description>
|
<description>Carriers of this gene have smaller breasts.(Resizing takes place at 20th Birthday)</description>
|
||||||
<iconPath>Genes/Icons/Small_Breasts</iconPath>
|
<iconPath>Genes/Icons/Small_Breasts</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_SmallBreasts</geneClass>
|
<geneClass>RJW_Genes.Gene_SmallBreasts</geneClass>
|
||||||
<displayOrderInCategory>759</displayOrderInCategory>
|
<displayOrderInCategory>759</displayOrderInCategory>
|
||||||
|
|
@ -127,7 +127,7 @@
|
||||||
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
||||||
<defName>rjw_genes_loose_anus</defName>
|
<defName>rjw_genes_loose_anus</defName>
|
||||||
<label>loose anus</label>
|
<label>loose anus</label>
|
||||||
<description>The Anus of this Xenotype is roomy.(Resizing takes place at 20th Birthday)</description>
|
<description>Carriers of this gene have a spacious anus.(Resizing takes place at 20th Birthday)</description>
|
||||||
<iconPath>Genes/Icons/Loose_Anus</iconPath>
|
<iconPath>Genes/Icons/Loose_Anus</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_LooseAnus</geneClass>
|
<geneClass>RJW_Genes.Gene_LooseAnus</geneClass>
|
||||||
<displayOrderInCategory>760</displayOrderInCategory>
|
<displayOrderInCategory>760</displayOrderInCategory>
|
||||||
|
|
@ -145,7 +145,7 @@
|
||||||
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
<GeneDef ParentName="GeneGenitaliaSizeBase">
|
||||||
<defName>rjw_genes_tight_anus</defName>
|
<defName>rjw_genes_tight_anus</defName>
|
||||||
<label>tight anus</label>
|
<label>tight anus</label>
|
||||||
<description>The anus of this Xenotype is small.(Resizing takes place at 20th Birthday)</description>
|
<description>Carriers of this gene have a tight anus.(Resizing takes place at 20th Birthday)</description>
|
||||||
<iconPath>Genes/Icons/Tight_Anus</iconPath>
|
<iconPath>Genes/Icons/Tight_Anus</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_TightAnus</geneClass>
|
<geneClass>RJW_Genes.Gene_TightAnus</geneClass>
|
||||||
<displayOrderInCategory>762</displayOrderInCategory>
|
<displayOrderInCategory>762</displayOrderInCategory>
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,7 @@
|
||||||
<GeneDef ParentName="LifeForceBase">
|
<GeneDef ParentName="LifeForceBase">
|
||||||
<defName>rjw_genes_lifeforce</defName>
|
<defName>rjw_genes_lifeforce</defName>
|
||||||
<label>fertilin</label>
|
<label>fertilin</label>
|
||||||
<description>Carriers of this gene have a reserve of biological strength powered by a
|
<description>Carriers of this gene have a reserve of biological strength powered by a resource called fertilin. The resource can be gained and spent in various ways, some of which are unlocked by other genes.\n\nCarriers lose 5 fertilin per day from biological entropy. \n\nGene is inactive until carrier is able to have sex.</description>
|
||||||
resource called fertilin. The resource can be gained and spent in various ways, some of
|
|
||||||
which are unlocked by other genes.\n\nCarriers lose 5 fertilin per day from biological
|
|
||||||
entropy. \n\nGene is inactive until carrier is able to have sex.</description>
|
|
||||||
<geneClass>RJW_Genes.Gene_LifeForce</geneClass>
|
<geneClass>RJW_Genes.Gene_LifeForce</geneClass>
|
||||||
<resourceGizmoType>RJW_Genes.GeneGizmo_ResourceLifeForce</resourceGizmoType>
|
<resourceGizmoType>RJW_Genes.GeneGizmo_ResourceLifeForce</resourceGizmoType>
|
||||||
<resourceLabel>fertilin</resourceLabel>
|
<resourceLabel>fertilin</resourceLabel>
|
||||||
|
|
@ -30,10 +27,7 @@
|
||||||
</resourceGizmoThresholds>
|
</resourceGizmoThresholds>
|
||||||
<showGizmoOnWorldView>true</showGizmoOnWorldView>
|
<showGizmoOnWorldView>true</showGizmoOnWorldView>
|
||||||
<showGizmoWhenDrafted>true</showGizmoWhenDrafted>
|
<showGizmoWhenDrafted>true</showGizmoWhenDrafted>
|
||||||
<resourceDescription>A reserve of biological strength which can be gained and spent in a
|
<resourceDescription>A reserve of biological strength which can be gained and spent in a variety of ways. \n\nFertilin can be increased by absorbing cum, typically through oral sex or stored cum. \n\nIf fertilin reaches zero, {PAWN_nameDef} will become very unhappy and may try to obtain some forcefully.</resourceDescription>
|
||||||
variety of ways. \n\nFertilin can be increased by absorbing cum, typically through oral
|
|
||||||
sex or stored cum. \n\nIf fertilin reaches zero, {PAWN_nameDef} will become very unhappy
|
|
||||||
and may try to obtain some forcefully.</resourceDescription>
|
|
||||||
<iconPath>Genes/Icons/FertilinAlt</iconPath>
|
<iconPath>Genes/Icons/FertilinAlt</iconPath>
|
||||||
<selectionWeight>0</selectionWeight>
|
<selectionWeight>0</selectionWeight>
|
||||||
<displayOrderInCategory>-2</displayOrderInCategory>
|
<displayOrderInCategory>-2</displayOrderInCategory>
|
||||||
|
|
@ -104,8 +98,7 @@
|
||||||
<defName>rjw_genes_cockeater</defName>
|
<defName>rjw_genes_cockeater</defName>
|
||||||
<label>cockeater</label>
|
<label>cockeater</label>
|
||||||
<labelShortAdj>cockeater</labelShortAdj>
|
<labelShortAdj>cockeater</labelShortAdj>
|
||||||
<description>Carriers of this gene are able eat cocks to restore their fertilin supply.
|
<description>Carriers of this gene are able eat cocks to restore their fertilin supply. Cocks are consumed during this process.</description>
|
||||||
Cocks are consumed during that process.</description>
|
|
||||||
<iconPath>Genes/Icons/cockeater</iconPath>
|
<iconPath>Genes/Icons/cockeater</iconPath>
|
||||||
<prerequisite>rjw_genes_lifeforce</prerequisite>
|
<prerequisite>rjw_genes_lifeforce</prerequisite>
|
||||||
<displayOrderInCategory>11</displayOrderInCategory>
|
<displayOrderInCategory>11</displayOrderInCategory>
|
||||||
|
|
@ -192,8 +185,7 @@
|
||||||
<GeneDef ParentName="LifeForceBase">
|
<GeneDef ParentName="LifeForceBase">
|
||||||
<defName>rjw_genes_naked_prowess</defName>
|
<defName>rjw_genes_naked_prowess</defName>
|
||||||
<label>naked prowess</label>
|
<label>naked prowess</label>
|
||||||
<description>Carriers of this gene are able to temporarily increase their strength and
|
<description>Carriers of this gene are able to temporarily increase their strength and resilience, while they are naked.</description>
|
||||||
resilience, while they are naked.</description>
|
|
||||||
<iconPath>Genes/Icons/rjw_naked_prowess</iconPath>
|
<iconPath>Genes/Icons/rjw_naked_prowess</iconPath>
|
||||||
<prerequisite>rjw_genes_lifeforce</prerequisite>
|
<prerequisite>rjw_genes_lifeforce</prerequisite>
|
||||||
<displayOrderInCategory>14</displayOrderInCategory>
|
<displayOrderInCategory>14</displayOrderInCategory>
|
||||||
|
|
@ -210,8 +202,7 @@
|
||||||
<GeneDef ParentName="LifeForceBase">
|
<GeneDef ParentName="LifeForceBase">
|
||||||
<defName>rjw_genes_cum_eater</defName>
|
<defName>rjw_genes_cum_eater</defName>
|
||||||
<label>cum eater</label>
|
<label>cum eater</label>
|
||||||
<description>Carriers of this gene are able to absorb fertilin through eating cum. This
|
<description>Carriers of this gene are able to absorb fertilin through eating cum. This includes oral sex, eating cum for food or sucking out cumflated pawns. </description>
|
||||||
includes oral sex, eating cum for food or sucking out cumflated pawns. </description>
|
|
||||||
<iconPath>Genes/Icons/cumeater</iconPath>
|
<iconPath>Genes/Icons/cumeater</iconPath>
|
||||||
<prerequisite>rjw_genes_lifeforce</prerequisite>
|
<prerequisite>rjw_genes_lifeforce</prerequisite>
|
||||||
<displayOrderInCategory>1</displayOrderInCategory>
|
<displayOrderInCategory>1</displayOrderInCategory>
|
||||||
|
|
@ -221,8 +212,7 @@
|
||||||
<GeneDef ParentName="LifeForceBase">
|
<GeneDef ParentName="LifeForceBase">
|
||||||
<defName>rjw_genes_fertilin_absorber</defName>
|
<defName>rjw_genes_fertilin_absorber</defName>
|
||||||
<label>fertilin absorber</label>
|
<label>fertilin absorber</label>
|
||||||
<description>Carriers of this gene are able to absorb the fertilin inside sperm through
|
<description>Carriers of this gene are able to absorb the fertilin inside sperm through their vagina and anus.</description>
|
||||||
their vagina and anus.</description>
|
|
||||||
<iconPath>Genes/Icons/Vaginal_cum_absorption</iconPath>
|
<iconPath>Genes/Icons/Vaginal_cum_absorption</iconPath>
|
||||||
<prerequisite>rjw_genes_lifeforce</prerequisite>
|
<prerequisite>rjw_genes_lifeforce</prerequisite>
|
||||||
<displayOrderInCategory>2</displayOrderInCategory>
|
<displayOrderInCategory>2</displayOrderInCategory>
|
||||||
|
|
@ -231,10 +221,9 @@
|
||||||
|
|
||||||
<GeneDef ParentName="LifeForceBase">
|
<GeneDef ParentName="LifeForceBase">
|
||||||
<defName>rjw_genes_lifeforce_empath</defName>
|
<defName>rjw_genes_lifeforce_empath</defName>
|
||||||
<label>empathic lifeforce</label>
|
<label>empathic fertilin</label>
|
||||||
<geneClass>RJW_Genes.Gene_LifeForce_Empath</geneClass>
|
<geneClass>RJW_Genes.Gene_LifeForce_Empath</geneClass>
|
||||||
<description>Carriers of this gene generate lifeforce if nearby pawns are sexually
|
<description>Carriers of this gene generate fertilin if nearby pawns are sexually satisfied. Be careful: Sexually frustrated pawns will make your empath loose fertilin!</description>
|
||||||
satisfied. Be careful: Sexually frustrated pawns will make your empath loose lifeforce!</description>
|
|
||||||
<iconPath>Genes/Icons/Hypersexual</iconPath>
|
<iconPath>Genes/Icons/Hypersexual</iconPath>
|
||||||
<prerequisite>rjw_genes_lifeforce</prerequisite>
|
<prerequisite>rjw_genes_lifeforce</prerequisite>
|
||||||
<displayOrderInCategory>3</displayOrderInCategory>
|
<displayOrderInCategory>3</displayOrderInCategory>
|
||||||
|
|
@ -261,13 +250,11 @@
|
||||||
<GeneDef ParentName="LifeForceBase">
|
<GeneDef ParentName="LifeForceBase">
|
||||||
<defName>rjw_genes_drainer</defName>
|
<defName>rjw_genes_drainer</defName>
|
||||||
<label>vitality drainer</label>
|
<label>vitality drainer</label>
|
||||||
<description>Carriers of this gene are able to absorb a great amount of fertilin by draining
|
<description>Carriers of this gene are able to absorb a great amount of fertilin by draining the vitality of the partner. This is done passively through having sex with a non-drained pawn that does not have this gene.</description>
|
||||||
the vitality of the partner. This is done passively through having sex with a
|
|
||||||
non-drained pawn that does not have this gene.</description>
|
|
||||||
<iconPath>Genes/Icons/Vitality_Drainer</iconPath>
|
<iconPath>Genes/Icons/Vitality_Drainer</iconPath>
|
||||||
<prerequisite>rjw_genes_lifeforce</prerequisite>
|
<prerequisite>rjw_genes_lifeforce</prerequisite>
|
||||||
<displayOrderInCategory>4</displayOrderInCategory>
|
<displayOrderInCategory>4</displayOrderInCategory>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
<biostatMet>-1</biostatMet>
|
<biostatMet>-1</biostatMet>
|
||||||
</GeneDef>
|
</GeneDef>
|
||||||
</Defs>
|
</Defs>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<defName>rjw_genes_hypersexual</defName>
|
<defName>rjw_genes_hypersexual</defName>
|
||||||
<label>hypersexuality</label>
|
<label>hypersexuality</label>
|
||||||
<displayCategory>Reproduction</displayCategory>
|
<displayCategory>Reproduction</displayCategory>
|
||||||
<description>Xenotypes with this Gene are Hypersexual (Nymphs).</description>
|
<description>Carriers of this Gene are Hypersexual (Nymphs).</description>
|
||||||
<iconPath>Genes/Icons/Hypersexual</iconPath>
|
<iconPath>Genes/Icons/Hypersexual</iconPath>
|
||||||
<displayOrderInCategory>1</displayOrderInCategory>
|
<displayOrderInCategory>1</displayOrderInCategory>
|
||||||
<forcedTraits>
|
<forcedTraits>
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
<defName>rjw_genes_rapist</defName>
|
<defName>rjw_genes_rapist</defName>
|
||||||
<label>rapist</label>
|
<label>rapist</label>
|
||||||
<displayCategory>Reproduction</displayCategory>
|
<displayCategory>Reproduction</displayCategory>
|
||||||
<description>Xenotypes with this Gene are Rapists.</description>
|
<description>Carriers of this gene are more inclined to force themselves on others sexually.</description>
|
||||||
<iconPath>Genes/Icons/Rape</iconPath>
|
<iconPath>Genes/Icons/Rape</iconPath>
|
||||||
<biostatMet>1</biostatMet>
|
<biostatMet>1</biostatMet>
|
||||||
<displayOrderInCategory>2</displayOrderInCategory>
|
<displayOrderInCategory>2</displayOrderInCategory>
|
||||||
|
|
@ -56,7 +56,7 @@
|
||||||
<defName>rjw_genes_masochist</defName>
|
<defName>rjw_genes_masochist</defName>
|
||||||
<label>masochist</label>
|
<label>masochist</label>
|
||||||
<displayCategory>Reproduction</displayCategory>
|
<displayCategory>Reproduction</displayCategory>
|
||||||
<description>Xenotypes with this Gene are Masochists.</description>
|
<description>Carriers of this gene enjoy being the target of pain.</description>
|
||||||
<iconPath>Genes/Icons/Rape</iconPath>
|
<iconPath>Genes/Icons/Rape</iconPath>
|
||||||
<biostatMet>1</biostatMet>
|
<biostatMet>1</biostatMet>
|
||||||
<displayOrderInCategory>2</displayOrderInCategory>
|
<displayOrderInCategory>2</displayOrderInCategory>
|
||||||
|
|
@ -80,7 +80,7 @@
|
||||||
<defName>rjw_genes_homosexual</defName>
|
<defName>rjw_genes_homosexual</defName>
|
||||||
<label>homosexual</label>
|
<label>homosexual</label>
|
||||||
<displayCategory>Reproduction</displayCategory>
|
<displayCategory>Reproduction</displayCategory>
|
||||||
<description>This Gene makes you gay.</description>
|
<description>Carriers of this gene are Homosexuals.</description>
|
||||||
<iconPath>Genes/Icons/RoundC</iconPath>
|
<iconPath>Genes/Icons/RoundC</iconPath>
|
||||||
<biostatMet>0</biostatMet>
|
<biostatMet>0</biostatMet>
|
||||||
<displayOrderInCategory>3</displayOrderInCategory>
|
<displayOrderInCategory>3</displayOrderInCategory>
|
||||||
|
|
@ -136,15 +136,17 @@
|
||||||
<GeneDef>
|
<GeneDef>
|
||||||
<defName>rjw_genes_no_sex_need</defName>
|
<defName>rjw_genes_no_sex_need</defName>
|
||||||
<label>asexual</label>
|
<label>asexual</label>
|
||||||
<description>Carriers of this gene do not have a sex-need. They can still participate in
|
<description>Carriers of this gene are not sexually interested in other pawns. They still can participate in sex, but their sex-need does not decline over time.</description>
|
||||||
sex, </description>
|
|
||||||
<iconPath>Genes/Icons/Empty</iconPath>
|
<iconPath>Genes/Icons/Empty</iconPath>
|
||||||
<displayOrderInCategory>5</displayOrderInCategory>
|
<displayOrderInCategory>5</displayOrderInCategory>
|
||||||
<disablesNeeds>
|
|
||||||
<li>Sex</li>
|
|
||||||
</disablesNeeds>
|
|
||||||
<biostatMet>-1</biostatMet>
|
<biostatMet>-1</biostatMet>
|
||||||
<biostatCpx>2</biostatCpx>
|
<biostatCpx>2</biostatCpx>
|
||||||
|
<geneClass>RJW_Genes.Gene_NoSexNeed</geneClass>
|
||||||
|
<forcedTraits>
|
||||||
|
<li>
|
||||||
|
<def>Asexual</def>
|
||||||
|
</li>
|
||||||
|
</forcedTraits>
|
||||||
|
|
||||||
<randomChosen>false</randomChosen>
|
<randomChosen>false</randomChosen>
|
||||||
<exclusionTags>
|
<exclusionTags>
|
||||||
|
|
@ -164,8 +166,7 @@
|
||||||
<defName>rjw_genes_littered_births</defName>
|
<defName>rjw_genes_littered_births</defName>
|
||||||
<label>littered births</label>
|
<label>littered births</label>
|
||||||
<displayCategory>Reproduction</displayCategory>
|
<displayCategory>Reproduction</displayCategory>
|
||||||
<description>Female carriers of this gene birth litters instead of just one baby, with a
|
<description>Female carriers of this gene birth litters instead of just one baby, with a chance of having two to four babies per pregnancy.</description>
|
||||||
chance of having two to four babies per pregnancy.</description>
|
|
||||||
<iconPath>Genes/Icons/Gene_LitteredBirths</iconPath>
|
<iconPath>Genes/Icons/Gene_LitteredBirths</iconPath>
|
||||||
<displayOrderInCategory>110</displayOrderInCategory>
|
<displayOrderInCategory>110</displayOrderInCategory>
|
||||||
<marketValueFactor>1.10</marketValueFactor>
|
<marketValueFactor>1.10</marketValueFactor>
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,7 @@
|
||||||
<GeneDef ParentName="SpecialBase">
|
<GeneDef ParentName="SpecialBase">
|
||||||
<defName>rjw_genes_orgasm_rush</defName>
|
<defName>rjw_genes_orgasm_rush</defName>
|
||||||
<label>orgasm rush</label>
|
<label>orgasm rush</label>
|
||||||
<description>On orgasm, carriers of this gene get a boost in activity. (rest-need is
|
<description>On orgasm, carriers of this gene get a boost in activity. (rest-need is partially filled)</description>
|
||||||
partially filled)</description>
|
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
<biostatMet>-2</biostatMet>
|
<biostatMet>-2</biostatMet>
|
||||||
<iconPath>Genes/Icons/FleshPurity</iconPath>
|
<iconPath>Genes/Icons/FleshPurity</iconPath>
|
||||||
|
|
@ -26,8 +25,7 @@
|
||||||
<GeneDef ParentName="SpecialBase">
|
<GeneDef ParentName="SpecialBase">
|
||||||
<defName>rjw_genes_youth_fountain</defName>
|
<defName>rjw_genes_youth_fountain</defName>
|
||||||
<label>youth fountain</label>
|
<label>youth fountain</label>
|
||||||
<description>Having sex with a carrier of this gene makes the partner slightly younger.
|
<description>Carriers of this gene reverse the age of their sexual partners. (Partner stays adult)</description>
|
||||||
(Partner stays adult)</description>
|
|
||||||
<biostatCpx>2</biostatCpx>
|
<biostatCpx>2</biostatCpx>
|
||||||
<biostatMet>-2</biostatMet>
|
<biostatMet>-2</biostatMet>
|
||||||
<iconPath>Genes/Icons/FireLeaves</iconPath>
|
<iconPath>Genes/Icons/FireLeaves</iconPath>
|
||||||
|
|
@ -44,8 +42,7 @@
|
||||||
<GeneDef ParentName="SpecialBase">
|
<GeneDef ParentName="SpecialBase">
|
||||||
<defName>rjw_genes_sex_age_drain</defName>
|
<defName>rjw_genes_sex_age_drain</defName>
|
||||||
<label>sexual age drain</label>
|
<label>sexual age drain</label>
|
||||||
<description>Having sex transfers some of the partners life-time to themselves. (Pawn stays
|
<description>Carriers of this gene drain the age from their sexual partners. (Pawn stays adult)</description>
|
||||||
adult)</description>
|
|
||||||
<biostatCpx>2</biostatCpx>
|
<biostatCpx>2</biostatCpx>
|
||||||
<biostatMet>-1</biostatMet>
|
<biostatMet>-1</biostatMet>
|
||||||
<iconPath>UI/Icons/ColonistBar/Idle</iconPath>
|
<iconPath>UI/Icons/ColonistBar/Idle</iconPath>
|
||||||
|
|
@ -63,7 +60,7 @@
|
||||||
<defName>rjw_genes_aphrodisiac_pheromones</defName>
|
<defName>rjw_genes_aphrodisiac_pheromones</defName>
|
||||||
<label>aphrodisiac pheromones</label>
|
<label>aphrodisiac pheromones</label>
|
||||||
<geneClass>RJW_Genes.Gene_Aphrodisiac_Pheromones</geneClass>
|
<geneClass>RJW_Genes.Gene_Aphrodisiac_Pheromones</geneClass>
|
||||||
<description>Pheremones of this pawn induce an incressed sexdrive to others nearby.</description>
|
<description>Carriers of this gene produce and aphrodisiac pheremone making others nearby more sexually needy.</description>
|
||||||
<iconPath>Genes/Icons/Pheromones</iconPath>
|
<iconPath>Genes/Icons/Pheromones</iconPath>
|
||||||
<displayOrderInCategory>4</displayOrderInCategory>
|
<displayOrderInCategory>4</displayOrderInCategory>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
|
|
@ -84,10 +81,7 @@
|
||||||
<defName>rjw_genes_sexual_mytosis</defName>
|
<defName>rjw_genes_sexual_mytosis</defName>
|
||||||
<label>orgasmic mytosis</label>
|
<label>orgasmic mytosis</label>
|
||||||
<!-- <geneClass>RJW_Genes.Gene_Aphrodisiac_Pheromones</geneClass> -->
|
<!-- <geneClass>RJW_Genes.Gene_Aphrodisiac_Pheromones</geneClass> -->
|
||||||
<description>Carriers have malfunctioning regenerative archites that grow more unstable with
|
<description>Carriers of this gene have malfunctioning regenerative archites that grow more unstable with ongoing multiple orgasms - climaxing in a process of mytosis. This will result in an (biologically) identical pawn and both twins are set in a regenerative state. Also, the pawn can have multiple orgasms: In a state of higher unstableness, they come quicker.</description>
|
||||||
ongoing multiple orgasms - climaxing in a process of mytosis. This will result in an
|
|
||||||
(biologically) identical pawn and both twins are set in a regenerative state. Also, the
|
|
||||||
pawn can have multiple orgasms: In a state of higher unstableness, they come quicker.</description>
|
|
||||||
<iconPath>UI/Icons/Genes/Gene_PsychicBonding</iconPath>
|
<iconPath>UI/Icons/Genes/Gene_PsychicBonding</iconPath>
|
||||||
<displayOrderInCategory>5</displayOrderInCategory>
|
<displayOrderInCategory>5</displayOrderInCategory>
|
||||||
<biostatCpx>5</biostatCpx>
|
<biostatCpx>5</biostatCpx>
|
||||||
|
|
@ -98,8 +92,7 @@
|
||||||
<GeneDef ParentName="SpecialBase">
|
<GeneDef ParentName="SpecialBase">
|
||||||
<defName>rjw_genes_hormonal_saliva</defName>
|
<defName>rjw_genes_hormonal_saliva</defName>
|
||||||
<label>hormonal saliva</label>
|
<label>hormonal saliva</label>
|
||||||
<description>The saliva of this xenotype stimulates growth in penises. Regular contact will
|
<description>Carriers of this gene have saliva that stimulates growth in penises. Regular contact will lead to noticable growth.</description>
|
||||||
lead to noticable growth.</description>
|
|
||||||
<biostatCpx>2</biostatCpx>
|
<biostatCpx>2</biostatCpx>
|
||||||
<biostatMet>-1</biostatMet>
|
<biostatMet>-1</biostatMet>
|
||||||
<iconPath>Genes/Icons/Big_Male_Genitalia</iconPath>
|
<iconPath>Genes/Icons/Big_Male_Genitalia</iconPath>
|
||||||
|
|
@ -119,8 +112,7 @@
|
||||||
<defName>rjw_genes_cocoonweaver</defName>
|
<defName>rjw_genes_cocoonweaver</defName>
|
||||||
<label>cocoon weaver</label>
|
<label>cocoon weaver</label>
|
||||||
<labelShortAdj>cocooner</labelShortAdj>
|
<labelShortAdj>cocooner</labelShortAdj>
|
||||||
<description>Carriers of this gene can produce a cocoon to prepare helpless (or willing)
|
<description>Carriers of this gene can produce a cocoon to prepare helpless (or willing) victims for breeding.</description>
|
||||||
victims for breeding.</description>
|
|
||||||
<iconPath>Genes/Icons/Cocoon</iconPath>
|
<iconPath>Genes/Icons/Cocoon</iconPath>
|
||||||
<displayOrderInCategory>11</displayOrderInCategory>
|
<displayOrderInCategory>11</displayOrderInCategory>
|
||||||
<abilities>
|
<abilities>
|
||||||
|
|
@ -142,7 +134,7 @@
|
||||||
<defName>rjw_genes_sex_tamer</defName>
|
<defName>rjw_genes_sex_tamer</defName>
|
||||||
<label>sexual tamer</label>
|
<label>sexual tamer</label>
|
||||||
<labelShortAdj>sextamer</labelShortAdj>
|
<labelShortAdj>sextamer</labelShortAdj>
|
||||||
<description>Bestiality has a chance to tame animals or advance their training.</description>
|
<description>Carriers of this gene can bestow intelligence and docility to animals during sexual encounters, effectively increasing their training.</description>
|
||||||
<iconPath>Genes/Icons/RJW_Genes_SexualTamer</iconPath>
|
<iconPath>Genes/Icons/RJW_Genes_SexualTamer</iconPath>
|
||||||
<displayOrderInCategory>14</displayOrderInCategory>
|
<displayOrderInCategory>14</displayOrderInCategory>
|
||||||
<biostatCpx>2</biostatCpx>
|
<biostatCpx>2</biostatCpx>
|
||||||
|
|
@ -152,7 +144,7 @@
|
||||||
<GeneDef ParentName="SpecialBase">
|
<GeneDef ParentName="SpecialBase">
|
||||||
<defName>rjw_genes_sexual_genetic_swap</defName>
|
<defName>rjw_genes_sexual_genetic_swap</defName>
|
||||||
<label>sexual genetic swap</label>
|
<label>sexual genetic swap</label>
|
||||||
<description>Carriers with this gene may switch a gene with their sex-partner. Switched Genes are always endogenes.</description>
|
<description>Carriers of this gene may switch a gene with their sex-partner. Switched Genes are always endogenes.</description>
|
||||||
<iconPath>Genes/Icons/sexual_genetic_swap</iconPath>
|
<iconPath>Genes/Icons/sexual_genetic_swap</iconPath>
|
||||||
<displayOrderInCategory>20</displayOrderInCategory>
|
<displayOrderInCategory>20</displayOrderInCategory>
|
||||||
<biostatCpx>3</biostatCpx>
|
<biostatCpx>3</biostatCpx>
|
||||||
|
|
@ -167,7 +159,7 @@
|
||||||
<GeneDef ParentName="SpecialBase">
|
<GeneDef ParentName="SpecialBase">
|
||||||
<defName>rjw_genes_sexual_genetic_thief</defName>
|
<defName>rjw_genes_sexual_genetic_thief</defName>
|
||||||
<label>sexual gene thief</label>
|
<label>sexual gene thief</label>
|
||||||
<description>Carriers with this gene may steal a gene from their sex-partner. Stolen genes are always xenogenes.</description>
|
<description>Carriers of this gene may steal a gene from their sex-partner. Stolen genes are always xenogenes.</description>
|
||||||
<iconPath>Genes/Icons/sexual_genetic_thief</iconPath>
|
<iconPath>Genes/Icons/sexual_genetic_thief</iconPath>
|
||||||
<displayOrderInCategory>21</displayOrderInCategory>
|
<displayOrderInCategory>21</displayOrderInCategory>
|
||||||
<biostatCpx>5</biostatCpx>
|
<biostatCpx>5</biostatCpx>
|
||||||
|
|
@ -183,7 +175,7 @@
|
||||||
<GeneDef ParentName="SpecialBase">
|
<GeneDef ParentName="SpecialBase">
|
||||||
<defName>rjw_genes_feminizer</defName>
|
<defName>rjw_genes_feminizer</defName>
|
||||||
<label>feminizer</label>
|
<label>feminizer</label>
|
||||||
<description>Carriers with this gene slowly turn male sexual partners into females.</description>
|
<description>Carriers of this gene slowly turn male sexual partners into females.</description>
|
||||||
<iconPath>Genes/Icons/feminizer</iconPath>
|
<iconPath>Genes/Icons/feminizer</iconPath>
|
||||||
<displayOrderInCategory>31</displayOrderInCategory>
|
<displayOrderInCategory>31</displayOrderInCategory>
|
||||||
<biostatCpx>4</biostatCpx>
|
<biostatCpx>4</biostatCpx>
|
||||||
|
|
@ -224,7 +216,7 @@
|
||||||
<GeneDef ParentName="SpecialBase">
|
<GeneDef ParentName="SpecialBase">
|
||||||
<defName>rjw_genes_twinkifier</defName>
|
<defName>rjw_genes_twinkifier</defName>
|
||||||
<label>twinkifier</label>
|
<label>twinkifier</label>
|
||||||
<description>Carriers with this gene slowly turn male sexual partners into breedabel cute twinks.</description>
|
<description>Carriers of this gene slowly turn male sexual partners into breedable cute twinks.</description>
|
||||||
<iconPath>Genes/Icons/twinkifier</iconPath>
|
<iconPath>Genes/Icons/twinkifier</iconPath>
|
||||||
<displayOrderInCategory>50</displayOrderInCategory>
|
<displayOrderInCategory>50</displayOrderInCategory>
|
||||||
<biostatCpx>4</biostatCpx>
|
<biostatCpx>4</biostatCpx>
|
||||||
|
|
@ -269,7 +261,7 @@
|
||||||
<defName>rjw_genes_electric_satisfaction</defName>
|
<defName>rjw_genes_electric_satisfaction</defName>
|
||||||
<label>electric satisfaction</label>
|
<label>electric satisfaction</label>
|
||||||
<!-- DevNote: This does not need any class, all is handled in `RJW_Genes.Patch_ElectricSatisfaction` -->
|
<!-- DevNote: This does not need any class, all is handled in `RJW_Genes.Patch_ElectricSatisfaction` -->
|
||||||
<description>Upon reaching climax, carriers of this gene can charge nearby powergrids.</description>
|
<description>Carriers of this gene produce an electrical charge in nearby electronics during orgasm. This charge is substantial enough to charge batteries.</description>
|
||||||
<iconPath>Genes/Icons/RoundC</iconPath>
|
<iconPath>Genes/Icons/RoundC</iconPath>
|
||||||
<displayOrderInCategory>20</displayOrderInCategory>
|
<displayOrderInCategory>20</displayOrderInCategory>
|
||||||
<biostatCpx>2</biostatCpx>
|
<biostatCpx>2</biostatCpx>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<defName>rjw_genes_female_only</defName>
|
<defName>rjw_genes_female_only</defName>
|
||||||
<label>female</label>
|
<label>female</label>
|
||||||
<displayCategory>rjw_genes_gender</displayCategory>
|
<displayCategory>rjw_genes_gender</displayCategory>
|
||||||
<description>This Xenotype only has females.</description>
|
<description>Carriers of this gene are only female.</description>
|
||||||
<biostatCpx>0</biostatCpx>
|
<biostatCpx>0</biostatCpx>
|
||||||
<iconPath>Genes/Icons/Female_Only</iconPath>
|
<iconPath>Genes/Icons/Female_Only</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_FemaleOnly</geneClass>
|
<geneClass>RJW_Genes.Gene_FemaleOnly</geneClass>
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
<defName>rjw_genes_male_only</defName>
|
<defName>rjw_genes_male_only</defName>
|
||||||
<displayCategory>rjw_genes_gender</displayCategory>
|
<displayCategory>rjw_genes_gender</displayCategory>
|
||||||
<label>male</label>
|
<label>male</label>
|
||||||
<description>This Xenotype only has males.</description>
|
<description>Carriers of this gene are only male.</description>
|
||||||
<biostatCpx>0</biostatCpx>
|
<biostatCpx>0</biostatCpx>
|
||||||
<iconPath>Genes/Icons/Male_Only</iconPath>
|
<iconPath>Genes/Icons/Male_Only</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_MaleOnly</geneClass>
|
<geneClass>RJW_Genes.Gene_MaleOnly</geneClass>
|
||||||
|
|
@ -48,7 +48,7 @@
|
||||||
<defName>rjw_genes_gender_fluid</defName>
|
<defName>rjw_genes_gender_fluid</defName>
|
||||||
<displayCategory>rjw_genes_gender</displayCategory>
|
<displayCategory>rjw_genes_gender</displayCategory>
|
||||||
<label>genderfluid</label>
|
<label>genderfluid</label>
|
||||||
<description>Everyday carriers of this gene might change their biological sex.</description>
|
<description>Carriers of this gene might change their biological sex daily.</description>
|
||||||
<biostatCpx>0</biostatCpx>
|
<biostatCpx>0</biostatCpx>
|
||||||
<iconPath>Genes/Icons/Futa</iconPath>
|
<iconPath>Genes/Icons/Futa</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_GenderFluid</geneClass>
|
<geneClass>RJW_Genes.Gene_GenderFluid</geneClass>
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,8 @@
|
||||||
<XenotypeDef>
|
<XenotypeDef>
|
||||||
<defName>rjw_genes_succubus</defName>
|
<defName>rjw_genes_succubus</defName>
|
||||||
<label>succubus</label>
|
<label>succubus</label>
|
||||||
<description>Succubi are strongly enhanced xenohumans. These overnaturally beautiful creatures
|
<description>Succubi are strongly enhanced xenohumans. These overnaturally beautiful creatures strive parasitically on the Fertilin found in semen.</description>
|
||||||
strive parasitically on the Fertilin found in semen.</description>
|
<descriptionShort>Succubi are beautiful and extremely hungry Xenohumans. They strive on having sex and extracting their victims life-force through this. </descriptionShort>
|
||||||
<descriptionShort>Succubi are beautiful and extremely hungry Xenohumans. They strive on having
|
|
||||||
sex and extracting their victims life-force through this. </descriptionShort>
|
|
||||||
<iconPath>Genes/Icons/Xenotypes/Xenotype-Succubus</iconPath>
|
<iconPath>Genes/Icons/Xenotypes/Xenotype-Succubus</iconPath>
|
||||||
<soundDefOnImplant>PawnBecameSanguophage</soundDefOnImplant>
|
<soundDefOnImplant>PawnBecameSanguophage</soundDefOnImplant>
|
||||||
<generateWithXenogermReplicatingHediffChance>0.5</generateWithXenogermReplicatingHediffChance>
|
<generateWithXenogermReplicatingHediffChance>0.5</generateWithXenogermReplicatingHediffChance>
|
||||||
|
|
@ -53,10 +51,8 @@
|
||||||
<XenotypeDef>
|
<XenotypeDef>
|
||||||
<defName>rjw_genes_incubus</defName>
|
<defName>rjw_genes_incubus</defName>
|
||||||
<label>incubus</label>
|
<label>incubus</label>
|
||||||
<description>Incubi are strongly enhanced xenohumans. These overnaturally beautiful creatures
|
<description>Incubi are strongly enhanced xenohumans. These overnaturally beautiful creatures strive parasitically on the Fertilin found in semen.</description>
|
||||||
strive parasitically on the Fertilin found in semen.</description>
|
<descriptionShort>Incubi are beautiful and extremely hungry Xenohumans. They strive on having sex and extracting their victims life-force through this. </descriptionShort>
|
||||||
<descriptionShort>Incubi are beautiful and extremely hungry Xenohumans. They strive on having
|
|
||||||
sex and extracting their victims life-force through this. </descriptionShort>
|
|
||||||
<iconPath>Genes/Icons/Xenotypes/Xenotype-Incubus</iconPath>
|
<iconPath>Genes/Icons/Xenotypes/Xenotype-Incubus</iconPath>
|
||||||
<soundDefOnImplant>PawnBecameSanguophage</soundDefOnImplant>
|
<soundDefOnImplant>PawnBecameSanguophage</soundDefOnImplant>
|
||||||
<generateWithXenogermReplicatingHediffChance>0.5</generateWithXenogermReplicatingHediffChance>
|
<generateWithXenogermReplicatingHediffChance>0.5</generateWithXenogermReplicatingHediffChance>
|
||||||
|
|
@ -101,14 +97,8 @@
|
||||||
<XenotypeDef>
|
<XenotypeDef>
|
||||||
<defName>rjw_genes_cumazone</defName>
|
<defName>rjw_genes_cumazone</defName>
|
||||||
<label>Cumazone</label>
|
<label>Cumazone</label>
|
||||||
<description>Cumazone are a female only xenotype that excel at meele combat. Originally created
|
<description>Cumazone are a female only xenotype that excel at melee combat. Originally created as bodyguards for glitterworld amazon communities, they spred to other systems by mere strength and providing for some fetishes. They can use Fertilin to enhance their skin to overpower any combatant in melee. Their only source for Fertilin is biting off male genitalia - so be sure to have a steady supply of victim males or prepare to raid unsuspecting men of the rim.</description>
|
||||||
as bodyguards for glitterworld amazon communities, they spred to other systems by mere
|
<descriptionShort>Female only, strong meele fighters, that use Fertilin from bitten-off cocks for powerful buffs.</descriptionShort>
|
||||||
strength and providing for some fetishes. They can use Fertilin to enhance their skin to
|
|
||||||
overpower any combatant in meele. Their only source for Fertilin is biting of male genitalia -
|
|
||||||
so be sure to have a steady supply of victim males or prepare to raid unsuspecting men of the
|
|
||||||
rim.</description>
|
|
||||||
<descriptionShort>Female only, strong meele fighters, that use Fertilin from bitten-off cocks
|
|
||||||
for powerful buffs.</descriptionShort>
|
|
||||||
<iconPath>Genes/Icons/Xenotypes/Xenotype-Cumazon</iconPath>
|
<iconPath>Genes/Icons/Xenotypes/Xenotype-Cumazon</iconPath>
|
||||||
<generateWithXenogermReplicatingHediffChance>0.5</generateWithXenogermReplicatingHediffChance>
|
<generateWithXenogermReplicatingHediffChance>0.5</generateWithXenogermReplicatingHediffChance>
|
||||||
<xenogermReplicatingDurationLeftDaysRange>0.1~140</xenogermReplicatingDurationLeftDaysRange>
|
<xenogermReplicatingDurationLeftDaysRange>0.1~140</xenogermReplicatingDurationLeftDaysRange>
|
||||||
|
|
|
||||||
|
|
@ -68,4 +68,17 @@
|
||||||
<li>ExoticMisc</li>
|
<li>ExoticMisc</li>
|
||||||
</tradeTags>
|
</tradeTags>
|
||||||
</ThingDef>
|
</ThingDef>
|
||||||
|
|
||||||
|
<RecipeDef ParentName="SurgeryRemoveImplantBase">
|
||||||
|
<defName>RemoveBioscaffold</defName>
|
||||||
|
<label>remove Bioscaffold</label>
|
||||||
|
<description>Remove the bioscaffold.</description>
|
||||||
|
<descriptionHyperlinks>
|
||||||
|
<ThingDef>Bioscaffold</ThingDef>
|
||||||
|
<HediffDef>Bioscaffold</HediffDef>
|
||||||
|
</descriptionHyperlinks>
|
||||||
|
<jobString>Removing bioscaffold.</jobString>
|
||||||
|
<removesHediff>Bioscaffold</removesHediff>
|
||||||
|
</RecipeDef>
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
||||||
28
1.5/Defs/HediffDefs/Hediffs_DiseaseCarrier.xml
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Defs>
|
||||||
|
|
||||||
|
<HediffDef>
|
||||||
|
<defName>rjw_genes_disease_carrier_storage</defName>
|
||||||
|
<hediffClass>HediffWithComps</hediffClass>
|
||||||
|
<label>stored genetic diseases</label>
|
||||||
|
<description>This pawn is capable of carrying genetic diseases without being infected.</description>
|
||||||
|
<defaultLabelColor>(240,200,110)</defaultLabelColor>
|
||||||
|
<scenarioCanAdd>false</scenarioCanAdd>
|
||||||
|
<isBad>false</isBad>
|
||||||
|
<tendable>false</tendable>
|
||||||
|
<!--<visible>false</visible -->
|
||||||
|
<comps>
|
||||||
|
<li Class="RJW_Genes.HediffCompProperties_DiseaseStorage">
|
||||||
|
<!-- 60k = 1 Day, so we store default 5 days-->
|
||||||
|
<ticksThatDiseasesAreStored>300000</ticksThatDiseasesAreStored>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
<stages>
|
||||||
|
<li>
|
||||||
|
<label>active</label>
|
||||||
|
<becomeVisible>false</becomeVisible>
|
||||||
|
</li>
|
||||||
|
</stages>
|
||||||
|
</HediffDef>
|
||||||
|
|
||||||
|
</Defs>
|
||||||
|
|
@ -35,4 +35,17 @@
|
||||||
<researchPrerequisite>FertilityProcedures</researchPrerequisite>
|
<researchPrerequisite>FertilityProcedures</researchPrerequisite>
|
||||||
</recipeMaker>
|
</recipeMaker>
|
||||||
</ThingDef>
|
</ThingDef>
|
||||||
|
|
||||||
|
<RecipeDef ParentName="SurgeryRemoveImplantBase">
|
||||||
|
<defName>RemoveLimbicStimulator</defName>
|
||||||
|
<label>remove limbic stimulator</label>
|
||||||
|
<description>Remove the limbic stimulator.</description>
|
||||||
|
<descriptionHyperlinks>
|
||||||
|
<ThingDef>LimbicStimulator</ThingDef>
|
||||||
|
<HediffDef>LimbicStimulator</HediffDef>
|
||||||
|
</descriptionHyperlinks>
|
||||||
|
<jobString>Removing limbic stimulator.</jobString>
|
||||||
|
<removesHediff>LimbicStimulator</removesHediff>
|
||||||
|
</RecipeDef>
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
||||||
|
|
@ -133,4 +133,17 @@
|
||||||
<researchPrerequisite>FertilityProcedures</researchPrerequisite>
|
<researchPrerequisite>FertilityProcedures</researchPrerequisite>
|
||||||
</recipeMaker>
|
</recipeMaker>
|
||||||
</ThingDef>
|
</ThingDef>
|
||||||
|
|
||||||
|
<RecipeDef ParentName="SurgeryRemoveImplantBase">
|
||||||
|
<defName>RemoveOvaryAgitator</defName>
|
||||||
|
<label>remove ovary agitator</label>
|
||||||
|
<description>Remove the ovary agitator.</description>
|
||||||
|
<descriptionHyperlinks>
|
||||||
|
<ThingDef>OvaryAgitator</ThingDef>
|
||||||
|
<HediffDef>OvaryAgitator</HediffDef>
|
||||||
|
</descriptionHyperlinks>
|
||||||
|
<jobString>Removing ovary agitator.</jobString>
|
||||||
|
<removesHediff>OvaryAgitator</removesHediff>
|
||||||
|
</RecipeDef>
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
<stages>
|
<stages>
|
||||||
<li>
|
<li>
|
||||||
<label>cock eaten</label>
|
<label>cock eaten</label>
|
||||||
<description>My cock was eaten directly of my body, I am devestated. This is not what good head feels like. </description>
|
<description>My cock was eaten directly off my body, I am devestated. This is not what good head feels like. </description>
|
||||||
<baseMoodEffect>-30</baseMoodEffect>
|
<baseMoodEffect>-30</baseMoodEffect>
|
||||||
</li>
|
</li>
|
||||||
</stages>
|
</stages>
|
||||||
|
|
|
||||||
8
1.5/Languages/English/Keyed/Letters.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LanguageData>
|
||||||
|
<rjw_genes_twin_letter>Twins!</rjw_genes_twin_letter>
|
||||||
|
<rjw_genes_twin_letter_content>is still in labor and is having twins! Be sure to gather your doctor and additional friends and family to ensure the other baby is also born healthy!</rjw_genes_twin_letter_content>
|
||||||
|
|
||||||
|
<rjw_genes_another_baby_letter>Another baby!</rjw_genes_another_baby_letter>
|
||||||
|
<rjw_genes_another_baby_letter_content>is still in labor and is having twins! Be sure to gather your doctor and additional friends and family to ensure the other baby is also born healthy!</rjw_genes_another_baby_letter_content>
|
||||||
|
</LanguageData>
|
||||||
|
|
@ -45,9 +45,12 @@
|
||||||
<iconPath>Genes/Icons/sex_disabled</iconPath>
|
<iconPath>Genes/Icons/sex_disabled</iconPath>
|
||||||
<displayOrderInCategory>3</displayOrderInCategory>
|
<displayOrderInCategory>3</displayOrderInCategory>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
<disablesNeeds>
|
<geneClass>RJW_Genes.Gene_NoSexNeed</geneClass>
|
||||||
<li>Sex</li>
|
<forcedTraits>
|
||||||
</disablesNeeds>
|
<li>
|
||||||
|
<def>Asexual</def>
|
||||||
|
</li>
|
||||||
|
</forcedTraits>
|
||||||
<removeWhenAwakened>true</removeWhenAwakened>
|
<removeWhenAwakened>true</removeWhenAwakened>
|
||||||
</VREAndroids.AndroidGeneDef>
|
</VREAndroids.AndroidGeneDef>
|
||||||
|
|
||||||
|
|
|
||||||
68
1.5/Mods/Cumpilation/Defs/GeneDefs/Cumpilation_Genes.xml
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Defs>
|
||||||
|
|
||||||
|
<GeneDef>
|
||||||
|
<defName>rjw_genes_inflatable</defName>
|
||||||
|
<label>inflatable</label>
|
||||||
|
<displayCategory>rjw_genes_fluids</displayCategory>
|
||||||
|
<description>This Xenotype loves being stuffed with fluids and does not suffer physical impediments from being inflated.</description>
|
||||||
|
<iconPath>Genes/Icons/Cumflation</iconPath>
|
||||||
|
<displayOrderInCategory>536</displayOrderInCategory>
|
||||||
|
<biostatMet>-1</biostatMet>
|
||||||
|
<biostatCpx>2</biostatCpx>
|
||||||
|
<forcedTraits>
|
||||||
|
<li>
|
||||||
|
<def>Cumpilation_LikesCumflation</def>
|
||||||
|
</li>
|
||||||
|
</forcedTraits>
|
||||||
|
<exclusionTags>
|
||||||
|
<li>Cumpilation_NotCumflatable</li>
|
||||||
|
</exclusionTags>
|
||||||
|
|
||||||
|
<modExtensions>
|
||||||
|
<li MayRequire="OskarPotocki.VanillaFactionsExpanded.Core" Class="VanillaGenesExpanded.GeneExtension">
|
||||||
|
<backgroundPathEndogenes>Genes/Icons/RJW_Genes_Endogene_Background</backgroundPathEndogenes>
|
||||||
|
<backgroundPathXenogenes>Genes/Icons/RJW_Genes_Xenogene_Background</backgroundPathXenogenes>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
|
</GeneDef>
|
||||||
|
|
||||||
|
<GeneDef>
|
||||||
|
<defName>rjw_genes_un_inflatable</defName>
|
||||||
|
<label>inflation resistance</label>
|
||||||
|
<displayCategory>rjw_genes_fluids</displayCategory>
|
||||||
|
<description>This Xenotype cannot get inflated by fluids, neither vaginal, oral or anal.</description>
|
||||||
|
<iconPath>Genes/Icons/Cumflation_Immunity</iconPath>
|
||||||
|
<displayOrderInCategory>537</displayOrderInCategory>
|
||||||
|
<exclusionTags>
|
||||||
|
<li>Cumpilation_NotCumflatable</li>
|
||||||
|
</exclusionTags>
|
||||||
|
|
||||||
|
<modExtensions>
|
||||||
|
<li MayRequire="OskarPotocki.VanillaFactionsExpanded.Core" Class="VanillaGenesExpanded.GeneExtension">
|
||||||
|
<backgroundPathEndogenes>Genes/Icons/RJW_Genes_Endogene_Background</backgroundPathEndogenes>
|
||||||
|
<backgroundPathXenogenes>Genes/Icons/RJW_Genes_Xenogene_Background</backgroundPathXenogenes>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
|
</GeneDef>
|
||||||
|
|
||||||
|
|
||||||
|
<GeneDef>
|
||||||
|
<defName>rjw_genes_living_cumbucket</defName>
|
||||||
|
<label>living cumbucket</label>
|
||||||
|
<displayCategory>rjw_genes_fluids</displayCategory>
|
||||||
|
<description>When this Xenotype partakes in sexual activity, they store cum and produce it as an item.</description>
|
||||||
|
<iconPath>Genes/Icons/living_cumbucket</iconPath>
|
||||||
|
<displayOrderInCategory>559</displayOrderInCategory>
|
||||||
|
<biostatCpx>3</biostatCpx>
|
||||||
|
<biostatMet>-2</biostatMet>
|
||||||
|
<modExtensions>
|
||||||
|
<li MayRequire="OskarPotocki.VanillaFactionsExpanded.Core" Class="VanillaGenesExpanded.GeneExtension">
|
||||||
|
<backgroundPathEndogenes>Genes/Icons/RJW_Genes_Endogene_Background</backgroundPathEndogenes>
|
||||||
|
<backgroundPathXenogenes>Genes/Icons/RJW_Genes_Xenogene_Background</backgroundPathXenogenes>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
|
</GeneDef>
|
||||||
|
|
||||||
|
|
||||||
|
</Defs>
|
||||||
|
|
@ -0,0 +1,77 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<Defs>
|
||||||
|
<HediffDef>
|
||||||
|
<defName>RJW_Genes_Cumpilation_Cumflation_Counter</defName>
|
||||||
|
<hediffClass>HediffWithComps</hediffClass>
|
||||||
|
<label>cumflation counter</label>
|
||||||
|
<labelNoun>cumflation counter</labelNoun>
|
||||||
|
<description>Apparently you can deal with it quite well.</description>
|
||||||
|
<scenarioCanAdd>false</scenarioCanAdd>
|
||||||
|
<maxSeverity>3.0</maxSeverity>
|
||||||
|
<isBad>false</isBad>
|
||||||
|
<tendable>false</tendable>
|
||||||
|
<comps>
|
||||||
|
<li Class="HediffCompProperties_SeverityPerDay">
|
||||||
|
<severityPerDay>-0.85</severityPerDay>
|
||||||
|
</li>
|
||||||
|
<li Class="RJW_Genes.HediffCompProperties_MatchSeverityOfHediff">
|
||||||
|
<hediffToMatch>Cumpilation_Cumflation</hediffToMatch>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
<stages>
|
||||||
|
<li>
|
||||||
|
<label>counter a little</label>
|
||||||
|
<becomeVisible>false</becomeVisible>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<label>counter slight</label>
|
||||||
|
<minSeverity>0.2</minSeverity>
|
||||||
|
<becomeVisible>false</becomeVisible>
|
||||||
|
<capMods>
|
||||||
|
<li>
|
||||||
|
<capacity>Moving</capacity>
|
||||||
|
<offset>0.1</offset>
|
||||||
|
</li>
|
||||||
|
</capMods>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<label>counter moderate</label>
|
||||||
|
<minSeverity>0.4</minSeverity>
|
||||||
|
<becomeVisible>false</becomeVisible>
|
||||||
|
<capMods>
|
||||||
|
<li>
|
||||||
|
<capacity>Moving</capacity>
|
||||||
|
<offset>0.25</offset>
|
||||||
|
</li>
|
||||||
|
</capMods>
|
||||||
|
<painOffset>-0.1</painOffset>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<label>counter intense</label>
|
||||||
|
<minSeverity>0.65</minSeverity>
|
||||||
|
<becomeVisible>false</becomeVisible>
|
||||||
|
<capMods>
|
||||||
|
<li>
|
||||||
|
<capacity>Moving</capacity>
|
||||||
|
<offset>0.55</offset>
|
||||||
|
</li>
|
||||||
|
</capMods>
|
||||||
|
<painOffset>-0.15</painOffset>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<label>counter extreme</label>
|
||||||
|
<minSeverity>0.9</minSeverity>
|
||||||
|
<becomeVisible>false</becomeVisible>
|
||||||
|
<capMods>
|
||||||
|
<li>
|
||||||
|
<capacity>Moving</capacity>
|
||||||
|
<offset>0.85</offset>
|
||||||
|
</li>
|
||||||
|
</capMods>
|
||||||
|
<painOffset>-0.25</painOffset>
|
||||||
|
</li>
|
||||||
|
</stages>
|
||||||
|
</HediffDef>
|
||||||
|
|
||||||
|
</Defs>
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
<li Class="HediffCompProperties_SeverityPerDay">
|
<li Class="HediffCompProperties_SeverityPerDay">
|
||||||
<severityPerDay>-0.5</severityPerDay>
|
<severityPerDay>-0.5</severityPerDay>
|
||||||
</li>
|
</li>
|
||||||
|
<li Class="Cumpilation.Cumflation.HediffCompProperties_SourceStorage"/>
|
||||||
<li Class="RJW_Genes.HediffsCompProperties_ProcessCumbucketMTB">
|
<li Class="RJW_Genes.HediffsCompProperties_ProcessCumbucketMTB">
|
||||||
<mtbDaysPerStage>
|
<mtbDaysPerStage>
|
||||||
<li>0</li>
|
<li>0</li>
|
||||||
|
|
@ -0,0 +1,145 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Defs>
|
||||||
|
|
||||||
|
<HediffDef Abstract="True" Name="RJW_Genes_Cumpilation_Counter_Stuffing">
|
||||||
|
<hediffClass>HediffWithComps</hediffClass>
|
||||||
|
<defaultLabelColor>(240,200,110)</defaultLabelColor>
|
||||||
|
<scenarioCanAdd>false</scenarioCanAdd>
|
||||||
|
<maxSeverity>1.0</maxSeverity>
|
||||||
|
<isBad>false</isBad>
|
||||||
|
<tendable>false</tendable>
|
||||||
|
</HediffDef>
|
||||||
|
|
||||||
|
<HediffDef ParentName="RJW_Genes_Cumpilation_Counter_Stuffing">
|
||||||
|
<defName>RJW_Genes_Cumpilation_Cumstuffed_Counter</defName>
|
||||||
|
<label>cumstuffed counter</label>
|
||||||
|
<labelNoun>cumstuffed countered</labelNoun>
|
||||||
|
<description>Apparently you can deal with it quite well.</description>
|
||||||
|
<comps>
|
||||||
|
<li Class="RJW_Genes.HediffCompProperties_MatchSeverityOfHediff">
|
||||||
|
<hediffToMatch>Cumpilation_Cumstuffed</hediffToMatch>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
<stages>
|
||||||
|
<li>
|
||||||
|
<label>counter slightly bloated</label>
|
||||||
|
<becomeVisible>false</becomeVisible>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<label>counter bloated</label>
|
||||||
|
<becomeVisible>false</becomeVisible>
|
||||||
|
<minSeverity>0.2</minSeverity>
|
||||||
|
<capMods>
|
||||||
|
<li>
|
||||||
|
<capacity>Moving</capacity>
|
||||||
|
<offset>0.03</offset>
|
||||||
|
</li>
|
||||||
|
</capMods>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<label>counter full</label>
|
||||||
|
<becomeVisible>false</becomeVisible>
|
||||||
|
<minSeverity>0.4</minSeverity>
|
||||||
|
<capMods>
|
||||||
|
<li>
|
||||||
|
<capacity>Moving</capacity>
|
||||||
|
<offset>0.1</offset>
|
||||||
|
</li>
|
||||||
|
</capMods>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<label>counter stuffed</label>
|
||||||
|
<becomeVisible>false</becomeVisible>
|
||||||
|
<minSeverity>0.6</minSeverity>
|
||||||
|
<capMods>
|
||||||
|
<li>
|
||||||
|
<capacity>Moving</capacity>
|
||||||
|
<offset>0.2</offset>
|
||||||
|
</li>
|
||||||
|
</capMods>
|
||||||
|
<painOffset>-0.1</painOffset>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<label>counter overstuffed</label>
|
||||||
|
<minSeverity>0.8</minSeverity>
|
||||||
|
<becomeVisible>false</becomeVisible>
|
||||||
|
<capMods>
|
||||||
|
<li>
|
||||||
|
<capacity>Moving</capacity>
|
||||||
|
<offset>0.3</offset>
|
||||||
|
</li>
|
||||||
|
</capMods>
|
||||||
|
<painOffset>-0.2</painOffset>
|
||||||
|
</li>
|
||||||
|
</stages>
|
||||||
|
</HediffDef>
|
||||||
|
|
||||||
|
<HediffDef ParentName="RJW_Genes_Cumpilation_Counter_Stuffing">
|
||||||
|
<defName>RJW_Genes_Cumpilation_InsectSpunkStuffed_Counter</defName>
|
||||||
|
<label>insect-spunk stuffed counter</label>
|
||||||
|
<labelNoun>insect-spunk stuffed counter</labelNoun>
|
||||||
|
<comps>
|
||||||
|
<li Class="RJW_Genes.HediffCompProperties_MatchSeverityOfHediff">
|
||||||
|
<hediffToMatch>Cumpilation_InsectSpunkStuffed</hediffToMatch>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
<description>Apparently you can deal with it quite well.</description>
|
||||||
|
<stages>
|
||||||
|
<li>
|
||||||
|
<label>counter slightly bloated</label>
|
||||||
|
<becomeVisible>false</becomeVisible>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<label>counter bloated</label>
|
||||||
|
<becomeVisible>false</becomeVisible>
|
||||||
|
<minSeverity>0.2</minSeverity>
|
||||||
|
<statOffsets>
|
||||||
|
<MoveSpeed>0.05</MoveSpeed>
|
||||||
|
<RestFallRateFactor>-0.1</RestFallRateFactor>
|
||||||
|
</statOffsets>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<label>counter full</label>
|
||||||
|
<becomeVisible>false</becomeVisible>
|
||||||
|
<minSeverity>0.4</minSeverity>
|
||||||
|
<statOffsets>
|
||||||
|
<RestFallRateFactor>0.25</RestFallRateFactor>
|
||||||
|
<ComfyTemperatureMax>5</ComfyTemperatureMax>
|
||||||
|
<ComfyTemperatureMin>5</ComfyTemperatureMin>
|
||||||
|
<GlobalLearningFactor>-0.1</GlobalLearningFactor>
|
||||||
|
<MentalBreakThreshold>-0.1</MentalBreakThreshold>
|
||||||
|
<WorkSpeedGlobal>+0.15</WorkSpeedGlobal>
|
||||||
|
</statOffsets>
|
||||||
|
<capMods>
|
||||||
|
<li>
|
||||||
|
<capacity>Talking</capacity>
|
||||||
|
<offset>-0.05</offset>
|
||||||
|
</li>
|
||||||
|
</capMods>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<label>counter over-stuffed</label>
|
||||||
|
<becomeVisible>false</becomeVisible>
|
||||||
|
<minSeverity>0.7</minSeverity>
|
||||||
|
<statOffsets>
|
||||||
|
<ComfyTemperatureMax>10</ComfyTemperatureMax>
|
||||||
|
<ComfyTemperatureMin>10</ComfyTemperatureMin>
|
||||||
|
<GlobalLearningFactor>-0.2</GlobalLearningFactor>
|
||||||
|
<MentalBreakThreshold>-0.2</MentalBreakThreshold>
|
||||||
|
<WorkSpeedGlobal>+0.25</WorkSpeedGlobal>
|
||||||
|
</statOffsets>
|
||||||
|
<capMods>
|
||||||
|
<li>
|
||||||
|
<capacity>Manipulation</capacity>
|
||||||
|
<offset>+0.05</offset>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<capacity>Talking</capacity>
|
||||||
|
<offset>+0.15</offset>
|
||||||
|
</li>
|
||||||
|
</capMods>
|
||||||
|
</li>
|
||||||
|
</stages>
|
||||||
|
</HediffDef>
|
||||||
|
|
||||||
|
</Defs>
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<!--========= General ============-->
|
<!--========= General ============-->
|
||||||
|
|
||||||
<JobDef>
|
<JobDef>
|
||||||
<defName>ProcessCumbucket</defName>
|
<defName>RJW_Genes_ProcessCumbucket</defName>
|
||||||
<driverClass>RJW_Genes.JobDriver_ProcessingCumbucket</driverClass>
|
<driverClass>RJW_Genes.JobDriver_ProcessingCumbucket</driverClass>
|
||||||
<playerInterruptible>false</playerInterruptible>
|
<playerInterruptible>false</playerInterruptible>
|
||||||
<casualInterruptible>false</casualInterruptible>
|
<casualInterruptible>false</casualInterruptible>
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Patch>
|
||||||
|
|
||||||
|
<Operation Class="PatchOperationConditional">
|
||||||
|
<xpath>Defs/ThingDef[defName="Cumpilation_Cum"]/ingestible/outcomeDoers</xpath>
|
||||||
|
<nomatch Class="PatchOperationAdd">
|
||||||
|
<xpath>/Defs/ThingDef[defName="Cumpilation_Cum"]/ingestible</xpath>
|
||||||
|
<value>
|
||||||
|
<outcomeDoers>
|
||||||
|
<li Class="RJW_Genes.IngestionOutcomeDoer_LifeForceOffset">
|
||||||
|
<FertilinPerUnit>2</FertilinPerUnit>
|
||||||
|
</li>
|
||||||
|
</outcomeDoers>
|
||||||
|
</value>
|
||||||
|
</nomatch>
|
||||||
|
<match Class="PatchOperationAdd">
|
||||||
|
<xpath>Defs/ThingDef[defName="Cumpilation_Cum"]/ingestible/outcomeDoers</xpath>
|
||||||
|
<value>
|
||||||
|
<li Class="RJW_Genes.IngestionOutcomeDoer_LifeForceOffset">
|
||||||
|
<FertilinPerUnit>2</FertilinPerUnit>
|
||||||
|
</li>
|
||||||
|
</value>
|
||||||
|
</match>
|
||||||
|
</Operation>
|
||||||
|
|
||||||
|
</Patch>
|
||||||
|
|
@ -65,22 +65,4 @@
|
||||||
</modExtensions>
|
</modExtensions>
|
||||||
</GeneDef>
|
</GeneDef>
|
||||||
|
|
||||||
<GeneDef>
|
|
||||||
<defName>rjw_genes_generous_donor</defName>
|
|
||||||
<label>generous donor</label>
|
|
||||||
<displayCategory>rjw_genes_fluids</displayCategory>
|
|
||||||
<description>When this Xenotype transfers nutrition via cumshot, the giver will not get hungry. (Licentia Configuration for Transfer Nutrition must be enabled).</description>
|
|
||||||
<iconPath>Genes/Icons/Generous_Donor</iconPath>
|
|
||||||
<displayOrderInCategory>538</displayOrderInCategory>
|
|
||||||
|
|
||||||
<biostatCpx>2</biostatCpx>
|
|
||||||
<biostatMet>-1</biostatMet>
|
|
||||||
<modExtensions>
|
|
||||||
<li MayRequire="OskarPotocki.VanillaFactionsExpanded.Core" Class="VanillaGenesExpanded.GeneExtension">
|
|
||||||
<backgroundPathEndogenes>Genes/Icons/RJW_Genes_Endogene_Background</backgroundPathEndogenes>
|
|
||||||
<backgroundPathXenogenes>Genes/Icons/RJW_Genes_Xenogene_Background</backgroundPathXenogenes>
|
|
||||||
</li>
|
|
||||||
</modExtensions>
|
|
||||||
</GeneDef>
|
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Defs>
|
||||||
|
|
||||||
|
<GeneDef ParentName="GeneGenitalTypeBase">
|
||||||
|
<defName>rjw_genes_Pig_genitalia</defName>
|
||||||
|
<label>Pig genitalia</label>
|
||||||
|
<description>Carriers of this gene develop pig genitalia.</description>
|
||||||
|
<iconPath>Genes/Icons/Genitalia_screw_icon</iconPath>
|
||||||
|
<modExtensions>
|
||||||
|
<li Class="RJW_Genes.GenitaliaTypeExtension">
|
||||||
|
<penis>PigPenis</penis>
|
||||||
|
<vagina>PigVagina</vagina>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
|
<displayOrderInCategory>807</displayOrderInCategory>
|
||||||
|
</GeneDef>
|
||||||
|
|
||||||
|
<GeneDef ParentName="GeneGenitalTypeBase">
|
||||||
|
<defName>rjw_genes_Orc_genitalia</defName>
|
||||||
|
<label>Orc genitalia</label>
|
||||||
|
<description>Carriers of this gene develop orc genitalia.</description>
|
||||||
|
<iconPath>Genes/Icons/Genitalia_orc_icon</iconPath>
|
||||||
|
<modExtensions>
|
||||||
|
<li Class="RJW_Genes.GenitaliaTypeExtension">
|
||||||
|
<penis>OrcPenis</penis>
|
||||||
|
<vagina>OrcVagina</vagina>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
|
<displayOrderInCategory>807</displayOrderInCategory>
|
||||||
|
</GeneDef>
|
||||||
|
|
||||||
|
</Defs>
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
|
||||||
<Defs>
|
|
||||||
|
|
||||||
<GeneDef>
|
|
||||||
<defName>rjw_genes_living_cumbucket</defName>
|
|
||||||
<label>living cumbucket</label>
|
|
||||||
<displayCategory>rjw_genes_fluids</displayCategory>
|
|
||||||
<description>When this Xenotype partakes in sexual activity, they store cum and produce it as an item.</description>
|
|
||||||
<iconPath>Genes/Icons/living_cumbucket</iconPath>
|
|
||||||
<displayOrderInCategory>559</displayOrderInCategory>
|
|
||||||
<biostatCpx>3</biostatCpx>
|
|
||||||
<biostatMet>-2</biostatMet>
|
|
||||||
<modExtensions>
|
|
||||||
<li MayRequire="OskarPotocki.VanillaFactionsExpanded.Core" Class="VanillaGenesExpanded.GeneExtension">
|
|
||||||
<backgroundPathEndogenes>Genes/Icons/RJW_Genes_Endogene_Background</backgroundPathEndogenes>
|
|
||||||
<backgroundPathXenogenes>Genes/Icons/RJW_Genes_Xenogene_Background</backgroundPathXenogenes>
|
|
||||||
</li>
|
|
||||||
</modExtensions>
|
|
||||||
</GeneDef>
|
|
||||||
|
|
||||||
</Defs>
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Patch>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
DevNote:
|
|
||||||
There used to be an issue with a Gene-Mod Called "Cum-Addiction Gene". That mod just overwrote the
|
|
||||||
complete UsedCondom.xml and Sexperience Cum.xml
|
|
||||||
This would lead to two types of failures:
|
|
||||||
A) If this mod was before the other mod, changes were just overwritten
|
|
||||||
B) If this mod was after, there was an issue in targetting the XML throwing a patch error
|
|
||||||
Please if you write mods, do not just purge out XMLs. Thanks.
|
|
||||||
|
|
||||||
This patch was kindly mirrored after Infis Patch of UsedCondoms.
|
|
||||||
-->
|
|
||||||
<Operation Class="PatchOperationFindMod">
|
|
||||||
<mods>
|
|
||||||
<li>RJW Sexperience</li>
|
|
||||||
</mods>
|
|
||||||
<match Class="PatchOperationConditional">
|
|
||||||
<xpath>Defs/ThingDef[defName="GatheredCum"]/ingestible/outcomeDoers</xpath>
|
|
||||||
<nomatch Class="PatchOperationAdd">
|
|
||||||
<xpath>/Defs/ThingDef[defName="GatheredCum"]/ingestible</xpath>
|
|
||||||
<value>
|
|
||||||
<outcomeDoers>
|
|
||||||
<li Class="RJW_Genes.IngestionOutcomeDoer_LifeForceOffset">
|
|
||||||
<FertilinPerUnit>1</FertilinPerUnit>
|
|
||||||
</li>
|
|
||||||
</outcomeDoers>
|
|
||||||
</value>
|
|
||||||
</nomatch>
|
|
||||||
<match Class="PatchOperationAdd">
|
|
||||||
<xpath>Defs/ThingDef[defName="GatheredCum"]/ingestible/outcomeDoers</xpath>
|
|
||||||
<value>
|
|
||||||
<li Class="RJW_Genes.IngestionOutcomeDoer_LifeForceOffset">
|
|
||||||
<FertilinPerUnit>1</FertilinPerUnit>
|
|
||||||
</li>
|
|
||||||
</value>
|
|
||||||
</match>
|
|
||||||
</match>
|
|
||||||
</Operation>
|
|
||||||
|
|
||||||
</Patch>
|
|
||||||
|
|
@ -41,7 +41,7 @@
|
||||||
<xpath>Defs/XenotypeDef[defName="AG_Lapis"]/genes</xpath>
|
<xpath>Defs/XenotypeDef[defName="AG_Lapis"]/genes</xpath>
|
||||||
<value>
|
<value>
|
||||||
<li>rjw_genes_big_breasts</li>
|
<li>rjw_genes_big_breasts</li>
|
||||||
<li>rjw_genes_no_cum</li>
|
<li>rjw_genes_no_fluid</li>
|
||||||
<li>rjw_genes_big_male_genitalia</li>
|
<li>rjw_genes_big_male_genitalia</li>
|
||||||
</value>
|
</value>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
<li>rjw_genes_big_male_genitalia</li>
|
<li>rjw_genes_big_male_genitalia</li>
|
||||||
<li>rjw_genes_big_breasts</li>
|
<li>rjw_genes_big_breasts</li>
|
||||||
<li>rjw_genes_no_sex_need</li>
|
<li>rjw_genes_no_sex_need</li>
|
||||||
<li MayRequire="LustLicentia.RJWLabs">rjw_genes_generous_donor</li>
|
<li>rjw_genes_generous_donor</li>
|
||||||
<li MayRequire="rjw.sexperience">AptitudePoor_Sex</li>
|
<li MayRequire="rjw.sexperience">AptitudePoor_Sex</li>
|
||||||
</value>
|
</value>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
<xpath>Defs/XenotypeDef[defName="BS_Malakim"]/genes</xpath>
|
<xpath>Defs/XenotypeDef[defName="BS_Malakim"]/genes</xpath>
|
||||||
<value>
|
<value>
|
||||||
<li>rjw_genes_small_breasts</li>
|
<li>rjw_genes_small_breasts</li>
|
||||||
<li MayRequire="LustLicentia.RJWLabs">rjw_genes_generous_donor</li>
|
<li>rjw_genes_generous_donor</li>
|
||||||
<li MayRequire="rjw.sexperience">AptitudeTerrible_Sex</li>
|
<li MayRequire="rjw.sexperience">AptitudeTerrible_Sex</li>
|
||||||
</value>
|
</value>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -29,17 +29,13 @@
|
||||||
<value>
|
<value>
|
||||||
<li>rjw_genes_big_male_genitalia</li>
|
<li>rjw_genes_big_male_genitalia</li>
|
||||||
<li>rjw_genes_big_breasts</li>
|
<li>rjw_genes_big_breasts</li>
|
||||||
<li>rjw_genes_human_genitalia</li>
|
|
||||||
<li>rjw_genes_equine_genitalia</li>
|
|
||||||
<li>rjw_genes_reptilian_genitalia</li>
|
|
||||||
<li>rjw_genes_crocodilian_genitalia</li>
|
|
||||||
<li MayRequire="rjw.sexperience">AptitudeStrong_Sex</li>
|
<li MayRequire="rjw.sexperience">AptitudeStrong_Sex</li>
|
||||||
</value>
|
</value>
|
||||||
</li>
|
</li>
|
||||||
<li Class="PatchOperationAdd">
|
<li Class="PatchOperationAdd">
|
||||||
<xpath>Defs/XenotypeDef[defName="BS_Grigori"]/genes</xpath>
|
<xpath>Defs/XenotypeDef[defName="BS_Grigori"]/genes</xpath>
|
||||||
<value>
|
<value>
|
||||||
<li MayRequire="LustLicentia.RJWLabs">rjw_genes_generous_donor</li>
|
<li>rjw_genes_generous_donor</li>
|
||||||
<li MayRequire="rjw.sexperience">AptitudeStrong_Sex</li>
|
<li MayRequire="rjw.sexperience">AptitudeStrong_Sex</li>
|
||||||
</value>
|
</value>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -66,7 +62,7 @@
|
||||||
<li>rjw_genes_loose_anus</li>
|
<li>rjw_genes_loose_anus</li>
|
||||||
<li>rjw_genes_extra_vagina</li>
|
<li>rjw_genes_extra_vagina</li>
|
||||||
<li>rjw_genes_extra_anus</li>
|
<li>rjw_genes_extra_anus</li>
|
||||||
<li MayRequire="LustLicentia.RJWLabs">rjw_genes_cumflation_immunity</li>
|
<li MayRequire="vegapnk.cumpilation">rjw_genes_un_inflatable</li>
|
||||||
<li MayRequire="rjw.sexperience">AptitudeStrong_Sex</li>
|
<li MayRequire="rjw.sexperience">AptitudeStrong_Sex</li>
|
||||||
</value>
|
</value>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -79,8 +75,8 @@
|
||||||
<li>rjw_genes_tight_anus</li>
|
<li>rjw_genes_tight_anus</li>
|
||||||
<li>rjw_genes_extra_vagina</li>
|
<li>rjw_genes_extra_vagina</li>
|
||||||
<li>rjw_genes_extra_anus</li>
|
<li>rjw_genes_extra_anus</li>
|
||||||
<li MayRequire="LustLicentia.RJWLabs">rjw_genes_likes_cumflation</li>
|
<li MayRequire="vegapnk.cumpilation">rjw_genes_inflatable</li>
|
||||||
<li MayRequire="LustLicentia.RJWLabs">rjw_genes_elastic</li>
|
<li MayRequire="LustLicentia.RJWLabs">rjw_genes_elasticity</li>
|
||||||
<li MayRequire="rjw.sexperience">AptitudeStrong_Sex</li>
|
<li MayRequire="rjw.sexperience">AptitudeStrong_Sex</li>
|
||||||
</value>
|
</value>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -89,4 +85,4 @@
|
||||||
</operations>
|
</operations>
|
||||||
</match>
|
</match>
|
||||||
</Operation>
|
</Operation>
|
||||||
</Patch>
|
</Patch>
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,6 @@
|
||||||
<li Class="PatchOperationAdd">
|
<li Class="PatchOperationAdd">
|
||||||
<xpath>Defs/XenotypeDef[defName="BS_Abomination"]/genes</xpath>
|
<xpath>Defs/XenotypeDef[defName="BS_Abomination"]/genes</xpath>
|
||||||
<value>
|
<value>
|
||||||
<li>rjw_genes_Tentacle_genitalia</li>
|
|
||||||
<li>rjw_genes_reptilian_genitalia</li>
|
|
||||||
<li>rjw_genes_human_genitalia</li>
|
<li>rjw_genes_human_genitalia</li>
|
||||||
</value>
|
</value>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,6 @@
|
||||||
<xpath>Defs/XenotypeDef[defName="BS_Corrupterd_Titan"]/genes</xpath> <!-- sic -->
|
<xpath>Defs/XenotypeDef[defName="BS_Corrupterd_Titan"]/genes</xpath> <!-- sic -->
|
||||||
<value>
|
<value>
|
||||||
<li>rjw_genes_rapist</li>
|
<li>rjw_genes_rapist</li>
|
||||||
<li>rjw_genes_Tentacle_genitalia</li>
|
|
||||||
</value>
|
</value>
|
||||||
</match>
|
</match>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -60,7 +59,7 @@
|
||||||
<li>rjw_genes_tight_female_genitalia</li>
|
<li>rjw_genes_tight_female_genitalia</li>
|
||||||
<li>rjw_genes_tight_anus</li>
|
<li>rjw_genes_tight_anus</li>
|
||||||
<li>rjw_genes_very_much_fluid</li>
|
<li>rjw_genes_very_much_fluid</li>
|
||||||
<li MayRequire="LustLicentia.RJWLabs">rjw_genes_likes_cumflation</li>
|
<li MayRequire="vegapnk.cumpilation">rjw_genes_inflatable</li>
|
||||||
</value>
|
</value>
|
||||||
</li>
|
</li>
|
||||||
<li Class="PatchOperationAdd">
|
<li Class="PatchOperationAdd">
|
||||||
|
|
@ -72,7 +71,7 @@
|
||||||
<li Class="PatchOperationAdd">
|
<li Class="PatchOperationAdd">
|
||||||
<xpath>Defs/XenotypeDef[defName="BS_Redcap"]/genes</xpath>
|
<xpath>Defs/XenotypeDef[defName="BS_Redcap"]/genes</xpath>
|
||||||
<value>
|
<value>
|
||||||
<li>LitteredBirths</li>
|
<li>rjw_genes_littered_births</li>
|
||||||
<li>rjw_genes_tight_female_genitalia</li>
|
<li>rjw_genes_tight_female_genitalia</li>
|
||||||
<li>rjw_genes_tight_anus</li>
|
<li>rjw_genes_tight_anus</li>
|
||||||
<li>rjw_genes_much_fluid</li>
|
<li>rjw_genes_much_fluid</li>
|
||||||
|
|
@ -88,4 +87,4 @@
|
||||||
</operations>
|
</operations>
|
||||||
</match>
|
</match>
|
||||||
</Operation>
|
</Operation>
|
||||||
</Patch>
|
</Patch>
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
<xpath>Defs/XenotypeDef[defName = "BS_Kitsune"]/genes</xpath>
|
<xpath>Defs/XenotypeDef[defName = "BS_Kitsune"]/genes</xpath>
|
||||||
<value>
|
<value>
|
||||||
<li>rjw_genes_canine_genitalia</li>
|
<li>rjw_genes_canine_genitalia</li>
|
||||||
<li>LitteredBirths</li>
|
<li>rjw_genes_littered_births</li>
|
||||||
</value>
|
</value>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
<li>rjw_genes_extra_vagina</li>
|
<li>rjw_genes_extra_vagina</li>
|
||||||
<li>rjw_genes_extra_penis</li>
|
<li>rjw_genes_extra_penis</li>
|
||||||
<li>rjw_genes_small_breasts</li>
|
<li>rjw_genes_small_breasts</li>
|
||||||
<li>LitteredBirths</li>
|
<li>rjw_genes_littered_births</li>
|
||||||
</value>
|
</value>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,6 @@
|
||||||
<li>rjw_genes_small_male_genitalia</li>
|
<li>rjw_genes_small_male_genitalia</li>
|
||||||
<li>rjw_genes_tight_female_genitalia</li>
|
<li>rjw_genes_tight_female_genitalia</li>
|
||||||
<li>rjw_genes_tight_anus</li>
|
<li>rjw_genes_tight_anus</li>
|
||||||
<li>rjw_genes_Needle_genitalia</li>
|
|
||||||
<li>rjw_genes_zoophile</li>
|
<li>rjw_genes_zoophile</li>
|
||||||
</value>
|
</value>
|
||||||
</match>
|
</match>
|
||||||
|
|
@ -51,7 +50,6 @@
|
||||||
<li>rjw_genes_small_male_genitalia</li>
|
<li>rjw_genes_small_male_genitalia</li>
|
||||||
<li>rjw_genes_tight_female_genitalia</li>
|
<li>rjw_genes_tight_female_genitalia</li>
|
||||||
<li>rjw_genes_tight_anus</li>
|
<li>rjw_genes_tight_anus</li>
|
||||||
<li>rjw_genes_Needle_genitalia</li>
|
|
||||||
<li>rjw_genes_zoophile</li>
|
<li>rjw_genes_zoophile</li>
|
||||||
</value>
|
</value>
|
||||||
</match>
|
</match>
|
||||||
|
|
@ -81,8 +79,7 @@
|
||||||
<value>
|
<value>
|
||||||
<li>rjw_genes_tight_female_genitalia</li>
|
<li>rjw_genes_tight_female_genitalia</li>
|
||||||
<li>rjw_genes_tight_anus</li>
|
<li>rjw_genes_tight_anus</li>
|
||||||
<li>rjw_genes_Needle_genitalia</li>
|
<li>rjw_genes_littered_births</li>
|
||||||
<li>LitteredBirths</li>
|
|
||||||
<li>rjw_genes_zoophile</li>
|
<li>rjw_genes_zoophile</li>
|
||||||
</value>
|
</value>
|
||||||
</match>
|
</match>
|
||||||
|
|
@ -111,8 +108,7 @@
|
||||||
<match Class="PatchOperationAdd">
|
<match Class="PatchOperationAdd">
|
||||||
<xpath>Defs/XenotypeDef[defName="Cloudpuff"]/genes</xpath>
|
<xpath>Defs/XenotypeDef[defName="Cloudpuff"]/genes</xpath>
|
||||||
<value>
|
<value>
|
||||||
<li>rjw_genes_tight_female_genitalia</li>
|
<li>rjw_genes_tight_female_genitalia</li>
|
||||||
<li>rjw_genes_Needle_genitalia</li>
|
|
||||||
<li>rjw_genes_zoophile</li>
|
<li>rjw_genes_zoophile</li>
|
||||||
</value>
|
</value>
|
||||||
</match>
|
</match>
|
||||||
|
|
@ -125,7 +121,6 @@
|
||||||
<xpath>Defs/XenotypeDef[defName="Devilpuff"]/genes</xpath>
|
<xpath>Defs/XenotypeDef[defName="Devilpuff"]/genes</xpath>
|
||||||
<value>
|
<value>
|
||||||
<li>rjw_genes_tight_female_genitalia</li>
|
<li>rjw_genes_tight_female_genitalia</li>
|
||||||
<li>rjw_genes_Needle_genitalia</li>
|
|
||||||
<li>rjw_genes_zoophile</li>
|
<li>rjw_genes_zoophile</li>
|
||||||
</value>
|
</value>
|
||||||
</match>
|
</match>
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@
|
||||||
<xpath>Defs/XenotypeDef[defName="Ashfeather"]/genes</xpath>
|
<xpath>Defs/XenotypeDef[defName="Ashfeather"]/genes</xpath>
|
||||||
<value>
|
<value>
|
||||||
<li>rjw_genes_much_fluid</li>
|
<li>rjw_genes_much_fluid</li>
|
||||||
<li>rjw_genes_Needle_genitalia</li>
|
|
||||||
</value>
|
</value>
|
||||||
</match>
|
</match>
|
||||||
</Operation>
|
</Operation>
|
||||||
|
|
|
||||||
105
1.5/Patches/Xenotypes/PatchObsidia.xml
Normal file
|
|
@ -0,0 +1,105 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Patch>
|
||||||
|
|
||||||
|
<Operation Class="PatchOperationFindMod">
|
||||||
|
<mods>
|
||||||
|
<li>Obsidia Expansion - Arachnas Xenotype</li>
|
||||||
|
</mods>
|
||||||
|
<match Class="PatchOperationAdd">
|
||||||
|
<xpath>Defs/XenotypeDef[defName="OE_WidowArachna" or defName="OE_WolfArachna" or defName="OE_GoliathArachna"]/genes</xpath>
|
||||||
|
<value>
|
||||||
|
<li>rjw_genes_ovipositor_genitalia</li>
|
||||||
|
<li>rjw_genes_insectbreeder</li>
|
||||||
|
<li>rjw_genes_fluid_insect_spunk</li>
|
||||||
|
<li>rjw_genes_cocoonweaver</li>
|
||||||
|
</value>
|
||||||
|
</match>
|
||||||
|
</Operation>
|
||||||
|
|
||||||
|
<Operation Class="PatchOperationFindMod">
|
||||||
|
<mods>
|
||||||
|
<li>Obsidia Expansion - Axotl Xenotype</li>
|
||||||
|
</mods>
|
||||||
|
<match Class="PatchOperationAdd">
|
||||||
|
<xpath>Defs/XenotypeDef[defName="OE_Axotl"]/genes</xpath>
|
||||||
|
<value>
|
||||||
|
<li>rjw_genes_small_male_genitalia</li>
|
||||||
|
<li MayRequire="vegapnk.cumpilation">rjw_genes_living_cumbucket</li>
|
||||||
|
</value>
|
||||||
|
</match>
|
||||||
|
</Operation>
|
||||||
|
|
||||||
|
<Operation Class="PatchOperationFindMod">
|
||||||
|
<mods>
|
||||||
|
<li>Obsidia Expansion - Ceratons Xenotype</li>
|
||||||
|
</mods>
|
||||||
|
<match Class="PatchOperationAdd">
|
||||||
|
<xpath>Defs/XenotypeDef[defName="OE_Protoceraton" or defName="OE_Styracodon" or defName="OE_Triceraton"]/genes</xpath>
|
||||||
|
<value>
|
||||||
|
<li>rjw_genes_crocodilian_genitalia</li>
|
||||||
|
<li>rjw_genes_big_male_genitalia</li>
|
||||||
|
<li>rjw_genes_loose_female_genitalia</li>
|
||||||
|
<li>rjw_genes_big_breasts</li>
|
||||||
|
</value>
|
||||||
|
</match>
|
||||||
|
</Operation>
|
||||||
|
|
||||||
|
<Operation Class="PatchOperationFindMod">
|
||||||
|
<mods>
|
||||||
|
<li>Obsidia Expansion - Liches Xenotype</li>
|
||||||
|
</mods>
|
||||||
|
<match Class="PatchOperationAdd">
|
||||||
|
<xpath>Defs/XenotypeDef[defName="OE_Lich" or defName="OE_Archlich"]/genes</xpath>
|
||||||
|
<value>
|
||||||
|
<li>rjw_genes_no_fluid</li>
|
||||||
|
<li>rjw_genes_featureless_chest</li>
|
||||||
|
<li>rjw_genes_no_sex_need</li>
|
||||||
|
<li>rjw_genes_no_penis</li>
|
||||||
|
<li>rjw_genes_no_vagina</li>
|
||||||
|
</value>
|
||||||
|
</match>
|
||||||
|
</Operation>
|
||||||
|
|
||||||
|
<Operation Class="PatchOperationFindMod">
|
||||||
|
<mods>
|
||||||
|
<li>Obsidia Expansion - Mothoids Xenotype</li>
|
||||||
|
</mods>
|
||||||
|
<match Class="PatchOperationAdd">
|
||||||
|
<xpath>Defs/XenotypeDef[defName="OE_Mothoid" or defName="OE_MothoidPrime" or defName="OE_MothoidAtlant"]/genes</xpath>
|
||||||
|
<value>
|
||||||
|
<li>rjw_genes_insectincubator</li>
|
||||||
|
<li>rjw_genes_fluid_insect_spunk</li>
|
||||||
|
</value>
|
||||||
|
</match>
|
||||||
|
</Operation>
|
||||||
|
|
||||||
|
<Operation Class="PatchOperationFindMod">
|
||||||
|
<mods>
|
||||||
|
<li>Obsidia Expansion - Slimes Xenotype</li>
|
||||||
|
</mods>
|
||||||
|
<match Class="PatchOperationAdd">
|
||||||
|
<xpath>Defs/XenotypeDef[defName="OE_Slime" or defName="OE_SlimeWaste" or defName="OE_SlimeBloody" or defName="OE_SlimePrime"]/genes</xpath>
|
||||||
|
<value>
|
||||||
|
<li>rjw_genes_slime_genitalia</li>
|
||||||
|
<li>rjw_genes_very_much_fluid</li>
|
||||||
|
<li>rjw_genes_loose_anus</li>
|
||||||
|
<li>rjw_genes_loose_female_genitalia</li>
|
||||||
|
<li MayRequire="vegapnk.cumpilation">rjw_genes_inflatable</li>
|
||||||
|
<li MayRequire="LustLicentia.RJWLabs">rjw_genes_elasticity</li>
|
||||||
|
</value>
|
||||||
|
</match>
|
||||||
|
</Operation>
|
||||||
|
|
||||||
|
<Operation Class="PatchOperationFindMod">
|
||||||
|
<mods>
|
||||||
|
<li>Obsidia Expansion - Tortle Xenotype</li>
|
||||||
|
</mods>
|
||||||
|
<match Class="PatchOperationAdd">
|
||||||
|
<xpath>Defs/XenotypeDef[defName="OE_Tortle"]/genes</xpath>
|
||||||
|
<value>
|
||||||
|
<li>rjw_genes_reptilian_genitalia</li>
|
||||||
|
</value>
|
||||||
|
</match>
|
||||||
|
</Operation>
|
||||||
|
|
||||||
|
</Patch>
|
||||||
47
1.5/Patches/Xenotypes/PatchRimsenal.xml
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Patch>
|
||||||
|
|
||||||
|
<Operation Class="PatchOperationFindMod">
|
||||||
|
<mods>
|
||||||
|
<li>Rimsenal Xenotype Pack - Askbarn</li>
|
||||||
|
</mods>
|
||||||
|
<match Class="PatchOperationSequence">
|
||||||
|
<operations>
|
||||||
|
<li Class="PatchOperationAdd">
|
||||||
|
<xpath>Defs/XenotypeDef[defName="Askbarn"]/genes</xpath>
|
||||||
|
<value>
|
||||||
|
<li>rjw_genes_electric_satisfaction</li>
|
||||||
|
<li>rjw_genes_pheromone_spit</li>
|
||||||
|
<li>rjw_genes_loose_anus</li>
|
||||||
|
<li>rjw_genes_bisexual</li>
|
||||||
|
</value>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li Class="PatchOperationAdd">
|
||||||
|
<xpath>Defs/XenotypeDef[defName="Uredd"]/genes</xpath>
|
||||||
|
<value>
|
||||||
|
<li>rjw_genes_electric_satisfaction</li>
|
||||||
|
<li>rjw_genes_dragon_genitalia</li>
|
||||||
|
<li>rjw_genes_big_male_genitalia</li>
|
||||||
|
<li>rjw_genes_big_breasts</li>
|
||||||
|
</value>
|
||||||
|
</li>
|
||||||
|
</operations>
|
||||||
|
</match>
|
||||||
|
</Operation>
|
||||||
|
|
||||||
|
<Operation Class="PatchOperationFindMod">
|
||||||
|
<mods>
|
||||||
|
<li>Rimsenal Xenotype Pack - Harana</li>
|
||||||
|
</mods>
|
||||||
|
<match Class="PatchOperationAdd">
|
||||||
|
<xpath>Defs/XenotypeDef[defName="Harana"]/genes</xpath>
|
||||||
|
<value>
|
||||||
|
<li>rjw_genes_small_male_genitalia</li>
|
||||||
|
<li>rjw_genes_tight_female_genitalia</li>
|
||||||
|
<li>rjw_genes_unbreakable</li>
|
||||||
|
</value>
|
||||||
|
</match>
|
||||||
|
</Operation>
|
||||||
|
|
||||||
|
</Patch>
|
||||||
|
|
@ -1,17 +1,17 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<Patch>
|
<Patch>
|
||||||
<Operation Class="PatchOperationFindMod">
|
<Operation Class="PatchOperationFindMod">
|
||||||
<mods>
|
<mods>
|
||||||
<li>Roo's Faun Xenotype</li>
|
<li>Roo's Faun Xenotype</li>
|
||||||
</mods>
|
</mods>
|
||||||
<match Class="PatchOperationAdd">
|
<match Class="PatchOperationAdd">
|
||||||
<xpath>Defs/XenotypeDef[defName="RBSF_Faun"]/genes</xpath>
|
<xpath>Defs/XenotypeDef[defName="RBSF_Faun"]/genes</xpath>
|
||||||
<value>
|
<value>
|
||||||
<li>rjw_genes_tight_female_genitalia</li>
|
<li>rjw_genes_equine_genitalia</li>
|
||||||
<li>rjw_genes_small_male_genitalia</li>
|
<li>rjw_genes_zoophile</li>
|
||||||
<li>rjw_genes_small_breasts</li>
|
<li>rjw_genes_mating_call</li>
|
||||||
<li>rjw_genes_tight_anus</li>
|
<li>rjw_genes_tight_female_genitalia</li>
|
||||||
</value>
|
</value>
|
||||||
</match>
|
</match>
|
||||||
</Operation>
|
</Operation>
|
||||||
</Patch>
|
</Patch>
|
||||||
18
1.5/Patches/Xenotypes/PatchRoosMino.xml
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Patch>
|
||||||
|
<Operation Class="PatchOperationFindMod">
|
||||||
|
<mods>
|
||||||
|
<li>Roo's Minotaur Xenotype</li>
|
||||||
|
</mods>
|
||||||
|
<match Class="PatchOperationAdd">
|
||||||
|
<xpath>Defs/XenotypeDef[defName="RBM_Minotaur"]/genes</xpath>
|
||||||
|
<value>
|
||||||
|
<li>rjw_genes_equine_genitalia</li>
|
||||||
|
<li>rjw_genes_much_fluid</li>
|
||||||
|
<li>rjw_genes_big_male_genitalia</li>
|
||||||
|
<li>rjw_genes_loose_female_genitalia</li>
|
||||||
|
<li>rjw_genes_big_breasts</li>
|
||||||
|
</value>
|
||||||
|
</match>
|
||||||
|
</Operation>
|
||||||
|
</Patch>
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Patch>
|
|
||||||
<Operation Class="PatchOperationFindMod">
|
|
||||||
<mods>
|
|
||||||
<li>Roo's Minotaur Xenotype</li>
|
|
||||||
</mods>
|
|
||||||
<match Class="PatchOperationAdd">
|
|
||||||
<xpath>Defs/XenotypeDef[defName="RBM_Minotaur"]/genes</xpath>
|
|
||||||
<value>
|
|
||||||
<li>rjw_genes_much_fluid</li>
|
|
||||||
<li>rjw_genes_cumflation_immunity</li>
|
|
||||||
<li>rjw_genes_loose_female_genitalia</li>
|
|
||||||
<li>rjw_genes_big_male_genitalia</li>
|
|
||||||
<li>rjw_genes_equine_genitalia</li>
|
|
||||||
</value>
|
|
||||||
</match>
|
|
||||||
</Operation>
|
|
||||||
</Patch>
|
|
||||||
|
|
@ -30,7 +30,6 @@
|
||||||
<li Class="PatchOperationAdd">
|
<li Class="PatchOperationAdd">
|
||||||
<xpath>Defs/XenotypeDef[defName="LTS_Ork"]/genes</xpath>
|
<xpath>Defs/XenotypeDef[defName="LTS_Ork"]/genes</xpath>
|
||||||
<value>
|
<value>
|
||||||
<li>rjw_genes_Orc_genitalia</li>
|
|
||||||
<li>rjw_genes_big_male_genitalia</li>
|
<li>rjw_genes_big_male_genitalia</li>
|
||||||
<li>rjw_genes_loose_female_genitalia</li>
|
<li>rjw_genes_loose_female_genitalia</li>
|
||||||
</value>
|
</value>
|
||||||
|
|
@ -51,16 +50,9 @@
|
||||||
<li>rjw_genes_insectincubator</li>
|
<li>rjw_genes_insectincubator</li>
|
||||||
</value>
|
</value>
|
||||||
</li>
|
</li>
|
||||||
<li Class="PatchOperationAdd">
|
|
||||||
<xpath>Defs/XenotypeDef[defName="LTS_Faun"]/genes</xpath>
|
|
||||||
<value>
|
|
||||||
<li>rjw_genes_Needle_genitalia</li>
|
|
||||||
</value>
|
|
||||||
</li>
|
|
||||||
<li Class="PatchOperationAdd">
|
<li Class="PatchOperationAdd">
|
||||||
<xpath>Defs/XenotypeDef[defName="LTS_Hydragon"]/genes</xpath>
|
<xpath>Defs/XenotypeDef[defName="LTS_Hydragon"]/genes</xpath>
|
||||||
<value>
|
<value>
|
||||||
<li>rjw_genes_Marine_genitalia</li>
|
|
||||||
<li>rjw_genes_dragon_genitalia</li>
|
<li>rjw_genes_dragon_genitalia</li>
|
||||||
<li>rjw_genes_basic_rut</li>
|
<li>rjw_genes_basic_rut</li>
|
||||||
</value>
|
</value>
|
||||||
|
|
|
||||||
|
|
@ -73,9 +73,9 @@ namespace RJW_Genes
|
||||||
public static readonly GeneDef rjw_genes_no_fluid;
|
public static readonly GeneDef rjw_genes_no_fluid;
|
||||||
public static readonly GeneDef rjw_genes_much_fluid;
|
public static readonly GeneDef rjw_genes_much_fluid;
|
||||||
public static readonly GeneDef rjw_genes_very_much_fluid;
|
public static readonly GeneDef rjw_genes_very_much_fluid;
|
||||||
[MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_likes_cumflation;
|
[MayRequire("vegapnk.cumpilation")] public static readonly GeneDef rjw_genes_un_inflatable;
|
||||||
[MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_cumflation_immunity;
|
[MayRequire("vegapnk.cumpilation")] public static readonly GeneDef rjw_genes_inflatable;
|
||||||
[MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_generous_donor;
|
public static readonly GeneDef rjw_genes_generous_donor;
|
||||||
[MayRequire("rjw.sexperience")] public static readonly GeneDef rjw_genes_living_cumbucket;
|
[MayRequire("rjw.sexperience")] public static readonly GeneDef rjw_genes_living_cumbucket;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -137,6 +137,7 @@ namespace RJW_Genes
|
||||||
public static readonly GeneDef rjw_genes_stretcher;
|
public static readonly GeneDef rjw_genes_stretcher;
|
||||||
public static readonly GeneDef rjw_genes_infectious_blocked_masturbation;
|
public static readonly GeneDef rjw_genes_infectious_blocked_masturbation;
|
||||||
public static readonly GeneDef rjw_genes_infectious_rut;
|
public static readonly GeneDef rjw_genes_infectious_rut;
|
||||||
|
public static readonly GeneDef rjw_genes_disease_carrier;
|
||||||
|
|
||||||
//Other Defs
|
//Other Defs
|
||||||
public static readonly XenotypeDef rjw_genes_succubus;
|
public static readonly XenotypeDef rjw_genes_succubus;
|
||||||
|
|
|
||||||
|
|
@ -25,9 +25,7 @@ namespace RJW_Genes
|
||||||
|
|
||||||
public static readonly HediffDef rjw_genes_genetic_rut;
|
public static readonly HediffDef rjw_genes_genetic_rut;
|
||||||
|
|
||||||
// Note: Counter does meant it counters it, not it's counting
|
public static readonly HediffDef rjw_genes_disease_carrier_storage;
|
||||||
[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 OvaryAgitator;
|
||||||
public static readonly HediffDef Bioscaffold;
|
public static readonly HediffDef Bioscaffold;
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,14 @@
|
||||||
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Reflection.Emit;
|
using System.Reflection.Emit;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
using rjw;
|
using rjw;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
namespace RJW_Genes
|
namespace RJW_Genes
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This Class patches the RJW-Mechbirth to not deal damage when the pawn has the MechBreeder Gene.
|
/// This Class patches the RJW-Mechbirth to not deal damage when the pawn has the MechBreeder Gene.
|
||||||
/// This harmony patch was kindly provided by 'shabalox' https://github.com/Shabalox/RJW_Genes_Addons/
|
/// This harmony patch was kindly provided by 'shabalox' https://github.com/Shabalox/RJW_Genes_Addons/
|
||||||
|
|
@ -22,43 +19,36 @@ namespace RJW_Genes
|
||||||
[HarmonyTranspiler]
|
[HarmonyTranspiler]
|
||||||
public static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator il)
|
public static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator il)
|
||||||
{
|
{
|
||||||
bool found_call = false;
|
bool found_call = false;
|
||||||
bool found_skip = false;
|
bool finished = false;
|
||||||
Label skip_label = il.DefineLabel();
|
Label skip_label = il.DefineLabel();
|
||||||
MethodInfo ismechbreeder = AccessTools.Method(typeof(GeneUtility), "IsMechbreeder");
|
MethodInfo removeHediff = AccessTools.Method(typeof(Pawn_HealthTracker), nameof(Pawn_HealthTracker.RemoveHediff));
|
||||||
foreach (CodeInstruction codeInstruction in instructions)
|
MethodInfo ismechbreeder = AccessTools.Method(typeof(GeneUtility), "IsMechbreeder");
|
||||||
{
|
foreach (CodeInstruction codeInstruction in instructions)
|
||||||
//Check if the first opcode after endfinally ldloc_0 is and in that case add the label to skip the code
|
{
|
||||||
if (found_skip && codeInstruction.opcode == OpCodes.Ldloc_0)
|
yield return codeInstruction;
|
||||||
{
|
|
||||||
codeInstruction.labels.Add(skip_label);
|
if (finished)
|
||||||
}
|
{
|
||||||
found_skip = false;
|
continue;
|
||||||
if (codeInstruction.opcode == OpCodes.Endfinally)
|
}
|
||||||
{
|
|
||||||
found_skip = true;
|
if (!found_call && codeInstruction.Calls(removeHediff))
|
||||||
}
|
{
|
||||||
|
//Load pawn, call function to check if a mechbreeder, and skip past the part which does damage
|
||||||
yield return codeInstruction;
|
yield return new CodeInstruction(OpCodes.Ldloc_0);
|
||||||
|
yield return new CodeInstruction(OpCodes.Call, ismechbreeder);
|
||||||
if (codeInstruction.opcode == OpCodes.Call)
|
yield return new CodeInstruction(OpCodes.Brfalse_S, skip_label);
|
||||||
{
|
yield return new CodeInstruction(OpCodes.Ret);
|
||||||
if (codeInstruction.operand.ToString() == "Boolean TryMakeFilth(Verse.IntVec3, Verse.Map, Verse.ThingDef, System.String, Int32, RimWorld.FilthSourceFlags)")
|
found_call = true;
|
||||||
{
|
}
|
||||||
found_call = true;
|
else if (found_call)
|
||||||
}
|
{
|
||||||
}
|
// next instruction after the insert
|
||||||
//Triggers after the pop opcode (after generating filth in c#).
|
codeInstruction.labels.Add(skip_label);
|
||||||
else if (found_call)
|
finished = true;
|
||||||
{
|
}
|
||||||
//Load pawn, call function to check if a mechbreeder, and skip past the part which does damage
|
}
|
||||||
yield return new CodeInstruction(OpCodes.Ldloc_0, null);
|
|
||||||
yield return new CodeInstruction(OpCodes.Call, ismechbreeder);
|
|
||||||
yield return new CodeInstruction(OpCodes.Brtrue_S, skip_label);
|
|
||||||
found_call = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
yield break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
|
namespace RJW_Genes
|
||||||
|
{
|
||||||
|
public class HediffCompProperties_DiseaseStorage : HediffCompProperties
|
||||||
|
{
|
||||||
|
// 300k = 5 days.
|
||||||
|
public int ticksThatDiseasesAreStored = 300000;
|
||||||
|
public HediffCompProperties_DiseaseStorage() => this.compClass = typeof(HediffComp_DiseaseStorage);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
39
1.5/Source/Genes/Diseases/Comps/HediffComp_DiseaseStorage.cs
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
|
namespace RJW_Genes
|
||||||
|
{
|
||||||
|
public class HediffComp_DiseaseStorage : HediffComp
|
||||||
|
{
|
||||||
|
public HediffCompProperties_DiseaseStorage Props => (HediffCompProperties_DiseaseStorage)this.props;
|
||||||
|
|
||||||
|
List<int> remainingTicks = new List<int>();
|
||||||
|
List<GeneDef> storedDiseases = new List<GeneDef>();
|
||||||
|
|
||||||
|
public void StoreDisease(GeneDef disease)
|
||||||
|
{
|
||||||
|
if (storedDiseases.Contains(disease)) {
|
||||||
|
remainingTicks[storedDiseases.IndexOf(disease)] = Props.ticksThatDiseasesAreStored;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
storedDiseases.Add(disease);
|
||||||
|
remainingTicks.Add(Props.ticksThatDiseasesAreStored);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public List<GeneDef> GetStoredDiseases() { return storedDiseases.ToList(); }
|
||||||
|
|
||||||
|
public override void CompExposeData()
|
||||||
|
{
|
||||||
|
base.CompExposeData();
|
||||||
|
|
||||||
|
Scribe_Collections.Look<int>(ref remainingTicks, "remainingTicks");
|
||||||
|
Scribe_Collections.Look<GeneDef>(ref storedDiseases, "storedDiseases");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -25,10 +25,14 @@ namespace RJW_Genes
|
||||||
// Case 1.B: Dead people can spread, but not receive, diseases.
|
// Case 1.B: Dead people can spread, but not receive, diseases.
|
||||||
if (pawn.Dead) return true;
|
if (pawn.Dead) return true;
|
||||||
|
|
||||||
// Case 2: The pawn has general genetic immunity to diseases
|
// Case 2A: The pawn has general genetic immunity to diseases
|
||||||
if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_genetic_disease_immunity))
|
if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_genetic_disease_immunity))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
// Case 2B: The pawn has the carrier gene
|
||||||
|
if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_disease_carrier))
|
||||||
|
return true;
|
||||||
|
|
||||||
// Case 3: The pawn already has the genetic disease
|
// Case 3: The pawn already has the genetic disease
|
||||||
if (GeneUtility.HasGeneNullCheck(pawn, disease))
|
if (GeneUtility.HasGeneNullCheck(pawn, disease))
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -53,14 +57,16 @@ namespace RJW_Genes
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns all active Genes with the `GeneticDiseaseExtension`.
|
/// Returns all active Genes with the `GeneticDiseaseExtension`.
|
||||||
|
/// Update v2.3.0: Returns also possible options if the Pawn is a Genetic Disease Carrier.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="pawn"></param>
|
/// <param name="pawn"></param>
|
||||||
/// <returns>List of all active Genes with the `GeneticDiseaseExtension` in pawn</returns>
|
/// <returns>List of all active Genes with the `GeneticDiseaseExtension` in pawn</returns>
|
||||||
public static List<GeneDef> GetGeneticDiseaseGenes(Pawn pawn)
|
public static List<GeneDef> GetGeneticDiseaseGenes(Pawn pawn)
|
||||||
{
|
{
|
||||||
|
var diseases = new List<GeneDef>() { };
|
||||||
if (pawn != null && pawn.genes != null)
|
if (pawn != null && pawn.genes != null)
|
||||||
{
|
{
|
||||||
return pawn.genes
|
diseases = pawn.genes
|
||||||
.GenesListForReading
|
.GenesListForReading
|
||||||
.ConvertAll(gene => gene.def)
|
.ConvertAll(gene => gene.def)
|
||||||
.Where(genedef => pawn.genes.HasActiveGene(genedef))
|
.Where(genedef => pawn.genes.HasActiveGene(genedef))
|
||||||
|
|
@ -68,7 +74,20 @@ namespace RJW_Genes
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
return new List<GeneDef>() { };
|
List<GeneDef> carrierResults = GetGeneticDiseasesGenesFromDiseaseCarrier(pawn);
|
||||||
|
diseases.AddRange(carrierResults);
|
||||||
|
|
||||||
|
return diseases;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<GeneDef> GetGeneticDiseasesGenesFromDiseaseCarrier(Pawn pawn) {
|
||||||
|
if (pawn == null) return new List<GeneDef>() { };
|
||||||
|
Hediff storage = null;
|
||||||
|
pawn.health.hediffSet.TryGetHediff(HediffDefOf.rjw_genes_disease_carrier_storage, out storage);
|
||||||
|
if (storage == null) return new List<GeneDef>() { };
|
||||||
|
var comp = storage.TryGetComp<HediffComp_DiseaseStorage>();
|
||||||
|
if (comp == null) return new List<GeneDef>() { };
|
||||||
|
return comp.GetStoredDiseases();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<GeneDef> GetGeneticInfectorGenes(Pawn pawn)
|
public static List<GeneDef> GetGeneticInfectorGenes(Pawn pawn)
|
||||||
|
|
@ -129,6 +148,45 @@ namespace RJW_Genes
|
||||||
return infectorExt != null;
|
return infectorExt != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Manages storing a genetic disease in a pawn.
|
||||||
|
/// If the pawn is not a carrier, nothing will happen.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disease">Disease to store</param>
|
||||||
|
/// <param name="pawn">Pawn that might be a carrier.</param>
|
||||||
|
/// <returns>True if all goes well and disease is stored - false on unapplicable and errors.</returns>
|
||||||
|
public static bool TryStoreGeneticDiseaseInCarrier(GeneDef disease, Pawn pawn)
|
||||||
|
{
|
||||||
|
if (disease == null || pawn == null) return false;
|
||||||
|
|
||||||
|
if (!GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_disease_carrier))
|
||||||
|
return false;
|
||||||
|
var store = GetOrCreateDiseaseStorageHediff(pawn).TryGetComp<HediffComp_DiseaseStorage>();
|
||||||
|
if (store == null) return false;
|
||||||
|
|
||||||
|
store.StoreDisease(disease);
|
||||||
|
ModLog.Debug($"DiseaseCarrier: Stored {disease} in {pawn}");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets (or creates) a Disease Storage Hediff for the `carrier`-pawn,
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inflated"></param>
|
||||||
|
/// <returns>A Cumflation Hediff of the inflated pawn.</returns>
|
||||||
|
public static Hediff GetOrCreateDiseaseStorageHediff(Pawn carrier)
|
||||||
|
{
|
||||||
|
Hediff diseaseCarrierHediff = carrier.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_disease_carrier_storage);
|
||||||
|
if (diseaseCarrierHediff == null)
|
||||||
|
{
|
||||||
|
diseaseCarrierHediff = HediffMaker.MakeHediff(HediffDefOf.rjw_genes_disease_carrier_storage, carrier);
|
||||||
|
carrier.health.AddHediff(diseaseCarrierHediff);
|
||||||
|
}
|
||||||
|
diseaseCarrierHediff.Severity = 1;
|
||||||
|
return diseaseCarrierHediff;
|
||||||
|
}
|
||||||
|
|
||||||
public static float LookupDiseaseInfectionChance(GeneDef geneDef)
|
public static float LookupDiseaseInfectionChance(GeneDef geneDef)
|
||||||
{
|
{
|
||||||
if (IsGeneticDiseaseGene(geneDef))
|
if (IsGeneticDiseaseGene(geneDef))
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ namespace RJW_Genes
|
||||||
|
|
||||||
foreach (GeneDef diseaseGeneDef in DiseaseHelper.LookupInfectionGeneDefs(diseaseExt))
|
foreach (GeneDef diseaseGeneDef in DiseaseHelper.LookupInfectionGeneDefs(diseaseExt))
|
||||||
{
|
{
|
||||||
|
DiseaseHelper.TryStoreGeneticDiseaseInCarrier(diseaseGeneDef, partner);
|
||||||
if (DiseaseHelper.IsImmuneAgainstGeneticDisease(partner, diseaseGeneDef))
|
if (DiseaseHelper.IsImmuneAgainstGeneticDisease(partner, diseaseGeneDef))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,10 +41,10 @@ namespace RJW_Genes
|
||||||
|
|
||||||
private static void TryTransferGeneticDiseases(Pawn infector, Pawn infected, SexProps props)
|
private static void TryTransferGeneticDiseases(Pawn infector, Pawn infected, SexProps props)
|
||||||
{
|
{
|
||||||
|
|
||||||
foreach (GeneDef disease in DiseaseHelper.GetGeneticDiseaseGenes(infector)) {
|
foreach (GeneDef disease in DiseaseHelper.GetGeneticDiseaseGenes(infector)) {
|
||||||
ModLog.Debug($"Found genetic disease {disease} in {infector}, trying to infect {infected}");
|
ModLog.Debug($"Found genetic disease {disease} in {infector}, trying to infect {infected}");
|
||||||
|
|
||||||
|
DiseaseHelper.TryStoreGeneticDiseaseInCarrier(disease, infected);
|
||||||
if (DiseaseHelper.IsImmuneAgainstGeneticDisease(infected,disease))
|
if (DiseaseHelper.IsImmuneAgainstGeneticDisease(infected,disease))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
@ -56,5 +56,6 @@ namespace RJW_Genes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ namespace RJW_Genes
|
||||||
{
|
{
|
||||||
// Right now: Ignore Breasts, only do
|
// Right now: Ignore Breasts, only do
|
||||||
if (part is ISexPartHediff sexPart && (Genital_Helper.is_penis(part) || Genital_Helper.is_vagina(part)))
|
if (part is ISexPartHediff sexPart && (Genital_Helper.is_penis(part) || Genital_Helper.is_vagina(part)))
|
||||||
sexPart.GetPartComp().partFluidFactor *= multiplier;
|
sexPart.GetPartComp().partFluidMultiplier *= multiplier;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
using Cumpilation.Oscillation;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
|
namespace RJW_Genes
|
||||||
|
{
|
||||||
|
public class HediffCompProperties_MatchSeverityOfHediff : HediffCompProperties
|
||||||
|
{
|
||||||
|
public HediffDef hediffToMatch;
|
||||||
|
|
||||||
|
public HediffCompProperties_MatchSeverityOfHediff() => this.compClass = typeof(HediffComp_MatchSeverityOfHediff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
using Verse;
|
||||||
|
|
||||||
|
namespace RJW_Genes
|
||||||
|
{
|
||||||
|
public class HediffComp_MatchSeverityOfHediff : HediffComp
|
||||||
|
{
|
||||||
|
public HediffCompProperties_MatchSeverityOfHediff Props => (HediffCompProperties_MatchSeverityOfHediff)this.props;
|
||||||
|
|
||||||
|
public override void CompPostTick(ref float severityAdjustment)
|
||||||
|
{
|
||||||
|
base.CompPostTick(ref severityAdjustment);
|
||||||
|
|
||||||
|
bool hasMatchingHediff = parent.pawn.health.hediffSet.HasHediff(Props.hediffToMatch);
|
||||||
|
|
||||||
|
if (!hasMatchingHediff) {
|
||||||
|
parent.Severity = 0.0f;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Hediff match = parent.pawn.health.hediffSet.GetFirstHediffOfDef(Props.hediffToMatch);
|
||||||
|
if (match == null) parent.Severity = 0.0f;
|
||||||
|
parent.Severity = match.Severity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -21,7 +21,7 @@ namespace RJW_Genes
|
||||||
if (this.Props.mtbDaysPerStage[this.parent.CurStageIndex] > 0f && base.Pawn.IsHashIntervalTick(60) && Rand.MTBEventOccurs(this.Props.mtbDaysPerStage[this.parent.CurStageIndex], 60000f, 60f))
|
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}");
|
ModLog.Debug($"Triggered HediffComp_ProcessCumbucket CompPostTick - Starting a JobDriver ProcessCumbucket for {this.parent.pawn}");
|
||||||
this.Pawn.jobs.StartJob(JobMaker.MakeJob(DefDatabase<JobDef>.GetNamed("ProcessCumbucket")), lastJobEndCondition: Verse.AI.JobCondition.InterruptForced, resumeCurJobAfterwards: true);
|
this.Pawn.jobs.StartJob(JobMaker.MakeJob(DefDatabase<JobDef>.GetNamed("RJW_Genes_ProcessCumbucket")), lastJobEndCondition: Verse.AI.JobCondition.InterruptForced, resumeCurJobAfterwards: true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
using LicentiaLabs;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using Verse;
|
using Verse;
|
||||||
using Verse.AI;
|
using Verse.AI;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
@ -23,7 +22,7 @@ namespace RJW_Genes
|
||||||
protected override IEnumerable<Toil> MakeNewToils()
|
protected override IEnumerable<Toil> MakeNewToils()
|
||||||
{
|
{
|
||||||
// DevNote: Right now, this needs RJW.sexperience to produce the Cum-Item.
|
// DevNote: Right now, this needs RJW.sexperience to produce the Cum-Item.
|
||||||
if (!ModsConfig.IsActive("rjw.sexperience"))
|
if (!ModsConfig.IsActive("vegapnk.cumpilation"))
|
||||||
yield break;
|
yield break;
|
||||||
|
|
||||||
Toil toil = new Toil();
|
Toil toil = new Toil();
|
||||||
|
|
@ -76,10 +75,6 @@ namespace RJW_Genes
|
||||||
if (this.ticksLeft <= 0)
|
if (this.ticksLeft <= 0)
|
||||||
{
|
{
|
||||||
base.ReadyForNextToil();
|
base.ReadyForNextToil();
|
||||||
TaleRecorder.RecordTale(Licentia.TaleDefs.VomitedCum, new object[]
|
|
||||||
{
|
|
||||||
this.pawn
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
toil.defaultCompleteMode = ToilCompleteMode.Never;
|
toil.defaultCompleteMode = ToilCompleteMode.Never;
|
||||||
|
|
@ -91,15 +86,19 @@ namespace RJW_Genes
|
||||||
|
|
||||||
private void SpawnCum(Pawn pawn, IntVec3 cell, Map map)
|
private void SpawnCum(Pawn pawn, IntVec3 cell, Map map)
|
||||||
{
|
{
|
||||||
ThingDef cumDef = DefDatabase<ThingDef>.GetNamed("GatheredCum", true);
|
|
||||||
|
|
||||||
Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_filled_living_cumbucket);
|
Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_filled_living_cumbucket);
|
||||||
if (hediff == null)
|
if (hediff == null)
|
||||||
{
|
{
|
||||||
ModLog.Warning($"{pawn} has the JobDriver_ProcessCumbucket but does not have the Hediff for filled cumbucket.");
|
ModLog.Warning($"{pawn} has the JobDriver_ProcessCumbucket but does not have the Hediff for filled cumbucket.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var storage = hediff.TryGetComp<Cumpilation.Cumflation.HediffComp_SourceStorage>();
|
||||||
|
var random_entry = storage.sources.RandomElementByWeight(p => p.amount);
|
||||||
|
ThingDef ToSpawn = random_entry.fluid.consumable == null ? Cumpilation.DefOfs.Cumpilation_Cum : random_entry.fluid.consumable;
|
||||||
|
|
||||||
|
ThingDef cumDef = Cumpilation.DefOfs.Cumpilation_Cum;
|
||||||
|
|
||||||
// Case 1: "Normal Severity", just puke out a bit of cum here and there.
|
// Case 1: "Normal Severity", just puke out a bit of cum here and there.
|
||||||
if (hediff.Severity <= 10)
|
if (hediff.Severity <= 10)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Reflection.Emit;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using HarmonyLib;
|
|
||||||
using rjw;
|
|
||||||
using RimWorld;
|
|
||||||
using Verse;
|
|
||||||
|
|
||||||
namespace RJW_Genes
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Changes LicentiaLabs (if Present) to not cumflate pawns that are cumflation immune.
|
|
||||||
/// This code is exercised / loaded in the HarmonyInit.
|
|
||||||
/// Patched File: https://gitgud.io/John-the-Anabaptist/licentia-labs/-/blob/master/Source/LicentiaLabs/LicentiaLabs/Cumflation.cs
|
|
||||||
/// </summary>
|
|
||||||
///
|
|
||||||
class Patch_CumflationImmunity
|
|
||||||
{
|
|
||||||
// This patch does not need the normal Harmony Targetting,
|
|
||||||
// as it needs to be added only on demand (See HarmonyInit.cs)
|
|
||||||
public static bool Prefix(SexProps props)
|
|
||||||
{
|
|
||||||
// Harmony Logic skips the original Method after Prefix when "false" is returned
|
|
||||||
// See https://harmony.pardeike.net/articles/execution.html
|
|
||||||
|
|
||||||
// We skip the whole Cumflation Logic when the Partner is Cumflation Immune
|
|
||||||
if (props != null && props.partner != null && GeneUtility.IsCumflationImmune(props.partner))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
|
namespace RJW_Genes
|
||||||
|
{
|
||||||
|
public class Patch_Cumpilation_BlockCumflation
|
||||||
|
{
|
||||||
|
public static bool Prepare() => ModsConfig.IsActive("vegapnk.cumpilation");
|
||||||
|
public static void PostFix(Pawn pawn,ref bool __result) {
|
||||||
|
if (pawn != null && pawn.genes != null && pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_un_inflatable))
|
||||||
|
__result = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
|
namespace RJW_Genes
|
||||||
|
{
|
||||||
|
public class Patch_Cumpilation_BlockStuffing
|
||||||
|
{
|
||||||
|
|
||||||
|
public static bool Prepare() => ModsConfig.IsActive("vegapnk.cumpilation");
|
||||||
|
public static void PostFix(Pawn pawn,ref bool __result) {
|
||||||
|
if (pawn != null && pawn.genes != null && pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_un_inflatable))
|
||||||
|
__result = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,93 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Reflection.Emit;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using HarmonyLib;
|
||||||
|
using rjw;
|
||||||
|
using RimWorld;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
|
namespace RJW_Genes
|
||||||
|
{
|
||||||
|
class Patch_Cumpilation_Inflatable
|
||||||
|
{
|
||||||
|
|
||||||
|
public static bool Prepare() => ModsConfig.IsActive("vegapnk.cumpilation");
|
||||||
|
|
||||||
|
// This patch does not need the normal Harmony Targetting,
|
||||||
|
// as it needs to be added only on demand (See HarmonyInit.cs)
|
||||||
|
public static void PostFix(SexProps props)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (props == null || props.pawn == null || props.partner == null) return;
|
||||||
|
|
||||||
|
|
||||||
|
if (props.pawn.genes != null && props.pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_inflatable) )
|
||||||
|
{
|
||||||
|
AddOrIncreaseCumflationCounterHediffs(props.pawn);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (props.partner.genes != null && props.partner.genes.HasActiveGene(GeneDefOf.rjw_genes_inflatable))
|
||||||
|
{
|
||||||
|
AddOrIncreaseCumflationCounterHediffs(props.partner);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void AddOrIncreaseCumflationCounterHediffs(Pawn inflated)
|
||||||
|
{
|
||||||
|
|
||||||
|
List<(Hediff,HediffDef)> expectedCounterHediffs = inflated.health.hediffSet.hediffs
|
||||||
|
.Where(hediff => FindMatchingCounterHediff(hediff.def) != null)
|
||||||
|
.Select(hediff => (hediff,FindMatchingCounterHediff(hediff.def)))
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
ModLog.Debug($"Adding or Increasing {expectedCounterHediffs.Count()} expected CounterHediffs for Pawn {inflated}");
|
||||||
|
|
||||||
|
foreach ((Hediff,HediffDef) matchedHediffs in expectedCounterHediffs) {
|
||||||
|
if (inflated.health.hediffSet.HasHediff(matchedHediffs.Item2)) {
|
||||||
|
Hediff counter = inflated.health.GetOrAddHediff(matchedHediffs.Item2);
|
||||||
|
counter.Severity = matchedHediffs.Item1.Severity;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
Hediff counter = HediffMaker.MakeHediff(matchedHediffs.Item2, inflated, matchedHediffs.Item1.Part);
|
||||||
|
counter.Severity = matchedHediffs.Item1.Severity;
|
||||||
|
inflated.health.AddHediff(counter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HediffDef FindMatchingCounterHediff(HediffDef hediffDef)
|
||||||
|
{
|
||||||
|
if (hediffDef == null) return null;
|
||||||
|
|
||||||
|
var result = DefDatabase<HediffDef>.AllDefsListForReading
|
||||||
|
.Where(def => {
|
||||||
|
if (def.comps == null || def.comps.Count == 0) return false;
|
||||||
|
var Matcher = def.comps.FirstOrFallback(comp => comp is HediffCompProperties_MatchSeverityOfHediff,null);
|
||||||
|
if (Matcher == null) return false;
|
||||||
|
HediffCompProperties_MatchSeverityOfHediff MatcherCasted = (HediffCompProperties_MatchSeverityOfHediff)Matcher;
|
||||||
|
return MatcherCasted.hediffToMatch == hediffDef;
|
||||||
|
})
|
||||||
|
.FirstOrFallback(null);
|
||||||
|
if (result != null) ModLog.Debug($"Found CounterHediff {result} as counter for {hediffDef}");
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Hediff CreateOrGetCumflationCounterHediff(Pawn inflated, HediffDef counterCumflationDef, BodyPartRecord bodyPartRecord)
|
||||||
|
{
|
||||||
|
Hediff cumflationHediff = inflated.health.hediffSet.GetFirstHediffOfDef(counterCumflationDef);
|
||||||
|
if (cumflationHediff == null)
|
||||||
|
{
|
||||||
|
cumflationHediff = HediffMaker.MakeHediff(counterCumflationDef, inflated, bodyPartRecord);
|
||||||
|
cumflationHediff.Severity = 0;
|
||||||
|
inflated.health.AddHediff(cumflationHediff, bodyPartRecord);
|
||||||
|
}
|
||||||
|
return cumflationHediff;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,79 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Reflection.Emit;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using HarmonyLib;
|
|
||||||
using rjw;
|
|
||||||
using RimWorld;
|
|
||||||
using Verse;
|
|
||||||
|
|
||||||
namespace RJW_Genes
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Changes LicentiaLabs (if Present) to add a cumflation-counter hediff, when the pawn is cumflated.
|
|
||||||
/// The counter hediff takes away the negative stats of the original hediff.
|
|
||||||
/// This code is exercised / loaded in the HarmonyInit.
|
|
||||||
/// Patched File: https://gitgud.io/John-the-Anabaptist/licentia-labs/-/blob/master/Source/LicentiaLabs/LicentiaLabs/Cumflation.cs
|
|
||||||
/// </summary>
|
|
||||||
///
|
|
||||||
class Patch_LikesCumflation
|
|
||||||
{
|
|
||||||
// This patch does not need the normal Harmony Targetting,
|
|
||||||
// as it needs to be added only on demand (See HarmonyInit.cs)
|
|
||||||
public static void PostFix(SexProps props)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (props == null || props.pawn == null || props.partner == null) return;
|
|
||||||
|
|
||||||
// Minor Hardening to help with #105
|
|
||||||
if (!ModsConfig.IsActive("LustLicentia.RJWLabs")) return;
|
|
||||||
|
|
||||||
if (props.pawn.genes != null && props.pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_likes_cumflation) )
|
|
||||||
{
|
|
||||||
AddOrIncreaseCumflationCounterHediff(props.pawn);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (props.partner.genes != null && props.partner.genes.HasActiveGene(GeneDefOf.rjw_genes_likes_cumflation))
|
|
||||||
{
|
|
||||||
AddOrIncreaseCumflationCounterHediff(props.partner);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void AddOrIncreaseCumflationCounterHediff(Pawn inflated)
|
|
||||||
{
|
|
||||||
Hediff cumstuffed_hediff = inflated.health.hediffSet.GetFirstHediffOfDef(LicentiaLabs.Licentia.HediffDefs.Cumstuffed);
|
|
||||||
//Hediff cumstuffed_hediff = LicentiaLabs.CumflationHelper.GetCumflationHediff(inflated, LicentiaLabs.Licentia.HediffDefs.Cumstuffed, "stomach");
|
|
||||||
if (cumstuffed_hediff != null && cumstuffed_hediff.Severity >= 0.01) {
|
|
||||||
ModLog.Debug($"{inflated} got cumstuffed and gets the counter-part");
|
|
||||||
var bodyPartRecord = inflated.RaceProps.body.AllParts.Find(bpr => bpr.def.defName.Contains("stomach") || bpr.def.defName.Contains("stomach".ToLower()));
|
|
||||||
var counter_hediff = CreateOrGetCumflationCounterHediff(inflated, HediffDefOf.rjw_genes_cumstuffed_counter, bodyPartRecord);
|
|
||||||
counter_hediff.Severity = cumstuffed_hediff.Severity;
|
|
||||||
}
|
|
||||||
|
|
||||||
Hediff cumflation_hediff = inflated.health.hediffSet.GetFirstHediffOfDef(LicentiaLabs.Licentia.HediffDefs.Cumflation);
|
|
||||||
if (cumflation_hediff != null && cumflation_hediff.Severity >= 0.01)
|
|
||||||
{
|
|
||||||
ModLog.Debug($"{inflated} got cumflated and gets the counter-part");
|
|
||||||
var bodyPartRecord = Genital_Helper.get_genitalsBPR(inflated);
|
|
||||||
var counter_hediff = CreateOrGetCumflationCounterHediff(inflated, HediffDefOf.rjw_genes_cumflation_counter, bodyPartRecord);
|
|
||||||
counter_hediff.Severity = cumflation_hediff.Severity;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Hediff CreateOrGetCumflationCounterHediff(Pawn inflated, HediffDef counterCumflationDef, BodyPartRecord bodyPartRecord)
|
|
||||||
{
|
|
||||||
Hediff cumflationHediff = inflated.health.hediffSet.GetFirstHediffOfDef(counterCumflationDef);
|
|
||||||
if (cumflationHediff == null)
|
|
||||||
{
|
|
||||||
cumflationHediff = HediffMaker.MakeHediff(counterCumflationDef, inflated, bodyPartRecord);
|
|
||||||
cumflationHediff.Severity = 0;
|
|
||||||
inflated.health.AddHediff(cumflationHediff, bodyPartRecord);
|
|
||||||
}
|
|
||||||
return cumflationHediff;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -11,7 +11,6 @@ using static System.Net.Mime.MediaTypeNames;
|
||||||
namespace RJW_Genes
|
namespace RJW_Genes
|
||||||
{
|
{
|
||||||
|
|
||||||
[HarmonyPatch(typeof(SexUtility), nameof(SexUtility.SatisfyPersonal))]
|
|
||||||
public class Patch_LivingCumbucket_StackHediff
|
public class Patch_LivingCumbucket_StackHediff
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -20,36 +19,47 @@ namespace RJW_Genes
|
||||||
/// The hediff can still be increased over 1.0.
|
/// The hediff can still be increased over 1.0.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
const float fluid_amount_required_for_hediff_severity_ = 100.0f;
|
const float fluid_amount_required_for_hediff_severity_ = 100.0f;
|
||||||
|
public static bool Prepare() => ModsConfig.IsActive("vegapnk.cumpilation");
|
||||||
|
|
||||||
public static void Postfix(SexProps props)
|
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)
|
// 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())
|
if (props == null || props.pawn == null || !props.hasPartner())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// Is not internal Sex
|
||||||
|
if (!Cumpilation.Cumflation.StuffingUtility.IsSexTypeThatCanCumstuff(props) && !Cumpilation.Cumflation.CumflationUtility.IsSexTypeThatCanCumflate(props))
|
||||||
|
return;
|
||||||
|
|
||||||
Pawn pawnA = props.pawn;
|
Pawn pawnA = props.pawn;
|
||||||
Pawn pawnB = props.partner;
|
Pawn pawnB = props.partner;
|
||||||
|
|
||||||
if (pawnA.genes != null && pawnA.genes.HasActiveGene(GeneDefOf.rjw_genes_living_cumbucket) && FluidUtility.GetTotalFluidAmount(pawnB) > 0)
|
if (pawnA.genes != null && pawnA.genes.HasActiveGene(GeneDefOf.rjw_genes_living_cumbucket) && FluidUtility.GetTotalFluidAmount(pawnB) > 0)
|
||||||
{
|
{
|
||||||
ProcessLivingCumbucket(pawnA, FluidUtility.GetTotalFluidAmount(pawnB));
|
ISexPartHediff genital = Cumpilation.Common.FluidUtility.GetGenitalsWithFluids(pawnB,filterForShootsOnOrgasm:true).RandomElement();
|
||||||
|
if (genital != null)
|
||||||
|
{
|
||||||
|
var comp = genital.GetPartComp();
|
||||||
|
StackUpLivingCumbucket(pawnA, comp.FluidAmount, comp.Fluid, pawnB);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pawnB.genes != null && pawnB.genes.HasActiveGene(GeneDefOf.rjw_genes_living_cumbucket) && FluidUtility.GetTotalFluidAmount(pawnA) > 0)
|
if (pawnB.genes != null && pawnB.genes.HasActiveGene(GeneDefOf.rjw_genes_living_cumbucket) && FluidUtility.GetTotalFluidAmount(pawnA) > 0)
|
||||||
{
|
{
|
||||||
ProcessLivingCumbucket(pawnB, FluidUtility.GetTotalFluidAmount(pawnA));
|
ISexPartHediff genital = Cumpilation.Common.FluidUtility.GetGenitalsWithFluids(pawnA, filterForShootsOnOrgasm: true).RandomElement();
|
||||||
|
if (genital != null)
|
||||||
|
{
|
||||||
|
var comp = genital.GetPartComp();
|
||||||
|
StackUpLivingCumbucket(pawnB, comp.FluidAmount, comp.Fluid, pawnA);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ProcessLivingCumbucket(Pawn pawn, float cumamount)
|
public static void StackUpLivingCumbucket(Pawn pawn, float cumamount, SexFluidDef fluid, Pawn source)
|
||||||
{
|
{
|
||||||
float bodysize = pawn.BodySize;
|
float bodysize = pawn.BodySize;
|
||||||
float result_severity_increase = cumamount / (fluid_amount_required_for_hediff_severity_ * 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);
|
Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_filled_living_cumbucket);
|
||||||
if (hediff == null)
|
if (hediff == null)
|
||||||
{
|
{
|
||||||
|
|
@ -57,6 +67,13 @@ namespace RJW_Genes
|
||||||
hediff.Severity = 0.01f;
|
hediff.Severity = 0.01f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var storage = hediff.TryGetComp<Cumpilation.Cumflation.HediffComp_SourceStorage>();
|
||||||
|
if (storage != null)
|
||||||
|
{
|
||||||
|
Cumpilation.Cumflation.FluidSource entry = new Cumpilation.Cumflation.FluidSource() { amount = cumamount, fluid=fluid, pawn = source };
|
||||||
|
storage.AddOrMerge(entry);
|
||||||
|
}
|
||||||
|
|
||||||
hediff.Severity += result_severity_increase;
|
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})");
|
ModLog.Debug($"Pumping the living cumbucket {pawn} (Bodysize {bodysize}) with {cumamount} cum, resulting in severity {hediff.Severity} (+{result_severity_increase})");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Reflection.Emit;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using HarmonyLib;
|
|
||||||
using rjw;
|
|
||||||
using RimWorld;
|
|
||||||
using Verse;
|
|
||||||
using LicentiaLabs;
|
|
||||||
|
|
||||||
|
|
||||||
namespace RJW_Genes
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Changes LicentiaLabs (if Present) to alter the TransferNutrition for rjw_genes_generous_donor.
|
|
||||||
/// This code is exercised / loaded in the HarmonyInit.
|
|
||||||
/// Patched File: https://gitgud.io/John-the-Anabaptist/licentia-labs/-/blob/master/Source/LicentiaLabs/LicentiaLabs/Cumflation.cs
|
|
||||||
/// </summary>
|
|
||||||
///
|
|
||||||
class Patch_TransferNutrition
|
|
||||||
{
|
|
||||||
// This patch does not need the normal Harmony Targetting,
|
|
||||||
// as it needs to be added only on demand (See HarmonyInit.cs)
|
|
||||||
public static void Postfix(Pawn giver, Pawn receiver, float cumAmount)
|
|
||||||
{
|
|
||||||
// Design decision:
|
|
||||||
// I could have done some transpiler stuff, but that is scary and might need to be adjusted quite a lot
|
|
||||||
// Hence, I simply re-book the nutrition back to the giver in the Postfix. That should be robust and easy.
|
|
||||||
if (GeneUtility.IsGenerousDonor(giver))
|
|
||||||
{
|
|
||||||
float donatedNutrition = CumflationHelper.CalculateNutritionAmount(giver, cumAmount);
|
|
||||||
// TODO: In theory, there could be something weird happening if the donor has food less than X and the "IgnoreThermodynamics" is set on.
|
|
||||||
// Then it can happen that the donor ends up with more food than he had before cumshot, but I think that is somewhat funny given that you have ignore Thermodynamics on.
|
|
||||||
Need_Food inflatorFood = giver.needs.TryGetNeed<Need_Food>();
|
|
||||||
if (inflatorFood != null)
|
|
||||||
inflatorFood.CurLevel += donatedNutrition;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
using HarmonyLib;
|
||||||
|
using rjw;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
|
|
||||||
|
namespace RJW_Genes
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Upon Transfer Fluids, the pawns store their current Food need (if applicable).
|
||||||
|
/// When running the postfix, all generous donours get their old food need restored if the current one is lower.
|
||||||
|
/// If there is any issue, the need is just set to -10 as an error value.
|
||||||
|
///
|
||||||
|
/// Patched Method: https://gitgud.io/Ed86/rjw/-/blob/master/1.5/Source/Common/Helpers/SexUtility.cs?ref_type=heads#L992
|
||||||
|
/// </summary>
|
||||||
|
[HarmonyPatch(typeof(rjw.SexUtility), nameof(rjw.SexUtility.TransferFluids))]
|
||||||
|
class Patch_TransferNutrition_Generous_Donor_PawnToPartner
|
||||||
|
{
|
||||||
|
|
||||||
|
static void Prefix(SexProps props, out float __state)
|
||||||
|
{
|
||||||
|
__state = -10.0f;
|
||||||
|
if (props.pawn != null && props.pawn.needs != null && props.pawn.needs.food != null)
|
||||||
|
__state = props.pawn.needs.food.CurLevel;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Postfix(SexProps props,float __state )
|
||||||
|
{
|
||||||
|
|
||||||
|
if (props.pawn != null && props.pawn.needs != null && props.pawn.needs.food != null && props.pawn.genes != null)
|
||||||
|
{
|
||||||
|
if (props.pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_generous_donor) && props.pawn.needs.food.CurLevel < __state)
|
||||||
|
{
|
||||||
|
ModLog.Debug($"Found Generous Donor {props.pawn} Transferring Fluids - Resetting Food Need from {props.pawn.needs.food.CurLevel} to {__state}");
|
||||||
|
props.pawn.needs.food.CurLevel = __state;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Harmony Patches only allow for one out-variable as state.
|
||||||
|
/// Thus I have simply a clone with the same behaviour. Why not have it easy sometimes.
|
||||||
|
/// </summary>
|
||||||
|
[HarmonyPatch(typeof(rjw.SexUtility), nameof(rjw.SexUtility.TransferFluids))]
|
||||||
|
class Patch_TransferNutrition_Generous_Donor_PartnerToPawn
|
||||||
|
{
|
||||||
|
|
||||||
|
static void Prefix(SexProps props,out float __state)
|
||||||
|
{
|
||||||
|
__state = -10.0f;
|
||||||
|
if (props.partner != null && props.partner.needs != null && props.partner.needs.food != null)
|
||||||
|
__state = props.partner.needs.food.CurLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Postfix(SexProps props, float __state)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (props.partner != null && props.partner.needs != null && props.partner.needs.food != null && props.partner.genes != null)
|
||||||
|
{
|
||||||
|
if (props.partner.genes.HasActiveGene(GeneDefOf.rjw_genes_generous_donor) && props.partner.needs.food.CurLevel < __state)
|
||||||
|
{
|
||||||
|
ModLog.Debug($"Found Generous Donor {props.partner} Transferring Fluids - Resetting Food Need from {props.partner.needs.food.CurLevel} to {__state}");
|
||||||
|
props.partner.needs.food.CurLevel = __state;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -87,16 +87,18 @@ namespace RJW_Genes
|
||||||
// Shouldn't ever be true in the normal case, but this stops someone from calling this with an incorrect setup
|
// Shouldn't ever be true in the normal case, but this stops someone from calling this with an incorrect setup
|
||||||
if (pawn?.health == null)
|
if (pawn?.health == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(wasSexThoughts == null || sexChangeThoughts == null || !wasSexThoughts.Any() || !sexChangeThoughts.Any())
|
if(wasSexThoughts == null || sexChangeThoughts == null || !wasSexThoughts.Any() || !sexChangeThoughts.Any())
|
||||||
{
|
{
|
||||||
Log.Warning($"Couldn't get values from RJW.\nold_sex_list: {wasSexThoughts.ToStringSafeEnumerable()}\nSexChangeThoughts: {sexChangeThoughts.ToStringSafeEnumerable()}");
|
Log.Warning($"Couldn't get values from RJW.\nold_sex_list: {wasSexThoughts.ToStringSafeEnumerable()}\nSexChangeThoughts: {sexChangeThoughts.ToStringSafeEnumerable()}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach(var def in wasSexThoughts.Concat(sexChangeThoughts))
|
var thoughtsToRemove = wasSexThoughts.Concat(sexChangeThoughts);
|
||||||
|
if (thoughtsToRemove.Count() == 0) return;
|
||||||
|
|
||||||
|
foreach (var thoughtToRemove in thoughtsToRemove)
|
||||||
{
|
{
|
||||||
var hediff = pawn.health.hediffSet.GetFirstHediffOfDef(def);
|
var hediff = pawn.health.hediffSet.GetFirstHediffOfDef(thoughtToRemove);
|
||||||
if (hediff != null)
|
if (hediff != null)
|
||||||
pawn.health.RemoveHediff(hediff);
|
pawn.health.RemoveHediff(hediff);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,8 @@ namespace RJW_Genes
|
||||||
{
|
{
|
||||||
base.Notify_OnPawnGeneration();
|
base.Notify_OnPawnGeneration();
|
||||||
// If this is Pawn generation, then we can assume that the pawn was never any gender other than female, so they shouldn't have sex change thoughts. (Issue #32)
|
// If this is Pawn generation, then we can assume that the pawn was never any gender other than female, so they shouldn't have sex change thoughts. (Issue #32)
|
||||||
GenderUtility.RemoveAllSexChangeThoughts(pawn);
|
if (pawn != null)
|
||||||
|
GenderUtility.RemoveAllSexChangeThoughts(pawn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,8 @@ namespace RJW_Genes
|
||||||
{
|
{
|
||||||
base.Notify_OnPawnGeneration();
|
base.Notify_OnPawnGeneration();
|
||||||
// If this is Pawn generation, then we can assume that the pawn was never any gender other than male, so they shouldn't have sex change thoughts. (Issue #32)
|
// If this is Pawn generation, then we can assume that the pawn was never any gender other than male, so they shouldn't have sex change thoughts. (Issue #32)
|
||||||
GenderUtility.RemoveAllSexChangeThoughts(pawn);
|
if (pawn != null)
|
||||||
|
GenderUtility.RemoveAllSexChangeThoughts(pawn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,6 @@ namespace RJW_Genes
|
||||||
public static bool IsYouthFountain(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_youth_fountain); }
|
public static bool IsYouthFountain(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_youth_fountain); }
|
||||||
public static bool IsAgeDrainer(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_sex_age_drain); }
|
public static bool IsAgeDrainer(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_sex_age_drain); }
|
||||||
public static bool IsElastic(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_elasticity); }
|
public static bool IsElastic(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_elasticity); }
|
||||||
public static bool IsCumflationImmune(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_cumflation_immunity); }
|
|
||||||
public static bool IsGenerousDonor(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_generous_donor); }
|
public static bool IsGenerousDonor(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_generous_donor); }
|
||||||
public static bool IsPussyHealer(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_pussyhealing); }
|
public static bool IsPussyHealer(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_pussyhealing); }
|
||||||
public static bool IsUnbreakable(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_unbreakable); }
|
public static bool IsUnbreakable(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_unbreakable); }
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ namespace RJW_Genes
|
||||||
public override void PostMake()
|
public override void PostMake()
|
||||||
{
|
{
|
||||||
base.PostMake();
|
base.PostMake();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void PostAdd()
|
public override void PostAdd()
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ namespace RJW_Genes
|
||||||
if (Genital_Helper.is_vagina(existingGenital) && vaginaReplacement != null && existingGenital.def != vaginaReplacement)
|
if (Genital_Helper.is_vagina(existingGenital) && vaginaReplacement != null && existingGenital.def != vaginaReplacement)
|
||||||
replacementGenital = HediffMaker.MakeHediff(vaginaReplacement, pawn, correctBPR);
|
replacementGenital = HediffMaker.MakeHediff(vaginaReplacement, pawn, correctBPR);
|
||||||
|
|
||||||
if (is_breast(existingGenital) && breastsReplacement != null && existingGenital.def != breastsReplacement)
|
if (IsBreast(existingGenital) && breastsReplacement != null && existingGenital.def != breastsReplacement)
|
||||||
{
|
{
|
||||||
correctBPR = Genital_Helper.get_breastsBPR(pawn);
|
correctBPR = Genital_Helper.get_breastsBPR(pawn);
|
||||||
replacementGenital = HediffMaker.MakeHediff(breastsReplacement, pawn, correctBPR);
|
replacementGenital = HediffMaker.MakeHediff(breastsReplacement, pawn, correctBPR);
|
||||||
|
|
@ -79,28 +79,33 @@ namespace RJW_Genes
|
||||||
|
|
||||||
public static bool IsAnus(Hediff candidate)
|
public static bool IsAnus(Hediff candidate)
|
||||||
{
|
{
|
||||||
return candidate.def.defName.ToLower().Contains("anus"); }
|
if (candidate == null || !(candidate is ISexPartHediff)) return false;
|
||||||
|
return candidate.def.defName.ToLower().Contains("anus");
|
||||||
|
}
|
||||||
|
|
||||||
private static bool is_breast_family(GenitalFamily family) => family switch
|
private static bool IsBreastFamiliy(GenitalFamily family) => family switch
|
||||||
{
|
{
|
||||||
GenitalFamily.Breasts => true,
|
GenitalFamily.Breasts => true,
|
||||||
_ => false
|
_ => false
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
public static bool is_breast(Hediff hed)
|
public static bool IsBreast(Hediff candidate)
|
||||||
{
|
{
|
||||||
if (hed.def is not HediffDef_SexPart def) return false;
|
if (candidate == null || !(candidate is ISexPartHediff)) return false;
|
||||||
return is_breast_family(def.genitalFamily);
|
if (candidate.def is not HediffDef_SexPart def) return false;
|
||||||
|
return IsBreastFamiliy(def.genitalFamily);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsArtificial(Hediff candidate)
|
public static bool IsArtificial(Hediff candidate)
|
||||||
{
|
{
|
||||||
return candidate.def.defName.ToLower().Contains("bionic") || candidate.def.defName.ToLower().Contains("archo");
|
if (candidate == null || !(candidate is ISexPartHediff)) return false;
|
||||||
|
return candidate.def.defName.ToLower().Contains("bionic") || candidate.def.defName.ToLower().Contains("archo");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RemoveAllGenitalia(Pawn pawn)
|
public static void RemoveAllGenitalia(Pawn pawn)
|
||||||
{
|
{
|
||||||
|
if (pawn == null) return;
|
||||||
var parts = Genital_Helper.get_AllPartsHediffList(pawn);
|
var parts = Genital_Helper.get_AllPartsHediffList(pawn);
|
||||||
foreach (var part in parts)
|
foreach (var part in parts)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,11 @@
|
||||||
using RimWorld;
|
using RimWorld;
|
||||||
using rjw;
|
using rjw;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace RJW_Genes
|
namespace RJW_Genes
|
||||||
{
|
{
|
||||||
public class Gene_EvergrowingGenitalia : RJW_Gene
|
public class Gene_EvergrowingGenitalia : RJW_Gene
|
||||||
{
|
{
|
||||||
|
|
||||||
const int BASE_TICKS = 60000;
|
const int BASE_TICKS = 60000;
|
||||||
|
|
||||||
public override void Tick()
|
public override void Tick()
|
||||||
|
|
@ -27,20 +25,21 @@ namespace RJW_Genes
|
||||||
|
|
||||||
private void GrowPenisses()
|
private void GrowPenisses()
|
||||||
{
|
{
|
||||||
List<Hediff> AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x));
|
List<Hediff> AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x));
|
||||||
foreach(Hediff penis in AllPenisses)
|
float bodySizeOverride = -1f; //this is just hackjob to temporary fix an issue. It need to be remade
|
||||||
|
foreach (Hediff penis in AllPenisses)
|
||||||
{
|
{
|
||||||
HediffComp_SexPart CompHediff = penis.TryGetComp<rjw.HediffComp_SexPart>();
|
HediffComp_SexPart CompHediff = penis.TryGetComp<rjw.HediffComp_SexPart>();
|
||||||
if (CompHediff.baseSize <= 1.00f)
|
if (CompHediff.baseSize <= 1.00f)
|
||||||
CompHediff.baseSize += 0.10f;
|
CompHediff.baseSize += 0.10f;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//CompHediff.ForceSize(CompHediff.Size + 0.05f);
|
if (bodySizeOverride <= 1.0) bodySizeOverride = 1.0f;
|
||||||
CompHediff.originalOwnerSize += 0.05f;
|
bodySizeOverride += 0.05f;
|
||||||
}
|
}
|
||||||
CompHediff.UpdateSeverity();
|
CompHediff.UpdateSeverity();
|
||||||
|
|
||||||
if (CompHediff.originalOwnerSize > 3.0f)
|
if (bodySizeOverride > 3.0f)
|
||||||
{
|
{
|
||||||
// Add Mental Hediff
|
// Add Mental Hediff
|
||||||
HandleGenitaliaSizeThoughts(pawn);
|
HandleGenitaliaSizeThoughts(pawn);
|
||||||
|
|
@ -48,13 +47,14 @@ namespace RJW_Genes
|
||||||
|
|
||||||
// Increase Fluid
|
// Increase Fluid
|
||||||
if (CompHediff != null)
|
if (CompHediff != null)
|
||||||
CompHediff.partFluidFactor *= 1.05f;
|
CompHediff.partFluidMultiplier *= 1.05f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GrowVaginas()
|
private void GrowVaginas()
|
||||||
{
|
{
|
||||||
List<Hediff> AllVaginas = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_vagina(x));
|
List<Hediff> AllVaginas = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_vagina(x));
|
||||||
|
float bodySizeOverride = -1f; //this is just hackjob to temporary fix an issue. It need to be remade
|
||||||
foreach (Hediff vagina in AllVaginas)
|
foreach (Hediff vagina in AllVaginas)
|
||||||
{
|
{
|
||||||
HediffComp_SexPart CompHediff = vagina.TryGetComp<rjw.HediffComp_SexPart>();
|
HediffComp_SexPart CompHediff = vagina.TryGetComp<rjw.HediffComp_SexPart>();
|
||||||
|
|
@ -62,21 +62,21 @@ namespace RJW_Genes
|
||||||
CompHediff.baseSize += 0.10f;
|
CompHediff.baseSize += 0.10f;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (bodySizeOverride <= 1.0) bodySizeOverride = 1.0f;
|
||||||
CompHediff.originalOwnerSize += 0.05f;
|
bodySizeOverride += 0.05f;
|
||||||
}
|
}
|
||||||
//CompHediff.ForceSize(CompHediff.Size + 0.05f);
|
//CompHediff.ForceSize(CompHediff.Size + 0.05f);
|
||||||
//CompHediff.originalOwnerSize += 0.05f;
|
//CompHediff.originalOwnerSize += 0.05f;
|
||||||
CompHediff.UpdateSeverity();
|
CompHediff.UpdateSeverity();
|
||||||
|
|
||||||
if (CompHediff.baseSize > 3.0f)
|
if (bodySizeOverride > 3.0f)
|
||||||
{
|
{
|
||||||
// Add Mental Hediff
|
// Add Mental Hediff
|
||||||
HandleGenitaliaSizeThoughts(pawn);
|
HandleGenitaliaSizeThoughts(pawn);
|
||||||
}
|
}
|
||||||
// Increase Fluid
|
// Increase Fluid
|
||||||
if (CompHediff != null)
|
if (CompHediff != null)
|
||||||
CompHediff.partFluidFactor *= 1.025f;
|
CompHediff.partFluidMultiplier *= 1.025f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,13 +29,13 @@ namespace RJW_Genes.Interactions
|
||||||
{
|
{
|
||||||
weight *= 2.5f;
|
weight *= 2.5f;
|
||||||
}
|
}
|
||||||
if (pawn.genes.HasGene(GeneDefOf.rjw_genes_cum_eater))
|
if (pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_cum_eater))
|
||||||
{
|
{
|
||||||
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Mouth);
|
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Mouth);
|
||||||
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Beak);
|
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Beak);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pawn.genes.HasGene(GeneDefOf.rjw_genes_fertilin_absorber))
|
if (pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_fertilin_absorber))
|
||||||
{
|
{
|
||||||
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Vagina);
|
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Vagina);
|
||||||
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Anus);
|
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Anus);
|
||||||
|
|
@ -62,7 +62,7 @@ namespace RJW_Genes.Interactions
|
||||||
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Mouth);
|
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Mouth);
|
||||||
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Beak);
|
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Beak);
|
||||||
|
|
||||||
if (pawn.genes.HasGene(GeneDefOf.rjw_genes_fertilin_absorber))
|
if (pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_fertilin_absorber))
|
||||||
{
|
{
|
||||||
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Vagina);
|
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Vagina);
|
||||||
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Anus);
|
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Anus);
|
||||||
|
|
|
||||||
|
|
@ -68,20 +68,26 @@ namespace RJW_Genes
|
||||||
|
|
||||||
private Thing GetStoredCum(Pawn pawn)
|
private Thing GetStoredCum(Pawn pawn)
|
||||||
{
|
{
|
||||||
|
if (!ModsConfig.IsActive("vegapnk.cumpilation"))
|
||||||
|
return null;
|
||||||
|
|
||||||
Thing carriedThing = pawn.carryTracker.CarriedThing;
|
Thing carriedThing = pawn.carryTracker.CarriedThing;
|
||||||
ThingDef gatheredCum = ThingDef.Named("GatheredCum");
|
ThingDef cumThingDef = Cumpilation.DefOfs.Cumpilation_Cum;
|
||||||
if (carriedThing != null && carriedThing.def == gatheredCum)
|
|
||||||
|
if (cumThingDef == null) { return null; }
|
||||||
|
|
||||||
|
if (carriedThing != null && carriedThing.def == cumThingDef)
|
||||||
{
|
{
|
||||||
return carriedThing;
|
return carriedThing;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < pawn.inventory.innerContainer.Count; i++)
|
for (int i = 0; i < pawn.inventory.innerContainer.Count; i++)
|
||||||
{
|
{
|
||||||
if (pawn.inventory.innerContainer[i].def == gatheredCum)
|
if (pawn.inventory.innerContainer[i].def == cumThingDef)
|
||||||
{
|
{
|
||||||
return pawn.inventory.innerContainer[i];
|
return pawn.inventory.innerContainer[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return GenClosest.ClosestThing_Global_Reachable(pawn.Position, pawn.Map, pawn.Map.listerThings.ThingsOfDef(gatheredCum), PathEndMode.OnCell, TraverseParms.For(pawn, Danger.Deadly, TraverseMode.ByPawn, false, false, false), 9999f, (Thing t) => pawn.CanReserve(t, 1, -1, null, false) && !t.IsForbidden(pawn), null);
|
return GenClosest.ClosestThing_Global_Reachable(pawn.Position, pawn.Map, pawn.Map.listerThings.ThingsOfDef(cumThingDef), PathEndMode.OnCell, TraverseParms.For(pawn, Danger.Deadly, TraverseMode.ByPawn, false, false, false), 9999f, (Thing t) => pawn.CanReserve(t, 1, -1, null, false) && !t.IsForbidden(pawn), null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,10 +49,13 @@ namespace RJW_Genes
|
||||||
|
|
||||||
public static void DrinkCumflation(Pawn source, Pawn consumer)
|
public static void DrinkCumflation(Pawn source, Pawn consumer)
|
||||||
{
|
{
|
||||||
if (GeneUtility.HasLifeForce(consumer) && GeneUtility.IsCumEater(consumer)
|
if (!ModsConfig.IsActive("vegapnk.cumpilation")) return;
|
||||||
&& source.health.hediffSet.HasHediff(HediffDef.Named("Cumflation")))
|
if (source == null || consumer == null || source.IsAnimal() || consumer.IsAnimal() ) return;
|
||||||
|
|
||||||
|
if (GeneUtility.HasLifeForce(consumer) && GeneUtility.IsCumEater(consumer)
|
||||||
|
&& source.health.hediffSet.HasHediff(Cumpilation.DefOfs.Cumpilation_Cumflation))
|
||||||
{
|
{
|
||||||
Hediff cumflation = source.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("Cumflation"));
|
Hediff cumflation = source.health.hediffSet.GetFirstHediffOfDef(Cumpilation.DefOfs.Cumpilation_Cumflation);
|
||||||
Gene_LifeForce gene_LifeForce = consumer.genes.GetFirstGeneOfType<Gene_LifeForce>();
|
Gene_LifeForce gene_LifeForce = consumer.genes.GetFirstGeneOfType<Gene_LifeForce>();
|
||||||
cumflation.Severity = Math.Max(0f,cumflation.Severity - CUMFLATION_SEVERITY_LOSS_PER_TICK);
|
cumflation.Severity = Math.Max(0f,cumflation.Severity - CUMFLATION_SEVERITY_LOSS_PER_TICK);
|
||||||
gene_LifeForce.Resource.Value += LIFEFORCE_GAIN_PER_TICK;
|
gene_LifeForce.Resource.Value += LIFEFORCE_GAIN_PER_TICK;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
|
using rjw;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Verse;
|
using Verse;
|
||||||
|
|
||||||
|
|
@ -11,11 +12,13 @@ namespace RJW_Genes.Genes
|
||||||
[HarmonyPostfix]
|
[HarmonyPostfix]
|
||||||
public static void PawnGenerator_GenerateGenes_Postfix(Pawn pawn)
|
public static void PawnGenerator_GenerateGenes_Postfix(Pawn pawn)
|
||||||
{
|
{
|
||||||
if (pawn.genes == null) return;
|
if (pawn == null || pawn.genes == null) return;
|
||||||
|
|
||||||
foreach(var gene in pawn.genes.GenesListForReading)
|
if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return;
|
||||||
|
|
||||||
|
foreach (var gene in pawn.genes.GenesListForReading)
|
||||||
{
|
{
|
||||||
if (gene is RJW_Gene rjwGene)
|
if (gene != null && gene is RJW_Gene rjwGene)
|
||||||
rjwGene.Notify_OnPawnGeneration();
|
rjwGene.Notify_OnPawnGeneration();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -139,14 +139,12 @@ namespace RJW_Genes
|
||||||
{
|
{
|
||||||
ModLog.Message("Pawn " + __instance.pawn.NameShortColored + " (" + __instance.pawn.ThingID + ") is having random twins");
|
ModLog.Message("Pawn " + __instance.pawn.NameShortColored + " (" + __instance.pawn.ThingID + ") is having random twins");
|
||||||
}
|
}
|
||||||
Find.LetterStack.ReceiveLetter("Twins!", __instance.pawn.NameShortColored + " is still in labor and is having twins!\n\n" +
|
Find.LetterStack.ReceiveLetter("rjw_genes_twin_letter".Translate(), __instance.pawn.NameShortColored + " " + "rjw_genes_twin_letter_content".Translate(),
|
||||||
"Be sure to gather your doctor and additional friends and family to ensure the other baby is also born healthy!",
|
|
||||||
LetterDefOf.AnotherBaby, __instance.pawn);
|
LetterDefOf.AnotherBaby, __instance.pawn);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Find.LetterStack.ReceiveLetter("Another baby!", __instance.pawn.NameShortColored + " is still in labor and is having another baby!\n\n" +
|
Find.LetterStack.ReceiveLetter("rjw_genes_another_baby_letter".Translate(), __instance.pawn.NameShortColored + " " + "rjw_genes_another_baby_letter_content".Translate(),
|
||||||
"Be sure to gather your doctor and additional friends and family to ensure the next baby is also born healthy!",
|
|
||||||
LetterDefOf.AnotherBaby, __instance.pawn);
|
LetterDefOf.AnotherBaby, __instance.pawn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ namespace RJW_Genes
|
||||||
public override void PostMake()
|
public override void PostMake()
|
||||||
{
|
{
|
||||||
base.PostMake();
|
base.PostMake();
|
||||||
|
|
||||||
if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn))
|
if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn))
|
||||||
Sexualizer.sexualize_pawn(pawn);
|
Sexualizer.sexualize_pawn(pawn);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
30
1.5/Source/Genes/Reproduction/Gene_NoSexNeed.cs
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
|
namespace RJW_Genes
|
||||||
|
{
|
||||||
|
public class Gene_NoSexNeed : Gene
|
||||||
|
{
|
||||||
|
|
||||||
|
public override void Tick()
|
||||||
|
{
|
||||||
|
base.Tick();
|
||||||
|
|
||||||
|
if (!pawn.IsHashIntervalTick(3000))
|
||||||
|
return;
|
||||||
|
if (!pawn.ageTracker.Adult)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ((bool)(pawn?.genes?.HasActiveGene(GeneDefOf.rjw_genes_no_sex_need)))
|
||||||
|
{
|
||||||
|
var sex_need = pawn?.needs?.TryGetNeed<rjw.Need_Sex>();
|
||||||
|
if (sex_need != null)
|
||||||
|
sex_need.CurLevelPercentage = 0.6f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -54,6 +54,13 @@ namespace RJW_Genes
|
||||||
// Do nothing if Pawn is Baby or Child (#25)
|
// Do nothing if Pawn is Baby or Child (#25)
|
||||||
if (!pawn.ageTracker.Adult)
|
if (!pawn.ageTracker.Adult)
|
||||||
continue;
|
continue;
|
||||||
|
// Sometimes things can happen if pawns de-spawn, are in Bed, or otherwise disappear (#183)
|
||||||
|
if (!pawn.Spawned)
|
||||||
|
continue;
|
||||||
|
if (pawn.Crawling)
|
||||||
|
continue;
|
||||||
|
if (pawn.InBed())
|
||||||
|
continue;
|
||||||
// Do nothing for pawns that also have pheromones
|
// Do nothing for pawns that also have pheromones
|
||||||
if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_aphrodisiac_pheromones))
|
if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_aphrodisiac_pheromones))
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -87,8 +94,6 @@ namespace RJW_Genes
|
||||||
aphrodisiac = HediffMaker.MakeHediff(HediffDefOf.rjw_genes_aphrodisiac_pheromone, pawn);
|
aphrodisiac = HediffMaker.MakeHediff(HediffDefOf.rjw_genes_aphrodisiac_pheromone, pawn);
|
||||||
aphrodisiac.Severity = 0.5f;
|
aphrodisiac.Severity = 0.5f;
|
||||||
pawn.health.AddHediff(aphrodisiac);
|
pawn.health.AddHediff(aphrodisiac);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ namespace RJW_Genes
|
||||||
|
|
||||||
// Increase Fluid
|
// Increase Fluid
|
||||||
if (CompHediff != null)
|
if (CompHediff != null)
|
||||||
CompHediff.partFluidFactor *= cum_multiplier;
|
CompHediff.partFluidMultiplier *= cum_multiplier;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -241,6 +241,17 @@ namespace RJW_Genes
|
||||||
// Some Hediffs really need to know their bodypart, e.g. an implanted arm can either be left or right.
|
// Some Hediffs really need to know their bodypart, e.g. an implanted arm can either be left or right.
|
||||||
// Ignoring this will lead to many errors, mostly around nullpointers.
|
// Ignoring this will lead to many errors, mostly around nullpointers.
|
||||||
|
|
||||||
|
// Issue #130: LoveThrall is a strange Hediff that has a lot of background logic, we skip it
|
||||||
|
if (hed.def.defName == "Hediff_LoveThrall")
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Issue #184: Copying Pregnancies is super bad, so we do not touch pregnancies
|
||||||
|
if (hed.def.defName == RimWorld.HediffDefOf.Pregnant.defName)
|
||||||
|
continue;
|
||||||
|
if (PregnancyUtility.GetPregnancyHediff(copiedFrom) != null)
|
||||||
|
if (PregnancyUtility.GetPregnancyHediff(copiedFrom) == hed)
|
||||||
|
continue;
|
||||||
|
|
||||||
BodyPartRecord originalBPR = hed.Part;
|
BodyPartRecord originalBPR = hed.Part;
|
||||||
if (originalBPR != null) {
|
if (originalBPR != null) {
|
||||||
BodyPartRecord copyBPR = toCopyTo.RaceProps?.body.AllParts.Find(bpr => bpr.def == originalBPR.def);
|
BodyPartRecord copyBPR = toCopyTo.RaceProps?.body.AllParts.Find(bpr => bpr.def == originalBPR.def);
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ using rjw;
|
||||||
using RJWLoveFeeding;
|
using RJWLoveFeeding;
|
||||||
using RimWorld;
|
using RimWorld;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using LicentiaLabs;
|
||||||
|
|
||||||
namespace RJW_Genes
|
namespace RJW_Genes
|
||||||
{
|
{
|
||||||
|
|
@ -46,35 +47,36 @@ namespace RJW_Genes
|
||||||
harmony.Patch(AccessTools.Method(typeof(Quirk), nameof(Quirk.CountSatisfiedQuirks)),
|
harmony.Patch(AccessTools.Method(typeof(Quirk), nameof(Quirk.CountSatisfiedQuirks)),
|
||||||
postfix: new HarmonyMethod(typeof(QuirkPatcher), nameof(QuirkPatcher.CountSatisfiedPostfix)));
|
postfix: new HarmonyMethod(typeof(QuirkPatcher), nameof(QuirkPatcher.CountSatisfiedPostfix)));
|
||||||
|
|
||||||
// Patch Licentia, if Licentia exists
|
|
||||||
// Logic & Explanation taken from https://rimworldwiki.com/wiki/Modding_Tutorials/Compatibility_with_DLLs
|
// Patch Cumpilation, if Cumpilation exists
|
||||||
// Adjusted to use ModsConfig (which makes it work, the example above does not run out of the box)
|
#pragma warning disable CS0168 // Variable is declared but never used
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
((Action)(() =>
|
((Action)(() =>
|
||||||
{
|
{
|
||||||
if (ModsConfig.IsActive("LustLicentia.RJWLabs"))
|
if (ModsConfig.IsActive("vegapnk.cumpilation"))
|
||||||
{
|
{
|
||||||
// Gene: Cumflation Immunity [Prefix Patch]
|
// Gene: Inflatable [Postfix Patch]
|
||||||
harmony.Patch(AccessTools.Method(typeof(LicentiaLabs.CumflationHelper), nameof(LicentiaLabs.CumflationHelper.Cumflation)),
|
harmony.Patch(AccessTools.Method(typeof(SexUtility), nameof(SexUtility.TransferFluids)),
|
||||||
prefix: new HarmonyMethod(typeof(Patch_CumflationImmunity), nameof(Patch_CumflationImmunity.Prefix)));
|
postfix: new HarmonyMethod(typeof(Patch_Cumpilation_Inflatable), nameof(Patch_Cumpilation_Inflatable.PostFix)));
|
||||||
// Gene: Generous Donor [Postfix Patch]
|
// Gene: Inflation-Resistance [Postfix Patch]
|
||||||
harmony.Patch(AccessTools.Method(typeof(LicentiaLabs.CumflationHelper), nameof(LicentiaLabs.CumflationHelper.TransferNutrition)),
|
harmony.Patch(AccessTools.Method(typeof(Cumpilation.Cumflation.CumflationUtility), nameof(Cumpilation.Cumflation.CumflationUtility.CanBeCumflated)),
|
||||||
postfix: new HarmonyMethod(typeof(Patch_TransferNutrition), nameof(Patch_TransferNutrition.Postfix)));
|
postfix: new HarmonyMethod(typeof(Patch_Cumpilation_BlockCumflation), nameof(Patch_Cumpilation_BlockCumflation.PostFix)));
|
||||||
// Gene: CumEater [Postfix Patch] -- This is not exactly licentia, but the Generous-Donor Gene is only active with Licentia
|
// Gene: Inflation-Resistance [Postfix Patch]
|
||||||
harmony.Patch(AccessTools.Method(typeof(rjw.JobDriver_Sex), nameof(rjw.JobDriver_Sex.ChangePsyfocus)),
|
harmony.Patch(AccessTools.Method(typeof(Cumpilation.Cumflation.StuffingUtility), nameof(Cumpilation.Cumflation.StuffingUtility.CanBeStuffed)),
|
||||||
postfix: new HarmonyMethod(typeof(Patch_SexTicks_ChangePsyfocus), nameof(Patch_SexTicks_ChangePsyfocus.Postfix)));
|
postfix: new HarmonyMethod(typeof(Patch_Cumpilation_BlockStuffing), nameof(Patch_Cumpilation_BlockStuffing.PostFix)));
|
||||||
// Gene: Likes Cumflation [Postfix Patch]
|
// Gene: Living Cumbucket [Postfix Patch]
|
||||||
harmony.Patch(AccessTools.Method(typeof(LicentiaLabs.CumflationHelper), nameof(LicentiaLabs.CumflationHelper.Cumflation)),
|
harmony.Patch(AccessTools.Method(typeof(SexUtility), nameof(SexUtility.SatisfyPersonal)),
|
||||||
postfix: new HarmonyMethod(typeof(Patch_LikesCumflation), nameof(Patch_LikesCumflation.PostFix)));
|
postfix: new HarmonyMethod(typeof(Patch_LivingCumbucket_StackHediff), nameof(Patch_LivingCumbucket_StackHediff.PostFix)));
|
||||||
}
|
}
|
||||||
}))();
|
}))();
|
||||||
}
|
}
|
||||||
catch (TypeLoadException ex)
|
catch (TypeLoadException ex)
|
||||||
{
|
{
|
||||||
// To be expected for people without Licentia Labs
|
// To be expected for people without Cumpilation
|
||||||
|
// It's ok to do nothing then.
|
||||||
}
|
}
|
||||||
|
#pragma warning restore CS0168 // Variable is declared but never used
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -68,12 +68,18 @@
|
||||||
<Compile Include="Genes\Breeding\Genes\Gene_Rut.cs" />
|
<Compile Include="Genes\Breeding\Genes\Gene_Rut.cs" />
|
||||||
<Compile Include="Genes\Breeding\Patches\Patch_BlockedMasturbation.cs" />
|
<Compile Include="Genes\Breeding\Patches\Patch_BlockedMasturbation.cs" />
|
||||||
<Compile Include="Genes\Breeding\Patches\Patch_BlockedMasturbation_ThinkNodeFappin.cs" />
|
<Compile Include="Genes\Breeding\Patches\Patch_BlockedMasturbation_ThinkNodeFappin.cs" />
|
||||||
|
<Compile Include="Genes\Diseases\Comps\HediffCompProperties_DiseaseStorage.cs" />
|
||||||
|
<Compile Include="Genes\Diseases\Comps\HediffComp_DiseaseStorage.cs" />
|
||||||
<Compile Include="Genes\Fluid\Defs\GenitaliaFluidChangeExtension.cs" />
|
<Compile Include="Genes\Fluid\Defs\GenitaliaFluidChangeExtension.cs" />
|
||||||
<Compile Include="Genes\Fluid\Genes\Gene_ChangeFluidType.cs" />
|
<Compile Include="Genes\Fluid\Genes\Gene_ChangeFluidType.cs" />
|
||||||
<Compile Include="Genes\Fluid\HediffComp_ProcessCumbucket.cs" />
|
<Compile Include="Genes\Fluid\HediffComps\HediffCompProperties_MatchSeverityOfHediff.cs" />
|
||||||
<Compile Include="Genes\Fluid\HediffsCompProperties_ProcessCumbucketMTB.cs" />
|
<Compile Include="Genes\Fluid\HediffComps\HediffComp_MatchSeverityOfHediff.cs" />
|
||||||
|
<Compile Include="Genes\Fluid\HediffComps\HediffComp_ProcessCumbucket.cs" />
|
||||||
|
<Compile Include="Genes\Fluid\HediffComps\HediffsCompProperties_ProcessCumbucketMTB.cs" />
|
||||||
<Compile Include="Genes\Fluid\JobDriver_ProcessingCumbucket.cs" />
|
<Compile Include="Genes\Fluid\JobDriver_ProcessingCumbucket.cs" />
|
||||||
<Compile Include="Genes\Fluid\Patches\Patch_LikesCumflation.cs" />
|
<Compile Include="Genes\Fluid\Patches\Patch_Cumpilation_BlockCumflation.cs" />
|
||||||
|
<Compile Include="Genes\Fluid\Patches\Patch_Cumpilation_BlockStuffing.cs" />
|
||||||
|
<Compile Include="Genes\Fluid\Patches\Patch_Cumpilation_Inflatable.cs" />
|
||||||
<Compile Include="Genes\Fluid\Patches\Patch_LivingCumbucket_StackHediff.cs" />
|
<Compile Include="Genes\Fluid\Patches\Patch_LivingCumbucket_StackHediff.cs" />
|
||||||
<Compile Include="Genes\Damage\Gene_Elasticity.cs" />
|
<Compile Include="Genes\Damage\Gene_Elasticity.cs" />
|
||||||
<Compile Include="Genes\Diseases\Defs\GeneticDiseaseExtension.cs" />
|
<Compile Include="Genes\Diseases\Defs\GeneticDiseaseExtension.cs" />
|
||||||
|
|
@ -103,9 +109,8 @@
|
||||||
<Compile Include="Genes\GenitaliaSize\Genes\Gene_EvergrowingGenitalia.cs" />
|
<Compile Include="Genes\GenitaliaSize\Genes\Gene_EvergrowingGenitalia.cs" />
|
||||||
<Compile Include="Genes\Fluid\FluidUtility.cs" />
|
<Compile Include="Genes\Fluid\FluidUtility.cs" />
|
||||||
<Compile Include="Genes\Fluid\Genes\Gene_ChangeFluidAmount.cs" />
|
<Compile Include="Genes\Fluid\Genes\Gene_ChangeFluidAmount.cs" />
|
||||||
<Compile Include="Genes\Fluid\Patches\Patch_TransferNutrition.cs" />
|
<Compile Include="Genes\Fluid\Patches\Patch_TransferNutrition_Generous_Donor_PawnToPartner.cs" />
|
||||||
<Compile Include="Genes\Damage\Gene_Unbreakable.cs" />
|
<Compile Include="Genes\Damage\Gene_Unbreakable.cs" />
|
||||||
<Compile Include="Genes\Fluid\Patches\Patch_CumflationImmunity.cs" />
|
|
||||||
<Compile Include="Genes\ExtraGenitalia\Gene_ExtraBreasts.cs" />
|
<Compile Include="Genes\ExtraGenitalia\Gene_ExtraBreasts.cs" />
|
||||||
<Compile Include="Genes\ExtraGenitalia\Gene_ExtraAnus.cs" />
|
<Compile Include="Genes\ExtraGenitalia\Gene_ExtraAnus.cs" />
|
||||||
<Compile Include="Genes\ExtraGenitalia\Gene_Futa.cs" />
|
<Compile Include="Genes\ExtraGenitalia\Gene_Futa.cs" />
|
||||||
|
|
@ -180,6 +185,7 @@
|
||||||
<Compile Include="Genes\Patch_AddNotifyOnGeneration.cs" />
|
<Compile Include="Genes\Patch_AddNotifyOnGeneration.cs" />
|
||||||
<Compile Include="Genes\Quirks\Defs\QirkExtension.cs" />
|
<Compile Include="Genes\Quirks\Defs\QirkExtension.cs" />
|
||||||
<Compile Include="Genes\Quirks\QuirkPatcher.cs" />
|
<Compile Include="Genes\Quirks\QuirkPatcher.cs" />
|
||||||
|
<Compile Include="Genes\Reproduction\Gene_NoSexNeed.cs" />
|
||||||
<Compile Include="Genes\Special\Abilities\CompAbilityEffect_CocoonWeaver.cs" />
|
<Compile Include="Genes\Special\Abilities\CompAbilityEffect_CocoonWeaver.cs" />
|
||||||
<Compile Include="Genes\Special\Abilities\CompProperties_AbilityCocoonWeaver.cs" />
|
<Compile Include="Genes\Special\Abilities\CompProperties_AbilityCocoonWeaver.cs" />
|
||||||
<Compile Include="Genes\Special\Defs\AgeTransferExtension.cs" />
|
<Compile Include="Genes\Special\Defs\AgeTransferExtension.cs" />
|
||||||
|
|
@ -226,6 +232,10 @@
|
||||||
<HintPath>..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
|
<HintPath>..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
|
||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Cumpilation">
|
||||||
|
<HintPath>..\..\..\Cumpilation\1.5\Assemblies\Cumpilation.dll</HintPath>
|
||||||
|
<Private>False</Private>
|
||||||
|
</Reference>
|
||||||
<Reference Include="LicentiaLabs">
|
<Reference Include="LicentiaLabs">
|
||||||
<HintPath>..\..\..\licentia-labs-master\Assemblies\LicentiaLabs.dll</HintPath>
|
<HintPath>..\..\..\licentia-labs-master\Assemblies\LicentiaLabs.dll</HintPath>
|
||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 7.7 KiB |