diff --git a/CHANGELOG.md b/CHANGELOG.md index 3852765..df15b6f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,6 @@ - "Genes" to support VRE Androids having Mechanical Genitalia. Thanks to @Jaaldabaoth (#88) - "Curiosity Genes" alongside other Curiosities from VRE. Thanks to @Jaaldabaoth (#88) - Support for many VE-Genetics Animals into the Animal-Framework. Thanks to @Jaaldabaoth (#88) -- "Likes Cumflation"-Gene now also makes pawns immune against the effects of cumflations. They are still cumflated. **Fixes**: @@ -21,8 +20,6 @@ - Lower-casing most labels to fit rimworld standards, thanks to @Flock-of-birds (#83) - X-Gender-Only Genes leave / re-add artificial genitalia. Thanks to @Jaaldabaoth (#84 / #88) - Issues with Elasticity References (#87) -- Null Pointer for LoveFeeding when finding Mechs. Thanks to @Jaaldabaoth (Fixes #90) -- Changes to the Implants introduced in 2.0.0 - they imposed a hidden dependency on Royalty (Fixes #89) **Changes**: @@ -30,10 +27,6 @@ - Minified some Race-Patches, thanks to @Flock-of-birds (#83) - XML-Genitalia-Genes can now also provide Breasts. Thanks to @Jaaldabaoth (#84 / #88) - Many patches and files went into a `Mods`Folder and use an `LoadFolders.xml`. Thanks to @Jaaldabaoth (#84 / #88) -- Translate-Keys for Settings -- Translate-Key for Animal Hybrid Race-Names -- "Tick-Speed" for Evergrowth moved from Mod-Settings to XML -- Some new Icons thanks to Kira-Bad-Artist # 2.0.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 103a4f5..b596a24 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -28,6 +28,4 @@ But please consider also the following: - Placeholder, Rapist, Necrophile come from [RJW-Sexperience Ideology](https://gitgud.io/amevarashi/rjw-sexperience-ideology/) - Hypersexual & Zoophile comes from [RJW](https://gitgud.io/Ed86/rjw) - Cockeater & Naked Prowess come from *WasMachenDennSachen* but I copied it from Discord Chat. -- Fertilin, Fertilin Drain, Healpussy, Succubus Wing & Tail come from Shabakur -- Littered Birth, Many of the Penis Types are from Jaaldabaoth -- Feline Genitalia, Animal Mating Call and Udder are from Kira-Bad-Artist \ No newline at end of file +- Fertilin, Fertilin Drain, Healpussy, Succubus Wing & Tail come from Shabakur \ No newline at end of file diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index 30fbc3b..214b962 100644 Binary files a/Common/Assemblies/Rjw-Genes.dll and b/Common/Assemblies/Rjw-Genes.dll differ diff --git a/Common/Defs/AbilityDefs/Ability_MatingCall.xml b/Common/Defs/AbilityDefs/Ability_MatingCall.xml index a45fb1d..98cb5c7 100644 --- a/Common/Defs/AbilityDefs/Ability_MatingCall.xml +++ b/Common/Defs/AbilityDefs/Ability_MatingCall.xml @@ -5,8 +5,8 @@ rjw_genes_ability_mating_call Calls nearby animals to breed me. - Genes/Icons/Animal_Mating_Call - + UI/Abilities/AnimalBerserkPulse + true false diff --git a/Common/Defs/AbilityDefs/Ability_PheromoneSpit.xml b/Common/Defs/AbilityDefs/Ability_PheromoneSpit.xml index 1305665..584e0a8 100644 --- a/Common/Defs/AbilityDefs/Ability_PheromoneSpit.xml +++ b/Common/Defs/AbilityDefs/Ability_PheromoneSpit.xml @@ -4,8 +4,7 @@ rjw_genes_ability_pheromone_spit Spit a condensed ball of animal pheromones to mark a target. Nearby Animals will try to breed the target. This means all animals - hostile, friendly and wild. - Genes/Icons/Pheromone_Spit - + UI/Abilities/PiercingSpine 3000 201 true diff --git a/Common/Defs/GeneDefs/GeneDefs_Breeding.xml b/Common/Defs/GeneDefs/GeneDefs_Breeding.xml index 200af57..76d4369 100644 --- a/Common/Defs/GeneDefs/GeneDefs_Breeding.xml +++ b/Common/Defs/GeneDefs/GeneDefs_Breeding.xml @@ -82,7 +82,7 @@ rjw_genes_mating_call This gene allows to call nearby animals and invite them for mating. - Genes/Icons/Animal_Mating_Call + UI/Abilities/AnimalBerserkPulse 65
  • rjw_genes_ability_mating_call
  • @@ -99,7 +99,7 @@ rjw_genes_pheromone_spit This gene allows to mark targets for breeding, enticing nearby animals for a ride. - Genes/Icons/Pheromone_Spit + UI/Abilities/AnimalBerserkPulse 66
  • rjw_genes_ability_pheromone_spit
  • diff --git a/Common/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml b/Common/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml index 6d4a732..a9e9a46 100644 --- a/Common/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml +++ b/Common/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml @@ -164,7 +164,7 @@ rjw_genes_genitalia_extras Carriers of this gene have udders and breasts. - Genes/Icons/RJW_Genes_Udder + Things/Mote/Heart RJW_Genes.Gene_UdderBreasts 711 diff --git a/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml b/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml index 2b6e5d6..5cc2e9d 100644 --- a/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml +++ b/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml @@ -68,7 +68,7 @@ rjw_genes_feline_genitalia Carriers of this gene develop feline genitalia. - Genes/Icons/RJW_Genes_Feline_Genitalia + Genes/Icons/Genitalia_Feline
  • CatPenis diff --git a/Common/Defs/GeneDefs/GeneDefs_SexSpecial.xml b/Common/Defs/GeneDefs/GeneDefs_SexSpecial.xml index 4e85dc7..a4ecb4d 100644 --- a/Common/Defs/GeneDefs/GeneDefs_SexSpecial.xml +++ b/Common/Defs/GeneDefs/GeneDefs_SexSpecial.xml @@ -137,7 +137,7 @@ sextamer Bestiality has a chance to tame animals or advance their training. - Genes/Icons/Sexual_Tamer + UI/Abilities/AnimalBerserkPulse 14 2 -1 diff --git a/Common/Defs/HediffDefs/Hediffs_CounterCumflation.xml b/Common/Defs/HediffDefs/Hediffs_CounterCumflation.xml deleted file mode 100644 index 1b30c82..0000000 --- a/Common/Defs/HediffDefs/Hediffs_CounterCumflation.xml +++ /dev/null @@ -1,181 +0,0 @@ - - - - rjw_genes_cumflation_counter - HediffWithComps - - cumflation negator - Negates the negative effects usually produced by being cumflated. - (240,200,110) - false - 1.0 - false - false - -
  • - -0.75 -
  • - - -
  • - - false -
  • -
  • - - 0.2 - false - - -0.1 - - -
  • - Moving - 0.1 -
  • - - -
  • - - 0.4 - false - - -0.3 - - -
  • - Moving - 0.3 -
  • - - -0.1 - -
  • - - 0.65 - false - - +0.5 - - -
  • - Moving - 0.6 -
  • - - -0.3 - -
  • - - 0.9 - false - - -0.7 - - -
  • - Moving - 1.0 -
  • - - -0.5 - -
    - - - - rjw_genes_cumstuffed_counter - HediffWithComps - - cumstuffed negated - Negates the negative effects that one would suffer from being cumstuffed. - (240,200,110) - false - 1.0 - false - false - -
  • - -0.75 -
  • -
  • - -
  • 0
  • -
  • 0
  • -
  • 0.75
  • -
  • 0.5
  • -
  • 0.2
  • - - -
    - -
  • - - false -
  • -
  • - - 0.2 - 0.95 - false - - -0.05 - - -
  • - Moving - 0.03 -
  • - - -
  • - - 0.4 - 0.9 - - -0.1 - - false - -
  • - Moving - 0.1 -
  • - - -
  • - - 0.6 - 0.75 - false - - -0.15 - - -
  • - Moving - 0.2 -
  • - - -0.15 - -
  • - - 0.8 - 0.5 - false - - -0.2 - - -
  • - Moving - 0.3 -
  • - - -0.3 - -
    -
    - - diff --git a/Common/Languages/English/Keyed/Bestiality.xml b/Common/Languages/English/Keyed/Bestiality.xml deleted file mode 100644 index e6edf59..0000000 --- a/Common/Languages/English/Keyed/Bestiality.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - animal-hybrid - diff --git a/Common/Languages/English/Keyed/Mod_Settings.xml b/Common/Languages/English/Keyed/Mod_Settings.xml deleted file mode 100644 index d425cd5..0000000 --- a/Common/Languages/English/Keyed/Mod_Settings.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - Genitalia resizing age: - years - At this age (in biological years) any resizing gene will be applied. This is done to prevent changes and issues related to genitalia changing in the pawns growth, but also for 'ethics'. - - Fertilin-Gain from Animals: - % of fertilin gained (compared to human-baseline). - - Sexdemon Visits - If enabled, incubi and succubi can spawn in through an event. - Size matters - Incubi and succubi will consider size/tightness of partners genital for deciding if they want to join - Sexdemon groups - Multiple sexdemons can spawn during a event - Succubi - Allow Succubi to spawn through this event - Incubi - Allow Incubi to spawn through this event - - Regret Stealing Love - If off, pawns will not get bad thoughts for seduction. - - - Animal-Mating GenitalCheck - If on, only animals that 'can rape' will be engaging in bestiality after being hit by a animal mating pulse. This usually means that only male animals will start breeding. - - 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. - - detailed-debug - Adds detailed information to the log about interactions and genes. - diff --git a/Common/Languages/English/Keyed/Mod_Settings_AnimalGeneInheritance.xml b/Common/Languages/English/Keyed/Mod_Settings_AnimalGeneInheritance.xml deleted file mode 100644 index bb7012d..0000000 --- a/Common/Languages/English/Keyed/Mod_Settings_AnimalGeneInheritance.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - enabled - If toggled, Animal Pregnancies will try inherit genes. - - - - - genes as xenogenes - If toggled on, animal genes will be added as xenogenes. - - enable VE genetics hybridation - If enabled and if you have VE genetics it will enable the hybridation system. - - - - diff --git a/Common/Textures/Genes/Icons/Animal_Mating_Call.png b/Common/Textures/Genes/Icons/Animal_Mating_Call.png deleted file mode 100644 index c8ff964..0000000 Binary files a/Common/Textures/Genes/Icons/Animal_Mating_Call.png and /dev/null differ diff --git a/Common/Textures/Genes/Icons/Pheromone_Spit.png b/Common/Textures/Genes/Icons/Pheromone_Spit.png deleted file mode 100644 index 743d0a3..0000000 Binary files a/Common/Textures/Genes/Icons/Pheromone_Spit.png and /dev/null differ diff --git a/Common/Textures/Genes/Icons/RJW_Genes_Feline_Genitalia.png b/Common/Textures/Genes/Icons/RJW_Genes_Feline_Genitalia.png deleted file mode 100644 index 7b0dc9f..0000000 Binary files a/Common/Textures/Genes/Icons/RJW_Genes_Feline_Genitalia.png and /dev/null differ diff --git a/Common/Textures/Genes/Icons/RJW_Genes_Mating_Call.png b/Common/Textures/Genes/Icons/RJW_Genes_Mating_Call.png deleted file mode 100644 index 1079d89..0000000 Binary files a/Common/Textures/Genes/Icons/RJW_Genes_Mating_Call.png and /dev/null differ diff --git a/Common/Textures/Genes/Icons/RJW_Genes_Udder.png b/Common/Textures/Genes/Icons/RJW_Genes_Udder.png deleted file mode 100644 index 9a641e1..0000000 Binary files a/Common/Textures/Genes/Icons/RJW_Genes_Udder.png and /dev/null differ diff --git a/Common/Textures/Genes/Icons/Sexual_Tamer.png b/Common/Textures/Genes/Icons/Sexual_Tamer.png deleted file mode 100644 index ce35369..0000000 Binary files a/Common/Textures/Genes/Icons/Sexual_Tamer.png and /dev/null differ diff --git a/README.md b/README.md index 697bcdc..9ea66bc 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,6 @@ This mod adds genes related and based on RJW to Rimworld. - Human-Animal Gene Inheritance merged from [Shabakur](https://github.com/Shabakur/RJW_Animal_Gene_Inheritance) - Patches for some popular / common Xenotypes from other Mods. -*You might not see all of them. Many genes just show up if other mods are loaded*. - **Conflicts:** 1. Should not be used with the original RJW_Animal_Gene_Inheritance anymore. 2. There was an issue with other "Male-Only / Female-Only" Mods --- for which we provide our own Genes now. diff --git a/Source/Animal_Inheritance/Patches/Patch_RJW_BestialityPregnancyUtility.cs b/Source/Animal_Inheritance/Patches/Patch_RJW_BestialityPregnancyUtility.cs index d8440e8..c5f6366 100644 --- a/Source/Animal_Inheritance/Patches/Patch_RJW_BestialityPregnancyUtility.cs +++ b/Source/Animal_Inheritance/Patches/Patch_RJW_BestialityPregnancyUtility.cs @@ -7,7 +7,6 @@ using HarmonyLib; using RimWorld; using Verse; using rjw; -using static RimWorld.PsychicRitualRoleDef; namespace RJW_BGS { @@ -44,9 +43,7 @@ namespace RJW_BGS // The mix-breed babies should be labelled hybrids baby.genes.hybrid = true; - - //reason = "AbilityDisabledNoFertilinGene".Translate(this.parent.pawn); - baby.genes.xenotypeName = "rjw_genes_bestiality_hybrid".Translate(); + baby.genes.xenotypeName = "Hybrid"; } } } diff --git a/Source/Animal_Inheritance/Settings/RJW_BGSSettings.cs b/Source/Animal_Inheritance/Settings/RJW_BGSSettings.cs index 854df07..d853424 100644 --- a/Source/Animal_Inheritance/Settings/RJW_BGSSettings.cs +++ b/Source/Animal_Inheritance/Settings/RJW_BGSSettings.cs @@ -21,18 +21,18 @@ namespace RJW_BGS listing_Standard.ColumnWidth = rect.width / 2.05f; listing_Standard.Begin(rect); listing_Standard.Gap(24f); - listing_Standard.CheckboxLabeled("rjw_genes_animal_inheritance_settings_enabled_key".Translate(), ref rjw_bgs_enabled, "rjw_genes_animal_inheritance_settings_enabled_explanation".Translate(), 0f, 1f); + listing_Standard.CheckboxLabeled("enabled", ref rjw_bgs_enabled, "If toggled, Animal Pregnancies will try inherit genes.", 0f, 1f); //listing_Standard.CheckboxLabeled("sexfrenzy", ref sexfrenzy, "disable the effects", 0f, 1f); listing_Standard.Gap(5f); listing_Standard.Label("gene inheritance chance"+ ": " + Math.Round((double)(RJW_BGSSettings.rjw_bgs_global_gene_chance * 100f), 0).ToString() + "%", -1f, "modify chance for a gene to be inherited."); RJW_BGSSettings.rjw_bgs_global_gene_chance = listing_Standard.Slider(RJW_BGSSettings.rjw_bgs_global_gene_chance, 0f, 5f); listing_Standard.Gap(5f); - listing_Standard.CheckboxLabeled("rjw_genes_animal_inheritance_settings_added_as_xenogene_key".Translate(), ref rjw_bgs_animal_genes_as_xenogenes, "rjw_genes_animal_inheritance_settings_added_as_xenogene_explanation".Translate(), 0f, 1f); + 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("rjw_genes_animal_inheritance_settings_ve_genetics_hybridization_key".Translate(), ref rjw_bgs_VE_genetics, "rjw_genes_animal_inheritance_settings_ve_genetics_hybridization_explanation".Translate(), 0f, 1f); + 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("rjw_genes_animal_inheritance_settings_detailed_debug_key".Translate(), ref rjw_bgs_detailed_debug, "rjw_genes_animal_inheritance_settings_detailed_debug_explanation".Translate(), 0f, 1f); + 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(); } diff --git a/Source/Genes/Breeding/AnimalBreedingHelper.cs b/Source/Genes/Breeding/AnimalBreedingHelper.cs index c44a4c3..f2386e9 100644 --- a/Source/Genes/Breeding/AnimalBreedingHelper.cs +++ b/Source/Genes/Breeding/AnimalBreedingHelper.cs @@ -29,13 +29,8 @@ namespace RJW_Genes { if (ends_manhunter) EndManHunter(animal); - - if (!RJW_Genes_Settings.animalMatingPulseCheckForGenitals || rjw.xxx.can_rape(animal)) - { - ForceBreedingJob(toBeBred, animal); - breeder_counter++; - } - + ForceBreedingJob(toBeBred, animal); + breeder_counter++; } ModLog.Message($"{breeder_counter} of {animals.Count()} Animals in range are trying to breed {toBeBred}"); } diff --git a/Source/Genes/Cum/Patch_CumflationImmunity.cs b/Source/Genes/Cum/Patch_Cumflation.cs similarity index 97% rename from Source/Genes/Cum/Patch_CumflationImmunity.cs rename to Source/Genes/Cum/Patch_Cumflation.cs index 49f8e73..a1f54a7 100644 --- a/Source/Genes/Cum/Patch_CumflationImmunity.cs +++ b/Source/Genes/Cum/Patch_Cumflation.cs @@ -18,7 +18,7 @@ namespace RJW_Genes /// Patched File: https://gitgud.io/John-the-Anabaptist/licentia-labs/-/blob/master/Source/LicentiaLabs/LicentiaLabs/Cumflation.cs /// /// - class Patch_CumflationImmunity + class Patch_Cumflation { // This patch does not need the normal Harmony Targetting, // as it needs to be added only on demand (See HarmonyInit.cs) diff --git a/Source/Genes/Cum/Patch_LikesCumflation.cs b/Source/Genes/Cum/Patch_LikesCumflation.cs deleted file mode 100644 index f25f28c..0000000 --- a/Source/Genes/Cum/Patch_LikesCumflation.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Reflection.Emit; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using HarmonyLib; -using rjw; -using RimWorld; -using Verse; - -namespace RJW_Genes -{ - /// - /// Changes LicentiaLabs (if Present) to add a cumflation-counter hediff, when the pawn is cumflated. - /// The counter hediff takes away the negative stats of the original hediff. - /// This code is exercised / loaded in the HarmonyInit. - /// Patched File: https://gitgud.io/John-the-Anabaptist/licentia-labs/-/blob/master/Source/LicentiaLabs/LicentiaLabs/Cumflation.cs - /// - /// - class Patch_LikesCumflation - { - // This patch does not need the normal Harmony Targetting, - // as it needs to be added only on demand (See HarmonyInit.cs) - public static void PostFix(SexProps props) - { - - if (props == null || props.pawn == null || props.partner == null) return; - - if (props.pawn.genes != null && props.pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_likes_cumflation) ) - { - AddOrIncreaseCumflationCounterHediff(props.pawn); - } - - if (props.partner.genes != null && props.partner.genes.HasActiveGene(GeneDefOf.rjw_genes_likes_cumflation)) - { - AddOrIncreaseCumflationCounterHediff(props.partner); - } - } - - public static void AddOrIncreaseCumflationCounterHediff(Pawn inflated) - { - Hediff cumstuffed_hediff = inflated.health.hediffSet.GetFirstHediffOfDef(LicentiaLabs.Licentia.HediffDefs.Cumstuffed); - //Hediff cumstuffed_hediff = LicentiaLabs.CumflationHelper.GetCumflationHediff(inflated, LicentiaLabs.Licentia.HediffDefs.Cumstuffed, "stomach"); - if (cumstuffed_hediff != null && cumstuffed_hediff.Severity >= 0.01) { - ModLog.Message($"{inflated} got cumstuffed and gets the counter-part"); - var bodyPartRecord = inflated.RaceProps.body.AllParts.Find(bpr => bpr.def.defName.Contains("stomach") || bpr.def.defName.Contains("stomach".ToLower())); - var counter_hediff = CreateOrGetCumflationCounterHediff(inflated, HediffDefOf.rjw_genes_cumstuffed_counter, bodyPartRecord); - counter_hediff.Severity = cumstuffed_hediff.Severity; - } - - Hediff cumflation_hediff = inflated.health.hediffSet.GetFirstHediffOfDef(LicentiaLabs.Licentia.HediffDefs.Cumflation); - if (cumflation_hediff != null && cumflation_hediff.Severity >= 0.01) - { - ModLog.Message($"{inflated} got cumflated and gets the counter-part"); - var bodyPartRecord = Genital_Helper.get_genitalsBPR(inflated); - var counter_hediff = CreateOrGetCumflationCounterHediff(inflated, HediffDefOf.rjw_genes_cumflation_counter, bodyPartRecord); - counter_hediff.Severity = cumflation_hediff.Severity; - } - } - - public static Hediff CreateOrGetCumflationCounterHediff(Pawn inflated, HediffDef counterCumflationDef, BodyPartRecord bodyPartRecord) - { - Hediff cumflationHediff = inflated.health.hediffSet.GetFirstHediffOfDef(counterCumflationDef); - if (cumflationHediff == null) - { - cumflationHediff = HediffMaker.MakeHediff(counterCumflationDef, inflated, bodyPartRecord); - cumflationHediff.Severity = 0; - inflated.health.AddHediff(cumflationHediff, bodyPartRecord); - } - return cumflationHediff; - - } - } -} \ No newline at end of file diff --git a/Source/Genes/GenitaliaSize/Gene_EvergrowingGenitalia.cs b/Source/Genes/GenitaliaSize/Gene_EvergrowingGenitalia.cs index 493eadf..552ac20 100644 --- a/Source/Genes/GenitaliaSize/Gene_EvergrowingGenitalia.cs +++ b/Source/Genes/GenitaliaSize/Gene_EvergrowingGenitalia.cs @@ -9,13 +9,12 @@ namespace RJW_Genes public class Gene_EvergrowingGenitalia : RJW_Gene { - const int BASE_TICKS = 60000; public override void Tick() { base.Tick(); - int interval = ModExtensionHelper.GetTickIntervalFromModExtension(GeneDefOf.rjw_genes_evergrowth, ModExtensionHelper.GetTickIntervalFromModExtension(this.def, BASE_TICKS)); + int interval = ModExtensionHelper.GetTickIntervalFromModExtension(GeneDefOf.rjw_genes_evergrowth, RJW_Genes_Settings.rjw_genes_evergrowth_ticks); if (pawn.IsHashIntervalTick(interval) && this.pawn.Map != null && pawn.ageTracker.AgeBiologicalYears >= RJW_Genes_Settings.rjw_genes_resizing_age) diff --git a/Source/Genes/Special/Patches/Patch_SexualTamer.cs b/Source/Genes/Special/Patches/Patch_SexualTamer.cs index 6e3c5e1..15215af 100644 --- a/Source/Genes/Special/Patches/Patch_SexualTamer.cs +++ b/Source/Genes/Special/Patches/Patch_SexualTamer.cs @@ -45,9 +45,7 @@ namespace RJW_Genes { if (RJW_Genes_Settings.rjw_genes_detailed_debug) ModLog.Message($"{human} is a sextamer with bestiality on colony animal {animal} - trying to train"); - if (animal.training == null) return; var trainable = animal.training.NextTrainableToTrain(); - if (trainable == null) return; animal.training.Train(trainable, human); } } diff --git a/Source/HarmonyInit.cs b/Source/HarmonyInit.cs index e6c1688..f4396b9 100644 --- a/Source/HarmonyInit.cs +++ b/Source/HarmonyInit.cs @@ -57,16 +57,13 @@ namespace RJW_Genes { // Gene: Cumflation Immunity [Prefix Patch] harmony.Patch(AccessTools.Method(typeof(LicentiaLabs.CumflationHelper), nameof(LicentiaLabs.CumflationHelper.Cumflation)), - prefix: new HarmonyMethod(typeof(Patch_CumflationImmunity), nameof(Patch_CumflationImmunity.Prefix))); + prefix: new HarmonyMethod(typeof(Patch_Cumflation), nameof(Patch_Cumflation.Prefix))); // Gene: Generous Donor [Postfix Patch] harmony.Patch(AccessTools.Method(typeof(LicentiaLabs.CumflationHelper), nameof(LicentiaLabs.CumflationHelper.TransferNutrition)), postfix: new HarmonyMethod(typeof(Patch_TransferNutrition), nameof(Patch_TransferNutrition.Postfix))); // Gene: CumEater [Postfix Patch] -- This is not exactly licentia, but the Generous-Donor Gene is only active with Licentia harmony.Patch(AccessTools.Method(typeof(rjw.JobDriver_Sex), nameof(rjw.JobDriver_Sex.ChangePsyfocus)), postfix: new HarmonyMethod(typeof(Patch_SexTicks_ChangePsyfocus), nameof(Patch_SexTicks_ChangePsyfocus.Postfix))); - // Gene: Likes Cumflation [Postfix Patch] - harmony.Patch(AccessTools.Method(typeof(LicentiaLabs.CumflationHelper), nameof(LicentiaLabs.CumflationHelper.Cumflation)), - postfix: new HarmonyMethod(typeof(Patch_LikesCumflation), nameof(Patch_LikesCumflation.PostFix))); } }))(); } diff --git a/Source/HediffDefOf.cs b/Source/HediffDefOf.cs index d957096..443c32e 100644 --- a/Source/HediffDefOf.cs +++ b/Source/HediffDefOf.cs @@ -20,9 +20,6 @@ namespace RJW_Genes public static readonly HediffDef rjw_genes_orgasmic_mytosis_hediff; public static readonly HediffDef rjw_genes_mytosis_shock_hediff; - [MayRequire("LustLicentia.RJWLabs")] public static readonly HediffDef rjw_genes_cumstuffed_counter; - [MayRequire("LustLicentia.RJWLabs")] public static readonly HediffDef rjw_genes_cumflation_counter; - public static readonly HediffDef OvaryAgitator; public static readonly HediffDef Bioscaffold; } diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index 6c6ef9a..5c02391 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -48,11 +48,13 @@ + + @@ -71,7 +73,6 @@ - @@ -79,6 +80,7 @@ + @@ -94,7 +96,7 @@ - + @@ -217,7 +219,7 @@ False - ..\..\rjw-sexperience\1.5\Assemblies\RJWSexperience.dll + ..\..\rjw-sexperience-master\1.5\Assemblies\RJWSexperience.dll False diff --git a/Source/Settings/RJW_Genes_Settings.cs b/Source/Settings/RJW_Genes_Settings.cs index 49257a8..4180532 100644 --- a/Source/Settings/RJW_Genes_Settings.cs +++ b/Source/Settings/RJW_Genes_Settings.cs @@ -17,57 +17,58 @@ namespace RJW_Genes listing_Standard.maxOneColumn = true; listing_Standard.ColumnWidth = rect.width / 2.05f; listing_Standard.Begin(rect); - listing_Standard.Gap(24f); + listing_Standard.Gap(24f); // Genitalia Resizing Age - listing_Standard.Label("rjw_genes_settings_genitalia_resizing_age".Translate() + " " + - Math.Round((double)(RJW_Genes_Settings.rjw_genes_resizing_age), 0).ToString() + "rjw_genes_settings_genitalia_resizing_postfix".Translate(), -1f, "rjw_genes_settings_genitalia_resizing_age_explanation".Translate()); + listing_Standard.Label("Genitalia resizing age" + ": " + + Math.Round((double)(RJW_Genes_Settings.rjw_genes_resizing_age), 0).ToString() , -1f, "years."); RJW_Genes_Settings.rjw_genes_resizing_age = listing_Standard.Slider(RJW_Genes_Settings.rjw_genes_resizing_age, 18f, 100f); listing_Standard.Gap(4f); + // Evergrowth Speed + listing_Standard.Label("number of ticks between genitalia evergrowth updates (60000 ticks are 1 day)" + ": " + + Math.Round((double)(RJW_Genes_Settings.rjw_genes_evergrowth_ticks), 0).ToString() , -1f, "ticks."); + RJW_Genes_Settings.rjw_genes_evergrowth_ticks = (int) listing_Standard.Slider(RJW_Genes_Settings.rjw_genes_evergrowth_ticks, 600, 60000); + listing_Standard.Gap(4f); // Fertilin Gain From Animals - listing_Standard.Label("rjw_genes_settings_fertilin_gain_from_animals".Translate() + " " + - Math.Round((double)(RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor * 100f), 0).ToString() + "%", -1f, "rjw_genes_settings_fertilin_gain_from_animals_explanation".Translate()); + 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("rjw_genes_settings_sexdemon_spawn_key".Translate(), ref rjw_genes_sexdemon_visit, "rjw_genes_settings_sexdemon_spawn_explanation".Translate(), 0f, 1f); + 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(" " + "rjw_genes_settings_sexdemon_size_matters_key".Translate(), ref rjw_genes_sexdemon_join_size_matters, "rjw_genes_settings_sexdemon_size_matters_explanation".Translate(), 0f, 1f); + 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(" " + "rjw_genes_settings_sexdemon_group_spawn_key".Translate(), ref rjw_genes_sexdemon_visit_groups, "rjw_genes_settings_sexdemon_group_spawn_explanation".Translate(), 0f, 1f); + 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(" " + "rjw_genes_settings_sexdemon_succubi_spawn_key".Translate(), ref rjw_genes_sexdemon_visit_succubi, "rjw_genes_settings_sexdemon_succubi_spawn_explanation".Translate(), 0f, 1f); + 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(" " + "rjw_genes_settings_sexdemon_incubi_spawn_key".Translate(), ref rjw_genes_sexdemon_visit_incubi, "rjw_genes_settings_sexdemon_incubi_spawn_explanation".Translate(), 0f, 1f); + listing_Standard.CheckboxLabeled(" Incubi", ref rjw_genes_sexdemon_visit_incubi, "Allow incubi to spawn through this even", 0f, 1f); } listing_Standard.Gap(4f); listing_Standard.Gap(4f); - listing_Standard.CheckboxLabeled("rjw_genes_settings_regret_stealing_love_key".Translate(), ref regretStealingLovinThoughtDisabled, "rjw_genes_settings_regret_stealing_love_explanation".Translate()); - - listing_Standard.Gap(4f); - listing_Standard.CheckboxLabeled("rjw_genes_settings_animal_mating_needs_penis_key".Translate(), ref animalMatingPulseCheckForGenitals, "rjw_genes_settings_animal_mating_needs_penis_explanation".Translate()); + listing_Standard.CheckboxLabeled("Regret Stealing Love", ref regretStealingLovinThoughtDisabled, "If off, pawns will not get bad thoughts for seduction."); listing_Standard.Gap(5f); - listing_Standard.CheckboxLabeled("rjw_genes_settings_generous_donor_cheatmode_key".Translate(), ref rjw_genes_generous_donor_cheatmode, "rjw_genes_settings_generous_donor_cheatmode_explanation".Translate(), 0f, 1f); + 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("rjw_genes_settings_detailed_debug_key".Translate(), ref rjw_genes_detailed_debug, "rjw_genes_settings_detailed_debug_explanation".Translate(), 0f, 1f); + 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_evergrowth_ticks, "rjw_genes_evergrowth_ticks", RJW_Genes_Settings.rjw_genes_evergrowth_ticks, true); Scribe_Values.Look(ref RJW_Genes_Settings.rjw_genes_resizing_age, "rjw_genes_resizing_age", RJW_Genes_Settings.rjw_genes_resizing_age, true); 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 regretStealingLovinThoughtDisabled, "regretStealingLovinThoughtDisabled", regretStealingLovinThoughtDisabled, true); - - Scribe_Values.Look(ref animalMatingPulseCheckForGenitals, "animalMatingPulseCheckForGenitals", animalMatingPulseCheckForGenitals, 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); 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); @@ -79,8 +80,8 @@ namespace RJW_Genes public static bool rjw_genes_detailed_debug = false; public static float rjw_genes_fertilin_from_animals_factor = 0.1f; public static float rjw_genes_resizing_age = 20; + public static int rjw_genes_evergrowth_ticks = 60000; public static bool regretStealingLovinThoughtDisabled = false; - public static bool animalMatingPulseCheckForGenitals = true; public static bool rjw_genes_sexdemon_visit = true; public static bool rjw_genes_sexdemon_join_size_matters = true; diff --git a/TODOS.md b/TODOS.md index 25f5045..33ece5e 100644 --- a/TODOS.md +++ b/TODOS.md @@ -2,7 +2,15 @@ Any help is very appreciated, even if it is just pointing me to existing similar projects. -## Planned / Wanted Genes +## Additions to existing things + +**Cumeater** - Look for edible cum-items when low on Fertilin + +**Incubi** - Add a forced striptease Ability + +**Age Transfer Genes** - Add (configurable) option to satisfy Bodymodders and their AgeReversalDemand + +## Planned Genes **Adjustable Cock-Size** like e.g. artificial genitalia have @@ -12,18 +20,46 @@ Any help is very appreciated, even if it is just pointing me to existing similar **Cum-Drugs** eating cum has an effect similar to Go-Juice (including (separate?) addiction) -**Death-Rest** until the pawn is cumflated. I would have liked +**Death-Rest** until the pawn is cumflated. -**STD Immunity** & maybe a potential to be carrier, but not suffer effects. I just don't play with STDs +**STD Immunity** & maybe a potential to be carrier, but not suffer effects. + +## Planned Xenotypes + +**Beastmaster:** + +- [] Animal Mating Call (Get fucked by everything nearby, potentially ending animal rage) +- [] Pheromone Spit that marks a target for being raped by animals +- [] Power-Boost & Bonding to animals through zoophilia +- [] Maybe: Boost pregnancy times of Animals +- [] Maybe: Make it Animal-Fertilin-Dependend +- [] Either: Can only eat meat or cannot eat meat +- [] Gene to prefer hookups of animals that are in a menstrual cycle + +Can't help but think about Rexxar Porn now I am a bad person. ## Genes with Abilities and more Effects There were some suggestions on the Discord I saved them somewhere else. I am far away from making that work, but to have them here: -- Genitalia deal damage as per size (on normal sex-use) - This started in the branch `GenitaliaDamage` but prooves a bit overboarding! +- Genitalia deal damage as per size (on normal sex-use) - Genitalia can cause Terror (as ability) -- Cumshot Sniper Abilities. Scale damage with body size and genitalia size, scale distance by cum-amount (relative to the damage - high damage projectiles need more cum per meter). +- Cumshot Sniper Abilities ## Cleanups: +- Streamline Filenames / Names to either be LifeForce or Fertilin (e.g. `Hediffs_Fertilin.xml` but `Pawnkind_LifeForce.xml`). I think most things are called LifeForce. +- Similar cleanup for the patches, and make a note what to find where in the patches - Change Project structure to the 1.3, 1.4 Structure of other mods + +## Split: + +I plan to split this mod. +Namely, I want to make a + +1. base-mod (with genitalia and size genes, anything alternating all base stats) +2. bonus-mod, with Fertilin and other complex genes +3. xenotype-mod (only xenotypes + scenarios) +4. animal genes inheritance (Yes, bit of a meme that it was separate mod earlier) + +I first want to make a bit more content, and then I hope there will be a "breaking change" in RJW so I can also do a breaking change on top of that. \ No newline at end of file