diff --git a/CHANGELOG.md b/CHANGELOG.md index c177c58..8bc0df6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# 2.2.0 (dd-mm-2024) +# 2.2.0 **Genetic Diseases** @@ -12,7 +12,6 @@ Infections can be - Chances are adjustable per XML per Gene By turning their spread off, you effectively have a set of normal negative genes. -Dead pawns can spread diseases, but cannot receive them. For all you necros out there. *Why???* @@ -20,26 +19,20 @@ Most of the genes so far were positive or neutral, so I got some fair requests to introduce negative genes to keep xenotypes balanced. I know that this is some overlap with the STD mod, but well ... you are free to turn things off? -**Additions:** +**Additions** - Passive Gene: *Genetic Disease Immunity* - cannot get infected by any genetic diseases, and won't be affected by some other genes (see relevant genes) - Disease Gene: Vulnerability. Pawn is likelier to be raped - Disease Gene: Infectious Hypersexuality - Disease Gene: Infectious Homosexuality & Bisexuality -- Disease Gene: Fluctual Sexual Need. (Configurable) Chance to reset sex-need to near-zero and gain a bit of rest-need. -- Disease Gene: Size Blinded. Pawns have a higher chance for hooking up with pawns with a big cock, lower chance for small cocks. +- Disease Gene: Fluctual Sexual Need. (Configurable) Chance to reset sex-need to near-zero and gain a bit of rest-need. -**Fixes:** - -- Fixed an Issue where pawns would always get the Pheromone social boost, unless they had the pheromone (#113) - -**Internal:** +**Internal** - GenderFluid-Gene now uses a generalized `TickBasedChanceExtension` over its unique special `GenderFluidExtension` - Introduced a `ModLog.Debug` Function that checks for the settings before printing - trying to spread it over the whole project. -- Removed TODO File. I have enough to do. -# 2.1.0 (27-06-2024) +# 2.1.0 **Additions**: @@ -86,7 +79,7 @@ I know that this is some overlap with the STD mod, but well ... you are free to - Some new Icons thanks to Kira-Bad-Artist - Some new Icons thanks to Archer -# 2.0.0 (30-05-2024) +# 2.0.0 **Summary**: @@ -133,20 +126,20 @@ I know that this is some overlap with the STD mod, but well ... you are free to - Patches to RJW-Pregnancy Helper to account for Male Pregs. - Some replacements from `hasGene` to `hasActiveGene` -# 1.3.3 (02-11-2023) +# 1.3.3 **Fixes:** - Added another check to the AG Malachai Xenotype (Fixes #68) - Fixed the `GatheredCum`Fertilin Ingestion Patch throwing an Error for people without Sexperience (Fixes #69 (nice)) -# 1.3.2 (24-10-2023) +# 1.3.2 **Fixes:** - Removed patch for Malachai, needs a different patching operator but I don't want to have broken fixes for now (Tracked in a new Issue) -# 1.3.1 (22-10-2023) +# 1.3.1 **Changes** @@ -185,7 +178,7 @@ The pawns that are gender fluid can get pregnant. However, with RJW 5.3.7 these pregnancies disappear. This is a change needed upstream, but I will have a look. -# 1.2.1 (18-06-2023) +# 1.2.1 **Fixes**: @@ -265,9 +258,9 @@ And I am aware that the TiTs-Myr work different than the things I made now. - Mostly Patches and Changes to the Halamyr Defs - Some re-arranging and mayRequires for other mods -# 1.1.4 (06-04-2023) +# 1.1.4 -**Fixes:** +Fixes: - Youth Fountain and Age Drainer **really** "stop" at 18 (#26, #28) and never age pawns - Drastically reduced vomiting time due to an missunderstanding (#29). `0.4` instead of `0.01` @@ -275,37 +268,37 @@ And I am aware that the TiTs-Myr work different than the things I made now. Sometimes life is like that, and you have to fix the fixes. It was never really broken, life is just very long. -# 1.1.3 (28-03-2023) +# 1.1.3 -**Changes:** +Changes: - Youth Fountain and Age Drainer "stop" at 18 (#26) - Youth Fountain and Age Drainer activate only for pawns at 18 (#26) - Drained Pawns vomit less (from mtb 0.05 to 0.01)(#29) -**Fixes:** +Fixes: - InsectBreeder would mess with normal Pawn-Animal pregancy for egg laying animals (#23) -# 1.1.2 (19-03-2023) +# 1.1.2 -**Changes:** +Changes: - Added more cool images from WasMachenDennSachen (#22) -**Fixes:** +Fixes: - Aphrodisiac Pheromones checks for children and other conditions (#25) -# 1.1.1 (10-03-2023) +# 1.1.1 -**Changes:** +Changes: - Drastically increased mood-penalty for Fertilin-Loss (if the pawn is still too happy, there will never be a breakdown for missing fertilin) - No-Breast Genes add Nipples - Featureless Chest Gene (No Nipples at all, adds the RJW Featureless Chest as requested per some Kobold fetishists) -**Fixes:** +Fixes: - Small and Big Male Genitalia had images wrong way round - Fertilin should activate at a MinAge of 18 diff --git a/Common/Defs/GeneDefs/GeneDefs_Diseases.xml b/Common/Defs/GeneDefs/GeneDefs_Diseases.xml index ecc3ee8..e5c8723 100644 --- a/Common/Defs/GeneDefs/GeneDefs_Diseases.xml +++ b/Common/Defs/GeneDefs/GeneDefs_Diseases.xml @@ -186,20 +186,4 @@ - - - rjw_genes_size_blinded - - This genetic disease makes the carrier dramatically more drawn to pawns with huge cocks. - UI/Icons/ColonistBar/Idle - 1 - 1 - 11 - -
  • - 0.1 -
  • -
    -
    - \ No newline at end of file diff --git a/Common/Defs/ThoughtDefs/Thoughts_Disease.xml b/Common/Defs/ThoughtDefs/Thoughts_Disease.xml deleted file mode 100644 index d0721ee..0000000 --- a/Common/Defs/ThoughtDefs/Thoughts_Disease.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - rjw_genes_appealing_cock - Thought_SituationalSocial - RJW_Genes.ThoughtWorker_SizeBlinded_Social - true - - -
  • - - -10 -
  • -
  • - - 10 -
  • -
  • - - 20 -
  • -
    -
    - -
    diff --git a/Source/GeneDefOf.cs b/Source/GeneDefOf.cs index 2e59f20..e4f4aff 100644 --- a/Source/GeneDefOf.cs +++ b/Source/GeneDefOf.cs @@ -126,7 +126,6 @@ namespace RJW_Genes public static readonly GeneDef rjw_genes_minor_vulnerability; public static readonly GeneDef rjw_genes_major_vulnerability; public static readonly GeneDef rjw_genes_fluctual_sexual_needs; - public static readonly GeneDef rjw_genes_size_blinded; //Other Defs public static readonly XenotypeDef rjw_genes_succubus; diff --git a/Source/Genes/Diseases/Patches/Patch_AftersexUtility_TransferGeneticDiseases.cs b/Source/Genes/Diseases/Patches/Patch_AftersexUtility_TransferGeneticDiseases.cs index 6bf8e88..d7a2e07 100644 --- a/Source/Genes/Diseases/Patches/Patch_AftersexUtility_TransferGeneticDiseases.cs +++ b/Source/Genes/Diseases/Patches/Patch_AftersexUtility_TransferGeneticDiseases.cs @@ -43,11 +43,6 @@ namespace RJW_Genes.Genes.Diseases.Patches ModLog.Debug($"{infected} is immune to genetic diseases"); return; } - if (infected.Dead) - { - // Dead people can spread, but not receive, diseases. - return; - } foreach (GeneDef disease in GetGeneticDiseaseGenes(infector)) { ModLog.Debug($"Found genetic disease {disease} in {infector}, trying to infect {infected}"); diff --git a/Source/Genes/Diseases/Patches/Patch_SecondaryRomanceChanceFactor_Gene_SizeBlinded.cs b/Source/Genes/Diseases/Patches/Patch_SecondaryRomanceChanceFactor_Gene_SizeBlinded.cs deleted file mode 100644 index fa36398..0000000 --- a/Source/Genes/Diseases/Patches/Patch_SecondaryRomanceChanceFactor_Gene_SizeBlinded.cs +++ /dev/null @@ -1,56 +0,0 @@ -using HarmonyLib; -using RimWorld; -using rjw; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; - -namespace RJW_Genes -{ - /// - /// This patch helps with the gene `rjw_genes_size_blinded`. - /// Within RJW the CasualSexHelper utilizes the basefunction "pawn.relations.SecondaryRomanceChanceFactor" - /// https://gitgud.io/Ed86/rjw/-/blob/master/1.5/Source/Common/Helpers/CasualSex_Helper.cs - /// - /// We check on hookup for the other pawn if they have a penis. - /// If yes, we modulate the romance chance based on the following: - /// (Severity * BodySize - 0.5) * romance_multiplier - /// So pawns with a cock smaller than 0.5 will be penalized, while pawns with more than 0.5 will be preferred. - /// - [HarmonyPatch(typeof(Pawn_RelationsTracker), "SecondaryRomanceChanceFactor")] - public class Patch_SecondaryRomanceChanceFactor_Gene_SizeBlinded - { - - const float romance_multiplier = 2f; - - public static void Postfix( Pawn ___pawn, Pawn otherPawn, ref float __result) - { - if (otherPawn == null || ___pawn == null || ___pawn.genes == null || otherPawn.genes == null) - { - return; - } - if (___pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_size_blinded) && Genital_Helper.has_penis_fertile(otherPawn) || (Genital_Helper.has_penis_infertile(otherPawn))) - { - Hediff biggest_cock = GenitaliaUtility.GetBiggestPenis(otherPawn); - if (biggest_cock != null) - { - float bodysize = GenitaliaUtility.GetBodySizeOfSexPart(biggest_cock); - // Bodysize can only be a bonus, not a minus. - bodysize = Math.Max(1.0f, bodysize); - - float attraction_bonus = (biggest_cock.Severity * bodysize - 0.5f) * romance_multiplier; - float result_backup = __result; - __result += attraction_bonus; - // Don't make it smaller than 0, to not get issues. - __result = __result < 0 ? 0.0f : __result; - - ModLog.Debug($"Gene_SizeBlind: Modulate Romance-Chance {___pawn}-->{otherPawn} from {result_backup} by {attraction_bonus} to {__result}"); - } - } - } - - } -} diff --git a/Source/Genes/Diseases/Thoughts/ThoughtWorker_SizeBlinded_Social.cs b/Source/Genes/Diseases/Thoughts/ThoughtWorker_SizeBlinded_Social.cs deleted file mode 100644 index 871b276..0000000 --- a/Source/Genes/Diseases/Thoughts/ThoughtWorker_SizeBlinded_Social.cs +++ /dev/null @@ -1,70 +0,0 @@ -using RimWorld; -using rjw; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using UnityEngine; -using Verse; - -namespace RJW_Genes -{ - public class ThoughtWorker_SizeBlinded_Social : ThoughtWorker - { - protected override ThoughtState CurrentSocialStateInternal(Pawn pawn, Pawn other) - { - // Return for trivial errors - if (pawn == null || other == null || pawn == other) - return (ThoughtState)false; - // Check for position-existance - if (pawn.Position == null || other.Position == null || pawn.Map == null || other.Map == null) - return (ThoughtState)false; - // Do nothing if pawn is carried - if (pawn.CarriedBy != null) - return (ThoughtState)false; - // Do nothing if Pawn is Baby or Child (#25) - if (!pawn.ageTracker.Adult) - return (ThoughtState)false; - if (!other.ageTracker.Adult) - return (ThoughtState)false; - // Only check if they are spawned humans - if (!pawn.Spawned || !other.Spawned) - return (ThoughtState)false; - if (!pawn.RaceProps.Humanlike) - return (ThoughtState)false; - if (!other.RaceProps.Humanlike) - return (ThoughtState)false; - - // Pawns that have not "met" wont give each other Mali - // Known-Each-Other is a key-word for Rimworld that shows they have had any interaction and stored each other in relations. - if (!RelationsUtility.PawnsKnowEachOther(pawn, other)) - return (ThoughtState)false; - // If the pawn is not on Map (e.g. caravan), no mali - if (!MapUtility.PawnIsOnHomeMap(pawn)) - return (ThoughtState)false; - - //ModLog.Debug($"ThoughtWorker Checks Size Blinded {pawn} -> {other}"); - - // Do nothing if there is no size-blinded involved - if (!GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_size_blinded)) - return (ThoughtState)false; - else - ModLog.Debug($"{pawn} has the size blinded gene"); - - // Iff the pawn has a penis, retrieve it's size. - var penis = GenitaliaUtility.GetBiggestPenis(other); - // Do Nothing if the other pawn has no penis - if (penis == null) return (ThoughtState)false; - var bodysize = GenitaliaUtility.GetBodySizeOfSexPart(penis); - - if (penis.Severity + (bodysize) - 1.0 > 1.0) - return ThoughtState.ActiveAtStage(2); - else if (penis.Severity >= 0.8f) - return ThoughtState.ActiveAtStage(1); - else - return ThoughtState.ActiveAtStage(0); - - } - } -} diff --git a/Source/Genes/Genitalia/GenitaliaUtility.cs b/Source/Genes/Genitalia/GenitaliaUtility.cs index 581ba64..6a6ba79 100644 --- a/Source/Genes/Genitalia/GenitaliaUtility.cs +++ b/Source/Genes/Genitalia/GenitaliaUtility.cs @@ -73,48 +73,5 @@ namespace RJW_Genes { return candidate.def.defName.ToLower().Contains("breast"); } - - /// - /// Returns the biggest penis of a pawn. - /// In case of a identical severity, the highest body size is returned. - /// For women, or pawns without a penis, null is returned. - /// - /// - /// The biggest penis of a pawn. Null on women or error. - public static Hediff GetBiggestPenis(Pawn pawn) - { - Hediff best = null; - var parts = Genital_Helper.get_AllPartsHediffList(pawn); - - foreach (var part in parts) - { - if (Genital_Helper.is_sex_part(part) && Genital_Helper.is_penis(part)) - { - if (best == null) best = part; - - // On a draw of size, we check the body-size. - if (part.Severity == best.Severity) { - var partSize = part.TryGetComp(); - var bestSize = part.TryGetComp(); - if (partSize == null || bestSize == null) { continue; } - - best = partSize.SizeOwner > bestSize.SizeOwner ? part : best; - } else if (part.Severity > best.Severity) { - best = part; - } - } - } - - return best; - } - - public static float GetBodySizeOfSexPart(Hediff part) - { - if (part == null || part.TryGetComp() == null) - return 0.0f; - else - return part.TryGetComp().SizeOwner; - } } - } diff --git a/Source/Genes/Special/Thoughts/ThoughtWorker_Aphrodisiac_Pheromones_Social.cs b/Source/Genes/Special/Thoughts/ThoughtWorker_Aphrodisiac_Pheromones_Social.cs index 6ae9fca..b236fc9 100644 --- a/Source/Genes/Special/Thoughts/ThoughtWorker_Aphrodisiac_Pheromones_Social.cs +++ b/Source/Genes/Special/Thoughts/ThoughtWorker_Aphrodisiac_Pheromones_Social.cs @@ -40,20 +40,10 @@ namespace RJW_Genes // If the pawn is not on Map (e.g. caravan), no mali if (!MapUtility.PawnIsOnHomeMap(pawn)) return (ThoughtState)false; - - // Do nothing if the pawn does not have the pheromones - if (!GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_aphrodisiac_pheromones)) + // Do nothing for pawns that also have pheromones + if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_aphrodisiac_pheromones)) return (ThoughtState)false; - // Do nothing for others that also have pheromones - if (GeneUtility.HasGeneNullCheck(other, GeneDefOf.rjw_genes_aphrodisiac_pheromones)) - return (ThoughtState)false; - - // Do nothing for pawns that wear Gas-Masks - if (other.apparel != null && other.apparel.AnyApparel) - if (other.apparel.WornApparel.Any(apparel => apparel.def == RimWorld.ThingDefOf.Apparel_GasMask)) - return (ThoughtState)false; - // Actual Logic: // Pawn qualifies in right distance and needs line of sight. var pos = other.Position; diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index 51b80a1..f684926 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -78,8 +78,6 @@ - - diff --git a/Source/ThoughtDefOf.cs b/Source/ThoughtDefOf.cs index 50f2a00..f884d4a 100644 --- a/Source/ThoughtDefOf.cs +++ b/Source/ThoughtDefOf.cs @@ -15,8 +15,6 @@ namespace RJW_Genes public static readonly ThoughtDef rjw_genes_pheromone_carrier_nearby; - public static readonly ThoughtDef rjw_genes_appealing_cock; - //Others with same names but other defs than in genedefof public static readonly InteractionDef rjw_genes_flirt; } diff --git a/TODOS.md b/TODOS.md new file mode 100644 index 0000000..25f5045 --- /dev/null +++ b/TODOS.md @@ -0,0 +1,29 @@ +# ToDos and Planned Genes + +Any help is very appreciated, even if it is just pointing me to existing similar projects. + +## Planned / Wanted Genes + +**Adjustable Cock-Size** like e.g. artificial genitalia have + +**Infectious Hypersexuality Gene** (Maybe?) add Hypersexuality Gene through sex with a certain chance. + +**Cum Addiction** add Cum-Addiction from Sexperience, slowly loose conciousness while addiction is not attended. + +**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 + +**STD Immunity** & maybe a potential to be carrier, but not suffer effects. I just don't play with STDs + +## 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 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). + +## Cleanups: + +- Change Project structure to the 1.3, 1.4 Structure of other mods