VRE patched + quirk system

This commit is contained in:
Jaaldabaoth 2024-06-01 20:21:46 +02:00
parent 13eaa8b994
commit dfd93c7185
29 changed files with 427 additions and 47 deletions

Binary file not shown.

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<GeneDef Name="GeneExtraGenitaliaBase" Abstract="True">
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
<randomChosen>false</randomChosen>
<modExtensions>
@ -15,6 +14,8 @@
<GeneDef ParentName="GeneExtraGenitaliaBase">
<defName>rjw_genes_extra_penis</defName>
<label>extra penis</label>
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
<description>Males of this species grow an additional penis .</description>
<iconPath>Genes/Icons/extra_male</iconPath>
<geneClass>RJW_Genes.Gene_ExtraPenis</geneClass>
@ -27,6 +28,7 @@
<GeneDef ParentName="GeneExtraGenitaliaBase">
<defName>rjw_genes_no_penis</defName>
<label>no penis</label>
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
<description>Males of this do not have a penis.</description>
<iconPath>Genes/Icons/No_Male_Genitalia</iconPath>
<geneClass>RJW_Genes.Gene_NoPenis</geneClass>
@ -40,6 +42,7 @@
<GeneDef ParentName="GeneExtraGenitaliaBase">
<defName>rjw_genes_extra_vagina</defName>
<label>extra vagina</label>
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
<description>Females of this species grow an additional vagina .</description>
<iconPath>Genes/Icons/Extra_Vagina</iconPath>
<geneClass>RJW_Genes.Gene_ExtraVagina</geneClass>
@ -52,6 +55,7 @@
<GeneDef ParentName="GeneExtraGenitaliaBase">
<defName>rjw_genes_no_vagina</defName>
<label>no vagina</label>
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
<description>Females of this do not have a vagina.</description>
<iconPath>Genes/Icons/No_Vagina</iconPath>
<geneClass>RJW_Genes.Gene_NoVagina</geneClass>
@ -65,6 +69,7 @@
<GeneDef ParentName="GeneExtraGenitaliaBase">
<defName>rjw_genes_extra_breasts</defName>
<label>extra breasts</label>
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
<description>Females of this species grow an additional pair of breasts .</description>
<iconPath>Genes/Icons/Extra_Breasts</iconPath>
<geneClass>RJW_Genes.Gene_ExtraBreasts</geneClass>
@ -77,6 +82,7 @@
<GeneDef ParentName="GeneExtraGenitaliaBase">
<defName>rjw_genes_no_breasts</defName>
<label>no breasts</label>
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
<description>Females of this do not have a pair of breasts, but only nipples.</description>
<iconPath>Genes/Icons/No_Breasts</iconPath>
<geneClass>RJW_Genes.Gene_NoBreasts</geneClass>
@ -89,6 +95,7 @@
<GeneDef ParentName="GeneExtraGenitaliaBase">
<defName>rjw_genes_extra_anus</defName>
<label>extra anus</label>
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
<description>This specias has an extra anus.</description>
<iconPath>Genes/Icons/Extra_Anus</iconPath>
<geneClass>RJW_Genes.Gene_ExtraAnus</geneClass>
@ -101,6 +108,7 @@
<GeneDef ParentName="GeneExtraGenitaliaBase">
<defName>rjw_genes_no_anus</defName>
<label>no anus</label>
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
<description>This specias has no anus.</description>
<iconPath>Genes/Icons/No_Anus</iconPath>
<geneClass>RJW_Genes.Gene_NoAnus</geneClass>
@ -113,6 +121,7 @@
<GeneDef ParentName="GeneExtraGenitaliaBase">
<defName>rjw_genes_futa</defName>
<label>futanari</label>
<displayCategory>rjw_genes_gender</displayCategory>
<description>Males with this gene grow additional female genitalia, females grow additional male genitalia.</description>
<iconPath>Genes/Icons/Futa</iconPath>
<geneClass>RJW_Genes.Gene_Futa</geneClass>
@ -126,6 +135,7 @@
<GeneDef ParentName="GeneExtraGenitaliaBase">
<defName>rjw_genes_femboy</defName>
<label>femboy</label>
<displayCategory>rjw_genes_gender</displayCategory>
<description>Males with this gene are considered female despite having a penis</description>
<iconPath>Genes/Icons/Futa</iconPath>
<geneClass>RJW_Genes.Gene_Femboy</geneClass>
@ -139,6 +149,7 @@
<GeneDef ParentName="GeneExtraGenitaliaBase">
<defName>rjw_genes_featureless_chest</defName>
<label>Featureless Chest</label>
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
<description>Carriers of this gene do not have breasts or nipples.</description>
<iconPath>Genes/Icons/No_Breasts</iconPath>
<geneClass>RJW_Genes.Gene_FeaturelessChest</geneClass>
@ -151,6 +162,7 @@
<GeneDef ParentName="GeneExtraGenitaliaBase">
<defName>rjw_genes_udder</defName>
<label>udder</label>
<displayCategory>rjw_genes_genitalia_extras</displayCategory>
<description>Carriers of this gene have udders and breasts.</description>
<iconPath>Things/Mote/Heart</iconPath>
<geneClass>RJW_Genes.Gene_UdderBreasts</geneClass>

View file

@ -7,7 +7,7 @@
<exclusionTags>
<li>GenitalType</li>
</exclusionTags>
<randomChosen>false</randomChosen>
<randomChosen>true</randomChosen>
<biostatCpx>0</biostatCpx>
<modExtensions>
@ -43,6 +43,7 @@
<penis>Penis</penis>
<vagina>Vagina</vagina>
<anus>Anus</anus>
<breasts>Breasts</breasts>
</li>
</modExtensions>
<displayOrderInCategory>802</displayOrderInCategory>
@ -125,6 +126,7 @@
<penis>SlimeTentacles</penis>
<vagina>SlimeVagina</vagina>
<anus>SlimeAnus</anus>
<breasts>SlimeBreasts</breasts>
</li>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>SlimeLoverQuirk</Satisfiedquirk>
@ -319,10 +321,6 @@
</GeneDef>
<GeneDef ParentName="GeneGenitalTypeBase">
<defName>rjw_genes_ovipositor_genitalia</defName>
<label>insect genitalia</label>

View file

@ -14,6 +14,8 @@
<value>
<li>rjw_genes_much_cum</li>
<li>rjw_genes_zoophile</li>
<li>rjw_genes_Pig_genitalia</li>
<li>rjw_genes_human_genitalia</li>
</value>
</Operation>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<Patch>
<Operation Class="PatchOperationFindMod">
<mods>
<li>Vanilla Races Expanded - Pigskin</li>
</mods>
<match Class="PatchOperationAdd">
<xpath>Defs/XenotypeDef[defName="VRE_Boarskin"]/genes</xpath>
<value>
<li>rjw_genes_Pig_genitalia</li>
<li>rjw_genes_human_genitalia</li>
<li>rjw_genes_much_cum</li>
<li>rjw_genes_zoophile</li>
</value>
</match>
</Operation>
</Patch>

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<Patch>
<Operation Class="PatchOperationFindMod">
<mods>
<li>Vanilla Races Expanded - Lycanthrope</li>
</mods>
<match Class="PatchOperationAdd">
<xpath>Defs/XenotypeDef[defName="VRE_Wolfman"]/genes</xpath>
<value>
<li>rjw_genes_human_genitalia</li>
<li>rjw_genes_zoophile</li>
</value>
</match>
</Operation>
<Operation Class="PatchOperationFindMod">
<mods>
<li>Vanilla Races Expanded - Lycanthrope</li>
</mods>
<match Class="PatchOperationAdd">
<xpath>Defs/XenotypeDef[defName="VRE_Lycan"]/genes</xpath>
<value>
<li>rjw_genes_canine_genitalia</li>
<li>rjw_genes_zoophile</li>
<li>rjw_genes_rapist</li>
</value>
</match>
</Operation>
</Patch>

Binary file not shown.

After

Width:  |  Height:  |  Size: 9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

View file

@ -6,5 +6,13 @@
<!-- Mods -->
<li IfModNotActive="asmr.rjw.racesupport">Mods/NotRaceSupport</li>
<li IfModActive="vanillaracesexpanded.sanguophage">Mods/Sanguophage</li>
<li IfModActive="vanillaracesexpanded.saurid">Mods/Saurid</li>
<li IfModActive="vanillaracesexpanded.phytokin">Mods/Phytokin</li>
<li IfModActive="vanillaracesexpanded.lycanthrope">Mods/Lycanthrope</li>
<li IfModActive="vanillaracesexpanded.highmate">Mods/Highmate</li>
<li IfModActive="vanillaracesexpanded.genie">Mods/Genie</li>
<li IfModActive="vanillaracesexpanded.fungoid">Mods/Fungoid</li>
<li IfModActive="vanillaracesexpanded.archon">Mods/Archon</li>
<li IfModActive="vanillaracesexpanded.android">Mods/Android</li>
</v1.5>
</loadFolders>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<Defs>
<VREAndroids.AndroidConvertableGenesDef>
<defName>rjw_genes_AndroidConvertableGenesDefs</defName>
<geneCategories>
<li>rjw_genes_gender</li>
</geneCategories>
</VREAndroids.AndroidConvertableGenesDef>
</Defs>

View file

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<VREAndroids.AndroidGeneDef ParentName="VREA_SubroutineBase">
<defName>rjw_genes_bionic_genitalia</defName>
<label>bionic genitalia</label>
<geneClass>RJW_Genes.Gene_GenitaliaType</geneClass>
<description>This piece of hardware is a set of bionic genitals of high quality</description>
<iconPath>Genes/Icons/Genitalia_human</iconPath>
<modExtensions>
<li Class="RJW_Genes.GenitaliaTypeExtension">
<penis>BionicPenis</penis>
<vagina>BionicVagina</vagina>
<anus>BionicAnus</anus>
<breasts>BionicBreasts</breasts>
</li>
</modExtensions>
<displayOrderInCategory>802</displayOrderInCategory>
<biostatMet>-2</biostatMet>
</VREAndroids.AndroidGeneDef>
<VREAndroids.AndroidGeneDef ParentName="VREA_HardwareBase">
<defName>rjw_genes_hydrolic_genitalia</defName>
<label>hydrolic genitalia</label>
<geneClass>RJW_Genes.Gene_GenitaliaType</geneClass>
<description>This piece of hardware is a set of crude hydrolic genitals, at least it come with a suspension system</description>
<iconPath>Genes/Icons/Genitalia_human</iconPath>
<modExtensions>
<li Class="RJW_Genes.GenitaliaTypeExtension">
<penis>HydraulicPenis</penis>
<vagina>HydraulicVagina</vagina>
<anus>HydraulicAnus</anus>
<breasts>HydraulicBreasts</breasts>
</li>
</modExtensions>
<displayOrderInCategory>802</displayOrderInCategory>
<statFactors>
<MoveSpeed>1.12</MoveSpeed>
</statFactors>
</VREAndroids.AndroidGeneDef>
<VREAndroids.AndroidGeneDef ParentName="VREA_HardwareBase">
<defName>rjw_genes_SexDisabled</defName>
<label>sex disabled</label>
<description>Androids do not feel satisfaction from sex, and have no need to feel it.</description>
<iconPath>Genes/Icons/sex_disabled</iconPath>
<displayOrderInCategory>3</displayOrderInCategory>
<biostatCpx>1</biostatCpx>
<disablesNeeds>
<li>Sex</li>
</disablesNeeds>
<removeWhenAwakened>true</removeWhenAwakened>
</VREAndroids.AndroidGeneDef>
</Defs>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/VREAndroids.AndroidGeneDef[defName="VREA_SyntheticBody"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>RobotLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/VREAndroids.AndroidGeneDef[defName="VREA_SyntheticSkin"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>RobotLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
<Operation Class="PatchOperationReplace">
<xpath>/Defs/GeneCategoryDef[defName="VREA_Subroutine"]/displayPriorityInXenotype</xpath>
<value>
<displayPriorityInXenotype>10</displayPriorityInXenotype>
</value>
</Operation>
</Patch>

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_Leatherskin"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>SkinLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
</Patch>

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_FungalCrest"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>PlantLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_HairMushroom"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>PlantLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_FungalFlesh"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>PlantLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
</Patch>

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<GeneDef Name="VRE_CuriosityBase" Abstract="True">
<displayCategory>VRE_Curiosity</displayCategory>
<exclusionTags>
<li>VRE_Curiosity</li>
<li>Curiosity</li>
</exclusionTags>
<biostatMet>-2</biostatMet>
<biostatCpx>2</biostatCpx>
</GeneDef>
<GeneDef ParentName="VRE_CuriosityBase">
<defName>VRE_Curiosity_Sex</defName>
<label>sex curiosity</label>
<displayOrderInCategory>0</displayOrderInCategory>
<description>The carrier has a natural curiosity for sex which makes them gain recreation whenever they learn it. Furthermore, curiosity prevents skill loss in sex completely.
</description>
<iconPath>Genes/Icons/sex_curiosity</iconPath>
<modExtensions>
<li Class="VanillaGenesExpanded.GeneExtension">
<noSkillLoss>Sex</noSkillLoss>
<skillRecreation>Sex</skillRecreation>
</li>
</modExtensions>
</GeneDef>
</Defs>

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_FelineEars"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>FurLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_FelineTail"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>FurLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_PerfectBody"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>SkinLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
</Patch>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_ChestFur"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>FurLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_CanineTail"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>FurLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
</Patch>

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_BarkSkin"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>PlantLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_FoliageHair"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>PlantLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_SapBlood"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>PlantLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
</Patch>

View file

@ -1,51 +1,43 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationAdd">
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_SanguineHair"]</xpath>
<value>
<modExtensions>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>DemonLoverQuirk</Satisfiedquirk>
</li>
</modExtensions>
</value>
</Operation>
<Operation Class="PatchOperationAdd">
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_BatEars"]</xpath>
<value>
<modExtensions>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>TeratophileQuirk</Satisfiedquirk>
</li>
</modExtensions>
</value>
</Operation>
<Operation Class="PatchOperationAdd">
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_UpperBatEars"]</xpath>
<value>
<modExtensions>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>TeratophileQuirk</Satisfiedquirk>
</li>
</modExtensions>
</value>
</Operation>
<Operation Class="PatchOperationAdd">
<xpath>/Defs/GeneDef[defName="VRE_Talons"]/modExtensions</xpath>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_Talons"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>DemonLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAdd">
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRE_BatNose"]</xpath>
<value>
<modExtensions>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>TeratophileQuirk</Satisfiedquirk>
</li>
</modExtensions>
</value>
</Operation>
</Patch>

View file

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRESaurids_FrilledEars"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>ScaleLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRESaurids_CenterFrill"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>ScaleLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRESaurids_GeckoTail"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>ScaleLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRESaurids_SauridClaws"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>ScaleLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/GeneDef[defName="VRESaurids_ScaleSkin"]</xpath>
<value>
<li Class="RJW_Genes.QirkExtension">
<Satisfiedquirk>ScaleLoverQuirk</Satisfiedquirk>
</li>
</value>
</Operation>
</Patch>

View file

@ -55,6 +55,18 @@ namespace RJW_Genes
compHediffBodyPart.updatesize(0f);
}
this.pawn.health.AddHediff(this.additional_genital, part, null, null);
foreach (Gene g in pawn.genes.GenesListForReading)
{
if (g.def.defName == "rjw_genes_hydrolic_genitalia")
{
g.PostAdd();
}
if (g.def.defName == "rjw_genes_bionic_genitalia")
{
g.PostAdd();
return;
}
}
}
// Token: 0x040001B0 RID: 432

