mirror of
				https://github.com/vegapnk/RJW-Genes.git
				synced 2024-08-15 00:23:31 +00:00 
			
		
		
		
	Compare commits
	
		
			7 commits
		
	
	
		
			b6147dfb82
			...
			9ca57bdfa8
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
							 | 
						9ca57bdfa8 | ||
| 
							 | 
						c588939fa7 | ||
| 
							 | 
						9e53ecd597 | ||
| 
							 | 
						096857d4c2 | ||
| 
							 | 
						2d24466985 | ||
| 
							 | 
						ef838d1fd3 | ||
| 
							 | 
						0d26f1254c | 
					 12 changed files with 262 additions and 52 deletions
				
			
		
							
								
								
									
										49
									
								
								CHANGELOG.md
									
										
									
									
									
								
							
							
						
						
									
										49
									
								
								CHANGELOG.md
									
										
									
									
									
								
							| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
# 2.2.0
 | 
					# 2.2.0 (dd-mm-2024)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Genetic Diseases** 
 | 
					**Genetic Diseases** 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,6 +12,7 @@ Infections can be
 | 
				
			||||||
- Chances are adjustable per XML per Gene
 | 
					- Chances are adjustable per XML per Gene
 | 
				
			||||||
 | 
					
 | 
				
			||||||
By turning their spread off, you effectively have a set of normal negative genes. 
 | 
					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???* 
 | 
					*Why???* 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,20 +20,26 @@ Most of the genes so far were positive or neutral,
 | 
				
			||||||
so I got some fair requests to introduce negative genes to keep xenotypes balanced. 
 | 
					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? 
 | 
					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)
 | 
					- 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: Vulnerability. Pawn is likelier to be raped 
 | 
				
			||||||
- Disease Gene: Infectious Hypersexuality
 | 
					- Disease Gene: Infectious Hypersexuality
 | 
				
			||||||
- Disease Gene: Infectious Homosexuality & Bisexuality
 | 
					- 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: 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Internal**
 | 
					**Fixes:**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Fixed an Issue where pawns would always get the Pheromone social boost, unless they had the pheromone (#113)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**Internal:**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- GenderFluid-Gene now uses a generalized `TickBasedChanceExtension` over its unique special `GenderFluidExtension`
 | 
					- 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. 
 | 
					- 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
 | 
					# 2.1.0 (27-06-2024)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Additions**:
 | 
					**Additions**:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -79,7 +86,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 Kira-Bad-Artist
 | 
				
			||||||
- Some new Icons thanks to Archer 
 | 
					- Some new Icons thanks to Archer 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 2.0.0
 | 
					# 2.0.0 (30-05-2024)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Summary**:
 | 
					**Summary**:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -126,20 +133,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. 
 | 
					- Patches to RJW-Pregnancy Helper to account for Male Pregs. 
 | 
				
			||||||
- Some replacements from `hasGene` to `hasActiveGene` 
 | 
					- Some replacements from `hasGene` to `hasActiveGene` 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 1.3.3
 | 
					# 1.3.3 (02-11-2023)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Fixes:** 
 | 
					**Fixes:** 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Added another check to the AG Malachai Xenotype (Fixes #68)
 | 
					- 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))
 | 
					- Fixed the `GatheredCum`Fertilin Ingestion Patch throwing an Error for people without Sexperience (Fixes #69 (nice))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 1.3.2
 | 
					# 1.3.2 (24-10-2023)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Fixes:**
 | 
					**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)
 | 
					- 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 
 | 
					# 1.3.1 (22-10-2023)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Changes**
 | 
					**Changes**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -178,7 +185,7 @@ The pawns that are gender fluid can get pregnant.
 | 
				
			||||||
However, with RJW 5.3.7 these pregnancies disappear. 
 | 
					However, with RJW 5.3.7 these pregnancies disappear. 
 | 
				
			||||||
This is a change needed upstream, but I will have a look. 
 | 
					This is a change needed upstream, but I will have a look. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 1.2.1 
 | 
					# 1.2.1 (18-06-2023)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Fixes**: 
 | 
					**Fixes**: 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -258,9 +265,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
 | 
					- Mostly Patches and Changes to the Halamyr Defs
 | 
				
			||||||
- Some re-arranging and mayRequires for other mods
 | 
					- Some re-arranging and mayRequires for other mods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 1.1.4
 | 
					# 1.1.4 (06-04-2023)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Fixes: 
 | 
					**Fixes:**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Youth Fountain and Age Drainer **really** "stop" at 18 (#26, #28) and never age pawns
 | 
					- 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`
 | 
					- Drastically reduced vomiting time due to an missunderstanding (#29). `0.4` instead of `0.01`
 | 
				
			||||||
| 
						 | 
					@ -268,37 +275,37 @@ Fixes:
 | 
				
			||||||
Sometimes life is like that, and you have to fix the fixes. 
 | 
					Sometimes life is like that, and you have to fix the fixes. 
 | 
				
			||||||
It was never really broken, life is just very long. 
 | 
					It was never really broken, life is just very long. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 1.1.3
 | 
					# 1.1.3 (28-03-2023)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Changes:
 | 
					**Changes:**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Youth Fountain and Age Drainer "stop" at 18 (#26)
 | 
					- Youth Fountain and Age Drainer "stop" at 18 (#26)
 | 
				
			||||||
- Youth Fountain and Age Drainer activate only for pawns 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)
 | 
					- 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)
 | 
					- InsectBreeder would mess with normal Pawn-Animal pregancy for egg laying animals (#23)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 1.1.2
 | 
					# 1.1.2 (19-03-2023)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Changes:
 | 
					**Changes:**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Added more cool images from WasMachenDennSachen (#22)
 | 
					- Added more cool images from WasMachenDennSachen (#22)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Fixes: 
 | 
					**Fixes:** 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Aphrodisiac Pheromones checks for children and other conditions (#25)
 | 
					- Aphrodisiac Pheromones checks for children and other conditions (#25)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 1.1.1 
 | 
					# 1.1.1 (10-03-2023)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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)
 | 
					- 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
 | 
					- No-Breast Genes add Nipples
 | 
				
			||||||
- Featureless Chest Gene (No Nipples at all, adds the RJW Featureless Chest as requested per some Kobold fetishists)
 | 
					- 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 
 | 
					- Small and Big Male Genitalia had images wrong way round 
 | 
				
			||||||
- Fertilin should activate at a MinAge of 18 
 | 
					- Fertilin should activate at a MinAge of 18 
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -186,4 +186,20 @@
 | 
				
			||||||
        </modExtensions>
 | 
					        </modExtensions>
 | 
				
			||||||
    </GeneDef>
 | 
					    </GeneDef>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <GeneDef ParentName="RJWGeneDisease">
 | 
				
			||||||
 | 
					        <defName>rjw_genes_size_blinded</defName>
 | 
				
			||||||
 | 
					        <label>size blinded</label>
 | 
				
			||||||
 | 
					        <description>This genetic disease makes the carrier dramatically more drawn to pawns with huge cocks.</description>
 | 
				
			||||||
 | 
					        <iconPath>UI/Icons/ColonistBar/Idle</iconPath>
 | 
				
			||||||
 | 
					        <biostatCpx>1</biostatCpx>
 | 
				
			||||||
 | 
					        <biostatMet>1</biostatMet>
 | 
				
			||||||
 | 
					        <displayOrderInCategory>11</displayOrderInCategory>
 | 
				
			||||||
 | 
					        <modExtensions>
 | 
				
			||||||
 | 
					            <li Class="RJW_Genes.GeneticDiseaseExtension">
 | 
				
			||||||
 | 
					                <infectionChance>0.1</infectionChance>
 | 
				
			||||||
 | 
					            </li>
 | 
				
			||||||
 | 
					        </modExtensions>
 | 
				
			||||||
 | 
					    </GeneDef>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</Defs>
 | 
					</Defs>
 | 
				
			||||||
							
								
								
									
										27
									
								
								Common/Defs/ThoughtDefs/Thoughts_Disease.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								Common/Defs/ThoughtDefs/Thoughts_Disease.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,27 @@
 | 
				
			||||||
 | 
					<?xml version="1.0" encoding="utf-8" ?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<Defs>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <ThoughtDef>
 | 
				
			||||||
 | 
					    <defName>rjw_genes_appealing_cock</defName>
 | 
				
			||||||
 | 
					    <thoughtClass>Thought_SituationalSocial</thoughtClass>
 | 
				
			||||||
 | 
					    <workerClass>RJW_Genes.ThoughtWorker_SizeBlinded_Social</workerClass>
 | 
				
			||||||
 | 
					    <validWhileDespawned>true</validWhileDespawned>
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    <stages>
 | 
				
			||||||
 | 
					      <li>
 | 
				
			||||||
 | 
					        <label>small cock</label>
 | 
				
			||||||
 | 
					        <baseOpinionOffset>-10</baseOpinionOffset>
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
					      <li>
 | 
				
			||||||
 | 
					        <label>big cock</label>
 | 
				
			||||||
 | 
					        <baseOpinionOffset>10</baseOpinionOffset>
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
					      <li>
 | 
				
			||||||
 | 
					        <label>monster cock</label>
 | 
				
			||||||
 | 
					        <baseOpinionOffset>20</baseOpinionOffset>
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
					    </stages>
 | 
				
			||||||
 | 
					  </ThoughtDef>
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					</Defs>
 | 
				
			||||||
| 
						 | 
					@ -126,6 +126,7 @@ namespace RJW_Genes
 | 
				
			||||||
		public static readonly GeneDef rjw_genes_minor_vulnerability;
 | 
							public static readonly GeneDef rjw_genes_minor_vulnerability;
 | 
				
			||||||
        public static readonly GeneDef rjw_genes_major_vulnerability;
 | 
					        public static readonly GeneDef rjw_genes_major_vulnerability;
 | 
				
			||||||
		public static readonly GeneDef rjw_genes_fluctual_sexual_needs;
 | 
							public static readonly GeneDef rjw_genes_fluctual_sexual_needs;
 | 
				
			||||||
 | 
							public static readonly GeneDef rjw_genes_size_blinded;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //Other Defs
 | 
					        //Other Defs
 | 
				
			||||||
        public static readonly XenotypeDef rjw_genes_succubus;
 | 
					        public static readonly XenotypeDef rjw_genes_succubus;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,6 +43,11 @@ namespace RJW_Genes.Genes.Diseases.Patches
 | 
				
			||||||
                ModLog.Debug($"{infected} is immune to genetic diseases");
 | 
					                ModLog.Debug($"{infected} is immune to genetic diseases");
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            if (infected.Dead)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // Dead people can spread, but not receive, diseases.
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            foreach (GeneDef disease in GetGeneticDiseaseGenes(infector)) {
 | 
					            foreach (GeneDef disease in GetGeneticDiseaseGenes(infector)) {
 | 
				
			||||||
                ModLog.Debug($"Found genetic disease {disease} in {infector}, trying to infect {infected}");
 | 
					                ModLog.Debug($"Found genetic disease {disease} in {infector}, trying to infect {infected}");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,56 @@
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// 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. 
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    [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}");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,70 @@
 | 
				
			||||||
 | 
					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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -73,5 +73,48 @@ namespace RJW_Genes
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            return candidate.def.defName.ToLower().Contains("breast");
 | 
					            return candidate.def.defName.ToLower().Contains("breast");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// 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. 
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="pawn"></param>
 | 
				
			||||||
 | 
					        /// <returns>The biggest penis of a pawn. Null on women or error.</returns>
 | 
				
			||||||
 | 
					        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<rjw.CompHediffBodyPart>();
 | 
				
			||||||
 | 
					                        var bestSize = part.TryGetComp<rjw.CompHediffBodyPart>();
 | 
				
			||||||
 | 
					                        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<rjw.CompHediffBodyPart>() == null)
 | 
				
			||||||
 | 
					                return 0.0f;
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                return part.TryGetComp<rjw.CompHediffBodyPart>().SizeOwner;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,10 +40,20 @@ namespace RJW_Genes
 | 
				
			||||||
            // If the pawn is not on Map (e.g. caravan), no mali 
 | 
					            // If the pawn is not on Map (e.g. caravan), no mali 
 | 
				
			||||||
            if (!MapUtility.PawnIsOnHomeMap(pawn))
 | 
					            if (!MapUtility.PawnIsOnHomeMap(pawn))
 | 
				
			||||||
                return (ThoughtState)false;
 | 
					                return (ThoughtState)false;
 | 
				
			||||||
            // Do nothing for pawns that also have pheromones
 | 
					
 | 
				
			||||||
            if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_aphrodisiac_pheromones))
 | 
					            // Do nothing if the pawn does not have the pheromones
 | 
				
			||||||
 | 
					            if (!GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_aphrodisiac_pheromones))
 | 
				
			||||||
                return (ThoughtState)false;
 | 
					                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: 
 | 
					            // Actual Logic: 
 | 
				
			||||||
            // Pawn qualifies in right distance and needs line of sight.
 | 
					            // Pawn qualifies in right distance and needs line of sight.
 | 
				
			||||||
            var pos = other.Position; 
 | 
					            var pos = other.Position; 
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -78,6 +78,8 @@
 | 
				
			||||||
    <Compile Include="Genes\Diseases\Defs\GeneticDiseaseExtension.cs" />
 | 
					    <Compile Include="Genes\Diseases\Defs\GeneticDiseaseExtension.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Diseases\Genes\Gene_FluctualSexualNeed.cs" />
 | 
					    <Compile Include="Genes\Diseases\Genes\Gene_FluctualSexualNeed.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Diseases\Patches\Patch_AftersexUtility_TransferGeneticDiseases.cs" />
 | 
					    <Compile Include="Genes\Diseases\Patches\Patch_AftersexUtility_TransferGeneticDiseases.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Genes\Diseases\Patches\Patch_SecondaryRomanceChanceFactor_Gene_SizeBlinded.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Genes\Diseases\Thoughts\ThoughtWorker_SizeBlinded_Social.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Life_Force\Events\SuccubusVisit\IncidentWorker_SuccubusVisit.cs" />
 | 
					    <Compile Include="Genes\Life_Force\Events\SuccubusVisit\IncidentWorker_SuccubusVisit.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Life_Force\Events\SuccubusVisit\LordJob_SuccubusVisit.cs" />
 | 
					    <Compile Include="Genes\Life_Force\Events\SuccubusVisit\LordJob_SuccubusVisit.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Life_Force\Interactions\SuccubusTailjob\DomSuccubusTailCustomRequirementHandler.cs" />
 | 
					    <Compile Include="Genes\Life_Force\Interactions\SuccubusTailjob\DomSuccubusTailCustomRequirementHandler.cs" />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,8 @@ namespace RJW_Genes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static readonly ThoughtDef rjw_genes_pheromone_carrier_nearby;
 | 
					        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
 | 
					        //Others with same names but other defs than in genedefof
 | 
				
			||||||
        public static readonly InteractionDef rjw_genes_flirt;
 | 
					        public static readonly InteractionDef rjw_genes_flirt;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										29
									
								
								TODOS.md
									
										
									
									
									
								
							
							
						
						
									
										29
									
								
								TODOS.md
									
										
									
									
									
								
							| 
						 | 
					@ -1,29 +0,0 @@
 | 
				
			||||||
# 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
 | 
					 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue