diff --git a/About/About.xml b/About/About.xml index c0ac3e5..e7be372 100644 --- a/About/About.xml +++ b/About/About.xml @@ -1,7 +1,7 @@ RJW Genes - Vegapnk - Vegapnk.rjw.genes + jaaldabaoth + jaaldabaoth.rjw.genes
  • 1.5
  • diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index 66f6eaf..3e827fc 100644 Binary files a/Common/Assemblies/Rjw-Genes.dll and b/Common/Assemblies/Rjw-Genes.dll differ diff --git a/Common/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml b/Common/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml index 3148cae..9cbbb50 100644 --- a/Common/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml +++ b/Common/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml @@ -146,13 +146,11 @@
  • BreastAmount
  • - + diff --git a/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml b/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml index e465394..8d34483 100644 --- a/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml +++ b/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml @@ -107,7 +107,7 @@ rjw_genes_demonicT_genitalia Carriers of this gene have demonic tentacle genitalia. - Genes/Icons/Placeholder + Genes/Icons/Genitalia_tentacle_icon
  • DemonTentaclePenis @@ -122,7 +122,7 @@ rjw_genes_crocodilian_genitalia Carriers of this gene have crocodilian genitalia. - Genes/Icons/Placeholder + Genes/Icons/Genitalia_croc_icon
  • CrocodilianPenis @@ -137,7 +137,7 @@ rjw_genes_racoon_genitalia Carriers of this gene have racoon genitalia. - Genes/Icons/Placeholder + Genes/Icons/Genitalia_racoon_icon
  • RaccoonPenis @@ -152,7 +152,7 @@ rjw_genes_reptilian_genitalia Carriers of this gene have reptilian genitalia. - Genes/Icons/Placeholder + Genes/Icons/Genitalia_hemi_icon
  • HemiPenis @@ -162,6 +162,87 @@ 807 + + + + + + + rjw_genes_Ghost_genitalia + + Carriers of this gene have ghost genitalia. + Genes/Icons/Genitalia_ghost_icon + RJW_Genes.Gene_GhostGenitalia + 807 + + + + rjw_genes_Golem_genitalia + + Carriers of this gene have rocky golem genitalia. + Genes/Icons/penis_rock_icon + RJW_Genes.Gene_GolemGenitalia + 807 + + + + rjw_genes_Marine_genitalia + + Carriers of this gene have marine mammal like genitalia. + Genes/Icons/Genitalia_marine_icon + RJW_Genes.Gene_MarineGenitalia + 807 + + + + rjw_genes_Necro_genitalia + + Carriers of this gene have necrotic undead genitalia. + Genes/Icons/Genitalia_necro_icon + RJW_Genes.Gene_NecroGenitalia + 807 + + + + rjw_genes_Needle_genitalia + + Carriers of this gene have marine very thin genitalia. + Genes/Icons/Genitalia_thin_icon + RJW_Genes.Gene_NeedleGenitalia + 807 + + + + rjw_genes_Orc_genitalia + + Carriers of this gene have orc genitalia. + Genes/Icons/Genitalia_orc_icon + RJW_Genes.Gene_OrcGenitalia + 807 + + + + rjw_genes_Pig_genitalia + + Carriers of this gene have screw genitalia. + Genes/Icons/Genitalia_screw_icon + RJW_Genes.Gene_PigGenitalia + 807 + + + + rjw_genes_Tentacle_genitalia + + Carriers of this gene have alien genitalia. + Genes/Icons/Genitalia_alien_icon + RJW_Genes.Gene_TentacleGenitalia + 807 + + + + + + rjw_genes_ovipositor_genitalia diff --git a/Common/Defs/HediffDefs/Hediffs_PrivateParts/Hediffs_PrivateParts_Added.xml b/Common/Defs/HediffDefs/Hediffs_PrivateParts/Hediffs_PrivateParts_Added.xml new file mode 100644 index 0000000..647b7a2 --- /dev/null +++ b/Common/Defs/HediffDefs/Hediffs_PrivateParts/Hediffs_PrivateParts_Added.xml @@ -0,0 +1,152 @@ + + + + NeedlePenis + + a needle penis + A long thin needle penis + NeedlePenis + NeedlePenis + +
  • + +
  • Thin
  • +
  • Long
  • + + +
    + + + PigPenis + + a screw penis + A large screw penis. + PigPenis + PigPenis + +
  • + +
  • Flared
  • +
  • Long
  • +
  • Girthy
  • + + +
    +
    + + MarinePenis + + a marine penis + A penis similar to those of marine mammals. + MarinePenis + MarinePenis + +
  • + +
  • Sheathed
  • +
  • Long
  • + + +
    +
    + + TentaclePenis + + an alien penis + A alien penis featuring multiples tentacles. + TentaclePenis + TentaclePenis + +
  • + +
  • Multiple
  • +
  • Sheathed
  • +
  • Long
  • + + +
    +
    + + GolemPenis + + an golem penis + A large rocky golem penis. + GolemPenis + GolemPenis + +
  • + +
  • Long
  • +
  • Girthy
  • +
  • Barbed
  • + + +
    +
    + + OrcPenis + + an orc penis + A large orc penis. + OrcPenis + OrcPenis + +
  • + +
  • Long
  • +
  • Girthy
  • + + +
    +
    + + GhostPenis + + an ghost penis + A evanescent ghost penis, you can barely feel it. + GhostPenis + GhostPenis + +
  • + +
  • Thin
  • +
  • Sheathed
  • + + +
    +
    + + NecroPenis + + an undead penis + A rotten, reanimated penis. + NecroPenis + NecroPenis + +
  • + +
  • Long
  • +
  • Girthy
  • + + +
    +
    + + GhostVagina + + a ghost vagina + A evanescent ghost vagina, you can barely feel it. + GhostVagina + GhostVagina + +
  • + +
  • Tight
  • +
  • Deep
  • + + +
    +
    + + + \ No newline at end of file diff --git a/Common/Defs/ThingDefs/Items_BodyParts/Items_BodyParts_Added.xml b/Common/Defs/ThingDefs/Items_BodyParts/Items_BodyParts_Added.xml new file mode 100644 index 0000000..9608642 --- /dev/null +++ b/Common/Defs/ThingDefs/Items_BodyParts/Items_BodyParts_Added.xml @@ -0,0 +1,96 @@ + + + + + NeedlePenis + + A long thin needle penis + + 250 + 0.40 + + + + + PigPenis + + A large screw penis. + + 250 + 0.40 + + + + + MarinePenis + + A penis similar to those of marine mammals. + + 250 + 0.40 + + + + + TentaclePenis + + A alien penis featuring multiples tentacles. + + 250 + 0.40 + + + + + GolemPenis + + A large rocky golem penis. + + 250 + 0.40 + + + + + OrcPenis + + A large orc penis. + + 250 + 0.40 + + + + + GhostPenis + + A evanescent ghost penis, you can barely feel it. + + 250 + 0.40 + + + + + NecroPenis + + A rotten, reanimated penis. + + 250 + 0.40 + + + + + GhostVagina + + GhostVagina + + 250 + 0.40 + + + + + + diff --git a/Common/Textures/Genes/Icons/Genitalia_Draconic.png b/Common/Textures/Genes/Icons/Genitalia_Draconic.png index cb763d6..7717d23 100644 Binary files a/Common/Textures/Genes/Icons/Genitalia_Draconic.png and b/Common/Textures/Genes/Icons/Genitalia_Draconic.png differ diff --git a/Common/Textures/Genes/Icons/Genitalia_Feline.png b/Common/Textures/Genes/Icons/Genitalia_Feline.png index c03cc27..8f5b4d7 100644 Binary files a/Common/Textures/Genes/Icons/Genitalia_Feline.png and b/Common/Textures/Genes/Icons/Genitalia_Feline.png differ diff --git a/Common/Textures/Genes/Icons/Genitalia_alien_icon.png b/Common/Textures/Genes/Icons/Genitalia_alien_icon.png new file mode 100644 index 0000000..633ed83 Binary files /dev/null and b/Common/Textures/Genes/Icons/Genitalia_alien_icon.png differ diff --git a/Common/Textures/Genes/Icons/Genitalia_croc_icon.png b/Common/Textures/Genes/Icons/Genitalia_croc_icon.png new file mode 100644 index 0000000..569c1e7 Binary files /dev/null and b/Common/Textures/Genes/Icons/Genitalia_croc_icon.png differ diff --git a/Common/Textures/Genes/Icons/Genitalia_ghost_icon.png b/Common/Textures/Genes/Icons/Genitalia_ghost_icon.png new file mode 100644 index 0000000..7c7ca9d Binary files /dev/null and b/Common/Textures/Genes/Icons/Genitalia_ghost_icon.png differ diff --git a/Common/Textures/Genes/Icons/Genitalia_hemi_icon.png b/Common/Textures/Genes/Icons/Genitalia_hemi_icon.png new file mode 100644 index 0000000..e59cfec Binary files /dev/null and b/Common/Textures/Genes/Icons/Genitalia_hemi_icon.png differ diff --git a/Common/Textures/Genes/Icons/Genitalia_marine_icon.png b/Common/Textures/Genes/Icons/Genitalia_marine_icon.png new file mode 100644 index 0000000..28dc8a3 Binary files /dev/null and b/Common/Textures/Genes/Icons/Genitalia_marine_icon.png differ diff --git a/Common/Textures/Genes/Icons/Genitalia_necro_icon.png b/Common/Textures/Genes/Icons/Genitalia_necro_icon.png new file mode 100644 index 0000000..378d181 Binary files /dev/null and b/Common/Textures/Genes/Icons/Genitalia_necro_icon.png differ diff --git a/Common/Textures/Genes/Icons/Genitalia_orc_icon.png b/Common/Textures/Genes/Icons/Genitalia_orc_icon.png new file mode 100644 index 0000000..c615f70 Binary files /dev/null and b/Common/Textures/Genes/Icons/Genitalia_orc_icon.png differ diff --git a/Common/Textures/Genes/Icons/Genitalia_racoon_icon.png b/Common/Textures/Genes/Icons/Genitalia_racoon_icon.png new file mode 100644 index 0000000..13c0a5a Binary files /dev/null and b/Common/Textures/Genes/Icons/Genitalia_racoon_icon.png differ diff --git a/Common/Textures/Genes/Icons/Genitalia_screw_icon.png b/Common/Textures/Genes/Icons/Genitalia_screw_icon.png new file mode 100644 index 0000000..c50c114 Binary files /dev/null and b/Common/Textures/Genes/Icons/Genitalia_screw_icon.png differ diff --git a/Common/Textures/Genes/Icons/Genitalia_tentacle_icon.png b/Common/Textures/Genes/Icons/Genitalia_tentacle_icon.png new file mode 100644 index 0000000..41e8331 Binary files /dev/null and b/Common/Textures/Genes/Icons/Genitalia_tentacle_icon.png differ diff --git a/Common/Textures/Genes/Icons/Genitalia_thin_icon.png b/Common/Textures/Genes/Icons/Genitalia_thin_icon.png new file mode 100644 index 0000000..2517a47 Binary files /dev/null and b/Common/Textures/Genes/Icons/Genitalia_thin_icon.png differ diff --git a/Common/Textures/Genes/Icons/penis_rock_icon.png b/Common/Textures/Genes/Icons/penis_rock_icon.png new file mode 100644 index 0000000..c1c1324 Binary files /dev/null and b/Common/Textures/Genes/Icons/penis_rock_icon.png differ diff --git a/Source/Common/patches/Patch_RJW_BestialityPregnancyUtility.cs b/Source/Common/patches/Patch_RJW_BestialityPregnancyUtility.cs new file mode 100644 index 0000000..0769366 --- /dev/null +++ b/Source/Common/patches/Patch_RJW_BestialityPregnancyUtility.cs @@ -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 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 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; + } + } + } + } +} diff --git a/Source/GeneDefOf.cs b/Source/GeneDefOf.cs index faf3ab1..e742ec9 100644 --- a/Source/GeneDefOf.cs +++ b/Source/GeneDefOf.cs @@ -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; @@ -37,7 +45,8 @@ namespace RJW_Genes public static readonly GeneDef rjw_genes_no_anus; 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_featureless_chest; + public static readonly GeneDef rjw_genes_udder; // Genitalia Sizes public static readonly GeneDef rjw_genes_big_male_genitalia; diff --git a/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs b/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs index e098a8c..87f2a20 100644 --- a/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs +++ b/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs @@ -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(); + if (CompHediff != null) + { + CompHediff.initComp(pawn); + CompHediff.updatesize(); + } + } } diff --git a/Source/Genes/Genital_Helper_2.cs b/Source/Genes/Genital_Helper_2.cs new file mode 100644 index 0000000..a82d93e --- /dev/null +++ b/Source/Genes/Genital_Helper_2.cs @@ -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"); + + } +} diff --git a/Source/Genes/Genitalia/Gene_GhostGenitalia.cs b/Source/Genes/Genitalia/Gene_GhostGenitalia.cs new file mode 100644 index 0000000..7fa7dc4 --- /dev/null +++ b/Source/Genes/Genitalia/Gene_GhostGenitalia.cs @@ -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); + } + } + +} diff --git a/Source/Genes/Genitalia/Gene_GolemGenitalia.cs b/Source/Genes/Genitalia/Gene_GolemGenitalia.cs new file mode 100644 index 0000000..3a19a88 --- /dev/null +++ b/Source/Genes/Genitalia/Gene_GolemGenitalia.cs @@ -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); + } + } + +} diff --git a/Source/Genes/Genitalia/Gene_MarineGenitalia.cs b/Source/Genes/Genitalia/Gene_MarineGenitalia.cs new file mode 100644 index 0000000..b273380 --- /dev/null +++ b/Source/Genes/Genitalia/Gene_MarineGenitalia.cs @@ -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); + } + } + +} diff --git a/Source/Genes/Genitalia/Gene_NecroGenitalia.cs b/Source/Genes/Genitalia/Gene_NecroGenitalia.cs new file mode 100644 index 0000000..2ad03b6 --- /dev/null +++ b/Source/Genes/Genitalia/Gene_NecroGenitalia.cs @@ -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); + } + } + +} diff --git a/Source/Genes/Genitalia/Gene_NeedleGenitalia.cs b/Source/Genes/Genitalia/Gene_NeedleGenitalia.cs new file mode 100644 index 0000000..4d0b166 --- /dev/null +++ b/Source/Genes/Genitalia/Gene_NeedleGenitalia.cs @@ -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); + } + } + +} diff --git a/Source/Genes/Genitalia/Gene_OrcGenitalia.cs b/Source/Genes/Genitalia/Gene_OrcGenitalia.cs new file mode 100644 index 0000000..cd3ef4c --- /dev/null +++ b/Source/Genes/Genitalia/Gene_OrcGenitalia.cs @@ -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); + } + } + +} diff --git a/Source/Genes/Genitalia/Gene_PigGenitalia.cs b/Source/Genes/Genitalia/Gene_PigGenitalia.cs new file mode 100644 index 0000000..c210226 --- /dev/null +++ b/Source/Genes/Genitalia/Gene_PigGenitalia.cs @@ -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); + } + } + +} diff --git a/Source/Genes/Genitalia/Gene_TentacleGenitalia.cs b/Source/Genes/Genitalia/Gene_TentacleGenitalia.cs new file mode 100644 index 0000000..834a32d --- /dev/null +++ b/Source/Genes/Genitalia/Gene_TentacleGenitalia.cs @@ -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); + } + } + +} diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index fe11a64..07ce745 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -44,6 +44,7 @@ + @@ -86,8 +87,16 @@ + + + + + + + + diff --git a/Source/Settings/RJW_Genes_Settings.cs b/Source/Settings/RJW_Genes_Settings.cs index f6e2f83..6f0171d 100644 --- a/Source/Settings/RJW_Genes_Settings.cs +++ b/Source/Settings/RJW_Genes_Settings.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(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(ref RJW_Genes_Settings.rjw_genes_detailed_debug, "rjw_genes_detailed_debug", RJW_Genes_Settings.rjw_genes_detailed_debug, true); - - Scribe_Values.Look(ref RJW_Genes_Settings.rjw_genes_sexdemon_visit, "rjw_genes_sexdemon_visit", RJW_Genes_Settings.rjw_genes_sexdemon_visit, true); - Scribe_Values.Look(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(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(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(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(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; } }