mirror of
https://github.com/vegapnk/RJW-Genes.git
synced 2024-08-15 00:23:31 +00:00
Compare commits
6 commits
ebf7efb730
...
75950b6864
Author | SHA1 | Date | |
---|---|---|---|
|
75950b6864 | ||
|
3f6904aa8e | ||
|
980458e4fa | ||
|
991edfdff0 | ||
|
832c3aa0b8 | ||
|
7339bd41a1 |
16 changed files with 265 additions and 194 deletions
22
CHANGELOG.md
22
CHANGELOG.md
|
@ -22,6 +22,8 @@ Most of the genes so far were positive or neutral,
|
||||||
so I got some fair requests to introduce negative genes to keep xenotypes balanced.
|
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?
|
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**:
|
**Genetic Infectors**:
|
||||||
|
|
||||||
These Genes can apply a genetic disease, but are not genetic diseases themselves.
|
These Genes can apply a genetic disease, but are not genetic diseases themselves.
|
||||||
|
@ -80,12 +82,20 @@ but they are meant mostly to have infectors immune against their own diseases.
|
||||||
- Gene: Hardwired Progenity. Pawns with this get a malus on having no-children, and bonus on having a lot.
|
- 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.
|
- 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.
|
- (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.
|
||||||
- Pawns will have negative thoughts about pawns with more genetic diseases than themselves.
|
- 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
|
- 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:**
|
**Fixes:**
|
||||||
|
|
||||||
- Fixed an Issue where pawns would always get the Pheromone social boost, unless they had the pheromone (#113)
|
- 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)
|
||||||
|
|
||||||
**Internal:**
|
**Internal:**
|
||||||
|
|
||||||
|
@ -93,6 +103,18 @@ but they are meant mostly to have infectors immune against their own diseases.
|
||||||
- Introduced a `ModLog.Debug` Function that checks for the settings before printing - trying to spread it over the whole project.
|
- 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.
|
- Removed TODO File. I have enough to do.
|
||||||
|
|
||||||
|
**Notes:**
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
# 2.1.0 (27-06-2024)
|
# 2.1.0 (27-06-2024)
|
||||||
|
|
||||||
**Additions**:
|
**Additions**:
|
||||||
|
|
|
@ -153,15 +153,4 @@
|
||||||
<biostatMet>0</biostatMet>
|
<biostatMet>0</biostatMet>
|
||||||
</GeneDef>
|
</GeneDef>
|
||||||
|
|
||||||
<GeneDef ParentName="BreedingBase">
|
|
||||||
<defName>rjw_genes_pregnancy_overwrite</defName>
|
|
||||||
<label>Sperm Displacement</label>
|
|
||||||
<description>Carriers of this gene can 'overwrite' an existing pregnancy, keeping the progress but effectively replacing the father.</description>
|
|
||||||
<iconPath>Genes/Icons/RJW_Genes_PheromoneSpit</iconPath>
|
|
||||||
<displayOrderInCategory>75</displayOrderInCategory>
|
|
||||||
|
|
||||||
<biostatCpx>4</biostatCpx>
|
|
||||||
<biostatMet>-2</biostatMet>
|
|
||||||
</GeneDef>
|
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
|
@ -21,10 +21,15 @@
|
||||||
<label>no cum</label>
|
<label>no cum</label>
|
||||||
<description>Males of these species have no fluid.</description>
|
<description>Males of these species have no fluid.</description>
|
||||||
<iconPath>Genes/Icons/No_Cum</iconPath>
|
<iconPath>Genes/Icons/No_Cum</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_NoCum</geneClass>
|
<geneClass>RJW_Genes.Gene_ChangeCumAmount</geneClass>
|
||||||
<displayOrderInCategory>533</displayOrderInCategory>
|
<displayOrderInCategory>533</displayOrderInCategory>
|
||||||
<biostatCpx>0</biostatCpx>
|
<biostatCpx>0</biostatCpx>
|
||||||
<biostatMet>1</biostatMet>
|
<biostatMet>1</biostatMet>
|
||||||
|
<modExtensions>
|
||||||
|
<li Class="RJW_Genes.MultiplierExtension">
|
||||||
|
<multiplier>0.0</multiplier>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
</GeneDef>
|
</GeneDef>
|
||||||
|
|
||||||
<GeneDef ParentName="GeneCumAmount">
|
<GeneDef ParentName="GeneCumAmount">
|
||||||
|
@ -32,10 +37,15 @@
|
||||||
<label>much cum</label>
|
<label>much cum</label>
|
||||||
<description>Males of this species produce a lot of fluid.</description>
|
<description>Males of this species produce a lot of fluid.</description>
|
||||||
<iconPath>Genes/Icons/Much_Cum</iconPath>
|
<iconPath>Genes/Icons/Much_Cum</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_MuchCum</geneClass>
|
<geneClass>RJW_Genes.Gene_ChangeCumAmount</geneClass>
|
||||||
<displayOrderInCategory>534</displayOrderInCategory>
|
<displayOrderInCategory>534</displayOrderInCategory>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
<biostatMet>-1</biostatMet>
|
<biostatMet>0</biostatMet>
|
||||||
|
<modExtensions>
|
||||||
|
<li Class="RJW_Genes.MultiplierExtension">
|
||||||
|
<multiplier>3.0</multiplier>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
</GeneDef>
|
</GeneDef>
|
||||||
|
|
||||||
<GeneDef ParentName="GeneCumAmount">
|
<GeneDef ParentName="GeneCumAmount">
|
||||||
|
@ -44,10 +54,15 @@
|
||||||
<description>Males of this species produce a whole lot of fluid. They are like fountains
|
<description>Males of this species produce a whole lot of fluid. They are like fountains
|
||||||
basically.</description>
|
basically.</description>
|
||||||
<iconPath>Genes/Icons/Very_Much_Cum</iconPath>
|
<iconPath>Genes/Icons/Very_Much_Cum</iconPath>
|
||||||
<geneClass>RJW_Genes.Gene_VeryMuchCum</geneClass>
|
<geneClass>RJW_Genes.Gene_ChangeCumAmount</geneClass>
|
||||||
<displayOrderInCategory>535</displayOrderInCategory>
|
<displayOrderInCategory>535</displayOrderInCategory>
|
||||||
<biostatCpx>1</biostatCpx>
|
<biostatCpx>1</biostatCpx>
|
||||||
<biostatMet>-2</biostatMet>
|
<biostatMet>-1</biostatMet>
|
||||||
|
<modExtensions>
|
||||||
|
<li Class="RJW_Genes.MultiplierExtension">
|
||||||
|
<multiplier>15.0</multiplier>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
</GeneDef>
|
</GeneDef>
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
|
@ -115,7 +115,6 @@
|
||||||
</li>
|
</li>
|
||||||
</forcedTraits>
|
</forcedTraits>
|
||||||
<exclusionTags>
|
<exclusionTags>
|
||||||
|
|
||||||
<li>rjw_genes_homosexuality_trait_giver</li>
|
<li>rjw_genes_homosexuality_trait_giver</li>
|
||||||
<li>rjw_genes_sexual_orientation</li>
|
<li>rjw_genes_sexual_orientation</li>
|
||||||
</exclusionTags>
|
</exclusionTags>
|
||||||
|
@ -144,7 +143,7 @@
|
||||||
</li>
|
</li>
|
||||||
</forcedTraits>
|
</forcedTraits>
|
||||||
<exclusionTags>
|
<exclusionTags>
|
||||||
<li>rjw_genes_sexual_orientation</li>
|
<li>rjw_genes_sexual_orientation</li>
|
||||||
<li>rjw_genes_bisexuality_trait_giver</li>
|
<li>rjw_genes_bisexuality_trait_giver</li>
|
||||||
</exclusionTags>
|
</exclusionTags>
|
||||||
|
|
||||||
|
@ -207,4 +206,28 @@
|
||||||
</exclusionTags>
|
</exclusionTags>
|
||||||
</GeneDef>
|
</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/RJW_Genes_PheromoneSpit</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>
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
|
@ -75,6 +75,7 @@
|
||||||
</doubleXenotypeChances>
|
</doubleXenotypeChances>
|
||||||
<genes>
|
<genes>
|
||||||
<li>rjw_genes_hypersexual</li>
|
<li>rjw_genes_hypersexual</li>
|
||||||
|
<li>rjw_genes_bisexual</li>
|
||||||
<li>rjw_genes_male_only</li>
|
<li>rjw_genes_male_only</li>
|
||||||
<li>rjw_genes_lifeforce</li>
|
<li>rjw_genes_lifeforce</li>
|
||||||
<li>rjw_genes_lifeforce_drain</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>
|
<Defs>
|
||||||
|
|
||||||
<HediffDef>
|
<HediffDef>
|
||||||
<defName>rjw_genes_fertilin_lost</defName>
|
<defName>rjw_genes_fertilin_lost</defName>
|
||||||
<hediffClass>Hediff_HemogenCraving</hediffClass>
|
<hediffClass>Hediff_HemogenCraving</hediffClass>
|
||||||
|
@ -19,12 +19,13 @@
|
||||||
</li>
|
</li>
|
||||||
</stages>
|
</stages>
|
||||||
</HediffDef>
|
</HediffDef>
|
||||||
|
|
||||||
<HediffDef>
|
<HediffDef>
|
||||||
<defName>rjw_genes_succubus_drained</defName>
|
<defName>rjw_genes_succubus_drained</defName>
|
||||||
<hediffClass>HediffWithComps</hediffClass>
|
<hediffClass>HediffWithComps</hediffClass>
|
||||||
<label>Drained</label>
|
<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>
|
<defaultLabelColor>(1,0,0.5)</defaultLabelColor>
|
||||||
<maxSeverity>1.0</maxSeverity>
|
<maxSeverity>1.0</maxSeverity>
|
||||||
<initialSeverity>1.0</initialSeverity>
|
<initialSeverity>1.0</initialSeverity>
|
||||||
|
@ -74,13 +75,13 @@
|
||||||
<statOffsets>
|
<statOffsets>
|
||||||
<WorkSpeedGlobal>-0.2</WorkSpeedGlobal>
|
<WorkSpeedGlobal>-0.2</WorkSpeedGlobal>
|
||||||
</statOffsets>
|
</statOffsets>
|
||||||
<vomitMtbDays>0.4</vomitMtbDays>
|
<vomitMtbDays>0.4</vomitMtbDays>
|
||||||
<hungerRateFactorOffset>0.1</hungerRateFactorOffset>
|
<hungerRateFactorOffset>0.1</hungerRateFactorOffset>
|
||||||
<restFallFactorOffset>0.35</restFallFactorOffset>
|
<restFallFactorOffset>0.35</restFallFactorOffset>
|
||||||
</li>
|
</li>
|
||||||
</stages>
|
</stages>
|
||||||
</HediffDef>
|
</HediffDef>
|
||||||
|
|
||||||
<HediffDef>
|
<HediffDef>
|
||||||
<defName>rjw_genes_fertilin_craving</defName>
|
<defName>rjw_genes_fertilin_craving</defName>
|
||||||
<label>fertilin craving</label>
|
<label>fertilin craving</label>
|
||||||
|
@ -90,77 +91,78 @@
|
||||||
<maxSeverity>1.0</maxSeverity>
|
<maxSeverity>1.0</maxSeverity>
|
||||||
<initialSeverity>0.01</initialSeverity>
|
<initialSeverity>0.01</initialSeverity>
|
||||||
<stages>
|
<stages>
|
||||||
<li>
|
<li>
|
||||||
<label>minor</label>
|
<label>minor</label>
|
||||||
<painOffset>0.05</painOffset>
|
<painOffset>0.05</painOffset>
|
||||||
<capMods>
|
<capMods>
|
||||||
<li>
|
<li>
|
||||||
<capacity>Consciousness</capacity>
|
<capacity>Consciousness</capacity>
|
||||||
<setMax>0.9</setMax>
|
<setMax>0.9</setMax>
|
||||||
</li>
|
</li>
|
||||||
</capMods>
|
</capMods>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label>moderate</label>
|
<label>moderate</label>
|
||||||
<minSeverity>0.35</minSeverity>
|
<minSeverity>0.35</minSeverity>
|
||||||
<painOffset>0.1</painOffset>
|
<painOffset>0.1</painOffset>
|
||||||
<capMods>
|
<capMods>
|
||||||
<li>
|
<li>
|
||||||
<capacity>Consciousness</capacity>
|
<capacity>Consciousness</capacity>
|
||||||
<setMax>0.8</setMax>
|
<setMax>0.8</setMax>
|
||||||
</li>
|
</li>
|
||||||
</capMods>
|
</capMods>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label>major</label>
|
<label>major</label>
|
||||||
<minSeverity>0.7</minSeverity>
|
<minSeverity>0.7</minSeverity>
|
||||||
<painOffset>0.15</painOffset>
|
<painOffset>0.15</painOffset>
|
||||||
<capMods>
|
<capMods>
|
||||||
<li>
|
<li>
|
||||||
<capacity>Consciousness</capacity>
|
<capacity>Consciousness</capacity>
|
||||||
<setMax>0.5</setMax>
|
<setMax>0.5</setMax>
|
||||||
</li>
|
</li>
|
||||||
</capMods>
|
</capMods>
|
||||||
</li>
|
</li>
|
||||||
</stages>
|
</stages>
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="RJW_Genes.HediffCompProperties_SeverityFromFertilin">
|
<li Class="RJW_Genes.HediffCompProperties_SeverityFromFertilin">
|
||||||
<severityPerHourEmpty>0.05</severityPerHourEmpty>
|
<severityPerHourEmpty>0.05</severityPerHourEmpty>
|
||||||
<severityPerHourHemogen>-0.1</severityPerHourHemogen>
|
<severityPerHourHemogen>-0.1</severityPerHourHemogen>
|
||||||
</li>
|
</li>
|
||||||
</comps>
|
</comps>
|
||||||
</HediffDef>
|
</HediffDef>
|
||||||
|
|
||||||
<HediffDef ParentName="RoleStatBuff">
|
<HediffDef>
|
||||||
<defName>rjw_genes_naked_prowess</defName>
|
<defName>rjw_genes_naked_prowess</defName>
|
||||||
<label>naked prowss</label>
|
<defaultLabelColor>(0.52, 1, 0.95)</defaultLabelColor>
|
||||||
<description>Driven by fertilin, this person has greatly increased strength and resilience.</description>
|
<label>naked prowss</label>
|
||||||
<hediffClass>HediffWithComps</hediffClass>
|
<description>Driven by fertilin, this person has greatly increased strength and resilience.</description>
|
||||||
<stages>
|
<hediffClass>HediffWithComps</hediffClass>
|
||||||
<li>
|
<stages>
|
||||||
<!--Maybe a bit to much, but they are supposed to be strong-->
|
<li>
|
||||||
<statOffsets>
|
<!--Maybe
|
||||||
<ArmorRating_Sharp>0.5</ArmorRating_Sharp>
|
a bit to much, but they are supposed to be strong-->
|
||||||
<ArmorRating_Blunt>0.5</ArmorRating_Blunt>
|
<statOffsets>
|
||||||
<ArmorRating_Heat>0.5</ArmorRating_Heat>
|
<ArmorRating_Sharp>0.5</ArmorRating_Sharp>
|
||||||
<!-- <Insulation_Cold>10</Insulation_Cold>
|
<ArmorRating_Blunt>0.5</ArmorRating_Blunt>
|
||||||
<Insulation_Heat>10</Insulation_Heat> -->
|
<ArmorRating_Heat>0.5</ArmorRating_Heat>
|
||||||
</statOffsets>
|
</statOffsets>
|
||||||
<statFactors>
|
<statFactors>
|
||||||
<IncomingDamageFactor>0.5</IncomingDamageFactor>
|
<IncomingDamageFactor>0.5</IncomingDamageFactor>
|
||||||
<MeleeDamageFactor>1.5</MeleeDamageFactor>
|
<MeleeDamageFactor>1.5</MeleeDamageFactor>
|
||||||
</statFactors>
|
</statFactors>
|
||||||
</li>
|
</li>
|
||||||
</stages>
|
</stages>
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="HediffCompProperties_Disappears">
|
<li Class="HediffCompProperties_Disappears">
|
||||||
<showRemainingTime>True</showRemainingTime>
|
<showRemainingTime>True</showRemainingTime>
|
||||||
<disappearsAfterTicks>5000</disappearsAfterTicks> <!-- 2 hours -->
|
<disappearsAfterTicks>5000</disappearsAfterTicks> <!-- 2 hours -->
|
||||||
</li>
|
</li>
|
||||||
<li Class="HediffCompProperties_DisappearsOnDeath"/>
|
<li Class="HediffCompProperties_DisappearsOnDeath" />
|
||||||
<!--TODO: Make hediff disappear if pawn is nolonger naked-->
|
<!--TODO:
|
||||||
</comps>
|
Make hediff disappear if pawn is nolonger naked-->
|
||||||
<isBad>false</isBad>
|
</comps>
|
||||||
</HediffDef>
|
<isBad>false</isBad>
|
||||||
|
</HediffDef>
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
|
@ -13,7 +13,7 @@
|
||||||
<li>
|
<li>
|
||||||
<minSeverity>0</minSeverity>
|
<minSeverity>0</minSeverity>
|
||||||
<statOffsets>
|
<statOffsets>
|
||||||
<SlaveSuppressionOffset>0.40</SlaveSuppressionOffset>
|
<SlaveSuppressionOffset MayRequire="Ideology">0.40</SlaveSuppressionOffset>
|
||||||
<Vulnerability>3.0</Vulnerability>
|
<Vulnerability>3.0</Vulnerability>
|
||||||
</statOffsets>
|
</statOffsets>
|
||||||
<capMods>
|
<capMods>
|
||||||
|
|
|
@ -10,4 +10,9 @@
|
||||||
<label>Youthed a pawn with youth fountain</label>
|
<label>Youthed a pawn with youth fountain</label>
|
||||||
</HistoryEventDef>
|
</HistoryEventDef>
|
||||||
|
|
||||||
|
<HistoryEventDef>
|
||||||
|
<defName>rjw_genes_GoodwillChangedReason_OverwritePregnancy</defName>
|
||||||
|
<label>Replaced a pregnancy</label>
|
||||||
|
</HistoryEventDef>
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
36
Common/Patches/Xenotypes/PatchImphileeXeno.xml
Normal file
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>
|
14
Source/Common/Defs/MultiplierExtension.cs
Normal file
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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -34,8 +34,23 @@ namespace RJW_Genes
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Get total fluidamount a person has.
|
/// <summary>
|
||||||
public static float GetTotalFluidAmount(Pawn pawn, float multiplier = 1f)
|
/// 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 partBPR = Genital_Helper.get_genitalsBPR(pawn);
|
||||||
var parts = Genital_Helper.get_PartsHediffList(pawn, partBPR);
|
var parts = Genital_Helper.get_PartsHediffList(pawn, partBPR);
|
||||||
|
|
|
@ -1,36 +1,38 @@
|
||||||
namespace RJW_Genes
|
namespace RJW_Genes
|
||||||
{
|
{
|
||||||
public class Gene_MuchCum : RJW_Gene
|
public class Gene_ChangeCumAmount : RJW_Gene
|
||||||
{
|
{
|
||||||
bool has_been_fired = false;
|
bool has_been_fired = false;
|
||||||
|
|
||||||
float multiplier_much_cum = 3f;
|
|
||||||
|
|
||||||
public override void PostMake()
|
public override void PostMake()
|
||||||
{
|
{
|
||||||
base.PostMake();
|
base.PostMake();
|
||||||
|
|
||||||
CumUtility.MultiplyFluidAmountBy(pawn, multiplier_much_cum);
|
float multipier = CumUtility.LookupCumMultiplier(this);
|
||||||
|
CumUtility.MultiplyFluidAmountBy(pawn, multipier);
|
||||||
has_been_fired = true;
|
has_been_fired = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void PostAdd()
|
public override void PostAdd()
|
||||||
{
|
{
|
||||||
base.PostAdd();
|
base.PostAdd();
|
||||||
if (!has_been_fired) {
|
if (!has_been_fired)
|
||||||
CumUtility.MultiplyFluidAmountBy(pawn, multiplier_much_cum);
|
{
|
||||||
|
float multipier = CumUtility.LookupCumMultiplier(this);
|
||||||
|
CumUtility.MultiplyFluidAmountBy(pawn, multipier);
|
||||||
has_been_fired = true;
|
has_been_fired = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public override void PostRemove()
|
public override void PostRemove()
|
||||||
{
|
{
|
||||||
base.PostAdd();
|
base.PostAdd();
|
||||||
|
|
||||||
if (has_been_fired)
|
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;
|
has_been_fired = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -40,8 +40,6 @@ namespace RJW_Genes
|
||||||
if (!pawn.IsPregnant() && !partner.IsPregnant())
|
if (!pawn.IsPregnant() && !partner.IsPregnant())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ModLog.Debug("Firing Pregnancy Overwrite Patch - Passed Simple NullChecks");
|
|
||||||
|
|
||||||
if (pawn.IsPregnant()
|
if (pawn.IsPregnant()
|
||||||
&& GeneUtility.HasGeneNullCheck(partner, GeneDefOf.rjw_genes_pregnancy_overwrite))
|
&& GeneUtility.HasGeneNullCheck(partner, GeneDefOf.rjw_genes_pregnancy_overwrite))
|
||||||
TryReplacePregnancy(partner, pawn);
|
TryReplacePregnancy(partner, pawn);
|
||||||
|
@ -51,29 +49,52 @@ namespace RJW_Genes
|
||||||
TryReplacePregnancy(pawn, partner);
|
TryReplacePregnancy(pawn, partner);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Tries to replace an existing pregnancy with a new pregnancy at the same gestation process.
|
||||||
|
/// The new pregnancy will have the same mother, but a new father and a new set of genes.
|
||||||
|
///
|
||||||
|
/// There is a check for pregnancy that checks for the general fertility (using Vanilla Functions) and multiplies it with a xml-configurable chance.
|
||||||
|
/// If anything is replaced, there will be a faction penalty applied.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="replacer"></param>
|
||||||
|
/// <param name="pregnant"></param>
|
||||||
public static void TryReplacePregnancy(Pawn replacer, Pawn pregnant)
|
public static void TryReplacePregnancy(Pawn replacer, Pawn pregnant)
|
||||||
{
|
{
|
||||||
// TODO: This mostly works, but needs some more checks.
|
|
||||||
// - Check if there is a pregnancy occurring
|
|
||||||
// - Check for Disease Immunity
|
|
||||||
// - Add Faction Penalties
|
|
||||||
|
|
||||||
ModLog.Debug($"Firing Pregnancy Overwrite for {replacer} and {pregnant}");
|
|
||||||
|
|
||||||
// The "CanImpregnate" does not work as I want, as the pawn is already pregnant, so it wont allow to be pregnated.
|
|
||||||
//PregnancyHelper.CanImpregnate(pawn, partner, props.sexType)
|
|
||||||
|
|
||||||
|
// DevNote:
|
||||||
|
// There are some issues with just checking PregnancyUtility.PregnancyChanceForPartners or rjw.PregnancyHelper.CanImpregnate
|
||||||
|
// Both do give 0.0 chance when the pawn is already pregnant, which does not help me :/
|
||||||
Hediff pregnancyHediff = PregnancyUtility.GetPregnancyHediff(pregnant);
|
Hediff pregnancyHediff = PregnancyUtility.GetPregnancyHediff(pregnant);
|
||||||
if (pregnancyHediff == null)
|
if (pregnancyHediff == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
float gestationProgress = pregnancyHediff.Severity;
|
if (DiseaseHelper.IsImmuneAgainstGeneticDisease(pregnant, GeneDefOf.rjw_genes_pregnancy_overwrite))
|
||||||
|
{
|
||||||
|
ModLog.Debug($"{pregnant} is immune against rjw_genes_pregnancy_overwrite from {replacer}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
PregnancyUtility.ForceEndPregnancy(pregnant);
|
ChanceExtension chanceExt = GeneDefOf.rjw_genes_pregnancy_overwrite.GetModExtension<ChanceExtension>();
|
||||||
|
float chance = chanceExt != null ? chanceExt.chance : 0.25f;
|
||||||
|
float replacerFert = replacer.GetStatValueForPawn(StatDefOf.Fertility, replacer);
|
||||||
|
chance *= replacerFert ;
|
||||||
|
double roll = (new Random()).NextDouble();
|
||||||
|
if (roll < chance)
|
||||||
|
{
|
||||||
|
ModLog.Debug($"Pregnancy-Overwrite for {replacer} and {pregnant}.");
|
||||||
|
float gestationProgress = pregnancyHediff.Severity;
|
||||||
|
|
||||||
PregnancyHelper.StartVanillaPregnancy(pregnant, replacer);
|
PregnancyUtility.ForceEndPregnancy(pregnant);
|
||||||
Hediff replacementPregnancyHediff = PregnancyUtility.GetPregnancyHediff(pregnant);
|
|
||||||
replacementPregnancyHediff.Severity = gestationProgress;
|
PregnancyHelper.StartVanillaPregnancy(pregnant, replacer);
|
||||||
|
Hediff replacementPregnancyHediff = PregnancyUtility.GetPregnancyHediff(pregnant);
|
||||||
|
replacementPregnancyHediff.Severity = gestationProgress;
|
||||||
|
|
||||||
|
FactionUtility.HandleFactionGoodWillPenalties(replacer, pregnant, "rjw_genes_GoodwillChangedReason_OverwritePregnancy", FACTION_GOODWILL_CHANGE);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
ModLog.Debug($"Did not Pregnancy-Overwrite for {replacer} and {pregnant}. Failed: Rolled {roll} <({chanceExt.chance}[XML-Chance] x {replacerFert} [Fert:{replacer}])");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,6 +59,7 @@
|
||||||
<Compile Include="Common\Defs\ChanceExtension.cs" />
|
<Compile Include="Common\Defs\ChanceExtension.cs" />
|
||||||
<Compile Include="Common\Defs\DistanceExtension.cs" />
|
<Compile Include="Common\Defs\DistanceExtension.cs" />
|
||||||
<Compile Include="Common\Defs\ModExtensionHelper.cs" />
|
<Compile Include="Common\Defs\ModExtensionHelper.cs" />
|
||||||
|
<Compile Include="Common\Defs\MultiplierExtension.cs" />
|
||||||
<Compile Include="Common\Defs\TickBasedChanceExtension.cs" />
|
<Compile Include="Common\Defs\TickBasedChanceExtension.cs" />
|
||||||
<Compile Include="Common\Either.cs" />
|
<Compile Include="Common\Either.cs" />
|
||||||
<Compile Include="Common\Helpers\FactionUtility.cs" />
|
<Compile Include="Common\Helpers\FactionUtility.cs" />
|
||||||
|
@ -105,9 +106,7 @@
|
||||||
<Compile Include="Genes\Gender\Genes\Gene_GenderFluid.cs" />
|
<Compile Include="Genes\Gender\Genes\Gene_GenderFluid.cs" />
|
||||||
<Compile Include="Genes\GenitaliaSize\Gene_EvergrowingGenitalia.cs" />
|
<Compile Include="Genes\GenitaliaSize\Gene_EvergrowingGenitalia.cs" />
|
||||||
<Compile Include="Genes\Cum\CumUtility.cs" />
|
<Compile Include="Genes\Cum\CumUtility.cs" />
|
||||||
<Compile Include="Genes\Cum\Gene_VeryMuchCum.cs" />
|
<Compile Include="Genes\Cum\Gene_ChangeCumAmount.cs" />
|
||||||
<Compile Include="Genes\Cum\Gene_MuchCum.cs" />
|
|
||||||
<Compile Include="Genes\Cum\Gene_NoCum.cs" />
|
|
||||||
<Compile Include="Genes\Cum\Patch_TransferNutrition.cs" />
|
<Compile Include="Genes\Cum\Patch_TransferNutrition.cs" />
|
||||||
<Compile Include="Genes\Damage\Gene_Unbreakable.cs" />
|
<Compile Include="Genes\Damage\Gene_Unbreakable.cs" />
|
||||||
<Compile Include="Genes\Cum\Patch_CumflationImmunity.cs" />
|
<Compile Include="Genes\Cum\Patch_CumflationImmunity.cs" />
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue