Merge branch 'main' of https://github.com/Jaaldabaoth/RJW-Genes into generalised-genital-genes
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
<ModMetaData>
 | 
			
		||||
	<name>RJW Genes</name>
 | 
			
		||||
	<author>Vegapnk</author>
 | 
			
		||||
    <packageId>Vegapnk.rjw.genes</packageId>
 | 
			
		||||
	<author>jaaldabaoth</author>
 | 
			
		||||
    <packageId>jaaldabaoth.rjw.genes</packageId>
 | 
			
		||||
	<supportedVersions>
 | 
			
		||||
		<li>1.5</li>
 | 
			
		||||
	</supportedVersions>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -146,13 +146,11 @@
 | 
			
		|||
      <li>BreastAmount</li>
 | 
			
		||||
    </exclusionTags>
 | 
			
		||||
  </GeneDef>
 | 
			
		||||
  <!-- 
 | 
			
		||||
  See Comment in `RJW_Genes.Gene_UdderBreasts` why this is currently commented out.
 | 
			
		||||
 | 
			
		||||
  <GeneDef ParentName="GeneExtraGenitaliaBase">
 | 
			
		||||
    <defName>rjw_genes_udder</defName>
 | 
			
		||||
    <label>udder</label>
 | 
			
		||||
    <description>Carriers of this gene have udders instead of breasts.</description>
 | 
			
		||||
    <description>Carriers of this gene have udders and breasts.</description>
 | 
			
		||||
    <iconPath>Things/Mote/Heart</iconPath>
 | 
			
		||||
    <geneClass>RJW_Genes.Gene_UdderBreasts</geneClass>
 | 
			
		||||
    <displayOrderInCategory>711</displayOrderInCategory>
 | 
			
		||||
| 
						 | 
				
			
			@ -160,5 +158,5 @@
 | 
			
		|||
      <li>BreastAmount</li>
 | 
			
		||||
    </exclusionTags>
 | 
			
		||||
  </GeneDef>
 | 
			
		||||
  -->
 | 
			
		||||
 | 
			
		||||
</Defs>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,7 +107,7 @@
 | 
			
		|||
    <defName>rjw_genes_demonicT_genitalia</defName>
 | 
			
		||||
    <label>demonic tentacle genitalia</label>
 | 
			
		||||
    <description>Carriers of this gene have demonic tentacle genitalia.</description>
 | 
			
		||||
    <iconPath>Genes/Icons/Placeholder</iconPath>
 | 
			
		||||
    <iconPath>Genes/Icons/Genitalia_tentacle_icon</iconPath>
 | 
			
		||||
    <modExtensions>
 | 
			
		||||
      <li Class="RJW_Genes.GenitaliaTypeExtension">
 | 
			
		||||
        <penis>DemonTentaclePenis</penis>
 | 
			
		||||
| 
						 | 
				
			
			@ -122,7 +122,7 @@
 | 
			
		|||
    <defName>rjw_genes_crocodilian_genitalia</defName>
 | 
			
		||||
    <label>crocodilian genitalia</label>
 | 
			
		||||
    <description>Carriers of this gene have crocodilian genitalia.</description>
 | 
			
		||||
    <iconPath>Genes/Icons/Placeholder</iconPath>
 | 
			
		||||
    <iconPath>Genes/Icons/Genitalia_croc_icon</iconPath>
 | 
			
		||||
    <modExtensions>
 | 
			
		||||
      <li Class="RJW_Genes.GenitaliaTypeExtension">
 | 
			
		||||
        <penis>CrocodilianPenis</penis>
 | 
			
		||||
| 
						 | 
				
			
			@ -137,7 +137,7 @@
 | 
			
		|||
    <defName>rjw_genes_racoon_genitalia</defName>
 | 
			
		||||
    <label>racoon genitalia</label>
 | 
			
		||||
    <description>Carriers of this gene have racoon genitalia.</description>
 | 
			
		||||
    <iconPath>Genes/Icons/Placeholder</iconPath>
 | 
			
		||||
    <iconPath>Genes/Icons/Genitalia_racoon_icon</iconPath>
 | 
			
		||||
    <modExtensions>
 | 
			
		||||
      <li Class="RJW_Genes.GenitaliaTypeExtension">
 | 
			
		||||
        <penis>RaccoonPenis</penis>
 | 
			
		||||
| 
						 | 
				
			
			@ -152,7 +152,7 @@
 | 
			
		|||
    <defName>rjw_genes_reptilian_genitalia</defName>
 | 
			
		||||
    <label>reptilian genitalia</label>
 | 
			
		||||
    <description>Carriers of this gene have reptilian genitalia.</description>
 | 
			
		||||
    <iconPath>Genes/Icons/Placeholder</iconPath>
 | 
			
		||||
    <iconPath>Genes/Icons/Genitalia_hemi_icon</iconPath>
 | 
			
		||||
    <modExtensions>
 | 
			
		||||
      <li Class="RJW_Genes.GenitaliaTypeExtension">
 | 
			
		||||
        <penis>HemiPenis</penis>
 | 
			
		||||
| 
						 | 
				
			
			@ -163,6 +163,87 @@
 | 
			
		|||
    <displayOrderInCategory>807</displayOrderInCategory>
 | 
			
		||||
  </GeneDef>
 | 
			
		||||
  
 | 
			
		||||
  
 | 
			
		||||
  
 | 
			
		||||
  
 | 
			
		||||
  
 | 
			
		||||
  <GeneDef ParentName="GeneGenitalTypeBase">
 | 
			
		||||
    <defName>rjw_genes_Ghost_genitalia</defName>
 | 
			
		||||
    <label>ghost genitalia</label>
 | 
			
		||||
    <description>Carriers of this gene have ghost genitalia.</description>
 | 
			
		||||
    <iconPath>Genes/Icons/Genitalia_ghost_icon</iconPath>
 | 
			
		||||
    <geneClass>RJW_Genes.Gene_GhostGenitalia</geneClass>
 | 
			
		||||
    <displayOrderInCategory>807</displayOrderInCategory>
 | 
			
		||||
  </GeneDef>
 | 
			
		||||
  
 | 
			
		||||
  <GeneDef ParentName="GeneGenitalTypeBase">
 | 
			
		||||
    <defName>rjw_genes_Golem_genitalia</defName>
 | 
			
		||||
    <label>golem genitalia</label>
 | 
			
		||||
    <description>Carriers of this gene have rocky golem genitalia.</description>
 | 
			
		||||
    <iconPath>Genes/Icons/penis_rock_icon</iconPath>
 | 
			
		||||
    <geneClass>RJW_Genes.Gene_GolemGenitalia</geneClass>
 | 
			
		||||
    <displayOrderInCategory>807</displayOrderInCategory>
 | 
			
		||||
  </GeneDef>  
 | 
			
		||||
 
 | 
			
		||||
   <GeneDef ParentName="GeneGenitalTypeBase">
 | 
			
		||||
    <defName>rjw_genes_Marine_genitalia</defName>
 | 
			
		||||
    <label>marine genitalia</label>
 | 
			
		||||
    <description>Carriers of this gene have marine mammal like genitalia.</description>
 | 
			
		||||
    <iconPath>Genes/Icons/Genitalia_marine_icon</iconPath>
 | 
			
		||||
    <geneClass>RJW_Genes.Gene_MarineGenitalia</geneClass>
 | 
			
		||||
    <displayOrderInCategory>807</displayOrderInCategory>
 | 
			
		||||
  </GeneDef>  
 | 
			
		||||
 | 
			
		||||
  <GeneDef ParentName="GeneGenitalTypeBase">
 | 
			
		||||
    <defName>rjw_genes_Necro_genitalia</defName>
 | 
			
		||||
    <label>undead genitalia</label>
 | 
			
		||||
    <description>Carriers of this gene have necrotic undead genitalia.</description>
 | 
			
		||||
    <iconPath>Genes/Icons/Genitalia_necro_icon</iconPath>
 | 
			
		||||
    <geneClass>RJW_Genes.Gene_NecroGenitalia</geneClass>
 | 
			
		||||
    <displayOrderInCategory>807</displayOrderInCategory>
 | 
			
		||||
  </GeneDef>  
 | 
			
		||||
  
 | 
			
		||||
  <GeneDef ParentName="GeneGenitalTypeBase">
 | 
			
		||||
    <defName>rjw_genes_Needle_genitalia</defName>
 | 
			
		||||
    <label>needle genitalia</label>
 | 
			
		||||
    <description>Carriers of this gene have marine very thin genitalia.</description>
 | 
			
		||||
    <iconPath>Genes/Icons/Genitalia_thin_icon</iconPath>
 | 
			
		||||
    <geneClass>RJW_Genes.Gene_NeedleGenitalia</geneClass>
 | 
			
		||||
    <displayOrderInCategory>807</displayOrderInCategory>
 | 
			
		||||
  </GeneDef>  
 | 
			
		||||
 | 
			
		||||
  <GeneDef ParentName="GeneGenitalTypeBase">
 | 
			
		||||
    <defName>rjw_genes_Orc_genitalia</defName>
 | 
			
		||||
    <label>orc genitalia</label>
 | 
			
		||||
    <description>Carriers of this gene have orc genitalia.</description>
 | 
			
		||||
    <iconPath>Genes/Icons/Genitalia_orc_icon</iconPath>
 | 
			
		||||
    <geneClass>RJW_Genes.Gene_OrcGenitalia</geneClass>
 | 
			
		||||
    <displayOrderInCategory>807</displayOrderInCategory>
 | 
			
		||||
  </GeneDef>  
 | 
			
		||||
 | 
			
		||||
  <GeneDef ParentName="GeneGenitalTypeBase">
 | 
			
		||||
    <defName>rjw_genes_Pig_genitalia</defName>
 | 
			
		||||
    <label>screw genitalia</label>
 | 
			
		||||
    <description>Carriers of this gene have screw genitalia.</description>
 | 
			
		||||
    <iconPath>Genes/Icons/Genitalia_screw_icon</iconPath>
 | 
			
		||||
    <geneClass>RJW_Genes.Gene_PigGenitalia</geneClass>
 | 
			
		||||
    <displayOrderInCategory>807</displayOrderInCategory>
 | 
			
		||||
  </GeneDef>  
 | 
			
		||||
 | 
			
		||||
  <GeneDef ParentName="GeneGenitalTypeBase">
 | 
			
		||||
    <defName>rjw_genes_Tentacle_genitalia</defName>
 | 
			
		||||
    <label>alien genitalia</label>
 | 
			
		||||
    <description>Carriers of this gene have alien genitalia.</description>
 | 
			
		||||
    <iconPath>Genes/Icons/Genitalia_alien_icon</iconPath>
 | 
			
		||||
    <geneClass>RJW_Genes.Gene_TentacleGenitalia</geneClass>
 | 
			
		||||
    <displayOrderInCategory>807</displayOrderInCategory>
 | 
			
		||||
  </GeneDef>  
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  <GeneDef ParentName="GeneGenitalTypeBase">
 | 
			
		||||
    <defName>rjw_genes_ovipositor_genitalia</defName>
 | 
			
		||||
    <label>insect genitalia</label>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,152 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8" ?>
 | 
			
		||||
<Defs>
 | 
			
		||||
	<rjw.HediffDef_PartBase ParentName="NaturalPrivatePartPenis">
 | 
			
		||||
		<defName>NeedlePenis</defName>
 | 
			
		||||
		<label>needle penis</label>
 | 
			
		||||
		<labelNoun>a needle penis</labelNoun>
 | 
			
		||||
		<description>A long thin needle penis</description>
 | 
			
		||||
		<descriptionHyperlinks><ThingDef>NeedlePenis</ThingDef></descriptionHyperlinks>
 | 
			
		||||
		<spawnThingOnRemoved>NeedlePenis</spawnThingOnRemoved>
 | 
			
		||||
		<modExtensions>
 | 
			
		||||
			<li Class="rjw.PartProps">
 | 
			
		||||
				<props>
 | 
			
		||||
					<li>Thin</li>
 | 
			
		||||
					<li>Long</li>
 | 
			
		||||
				</props>
 | 
			
		||||
			</li>
 | 
			
		||||
		</modExtensions>
 | 
			
		||||
	</rjw.HediffDef_PartBase>
 | 
			
		||||
	<rjw.HediffDef_PartBase ParentName="NaturalPrivatePartPenis">
 | 
			
		||||
		<defName>PigPenis</defName>
 | 
			
		||||
		<label>screw penis</label>
 | 
			
		||||
		<labelNoun>a screw penis</labelNoun>
 | 
			
		||||
		<description>A large screw penis.</description>
 | 
			
		||||
		<descriptionHyperlinks><ThingDef>PigPenis</ThingDef></descriptionHyperlinks>
 | 
			
		||||
		<spawnThingOnRemoved>PigPenis</spawnThingOnRemoved>
 | 
			
		||||
		<modExtensions>
 | 
			
		||||
			<li Class="rjw.PartProps">
 | 
			
		||||
				<props>
 | 
			
		||||
					<li>Flared</li>
 | 
			
		||||
					<li>Long</li>
 | 
			
		||||
					<li>Girthy</li>
 | 
			
		||||
				</props>
 | 
			
		||||
			</li>
 | 
			
		||||
		</modExtensions>
 | 
			
		||||
	</rjw.HediffDef_PartBase>
 | 
			
		||||
	<rjw.HediffDef_PartBase ParentName="NaturalPrivatePartPenis">
 | 
			
		||||
		<defName>MarinePenis</defName>
 | 
			
		||||
		<label>marine penis</label>
 | 
			
		||||
		<labelNoun>a marine penis</labelNoun>
 | 
			
		||||
		<description>A penis similar to those of marine mammals.</description>
 | 
			
		||||
		<descriptionHyperlinks><ThingDef>MarinePenis</ThingDef></descriptionHyperlinks>
 | 
			
		||||
		<spawnThingOnRemoved>MarinePenis</spawnThingOnRemoved>
 | 
			
		||||
		<modExtensions>
 | 
			
		||||
			<li Class="rjw.PartProps">
 | 
			
		||||
				<props>
 | 
			
		||||
					<li>Sheathed</li>
 | 
			
		||||
					<li>Long</li>
 | 
			
		||||
				</props>
 | 
			
		||||
			</li>
 | 
			
		||||
		</modExtensions>
 | 
			
		||||
	</rjw.HediffDef_PartBase>
 | 
			
		||||
	<rjw.HediffDef_PartBase ParentName="NaturalPrivatePartPenis">
 | 
			
		||||
		<defName>TentaclePenis</defName>
 | 
			
		||||
		<label>alien penis</label>
 | 
			
		||||
		<labelNoun>an alien penis</labelNoun>
 | 
			
		||||
		<description>A alien penis featuring multiples tentacles.</description>
 | 
			
		||||
		<descriptionHyperlinks><ThingDef>TentaclePenis</ThingDef></descriptionHyperlinks>
 | 
			
		||||
		<spawnThingOnRemoved>TentaclePenis</spawnThingOnRemoved>
 | 
			
		||||
		<modExtensions>
 | 
			
		||||
			<li Class="rjw.PartProps">
 | 
			
		||||
				<props>
 | 
			
		||||
					<li>Multiple</li>
 | 
			
		||||
					<li>Sheathed</li>
 | 
			
		||||
					<li>Long</li>
 | 
			
		||||
				</props>
 | 
			
		||||
			</li>
 | 
			
		||||
		</modExtensions>
 | 
			
		||||
	</rjw.HediffDef_PartBase>
 | 
			
		||||
	<rjw.HediffDef_PartBase ParentName="NaturalPrivatePartPenis">
 | 
			
		||||
		<defName>GolemPenis</defName>
 | 
			
		||||
		<label>golem penis</label>
 | 
			
		||||
		<labelNoun>an golem penis</labelNoun>
 | 
			
		||||
		<description>A large rocky golem penis.</description>
 | 
			
		||||
		<descriptionHyperlinks><ThingDef>GolemPenis</ThingDef></descriptionHyperlinks>
 | 
			
		||||
		<spawnThingOnRemoved>GolemPenis</spawnThingOnRemoved>
 | 
			
		||||
		<modExtensions>
 | 
			
		||||
			<li Class="rjw.PartProps">
 | 
			
		||||
				<props>
 | 
			
		||||
					<li>Long</li>
 | 
			
		||||
					<li>Girthy</li>
 | 
			
		||||
					<li>Barbed</li>
 | 
			
		||||
				</props>
 | 
			
		||||
			</li>
 | 
			
		||||
		</modExtensions>
 | 
			
		||||
	</rjw.HediffDef_PartBase>
 | 
			
		||||
	<rjw.HediffDef_PartBase ParentName="NaturalPrivatePartPenis">
 | 
			
		||||
		<defName>OrcPenis</defName>
 | 
			
		||||
		<label>orc penis</label>
 | 
			
		||||
		<labelNoun>an orc penis</labelNoun>
 | 
			
		||||
		<description>A large orc penis.</description>
 | 
			
		||||
		<descriptionHyperlinks><ThingDef>OrcPenis</ThingDef></descriptionHyperlinks>
 | 
			
		||||
		<spawnThingOnRemoved>OrcPenis</spawnThingOnRemoved>
 | 
			
		||||
		<modExtensions>
 | 
			
		||||
			<li Class="rjw.PartProps">
 | 
			
		||||
				<props>
 | 
			
		||||
					<li>Long</li>
 | 
			
		||||
					<li>Girthy</li>
 | 
			
		||||
				</props>
 | 
			
		||||
			</li>
 | 
			
		||||
		</modExtensions>
 | 
			
		||||
	</rjw.HediffDef_PartBase>
 | 
			
		||||
	<rjw.HediffDef_PartBase ParentName="NaturalPrivatePartPenis">
 | 
			
		||||
		<defName>GhostPenis</defName>
 | 
			
		||||
		<label>ghost penis</label>
 | 
			
		||||
		<labelNoun>an ghost penis</labelNoun>
 | 
			
		||||
		<description>A evanescent ghost penis, you can barely feel it.</description>
 | 
			
		||||
		<descriptionHyperlinks><ThingDef>GhostPenis</ThingDef></descriptionHyperlinks>
 | 
			
		||||
		<spawnThingOnRemoved>GhostPenis</spawnThingOnRemoved>
 | 
			
		||||
		<modExtensions>
 | 
			
		||||
			<li Class="rjw.PartProps">
 | 
			
		||||
				<props>
 | 
			
		||||
					<li>Thin</li>
 | 
			
		||||
					<li>Sheathed</li>
 | 
			
		||||
				</props>
 | 
			
		||||
			</li>
 | 
			
		||||
		</modExtensions>
 | 
			
		||||
	</rjw.HediffDef_PartBase>
 | 
			
		||||
	<rjw.HediffDef_PartBase ParentName="NaturalPrivatePartPenis">
 | 
			
		||||
		<defName>NecroPenis</defName>
 | 
			
		||||
		<label>undead penis</label>
 | 
			
		||||
		<labelNoun>an undead penis</labelNoun>
 | 
			
		||||
		<description>A rotten, reanimated penis.</description>
 | 
			
		||||
		<descriptionHyperlinks><ThingDef>NecroPenis</ThingDef></descriptionHyperlinks>
 | 
			
		||||
		<spawnThingOnRemoved>NecroPenis</spawnThingOnRemoved>
 | 
			
		||||
		<modExtensions>
 | 
			
		||||
			<li Class="rjw.PartProps">
 | 
			
		||||
				<props>
 | 
			
		||||
					<li>Long</li>
 | 
			
		||||
					<li>Girthy</li>
 | 
			
		||||
				</props>
 | 
			
		||||
			</li>
 | 
			
		||||
		</modExtensions>
 | 
			
		||||
	</rjw.HediffDef_PartBase>
 | 
			
		||||
	<rjw.HediffDef_PartBase ParentName="NaturalPrivatePartVagina">
 | 
			
		||||
		<defName>GhostVagina</defName>
 | 
			
		||||
		<label>ghost vagina</label>
 | 
			
		||||
		<labelNoun>a ghost vagina</labelNoun>
 | 
			
		||||
		<description>A evanescent ghost vagina, you can barely feel it.</description>
 | 
			
		||||
		<descriptionHyperlinks><ThingDef>GhostVagina</ThingDef></descriptionHyperlinks>
 | 
			
		||||
		<spawnThingOnRemoved>GhostVagina</spawnThingOnRemoved>
 | 
			
		||||
		<modExtensions>
 | 
			
		||||
			<li Class="rjw.PartProps">
 | 
			
		||||
				<props>
 | 
			
		||||
					<li>Tight</li>
 | 
			
		||||
					<li>Deep</li>
 | 
			
		||||
				</props>
 | 
			
		||||
			</li>
 | 
			
		||||
		</modExtensions>
 | 
			
		||||
	</rjw.HediffDef_PartBase>
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
</Defs>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,96 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8" ?>
 | 
			
		||||
 | 
			
		||||
