diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index fac437a..095def6 100644 Binary files a/Common/Assemblies/Rjw-Genes.dll and b/Common/Assemblies/Rjw-Genes.dll differ diff --git a/Common/Defs/GeneDefs/GeneDefs_Cosmetic.xml b/Common/Defs/GeneDefs/GeneDefs_Cosmetic.xml index cfe7024..cfeab86 100644 --- a/Common/Defs/GeneDefs/GeneDefs_Cosmetic.xml +++ b/Common/Defs/GeneDefs/GeneDefs_Cosmetic.xml @@ -48,6 +48,9 @@ Genes/Icons/RJW_Genes_Endogene_Background Genes/Icons/RJW_Genes_Xenogene_Background +
  • + DemonLoverQuirk +
  • @@ -103,6 +106,9 @@ Genes/Icons/RJW_Genes_Endogene_Background Genes/Icons/RJW_Genes_Xenogene_Background +
  • + DemonLoverQuirk +
  • \ No newline at end of file diff --git a/Common/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml b/Common/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml index eaf8728..a9e9a46 100644 --- a/Common/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml +++ b/Common/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml @@ -1,7 +1,6 @@ - rjw_genes_genitalia_extras false @@ -15,6 +14,8 @@ rjw_genes_extra_penis + rjw_genes_genitalia_extras + Males of this species grow an additional penis . Genes/Icons/extra_male RJW_Genes.Gene_ExtraPenis @@ -27,6 +28,7 @@ rjw_genes_no_penis + rjw_genes_genitalia_extras Males of this do not have a penis. Genes/Icons/No_Male_Genitalia RJW_Genes.Gene_NoPenis @@ -40,6 +42,7 @@ rjw_genes_extra_vagina + rjw_genes_genitalia_extras Females of this species grow an additional vagina . Genes/Icons/Extra_Vagina RJW_Genes.Gene_ExtraVagina @@ -52,6 +55,7 @@ rjw_genes_no_vagina + rjw_genes_genitalia_extras Females of this do not have a vagina. Genes/Icons/No_Vagina RJW_Genes.Gene_NoVagina @@ -65,6 +69,7 @@ rjw_genes_extra_breasts + rjw_genes_genitalia_extras Females of this species grow an additional pair of breasts . Genes/Icons/Extra_Breasts RJW_Genes.Gene_ExtraBreasts @@ -77,6 +82,7 @@ rjw_genes_no_breasts + rjw_genes_genitalia_extras Females of this do not have a pair of breasts, but only nipples. Genes/Icons/No_Breasts RJW_Genes.Gene_NoBreasts @@ -89,6 +95,7 @@ rjw_genes_extra_anus + rjw_genes_genitalia_extras This specias has an extra anus. Genes/Icons/Extra_Anus RJW_Genes.Gene_ExtraAnus @@ -101,6 +108,7 @@ rjw_genes_no_anus + rjw_genes_genitalia_extras This specias has no anus. Genes/Icons/No_Anus RJW_Genes.Gene_NoAnus @@ -113,6 +121,7 @@ rjw_genes_futa + rjw_genes_gender Males with this gene grow additional female genitalia, females grow additional male genitalia. Genes/Icons/Futa RJW_Genes.Gene_Futa @@ -126,6 +135,7 @@ rjw_genes_femboy + rjw_genes_gender Males with this gene are considered female despite having a penis Genes/Icons/Futa RJW_Genes.Gene_Femboy @@ -138,6 +148,7 @@ rjw_genes_featureless_chest + rjw_genes_genitalia_extras Carriers of this gene do not have breasts or nipples. Genes/Icons/No_Breasts @@ -151,6 +162,7 @@ rjw_genes_udder + rjw_genes_genitalia_extras Carriers of this gene have udders and breasts. Things/Mote/Heart RJW_Genes.Gene_UdderBreasts diff --git a/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml b/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml index 6d173b9..5cc2e9d 100644 --- a/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml +++ b/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml @@ -7,7 +7,7 @@
  • GenitalType
  • - false + true 0 @@ -43,6 +43,7 @@ Penis Vagina Anus + Breasts 802 @@ -89,6 +90,10 @@ DemonVagina DemonAnus +
  • + DemonLoverQuirk +
  • +
    805
    @@ -104,6 +109,9 @@ DragonVagina GenericAnus +
  • + ScaleLoverQuirk +
  • 806 @@ -118,7 +126,11 @@ SlimeTentacles SlimeVagina SlimeAnus + SlimeBreasts +
  • + SlimeLoverQuirk +
  • 807 @@ -134,6 +146,9 @@ DemonVagina DemonAnus +
  • + DemonLoverQuirk +
  • 807 @@ -147,6 +162,9 @@
  • CrocodilianPenis
  • +
  • + ScaleLoverQuirk +
  • 807 @@ -160,6 +178,7 @@
  • RaccoonPenis
  • + 807 @@ -173,6 +192,9 @@
  • HemiPenis
  • +
  • + ScaleLoverQuirk +
  • 807 @@ -191,6 +213,9 @@ GhostPenis GhostVagina +
  • + TeratophileQuirk +
  • 807 @@ -204,6 +229,9 @@
  • GolemPenis
  • +
  • + TeratophileQuirk +
  • 807 @@ -230,6 +258,9 @@
  • NecroPenis
  • +
  • + TeratophileQuirk +
  • 807 @@ -282,15 +313,14 @@
  • TentaclePenis
  • +
  • + TeratophileQuirk +
  • 807 - - - - rjw_genes_ovipositor_genitalia @@ -302,6 +332,9 @@ OvipositorF InsectAnus +
  • + ChitinLoverQuirk +
  • 808 diff --git a/Common/Defs/GeneDefs/GeneDefs_Reproduction.xml b/Common/Defs/GeneDefs/GeneDefs_Reproduction.xml index 4e5160a..6a0878a 100644 --- a/Common/Defs/GeneDefs/GeneDefs_Reproduction.xml +++ b/Common/Defs/GeneDefs/GeneDefs_Reproduction.xml @@ -181,6 +181,13 @@ 1.10 -2 1 + + +
  • + ImpregnationFetishQuirk +
  • +
    +
    \ No newline at end of file diff --git a/Common/Defs/GeneDefs/GeneDefs_SexSpecial.xml b/Common/Defs/GeneDefs/GeneDefs_SexSpecial.xml index 0165d8f..ee8b689 100644 --- a/Common/Defs/GeneDefs/GeneDefs_SexSpecial.xml +++ b/Common/Defs/GeneDefs/GeneDefs_SexSpecial.xml @@ -82,11 +82,12 @@ rjw_genes_sexual_mytosis - Carriers of this gene grow more unstable with ongoing multiple orgasms - climaxing in a process of mytosis. This will result in an (biologically) identical pawn and both twins are set in a regenerative state. Also, the pawn can have multiple orgasms: In a state of higher unstableness, they come quicker. + Carriers have malfunctioning regenerative archites that grow more unstable with ongoing multiple orgasms - climaxing in a process of mytosis. This will result in an (biologically) identical pawn and both twins are set in a regenerative state. Also, the pawn can have multiple orgasms: In a state of higher unstableness, they come quicker. UI/Icons/Genes/Gene_PsychicBonding 5 5 -5 + 1 @@ -124,6 +125,11 @@ 1 -1 + +
  • + BreederQuirk +
  • +
    \ No newline at end of file diff --git a/Common/Patches/Genes/Vanilla_Quirk_Patch.xml b/Common/Patches/Genes/Vanilla_Quirk_Patch.xml new file mode 100644 index 0000000..40458da --- /dev/null +++ b/Common/Patches/Genes/Vanilla_Quirk_Patch.xml @@ -0,0 +1,24 @@ + + + + /Defs/GeneDef[defName="Furskin"] + + +
  • + FurLoverQuirk +
  • +
    +
    +
    + + /Defs/GeneDef[defName="Head_Gaunt"] + + +
  • + TeratophileQuirk +
  • +
    +
    +
    +
    + diff --git a/Common/Patches/Xenotypes/GenitaliaUpdate.xml b/Common/Patches/Xenotypes/GenitaliaUpdate.xml index e6a9681..1451a13 100644 --- a/Common/Patches/Xenotypes/GenitaliaUpdate.xml +++ b/Common/Patches/Xenotypes/GenitaliaUpdate.xml @@ -14,6 +14,8 @@
  • rjw_genes_much_cum
  • rjw_genes_zoophile
  • +
  • rjw_genes_Pig_genitalia
  • +
  • rjw_genes_human_genitalia
  • diff --git a/Common/Patches/Xenotypes/PatchPigskins.xml b/Common/Patches/Xenotypes/PatchPigskins.xml new file mode 100644 index 0000000..c49c4ac --- /dev/null +++ b/Common/Patches/Xenotypes/PatchPigskins.xml @@ -0,0 +1,17 @@ + + + + +
  • Vanilla Races Expanded - Pigskin
  • +
    + + Defs/XenotypeDef[defName="VRE_Boarskin"]/genes + +
  • rjw_genes_Pig_genitalia
  • +
  • rjw_genes_human_genitalia
  • +
  • rjw_genes_much_cum
  • +
  • rjw_genes_zoophile
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/Common/Patches/Xenotypes/PatchVRELycanthrope.xml b/Common/Patches/Xenotypes/PatchVRELycanthrope.xml new file mode 100644 index 0000000..6896e98 --- /dev/null +++ b/Common/Patches/Xenotypes/PatchVRELycanthrope.xml @@ -0,0 +1,28 @@ + + + + +
  • Vanilla Races Expanded - Lycanthrope
  • +
    + + Defs/XenotypeDef[defName="VRE_Wolfman"]/genes + +
  • rjw_genes_human_genitalia
  • +
  • rjw_genes_zoophile
  • +
    +
    +
    + + +
  • Vanilla Races Expanded - Lycanthrope
  • +
    + + Defs/XenotypeDef[defName="VRE_Lycan"]/genes + +
  • rjw_genes_canine_genitalia
  • +
  • rjw_genes_zoophile
  • +
  • rjw_genes_rapist
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/Common/Textures/Genes/Icons/sex_curiosity.png b/Common/Textures/Genes/Icons/sex_curiosity.png new file mode 100644 index 0000000..b5dcd7f Binary files /dev/null and b/Common/Textures/Genes/Icons/sex_curiosity.png differ diff --git a/Common/Textures/Genes/Icons/sex_disabled.png b/Common/Textures/Genes/Icons/sex_disabled.png new file mode 100644 index 0000000..9ce4983 Binary files /dev/null and b/Common/Textures/Genes/Icons/sex_disabled.png differ diff --git a/Common/Textures/Genes/Icons/sex_enabled.png b/Common/Textures/Genes/Icons/sex_enabled.png new file mode 100644 index 0000000..86e0a6b Binary files /dev/null and b/Common/Textures/Genes/Icons/sex_enabled.png differ diff --git a/LoadFolders.xml b/LoadFolders.xml index d708230..357a4db 100644 --- a/LoadFolders.xml +++ b/LoadFolders.xml @@ -5,5 +5,15 @@
  • Common
  • Mods/NotRaceSupport
  • +
  • Mods/Sanguophage
  • +
  • Mods/Saurid
  • +
  • Mods/Phytokin
  • +
  • Mods/Lycanthrope
  • +
  • Mods/Highmate
  • +
  • Mods/Genie
  • +
  • Mods/Fungoid
  • +
  • Mods/Archon
  • +
  • Mods/Android
  • +
  • Mods/VE_Genetics
  • \ No newline at end of file diff --git a/Mods/Android/Defs/AndroidConvertableGenesDefs/AndroidConvertableGenesDefs.xml b/Mods/Android/Defs/AndroidConvertableGenesDefs/AndroidConvertableGenesDefs.xml new file mode 100644 index 0000000..2977367 --- /dev/null +++ b/Mods/Android/Defs/AndroidConvertableGenesDefs/AndroidConvertableGenesDefs.xml @@ -0,0 +1,11 @@ + + + + rjw_genes_AndroidConvertableGenesDefs + +
  • rjw_genes_gender
  • +
    + + +
    +
    \ No newline at end of file diff --git a/Mods/Android/Defs/GeneDefs/GeneDefs_Androids.xml b/Mods/Android/Defs/GeneDefs/GeneDefs_Androids.xml new file mode 100644 index 0000000..058d719 --- /dev/null +++ b/Mods/Android/Defs/GeneDefs/GeneDefs_Androids.xml @@ -0,0 +1,54 @@ + + + + rjw_genes_bionic_genitalia + + RJW_Genes.Gene_GenitaliaType + This piece of hardware is a set of bionic genitals of high quality + Genes/Icons/Genitalia_human + +
  • + BionicPenis + BionicVagina + BionicAnus + BionicBreasts +
  • +
    + 802 + -2 +
    + + + rjw_genes_hydrolic_genitalia + + RJW_Genes.Gene_GenitaliaType + This piece of hardware is a set of crude hydrolic genitals, at least it come with a suspension system + Genes/Icons/Genitalia_human + +
  • + HydraulicPenis + HydraulicVagina + HydraulicAnus + HydraulicBreasts +
  • +
    + 802 + + 1.12 + +
    + + + rjw_genes_SexDisabled + + Androids do not feel satisfaction from sex, and have no need to feel it. + Genes/Icons/sex_disabled + 3 + 1 + +
  • Sex
  • +
    + true +
    + +
    \ No newline at end of file diff --git a/Mods/Android/Patches/Android_Quirk_Patch.xml b/Mods/Android/Patches/Android_Quirk_Patch.xml new file mode 100644 index 0000000..52f9333 --- /dev/null +++ b/Mods/Android/Patches/Android_Quirk_Patch.xml @@ -0,0 +1,26 @@ + + + + /Defs/VREAndroids.AndroidGeneDef[defName="VREA_SyntheticBody"] + +
  • + RobotLoverQuirk +
  • +
    +
    + + /Defs/VREAndroids.AndroidGeneDef[defName="VREA_SyntheticSkin"] + +
  • + RobotLoverQuirk +
  • +
    +
    + + /Defs/GeneCategoryDef[defName="VREA_Subroutine"]/displayPriorityInXenotype + + 10 + + +
    + diff --git a/Mods/Archon/Patches/Archon_Quirk_Patch.xml b/Mods/Archon/Patches/Archon_Quirk_Patch.xml new file mode 100644 index 0000000..0f7e119 --- /dev/null +++ b/Mods/Archon/Patches/Archon_Quirk_Patch.xml @@ -0,0 +1,12 @@ + + + + /Defs/GeneDef[defName="VRE_Leatherskin"] + +
  • + SkinLoverQuirk +
  • +
    +
    +
    + diff --git a/Mods/Fungoid/Patches/Fungoid_Quirk_Patch.xml b/Mods/Fungoid/Patches/Fungoid_Quirk_Patch.xml new file mode 100644 index 0000000..bcb1e72 --- /dev/null +++ b/Mods/Fungoid/Patches/Fungoid_Quirk_Patch.xml @@ -0,0 +1,28 @@ + + + + /Defs/GeneDef[defName="VRE_FungalCrest"] + +
  • + PlantLoverQuirk +
  • +
    +
    + + /Defs/GeneDef[defName="VRE_HairMushroom"] + +
  • + PlantLoverQuirk +
  • +
    +
    + + /Defs/GeneDef[defName="VRE_FungalFlesh"] + +
  • + PlantLoverQuirk +
  • +
    +
    +
    + diff --git a/Mods/Genie/Defs/GeneDefs/GeneDefs_Curiosity_sex.xml b/Mods/Genie/Defs/GeneDefs/GeneDefs_Curiosity_sex.xml new file mode 100644 index 0000000..98cd404 --- /dev/null +++ b/Mods/Genie/Defs/GeneDefs/GeneDefs_Curiosity_sex.xml @@ -0,0 +1,30 @@ + + + + + VRE_Curiosity + +
  • VRE_Curiosity
  • +
  • Curiosity
  • +
    + -2 + 2 +
    + + + VRE_Curiosity_Sex + + 0 + 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. + + Genes/Icons/sex_curiosity + +
  • + Sex + Sex +
  • +
    +
    + + +
    \ No newline at end of file diff --git a/Mods/Highmate/Patches/Highmate_Quirk_Patch.xml b/Mods/Highmate/Patches/Highmate_Quirk_Patch.xml new file mode 100644 index 0000000..0f69977 --- /dev/null +++ b/Mods/Highmate/Patches/Highmate_Quirk_Patch.xml @@ -0,0 +1,28 @@ + + + + /Defs/GeneDef[defName="VRE_FelineEars"] + +
  • + FurLoverQuirk +
  • +
    +
    + + /Defs/GeneDef[defName="VRE_FelineTail"] + +
  • + FurLoverQuirk +
  • +
    +
    + + /Defs/GeneDef[defName="VRE_PerfectBody"] + +
  • + SkinLoverQuirk +
  • +
    +
    +
    + diff --git a/Mods/Lycanthrope/Patches/Lycanthrope_Quirk_Patch.xml b/Mods/Lycanthrope/Patches/Lycanthrope_Quirk_Patch.xml new file mode 100644 index 0000000..475950c --- /dev/null +++ b/Mods/Lycanthrope/Patches/Lycanthrope_Quirk_Patch.xml @@ -0,0 +1,20 @@ + + + + /Defs/GeneDef[defName="VRE_ChestFur"] + +
  • + FurLoverQuirk +
  • +
    +
    + + /Defs/GeneDef[defName="VRE_CanineTail"] + +
  • + FurLoverQuirk +
  • +
    +
    +
    + diff --git a/Mods/Phytokin/Patches/Phytokin_Quirk_Patch.xml b/Mods/Phytokin/Patches/Phytokin_Quirk_Patch.xml new file mode 100644 index 0000000..78089d4 --- /dev/null +++ b/Mods/Phytokin/Patches/Phytokin_Quirk_Patch.xml @@ -0,0 +1,28 @@ + + + + /Defs/GeneDef[defName="VRE_BarkSkin"] + +
  • + PlantLoverQuirk +
  • +
    +
    + + /Defs/GeneDef[defName="VRE_FoliageHair"] + +
  • + PlantLoverQuirk +
  • +
    +
    + + /Defs/GeneDef[defName="VRE_SapBlood"] + +
  • + PlantLoverQuirk +
  • +
    +
    +
    + diff --git a/Mods/Sanguophage/Patches/Sanguophage_Quirk_Patch.xml b/Mods/Sanguophage/Patches/Sanguophage_Quirk_Patch.xml new file mode 100644 index 0000000..cf01f46 --- /dev/null +++ b/Mods/Sanguophage/Patches/Sanguophage_Quirk_Patch.xml @@ -0,0 +1,44 @@ + + + + /Defs/GeneDef[defName="VRE_SanguineHair"] + +
  • + DemonLoverQuirk +
  • +
    +
    + + /Defs/GeneDef[defName="VRE_BatEars"] + +
  • + TeratophileQuirk +
  • +
    +
    + + /Defs/GeneDef[defName="VRE_UpperBatEars"] + +
  • + TeratophileQuirk +
  • +
    +
    + + /Defs/GeneDef[defName="VRE_Talons"] + +
  • + DemonLoverQuirk +
  • +
    +
    + + /Defs/GeneDef[defName="VRE_BatNose"] + +
  • + TeratophileQuirk +
  • +
    +
    +
    + diff --git a/Mods/Saurid/Patches/Saurid_Quirk_Patch.xml b/Mods/Saurid/Patches/Saurid_Quirk_Patch.xml new file mode 100644 index 0000000..37188ff --- /dev/null +++ b/Mods/Saurid/Patches/Saurid_Quirk_Patch.xml @@ -0,0 +1,44 @@ + + + + /Defs/GeneDef[defName="VRESaurids_FrilledEars"] + +
  • + ScaleLoverQuirk +
  • +
    +
    + + /Defs/GeneDef[defName="VRESaurids_CenterFrill"] + +
  • + ScaleLoverQuirk +
  • +
    +
    + + /Defs/GeneDef[defName="VRESaurids_GeckoTail"] + +
  • + ScaleLoverQuirk +
  • +
    +
    + + /Defs/GeneDef[defName="VRESaurids_SauridClaws"] + +
  • + ScaleLoverQuirk +
  • +
    +
    + + /Defs/GeneDef[defName="VRESaurids_ScaleSkin"] + +
  • + ScaleLoverQuirk +
  • +
    +
    +
    + diff --git a/Mods/VE_Genetics/Defs/HedifDef/Hediffs_Animals.xml b/Mods/VE_Genetics/Defs/HedifDef/Hediffs_Animals.xml new file mode 100644 index 0000000..771a0c6 --- /dev/null +++ b/Mods/VE_Genetics/Defs/HedifDef/Hediffs_Animals.xml @@ -0,0 +1,22 @@ + + + + + + + RJWGenes_AnimalControlHediff + + This creature is more controlable with a natural huamn part. + HediffWithComps + (0.9, 1.0, 0.35) + 1 + +
  • + true +
  • +
    + false +
    + + +
    \ No newline at end of file diff --git a/Mods/VE_Genetics/Defs/RaceGeneDef/RaceGeneDefs_VEgenetic.xml b/Mods/VE_Genetics/Defs/RaceGeneDef/RaceGeneDefs_VEgenetic.xml new file mode 100644 index 0000000..a4d43ef --- /dev/null +++ b/Mods/VE_Genetics/Defs/RaceGeneDef/RaceGeneDefs_VEgenetic.xml @@ -0,0 +1,654 @@ + + + + + GR_Manbear_GenGroup + + +
  • GR_Manbear
  • +
  • GR_Bearman
  • +
    + + + +
  • + Immunity_Strong + 0.8 +
  • +
  • + MinTemp_LargeDecrease + 0.8 +
  • +
  • + Aggression_Aggressive + 0.8 +
  • +
  • + Sleepy + 0.8 +
  • +
  • + Beard_Always + 0.8 +
  • +
  • + VoiceRoar + 0.8 +
  • +
  • + Body_Fat + 0.8 +
  • +
  • + Body_Hulk + 0.8 +
  • +
  • + Hair_ReddishBrown + 0.8 +
  • +
  • + Hair_DarkBrown + 0.8 +
  • +
  • + Hair_DarkSaturatedReddish + 0.8 +
  • +
  • + Hair_DarkReddish + 0.8 +
  • +
  • + RobustDigestion + 0.8 +
  • +
  • + Furskin + 0.8 +
  • +
  • + Unstoppable + 0.8 +
  • +
  • + AptitudeTerrible_Artistic + 0.8 +
  • +
  • + AptitudeTerrible_Social + 0.8 +
  • +
  • + AptitudePoor_Intellectual + 0.8 +
  • + +
    + +
    + + + GR_Manalope_GenGroup + + +
  • GR_Manalope
  • +
  • GR_Booman
  • +
    + + + +
  • + FireSpew + 0.8 +
  • +
  • + Beauty_Ugly + 0.8 +
  • +
  • + Hair_Blonde + 0.8 +
  • +
  • + Hair_SandyBlonde + 0.8 +
  • +
  • + Hair_LightOrange + 0.8 +
  • +
  • + rjw_genes_udder + 0.8 +
  • + +
    + +
    + + + GR_Manchicken_GenGroup + + +
  • GR_Manchicken
  • +
  • GR_Turkeyman
  • +
    + + + +
  • + Mood_Optimist + 0.8 +
  • +
  • + Delicate + 0.8 +
  • +
  • + Beauty_Pretty + 0.8 +
  • +
  • + Body_Thin + 0.8 +
  • +
  • + AptitudeTerrible_Melee + 0.8 +
  • +
  • + AptitudeTerrible_Mining + 0.8 +
  • +
  • + AptitudeRemarkable_Social + 0.8 +
  • +
  • + AptitudeStrong_Intellectual + 0.8 +
  • + +
    + +
    + + + GR_Manffalo_GenGroup + + +
  • GR_Manffalo
  • +
  • GR_Muffaloman
  • +
    + + + +
  • + Headbone_Human + 0.9 +
  • +
  • + Headbone_MiniHorns + 0.9 +
  • +
  • + Furskin + 0.9 +
  • +
  • + MinTemp_SmallIncrease + 0.9 +
  • +
  • + rjw_genes_big_male_genitalia + 0.7 +
  • +
  • + rjw_genes_loose_female_genitalia + 0.7 +
  • +
  • + rjw_genes_big_breasts + 0.7 +
  • +
  • + rjw_genes_udder + 0.7 +
  • +
  • + rjw_genes_Needle_genitalia + 0.7 +
  • +
  • + rjw_mc_genes_perm_lactating + 0.05 +
  • +
  • + rjw_genes_zoophile + 0.5 +
  • +
  • + AptitudeTerrible_Intellectual + 0.05 +
  • +
  • + AptitudePoor_Intellectual + 0.7 +
  • +
    + +
    + + + GR_Manwolf_GenGroup + + +
  • GR_Manwolf
  • +
  • GR_Dogman
  • +
    + + + +
  • + AptitudeTerrible_Mining + 0.05 +
  • +
  • + PsychicBonding + 0.05 +
  • +
  • + Mood_Sanguine + 0.05 +
  • +
  • + Ears_Floppy + 0.9 +
  • +
  • + rjw_genes_canine_genitalia + 0.9 +
  • +
  • + Furskin + 0.9 +
  • +
  • + MinTemp_SmallIncrease + 0.9 +
  • +
  • + Libido_High + 0.9 +
  • +
  • + AptitudePoor_Mining + 0.5 +
  • +
  • + rjw_genes_zoophile + 0.5 +
  • +
  • + Mood_Optimist + 0.5 +
  • +
    + +
    + + + GR_Mancat_GenGroup + + +
  • GR_Mancat
  • +
  • GR_Catman
  • +
    + + + +
  • + PsychicBonding + 0.05 +
  • +
  • + AptitudeTerrible_Animals + 0.05 +
  • +
  • + Ears_Cat + 0.9 +
  • +
  • + Body_Thin + 0.9 +
  • +
  • + rjw_genes_feline_genitalia + 0.9 +
  • +
  • + Furskin + 0.9 +
  • +
  • + MinTemp_SmallIncrease + 0.9 +
  • +
  • + rjw_genes_small_male_genitalia + 0.7 +
  • +
  • + rjw_genes_tight_female_genitalia + 0.7 +
  • +
  • + rjw_genes_small_breasts + 0.7 +
  • +
  • + rjw_genes_tight_anus + 0.7 +
  • +
  • + DarkVision + 0.8 +
  • +
  • + AptitudePoor_Animals + 0.5 +
  • +
  • + Beauty_Pretty + 0.7 +
  • +
  • + rjw_genes_zoophile + 0.5 +
  • +
    + +
    + + + GR_Mansquirrel_GenGroup + + +
  • GR_Mansquirrel
  • +
  • GR_Moleman
  • +
    + + + +
  • + MoveSpeed_VeryQuick + 0.8 +
  • +
  • + KindInstinct + 0.8 +
  • +
  • + Delicate + 0.8 +
  • +
  • + Ears_Cat + 0.8 +
  • +
  • + Body_Thin + 0.8 +
  • +
  • + Tail_Furry + 0.8 +
  • +
  • + AptitudeTerrible_Shooting + 0.8 +
  • +
  • + AptitudeTerrible_Melee + 0.8 +
  • +
  • + AptitudeTerrible_Mining + 0.8 +
  • +
  • + AptitudeTerrible_Animals + 0.8 +
  • +
  • + AptitudeStrong_Intellectual + 0.8 +
  • +
  • + rjw_genes_Needle_genitalia + 0.8 +
  • +
  • + rjw_genes_zoophile + 0.8 +
  • + +
    + +
    + + + GR_Thrumboman_GenGroup + + +
  • GR_Thrumboman
  • +
    + + + +
  • + Unstoppable + 0.25 +
  • +
  • + Headbone_CenterHorn + 0.9 +
  • +
  • + VoiceRoar + 0.6 +
  • +
  • + MaxTemp_SmallIncrease + 0.7 +
  • +
  • + MaxTemp_LargeIncrease + 0.1 +
  • +
  • + rjw_genes_dragon_genitalia + 0.6 +
  • +
  • + FireResistant + 0.15 +
  • +
  • + rjw_genes_much_cum + 0.3 +
  • +
  • + rjw_genes_very_much_cum + 0.05 +
  • +
  • + Body_Hulk + 0.7 +
  • + +
    + +
    + + + + + GR_Hurseman_GenGroup + + +
  • GR_Hurseman
  • +
    + + + +
  • + Body_Standard + 0.9 +
  • +
  • + Body_Hulk + 0.7 +
  • +
  • + rjw_genes_equine_genitalia + 0.9 +
  • +
  • + rjw_genes_zoophile + 0.5 +
  • +
  • + rjw_genes_much_cum + 0.5 +
  • +
  • + MoveSpeed_Quick + 0.5 +
  • +
  • + AptitudeTerrible_Mining + 0.5 +
  • +
  • + AptitudeTerrible_Intellectual + 0.5 +
  • +
  • + Furskin + 0.9 +
  • +
  • + MinTemp_SmallIncrease + 0.9 +
  • + +
    + +
    + + + + + GR_Manscarab_GenGroup + + +
  • GR_Manscarab
  • +
    + + + +
  • + Beauty_Ugly + 0.5 +
  • +
  • + Immunity_Strong + 0.6 +
  • +
  • + ToxicEnvironmentResistance_Partial + 0.4 +
  • +
  • + rjw_genes_ovipositor_genitalia + 0.15 +
  • +
  • + rjw_genes_insectincubator + 0.1 +
  • +
  • + rjw_genes_insectbreeder + 0.1 +
  • +
  • + Body_Thin + 0.3 +
  • + +
    + +
    + + + GR_Lizardman_GenGroup + + +
  • GR_Lizardman
  • +
    + + + +
  • + AcidSpray + 0.7 +
  • +
  • + MinTemp_SmallIncrease + 0.7 +
  • +
  • + MaxTemp_SmallIncrease + 0.7 +
  • +
  • + Robust + 0.7 +
  • +
  • + Hair_BaldOnly + 0.7 +
  • +
  • + Beard_NoBeardOnly + 0.7 +
  • +
  • + Body_Standard + 0.7 +
  • +
  • + Headbone_CenterHorn + 0.7 +
  • +
  • + AptitudeTerrible_Artistic + 0.7 +
  • +
  • + AptitudeTerrible_Social + 0.7 +
  • +
  • + rjw_genes_reptilian_genitalia + 0.7 +
  • + +
    + +
    + +
    \ No newline at end of file diff --git a/Mods/VE_Genetics/Defs/RaceGroupDef/Hybrid_Group.xml b/Mods/VE_Genetics/Defs/RaceGroupDef/Hybrid_Group.xml new file mode 100644 index 0000000..ab3ba01 --- /dev/null +++ b/Mods/VE_Genetics/Defs/RaceGroupDef/Hybrid_Group.xml @@ -0,0 +1,795 @@ + + + + + Bear_Grizzly_Group + +
  • Human
  • +
  • Bear_Grizzly
  • +
    + +
  • GR_Manbear
  • +
  • GR_Bearman
  • +
    +
    + + + Bear_Polar_Group + +
  • Human
  • +
  • Bear_Polar
  • +
    + + +
  • GR_Manbear
  • +
  • GR_Bearman
  • +
    +
    + + + GR_Manbear_Group + +
  • Human
  • +
  • GR_Manbear
  • +
    + + +
  • Human
  • +
    +
    + + + GR_Bearman_Group + +
  • Human
  • +
  • GR_Bearman
  • +
    + + +
  • Human
  • +
    +
    + + + Boomalope_Group + +
  • Human
  • +
  • Boomalope
  • +
    + + +
  • GR_Manalope
  • +
  • GR_Booman
  • +
    +
    + + + GR_Manalope_Group + +
  • Human
  • +
  • GR_Manalope
  • +
    + + +
  • Human
  • +
    +
    + + + GR_Booman_Group + +
  • Human
  • +
  • GR_Booman
  • +
    + + +
  • Human
  • +
    +
    + + + Chicken_Group + +
  • Human
  • +
  • Chicken
  • +
    + + +
  • GR_Manchicken
  • +
  • GR_Turkeyman
  • +
    +
    + + + Duck_Group + +
  • Human
  • +
  • Duck
  • +
    + + +
  • GR_Manchicken
  • +
  • GR_Turkeyman
  • +
    +
    + + + Turkey_Group + +
  • Human
  • +
  • Turkey
  • +
    + + +
  • GR_Manchicken
  • +
  • GR_Turkeyman
  • +
    +
    + + + Goose_Group + +
  • Human
  • +
  • Goose
  • +
    + + +
  • GR_Manchicken
  • +
  • GR_Turkeyman
  • +
    +
    + + + Ostrich_Group + +
  • Human
  • +
  • Ostrich
  • +
    + + +
  • GR_Manchicken
  • +
  • GR_Turkeyman
  • +
    +
    + + + Emu_Group + +
  • Human
  • +
  • Emu
  • +
    + + +
  • GR_Manchicken
  • +
  • GR_Turkeyman
  • +
    +
    + + + Cassowary_Group + +
  • Human
  • +
  • Cassowary
  • +
    + + +
  • GR_Manchicken
  • +
  • GR_Turkeyman
  • +
    +
    + + + GR_Manchicken_Group + +
  • Human
  • +
  • GR_Manchicken
  • +
    + + +
  • Human
  • +
    +
    + + + GR_Turkeyman_Group + +
  • Human
  • +
  • GR_Turkeyman
  • +
    + + +
  • Human
  • +
    +
    + + + Cow_Group + +
  • Human
  • +
  • Cow
  • +
    + + +
  • GR_Manffalo
  • +
  • GR_Muffaloman
  • +
    +
    + + + Muffalo_Group + +
  • Human
  • +
  • Muffalo
  • +
    + + +
  • GR_Manffalo
  • +
  • GR_Muffaloman
  • +
    +
    + + + Bison_Group + +
  • Human
  • +
  • Bison
  • +
    + + +
  • GR_Manffalo
  • +
  • GR_Muffaloman
  • +
    +
    + + + Yak_Group + +
  • Human
  • +
  • Yak
  • +
    + + +
  • GR_Manffalo
  • +
  • GR_Muffaloman
  • +
    +
    + + + GR_Manffalo_Group + +
  • Human
  • +
  • GR_Manffalo
  • +
    + + +
  • Human
  • +
    +
    + + + GR_Muffaloman_Group + +
  • Human
  • +
  • GR_Muffaloman
  • +
    + + +
  • Human
  • +
    +
    + + + Warg_Group + +
  • Human
  • +
  • Warg
  • +
    + + +
  • GR_Manwolf
  • +
  • GR_Dogman
  • +
    +
    + + + Wolf_Timber_Group + +
  • Human
  • +
  • Wolf_Timber
  • +
    + + +
  • GR_Manwolf
  • +
  • GR_Dogman
  • +
    +
    + + + Wolf_Arctic_Group + +
  • Human
  • +
  • Wolf_Arctic
  • +
    + + +
  • GR_Manwolf
  • +
  • GR_Dogman
  • +
    +
    + + + Fox_Fennec_Group + +
  • Human
  • +
  • Fox_Fennec
  • +
    + + +
  • GR_Manwolf
  • +
  • GR_Dogman
  • +
    +
    + + + Fox_Red_Group + +
  • Human
  • +
  • Fox_Red
  • +
    + + +
  • GR_Manwolf
  • +
  • GR_Dogman
  • +
    +
    + + + Fox_Arctic_Group + +
  • Human
  • +
  • Fox_Arctic
  • +
    + + +
  • GR_Manwolf
  • +
  • GR_Dogman
  • +
    +
    + + + Husky_Group + +
  • Human
  • +
  • Husky
  • +
    + + +
  • GR_Manwolf
  • +
  • GR_Dogman
  • +
    +
    + + + LabradorRetriever_Group + +
  • Human
  • +
  • LabradorRetriever
  • +
    + + +
  • GR_Manwolf
  • +
  • GR_Dogman
  • +
    +
    + + + YorkshireTerrier_Group + +
  • Human
  • +
  • YorkshireTerrier
  • +
    + + +
  • GR_Manwolf
  • +
  • GR_Dogman
  • +
    +
    + + + GR_Manwolf_Group + +
  • Human
  • +
  • GR_Manwolf
  • +
    + + +
  • Human
  • +
    +
    + + + GR_Dogman_Group + +
  • Human
  • +
  • GR_Dogman
  • +
    + + +
  • Human
  • +
    +
    + + + Cougar_Group + +
  • Human
  • +
  • Cougar
  • +
    + + +
  • GR_Mancat
  • +
  • GR_Catman
  • +
    +
    + + + Panther_Group + +
  • Human
  • +
  • Panther
  • +
    + + +
  • GR_Mancat
  • +
  • GR_Catman
  • +
    +
    + + + Lynx_Group + +
  • Human
  • +
  • Lynx
  • +
    + + +
  • GR_Mancat
  • +
  • GR_Catman
  • +
    +
    + + + Cat_Group + +
  • Human
  • +
  • Cat
  • +
    + + +
  • GR_Mancat
  • +
  • GR_Catman
  • +
    +
    + + + GR_Mancat_Group + +
  • Human
  • +
  • GR_Mancat
  • +
    + + +
  • Human
  • +
    +
    + + + GR_Catman_Group + +
  • Human
  • +
  • GR_Catman
  • +
    + + +
  • Human
  • +
    +
    + + + GuineaPig_Group + +
  • Human
  • +
  • GuineaPig
  • +
    + + +
  • GR_Mansquirrel
  • +
  • GR_Moleman
  • +
    +
    + + + Hare_Group + +
  • Human
  • +
  • Hare
  • +
    + + +
  • GR_Mansquirrel
  • +
  • GR_Moleman
  • +
    +
    + + + Snowhare_Group + +
  • Human
  • +
  • Snowhare
  • +
    + + +
  • GR_Mansquirrel
  • +
  • GR_Moleman
  • +
    +
    + + + Squirrel_Group + +
  • Human
  • +
  • Squirrel
  • +
    + + +
  • GR_Mansquirrel
  • +
  • GR_Moleman
  • +
    +
    + + + Rat_Group + +
  • Human
  • +
  • Rat
  • +
    + + +
  • GR_Mansquirrel
  • +
  • GR_Moleman
  • +
    +
    + + + Raccoon_Group + +
  • Human
  • +
  • Raccoon
  • +
    + + +
  • GR_Mansquirrel
  • +
  • GR_Moleman
  • +
    +
    + + + GR_Mansquirrel_Group + +
  • Human
  • +
  • GR_Mansquirrel
  • +
    + + +
  • Human
  • +
    +
    + + + GR_Moleman_Group + +
  • Human
  • +
  • GR_Moleman
  • +
    + + +
  • Human
  • +
    +
    + + + Thrumbo_Group + +
  • Human
  • +
  • Thrumbo
  • +
    + + +
  • GR_Thrumboman
  • +
    +
    + + + GR_Thrumboman_Group + +
  • Human
  • +
  • GR_Thrumboman
  • +
    + + +
  • Human
  • +
    +
    + + + + + + Dromedary_Group + +
  • Human
  • +
  • Dromedary
  • +
    + + +
  • GR_Hurseman
  • +
    +
    + + + Elk_Group + +
  • Human
  • +
  • Elk
  • +
    + + +
  • GR_Hurseman
  • +
    +
    + + + Horse_Group + +
  • Human
  • +
  • Horse
  • +
    + + +
  • GR_Hurseman
  • +
    +
    + + + Caribou_Group + +
  • Human
  • +
  • Caribou
  • +
    + + +
  • GR_Hurseman
  • +
    +
    + + + Donkey_Group + +
  • Human
  • +
  • Donkey
  • +
    + + +
  • GR_Hurseman
  • +
    +
    + + + GR_Hurseman_Group + +
  • Human
  • +
  • GR_Hurseman
  • +
    + + +
  • Human
  • +
    +
    + + + Megascarab_Group + +
  • Human
  • +
  • Megascarab
  • +
    + + +
  • GR_Manscarab
  • +
    +
    + + + Spelopede_Group + +
  • Human
  • +
  • Spelopede
  • +
    + + +
  • GR_Manscarab
  • +
    +
    + + + Megaspider_Group + +
  • Human
  • +
  • Megaspider
  • +
    + + +
  • GR_Manscarab
  • +
    +
    + + + GR_Manscarab_Group + +
  • Human
  • +
  • GR_Manscarab
  • +
    + + +
  • Human
  • +
    +
    + + + Iguana_Group + +
  • Human
  • +
  • Iguana
  • +
    + + +
  • GR_Lizardman
  • +
    +
    + + + Cobra_Group + +
  • Human
  • +
  • Cobra
  • +
    + + +
  • GR_Lizardman
  • +
    +
    + + + Tortoise_Group + +
  • Human
  • +
  • Tortoise
  • +
    + + +
  • GR_Lizardman
  • +
    +
    + + + GR_Lizardman_Group + +
  • Human
  • +
  • GR_Lizardman
  • +
    + + +
  • Human
  • +
    +
    + +
    diff --git a/Source/Animal_Inheritance/Patches/BasePregnancyPatcher.cs b/Source/Animal_Inheritance/Patches/BasePregnancyPatcher.cs new file mode 100644 index 0000000..3028e7c --- /dev/null +++ b/Source/Animal_Inheritance/Patches/BasePregnancyPatcher.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using UnityEngine; +using HarmonyLib; +using rjw; + +namespace RJW_BGS +{ + [HarmonyPatch(typeof(Hediff_BasePregnancy))] + public class BasePregnancyPatcher + { + public static List racesgen1 = new List() + { + "GR_Manbear", + "GR_Bearman", + "GR_Manalope", + "GR_Booman", + "GR_Manchicken", + "GR_Turkeyman", + "GR_Manffalo", + "GR_Muffaloman", + "GR_Manwolf", + "GR_Dogman", + "GR_Mancat", + "GR_Catman", + "GR_Mansquirrel", + "GR_Moleman", + "GR_Thrumboman", + "GR_Hurseman", + "GR_Manscarab", + "GR_Lizardman" + }; + + public static List racesgen0 = new List() + { + "Bear_Grizzly", + "Bear_Polar", + "Boomalope", + "Chicken", + "Duck", + "Turkey", + "Goose", + "Ostrich", + "Emu", + "Cassowary", + "Cow", + "Muffalo", + "Bison", + "Yak", + "Warg", + "Wolf_Timber", + "Wolf_Arctic", + "Fox_Fennec", + "Fox_Red", + "Fox_Arctic", + "Husky", + "LabradorRetriever", + "YorkshireTerrier", + "Cougar", + "Panther", + "Lynx", + "Cat", + "GuineaPig", + "Hare", + "Snowhare", + "Squirrel", + "Rat", + "Raccoon", + "Thrumbo", + "Dromedary", + "Elk", + "Horse", + "Caribou", + "Donkey", + "Megascarab", + "Spelopede", + "Megaspider", + "Iguana", + "Cobra", + "Tortoise" + }; + public static HediffDef controler = DefDatabase.GetNamed("RJWGenes_AnimalControlHediff", true); + [HarmonyPostfix] + [HarmonyPatch("GenerateBabies")] + public static void addHedif (Hediff_BasePregnancy __instance) + { + if (controler == null) return; + + foreach (Pawn p in __instance.babies) + { + if(p != null) + { + if (racesgen1.Contains(p.kindDef.race.defName)) + { + p.health.AddHediff(controler); + } + } + } + } + + + + } +} diff --git a/Source/Animal_Inheritance/Patches/PregnancyHelperPatcher.cs b/Source/Animal_Inheritance/Patches/PregnancyHelperPatcher.cs new file mode 100644 index 0000000..a0893df --- /dev/null +++ b/Source/Animal_Inheritance/Patches/PregnancyHelperPatcher.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using RJW_BGS; +using HarmonyLib; +using rjw; +using static rjw.Hediff_BasePregnancy; + +namespace RJW_BGS +{ + [HarmonyPatch(typeof(PregnancyHelper))] + public class PregnancyHelperPatcher + { + + [HarmonyPrefix] + [HarmonyPatch("AddPregnancyHediff")] + public static bool AddPregnancyHediffPrefix(Pawn mother, Pawn father) + { + if (!RJW_BGSSettings.rjw_bgs_VE_genetics) return true; + if (mother == null || father == null) return true; + bool a = mother.IsHuman() && BasePregnancyPatcher.racesgen0.Contains(father.kindDef.race.defName); + bool b = mother.IsHuman() && BasePregnancyPatcher.racesgen1.Contains(father.kindDef.race.defName); + bool c = father.IsHuman() && BasePregnancyPatcher.racesgen0.Contains(mother.kindDef.race.defName); + bool d = father.IsHuman() && BasePregnancyPatcher.racesgen1.Contains(mother.kindDef.race.defName); + + if (!(a || b||c|| d)) return true; + if (a) + { + Hediff_BasePregnancy.Create(mother, father, DnaGivingParent.Father); + return false; + } + else if (b) + { + ModLog.Message("preg hediffdefof PregnantHuman " + RimWorld.HediffDefOf.PregnantHuman); + PregnancyHelper.StartVanillaPregnancy(mother, father); + return false; + } + else if (c) + { + Hediff_BasePregnancy.Create(mother, father, DnaGivingParent.Mother); + return false; + } + else if (d) + { + Hediff_BasePregnancy.Create(mother, father, DnaGivingParent.Father); + return false; + } + return true; + } + + } +} diff --git a/Source/Animal_Inheritance/Settings/RJW_BGSSettings.cs b/Source/Animal_Inheritance/Settings/RJW_BGSSettings.cs index d619354..d853424 100644 --- a/Source/Animal_Inheritance/Settings/RJW_BGSSettings.cs +++ b/Source/Animal_Inheritance/Settings/RJW_BGSSettings.cs @@ -30,6 +30,8 @@ namespace RJW_BGS listing_Standard.Gap(5f); listing_Standard.CheckboxLabeled("genes as xenogenes", ref rjw_bgs_animal_genes_as_xenogenes, "If toggled, animal genes will be added as xenogenes.", 0f, 1f); listing_Standard.Gap(5f); + listing_Standard.CheckboxLabeled("enable VE genetics hybridation", ref rjw_bgs_VE_genetics, "If enabled and if you have VE genetics it will enable the hybridation system.", 0f, 1f); + listing_Standard.Gap(5f); listing_Standard.CheckboxLabeled("detailed-debug", ref rjw_bgs_detailed_debug, "Adds detailed information to the log about pregnancies and genes.", 0f, 1f); listing_Standard.End(); } @@ -41,11 +43,13 @@ namespace RJW_BGS Scribe_Values.Look(ref RJW_BGSSettings.rjw_bgs_global_gene_chance, "rjw_bgs_global_gene_chance", RJW_BGSSettings.rjw_bgs_global_gene_chance, true); Scribe_Values.Look(ref RJW_BGSSettings.rjw_bgs_animal_genes_as_xenogenes, "rjw_bgs_animal_genes_as_xenogenes", RJW_BGSSettings.rjw_bgs_animal_genes_as_xenogenes, true); Scribe_Values.Look(ref RJW_BGSSettings.rjw_bgs_detailed_debug, "rjw_bgs_detailed_debug", RJW_BGSSettings.rjw_bgs_detailed_debug, true); + Scribe_Values.Look(ref RJW_BGSSettings.rjw_bgs_VE_genetics, "rjw_bgs_VE_genetics", RJW_BGSSettings.rjw_bgs_VE_genetics, true); } public static float rjw_bgs_global_gene_chance = 1f; public static bool rjw_bgs_enabled = true; public static bool rjw_bgs_animal_genes_as_xenogenes = false; public static bool rjw_bgs_detailed_debug = false; + public static bool rjw_bgs_VE_genetics = true; } } diff --git a/Source/Common/patches/PatchGetParents.cs b/Source/Common/patches/PatchGetParents.cs index 9038d17..98f3aff 100644 --- a/Source/Common/patches/PatchGetParents.cs +++ b/Source/Common/patches/PatchGetParents.cs @@ -125,5 +125,43 @@ namespace RJW_Genes } } } + + [HarmonyPrefix] + [HarmonyPatch("SetFather")] + private static bool SetFatherPrefix(Pawn pawn, Pawn newFather) + { + Pawn father = pawn.GetFather(); + if (father != newFather) + { + if (father != null) + { + pawn.relations.RemoveDirectRelation(PawnRelationDefOf.Parent, father); + } + if (newFather != null) + { + pawn.relations.AddDirectRelation(PawnRelationDefOf.Parent, newFather); + } + } + return false; + } + + [HarmonyPrefix] + [HarmonyPatch("SetMother")] + private static bool SetMotherPrefix(Pawn pawn, Pawn newMother) + { + Pawn mother = pawn.GetMother(); + if (mother != newMother) + { + if (mother != null) + { + pawn.relations.RemoveDirectRelation(PawnRelationDefOf.Parent, mother); + } + if (newMother != null) + { + pawn.relations.AddDirectRelation(PawnRelationDefOf.Parent, newMother); + } + } + return false; + } } } diff --git a/Source/Common/patches/PatchPregnancyHelper.cs b/Source/Common/patches/PatchPregnancyHelper.cs index 30aa788..d646323 100644 --- a/Source/Common/patches/PatchPregnancyHelper.cs +++ b/Source/Common/patches/PatchPregnancyHelper.cs @@ -32,6 +32,11 @@ namespace RJW_Genes Pawn giver = props.pawn; // orgasmer Pawn receiver = props.partner; + + if (receiver.genes == null) + { + return; + } Hediff vasectomy; receiver.health.hediffSet.TryGetHediff(vasectomydef, out vasectomy); @@ -40,10 +45,7 @@ namespace RJW_Genes List pawnparts = giver.GetGenitalsList(); List partnerparts = receiver.GetGenitalsList(); var interaction = rjw.Modules.Interactions.Helpers.InteractionHelper.GetWithExtension(props.dictionaryKey); - if (receiver.genes == null) - { - return; - } + if (!(props.sexType == xxx.rjwSextype.Anal && receiver.genes.HasActiveGene(GeneDefOf.rjw_genes_fertile_anus))) return; diff --git a/Source/Genes/ExtraGenitalia/Gene_Femboy.cs b/Source/Genes/ExtraGenitalia/Gene_Femboy.cs index 6641025..e86beed 100644 --- a/Source/Genes/ExtraGenitalia/Gene_Femboy.cs +++ b/Source/Genes/ExtraGenitalia/Gene_Femboy.cs @@ -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 diff --git a/Source/Genes/Gender/Gene_FemaleOnly.cs b/Source/Genes/Gender/Gene_FemaleOnly.cs index 97c4365..df48328 100644 --- a/Source/Genes/Gender/Gene_FemaleOnly.cs +++ b/Source/Genes/Gender/Gene_FemaleOnly.cs @@ -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() diff --git a/Source/Genes/Gender/Gene_MaleOnly.cs b/Source/Genes/Gender/Gene_MaleOnly.cs index e081700..d99652a 100644 --- a/Source/Genes/Gender/Gene_MaleOnly.cs +++ b/Source/Genes/Gender/Gene_MaleOnly.cs @@ -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() diff --git a/Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs b/Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs index fce2ded..61430a2 100644 --- a/Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs +++ b/Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs @@ -11,5 +11,8 @@ namespace RJW_Genes public HediffDef_PartBase vagina; public HediffDef_PartBase anus; + + public HediffDef_PartBase breasts; + } } diff --git a/Source/Genes/Genitalia/Gene_GenitaliaType.cs b/Source/Genes/Genitalia/Gene_GenitaliaType.cs index 7ffda55..21fada8 100644 --- a/Source/Genes/Genitalia/Gene_GenitaliaType.cs +++ b/Source/Genes/Genitalia/Gene_GenitaliaType.cs @@ -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); } } } diff --git a/Source/Genes/Genitalia/GenitaliaChanger.cs b/Source/Genes/Genitalia/GenitaliaChanger.cs index 86d112b..71f0f05 100644 --- a/Source/Genes/Genitalia/GenitaliaChanger.cs +++ b/Source/Genes/Genitalia/GenitaliaChanger.cs @@ -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 /// the new type of penis /// the new type of vagina /// the new type of anus - 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,7 +81,18 @@ namespace RJW_Genes { return candidate.def.defName.ToLower().Contains("anus"); } - public static bool IsArtificial(Hediff candidate) + + 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 } } + + } } diff --git a/Source/Genes/Genitalia/GenitaliaUtility.cs b/Source/Genes/Genitalia/GenitaliaUtility.cs index a56d9ae..6a6ba79 100644 --- a/Source/Genes/Genitalia/GenitaliaUtility.cs +++ b/Source/Genes/Genitalia/GenitaliaUtility.cs @@ -16,12 +16,11 @@ namespace RJW_Genes /// The first GeneDef of the pawn related to GenitaliaTypes public static GeneDef GetGenitaliaTypeGeneForPawn(Pawn pawn) { - - foreach (var gene in pawn.genes.GenesListForReading) - { + foreach (var gene in pawn.genes.GenesListForReading) + { if (gene is Gene_GenitaliaType) if (!gene.Overridden) - return gene.def; + return gene.def; } return null; } @@ -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()?.breasts ?? Genital_Helper.average_breasts; } public static bool PawnStillNeedsGenitalia(Pawn pawn) diff --git a/Source/Genes/QuirkPatching/Defs/QirkExtension.cs b/Source/Genes/QuirkPatching/Defs/QirkExtension.cs new file mode 100644 index 0000000..230d91f --- /dev/null +++ b/Source/Genes/QuirkPatching/Defs/QirkExtension.cs @@ -0,0 +1,13 @@ +using Verse; +using RimWorld; +using rjw; +using System; + +namespace RJW_Genes +{ + public class QirkExtension : DefModExtension + { + public String Satisfiedquirk; + + } +} diff --git a/Source/Genes/QuirkPatching/QuirkPatcher.cs b/Source/Genes/QuirkPatching/QuirkPatcher.cs new file mode 100644 index 0000000..af8eb29 --- /dev/null +++ b/Source/Genes/QuirkPatching/QuirkPatcher.cs @@ -0,0 +1,60 @@ +using Verse; +using RimWorld; +using rjw; +using System.Collections.Generic; +using rjw.Modules.Quirks; +using System; + +namespace RJW_Genes +{ + public class QuirkPatcher + { + public static void CountSatisfiedPostfix(ref int __result, SexProps props) + { + Pawn pawn = props.pawn; + Pawn partner = props.partner; + if(pawn!=null && partner != null) + { + if(!pawn.IsHuman()||!partner.IsHuman()) + { + return; + } + } + int count = -1; + List listquirk = new List(); + string s; + foreach (Gene g in partner.genes.GenesListForReading) + { + if (partner.genes.HasActiveGene(g.def)) + { + s = null; + s = g.def?.GetModExtension()?.Satisfiedquirk; + if (!string.IsNullOrEmpty(s)) + { + listquirk.Add(s); + } + } + } + + foreach (Quirk q in Quirk.All) + { + if (pawn.Has(q)) + { + + foreach (string s2 in listquirk) + { + if (!string.IsNullOrEmpty(s2)) + if (q.LocaliztionKey==s2) + { + count++; + Quirk.AddThought(pawn); + } + } + } + } + if(count>0)__result = __result + count; + return; + } + + } +} diff --git a/Source/Genes/Special/Patches/Patch_OrgasmMytosis.cs b/Source/Genes/Special/Patches/Patch_OrgasmMytosis.cs index 709d05b..91d7ee4 100644 --- a/Source/Genes/Special/Patches/Patch_OrgasmMytosis.cs +++ b/Source/Genes/Special/Patches/Patch_OrgasmMytosis.cs @@ -1,5 +1,6 @@ using HarmonyLib; using RimWorld; +using RimWorld.BaseGen; using RimWorld.QuestGen; using rjw; using rjw.Modules.Shared.Extensions; @@ -10,6 +11,7 @@ using System.Text; using System.Threading.Tasks; using Verse; + namespace RJW_Genes { @@ -24,13 +26,19 @@ namespace RJW_Genes private const float SEVERITY_INCREASE_PER_ORGASM = 0.075f; - public static void Postfix(JobDriver_Sex __instance) + public static void Postfix(JobDriver_Sex __instance) { Pawn orgasmingPawn = __instance.pawn; - if (orgasmingPawn != null && GeneUtility.HasGeneNullCheck(orgasmingPawn, GeneDefOf.rjw_genes_sexual_mytosis) && ! orgasmingPawn.health.hediffSet.HasHediff(HediffDefOf.rjw_genes_mytosis_shock_hediff)) + bool hasPollutedMytosis = false; + + if (orgasmingPawn != null && (GeneUtility.HasGeneNullCheck(orgasmingPawn, GeneDefOf.rjw_genes_sexual_mytosis) || hasPollutedMytosis) && ! orgasmingPawn.health.hediffSet.HasHediff(HediffDefOf.rjw_genes_mytosis_shock_hediff)) { var mytosisHediff = GetOrgasmMytosisHediff(orgasmingPawn); mytosisHediff.Severity += SEVERITY_INCREASE_PER_ORGASM; + if(hasPollutedMytosis && orgasmingPawn.Spawned && GridsUtility.IsPolluted(orgasmingPawn.Position, orgasmingPawn.Map)) + { + mytosisHediff.Severity -= SEVERITY_INCREASE_PER_ORGASM; + } if (mytosisHediff.Severity >= 1.0) { @@ -295,6 +303,8 @@ namespace RJW_Genes } + + } /* diff --git a/Source/HarmonyInit.cs b/Source/HarmonyInit.cs index c2cba10..490b880 100644 --- a/Source/HarmonyInit.cs +++ b/Source/HarmonyInit.cs @@ -4,12 +4,14 @@ using System; using rjw; using RJWLoveFeeding; using RimWorld; +using System.Linq; namespace RJW_Genes { [StaticConstructorOnStartup] internal static class HarmonyInit { + public static Type Gene_Randomizer_Instance = null; static HarmonyInit() { Harmony harmony = new Harmony("rjw_genes"); @@ -22,32 +24,39 @@ namespace RJW_Genes { harmony.Patch(typeof(SexUtility).GetMethod("ProcessSex"), new HarmonyMethod(typeof(LustFeeding), "Postfix", null)); } - // Non-rapist would_rape bypass for limbic stimulator harmony.Patch(AccessTools.Method(typeof(SexAppraiser), nameof(SexAppraiser.would_rape)), postfix: new HarmonyMethod(typeof(PatchImplants), nameof(PatchImplants.would_rape_PostFix))); - - // Non-rapist is_rapist bypass for limbic stimulator harmony.Patch(AccessTools.Method(typeof(xxx), nameof(xxx.is_rapist)), postfix: new HarmonyMethod(typeof(PatchImplants), nameof(PatchImplants.is_rapist_PostFix))); - - // Non-Rapist trait rape thoughts harmony.Patch(AccessTools.Method(typeof(AfterSexUtility), nameof(AfterSexUtility.think_about_sex_Rapist)), postfix: new HarmonyMethod(typeof(PatchImplants), nameof(PatchImplants.think_about_sex_Rapist_PostFix))); - - // Bioscaffold double gestation speed tick harmony.Patch(AccessTools.Method(typeof(PawnUtility), nameof(PawnUtility.BodyResourceGrowthSpeed)), postfix: new HarmonyMethod(typeof(PatchImplants), nameof(PatchImplants.MultiplyPregnancy))); - - // Hediff_Labor state capture harmony.Patch(AccessTools.Method(typeof(Hediff_Labor), nameof(Hediff_Labor.PostRemoved)), postfix: new HarmonyMethod(typeof(PatchLitteredBirth), nameof(PatchLitteredBirth.Hediff_Labor_PostRemovedPostFix))); - - // OvaryAgitator/Gene_LitteredBirths multibirth logic harmony.Patch(AccessTools.Method(typeof(Hediff_LaborPushing), nameof(Hediff_LaborPushing.PostRemoved)), postfix: new HarmonyMethod(typeof(PatchLitteredBirth), nameof(PatchLitteredBirth.Hediff_LaborPushing_PostRemovedPostFix))); - // Patch Licentia, if Licentia exists - // Logic & Explanation taken from https://rimworldwiki.com/wiki/Modding_Tutorials/Compatibility_with_DLLs - // Adjusted to use ModsConfig (which makes it work, the example above does not run out of the box) + + harmony.Patch(AccessTools.Method(typeof(Quirk), nameof(Quirk.CountSatisfiedQuirks)), + postfix: new HarmonyMethod(typeof(QuirkPatcher), nameof(QuirkPatcher.CountSatisfiedPostfix))); + + /* + try + { + Gene_Randomizer_Instance = (from asm in AppDomain.CurrentDomain.GetAssemblies() + from type in asm.GetTypes() + where type.IsClass && type.Name == "Gene_Randomizer" + select type).Single(); + } + catch (Exception ex) { } + Def mytosis_mutation = DefDatabase.GetNamed("rjw_genes_mytosis_mutation", false); + if (mytosis_mutation != null) + { + harmony.Patch(AccessTools.Method(Gene_Randomizer_Instance, "PostAdd"), + prefix: new HarmonyMethod(typeof(Patch_Waster), nameof(Patch_Waster.Gene_Randomizer_Prefix))); + }*/ + + } } diff --git a/Source/HediffDefOf.cs b/Source/HediffDefOf.cs index 2ff339c..25947da 100644 --- a/Source/HediffDefOf.cs +++ b/Source/HediffDefOf.cs @@ -23,7 +23,7 @@ namespace RJW_Genes public static readonly HediffDef OvaryAgitator; public static readonly HediffDef Bioscaffold; - public static HediffDef NeedlePenis = HediffDef.Named("NeedlePenis"); + /*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"); @@ -34,6 +34,6 @@ namespace RJW_Genes public static HediffDef GhostVagina = HediffDef.Named("GhostVagina"); public static HediffDef Vagina = HediffDef.Named("Vagina"); public static HediffDef Penis = HediffDef.Named("Penis"); - public static HediffDef Anus = HediffDef.Named("Anus"); + public static HediffDef Anus = HediffDef.Named("Anus");*/ } } diff --git a/Source/RJW.dll b/Source/RJW.dll deleted file mode 100644 index c07fda1..0000000 Binary files a/Source/RJW.dll and /dev/null differ diff --git a/Source/RJWSexperience.dll b/Source/RJWSexperience.dll deleted file mode 100644 index 533e46c..0000000 Binary files a/Source/RJWSexperience.dll and /dev/null differ diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index 757086f..ce46020 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -48,11 +48,13 @@ + + @@ -161,6 +163,8 @@ + + @@ -189,8 +193,6 @@ - - @@ -203,13 +205,12 @@ ..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll False - - False + ..\..\rjw\1.5\Assemblies\RJW.dll False - ..\..\rjw-sexperience\1.5\Assemblies\RJWSexperience.dll + ..\..\rjw-sexperience-master\1.5\Assemblies\RJWSexperience.dll False @@ -231,5 +232,8 @@ + + + \ No newline at end of file