226
CHANGELOG.md
|
@ -1,4 +1,196 @@
|
|||
# 2.1.0
|
||||
# 2.2.0 (23-07-2024)
|
||||
|
||||
## Explanations
|
||||
|
||||
**Genetic Diseases**:
|
||||
|
||||
This update introduces genetic diseases that are shared on sex.
|
||||
Infection is handled when sex finishes, so a coitus-interruptus will not result in infections.
|
||||
|
||||
Infections can be
|
||||
|
||||
- Turned off entirely
|
||||
- Spread only on penetrative sex
|
||||
- Chances are adjustable per XML per Gene
|
||||
|
||||
By turning their spread off, you effectively have a set of normal negative genes.
|
||||
Dead pawns can spread diseases, but cannot receive them. For all you necros out there.
|
||||
|
||||
*Why???*
|
||||
|
||||
Most of the genes so far were positive or neutral,
|
||||
so I got some fair requests to introduce negative genes to keep xenotypes balanced.
|
||||
I know that this is some overlap with the STD mod, but well ... you are free to turn things off?
|
||||
|
||||
In theory, you can specify and gene of any kind to be spreadable by sex, not only ones written by this mod.
|
||||
|
||||
**Genetic Infectors**:
|
||||
|
||||
These Genes can apply a genetic disease, but are not genetic diseases themselves.
|
||||
A single infector gene can have multiple resulting diseases, see this extension example:
|
||||
|
||||
```xml
|
||||
<li Class="RJW_Genes.GeneticInfectorExtension">
|
||||
<infectionChance>0.05</infectionChance>
|
||||
<infectionGenes>
|
||||
<li>rjw_genes_size_blinded</li>
|
||||
<li>rjw_genes_infectious_bisexuality</li>
|
||||
</infectionGenes>
|
||||
</li>
|
||||
```
|
||||
|
||||
The infection-chance is applied per gene - for the example above there would be a 5% chance to apply `size_blinded` and 5% chance to apply `infectious_bisexuality`.
|
||||
Multiple infections can happen on a single sex.
|
||||
The `infectionGenes` can be any gene, this is not limited to genetic diseases (e.g. ugly or something).
|
||||
|
||||
*Infectors* are always applied even if the genetic disease spread is turned off.
|
||||
The created genetic diseases will follow the logic outlined above.
|
||||
|
||||
**Disease Immunity**:
|
||||
|
||||
Pawns can be immune to genetic diseases.
|
||||
|
||||
This is either done with a specialised gene (`rjw_genes_genetic_disease_immunity`)
|
||||
or by genes giving specific immunities.
|
||||
|
||||
Any gene can give immunity against any genetic disease using an extension:
|
||||
|
||||
```xml
|
||||
<li Class="RJW_Genes.ImmunityAgainstGenesExtension">
|
||||
<givesImmunityAgainst>
|
||||
<li>rjw_genes_size_blinded</li>
|
||||
</givesImmunityAgainst>
|
||||
</li>
|
||||
```
|
||||
|
||||
These extensions can be slapped on any gene,
|
||||
but they are meant mostly to have infectors immune against their own diseases.
|
||||
|
||||
**Twinkification / Feminization**:
|
||||
|
||||
Both approaches follow the same general logic.
|
||||
|
||||
- Pawn `A` has Twinkifier Gene and fucks Pawn `B`
|
||||
- `B` receives a `twinkification progress` hediff with some effects
|
||||
- Upon having ANY sex, `B` can gain genes from a relevant genepool.
|
||||
- Genes can be minor or major, depending on the progress of twinkification.
|
||||
|
||||
Pawn `B` might be immune against twinkifier as normal immunity logic against diseases.
|
||||
But once the hediff is there, the twinkification can happen unless you wait for it to cool down.
|
||||
Gene additions are subject to an application chance (25% for minor, 10% for major)
|
||||
and might try to add a gene that already exists - then nothing happens.
|
||||
|
||||
*Twink Genepool*:
|
||||
- (Minor) Body_Thin
|
||||
- (Minor) Homosexual
|
||||
- (Minor) Beard_NoBeardOnly
|
||||
- (Minor) Small male genitalia
|
||||
- (Major) Minor Vulnerability
|
||||
- (Major) Infectious Homosexuality
|
||||
- (Major) Delicate
|
||||
- (Major) Beauty Pretty
|
||||
- (Major) Fertile Anus
|
||||
|
||||
*Feminization Genepool*:
|
||||
- (Minor) Long Hair
|
||||
- (Minor) No-Beard
|
||||
- (Minor) Small Male Genitals
|
||||
- (Minor) No Cum
|
||||
- (Minor) Big Breasts (will only show later)
|
||||
- (Major) Female Only
|
||||
- (Major) No Penis
|
||||
- (Major) Minor Vulnerability
|
||||
|
||||
You can configure all genes, as well as their application chance, in the Genes` XML.
|
||||
|
||||
*Why are these changes Genetic?*
|
||||
Because this is the genes mod, and I find things here quite robust.
|
||||
|
||||
## Changelog
|
||||
|
||||
**Additions:**
|
||||
|
||||
- Gene: Genetic Disease Immunity. cannot get infected by any genetic diseases, and won't be affected by some other genes (see relevant genes)
|
||||
- Disease Gene: Vulnerability. Pawn is likelier to be raped
|
||||
- Disease Gene: Infectious Hypersexuality
|
||||
- Disease Gene: Infectious Homosexuality & Bisexuality
|
||||
- Disease Gene: Infectious lower fertility
|
||||
- Disease Gene: Infectious higher sex need
|
||||
- Disease Gene: Fluctual Sexual Need. (Configurable) Chance to reset sex-need to near-zero and gain a bit of rest-need.
|
||||
- Disease Gene: Size Blinded. Pawns have a higher chance for hooking up with pawns with a big cock, lower chance for small cocks.
|
||||
- Infector Gene: Genetic Stretcher. Pawns can infect other pawns with *Size Blinded*
|
||||
- Gene: Hardwired Progenity. Pawns with this get a malus on having no-children, and bonus on having a lot.
|
||||
- Gene: Sexual Genetic Swap. Pawns have a chance to switch a random gene with their sexpartner.
|
||||
- (Archite) Gene: Sexual Genetic Thief. Pawns have a chance to steal a gene from their sexpartner. Genetic Disease Immunity shields against this.
|
||||
- Gene: Sperm Displacement. Pawns might overwrite an existing pregnancy, becoming the new father. The pregnancy will stay in its gestation progress.
|
||||
- Gene: Twinkification. Pawns turn their (male) sexual partners into breedable twinks.
|
||||
- Gene: Feminization. Pawns turn their (male) sexual partners into women.
|
||||
- Gene: Blocked Masturbation. Pawns cannot masturbate.
|
||||
- {Sexperience} Gene: Living Cumbucket. Pawns with this Gene get "filled" upon sex, and slowly disperse usable gathered cum.
|
||||
- Disease Gene: Infectious Blocked Masturbation
|
||||
- Gene: Rut. Pawns have a chance to go into heat and need more sex for a day. (Default: 5% chance per day, to go 1 day in heat).
|
||||
- Disease Gene: Infectious Rut.
|
||||
- Pawns will have negative thoughts about pawns with more genetic diseases than themselves.
|
||||
- Faction Penalties for spreading diseases, stealing genes and aging pawns with age transfer
|
||||
- Patch for [Imphilee Xeno](https://steamcommunity.com/sharedfiles/filedetails/?id=2990674516) by @Bunuffin
|
||||
|
||||
**Changes**::
|
||||
|
||||
- Cum-Amount-Changing genes now are XML Adjustable and share a single `.cs`-class
|
||||
- Incubi are now Bisexual too, as they should be.
|
||||
|
||||
**Fixes:**
|
||||
|
||||
- Fixed an Issue where pawns would always get the Pheromone social boost, unless they had the pheromone (#113)
|
||||
- Fixed two hidden dependencies on Ideology and Royalty (#115)
|
||||
- Fixed some more hidden dependencies on Ideology Icons (#118)
|
||||
- Fixed a hidden dependency on Licentialabs (#119)
|
||||
|
||||
**Internal:**
|
||||
|
||||
- GenderFluid-Gene now uses a generalized `TickBasedChanceExtension` over its unique special `GenderFluidExtension`
|
||||
- Introduced a `ModLog.Debug` Function that checks for the settings before printing - trying to spread it over the whole project.
|
||||
- Removed TODO File. I have enough to do.
|
||||
|
||||
**Notes:**
|
||||
|
||||
*One Time Error Load*
|
||||
|
||||
The changes to the cum-gene will give a 1-time warning on loading the save. The warning looks like this:
|
||||
```
|
||||
Could not find class RJW_Genes.Gene_MuchCum while resolving node li. Trying to use Verse.Gene instead. Full node: <li Class="RJW_Genes.Gene_MuchCum"><def>rjw_genes_much_cum</def><pawn>Thing_Human697</pawn><overriddenByGene>null</overriddenByGene><loadID>82</loadID></li>
|
||||
UnityEngine.StackTraceUtility:ExtractStackTrace ()
|
||||
Verse.Log:Error (string)
|
||||
...
|
||||
```
|
||||
|
||||
This is not dangerous.
|
||||
|
||||
*Blocked Masturbation*
|
||||
|
||||
Might not be fully working - for testing, I run things in DevMode, and I can just order people to masturbate.
|
||||
Please playtest this a bit for me, as I want to make it work nicely.
|
||||
|
||||
*Supporting*
|
||||
|
||||
You can now support me with [buying me a coffee](https://buymeacoffee.com/vegapnk).
|
||||
The mod will remain free, open source and I will not hide or lock any features.
|
||||
Its just meant if you want to drop me a tip.
|
||||
|
||||
**Since Beta-1** (11-07-2024)
|
||||
|
||||
- Made the Feminizer and Twinkifier configurable with XML.
|
||||
- Typos in the Hediff Defs, tweaking of some values.
|
||||
- Living Cum-Bucket & Rut Genes
|
||||
- Great icons by @Alpenglow
|
||||
|
||||
**Since Beta-2** (17-07-2024)
|
||||
|
||||
- Changed behaviour of living cumbucket. Now, once "really full" the output happens more rarely but is much more at once.
|
||||
- More Icons by @Alpenglow <3 this time attributed correct.
|
||||
- Adjusted some of the metabolic values - likes cumflation, generous donor and living cumbucket have small costs.
|
||||
|
||||
# 2.1.0 (27-06-2024)
|
||||
|
||||
**Additions**:
|
||||
|
||||
|
@ -45,7 +237,7 @@
|
|||
- Some new Icons thanks to Kira-Bad-Artist
|
||||
- Some new Icons thanks to Archer
|
||||
|
||||
# 2.0.0
|
||||
# 2.0.0 (30-05-2024)
|
||||
|
||||
**Summary**:
|
||||
|
||||
|
@ -92,20 +284,20 @@
|
|||
- Patches to RJW-Pregnancy Helper to account for Male Pregs.
|
||||
- Some replacements from `hasGene` to `hasActiveGene`
|
||||
|
||||
# 1.3.3
|
||||
# 1.3.3 (02-11-2023)
|
||||
|
||||
**Fixes:**
|
||||
|
||||
- Added another check to the AG Malachai Xenotype (Fixes #68)
|
||||
- Fixed the `GatheredCum`Fertilin Ingestion Patch throwing an Error for people without Sexperience (Fixes #69 (nice))
|
||||
|
||||
# 1.3.2
|
||||
# 1.3.2 (24-10-2023)
|
||||
|
||||
**Fixes:**
|
||||
|
||||
- Removed patch for Malachai, needs a different patching operator but I don't want to have broken fixes for now (Tracked in a new Issue)
|
||||
|
||||
# 1.3.1
|
||||
# 1.3.1 (22-10-2023)
|
||||
|
||||
**Changes**
|
||||
|
||||
|
@ -144,7 +336,7 @@ The pawns that are gender fluid can get pregnant.
|
|||
However, with RJW 5.3.7 these pregnancies disappear.
|
||||
This is a change needed upstream, but I will have a look.
|
||||
|
||||
# 1.2.1
|
||||
# 1.2.1 (18-06-2023)
|
||||
|
||||
**Fixes**:
|
||||
|
||||
|
@ -224,9 +416,9 @@ And I am aware that the TiTs-Myr work different than the things I made now.
|
|||
- Mostly Patches and Changes to the Halamyr Defs
|
||||
- Some re-arranging and mayRequires for other mods
|
||||
|
||||
# 1.1.4
|
||||
# 1.1.4 (06-04-2023)
|
||||
|
||||
Fixes:
|
||||
**Fixes:**
|
||||
|
||||
- Youth Fountain and Age Drainer **really** "stop" at 18 (#26, #28) and never age pawns
|
||||
- Drastically reduced vomiting time due to an missunderstanding (#29). `0.4` instead of `0.01`
|
||||
|
@ -234,37 +426,37 @@ Fixes:
|
|||
Sometimes life is like that, and you have to fix the fixes.
|
||||
It was never really broken, life is just very long.
|
||||
|
||||
# 1.1.3
|
||||
# 1.1.3 (28-03-2023)
|
||||
|
||||
Changes:
|
||||
**Changes:**
|
||||
|
||||
- Youth Fountain and Age Drainer "stop" at 18 (#26)
|
||||
- Youth Fountain and Age Drainer activate only for pawns at 18 (#26)
|
||||
- Drained Pawns vomit less (from mtb 0.05 to 0.01)(#29)
|
||||
|
||||
Fixes:
|
||||
**Fixes:**
|
||||
|
||||
- InsectBreeder would mess with normal Pawn-Animal pregancy for egg laying animals (#23)
|
||||
|
||||
# 1.1.2
|
||||
# 1.1.2 (19-03-2023)
|
||||
|
||||
Changes:
|
||||
**Changes:**
|
||||
|
||||
- Added more cool images from WasMachenDennSachen (#22)
|
||||
|
||||
Fixes:
|
||||
**Fixes:**
|
||||
|
||||
- Aphrodisiac Pheromones checks for children and other conditions (#25)
|
||||
|
||||
# 1.1.1
|
||||
# 1.1.1 (10-03-2023)
|
||||
|
||||
Changes:
|
||||
**Changes:**
|
||||
|
||||
- Drastically increased mood-penalty for Fertilin-Loss (if the pawn is still too happy, there will never be a breakdown for missing fertilin)
|
||||
- No-Breast Genes add Nipples
|
||||
- Featureless Chest Gene (No Nipples at all, adds the RJW Featureless Chest as requested per some Kobold fetishists)
|
||||
|
||||
Fixes:
|
||||
**Fixes:**
|
||||
|
||||
- Small and Big Male Genitalia had images wrong way round
|
||||
- Fertilin should activate at a MinAge of 18
|
||||
|
|
|
@ -67,5 +67,11 @@
|
|||
<displayPriorityInXenotype>8</displayPriorityInXenotype>
|
||||
</GeneCategoryDef>
|
||||
|
||||
<GeneCategoryDef>
|
||||
<defName>rjw_genes_diseases</defName>
|
||||
<label>genetic STDs</label>
|
||||
<displayPriorityInXenotype>22</displayPriorityInXenotype>
|
||||
</GeneCategoryDef>
|
||||
|
||||
|
||||
</Defs>
|
|
@ -15,7 +15,6 @@
|
|||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
|
||||
<GeneDef ParentName="BreedingBase">
|
||||
<defName>rjw_genes_mechbreeder</defName>
|
||||
<label>mechbreeder</label>
|
||||
|
@ -42,8 +41,9 @@
|
|||
<GeneDef ParentName="BreedingBase">
|
||||
<defName>rjw_genes_fertile_anus</defName>
|
||||
<label>fertile anus</label>
|
||||
<description>Xenotypes with this gene have a functional uterus connected to the anal cavity even
|
||||
for males</description>
|
||||
<description>Xenotypes with this gene have a functional uterus if they do not possess one by
|
||||
means of their vagina.
|
||||
For males, it is connected to the anal cavity and leads to a normal pregnancy.</description>
|
||||
<iconPath>Genes/Icons/Fertile_anus</iconPath>
|
||||
<displayOrderInCategory>54</displayOrderInCategory>
|
||||
</GeneDef>
|
||||
|
@ -81,7 +81,6 @@
|
|||
<biostatMet>-1</biostatMet>
|
||||
</GeneDef>
|
||||
|
||||
|
||||
<GeneDef ParentName="BreedingBase">
|
||||
<defName>rjw_genes_mating_call</defName>
|
||||
<label>Mating Call</label>
|
||||
|
@ -98,7 +97,6 @@
|
|||
<biostatMet>-1</biostatMet>
|
||||
</GeneDef>
|
||||
|
||||
|
||||
<GeneDef ParentName="BreedingBase">
|
||||
<defName>rjw_genes_pheromone_spit</defName>
|
||||
<label>Pheromone Spit</label>
|
||||
|
@ -115,4 +113,62 @@
|
|||
<biostatMet>-1</biostatMet>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="BreedingBase">
|
||||
<defName>rjw_genes_hardwired_progenity</defName>
|
||||
<label>Hardwired Progenity</label>
|
||||
<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>
|
||||
<iconPath>Genes/Icons/hardwired_progenity</iconPath>
|
||||
<displayOrderInCategory>70</displayOrderInCategory>
|
||||
|
||||
<conditionalStatAffecters>
|
||||
<li Class="RJW_Genes.ConditionalStatAffecter_NoChildren">
|
||||
<statOffsets>
|
||||
<WorkSpeedGlobal>-0.1</WorkSpeedGlobal>
|
||||
<Fertility>1.2</Fertility>
|
||||
<SexFrequency>1.2</SexFrequency>
|
||||
<MentalBreakThreshold>+0.15</MentalBreakThreshold>
|
||||
<GlobalLearningFactor>-0.1</GlobalLearningFactor>
|
||||
</statOffsets>
|
||||
</li>
|
||||
<li Class="RJW_Genes.ConditionalStatAffecter_ManyChildren">
|
||||
<statOffsets>
|
||||
<MoveSpeed>0.05</MoveSpeed>
|
||||
<WorkSpeedGlobal>0.1</WorkSpeedGlobal>
|
||||
<Fertility>0.1</Fertility>
|
||||
<SexFrequency>0.4</SexFrequency>
|
||||
</statOffsets>
|
||||
</li>
|
||||
<li Class="RJW_Genes.ConditionalStatAffecter_VeryManyChildren">
|
||||
<statOffsets>
|
||||
<MoveSpeed>0.15</MoveSpeed>
|
||||
<WorkSpeedGlobal>0.25</WorkSpeedGlobal>
|
||||
<MentalBreakThreshold>-0.25</MentalBreakThreshold>
|
||||
</statOffsets>
|
||||
</li>
|
||||
</conditionalStatAffecters>
|
||||
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>0</biostatMet>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="BreedingBase">
|
||||
<defName>rjw_genes_basic_rut</defName>
|
||||
<label>Rut</label>
|
||||
<description>Carriers of this gene can enter a state of heat, resulting in drastically higher
|
||||
sexual activity.</description>
|
||||
<iconPath>Genes/Icons/rut</iconPath>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>1</biostatMet>
|
||||
<displayOrderInCategory>11</displayOrderInCategory>
|
||||
<geneClass>RJW_Genes.Gene_Rut</geneClass>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.TickBasedChanceExtension">
|
||||
<!-- 60k = 1 days -->
|
||||
<tickInterval>60000</tickInterval>
|
||||
<eventChance>0.05</eventChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
</Defs>
|
|
@ -21,10 +21,15 @@
|
|||
<label>no cum</label>
|
||||
<description>Males of these species have no fluid.</description>
|
||||
<iconPath>Genes/Icons/No_Cum</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_NoCum</geneClass>
|
||||
<geneClass>RJW_Genes.Gene_ChangeCumAmount</geneClass>
|
||||
<displayOrderInCategory>533</displayOrderInCategory>
|
||||
<biostatCpx>0</biostatCpx>
|
||||
<biostatMet>1</biostatMet>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.MultiplierExtension">
|
||||
<multiplier>0.0</multiplier>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="GeneCumAmount">
|
||||
|
@ -32,10 +37,15 @@
|
|||
<label>much cum</label>
|
||||
<description>Males of this species produce a lot of fluid.</description>
|
||||
<iconPath>Genes/Icons/Much_Cum</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_MuchCum</geneClass>
|
||||
<geneClass>RJW_Genes.Gene_ChangeCumAmount</geneClass>
|
||||
<displayOrderInCategory>534</displayOrderInCategory>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>-1</biostatMet>
|
||||
<biostatMet>0</biostatMet>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.MultiplierExtension">
|
||||
<multiplier>3.0</multiplier>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="GeneCumAmount">
|
||||
|
@ -44,10 +54,15 @@
|
|||
<description>Males of this species produce a whole lot of fluid. They are like fountains
|
||||
basically.</description>
|
||||
<iconPath>Genes/Icons/Very_Much_Cum</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_VeryMuchCum</geneClass>
|
||||
<geneClass>RJW_Genes.Gene_ChangeCumAmount</geneClass>
|
||||
<displayOrderInCategory>535</displayOrderInCategory>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>-2</biostatMet>
|
||||
<biostatMet>-1</biostatMet>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.MultiplierExtension">
|
||||
<multiplier>15.0</multiplier>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
</Defs>
|
|
@ -7,7 +7,7 @@
|
|||
<displayCategory>rjw_genes_damage</displayCategory>
|
||||
<description>This Gene makes the Carrier unable to get mood or social penalties from being raped
|
||||
and they cannot be broken for a long period of time.</description>
|
||||
<iconPath>UI/Icons/Rituals/TrialDefend</iconPath>
|
||||
<iconPath>Genes/Icons/TrialDefend</iconPath>
|
||||
<displayOrderInCategory>2</displayOrderInCategory>
|
||||
<biostatMet>-1</biostatMet>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
|
|
336
Common/Defs/GeneDefs/GeneDefs_Diseases.xml
Normal file
|
@ -0,0 +1,336 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Defs>
|
||||
|
||||
<GeneDef Name="RJWGeneDisease" Abstract="True">
|
||||
<displayCategory>rjw_genes_diseases</displayCategory>
|
||||
<randomChosen>false</randomChosen>
|
||||
<modExtensions>
|
||||
<li MayRequire="OskarPotocki.VanillaFactionsExpanded.Core"
|
||||
Class="VanillaGenesExpanded.GeneExtension">
|
||||
<backgroundPathEndogenes>Genes/Icons/RJW_Genes_Endogene_Disease_Background</backgroundPathEndogenes>
|
||||
<backgroundPathXenogenes>Genes/Icons/RJW_Genes_Endogene_Disease_Background</backgroundPathXenogenes>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef>
|
||||
<displayCategory>rjw_genes_diseases</displayCategory>
|
||||
<defName>rjw_genes_genetic_disease_immunity</defName>
|
||||
<displayOrderInCategory>1</displayOrderInCategory>
|
||||
<marketValueFactor>0.95</marketValueFactor>
|
||||
<label>genetic disease immunity</label>
|
||||
<description>This gene makes the pawn immune against genetic STDs and some other genes that
|
||||
imply negative side-effects.</description>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>-1</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">
|
||||
<defName>rjw_genes_minor_vulnerability</defName>
|
||||
<label>minor vulnerability</label>
|
||||
<description>This gene makes the pawn a bit more vulnerable, and a slightly more attractive
|
||||
target for rape.</description>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>1</biostatMet>
|
||||
<marketValueFactor>0.85</marketValueFactor>
|
||||
<iconPath>Genes/Icons/minor_vulnerability</iconPath>
|
||||
<displayOrderInCategory>5</displayOrderInCategory>
|
||||
|
||||
<statOffsets>
|
||||
<Vulnerability>0.15</Vulnerability>
|
||||
</statOffsets>
|
||||
|
||||
<exclusionTags>
|
||||
<li>RJW_Genes_Vulnerability</li>
|
||||
</exclusionTags>
|
||||
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GeneticDiseaseExtension">
|
||||
<infectionChance>0.05</infectionChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="RJWGeneDisease">
|
||||
<defName>rjw_genes_major_vulnerability</defName>
|
||||
<label>major vulnerability</label>
|
||||
<description>This gene makes the pawn more vulnerable, and a more attractive target for
|
||||
rape.</description>
|
||||
<biostatCpx>2</biostatCpx>
|
||||
<biostatMet>1</biostatMet>
|
||||
<iconPath>Genes/Icons/major_vulnerability</iconPath>
|
||||
<displayOrderInCategory>6</displayOrderInCategory>
|
||||
|
||||
<exclusionTags>
|
||||
<li>RJW_Genes_Vulnerability</li>
|
||||
</exclusionTags>
|
||||
|
||||
<statOffsets>
|
||||
<Vulnerability>0.3</Vulnerability>
|
||||
</statOffsets>
|
||||
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GeneticDiseaseExtension">
|
||||
<infectionChance>0.03</infectionChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
|
||||
<GeneDef ParentName="RJWGeneDisease">
|
||||
<defName>rjw_genes_infectious_blocked_masturbation</defName>
|
||||
<label>infectious masturbation block</label>
|
||||
<description>Carriers of this gene are unable to masturbate - they need a partner or
|
||||
equipment.</description>
|
||||
<iconPath>Genes/Icons/blocked_masturbation</iconPath>
|
||||
<displayOrderInCategory>55</displayOrderInCategory>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>2</biostatMet>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GeneticDiseaseExtension">
|
||||
<infectionChance>0.05</infectionChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="RJWGeneDisease">
|
||||
<defName>rjw_genes_infectious_low_fertility</defName>
|
||||
<label>infectious low fertility vulnerability</label>
|
||||
<description>Carriers of this genetic disease have lower fertility.</description>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>1</biostatMet>
|
||||
<marketValueFactor>0.9</marketValueFactor>
|
||||
<iconPath>UI/Icons/ColonistBar/Idle</iconPath>
|
||||
<displayOrderInCategory>5</displayOrderInCategory>
|
||||
|
||||
<statOffsets>
|
||||
<Fertility>-0.15</Fertility>
|
||||
</statOffsets>
|
||||
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GeneticDiseaseExtension">
|
||||
<infectionChance>0.05</infectionChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="RJWGeneDisease">
|
||||
<defName>rjw_genes_infectious_increased_sex_need</defName>
|
||||
<label>infectious increased sexneed</label>
|
||||
<description>Carriers of this genetic disease need more sex.</description>
|
||||
<biostatCpx>0</biostatCpx>
|
||||
<biostatMet>1</biostatMet>
|
||||
<marketValueFactor>0.9</marketValueFactor>
|
||||
<iconPath>UI/Icons/ColonistBar/Idle</iconPath>
|
||||
<displayOrderInCategory>5</displayOrderInCategory>
|
||||
|
||||
<statOffsets>
|
||||
<SexFrequency>0.15</SexFrequency>
|
||||
</statOffsets>
|
||||
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GeneticDiseaseExtension">
|
||||
<infectionChance>0.08</infectionChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="RJWGeneDisease">
|
||||
<defName>rjw_genes_infectious_major_increased_sex_need</defName>
|
||||
<label>major infectious increased sexneed</label>
|
||||
<description>Carriers of this genetic disease need a lot more sex.</description>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>2</biostatMet>
|
||||
<marketValueFactor>0.85</marketValueFactor>
|
||||
<iconPath>UI/Icons/ColonistBar/Idle</iconPath>
|
||||
<displayOrderInCategory>5</displayOrderInCategory>
|
||||
|
||||
<statOffsets>
|
||||
<SexFrequency>1.0</SexFrequency>
|
||||
</statOffsets>
|
||||
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GeneticDiseaseExtension">
|
||||
<infectionChance>0.03</infectionChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="RJWGeneDisease">
|
||||
<defName>rjw_genes_infectious_hypersexuality</defName>
|
||||
<label>infectious hypersexuality</label>
|
||||
<description>This gene makes the pawn hypersexual, and has a chance to spread on
|
||||
intercourse.</description>
|
||||
<iconPath>Genes/Icons/Hypersexual</iconPath>
|
||||
<biostatCpx>2</biostatCpx>
|
||||
<biostatMet>2</biostatMet>
|
||||
<displayOrderInCategory>7</displayOrderInCategory>
|
||||
<exclusionTags>
|
||||
<li>rjw_genes_hypersexuality_trait_giver</li>
|
||||
</exclusionTags>
|
||||
|
||||
<forcedTraits>
|
||||
<li>
|
||||
<def>Nymphomaniac</def>
|
||||
</li>
|
||||
</forcedTraits>
|
||||
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GeneticDiseaseExtension">
|
||||
<infectionChance>0.05</infectionChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="RJWGeneDisease">
|
||||
<defName>rjw_genes_infectious_bisexuality</defName>
|
||||
<label>infectious bisexuality</label>
|
||||
<description>This gene makes the pawn bisexual, and has a chance to spread on intercourse.</description>
|
||||
<iconPath>Genes/Icons/bisexuality</iconPath>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>0</biostatMet>
|
||||
<displayOrderInCategory>8</displayOrderInCategory>
|
||||
|
||||
<exclusionTags>
|
||||
<li>rjw_genes_bisexuality_trait_giver</li>
|
||||
<li>rjw_genes_sexual_orientation</li>
|
||||
</exclusionTags>
|
||||
|
||||
<forcedTraits>
|
||||
<li>
|
||||
<def>Bisexual</def>
|
||||
</li>
|
||||
</forcedTraits>
|
||||
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GeneticDiseaseExtension">
|
||||
<infectionChance>0.1</infectionChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="RJWGeneDisease">
|
||||
<defName>rjw_genes_infectious_homosexuality</defName>
|
||||
<label>infectious homosexuality</label>
|
||||
<description>This gene makes the pawn homosexual, and has a chance to spread on intercourse.</description>
|
||||
<iconPath>Genes/Icons/homosexuality</iconPath>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>0</biostatMet>
|
||||
<displayOrderInCategory>9</displayOrderInCategory>
|
||||
|
||||
<exclusionTags>
|
||||
<li>rjw_genes_homosexuality_trait_giver</li>
|
||||
<li>rjw_genes_sexual_orientation</li>
|
||||
</exclusionTags>
|
||||
|
||||
<forcedTraits>
|
||||
<li>
|
||||
<def>Gay</def>
|
||||
</li>
|
||||
</forcedTraits>
|
||||
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GeneticDiseaseExtension">
|
||||
<infectionChance>0.1</infectionChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="RJWGeneDisease">
|
||||
<defName>rjw_genes_fluctual_sexual_needs</defName>
|
||||
<label>fluctual sexual needs</label>
|
||||
<description>Carriers of this genetic disease have a chance to suddenly require sex, gaining
|
||||
a bit of energy to find quick relief.</description>
|
||||
<iconPath>UI/Icons/ColonistBar/Idle</iconPath>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>2</biostatMet>
|
||||
<displayOrderInCategory>11</displayOrderInCategory>
|
||||
<geneClass>RJW_Genes.Gene_FluctualSexualNeed</geneClass>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GeneticDiseaseExtension">
|
||||
<infectionChance>0.1</infectionChance>
|
||||
</li>
|
||||
<li Class="RJW_Genes.TickBasedChanceExtension">
|
||||
<!-- 30k = 1/2 days -->
|
||||
<tickInterval>30000</tickInterval>
|
||||
<eventChance>0.15</eventChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
|
||||
<GeneDef ParentName="RJWGeneDisease">
|
||||
<defName>rjw_genes_size_blinded</defName>
|
||||
<label>size blinded</label>
|
||||
<description>This genetic disease makes the carrier dramatically more drawn to pawns with
|
||||
huge cocks.</description>
|
||||
<iconPath>Genes/Icons/size_blinded</iconPath>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>1</biostatMet>
|
||||
<displayOrderInCategory>11</displayOrderInCategory>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GeneticDiseaseExtension">
|
||||
<infectionChance>0.1</infectionChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="RJWGeneDisease">
|
||||
<defName>rjw_genes_stretcher</defName>
|
||||
<label>genetic stretcher</label>
|
||||
<description>Pawns with this gene have a chance to alter the genes of their sexual partners
|
||||
to prefer large cocks.</description>
|
||||
<iconPath>Genes/Icons/stretcher</iconPath>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>0</biostatMet>
|
||||
<displayOrderInCategory>12</displayOrderInCategory>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.ImmunityAgainstGenesExtension">
|
||||
<givesImmunityAgainst>
|
||||
<li>rjw_genes_size_blinded</li>
|
||||
</givesImmunityAgainst>
|
||||
</li>
|
||||
<li Class="RJW_Genes.GeneticInfectorExtension">
|
||||
<infectionChance>0.05</infectionChance>
|
||||
<infectionGenes>
|
||||
<li>rjw_genes_size_blinded</li>
|
||||
</infectionGenes>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
|
||||
<GeneDef ParentName="RJWGeneDisease">
|
||||
<defName>rjw_genes_infectious_rut</defName>
|
||||
<label>Rut</label>
|
||||
<description>Carriers of this gene can enter a state of heat, resulting in drastically
|
||||
higher
|
||||
sexual activity.</description>
|
||||
<iconPath>Genes/Icons/rut</iconPath>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>2</biostatMet>
|
||||
<displayOrderInCategory>11</displayOrderInCategory>
|
||||
<geneClass>RJW_Genes.Gene_Rut</geneClass>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.TickBasedChanceExtension">
|
||||
<!-- 60k = 1 days -->
|
||||
<tickInterval>60000</tickInterval>
|
||||
<eventChance>0.05</eventChance>
|
||||
</li>
|
||||
<li Class="RJW_Genes.GeneticDiseaseExtension">
|
||||
<infectionChance>0.1</infectionChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
|
||||
</Defs>
|
|
@ -14,6 +14,10 @@
|
|||
</li>
|
||||
</forcedTraits>
|
||||
|
||||
<exclusionTags>
|
||||
<li>rjw_genes_hypersexuality_trait_giver</li>
|
||||
</exclusionTags>
|
||||
|
||||
<randomChosen>false</randomChosen>
|
||||
<modExtensions>
|
||||
<li MayRequire="OskarPotocki.VanillaFactionsExpanded.Core"
|
||||
|
@ -48,31 +52,6 @@
|
|||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<!--
|
||||
<GeneDef>
|
||||
<defName>rjw_genes_sadist_gene</defName>
|
||||
<label>sadist</label>
|
||||
<displayCategory>Reproduction</displayCategory>
|
||||
<description>Xenotypes with this Gene are Sadists.</description>
|
||||
<iconPath>Genes/Icons/Rape</iconPath>
|
||||
<biostatMet>1</biostatMet>
|
||||
<displayOrderInCategory>2</displayOrderInCategory>
|
||||
<forcedTraits>
|
||||
<li>
|
||||
<def>rjw_genes_sadist</def>
|
||||
</li>
|
||||
</forcedTraits>
|
||||
|
||||
<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_masochist</defName>
|
||||
<label>masochist</label>
|
||||
|
@ -102,7 +81,7 @@
|
|||
<label>homosexual</label>
|
||||
<displayCategory>Reproduction</displayCategory>
|
||||
<description>This Gene makes you gay.</description>
|
||||
<iconPath>UI\Ideoligions\Universal\RoundC</iconPath>
|
||||
<iconPath>Genes/Icons/RoundC</iconPath>
|
||||
<biostatMet>0</biostatMet>
|
||||
<displayOrderInCategory>3</displayOrderInCategory>
|
||||
<forcedTraits>
|
||||
|
@ -111,6 +90,7 @@
|
|||
</li>
|
||||
</forcedTraits>
|
||||
<exclusionTags>
|
||||
<li>rjw_genes_homosexuality_trait_giver</li>
|
||||
<li>rjw_genes_sexual_orientation</li>
|
||||
</exclusionTags>
|
||||
|
||||
|
@ -129,7 +109,7 @@
|
|||
<label>bisexual</label>
|
||||
<displayCategory>Reproduction</displayCategory>
|
||||
<description>Carriers of this Gene are Bisexual.</description>
|
||||
<iconPath>UI\Ideoligions\Universal\RoundC</iconPath>
|
||||
<iconPath>Genes/Icons/RoundC</iconPath>
|
||||
<biostatMet>0</biostatMet>
|
||||
<displayOrderInCategory>4</displayOrderInCategory>
|
||||
<forcedTraits>
|
||||
|
@ -139,6 +119,7 @@
|
|||
</forcedTraits>
|
||||
<exclusionTags>
|
||||
<li>rjw_genes_sexual_orientation</li>
|
||||
<li>rjw_genes_bisexuality_trait_giver</li>
|
||||
</exclusionTags>
|
||||
|
||||
<randomChosen>false</randomChosen>
|
||||
|
@ -200,4 +181,46 @@
|
|||
</exclusionTags>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef>
|
||||
<defName>rjw_genes_pregnancy_overwrite</defName>
|
||||
<label>Sperm Displacement</label>
|
||||
<displayCategory>Reproduction</displayCategory>
|
||||
<description>Carriers of this gene can 'overwrite' an existing pregnancy, keeping the
|
||||
progress but effectively replacing the father.</description>
|
||||
<iconPath>Genes/Icons/pregnancy_overwrite</iconPath>
|
||||
<displayOrderInCategory>120</displayOrderInCategory>
|
||||
|
||||
<biostatCpx>4</biostatCpx>
|
||||
<biostatMet>-2</biostatMet>
|
||||
<modExtensions>
|
||||
<!-- DevNote: The chance will be multiplied by both pawns' Fertility! -->
|
||||
<li Class="RJW_Genes.ChanceExtension">
|
||||
<chance>0.5</chance>
|
||||
</li>
|
||||
<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_blocked_masturbation</defName>
|
||||
<label>no masturbation</label>
|
||||
<displayCategory>Reproduction</displayCategory>
|
||||
<description>Carriers of this gene are unable to masturbate - they need a partner or equipment.</description>
|
||||
<iconPath>Genes/Icons/blocked_masturbation</iconPath>
|
||||
<displayOrderInCategory>60</displayOrderInCategory>
|
||||
<biostatCpx>0</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>
|
|
@ -19,7 +19,7 @@
|
|||
partially filled)</description>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>-2</biostatMet>
|
||||
<iconPath>UI/Memes/FleshPurity</iconPath>
|
||||
<iconPath>Genes/Icons/FleshPurity</iconPath>
|
||||
<displayOrderInCategory>1</displayOrderInCategory>
|
||||
</GeneDef>
|
||||
|
||||
|
@ -30,7 +30,7 @@
|
|||
(Partner stays adult)</description>
|
||||
<biostatCpx>2</biostatCpx>
|
||||
<biostatMet>-2</biostatMet>
|
||||
<iconPath>UI/Ideoligions/FireLeaves</iconPath>
|
||||
<iconPath>Genes/Icons/FireLeaves</iconPath>
|
||||
<displayOrderInCategory>2</displayOrderInCategory>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.AgeTransferExtension">
|
||||
|
@ -140,7 +140,7 @@
|
|||
|
||||
<GeneDef ParentName="SpecialBase">
|
||||
<defName>rjw_genes_sex_tamer</defName>
|
||||
<label>Sexual Tamer</label>
|
||||
<label>sexual tamer</label>
|
||||
<labelShortAdj>sextamer</labelShortAdj>
|
||||
<description>Bestiality has a chance to tame animals or advance their training.</description>
|
||||
<iconPath>Genes/Icons/RJW_Genes_SexualTamer</iconPath>
|
||||
|
@ -149,4 +149,119 @@
|
|||
<biostatMet>-1</biostatMet>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="SpecialBase">
|
||||
<defName>rjw_genes_sexual_genetic_swap</defName>
|
||||
<label>sexual genetic swap</label>
|
||||
<description>Carriers with this gene may switch a gene with their sex-partner. Switched Genes are always endogenes.</description>
|
||||
<iconPath>Genes/Icons/sexual_genetic_swap</iconPath>
|
||||
<displayOrderInCategory>20</displayOrderInCategory>
|
||||
<biostatCpx>3</biostatCpx>
|
||||
<biostatMet>0</biostatMet>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.ChanceExtension">
|
||||
<chance>0.1</chance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="SpecialBase">
|
||||
<defName>rjw_genes_sexual_genetic_thief</defName>
|
||||
<label>sexual gene thief</label>
|
||||
<description>Carriers with this gene may steal a gene from their sex-partner. Stolen genes are always xenogenes.</description>
|
||||
<iconPath>Genes/Icons/sexual_genetic_thief</iconPath>
|
||||
<displayOrderInCategory>21</displayOrderInCategory>
|
||||
<biostatCpx>5</biostatCpx>
|
||||
<biostatMet>-2</biostatMet>
|
||||
<biostatArc>1</biostatArc>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.ChanceExtension">
|
||||
<chance>0.2</chance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="SpecialBase">
|
||||
<defName>rjw_genes_feminizer</defName>
|
||||
<label>feminizer</label>
|
||||
<description>Carriers with this gene slowly turn male sexual partners into females.</description>
|
||||
<iconPath>Genes/Icons/feminizer</iconPath>
|
||||
<displayOrderInCategory>31</displayOrderInCategory>
|
||||
<biostatCpx>4</biostatCpx>
|
||||
<biostatMet>-1</biostatMet>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.ImmunityAgainstGenesExtension">
|
||||
<givesImmunityAgainst>
|
||||
<li>rjw_genes_feminizer</li>
|
||||
</givesImmunityAgainst>
|
||||
</li>
|
||||
<li Class="RJW_Genes.HediffIncreaseOnSexExtension">
|
||||
<hediffDef>rjw_genes_feminization_progress</hediffDef>
|
||||
<canCreateHediff>true</canCreateHediff>
|
||||
<severityIncrease>0.01</severityIncrease>
|
||||
<applicationChance>1.00</applicationChance>
|
||||
<applicableForWomen>false</applicableForWomen>
|
||||
<applicableForMen>true</applicableForMen>
|
||||
<requiresPenetrativeSex>false</requiresPenetrativeSex>
|
||||
</li>
|
||||
<li Class="RJW_Genes.GeneAlteringExtension">
|
||||
<majorGenes>
|
||||
<li>rjw_genes_female_only</li>
|
||||
<li>rjw_genes_no_penis</li>
|
||||
<li>rjw_genes_minor_vulnerability</li>
|
||||
</majorGenes>
|
||||
<minorGenes>
|
||||
<li>rjw_genes_small_male_genitalia</li>
|
||||
<li>rjw_genes_big_breasts</li>
|
||||
<li>Beard_NoBeardOnly</li>
|
||||
<li>Hair_LongOnly</li>
|
||||
</minorGenes>
|
||||
<minorApplicationChance>0.25</minorApplicationChance>
|
||||
<majorApplicationChance>0.1</majorApplicationChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="SpecialBase">
|
||||
<defName>rjw_genes_twinkifier</defName>
|
||||
<label>twinkifier</label>
|
||||
<description>Carriers with this gene slowly turn male sexual partners into breedabel cute twinks.</description>
|
||||
<iconPath>Genes/Icons/twinkifier</iconPath>
|
||||
<displayOrderInCategory>50</displayOrderInCategory>
|
||||
<biostatCpx>4</biostatCpx>
|
||||
<biostatMet>-1</biostatMet>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.ImmunityAgainstGenesExtension">
|
||||
<givesImmunityAgainst>
|
||||
<li>rjw_genes_twinkifier</li>
|
||||
</givesImmunityAgainst>
|
||||
</li>
|
||||
<li Class="RJW_Genes.HediffIncreaseOnSexExtension">
|
||||
<hediffDef>rjw_genes_twinkification_progress</hediffDef>
|
||||
<canCreateHediff>true</canCreateHediff>
|
||||
<severityIncrease>0.01</severityIncrease>
|
||||
<applicationChance>1.00</applicationChance>
|
||||
<applicableForWomen>false</applicableForWomen>
|
||||
<applicableForMen>true</applicableForMen>
|
||||
<requiresPenetrativeSex>false</requiresPenetrativeSex>
|
||||
</li>
|
||||
<li Class="RJW_Genes.GeneAlteringExtension">
|
||||
<majorGenes>
|
||||
<li>rjw_genes_fertile_anus</li>
|
||||
<li>Beauty_Pretty</li>
|
||||
<li>Delicate</li>
|
||||
<li>rjw_genes_minor_vulnerability</li>
|
||||
<li>rjw_genes_infectious_homosexuality</li>
|
||||
</majorGenes>
|
||||
<minorGenes>
|
||||
<li>rjw_genes_small_male_genitalia</li>
|
||||
<li>Beard_NoBeardOnly</li>
|
||||
<li>Body_Thin</li>
|
||||
<li>rjw_genes_homosexual</li>
|
||||
</minorGenes>
|
||||
<minorApplicationChance>0.25</minorApplicationChance>
|
||||
<majorApplicationChance>0.1</majorApplicationChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
</Defs>
|
|
@ -65,10 +65,10 @@
|
|||
<backgroundPathEndogenes>Genes/Icons/RJW_Genes_Endogene_Background</backgroundPathEndogenes>
|
||||
<backgroundPathXenogenes>Genes/Icons/RJW_Genes_Xenogene_Background</backgroundPathXenogenes>
|
||||
</li>
|
||||
<li Class="RJW_Genes.GenderFluidExtension">
|
||||
<li Class="RJW_Genes.TickBasedChanceExtension">
|
||||
<!-- 120k = 2 days -->
|
||||
<changeInterval>120000</changeInterval>
|
||||
<changeChance>0.25</changeChance>
|
||||
<tickInterval>120000</tickInterval>
|
||||
<eventChance>0.25</eventChance>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
|
|
@ -75,6 +75,7 @@
|
|||
</doubleXenotypeChances>
|
||||
<genes>
|
||||
<li>rjw_genes_hypersexual</li>
|
||||
<li>rjw_genes_bisexual</li>
|
||||
<li>rjw_genes_male_only</li>
|
||||
<li>rjw_genes_lifeforce</li>
|
||||
<li>rjw_genes_lifeforce_drain</li>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Defs>
|
||||
|
||||
|
||||
<HediffDef>
|
||||
<defName>rjw_genes_fertilin_lost</defName>
|
||||
<hediffClass>Hediff_HemogenCraving</hediffClass>
|
||||
|
@ -19,12 +19,13 @@
|
|||
</li>
|
||||
</stages>
|
||||
</HediffDef>
|
||||
|
||||
|
||||
<HediffDef>
|
||||
<defName>rjw_genes_succubus_drained</defName>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<label>Drained</label>
|
||||
<description>The vitality of this pawn has been drained. Cannot be drained again until fully recovered.</description>
|
||||
<description>The vitality of this pawn has been drained. Cannot be drained again until fully
|
||||
recovered.</description>
|
||||
<defaultLabelColor>(1,0,0.5)</defaultLabelColor>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<initialSeverity>1.0</initialSeverity>
|
||||
|
@ -74,13 +75,13 @@
|
|||
<statOffsets>
|
||||
<WorkSpeedGlobal>-0.2</WorkSpeedGlobal>
|
||||
</statOffsets>
|
||||
<vomitMtbDays>0.4</vomitMtbDays>
|
||||
<vomitMtbDays>0.4</vomitMtbDays>
|
||||
<hungerRateFactorOffset>0.1</hungerRateFactorOffset>
|
||||
<restFallFactorOffset>0.35</restFallFactorOffset>
|
||||
</li>
|
||||
</stages>
|
||||
</HediffDef>
|
||||
|
||||
|
||||
<HediffDef>
|
||||
<defName>rjw_genes_fertilin_craving</defName>
|
||||
<label>fertilin craving</label>
|
||||
|
@ -90,77 +91,78 @@
|
|||
<maxSeverity>1.0</maxSeverity>
|
||||
<initialSeverity>0.01</initialSeverity>
|
||||
<stages>
|
||||
<li>
|
||||
<label>minor</label>
|
||||
<painOffset>0.05</painOffset>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<setMax>0.9</setMax>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
<li>
|
||||
<label>moderate</label>
|
||||
<minSeverity>0.35</minSeverity>
|
||||
<painOffset>0.1</painOffset>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<setMax>0.8</setMax>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
<li>
|
||||
<label>major</label>
|
||||
<minSeverity>0.7</minSeverity>
|
||||
<painOffset>0.15</painOffset>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<setMax>0.5</setMax>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
<li>
|
||||
<label>minor</label>
|
||||
<painOffset>0.05</painOffset>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<setMax>0.9</setMax>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
<li>
|
||||
<label>moderate</label>
|
||||
<minSeverity>0.35</minSeverity>
|
||||
<painOffset>0.1</painOffset>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<setMax>0.8</setMax>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
<li>
|
||||
<label>major</label>
|
||||
<minSeverity>0.7</minSeverity>
|
||||
<painOffset>0.15</painOffset>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<setMax>0.5</setMax>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
</stages>
|
||||
<comps>
|
||||
<li Class="RJW_Genes.HediffCompProperties_SeverityFromFertilin">
|
||||
<severityPerHourEmpty>0.05</severityPerHourEmpty>
|
||||
<severityPerHourHemogen>-0.1</severityPerHourHemogen>
|
||||
</li>
|
||||
<li Class="RJW_Genes.HediffCompProperties_SeverityFromFertilin">
|
||||
<severityPerHourEmpty>0.05</severityPerHourEmpty>
|
||||
<severityPerHourHemogen>-0.1</severityPerHourHemogen>
|
||||
</li>
|
||||
</comps>
|
||||
</HediffDef>
|
||||
|
||||
<HediffDef ParentName="RoleStatBuff">
|
||||
<defName>rjw_genes_naked_prowess</defName>
|
||||
<label>naked prowss</label>
|
||||
<description>Driven by fertilin, this person has greatly increased strength and resilience.</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<stages>
|
||||
<li>
|
||||
<!--Maybe a bit to much, but they are supposed to be strong-->
|
||||
<statOffsets>
|
||||
<ArmorRating_Sharp>0.5</ArmorRating_Sharp>
|
||||
<ArmorRating_Blunt>0.5</ArmorRating_Blunt>
|
||||
<ArmorRating_Heat>0.5</ArmorRating_Heat>
|
||||
<!-- <Insulation_Cold>10</Insulation_Cold>
|
||||
<Insulation_Heat>10</Insulation_Heat> -->
|
||||
</statOffsets>
|
||||
<statFactors>
|
||||
<IncomingDamageFactor>0.5</IncomingDamageFactor>
|
||||
<MeleeDamageFactor>1.5</MeleeDamageFactor>
|
||||
</statFactors>
|
||||
</li>
|
||||
</stages>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_Disappears">
|
||||
<showRemainingTime>True</showRemainingTime>
|
||||
<disappearsAfterTicks>5000</disappearsAfterTicks> <!-- 2 hours -->
|
||||
</li>
|
||||
<li Class="HediffCompProperties_DisappearsOnDeath"/>
|
||||
<!--TODO: Make hediff disappear if pawn is nolonger naked-->
|
||||
</comps>
|
||||
<isBad>false</isBad>
|
||||
</HediffDef>
|
||||
<HediffDef>
|
||||
<defName>rjw_genes_naked_prowess</defName>
|
||||
<defaultLabelColor>(0.52, 1, 0.95)</defaultLabelColor>
|
||||
<label>naked prowss</label>
|
||||
<description>Driven by fertilin, this person has greatly increased strength and resilience.</description>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<stages>
|
||||
<li>
|
||||
<!--Maybe
|
||||
a bit to much, but they are supposed to be strong-->
|
||||
<statOffsets>
|
||||
<ArmorRating_Sharp>0.5</ArmorRating_Sharp>
|
||||
<ArmorRating_Blunt>0.5</ArmorRating_Blunt>
|
||||
<ArmorRating_Heat>0.5</ArmorRating_Heat>
|
||||
</statOffsets>
|
||||
<statFactors>
|
||||
<IncomingDamageFactor>0.5</IncomingDamageFactor>
|
||||
<MeleeDamageFactor>1.5</MeleeDamageFactor>
|
||||
</statFactors>
|
||||
</li>
|
||||
</stages>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_Disappears">
|
||||
<showRemainingTime>True</showRemainingTime>
|
||||
<disappearsAfterTicks>5000</disappearsAfterTicks> <!-- 2 hours -->
|
||||
</li>
|
||||
<li Class="HediffCompProperties_DisappearsOnDeath" />
|
||||
<!--TODO:
|
||||
Make hediff disappear if pawn is nolonger naked-->
|
||||
</comps>
|
||||
<isBad>false</isBad>
|
||||
</HediffDef>
|
||||
|
||||
</Defs>
|
||||
</Defs>
|
147
Common/Defs/HediffDefs/Hediffs_InfectiveGenderChanges.xml
Normal file
|
@ -0,0 +1,147 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Defs>
|
||||
|
||||
<HediffDef>
|
||||
<defName>rjw_genes_feminization_progress</defName>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<label>feminization</label>
|
||||
<description>Something is changing this pawn - there is a chance to develop female features
|
||||
upon sex.</description>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<isBad>false</isBad>
|
||||
<tendable>false</tendable>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_SeverityPerDay">
|
||||
<severityPerDay>-0.01</severityPerDay>
|
||||
</li>
|
||||
</comps>
|
||||
<stages>
|
||||
<!-- DevNote: The labels and their effects can be changed, but the logic triggers at >0.6 for minor and >0.8 for major ! -->
|
||||
<li>
|
||||
<label>neglectable</label>
|
||||
<becomeVisible>false</becomeVisible>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label>minor</label>
|
||||
<minSeverity>0.6</minSeverity>
|
||||
<becomeVisible>true</becomeVisible>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<offset>-0.5</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
<statOffsets>
|
||||
<Vulnerability>0.25</Vulnerability>
|
||||
</statOffsets>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label>severe</label>
|
||||
<minSeverity>0.8</minSeverity>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<offset>-0.05</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
<becomeVisible>true</becomeVisible>
|
||||
<statOffsets>
|
||||
<Vulnerability>0.5</Vulnerability>
|
||||
<SexFrequency>0.25</SexFrequency>
|
||||
</statOffsets>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label>critical</label>
|
||||
<minSeverity>0.9</minSeverity>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<offset>-0.1</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
<becomeVisible>true</becomeVisible>
|
||||
<statOffsets>
|
||||
<Vulnerability>1.0</Vulnerability>
|
||||
<SexFrequency>0.5</SexFrequency>
|
||||
</statOffsets>
|
||||
</li>
|
||||
</stages>
|
||||
</HediffDef>
|
||||
|
||||
|
||||
<HediffDef>
|
||||
<defName>rjw_genes_twinkification_progress</defName>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<label>twinkification</label>
|
||||
<description>Something is changing this pawn - there is a chance to turn into a cute,
|
||||
breedable twink upon sex.</description>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<isBad>false</isBad>
|
||||
<tendable>false</tendable>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_SeverityPerDay">
|
||||
<severityPerDay>-0.01</severityPerDay>
|
||||
</li>
|
||||
</comps>
|
||||
<stages>
|
||||
<!-- DevNote: The labels and their effects can be changed, but the logic triggers at >0.6 for minor and >0.8 for major ! -->
|
||||
<li>
|
||||
<label>neglectable</label>
|
||||
<becomeVisible>false</becomeVisible>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label>minor</label>
|
||||
<minSeverity>0.6</minSeverity>
|
||||
<becomeVisible>true</becomeVisible>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<offset>-0.05</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
<statOffsets>
|
||||
<Vulnerability>0.25</Vulnerability>
|
||||
</statOffsets>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label>severe</label>
|
||||
<minSeverity>0.8</minSeverity>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<offset>-0.05</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
<becomeVisible>true</becomeVisible>
|
||||
<statOffsets>
|
||||
<Vulnerability>0.5</Vulnerability>
|
||||
<SexFrequency>0.25</SexFrequency>
|
||||
</statOffsets>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<label>critical</label>
|
||||
<minSeverity>0.9</minSeverity>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Consciousness</capacity>
|
||||
<offset>-0.1</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
<becomeVisible>true</becomeVisible>
|
||||
<statOffsets>
|
||||
<Vulnerability>1.5</Vulnerability>
|
||||
<SexFrequency>0.5</SexFrequency>
|
||||
</statOffsets>
|
||||
</li>
|
||||
</stages>
|
||||
</HediffDef>
|
||||
|
||||
</Defs>
|
51
Common/Defs/HediffDefs/Hediffs_Rut.xml
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Defs>
|
||||
<HediffDef>
|
||||
<defName>rjw_genes_genetic_rut</defName>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<label>Rut</label>
|
||||
<description>Based on genetics, this pawn is in heat.</description>
|
||||
<defaultLabelColor>(240,200,110)</defaultLabelColor>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<maxSeverity>1.0</maxSeverity>
|
||||
<isBad>false</isBad>
|
||||
<tendable>false</tendable>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_SeverityPerDay">
|
||||
<severityPerDay>-1.00</severityPerDay>
|
||||
</li>
|
||||
</comps>
|
||||
<stages>
|
||||
<li>
|
||||
<label>calming down</label>
|
||||
<statOffsets>
|
||||
<SexFrequency>0.50</SexFrequency>
|
||||
</statOffsets>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>BloodPumping</capacity>
|
||||
<offset>0.1</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
<li>
|
||||
<label>in heat</label>
|
||||
<minSeverity>0.4</minSeverity>
|
||||
<statOffsets>
|
||||
<SexFrequency>2.00</SexFrequency>
|
||||
</statOffsets>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Moving</capacity>
|
||||
<offset>0.1</offset>
|
||||
</li>
|
||||
<li>
|
||||
<capacity>BloodPumping</capacity>
|
||||
<offset>0.15</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
</stages>
|
||||
</HediffDef>
|
||||
|
||||
</Defs>
|
|
@ -13,7 +13,7 @@
|
|||
<li>
|
||||
<minSeverity>0</minSeverity>
|
||||
<statOffsets>
|
||||
<SlaveSuppressionOffset>0.40</SlaveSuppressionOffset>
|
||||
<SlaveSuppressionOffset MayRequire="Ideology">0.40</SlaveSuppressionOffset>
|
||||
<Vulnerability>3.0</Vulnerability>
|
||||
</statOffsets>
|
||||
<capMods>
|
||||
|
|
18
Common/Defs/HistoryEventDefs/DiseaseHistoryEventDefs.xml
Normal file
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Defs>
|
||||
<HistoryEventDef>
|
||||
<defName>rjw_genes_GoodwillChangedReason_StoleGene</defName>
|
||||
<label>Stole a gene</label>
|
||||
</HistoryEventDef>
|
||||
|
||||
<HistoryEventDef>
|
||||
<defName>rjw_genes_GoodwillChangedReason_infected_with_disease</defName>
|
||||
<label>Infected a pawn with a genetic disease</label>
|
||||
</HistoryEventDef>
|
||||
|
||||
<HistoryEventDef>
|
||||
<defName>rjw_genes_GoodwillChangedReason_spread_genetic_disease</defName>
|
||||
<label>Spread a genetic disease</label>
|
||||
</HistoryEventDef>
|
||||
|
||||
</Defs>
|
18
Common/Defs/HistoryEventDefs/SpecialHistoryEventDefs.xml
Normal file
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Defs>
|
||||
<HistoryEventDef>
|
||||
<defName>rjw_genes_GoodwillChangedReason_aged_pawn_with_sex_gene</defName>
|
||||
<label>Aged a pawn with sexual age transfer</label>
|
||||
</HistoryEventDef>
|
||||
|
||||
<HistoryEventDef>
|
||||
<defName>rjw_genes_GoodwillChangedReason_youthed_pawn_with_sex_gene</defName>
|
||||
<label>Youthed a pawn with youth fountain</label>
|
||||
</HistoryEventDef>
|
||||
|
||||
<HistoryEventDef>
|
||||
<defName>rjw_genes_GoodwillChangedReason_OverwritePregnancy</defName>
|
||||
<label>Replaced a pregnancy</label>
|
||||
</HistoryEventDef>
|
||||
|
||||
</Defs>
|
49
Common/Defs/ThoughtDefs/Thoughts_Disease.xml
Normal file
|
@ -0,0 +1,49 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
|
||||
<Defs>
|
||||
|
||||
<ThoughtDef>
|
||||
<defName>rjw_genes_appealing_cock</defName>
|
||||
<thoughtClass>Thought_SituationalSocial</thoughtClass>
|
||||
<workerClass>RJW_Genes.ThoughtWorker_SizeBlinded_Social</workerClass>
|
||||
<validWhileDespawned>true</validWhileDespawned>
|
||||
|
||||
<stages>
|
||||
<li>
|
||||
<label>small cock</label>
|
||||
<baseOpinionOffset>-10</baseOpinionOffset>
|
||||
</li>
|
||||
<li>
|
||||
<label>big cock</label>
|
||||
<baseOpinionOffset>10</baseOpinionOffset>
|
||||
</li>
|
||||
<li>
|
||||
<label>monster cock</label>
|
||||
<baseOpinionOffset>20</baseOpinionOffset>
|
||||
</li>
|
||||
</stages>
|
||||
</ThoughtDef>
|
||||
|
||||
<ThoughtDef>
|
||||
<defName>rjw_genes_has_more_diseases</defName>
|
||||
<thoughtClass>Thought_SituationalSocial</thoughtClass>
|
||||
<workerClass>RJW_Genes.ThoughtWorker_HasMoreDiseasesThanMe_Social</workerClass>
|
||||
<validWhileDespawned>true</validWhileDespawned>
|
||||
|
||||
<stages>
|
||||
<li>
|
||||
<label>carries more genetic diseases than me</label>
|
||||
<baseOpinionOffset>-3</baseOpinionOffset>
|
||||
</li>
|
||||
<li>
|
||||
<label>carries more way genetic diseases than me</label>
|
||||
<baseOpinionOffset>-8</baseOpinionOffset>
|
||||
</li>
|
||||
<li>
|
||||
<label>the genetic diseases on this fellow are off charts</label>
|
||||
<baseOpinionOffset>-18</baseOpinionOffset>
|
||||
</li>
|
||||
</stages>
|
||||
</ThoughtDef>
|
||||
|
||||
</Defs>
|
|
@ -23,6 +23,8 @@
|
|||
|
||||
<li TKey="BestialityGeneSettings">The Settings for Animal-Gene Inheritance are distributed between RJW-Pregnancy-Settings and their own Mod-Options.</li>
|
||||
|
||||
<li TKey="FertilaAnusJoke">Children born by pawns with the `Fertile Anus` gene might be bullied at school, but they can still live a fulfilling and happy life.</li>
|
||||
|
||||
</tips>
|
||||
</TipSetDef>
|
||||
|
||||
|
|
|
@ -21,10 +21,17 @@
|
|||
<rjw_genes_settings_regret_stealing_love_key>Regret Stealing Love</rjw_genes_settings_regret_stealing_love_key>
|
||||
<rjw_genes_settings_regret_stealing_love_explanation>If off, pawns will not get bad thoughts for seduction.</rjw_genes_settings_regret_stealing_love_explanation>
|
||||
|
||||
|
||||
<rjw_genes_settings_animal_mating_needs_penis_key>Animal-Mating GenitalCheck</rjw_genes_settings_animal_mating_needs_penis_key>
|
||||
<rjw_genes_settings_animal_mating_needs_penis_explanation>If on, only animals that 'can rape' will be engaging in bestiality after being hit by a animal mating pulse. This usually means that only male animals will start breeding.</rjw_genes_settings_animal_mating_needs_penis_explanation>
|
||||
|
||||
<rjw_genes_genetic_disease_header_key>Genetic STDS</rjw_genes_genetic_disease_header_key>
|
||||
<rjw_genes_settings_genetic_disease_spread_key>Genetic STD Spread</rjw_genes_settings_genetic_disease_spread_key>
|
||||
<rjw_genes_settings_genetic_disease_spread_explanation>If checked, certain Genes will spread on sex.</rjw_genes_settings_genetic_disease_spread_explanation>
|
||||
<rjw_genes_genetic_disease_as_endogenes_key>Genetic STDs as Endogenes</rjw_genes_genetic_disease_as_endogenes_key>
|
||||
<rjw_genes_genetic_disease_as_endogenes_explanation>If checked, genetic diseases will be added as Endogenes. Otherwise they are added as Xenogenes.</rjw_genes_genetic_disease_as_endogenes_explanation>
|
||||
<rjw_genes_genetic_disease_spread_only_on_penetrative_sex_key>Genetic STDs on penetrative-sex only</rjw_genes_genetic_disease_spread_only_on_penetrative_sex_key>
|
||||
<rjw_genes_genetic_disease_spread_only_on_penetrative_sex_explanation>If checked, genetic STDs are only spread on penetrative sex. Otherwise, any sextype is considered for spread.</rjw_genes_genetic_disease_spread_only_on_penetrative_sex_explanation>
|
||||
|
||||
<rjw_genes_settings_generous_donor_cheatmode_key>generous-donor cheatmode</rjw_genes_settings_generous_donor_cheatmode_key>
|
||||
<rjw_genes_settings_generous_donor_cheatmode_explanation>When enabled, pawns with the 'generous donor' are not drained and not fertilin exhausted. Hence they can fuel succubi and incubi non-stop. This makes them drastically easier to keep, and you should not do it.</rjw_genes_settings_generous_donor_cheatmode_explanation>
|
||||
|
||||
|
|
8
Common/Languages/English/Keyed/StatsReports.xml
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LanguageData>
|
||||
|
||||
<StatsReport_NoChildren>Pawn doesn't have any children.</StatsReport_NoChildren>
|
||||
<StatsReport_ManyChildren>Pawn has a decent amount of children.</StatsReport_ManyChildren>
|
||||
<StatsReport_VeryManyChildren>Pawn has a lot of children.</StatsReport_VeryManyChildren>
|
||||
|
||||
</LanguageData>
|
36
Common/Patches/Xenotypes/PatchImphileeXeno.xml
Normal file
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Patch>
|
||||
<Operation Class="PatchOperationSequence">
|
||||
<operations>
|
||||
<li Class="PatchOperationFindMod">
|
||||
<mods>
|
||||
<li>Imphilee Xeno</li>
|
||||
</mods>
|
||||
<match Class="PatchOperationAdd">
|
||||
<xpath>Defs/XenotypeDef[defName="LD_Imphilee"]/genes</xpath>
|
||||
<value>
|
||||
<li>rjw_genes_tight_female_genitalia</li>
|
||||
<li>rjw_genes_small_breasts</li>
|
||||
<li MayRequire="LustLicentia.RJWLabs">rjw_genes_elasticity</li>
|
||||
<li>rjw_genes_demonic_genitalia</li>
|
||||
</value>
|
||||
</match>
|
||||
</li>
|
||||
<li Class="PatchOperationFindMod">
|
||||
<mods>
|
||||
<li>Imphilee Xeno</li>
|
||||
</mods>
|
||||
<match Class="PatchOperationAdd">
|
||||
<xpath>Defs/XenotypeDef[defName="LD_Imphilee_Overlord"]/genes</xpath>
|
||||
<value>
|
||||
<li>rjw_genes_tight_female_genitalia</li>
|
||||
<li>rjw_genes_small_breasts</li>
|
||||
<li MayRequire="LustLicentia.RJWLabs">rjw_genes_elasticity</li>
|
||||
<li>rjw_genes_demonic_genitalia</li>
|
||||
<li>rjw_genes_rapist</li>
|
||||
</value>
|
||||
</match>
|
||||
</li>
|
||||
</operations>
|
||||
</Operation>
|
||||
</Patch>
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 195 KiB |
BIN
Common/Textures/Genes/Icons/FireLeaves.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
Common/Textures/Genes/Icons/FleshPurity.png
Normal file
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 113 KiB |
BIN
Common/Textures/Genes/Icons/RoundC.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
Common/Textures/Genes/Icons/Samples/Cumflation_Immunity.psd
Normal file
BIN
Common/Textures/Genes/Icons/Samples/Gene_Fertile.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
Common/Textures/Genes/Icons/Samples/Gene_Inbred.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |
BIN
Common/Textures/Genes/Icons/Samples/Gene_PsychicBonding.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
Common/Textures/Genes/Icons/Samples/Gene_PsychicallyDeaf.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
Common/Textures/Genes/Icons/Samples/Gene_TotalHealing.png
Normal file
After Width: | Height: | Size: 8.8 KiB |
BIN
Common/Textures/Genes/Icons/Samples/Gene_TotalHealing.psd
Normal file
BIN
Common/Textures/Genes/Icons/Samples/Time.png
Normal file
After Width: | Height: | Size: 148 KiB |
BIN
Common/Textures/Genes/Icons/Samples/blocked_masturbation.psd
Normal file
BIN
Common/Textures/Genes/Icons/Samples/disease_immunity.psd
Normal file
BIN
Common/Textures/Genes/Icons/Samples/feminizer&twinkifier.psd
Normal file
BIN
Common/Textures/Genes/Icons/Samples/hardwired_progenity.psd
Normal file
BIN
Common/Textures/Genes/Icons/Samples/la-copa-menstrual-04.png
Normal file
After Width: | Height: | Size: 373 KiB |
BIN
Common/Textures/Genes/Icons/Samples/living_cumbucket.psd
Normal file
BIN
Common/Textures/Genes/Icons/Samples/low_fertility.psd
Normal file
BIN
Common/Textures/Genes/Icons/Samples/pregnancy_overwrite.psd
Normal file
BIN
Common/Textures/Genes/Icons/Samples/rut.psd
Normal file
BIN
Common/Textures/Genes/Icons/Samples/sexual_genetic_swap.psd
Normal file
BIN
Common/Textures/Genes/Icons/Samples/sexual_genetic_thief.psd
Normal file
BIN
Common/Textures/Genes/Icons/Samples/size_blinded&stretcher.psd
Normal file
BIN
Common/Textures/Genes/Icons/Samples/vulnerability.psd
Normal file
BIN
Common/Textures/Genes/Icons/TrialDefend.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
Common/Textures/Genes/Icons/bisexuality.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
Common/Textures/Genes/Icons/blocked_masturbation.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
Common/Textures/Genes/Icons/disease_immunity.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
Common/Textures/Genes/Icons/feminizer.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
Common/Textures/Genes/Icons/hardwired_progenity.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
Common/Textures/Genes/Icons/homosexuality.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
Common/Textures/Genes/Icons/living_cumbucket.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
Common/Textures/Genes/Icons/low_fertility.png
Normal file
After Width: | Height: | Size: 7.2 KiB |
BIN
Common/Textures/Genes/Icons/major_vulnerability.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
Common/Textures/Genes/Icons/minor_vulnerability.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
Common/Textures/Genes/Icons/pregnancy_overwrite.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
Common/Textures/Genes/Icons/rut.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
Common/Textures/Genes/Icons/sexual_genetic_swap.png
Normal file
After Width: | Height: | Size: 8.7 KiB |
BIN
Common/Textures/Genes/Icons/sexual_genetic_thief.png
Normal file
After Width: | Height: | Size: 8.4 KiB |
BIN
Common/Textures/Genes/Icons/size_blinded.png
Normal file
After Width: | Height: | Size: 58 KiB |
BIN
Common/Textures/Genes/Icons/stretcher.png
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
Common/Textures/Genes/Icons/twinkifier.png
Normal file
After Width: | Height: | Size: 13 KiB |
|
@ -16,5 +16,6 @@
|
|||
<li IfModActive="vanillaracesexpanded.android">Mods/Android</li>
|
||||
<li IfModActive="VanillaExpanded.VGeneticsE">Mods/VE_Genetics</li>
|
||||
<li IfModActive="LustLicentia.RJWLabs">Mods/LicentiaLabs</li>
|
||||
<li IfModActive="rjw.sexperience">Mods/Sexperience</li>
|
||||
</v1.5>
|
||||
</loadFolders>
|
|
@ -27,6 +27,8 @@
|
|||
<description>This Xenotype loves being cumflated.</description>
|
||||
<iconPath>Genes/Icons/Cumflation</iconPath>
|
||||
<displayOrderInCategory>536</displayOrderInCategory>
|
||||
<biostatMet>-1</biostatMet>
|
||||
<biostatCpx>2</biostatCpx>
|
||||
<forcedTraits>
|
||||
<li>
|
||||
<def>LikesCumflation</def>
|
||||
|
@ -71,6 +73,8 @@
|
|||
<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>
|
||||
|
|
|
@ -98,15 +98,6 @@
|
|||
<li Class="HediffCompProperties_SeverityPerDay">
|
||||
<severityPerDay>-0.75</severityPerDay>
|
||||
</li>
|
||||
<li Class="LicentiaLabs.Hediffs.HediffCompProperties_VomitCumMtb">
|
||||
<mtbDaysPerStage>
|
||||
<li>0</li>
|
||||
<li>0</li>
|
||||
<li>0.75</li>
|
||||
<li>0.5</li>
|
||||
<li>0.2</li>
|
||||
</mtbDaysPerStage>
|
||||
</li>
|
||||
</comps>
|
||||
<stages>
|
||||
<li>
|
21
Mods/Sexperience/Defs/GeneDefs/Sexperience_GeneDefs.xml
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<GeneDef>
|
||||
<defName>rjw_genes_living_cumbucket</defName>
|
||||
<label>living cumbucket</label>
|
||||
<displayCategory>rjw_genes_cum</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>
|
94
Mods/Sexperience/Defs/HediffDefs/Sexperience_HediffDefs.xml
Normal file
|
@ -0,0 +1,94 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
<HediffDef>
|
||||
<defName>rjw_genes_filled_living_cumbucket</defName>
|
||||
<hediffClass>HediffWithComps</hediffClass>
|
||||
<label>filled living cumbucket</label>
|
||||
<description>This pawn is a (filled) living cum bucket. Thanks to a generous donation, this pawn will slowly generate cum for pickup.</description>
|
||||
<defaultLabelColor>(240,200,110)</defaultLabelColor>
|
||||
<scenarioCanAdd>false</scenarioCanAdd>
|
||||
<!-- <maxSeverity>1.0</maxSeverity> -->
|
||||
<isBad>false</isBad>
|
||||
<tendable>false</tendable>
|
||||
<comps>
|
||||
<li Class="HediffCompProperties_SeverityPerDay">
|
||||
<severityPerDay>-0.5</severityPerDay>
|
||||
</li>
|
||||
<li Class="RJW_Genes.HediffsCompProperties_ProcessCumbucketMTB">
|
||||
<mtbDaysPerStage>
|
||||
<li>0</li>
|
||||
<li>0.5</li>
|
||||
<li>0.25</li>
|
||||
<li>0.1</li>
|
||||
<li>0.5</li>
|
||||
</mtbDaysPerStage>
|
||||
</li>
|
||||
</comps>
|
||||
<stages>
|
||||
<li>
|
||||
<label>slight</label>
|
||||
<statOffsets>
|
||||
<Vulnerability>-0.1</Vulnerability>
|
||||
</statOffsets>
|
||||
</li>
|
||||
<li>
|
||||
<label>moderate</label>
|
||||
<minSeverity>0.4</minSeverity>
|
||||
<hungerRateFactor>0.8</hungerRateFactor>
|
||||
<statOffsets>
|
||||
<Vulnerability>-0.25</Vulnerability>
|
||||
</statOffsets>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Moving</capacity>
|
||||
<offset>-0.05</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
<li>
|
||||
<label>full</label>
|
||||
<minSeverity>0.65</minSeverity>
|
||||
<hungerRateFactor>0.75</hungerRateFactor>
|
||||
<statOffsets>
|
||||
<Vulnerability>-0.25</Vulnerability>
|
||||
</statOffsets>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Moving</capacity>
|
||||
<offset>-0.1</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
<li>
|
||||
<label>over-full</label>
|
||||
<minSeverity>1.1</minSeverity>
|
||||
<hungerRateFactor>0.6</hungerRateFactor>
|
||||
<statOffsets>
|
||||
<Vulnerability>-0.5</Vulnerability>
|
||||
</statOffsets>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Moving</capacity>
|
||||
<offset>-0.15</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
<li>
|
||||
<label>living reservior</label>
|
||||
<minSeverity>10.1</minSeverity>
|
||||
<hungerRateFactor>0.1</hungerRateFactor>
|
||||
<statOffsets>
|
||||
<Vulnerability>-1.5</Vulnerability>
|
||||
</statOffsets>
|
||||
<capMods>
|
||||
<li>
|
||||
<capacity>Moving</capacity>
|
||||
<offset>-0.55</offset>
|
||||
</li>
|
||||
</capMods>
|
||||
</li>
|
||||
</stages>
|
||||
</HediffDef>
|
||||
|
||||
|
||||
</Defs>
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
|
||||
<!--========= General ============-->
|
||||
|
||||
<JobDef>
|
||||
<defName>ProcessCumbucket</defName>
|
||||
<driverClass>RJW_Genes.JobDriver_ProcessingCumbucket</driverClass>
|
||||
<playerInterruptible>false</playerInterruptible>
|
||||
<casualInterruptible>false</casualInterruptible>
|
||||
<reportString>processing internal cumbucket.</reportString>
|
||||
<suspendable>false</suspendable>
|
||||
</JobDef>
|
||||
|
||||
</Defs>
|
|
@ -1,5 +1,8 @@
|
|||
# RJW-Genes [NSFW]
|
||||
|
||||
[](https://buymeacoffee.com/vegapnk)
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
|
||||
This mod adds genes related and based on RJW to Rimworld.
|
||||
|
||||
## Current Features
|
||||
|
@ -12,6 +15,7 @@ This mod adds genes related and based on RJW to Rimworld.
|
|||
- Sexual Vampires that need Cum, Cocks or some other sources.
|
||||
- Mech Breeding Additions & Orgasmic Mytosis
|
||||
- Human-Animal Gene Inheritance merged from [Shabakur](https://github.com/Shabakur/RJW_Animal_Gene_Inheritance)
|
||||
- Genetic Diseases that spread on Intercourse
|
||||
- Patches for some popular / common Xenotypes from other Mods.
|
||||
|
||||
*You might not see all of them. Many genes just show up if other mods are loaded*.
|
||||
|
|
15
Source/Common/Defs/ChanceExtension.cs
Normal file
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
public class ChanceExtension : DefModExtension
|
||||
{
|
||||
public float chance;
|
||||
}
|
||||
|
||||
}
|
23
Source/Common/Defs/HediffIncreaseOnSexExtension.cs
Normal file
|
@ -0,0 +1,23 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
public class HediffIncreaseOnSexExtension: DefModExtension
|
||||
{
|
||||
public HediffDef hediffDef;
|
||||
public float severityIncrease;
|
||||
public float applicationChance;
|
||||
|
||||
public bool canCreateHediff;
|
||||
|
||||
public bool applicableForWomen;
|
||||
public bool applicableForMen;
|
||||
public bool requiresPenetrativeSex;
|
||||
}
|
||||
|
||||
}
|
14
Source/Common/Defs/MultiplierExtension.cs
Normal file
|
@ -0,0 +1,14 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
public class MultiplierExtension : DefModExtension
|
||||
{
|
||||
public float multiplier;
|
||||
}
|
||||
}
|
18
Source/Common/Defs/TickBasedChanceExtension.cs
Normal file
|
@ -0,0 +1,18 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
public class TickBasedChanceExtension : TickIntervalExtension
|
||||
{
|
||||
/// <summary>
|
||||
/// Set to 1 for "always", set to 0 for "never".
|
||||
/// Everything else is a bit statistics, but e.g. when set to .5 the chances grow per day from [50%, 75%, 82.25%, ...]
|
||||
/// </summary>
|
||||
public float eventChance;
|
||||
}
|
||||
}
|
42
Source/Common/Helpers/FactionUtility.cs
Normal file
|
@ -0,0 +1,42 @@
|
|||
using RimWorld;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
public class FactionUtility
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Tries to change the goodwill between the factions of two pawns.
|
||||
/// Exceptions when nothing happens:
|
||||
/// - Pawns, or Pawns Factions, are null
|
||||
/// - The `actors` Faction is not the players faction
|
||||
/// - Both pawns have the same faction
|
||||
/// - The Event is not found
|
||||
/// </summary>
|
||||
/// <param name="actor">The pawn that initiated a faction-goodwill change by his actions</param>
|
||||
/// <param name="target">The pawn that was harmed/affected by the action</param>
|
||||
/// <param name="HistoryEventDefname">The event defname, for proper reporting</param>
|
||||
/// <param name="goodWillChange">How much (positive or negative) the goodwill will change</param>
|
||||
public static void HandleFactionGoodWillPenalties(Pawn actor, Pawn target, string HistoryEventDefname, int goodWillChange, bool canSendHostileLetter=true)
|
||||
{
|
||||
if (actor == null) return;
|
||||
if (target == null) return;
|
||||
if (
|
||||
target.Faction != null && actor.Faction != null
|
||||
&& target.Faction != actor.Faction
|
||||
&& target.Faction != Faction.OfPlayer)
|
||||
{
|
||||
HistoryEventDef reason = DefDatabase<HistoryEventDef>.GetNamedSilentFail(HistoryEventDefname);
|
||||
if (reason == null) return;
|
||||
|
||||
target.Faction.TryAffectGoodwillWith(actor.Faction, goodWillChange, true, canSendHostileLetter, reason, target);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -30,5 +30,12 @@ namespace RJW_Genes
|
|||
Log.Warning($"[{ModId}] {message}");
|
||||
}
|
||||
|
||||
public static void Debug(string message)
|
||||
{
|
||||
if (RJW_Genes_Settings.rjw_genes_detailed_debug)
|
||||
{
|
||||
Log.Message($"[{ModId}][debug] {message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
80
Source/Common/patches/Patch_HediffIncreaseOnSex.cs
Normal file
|
@ -0,0 +1,80 @@
|
|||
using HarmonyLib;
|
||||
using rjw;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// This patch "only" applies the hediff increase on sex.
|
||||
/// It checks for the hediff, creates it if necessary and applicable,
|
||||
/// and increases it based on the severity, chance and genders specified in the Extension.
|
||||
///
|
||||
/// Some hediffs want follow up logic, e.g. the Feminization Gene,
|
||||
/// which is handled in an extra patch (that requires the hediff to be present already).
|
||||
/// </summary>
|
||||
[HarmonyPatch(typeof(SexUtility), "Aftersex")]
|
||||
public class Patch_HediffIncreaseOnSex
|
||||
{
|
||||
|
||||
public static void Postfix(SexProps props)
|
||||
{
|
||||
if (props == null || props.pawn == null || props.partner == null || props.partner.IsAnimal() || props.pawn.IsAnimal())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Pawn pawn = props.pawn;
|
||||
Pawn partner = props.partner;
|
||||
|
||||
if (pawn.genes == null || partner.genes == null) return;
|
||||
|
||||
TryApplyHediffsOfSex(pawn, partner, props);
|
||||
TryApplyHediffsOfSex(partner, pawn, props);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks for every gene in a pawn if it applies a hediff or the severity of an existing hediff in a sexual partner.
|
||||
/// If the checks pass, the hediff is added or changed accordingly.
|
||||
/// </summary>
|
||||
/// <param name="pawn">Pawn that holds (one or many) genes that might apply a hediff change</param>
|
||||
/// <param name="partner">Pawn that will receive or alter any hediffs, if applicable</param>
|
||||
/// <param name="props">The Sexprops, used for checking if sex is penetrative</param>
|
||||
static void TryApplyHediffsOfSex(Pawn pawn, Pawn partner, SexProps props)
|
||||
{
|
||||
var random = new Random();
|
||||
|
||||
foreach (Gene gene in pawn.genes.GenesListForReading)
|
||||
{
|
||||
HediffIncreaseOnSexExtension ext = gene.def.GetModExtension<HediffIncreaseOnSexExtension>();
|
||||
if (ext == null) continue;
|
||||
|
||||
if (DiseaseHelper.IsImmuneAgainstGeneticDisease(partner, gene.def)) continue;
|
||||
if (ext.requiresPenetrativeSex && DiseaseHelper.IsPenetrativeSex(props)) continue;
|
||||
if (!ext.applicableForMen && partner.gender == Gender.Male) continue;
|
||||
if (!ext.applicableForWomen && partner.gender == Gender.Female) continue;
|
||||
if (random.NextDouble() >= ext.applicationChance) continue;
|
||||
|
||||
Hediff hediff = partner.health.hediffSet.GetFirstHediffOfDef(ext.hediffDef);
|
||||
if (hediff == null)
|
||||
{
|
||||
if (!ext.canCreateHediff) continue;
|
||||
hediff = partner.health.GetOrAddHediff(ext.hediffDef);
|
||||
hediff.Severity = 0.01f;
|
||||
ModLog.Debug($"{partner} got hediff {hediff.def.defName} from Patch_HediffIncreaseOnSex ({gene.def.defName}) upon sex with {pawn}");
|
||||
}
|
||||
float initial_severity = hediff.Severity;
|
||||
ModLog.Debug($"{partner}s hediff {hediff.def.defName} was changed by Patch_HediffIncreaseOnSex ({gene.def.defName}) upon sex with {pawn} [from {initial_severity} to {initial_severity + ext.severityIncrease}]");
|
||||
hediff.Severity += ext.severityIncrease;
|
||||
|
||||
// DevNote: I also want to have "negative" hediff changes here, but I think its not necessary. Once the severity reaches 0, or below, the hediff should remove itself.
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -73,14 +73,18 @@ namespace RJW_Genes
|
|||
public static readonly GeneDef rjw_genes_fervent_ovipositor;
|
||||
public static readonly GeneDef rjw_genes_insectbreeder;
|
||||
public static readonly GeneDef rjw_genes_insectincubator;
|
||||
|
||||
// Cum
|
||||
public static readonly GeneDef rjw_genes_hardwired_progenity;
|
||||
public static readonly GeneDef rjw_genes_blocked_masturbation;
|
||||
public static readonly GeneDef rjw_genes_basic_rut;
|
||||
|
||||
// Cum
|
||||
public static readonly GeneDef rjw_genes_no_cum;
|
||||
public static readonly GeneDef rjw_genes_much_cum;
|
||||
public static readonly GeneDef rjw_genes_very_much_cum;
|
||||
[MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_likes_cumflation;
|
||||
[MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_cumflation_immunity;
|
||||
[MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_generous_donor;
|
||||
[MayRequire("rjw.sexperience")] public static readonly GeneDef rjw_genes_living_cumbucket;
|
||||
|
||||
|
||||
// Reproduction
|
||||
|
@ -104,12 +108,17 @@ namespace RJW_Genes
|
|||
public static readonly GeneDef rjw_genes_hormonal_saliva;
|
||||
public static readonly GeneDef rjw_genes_cocoonweaver;
|
||||
public static readonly GeneDef rjw_genes_sex_tamer;
|
||||
public static readonly GeneDef rjw_genes_sexual_genetic_swap;
|
||||
public static readonly GeneDef rjw_genes_sexual_genetic_thief;
|
||||
public static readonly GeneDef rjw_genes_pregnancy_overwrite;
|
||||
public static readonly GeneDef rjw_genes_feminizer;
|
||||
public static readonly GeneDef rjw_genes_twinkifier;
|
||||
|
||||
// Cosmetic
|
||||
public static readonly GeneDef rjw_genes_succubus_tail;
|
||||
public static readonly GeneDef rjw_genes_succubus_wings;
|
||||
|
||||
//life force
|
||||
// Life force | Fertilin
|
||||
public static readonly GeneDef rjw_genes_lifeforce;
|
||||
public static readonly GeneDef rjw_genes_pussyhealing;
|
||||
public static readonly GeneDef rjw_genes_lifeforce_drain;
|
||||
|
@ -121,6 +130,21 @@ namespace RJW_Genes
|
|||
public static readonly GeneDef rjw_genes_cockeater;
|
||||
public static readonly GeneDef rjw_genes_lifeforce_empath;
|
||||
|
||||
// Diseases
|
||||
public static readonly GeneDef rjw_genes_genetic_disease_immunity;
|
||||
public static readonly GeneDef rjw_genes_minor_vulnerability;
|
||||
public static readonly GeneDef rjw_genes_major_vulnerability;
|
||||
public static readonly GeneDef rjw_genes_fluctual_sexual_needs;
|
||||
public static readonly GeneDef rjw_genes_size_blinded;
|
||||
public static readonly GeneDef rjw_genes_infectious_low_fertility;
|
||||
public static readonly GeneDef rjw_genes_infectious_increased_sex_need;
|
||||
public static readonly GeneDef rjw_genes_infectious_bisexuality;
|
||||
public static readonly GeneDef rjw_genes_infectious_homosexuality;
|
||||
public static readonly GeneDef rjw_genes_infectious_hypersexuality;
|
||||
public static readonly GeneDef rjw_genes_stretcher;
|
||||
public static readonly GeneDef rjw_genes_infectious_blocked_masturbation;
|
||||
public static readonly GeneDef rjw_genes_infectious_rut;
|
||||
|
||||
//Other Defs
|
||||
public static readonly XenotypeDef rjw_genes_succubus;
|
||||
public static readonly DutyDef rjw_genes_flirt;
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
using RimWorld;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
public class ConditionalStatAffecter_ManyChildren : ConditionalStatAffecter
|
||||
{
|
||||
public override string Label => (string)"StatsReport_ManyChildren".Translate();
|
||||
|
||||
public const int THRESHOLD_FOR_CHILDREN = 3;
|
||||
|
||||
public override bool Applies(StatRequest req)
|
||||
{
|
||||
if (req == null || req.Thing == null || !req.Thing.Spawned) return false;
|
||||
|
||||
if (req.Thing is Pawn pawn)
|
||||
{
|
||||
// Do nothing if Pawn is Baby or Child (#25)
|
||||
if (!pawn.ageTracker.Adult)
|
||||
return false;
|
||||
|
||||
if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_hardwired_progenity))
|
||||
{
|
||||
// This "middle" Conditional Stat Affecter only fires if the other one does not apply
|
||||
return pawn.relations.ChildrenCount >= THRESHOLD_FOR_CHILDREN
|
||||
&& pawn.relations.ChildrenCount < ConditionalStatAffecter_VeryManyChildren.THRESHOLD_FOR_CHILDREN;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
using RimWorld;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
/// <summary>
|
||||
/// This conditional stat affecter "fires" if the pawn has no children.
|
||||
///
|
||||
/// DevNote: I salvaged this from 1.3.3 Halamyr Conditional Stat Affecters.
|
||||
/// It seems that with RW 1.5 there was a change how these work, as the req.Pawn seems to be null.
|
||||
/// Now, the pawn is in req.Thing.
|
||||
/// </summary>
|
||||
public class ConditionalStatAffecter_NoChildren : ConditionalStatAffecter
|
||||
{
|
||||
public override string Label => (string)"StatsReport_NoChildren".Translate();
|
||||
|
||||
public override bool Applies(StatRequest req)
|
||||
{
|
||||
if (req == null || req.Thing == null || !req.Thing.Spawned) return false;
|
||||
|
||||
if (req.Thing is Pawn pawn)
|
||||
{
|
||||
// Do nothing if Pawn is Baby or Child (#25)
|
||||
if (!pawn.ageTracker.Adult)
|
||||
return false;
|
||||
|
||||
if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_hardwired_progenity))
|
||||
{
|
||||
return pawn.relations.ChildrenCount == 0;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
using RimWorld;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
public class ConditionalStatAffecter_VeryManyChildren : ConditionalStatAffecter
|
||||
{
|
||||
public override string Label => (string)"StatsReport_VeryManyChildren".Translate();
|
||||
|
||||
public const int THRESHOLD_FOR_CHILDREN = 8;
|
||||
|
||||
public override bool Applies(StatRequest req)
|
||||
{
|
||||
if (req == null || req.Thing == null || !req.Thing.Spawned) return false;
|
||||
|
||||
if (req.Thing is Pawn pawn)
|
||||
{
|
||||
// Do nothing if Pawn is Baby or Child (#25)
|
||||
if (!pawn.ageTracker.Adult)
|
||||
return false;
|
||||
|
||||
if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_hardwired_progenity))
|
||||
{
|
||||
return pawn.relations.ChildrenCount >= THRESHOLD_FOR_CHILDREN;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
33
Source/Genes/Breeding/Genes/Gene_Rut.cs
Normal file
|
@ -0,0 +1,33 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
public class Gene_Rut : Gene
|
||||
{
|
||||
public override void Tick()
|
||||
{
|
||||
base.Tick();
|
||||
|
||||
if (pawn == null || pawn.genes == null)
|
||||
return;
|
||||
|
||||
var chanceExtension = this.def.GetModExtension<TickBasedChanceExtension>();
|
||||
if (chanceExtension == null) return;
|
||||
|
||||
if (pawn.IsHashIntervalTick(chanceExtension.tickInterval)){
|
||||
Random r = new Random();
|
||||
if (r.NextDouble() < chanceExtension.eventChance)
|
||||
{
|
||||
Hediff rut = pawn.health.GetOrAddHediff(HediffDefOf.rjw_genes_genetic_rut);
|
||||
rut.Severity = 1;
|
||||
ModLog.Debug($"Pawn {pawn} gained rjw_genes_genetic_rut based on chance.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
26
Source/Genes/Breeding/Patches/Patch_BlockedMasturbation.cs
Normal file
|
@ -0,0 +1,26 @@
|
|||
using HarmonyLib;
|
||||
using rjw;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
[HarmonyPatch(typeof(xxx), "can_masturbate")]
|
||||
public class Patch_BlockedMasturbation
|
||||
{
|
||||
public void PostFix(Pawn pawn, ref bool __result)
|
||||
{
|
||||
if (pawn != null && !pawn.IsAnimal() && pawn.genes != null)
|
||||
{
|
||||
__result = __result
|
||||
&& !pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_blocked_masturbation)
|
||||
&& !pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_infectious_blocked_masturbation);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -34,8 +34,23 @@ namespace RJW_Genes
|
|||
|
||||
}
|
||||
|
||||
//Get total fluidamount a person has.
|
||||
public static float GetTotalFluidAmount(Pawn pawn, float multiplier = 1f)
|
||||
/// <summary>
|
||||
/// Looks up the "MultiplierExtensions" Value for a given Gene, with a fall back.
|
||||
/// Returns the fallback if there is no Extension, or if the Multiplier is smaller than 0.
|
||||
/// </summary>
|
||||
|
||||
public static float LookupCumMultiplier(Gene gene, float FALLBACK = 3.0f) => LookupCumMultiplier(gene.def,FALLBACK);
|
||||
public static float LookupCumMultiplier(GeneDef def, float FALLBACK = 3.0f)
|
||||
{
|
||||
MultiplierExtension multiplier = def.GetModExtension<MultiplierExtension>();
|
||||
if (multiplier == null || multiplier.multiplier < 0)
|
||||
return FALLBACK;
|
||||
else return multiplier.multiplier;
|
||||
}
|
||||
|
||||
|
||||
//Get total fluidamount a person has.
|
||||
public static float GetTotalFluidAmount(Pawn pawn, float multiplier = 1f)
|
||||
{
|
||||
var partBPR = Genital_Helper.get_genitalsBPR(pawn);
|
||||
var parts = Genital_Helper.get_PartsHediffList(pawn, partBPR);
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
namespace RJW_Genes
|
||||
{
|
||||
public class Gene_NoCum : RJW_Gene
|
||||
{
|
||||
bool has_been_fired = false;
|
||||
|
||||
|
||||
public override void PostMake()
|
||||
{
|
||||
base.PostMake();
|
||||
|
||||
CumUtility.MultiplyFluidAmountBy(pawn, 0f);
|
||||
has_been_fired = true;
|
||||
}
|
||||
|
||||
public override void PostAdd()
|
||||
{
|
||||
base.PostAdd();
|
||||
if (!has_been_fired) {
|
||||
CumUtility.MultiplyFluidAmountBy(pawn, 0f);
|
||||
has_been_fired = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override void PostRemove()
|
||||
{
|
||||
// Cum Removal does not do at the moment :/ I would need to safe the old cum amount but I don't want to at the moment
|
||||
base.PostAdd();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
namespace RJW_Genes
|
||||
{
|
||||
public class Gene_VeryMuchCum : RJW_Gene
|
||||
{
|
||||
bool has_been_fired = false;
|
||||
|
||||
float multiplier_much_cum = 10f;
|
||||
|
||||
public override void PostMake()
|
||||
{
|
||||
base.PostMake();
|
||||
|
||||
CumUtility.MultiplyFluidAmountBy(pawn, multiplier_much_cum);
|
||||
has_been_fired = true;
|
||||
}
|
||||
|
||||
public override void PostAdd()
|
||||
{
|
||||
base.PostAdd();
|
||||
if (!has_been_fired) {
|
||||
CumUtility.MultiplyFluidAmountBy(pawn, multiplier_much_cum);
|
||||
has_been_fired = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override void PostRemove()
|
||||
{
|
||||
base.PostAdd();
|
||||
|
||||
if (has_been_fired)
|
||||
{
|
||||
CumUtility.MultiplyFluidAmountBy(pawn, 1/multiplier_much_cum);
|
||||
has_been_fired = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,36 +1,38 @@
|
|||
namespace RJW_Genes
|
||||
{
|
||||
public class Gene_MuchCum : RJW_Gene
|
||||
public class Gene_ChangeCumAmount : RJW_Gene
|
||||
{
|
||||
bool has_been_fired = false;
|
||||
|
||||
float multiplier_much_cum = 3f;
|
||||
|
||||
public override void PostMake()
|
||||
{
|
||||
base.PostMake();
|
||||
|
||||
CumUtility.MultiplyFluidAmountBy(pawn, multiplier_much_cum);
|
||||
float multipier = CumUtility.LookupCumMultiplier(this);
|
||||
CumUtility.MultiplyFluidAmountBy(pawn, multipier);
|
||||
has_been_fired = true;
|
||||
}
|
||||
|
||||
public override void PostAdd()
|
||||
{
|
||||
base.PostAdd();
|
||||
if (!has_been_fired) {
|
||||
CumUtility.MultiplyFluidAmountBy(pawn, multiplier_much_cum);
|
||||
if (!has_been_fired)
|
||||
{
|
||||
float multipier = CumUtility.LookupCumMultiplier(this);
|
||||
CumUtility.MultiplyFluidAmountBy(pawn, multipier);
|
||||
has_been_fired = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override void PostRemove()
|
||||
{
|
||||
base.PostAdd();
|
||||
|
||||
if (has_been_fired)
|
||||
{
|
||||
CumUtility.MultiplyFluidAmountBy(pawn, 1/multiplier_much_cum);
|
||||
float multipier = CumUtility.LookupCumMultiplier(this);
|
||||
CumUtility.MultiplyFluidAmountBy(pawn, 1/ multipier);
|
||||
has_been_fired = false;
|
||||
}
|
||||
}
|
28
Source/Genes/Cum/HediffComp_ProcessCumbucket.cs
Normal file
|
@ -0,0 +1,28 @@
|
|||
|
||||
using RimWorld;
|
||||
using System;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
public class HediffComp_ProcessCumbucket : HediffComp
|
||||
{
|
||||
|
||||
public HediffsCompProperties_ProcessCumbucketMTB Props
|
||||
{
|
||||
get
|
||||
{
|
||||
return (HediffsCompProperties_ProcessCumbucketMTB)this.props;
|
||||
}
|
||||
}
|
||||
|
||||
public override void CompPostTick(ref float severityAdjustment)
|
||||
{
|
||||
if (this.Props.mtbDaysPerStage[this.parent.CurStageIndex] > 0f && base.Pawn.IsHashIntervalTick(60) && Rand.MTBEventOccurs(this.Props.mtbDaysPerStage[this.parent.CurStageIndex], 60000f, 60f))
|
||||
{
|
||||
ModLog.Debug($"Triggered HediffComp_ProcessCumbucket CompPostTick - Starting a JobDriver ProcessCumbucket for {this.parent.pawn}");
|
||||
this.Pawn.jobs.StartJob(JobMaker.MakeJob(DefDatabase<JobDef>.GetNamed("ProcessCumbucket")), lastJobEndCondition: Verse.AI.JobCondition.InterruptForced, resumeCurJobAfterwards: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
public class HediffsCompProperties_ProcessCumbucketMTB : HediffCompProperties
|
||||
{
|
||||
public HediffsCompProperties_ProcessCumbucketMTB()
|
||||
{
|
||||
this.compClass = typeof(HediffComp_ProcessCumbucket);
|
||||
}
|
||||
|
||||
public override IEnumerable<string> ConfigErrors(HediffDef parentDef)
|
||||
{
|
||||
foreach (string text in base.ConfigErrors(parentDef))
|
||||
{
|
||||
yield return text;
|
||||
}
|
||||
if (this.mtbDaysPerStage == null)
|
||||
{
|
||||
yield return "mtbDaysPerStage is not defined";
|
||||
}
|
||||
else if (this.mtbDaysPerStage.Count != parentDef.stages.Count)
|
||||
{
|
||||
yield return "mtbDaysPerStage count doesn't match Hediffs number of stages";
|
||||
}
|
||||
yield break;
|
||||
}
|
||||
|
||||
public List<float> mtbDaysPerStage;
|
||||
}
|
||||
}
|
132
Source/Genes/Cum/JobDriver_ProcessingCumbucket.cs
Normal file
|
@ -0,0 +1,132 @@
|
|||
using LicentiaLabs;
|
||||
using System.Collections.Generic;
|
||||
using Verse;
|
||||
using Verse.AI;
|
||||
using UnityEngine;
|
||||
using System;
|
||||
using rjw;
|
||||
using RimWorld;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
/// <summary>
|
||||
/// Shamelessly stolen from LicentaLabs
|
||||
/// [Jaals Fork] https://gitgud.io/Jaaldabaoth/licentia-labs/-/blob/master/Source/LicentiaLabs/LicentiaLabs/JobDriver_VomitCum.cs
|
||||
/// </summary>
|
||||
class JobDriver_ProcessingCumbucket : JobDriver_Vomit
|
||||
{
|
||||
public override bool CanBeginNowWhileLyingDown()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override IEnumerable<Toil> MakeNewToils()
|
||||
{
|
||||
if (!ModsConfig.IsActive("rjw.sexperience"))
|
||||
yield break;
|
||||
|
||||
Toil toil = new Toil();
|
||||
toil.initAction = delegate ()
|
||||
{
|
||||
this.ticksLeft = Rand.Range(150, 600);
|
||||
int num = 0;
|
||||
IntVec3 c;
|
||||
for (; ; )
|
||||
{
|
||||
c = this.pawn.Position + GenAdj.AdjacentCellsAndInside[Rand.Range(0, 9)];
|
||||
num++;
|
||||
if (num > 12)
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (c.InBounds(this.pawn.Map) && c.Standable(this.pawn.Map))
|
||||
{
|
||||
// DevNote: I am not 100% what this all means, but IL_77 is a jump to the case below (it says IL_77).
|
||||
// basically, this calls the next part of the function, but I am not super sure why this has to be like this.
|
||||
// JobDrivers are scary.
|
||||
goto IL_77;
|
||||
}
|
||||
}
|
||||
c = this.pawn.Position;
|
||||
IL_77:
|
||||
this.job.targetA = c;
|
||||
this.pawn.pather.StopDead();
|
||||
};
|
||||
toil.tickAction = delegate ()
|
||||
{
|
||||
if (this.ticksLeft % 150 == 149)
|
||||
{
|
||||
if (!sourceName.NullOrEmpty())
|
||||
{
|
||||
if (ModsConfig.IsActive("LustLicentia.RJWLabs"))
|
||||
FilthMaker.TryMakeFilth(this.job.targetA.Cell, base.Map, Licentia.ThingDefs.FilthCum, sourceName);
|
||||
SpawnCum(this.pawn, this.job.targetA.Cell, base.Map);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ModsConfig.IsActive("LustLicentia.RJWLabs"))
|
||||
FilthMaker.TryMakeFilth(this.job.targetA.Cell, base.Map, Licentia.ThingDefs.FilthCum);
|
||||
SpawnCum(this.pawn, this.job.targetA.Cell, base.Map);
|
||||
}
|
||||
}
|
||||
this.ticksLeft--;
|
||||
if (this.ticksLeft <= 0)
|
||||
{
|
||||
base.ReadyForNextToil();
|
||||
TaleRecorder.RecordTale(Licentia.TaleDefs.VomitedCum, new object[]
|
||||
{
|
||||
this.pawn
|
||||
});
|
||||
}
|
||||
};
|
||||
toil.defaultCompleteMode = ToilCompleteMode.Never;
|
||||
toil.WithEffect(EffecterDefOf.Vomit, TargetIndex.A, new Color(100f, 100f, 100f, 0.5f));
|
||||
toil.PlaySustainerOrSound(() => SoundDefOf.Vomit, 1f);
|
||||
yield return toil;
|
||||
yield break;
|
||||
}
|
||||
|
||||
private void SpawnCum(Pawn pawn, IntVec3 cell, Map map)
|
||||
{
|
||||
ThingDef cumDef = DefDatabase<ThingDef>.GetNamed("GatheredCum", true);
|
||||
|
||||
Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_filled_living_cumbucket);
|
||||
if (hediff == null)
|
||||
{
|
||||
ModLog.Warning($"{pawn} has the JobDriver_ProcessCumbucket but does not have the Hediff for filled cumbucket.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Case 1: "Normal Severity", just puke out a bit of cum here and there.
|
||||
if (hediff.Severity <= 10)
|
||||
{
|
||||
Thing cum = ThingMaker.MakeThing(cumDef);
|
||||
cum.Position = cell;
|
||||
int stacks = Math.Max(1, (int)(hediff.Severity * 1.5));
|
||||
stacks = Math.Min(stacks, 75); // 75 is the default max stacksize ...
|
||||
cum.stackCount = stacks;
|
||||
cum.SpawnSetup(map, false);
|
||||
hediff.Severity -= (stacks / 50);
|
||||
} else
|
||||
// Case 2: Reserviour mode, put out a lot of cum at once but less often.
|
||||
{
|
||||
int stacks = Math.Max(1, (int)(hediff.Severity * 1.5));
|
||||
|
||||
while (stacks > 0)
|
||||
{
|
||||
Thing cum = ThingMaker.MakeThing(cumDef);
|
||||
cum.Position = cell;
|
||||
var curStacks = Math.Min(stacks, 75); // 75 is the default max stacksize ...
|
||||
cum.stackCount = stacks;
|
||||
cum.SpawnSetup(map, false);
|
||||
hediff.Severity -= (curStacks / 50);
|
||||
stacks -= curStacks;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int ticksLeft;
|
||||
|
||||
public string sourceName;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
using HarmonyLib;
|
||||
using rjw;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Verse;
|
||||
using static System.Net.Mime.MediaTypeNames;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
|
||||
[HarmonyPatch(typeof(SexUtility), nameof(SexUtility.SatisfyPersonal))]
|
||||
public class Patch_LivingCumbucket_StackHediff
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// This is the amount of fluid required if the pawn has a bodysize of 1, to reach a severity in the hediff of 1.
|
||||
/// The hediff can still be increased over 1.0.
|
||||
/// </summary>
|
||||
const float fluid_amount_required_for_hediff_severity_ = 100.0f;
|
||||
|
||||
public static void Postfix(SexProps props)
|
||||
{
|
||||
if (!ModsConfig.IsActive("rjw.sexperience"))
|
||||
return;
|
||||
|
||||
// ShortCuts: Exit Early if Pawn or Partner are null (can happen with Masturbation or other nieche-cases)
|
||||
if (props == null || props.pawn == null || !props.hasPartner())
|
||||
return;
|
||||
|
||||
Pawn pawnA = props.pawn;
|
||||
Pawn pawnB = props.partner;
|
||||
|
||||
if (pawnA.genes != null && pawnA.genes.HasActiveGene(GeneDefOf.rjw_genes_living_cumbucket) && CumUtility.GetTotalFluidAmount(pawnB) > 0)
|
||||
{
|
||||
ProcessLivingCumbucket(pawnA, CumUtility.GetTotalFluidAmount(pawnB));
|
||||
}
|
||||
|
||||
if (pawnB.genes != null && pawnB.genes.HasActiveGene(GeneDefOf.rjw_genes_living_cumbucket) && CumUtility.GetTotalFluidAmount(pawnA) > 0)
|
||||
{
|
||||
ProcessLivingCumbucket(pawnB, CumUtility.GetTotalFluidAmount(pawnA));
|
||||
}
|
||||
}
|
||||
|
||||
public static void ProcessLivingCumbucket(Pawn pawn, float cumamount)
|
||||
{
|
||||
float bodysize = pawn.BodySize;
|
||||
float result_severity_increase = cumamount / (fluid_amount_required_for_hediff_severity_ * bodysize);
|
||||
|
||||
|
||||
Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_filled_living_cumbucket);
|
||||
if (hediff == null)
|
||||
{
|
||||
hediff = pawn.health.GetOrAddHediff(HediffDefOf.rjw_genes_filled_living_cumbucket);
|
||||
hediff.Severity = 0.01f;
|
||||
}
|
||||
|
||||
hediff.Severity += result_severity_increase;
|
||||
ModLog.Debug($"Pumping the living cumbucket {pawn} (Bodysize {bodysize}) with {cumamount} cum, resulting in severity {hediff.Severity} (+{result_severity_increase})");
|
||||
}
|
||||
}
|
||||
}
|
18
Source/Genes/Diseases/Defs/GeneticDiseaseExtension.cs
Normal file
|
@ -0,0 +1,18 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
public class GeneticDiseaseExtension : DefModExtension
|
||||
{
|
||||
/// <summary>
|
||||
/// The chance for this gene to spread upon (finished) sex.
|
||||
/// </summary>
|
||||
public float infectionChance;
|
||||
}
|
||||
|
||||
}
|