<Defs>
 | 
			
		||||
	<ThingDef ParentName="rjw_BodyPartNaturalBaseGenMale">
 | 
			
		||||
		<defName>NeedlePenis</defName>
 | 
			
		||||
		<label>needle penis</label>
 | 
			
		||||
		<description>A long thin needle penis</description>
 | 
			
		||||
		<statBases>
 | 
			
		||||
			<MarketValue>250</MarketValue>
 | 
			
		||||
			<Mass>0.40</Mass>
 | 
			
		||||
		</statBases>
 | 
			
		||||
	</ThingDef>
 | 
			
		||||
	
 | 
			
		||||
	<ThingDef ParentName="rjw_BodyPartNaturalBaseGenMale">
 | 
			
		||||
		<defName>PigPenis</defName>
 | 
			
		||||
		<label>screw penis</label>
 | 
			
		||||
		<description>A large screw penis.</description>
 | 
			
		||||
		<statBases>
 | 
			
		||||
			<MarketValue>250</MarketValue>
 | 
			
		||||
			<Mass>0.40</Mass>
 | 
			
		||||
		</statBases>
 | 
			
		||||
	</ThingDef>
 | 
			
		||||
	
 | 
			
		||||
	<ThingDef ParentName="rjw_BodyPartNaturalBaseGenMale">
 | 
			
		||||
		<defName>MarinePenis</defName>
 | 
			
		||||
		<label>marine penis</label>
 | 
			
		||||
		<description>A penis similar to those of marine mammals.</description>
 | 
			
		||||
		<statBases>
 | 
			
		||||
			<MarketValue>250</MarketValue>
 | 
			
		||||
			<Mass>0.40</Mass>
 | 
			
		||||
		</statBases>
 | 
			
		||||
	</ThingDef>
 | 
			
		||||
	
 | 
			
		||||
	<ThingDef ParentName="rjw_BodyPartNaturalBaseGenMale">
 | 
			
		||||
		<defName>TentaclePenis</defName>
 | 
			
		||||
		<label>alien penis</label>
 | 
			
		||||
		<description>A alien penis featuring multiples tentacles.</description>
 | 
			
		||||
		<statBases>
 | 
			
		||||
			<MarketValue>250</MarketValue>
 | 
			
		||||
			<Mass>0.40</Mass>
 | 
			
		||||
		</statBases>
 | 
			
		||||
	</ThingDef>
 | 
			
		||||
	
 | 
			
		||||
	<ThingDef ParentName="rjw_BodyPartNaturalBaseGenMale">
 | 
			
		||||
		<defName>GolemPenis</defName>
 | 
			
		||||
		<label>golem penis</label>
 | 
			
		||||
		<description>A large rocky golem penis.</description>
 | 
			
		||||
		<statBases>
 | 
			
		||||
			<MarketValue>250</MarketValue>
 | 
			
		||||
			<Mass>0.40</Mass>
 | 
			
		||||
		</statBases>
 | 
			
		||||
	</ThingDef>
 | 
			
		||||
	
 | 
			
		||||
	<ThingDef ParentName="rjw_BodyPartNaturalBaseGenMale">
 | 
			
		||||
		<defName>OrcPenis</defName>
 | 
			
		||||
		<label>orc penis</label>
 | 
			
		||||
		<description>A large orc penis.</description>
 | 
			
		||||
		<statBases>
 | 
			
		||||
			<MarketValue>250</MarketValue>
 | 
			
		||||
			<Mass>0.40</Mass>
 | 
			
		||||
		</statBases>
 | 
			
		||||
	</ThingDef>
 | 
			
		||||
	
 | 
			
		||||
	<ThingDef ParentName="rjw_BodyPartNaturalBaseGenMale">
 | 
			
		||||
		<defName>GhostPenis</defName>
 | 
			
		||||
		<label>ghost penis</label>
 | 
			
		||||
		<description>A evanescent ghost penis, you can barely feel it.</description>
 | 
			
		||||
		<statBases>
 | 
			
		||||
			<MarketValue>250</MarketValue>
 | 
			
		||||
			<Mass>0.40</Mass>
 | 
			
		||||
		</statBases>
 | 
			
		||||
	</ThingDef>
 | 
			
		||||
	
 | 
			
		||||
	<ThingDef ParentName="rjw_BodyPartNaturalBaseGenMale">
 | 
			
		||||
		<defName>NecroPenis</defName>
 | 
			
		||||
		<label>undead penis</label>
 | 
			
		||||
		<description>A rotten, reanimated penis.</description>
 | 
			
		||||
		<statBases>
 | 
			
		||||
			<MarketValue>250</MarketValue>
 | 
			
		||||
			<Mass>0.40</Mass>
 | 
			
		||||
		</statBases>
 | 
			
		||||
	</ThingDef>
 | 
			
		||||
	
 | 
			
		||||
	<ThingDef ParentName="rjw_BodyPartNaturalBaseGenMale">
 | 
			
		||||
		<defName>GhostVagina</defName>
 | 
			
		||||
		<label>ghost vagina</label>
 | 
			
		||||
		<descriptionHyperlinks><ThingDef>GhostVagina</ThingDef></descriptionHyperlinks>
 | 
			
		||||
		<statBases>
 | 
			
		||||
			<MarketValue>250</MarketValue>
 | 
			
		||||
			<Mass>0.40</Mass>
 | 
			
		||||
		</statBases>
 | 
			
		||||
	</ThingDef>
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</Defs>
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 36 KiB  | 
| 
		 Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 24 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Common/Textures/Genes/Icons/Genitalia_alien_icon.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 54 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Common/Textures/Genes/Icons/Genitalia_croc_icon.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 17 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Common/Textures/Genes/Icons/Genitalia_ghost_icon.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 69 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Common/Textures/Genes/Icons/Genitalia_hemi_icon.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 44 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Common/Textures/Genes/Icons/Genitalia_marine_icon.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 30 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Common/Textures/Genes/Icons/Genitalia_necro_icon.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 38 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Common/Textures/Genes/Icons/Genitalia_orc_icon.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 48 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Common/Textures/Genes/Icons/Genitalia_racoon_icon.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 28 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Common/Textures/Genes/Icons/Genitalia_screw_icon.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 34 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Common/Textures/Genes/Icons/Genitalia_tentacle_icon.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 51 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Common/Textures/Genes/Icons/Genitalia_thin_icon.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 20 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Common/Textures/Genes/Icons/penis_rock_icon.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 43 KiB  | 
							
								
								
									
										129
									
								
								Source/Common/patches/Patch_RJW_BestialityPregnancyUtility.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,129 @@
 | 
			
		|||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using HarmonyLib;
 | 
			
		||||
using RimWorld;
 | 
			
		||||
using Verse;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_BGS
 | 
			
		||||
{
 | 
			
		||||
    [HarmonyPatch(typeof(ParentRelationUtility))]
 | 
			
		||||
    public class patchGetParents
 | 
			
		||||
    {
 | 
			
		||||
        // Token: 0x0600000F RID: 15
 | 
			
		||||
        [HarmonyPostfix]
 | 
			
		||||
        [HarmonyPatch("GetFather")]
 | 
			
		||||
        private static void FatherPostfix(ref Pawn __result, Pawn pawn)
 | 
			
		||||
        {
 | 
			
		||||
            if (__result == null && pawn.RaceProps.IsFlesh && pawn.relations != null)
 | 
			
		||||
            {
 | 
			
		||||
                List<DirectPawnRelation> directRelations = pawn.relations.DirectRelations;
 | 
			
		||||
                bool flag = false;
 | 
			
		||||
                for (int i = 0; i < directRelations.Count; i++)
 | 
			
		||||
                {
 | 
			
		||||
                    DirectPawnRelation directPawnRelation = directRelations[i];
 | 
			
		||||
                    if (directPawnRelation.def == PawnRelationDefOf.Parent)
 | 
			
		||||
                    {
 | 
			
		||||
                        if (flag)
 | 
			
		||||
                        {
 | 
			
		||||
                            __result = directPawnRelation.otherPawn;
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        flag = true;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Token: 0x06000010 RID: 16
 | 
			
		||||
        [HarmonyPostfix]
 | 
			
		||||
        [HarmonyPatch("GetMother")]
 | 
			
		||||
        private static void MotherPostfix(ref Pawn __result, Pawn pawn)
 | 
			
		||||
        {
 | 
			
		||||
            if (__result == null && pawn.RaceProps.IsFlesh && pawn.relations != null)
 | 
			
		||||
            {
 | 
			
		||||
                List<DirectPawnRelation> directRelations = pawn.relations.DirectRelations;
 | 
			
		||||
                for (int i = 0; i < directRelations.Count; i++)
 | 
			
		||||
                {
 | 
			
		||||
                    DirectPawnRelation directPawnRelation = directRelations[i];
 | 
			
		||||
                    if (directPawnRelation.def == PawnRelationDefOf.Parent)
 | 
			
		||||
                    {
 | 
			
		||||
                        __result = directPawnRelation.otherPawn;
 | 
			
		||||
                        return;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Token: 0x0600001F RID: 31
 | 
			
		||||
        [HarmonyPostfix]
 | 
			
		||||
        [HarmonyPatch("HasSameFather")]
 | 
			
		||||
        private static void HasSameFatherPostfix(ref bool __result, Pawn pawn, Pawn other)
 | 
			
		||||
        {
 | 
			
		||||
            if (!__result && pawn.RaceProps.IsFlesh && pawn.relations != null)
 | 
			
		||||
            {
 | 
			
		||||
                Pawn parent = pawn.GetFather();
 | 
			
		||||
                Pawn parent2 = other.GetMother();
 | 
			
		||||
                Pawn parent3 = other.GetFather();
 | 
			
		||||
                Pawn parent4 = pawn.GetMother();
 | 
			
		||||
                if (parent != null && parent2 != null && parent == parent2)
 | 
			
		||||
                {
 | 
			
		||||
                    __result = true;
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                if (parent3 != null && parent4 != null && parent3 == parent4)
 | 
			
		||||
                {
 | 
			
		||||
                    __result = true;
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                if (parent != null && parent3 != null && parent == parent3)
 | 
			
		||||
                {
 | 
			
		||||
                    __result = true;
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                if (parent2 != null && parent4 != null && parent2 == parent4)
 | 
			
		||||
                {
 | 
			
		||||
                    __result = true;
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Token: 0x06000020 RID: 32
 | 
			
		||||
        [HarmonyPostfix]
 | 
			
		||||
        [HarmonyPatch("HasSameMother")]
 | 
			
		||||
        private static void HasSameMotherPostfix(ref bool __result, Pawn pawn, Pawn other)
 | 
			
		||||
        {
 | 
			
		||||
            if (!__result && pawn.RaceProps.IsFlesh && pawn.relations != null)
 | 
			
		||||
            {
 | 
			
		||||
                Pawn parent = pawn.GetFather();
 | 
			
		||||
                Pawn parent2 = other.GetMother();
 | 
			
		||||
                Pawn parent3 = other.GetFather();
 | 
			
		||||
                Pawn parent4 = pawn.GetMother();
 | 
			
		||||
                if (parent != null && parent2 != null && parent == parent2)
 | 
			
		||||
                {
 | 
			
		||||
                    __result = true;
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                if (parent3 != null && parent4 != null && parent3 == parent4)
 | 
			
		||||
                {
 | 
			
		||||
                    __result = true;
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                if (parent != null && parent3 != null && parent == parent3)
 | 
			
		||||
                {
 | 
			
		||||
                    __result = true;
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                if (parent2 != null && parent4 != null && parent2 == parent4)
 | 
			
		||||
                {
 | 
			
		||||
                    __result = true;
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -25,6 +25,14 @@ namespace RJW_Genes
 | 
			
		|||
        public static readonly GeneDef rjw_genes_crocodilian_genitalia;
 | 
			
		||||
        public static readonly GeneDef rjw_genes_racoon_genitalia;
 | 
			
		||||
        public static readonly GeneDef rjw_genes_reptilian_genitalia;
 | 
			
		||||
        public static readonly GeneDef rjw_genes_Ghost_genitalia;
 | 
			
		||||
        public static readonly GeneDef rjw_genes_Golem_genitalia;
 | 
			
		||||
        public static readonly GeneDef rjw_genes_Marine_genitalia;
 | 
			
		||||
        public static readonly GeneDef rjw_genes_Necro_genitalia;
 | 
			
		||||
        public static readonly GeneDef rjw_genes_Needle_genitalia;
 | 
			
		||||
        public static readonly GeneDef rjw_genes_Orc_genitalia;
 | 
			
		||||
        public static readonly GeneDef rjw_genes_Pig_genitalia;
 | 
			
		||||
        public static readonly GeneDef rjw_genes_Tentacle_genitalia;
 | 
			
		||||
 | 
			
		||||
        // Extra Genitalia 
 | 
			
		||||
        public static readonly GeneDef rjw_genes_extra_penis;
 | 
			
		||||
| 
						 | 
				
			
			@ -38,6 +46,7 @@ namespace RJW_Genes
 | 
			
		|||
		public static readonly GeneDef rjw_genes_futa;
 | 
			
		||||
        public static readonly GeneDef rjw_genes_femboy;
 | 
			
		||||
        public static readonly GeneDef rjw_genes_featureless_chest; 
 | 
			
		||||
		public static readonly GeneDef rjw_genes_udder;
 | 
			
		||||
 | 
			
		||||
        // Genitalia Sizes
 | 
			
		||||
        public static readonly GeneDef rjw_genes_big_male_genitalia;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,21 +14,12 @@ namespace RJW_Genes
 | 
			
		|||
    public class Gene_UdderBreasts : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        Hediff removed_breasts;
 | 
			
		||||
        Hediff added_udders;
 | 
			
		||||
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            // Breasts are replaced for female,trap and futa pawns
 | 
			
		||||
            if ( removed_breasts == null 
 | 
			
		||||
                && (GenderUtility.IsFemale(pawn) || GenderHelper.GetSex(pawn) == GenderHelper.Sex.futa || GenderHelper.GetSex(pawn) == GenderHelper.Sex.trap)
 | 
			
		||||
                )
 | 
			
		||||
            {
 | 
			
		||||
                RemoveButStoreBreasts();
 | 
			
		||||
                AddUdders();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -36,42 +27,31 @@ namespace RJW_Genes
 | 
			
		|||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
 | 
			
		||||
            // Breasts are replaced for female,trap and futa pawns
 | 
			
		||||
            if (removed_breasts == null
 | 
			
		||||
                && (GenderUtility.IsFemale(pawn) || GenderHelper.GetSex(pawn) == GenderHelper.Sex.futa || GenderHelper.GetSex(pawn) == GenderHelper.Sex.trap)
 | 
			
		||||
                ) 
 | 
			
		||||
            { 
 | 
			
		||||
                RemoveButStoreBreasts();
 | 
			
		||||
                AddUdders();
 | 
			
		||||
            }
 | 
			
		||||
            AddUdders();
 | 
			
		||||
    
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostRemove()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostRemove();
 | 
			
		||||
            // Re-Add the old breasts
 | 
			
		||||
            if (removed_breasts != null)
 | 
			
		||||
                pawn.health.AddHediff(removed_breasts);
 | 
			
		||||
 | 
			
		||||
            if (added_udders != null)
 | 
			
		||||
                pawn.health.RemoveHediff(added_udders);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        internal void RemoveButStoreBreasts()
 | 
			
		||||
        {
 | 
			
		||||
            var partBPR = Genital_Helper.get_breastsBPR(pawn);
 | 
			
		||||
            Hediff breastsToRemove = Genital_Helper.get_AllPartsHediffList(pawn).FindLast(x => GenitaliaUtility.IsBreasts(x));
 | 
			
		||||
 | 
			
		||||
            if (breastsToRemove != null)
 | 
			
		||||
            {
 | 
			
		||||
                removed_breasts = breastsToRemove;
 | 
			
		||||
                pawn.health.RemoveHediff(breastsToRemove);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        internal void AddUdders()
 | 
			
		||||
        {
 | 
			
		||||
            CompHediffBodyPart CompHediff = null;
 | 
			
		||||
            BodyPartRecord bpr = Genital_Helper.get_uddersBPR(pawn);
 | 
			
		||||
            added_udders = pawn.health.AddHediff(Genital_Helper.udder_breasts, bpr);
 | 
			
		||||
            added_udders.TryGetComp<rjw.CompHediffBodyPart>();
 | 
			
		||||
            if (CompHediff != null)
 | 
			
		||||
            {
 | 
			
		||||
                CompHediff.initComp(pawn);
 | 
			
		||||
                CompHediff.updatesize();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										19
									
								
								Source/Genes/Genital_Helper_2.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
using rjw;
 | 
			
		||||
using Verse;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Genital_Helper_2
 | 
			
		||||
    {
 | 
			
		||||
        public static HediffDef NeedlePenis = HediffDef.Named("NeedlePenis");
 | 
			
		||||
        public static HediffDef PigPenis = HediffDef.Named("PigPenis");
 | 
			
		||||
        public static HediffDef MarinePenis = HediffDef.Named("MarinePenis");
 | 
			
		||||
        public static HediffDef TentaclePenis = HediffDef.Named("TentaclePenis");
 | 
			
		||||
        public static HediffDef GolemPenis = HediffDef.Named("GolemPenis");
 | 
			
		||||
        public static HediffDef OrcPenis = HediffDef.Named("OrcPenis");
 | 
			
		||||
        public static HediffDef GhostPenis = HediffDef.Named("GhostPenis");
 | 
			
		||||
        public static HediffDef NecroPenis = HediffDef.Named("NecroPenis");
 | 
			
		||||
        public static HediffDef GhostVagina = HediffDef.Named("GhostVagina");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								Source/Genes/Genitalia/Gene_GhostGenitalia.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_GhostGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.GhostPenis, Genital_Helper_2.GhostVagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.GhostPenis, Genital_Helper_2.GhostVagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								Source/Genes/Genitalia/Gene_GolemGenitalia.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_GolemGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.GolemPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.GolemPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								Source/Genes/Genitalia/Gene_MarineGenitalia.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_MarineGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.MarinePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.MarinePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								Source/Genes/Genitalia/Gene_NecroGenitalia.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_NecroGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.NecroPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.NecroPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								Source/Genes/Genitalia/Gene_NeedleGenitalia.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_NeedleGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.NeedlePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.NeedlePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								Source/Genes/Genitalia/Gene_OrcGenitalia.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_OrcGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.OrcPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.OrcPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								Source/Genes/Genitalia/Gene_PigGenitalia.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_PigGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.PigPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.PigPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								Source/Genes/Genitalia/Gene_TentacleGenitalia.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_TentacleGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.TentaclePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.TentaclePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -44,6 +44,7 @@
 | 
			
		|||
    <Compile Include="Common\Either.cs" />
 | 
			
		||||
    <Compile Include="Common\ModLog.cs" />
 | 
			
		||||
    <Compile Include="Common\Defs\TickIntervalExtension.cs" />
 | 
			
		||||
    <Compile Include="Common\patches\Patch_RJW_BestialityPregnancyUtility.cs" />
 | 
			
		||||
    <Compile Include="GeneDefOf.cs" />
 | 
			
		||||
    <Compile Include="Genes\Breeding\Gene_MechBreeder.cs" />
 | 
			
		||||
    <Compile Include="Genes\Breeding\PatchMechBirth.cs" />
 | 
			
		||||
| 
						 | 
				
			
			@ -86,8 +87,16 @@
 | 
			
		|||
    <Compile Include="Genes\GenitaliaSize\SizeAdjuster.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_GenitaliaType.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Defs\GenitaliaTypeExtension.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_TentacleGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_GolemGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_OrcGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_GhostGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_NecroGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_MarineGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_PigGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\GenitaliaChanger.cs" />
 | 
			
		||||
    <Compile Include="Genes\Patch_AddNotifyOnGeneration.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genital_Helper_2.cs" />
 | 
			
		||||
    <Compile Include="Genes\Special\Defs\AgeTransferExtension.cs" />
 | 
			
		||||
    <Compile Include="Genes\Special\Defs\HormonalSalivaExtension.cs" />
 | 
			
		||||
    <Compile Include="Genes\Special\Patches\Patch_AgeDrain.cs" />
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,58 +17,12 @@ namespace RJW_Genes
 | 
			
		|||
            listing_Standard.ColumnWidth = rect.width / 2.05f;
 | 
			
		||||
            listing_Standard.Begin(rect);
 | 
			
		||||
            listing_Standard.Gap(24f);
 | 
			
		||||
            listing_Standard.Label("Fertilin-Gain from Animals" + ": " +
 | 
			
		||||
                Math.Round((double)(RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor * 100f), 0).ToString() + "%", -1f, "of fertilin gained (compared to human-baseline).");
 | 
			
		||||
            RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor = listing_Standard.Slider(RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor, 0f, 3f);
 | 
			
		||||
 | 
			
		||||
            listing_Standard.Gap(5f);
 | 
			
		||||
            listing_Standard.CheckboxLabeled("Sexdemon Visits", ref rjw_genes_sexdemon_visit, "If enabled, incubi and succubi can spawn in through an event.", 0f, 1f);
 | 
			
		||||
            if (rjw_genes_sexdemon_visit)
 | 
			
		||||
            {
 | 
			
		||||
                listing_Standard.Gap(3f);
 | 
			
		||||
                listing_Standard.CheckboxLabeled("  Size matters", ref rjw_genes_sexdemon_join_size_matters, "Incubi and succubi will consider size/tightness of partners genital for deciding if they want to join", 0f, 1f);
 | 
			
		||||
                listing_Standard.Gap(3f);
 | 
			
		||||
                listing_Standard.CheckboxLabeled("  Sexdemon groups", ref rjw_genes_sexdemon_visit_groups, "Multiple sexdemons can spawn during a event", 0f, 1f);
 | 
			
		||||
                listing_Standard.Gap(3f);
 | 
			
		||||
                listing_Standard.CheckboxLabeled("  Succubi", ref rjw_genes_sexdemon_visit_succubi, "Allow incubi to spawn through this even", 0f, 1f);
 | 
			
		||||
                listing_Standard.Gap(3f);
 | 
			
		||||
                listing_Standard.CheckboxLabeled("  Incubi", ref rjw_genes_sexdemon_visit_incubi, "Allow incubi to spawn through this even", 0f, 1f);
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            listing_Standard.Gap(5f);
 | 
			
		||||
            listing_Standard.CheckboxLabeled("generous-donor cheatmode", ref rjw_genes_generous_donor_cheatmode, "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.", 0f, 1f);
 | 
			
		||||
 | 
			
		||||
            listing_Standard.Gap(5f);
 | 
			
		||||
            listing_Standard.CheckboxLabeled("detailed-debug", ref rjw_genes_detailed_debug, "Adds detailed information to the log about interactions and genes.", 0f, 1f);
 | 
			
		||||
            listing_Standard.End();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void ExposeData()
 | 
			
		||||
        {
 | 
			
		||||
            base.ExposeData();
 | 
			
		||||
            Scribe_Values.Look<float>(ref RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor, "rjw_genes_fertilin_from_animals_factor", RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor, true);
 | 
			
		||||
            Scribe_Values.Look<bool>(ref RJW_Genes_Settings.rjw_genes_detailed_debug, "rjw_genes_detailed_debug", RJW_Genes_Settings.rjw_genes_detailed_debug, true);
 | 
			
		||||
 | 
			
		||||
            Scribe_Values.Look<bool>(ref RJW_Genes_Settings.rjw_genes_sexdemon_visit, "rjw_genes_sexdemon_visit", RJW_Genes_Settings.rjw_genes_sexdemon_visit, true);
 | 
			
		||||
            Scribe_Values.Look<bool>(ref RJW_Genes_Settings.rjw_genes_sexdemon_join_size_matters, "rjw_genes_sexdemon_join_size_matters", RJW_Genes_Settings.rjw_genes_sexdemon_join_size_matters, true);
 | 
			
		||||
            Scribe_Values.Look<bool>(ref RJW_Genes_Settings.rjw_genes_sexdemon_visit_groups, "rjw_genes_sexdemon_groups", RJW_Genes_Settings.rjw_genes_sexdemon_visit_groups, true);
 | 
			
		||||
            Scribe_Values.Look<bool>(ref RJW_Genes_Settings.rjw_genes_sexdemon_visit_succubi, "rjw_genes_sexdemon_succubi", RJW_Genes_Settings.rjw_genes_sexdemon_visit_succubi, true);
 | 
			
		||||
            Scribe_Values.Look<bool>(ref RJW_Genes_Settings.rjw_genes_sexdemon_visit_incubi, "rjw_genes_sexdemon_incubi", RJW_Genes_Settings.rjw_genes_sexdemon_visit_incubi, true);
 | 
			
		||||
 | 
			
		||||
            Scribe_Values.Look<bool>(ref RJW_Genes_Settings.rjw_genes_generous_donor_cheatmode, "rjw_genes_generous_donor_cheatmode", RJW_Genes_Settings.rjw_genes_generous_donor_cheatmode, true);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static bool rjw_genes_detailed_debug = false;
 | 
			
		||||
        public static float rjw_genes_fertilin_from_animals_factor = 0.1f;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public static bool rjw_genes_sexdemon_visit = true;
 | 
			
		||||
        public static bool rjw_genes_sexdemon_join_size_matters = true;
 | 
			
		||||
        public static bool rjw_genes_sexdemon_visit_groups = true;
 | 
			
		||||
        public static bool rjw_genes_sexdemon_visit_succubi = true;
 | 
			
		||||
        public static bool rjw_genes_sexdemon_visit_incubi = true;
 | 
			
		||||
 | 
			
		||||
        public static bool rjw_genes_generous_donor_cheatmode = false;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||