View file

@ -36,6 +36,18 @@ namespace RJW_Genes
});
GenderUtility.AdjustBodyToTargetGender(pawn, Gender.Female);
}
foreach(Gene g in pawn.genes.GenesListForReading)
{
if(g.def.defName== "rjw_genes_hydrolic_genitalia")
{
g.PostAdd();
}
if (g.def.defName == "rjw_genes_bionic_genitalia")
{
g.PostAdd();
return;
}
}
}
public override void Notify_OnPawnGeneration()

View file

@ -36,6 +36,18 @@ namespace RJW_Genes
});
GenderUtility.AdjustBodyToTargetGender(pawn, Gender.Male);
}
foreach (Gene g in pawn.genes.GenesListForReading)
{
if (g.def.defName == "rjw_genes_hydrolic_genitalia")
{
g.PostAdd();
}
if (g.def.defName == "rjw_genes_bionic_genitalia")
{
g.PostAdd();
return;
}
}
}
public override void Notify_OnPawnGeneration()

View file

@ -11,5 +11,8 @@ namespace RJW_Genes
public HediffDef_PartBase vagina;
public HediffDef_PartBase anus;
public HediffDef_PartBase breasts;
}
}

View file

@ -17,7 +17,7 @@ namespace RJW_Genes
Apply();
}
protected virtual void Apply()
public virtual void Apply()
{
if (this.Active)
{
@ -27,7 +27,7 @@ namespace RJW_Genes
ModLog.Error($"Gene {def} failed to change genitals - Need a modExtension with Class=\"{typeof(GenitaliaTypeExtension).FullName}\".");
return;
}
GenitaliaChanger.ChangeGenitalia(pawn, genitals.penis, genitals.vagina, genitals.anus);
GenitaliaChanger.ChangeGenitalia(pawn, genitals.penis, genitals.vagina, genitals.anus, genitals.breasts);
}
}
}

View file

@ -2,6 +2,7 @@
using RimWorld;
using Verse;
using System.Collections.Generic;
using rjw.Modules.Interactions.DefModExtensions;
namespace RJW_Genes
{
@ -16,7 +17,7 @@ namespace RJW_Genes
/// <param name="penisReplacement">the new type of penis</param>
/// <param name="vaginaReplacement">the new type of vagina</param>
/// <param name="anusReplacement">the new type of anus</param>
public static void ChangeGenitalia(Pawn pawn, HediffDef penisReplacement = null, HediffDef vaginaReplacement = null, HediffDef anusReplacement = null)
public static void ChangeGenitalia(Pawn pawn, HediffDef penisReplacement = null, HediffDef vaginaReplacement = null, HediffDef anusReplacement = null , HediffDef breastsReplacement = null)
{
var oldParts = Genital_Helper.get_AllPartsHediffList(pawn);
BodyPartRecord correctBPR;
@ -40,6 +41,12 @@ namespace RJW_Genes
if (Genital_Helper.is_vagina(existingGenital) && vaginaReplacement != null && existingGenital.def != vaginaReplacement)
replacementGenital = HediffMaker.MakeHediff(vaginaReplacement, pawn, correctBPR);
if (is_breast(existingGenital) && breastsReplacement != null && existingGenital.def != breastsReplacement)
{
correctBPR = Genital_Helper.get_breastsBPR(pawn);
replacementGenital = HediffMaker.MakeHediff(breastsReplacement, pawn, correctBPR);
}
if (IsAnus(existingGenital) && anusReplacement != null && existingGenital.def != anusReplacement)
{
correctBPR = Genital_Helper.get_anusBPR(pawn);
@ -74,6 +81,17 @@ namespace RJW_Genes
{
return candidate.def.defName.ToLower().Contains("anus"); }
public static bool is_breast(Hediff hed)
{
if (!GenitalPartExtension.TryGet(hed, out var ext))
{
return false;
}
return ext.family == rjw.Modules.Interactions.Enums.GenitalFamily.Breasts;
}
public static bool IsArtificial(Hediff candidate)
{
return candidate.def.defName.ToLower().Contains("bionic") || candidate.def.defName.ToLower().Contains("archo");
@ -88,5 +106,7 @@ namespace RJW_Genes
}
}
}
}

View file

@ -16,7 +16,6 @@ namespace RJW_Genes
/// <returns>The first GeneDef of the pawn related to GenitaliaTypes</returns>
public static GeneDef GetGenitaliaTypeGeneForPawn(Pawn pawn)
{
foreach (var gene in pawn.genes.GenesListForReading)
{
if (gene is Gene_GenitaliaType)
@ -46,23 +45,7 @@ namespace RJW_Genes
public static HediffDef GetBreastsForGene(GeneDef gene)
{
if (gene == null)
return Genital_Helper.average_breasts;
switch (gene.defName)
{
//TODO: Do I want the default to be generic or average?
case "rjw_genes_equine_genitalia": return Genital_Helper.average_breasts;
case "rjw_genes_canine_genitalia": return Genital_Helper.average_breasts;
case "rjw_genes_feline_genitalia": return Genital_Helper.average_breasts;
case "rjw_genes_demonic_genitalia": return Genital_Helper.average_breasts;
case "rjw_genes_dragon_genitalia": return Genital_Helper.average_breasts;
case "rjw_genes_slime_genitalia": return Genital_Helper.slime_breasts;
case "rjw_genes_udder_breasts": return Genital_Helper.udder_breasts;
case "rjw_genes_ovipositor_genitalia": return Genital_Helper.average_breasts;
default: return Genital_Helper.average_breasts;
}
return gene?.GetModExtension<GenitaliaTypeExtension>()?.breasts ?? Genital_Helper.average_breasts;
}
public static bool PawnStillNeedsGenitalia(Pawn pawn)

View file

@ -20,7 +20,7 @@ namespace RJW_Genes
return;
}
}
int count = 0;
int count = -1;
List<string> listquirk = new List<string>();
string s;
foreach (Gene g in partner.genes.GenesListForReading)
@ -52,7 +52,7 @@ namespace RJW_Genes
}
}
}
__result = __result + count;
if(count>0)__result = __result + count;
return;
}