mirror of
				https://gitgud.io/lutepickle/rjw_menstruation.git
				synced 2024-08-14 22:46:52 +00:00 
			
		
		
		
	1.0.3.2
This commit is contained in:
		
							parent
							
								
									df1e3c9b23
								
							
						
					
					
						commit
						11d8ae4863
					
				
					 20 changed files with 444 additions and 122 deletions
				
			
		| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 | 
					<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 | 
				
			||||||
<Manifest>
 | 
					<Manifest>
 | 
				
			||||||
	<identifier>RJW Menstruation</identifier>
 | 
						<identifier>RJW Menstruation</identifier>
 | 
				
			||||||
	<version>1.0.3.1</version>
 | 
						<version>1.0.3.2</version>
 | 
				
			||||||
	<dependencies>
 | 
						<dependencies>
 | 
				
			||||||
	</dependencies>
 | 
						</dependencies>
 | 
				
			||||||
	<incompatibleWith />
 | 
						<incompatibleWith />
 | 
				
			||||||
| 
						 | 
					@ -9,6 +9,6 @@
 | 
				
			||||||
	</loadAfter>
 | 
						</loadAfter>
 | 
				
			||||||
	<suggests>
 | 
						<suggests>
 | 
				
			||||||
	</suggests>
 | 
						</suggests>
 | 
				
			||||||
  <manifestUri>https://github.com/moreoreganostodump/RJW_Menstruation/blob/master/About/Manifest.xml</manifestUri>
 | 
					  <manifestUri>https://raw.githubusercontent.com/moreoreganostodump/RJW_Menstruation/master/About/Manifest.xml</manifestUri>
 | 
				
			||||||
  <downloadUri>https://github.com/moreoreganostodump/RJW_Menstruation</downloadUri>
 | 
					  <downloadUri>https://github.com/moreoreganostodump/RJW_Menstruation</downloadUri>
 | 
				
			||||||
</Manifest>
 | 
					</Manifest>
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -2,7 +2,7 @@
 | 
				
			||||||
<Defs>
 | 
					<Defs>
 | 
				
			||||||
	<JobDef>
 | 
						<JobDef>
 | 
				
			||||||
		<defName>LactateSelf</defName>
 | 
							<defName>LactateSelf</defName>
 | 
				
			||||||
		<driverClass>MilkModule.JobDriver_HumanMilkSelf</driverClass>
 | 
							<driverClass>RJW_Menstruation.JobDriver_MilkSelf</driverClass>
 | 
				
			||||||
		<reportString>lactating self</reportString>
 | 
							<reportString>lactating self</reportString>
 | 
				
			||||||
		<allowOpportunisticPrefix>true</allowOpportunisticPrefix>
 | 
							<allowOpportunisticPrefix>true</allowOpportunisticPrefix>
 | 
				
			||||||
	</JobDef>
 | 
						</JobDef>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<ThoughtDef>
 | 
						<ThoughtDef>
 | 
				
			||||||
		<defName>CameInsideF</defName>
 | 
							<defName>CameInsideF</defName>
 | 
				
			||||||
		<thoughtClass>Thought_Memory</thoughtClass>
 | 
							<thoughtClass>Thought_MemorySocial</thoughtClass>
 | 
				
			||||||
		<durationDays>7.0</durationDays>
 | 
							<durationDays>7.0</durationDays>
 | 
				
			||||||
		<stackLimit>5</stackLimit>
 | 
							<stackLimit>5</stackLimit>
 | 
				
			||||||
		<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
 | 
							<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
 | 
				
			||||||
| 
						 | 
					@ -35,8 +35,8 @@
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	<ThoughtDef>
 | 
						<ThoughtDef>
 | 
				
			||||||
		<defName>CameInsideFLowFert</defName>
 | 
							<defName>CameInsideFLowFert</defName>
 | 
				
			||||||
		<thoughtClass>Thought_Memory</thoughtClass>
 | 
							<thoughtClass>Thought_MemorySocial</thoughtClass>
 | 
				
			||||||
		<durationDays>7.0</durationDays>
 | 
							<durationDays>3.0</durationDays>
 | 
				
			||||||
		<stackLimit>5</stackLimit>
 | 
							<stackLimit>5</stackLimit>
 | 
				
			||||||
		<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
 | 
							<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
 | 
				
			||||||
		<stackLimitForSameOtherPawn>1</stackLimitForSameOtherPawn>
 | 
							<stackLimitForSameOtherPawn>1</stackLimitForSameOtherPawn>
 | 
				
			||||||
| 
						 | 
					@ -51,7 +51,7 @@
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	<ThoughtDef>
 | 
						<ThoughtDef>
 | 
				
			||||||
		<defName>CameInsideFFetish</defName>
 | 
							<defName>CameInsideFFetish</defName>
 | 
				
			||||||
		<thoughtClass>Thought_Memory</thoughtClass>
 | 
							<thoughtClass>Thought_MemorySocial</thoughtClass>
 | 
				
			||||||
		<durationDays>3.0</durationDays>
 | 
							<durationDays>3.0</durationDays>
 | 
				
			||||||
		<stackLimit>5</stackLimit>
 | 
							<stackLimit>5</stackLimit>
 | 
				
			||||||
		<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
 | 
							<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
 | 
				
			||||||
| 
						 | 
					@ -68,7 +68,7 @@
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	<ThoughtDef>
 | 
						<ThoughtDef>
 | 
				
			||||||
		<defName>CameInsideFFetishSafe</defName>
 | 
							<defName>CameInsideFFetishSafe</defName>
 | 
				
			||||||
		<thoughtClass>Thought_Memory</thoughtClass>
 | 
							<thoughtClass>Thought_MemorySocial</thoughtClass>
 | 
				
			||||||
		<durationDays>3.0</durationDays>
 | 
							<durationDays>3.0</durationDays>
 | 
				
			||||||
		<stackLimit>5</stackLimit>
 | 
							<stackLimit>5</stackLimit>
 | 
				
			||||||
		<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
 | 
							<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
 | 
				
			||||||
| 
						 | 
					@ -85,7 +85,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<ThoughtDef>
 | 
						<ThoughtDef>
 | 
				
			||||||
		<defName>CameInsideM</defName>
 | 
							<defName>CameInsideM</defName>
 | 
				
			||||||
		<thoughtClass>Thought_Memory</thoughtClass>
 | 
							<thoughtClass>Thought_MemorySocial</thoughtClass>
 | 
				
			||||||
		<durationDays>1.0</durationDays>
 | 
							<durationDays>1.0</durationDays>
 | 
				
			||||||
		<stackLimit>5</stackLimit>
 | 
							<stackLimit>5</stackLimit>
 | 
				
			||||||
		<stackedEffectMultiplier>0.4</stackedEffectMultiplier>
 | 
							<stackedEffectMultiplier>0.4</stackedEffectMultiplier>
 | 
				
			||||||
| 
						 | 
					@ -94,13 +94,14 @@
 | 
				
			||||||
				<label>came inside of {0}</label>
 | 
									<label>came inside of {0}</label>
 | 
				
			||||||
				<description>Feel so good.</description>
 | 
									<description>Feel so good.</description>
 | 
				
			||||||
				<baseMoodEffect>2</baseMoodEffect>
 | 
									<baseMoodEffect>2</baseMoodEffect>
 | 
				
			||||||
 | 
									<baseOpinionOffset>1</baseOpinionOffset>
 | 
				
			||||||
			</li>
 | 
								</li>
 | 
				
			||||||
		</stages>
 | 
							</stages>
 | 
				
			||||||
	</ThoughtDef>
 | 
						</ThoughtDef>
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	<ThoughtDef>
 | 
						<ThoughtDef>
 | 
				
			||||||
		<defName>HaterCameInsideFSafe</defName>
 | 
							<defName>HaterCameInsideFSafe</defName>
 | 
				
			||||||
		<thoughtClass>Thought_Memory</thoughtClass>
 | 
							<thoughtClass>Thought_MemorySocial</thoughtClass>
 | 
				
			||||||
		<durationDays>3.0</durationDays>
 | 
							<durationDays>3.0</durationDays>
 | 
				
			||||||
		<stackLimit>5</stackLimit>
 | 
							<stackLimit>5</stackLimit>
 | 
				
			||||||
		<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
 | 
							<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
 | 
				
			||||||
| 
						 | 
					@ -109,7 +110,7 @@
 | 
				
			||||||
			<li>
 | 
								<li>
 | 
				
			||||||
				<label>{0} came inside</label>
 | 
									<label>{0} came inside</label>
 | 
				
			||||||
				<description>The chance is low. But i don't like it.</description>
 | 
									<description>The chance is low. But i don't like it.</description>
 | 
				
			||||||
				<baseMoodEffect>-3</baseMoodEffect>
 | 
									<baseMoodEffect>-2</baseMoodEffect>
 | 
				
			||||||
				<baseOpinionOffset>-5</baseOpinionOffset>
 | 
									<baseOpinionOffset>-5</baseOpinionOffset>
 | 
				
			||||||
			</li>
 | 
								</li>
 | 
				
			||||||
		</stages>
 | 
							</stages>
 | 
				
			||||||
| 
						 | 
					@ -117,7 +118,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<ThoughtDef>
 | 
						<ThoughtDef>
 | 
				
			||||||
		<defName>HaterCameInsideF</defName>
 | 
							<defName>HaterCameInsideF</defName>
 | 
				
			||||||
		<thoughtClass>Thought_Memory</thoughtClass>
 | 
							<thoughtClass>Thought_MemorySocial</thoughtClass>
 | 
				
			||||||
		<durationDays>7.0</durationDays>
 | 
							<durationDays>7.0</durationDays>
 | 
				
			||||||
		<stackLimit>5</stackLimit>
 | 
							<stackLimit>5</stackLimit>
 | 
				
			||||||
		<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
 | 
							<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
 | 
				
			||||||
| 
						 | 
					@ -134,7 +135,7 @@
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	<ThoughtDef>
 | 
						<ThoughtDef>
 | 
				
			||||||
		<defName>HaterCameInsideM</defName>
 | 
							<defName>HaterCameInsideM</defName>
 | 
				
			||||||
		<thoughtClass>Thought_Memory</thoughtClass>
 | 
							<thoughtClass>Thought_MemorySocial</thoughtClass>
 | 
				
			||||||
		<durationDays>1.0</durationDays>
 | 
							<durationDays>1.0</durationDays>
 | 
				
			||||||
		<stackLimit>5</stackLimit>
 | 
							<stackLimit>5</stackLimit>
 | 
				
			||||||
		<stackedEffectMultiplier>0.4</stackedEffectMultiplier>
 | 
							<stackedEffectMultiplier>0.4</stackedEffectMultiplier>
 | 
				
			||||||
| 
						 | 
					@ -143,6 +144,7 @@
 | 
				
			||||||
				<label>came inside of {0}</label>
 | 
									<label>came inside of {0}</label>
 | 
				
			||||||
				<description>i came inside of that bitch</description>
 | 
									<description>i came inside of that bitch</description>
 | 
				
			||||||
				<baseMoodEffect>5</baseMoodEffect>
 | 
									<baseMoodEffect>5</baseMoodEffect>
 | 
				
			||||||
 | 
									<baseOpinionOffset>1</baseOpinionOffset>
 | 
				
			||||||
			</li>
 | 
								</li>
 | 
				
			||||||
		</stages>
 | 
							</stages>
 | 
				
			||||||
	</ThoughtDef>
 | 
						</ThoughtDef>
 | 
				
			||||||
| 
						 | 
					@ -157,10 +159,56 @@
 | 
				
			||||||
			<li>
 | 
								<li>
 | 
				
			||||||
				<label>unwanted pregnancy</label>
 | 
									<label>unwanted pregnancy</label>
 | 
				
			||||||
				<description>How do i...</description>
 | 
									<description>How do i...</description>
 | 
				
			||||||
				<baseMoodEffect>-15</baseMoodEffect>
 | 
									<baseMoodEffect>-10</baseMoodEffect>
 | 
				
			||||||
 | 
								</li>
 | 
				
			||||||
 | 
							</stages>
 | 
				
			||||||
 | 
						</ThoughtDef>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<ThoughtDef>
 | 
				
			||||||
 | 
							<defName>UnwantedPregnancyMild</defName>
 | 
				
			||||||
 | 
							<thoughtClass>Thought_Memory</thoughtClass>
 | 
				
			||||||
 | 
							<durationDays>14.0</durationDays>
 | 
				
			||||||
 | 
							<stackLimit>5</stackLimit>
 | 
				
			||||||
 | 
							<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
 | 
				
			||||||
 | 
							<stages>
 | 
				
			||||||
 | 
								<li>
 | 
				
			||||||
 | 
									<label>unwanted pregnancy</label>
 | 
				
			||||||
 | 
									<description>How do i...</description>
 | 
				
			||||||
 | 
									<baseMoodEffect>-3</baseMoodEffect>
 | 
				
			||||||
 | 
								</li>
 | 
				
			||||||
 | 
							</stages>
 | 
				
			||||||
 | 
						</ThoughtDef>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<ThoughtDef>
 | 
				
			||||||
 | 
							<defName>TookContraptivePill</defName>
 | 
				
			||||||
 | 
							<thoughtClass>Thought_Memory</thoughtClass>
 | 
				
			||||||
 | 
							<durationDays>7.0</durationDays>
 | 
				
			||||||
 | 
							<stackLimit>5</stackLimit>
 | 
				
			||||||
 | 
							<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
 | 
				
			||||||
 | 
							<stages>
 | 
				
			||||||
 | 
								<li>
 | 
				
			||||||
 | 
									<label>took contraptive pill</label>
 | 
				
			||||||
 | 
									<description>It will be okay.</description>
 | 
				
			||||||
 | 
									<baseMoodEffect>1</baseMoodEffect>
 | 
				
			||||||
 | 
								</li>
 | 
				
			||||||
 | 
							</stages>
 | 
				
			||||||
 | 
						</ThoughtDef>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<ThoughtDef>
 | 
				
			||||||
 | 
							<defName>HateTookContraptivePill</defName>
 | 
				
			||||||
 | 
							<thoughtClass>Thought_Memory</thoughtClass>
 | 
				
			||||||
 | 
							<durationDays>7.0</durationDays>
 | 
				
			||||||
 | 
							<stackLimit>5</stackLimit>
 | 
				
			||||||
 | 
							<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
 | 
				
			||||||
 | 
							<stages>
 | 
				
			||||||
 | 
								<li>
 | 
				
			||||||
 | 
									<label>took contraptive pill</label>
 | 
				
			||||||
 | 
									<description>I want to get pregnant.</description>
 | 
				
			||||||
 | 
									<baseMoodEffect>-3</baseMoodEffect>
 | 
				
			||||||
			</li>
 | 
								</li>
 | 
				
			||||||
		</stages>
 | 
							</stages>
 | 
				
			||||||
	</ThoughtDef>
 | 
						</ThoughtDef>
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
</Defs>
 | 
					</Defs>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,9 +2,9 @@
 | 
				
			||||||
<LanguageData>
 | 
					<LanguageData>
 | 
				
			||||||
  <LeakingFluids.stages.0.label>가랑이가 축축함</LeakingFluids.stages.0.label>
 | 
					  <LeakingFluids.stages.0.label>가랑이가 축축함</LeakingFluids.stages.0.label>
 | 
				
			||||||
  <LeakingFluids.stages.0.description>찝찝해...</LeakingFluids.stages.0.description>
 | 
					  <LeakingFluids.stages.0.description>찝찝해...</LeakingFluids.stages.0.description>
 | 
				
			||||||
  <CameInsideF.stages.0.label>{0}에게 질내사정 당함</CameInsideF.stages.0.label>
 | 
					  <CameInsideF.stages.0.label>{0}에게 질내사정당함</CameInsideF.stages.0.label>
 | 
				
			||||||
  <CameInsideF.stages.0.description>임신할까봐 걱정돼...</CameInsideF.stages.0.description>
 | 
					  <CameInsideF.stages.0.description>임신할까봐 걱정돼...</CameInsideF.stages.0.description>
 | 
				
			||||||
  <CameInsideFLowFert.stages.0.label>{0}에게 질내사정 당함</CameInsideFLowFert.stages.0.label>
 | 
					  <CameInsideFLowFert.stages.0.label>{0}에게 질내사정당함</CameInsideFLowFert.stages.0.label>
 | 
				
			||||||
  <CameInsideFLowFert.stages.0.description>확률은 낮겠지만 임신할까봐 걱정돼...</CameInsideFLowFert.stages.0.description>
 | 
					  <CameInsideFLowFert.stages.0.description>확률은 낮겠지만 임신할까봐 걱정돼...</CameInsideFLowFert.stages.0.description>
 | 
				
			||||||
  <CameInsideFFetish.stages.0.label>{0}에게 질내사정당함</CameInsideFFetish.stages.0.label>
 | 
					  <CameInsideFFetish.stages.0.label>{0}에게 질내사정당함</CameInsideFFetish.stages.0.label>
 | 
				
			||||||
  <CameInsideFFetish.stages.0.description>임신할것 같아</CameInsideFFetish.stages.0.description>
 | 
					  <CameInsideFFetish.stages.0.description>임신할것 같아</CameInsideFFetish.stages.0.description>
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,13 @@
 | 
				
			||||||
  <HaterCameInsideFSafe.stages.0.label>{0}에게 질내사정당함</HaterCameInsideFSafe.stages.0.label>
 | 
					  <HaterCameInsideFSafe.stages.0.label>{0}에게 질내사정당함</HaterCameInsideFSafe.stages.0.label>
 | 
				
			||||||
  <HaterCameInsideFSafe.stages.0.description>안전일이였지만 기분나빠</HaterCameInsideFSafe.stages.0.description>
 | 
					  <HaterCameInsideFSafe.stages.0.description>안전일이였지만 기분나빠</HaterCameInsideFSafe.stages.0.description>
 | 
				
			||||||
  <HaterCameInsideM.stages.0.label>{0}에게 질내사정함</HaterCameInsideM.stages.0.label>
 | 
					  <HaterCameInsideM.stages.0.label>{0}에게 질내사정함</HaterCameInsideM.stages.0.label>
 | 
				
			||||||
  <HaterCameInsideM.stages.0.description>그 개년한테 질싸를했어</HaterCameInsideM.stages.0.description>
 | 
					  <HaterCameInsideM.stages.0.description>그년한테 질싸를했어</HaterCameInsideM.stages.0.description>
 | 
				
			||||||
  <UnwantedPregnancy.stages.0.label>원치않은 임신</UnwantedPregnancy.stages.0.label>
 | 
					  <UnwantedPregnancy.stages.0.label>원치않은 임신</UnwantedPregnancy.stages.0.label>
 | 
				
			||||||
  <UnwantedPregnancy.stages.0.description>어떻게 해야하지?...</UnwantedPregnancy.stages.0.description>
 | 
					  <UnwantedPregnancy.stages.0.description>어떻게 해야하지?...</UnwantedPregnancy.stages.0.description>  <HaterCameInsideM.stages.0.description>그년한테 질싸를했어</HaterCameInsideM.stages.0.description>
 | 
				
			||||||
 | 
					  <UexpectedPregnancyMild.stages.0.label>원치않은 임신</UexpectedPregnancyMild.stages.0.label>
 | 
				
			||||||
 | 
					  <UexpectedPregnancyMild.stages.0.description>어떻게 해야하지?...</UexpectedPregnancyMild.stages.0.description>
 | 
				
			||||||
 | 
					  <TookContraptivePill.stages.0.label>피임약 복용</TookContraptivePill.stages.0.label>
 | 
				
			||||||
 | 
					  <TookContraptivePill.stages.0.description>괜찮을거야</TookContraptivePill.stages.0.description>
 | 
				
			||||||
 | 
					  <HateTookContraptivePill.stages.0.label>피임약 복용</HateTookContraptivePill.stages.0.label>
 | 
				
			||||||
 | 
					  <HateTookContraptivePill.stages.0.description>임신하고싶어</HateTookContraptivePill.stages.0.description>
 | 
				
			||||||
</LanguageData>
 | 
					</LanguageData>
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										9
									
								
								MilkModule/Defs/JobDefs/Jobs_MilkSelf_MC.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								MilkModule/Defs/JobDefs/Jobs_MilkSelf_MC.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					<?xml version="1.0" encoding="utf-8" ?>
 | 
				
			||||||
 | 
					<Defs>
 | 
				
			||||||
 | 
						<JobDef>
 | 
				
			||||||
 | 
							<defName>LactateSelf_MC</defName>
 | 
				
			||||||
 | 
							<driverClass>MilkModule.JobDriver_MilkSelf_MC</driverClass>
 | 
				
			||||||
 | 
							<reportString>lactating self</reportString>
 | 
				
			||||||
 | 
							<allowOpportunisticPrefix>true</allowOpportunisticPrefix>
 | 
				
			||||||
 | 
						</JobDef>
 | 
				
			||||||
 | 
					</Defs>
 | 
				
			||||||
| 
						 | 
					@ -7,4 +7,11 @@
 | 
				
			||||||
				<li Class="RJW_Menstruation.FertPillOutcomDoer"/>
 | 
									<li Class="RJW_Menstruation.FertPillOutcomDoer"/>
 | 
				
			||||||
		</value>
 | 
							</value>
 | 
				
			||||||
	</Operation>
 | 
						</Operation>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<Operation Class="PatchOperationAdd">
 | 
				
			||||||
 | 
							<xpath>Defs/ThingDef[defName="RJW_Contraceptive"]/ingestible/outcomeDoers</xpath>
 | 
				
			||||||
 | 
							<value>
 | 
				
			||||||
 | 
									<li Class="RJW_Menstruation.ContraptiveOutcomDoer"/>
 | 
				
			||||||
 | 
							</value>
 | 
				
			||||||
 | 
						</Operation>
 | 
				
			||||||
</Patch>
 | 
					</Patch>
 | 
				
			||||||
| 
						 | 
					@ -38,6 +38,4 @@
 | 
				
			||||||
				</li>
 | 
									</li>
 | 
				
			||||||
		</value>
 | 
							</value>
 | 
				
			||||||
	</Operation>
 | 
						</Operation>
 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
</Patch>
 | 
					</Patch>
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,11 @@
 | 
				
			||||||
 | 
					Version 1.0.3.2
 | 
				
			||||||
 | 
					 - fixed self-lactating not work properly
 | 
				
			||||||
 | 
					 - pawns having impregnation fetish or lover get less mood penalty on pregnancy
 | 
				
			||||||
 | 
					 - minor bug fixes
 | 
				
			||||||
 | 
					 - contraptive pills decreases mood debuffs from creampie (breeders will get reversed effect)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Version 1.0.3.1
 | 
					Version 1.0.3.1
 | 
				
			||||||
 | 
					*Note* Remove previous version before installing
 | 
				
			||||||
 - fixed problems that pawns get climacteric stage after pregnancy even the menopause setting is off
 | 
					 - fixed problems that pawns get climacteric stage after pregnancy even the menopause setting is off
 | 
				
			||||||
 - now implantation chance is independent with rjw pregnancy settings
 | 
					 - now implantation chance is independent with rjw pregnancy settings
 | 
				
			||||||
 - fixed broken vagina support
 | 
					 - fixed broken vagina support
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,56 +11,47 @@ using RJW_Menstruation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace MilkModule
 | 
					namespace MilkModule
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class JobDriver_HumanMilkSelf : JobDriver
 | 
					    public class JobDriver_MilkSelf_MC : JobDriver_MilkSelf
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        const float milkingTime = 250f;//ticks - 120 = 2 real seconds, 3 in-game minutes
 | 
					        HumanCompHasGatherableBodyResource comp;
 | 
				
			||||||
    
 | 
					        HediffComp_Breast breastcomp;
 | 
				
			||||||
        public override bool TryMakePreToilReservations(bool errorOnFailed)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            return pawn.Reserve(pawn, job, 1, -1, null, errorOnFailed);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
        protected override IEnumerable<Toil> MakeNewToils()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
            HumanCompHasGatherableBodyResource Comp = GetMilkComp(pawn);
 | 
					 | 
				
			||||||
            HediffComp_Breast breastcomp = pawn.GetBreastComp();
 | 
					 | 
				
			||||||
            this.FailOn(delegate
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                return !(Comp.Fullness > 0.01f);
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
            Toil milking = Toils_General.Wait((int)(50 + milkingTime * Comp.Fullness), TargetIndex.None);//duration of 
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
            milking.WithProgressBarToilDelay(TargetIndex.A);
 | 
					 | 
				
			||||||
            milking.tickAction = delegate ()
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                if (breastcomp != null)
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    breastcomp.AdjustAreolaSize(Rand.Range(0.0f,0.0001f * Configurations.NipplePermanentTransitionVariance));
 | 
					 | 
				
			||||||
                    breastcomp.AdjustNippleSize(Rand.Range(0.0f,0.0001f * Configurations.NipplePermanentTransitionVariance));
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            };
 | 
					        protected override float Fullness
 | 
				
			||||||
            yield return milking;
 | 
					        {
 | 
				
			||||||
            yield return new Toil()
 | 
					            get
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                initAction = delegate ()
 | 
					                return comp.Fullness;
 | 
				
			||||||
                {
 | 
					            }
 | 
				
			||||||
                    Comp.Gathered(pawn);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            };
 | 
					 | 
				
			||||||
            //yield return excreting;
 | 
					 | 
				
			||||||
            yield break;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        
 | 
					        protected override void PreMakeNewToils()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            comp = GetMilkComp(pawn);
 | 
				
			||||||
 | 
					            breastcomp = pawn.GetBreastComp();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        protected override void Gathered()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            comp.Gathered(pawn);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        protected override void PostTickAction()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (breastcomp != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                breastcomp.AdjustAreolaSize(Rand.Range(0.0f, 0.0001f * Configurations.NipplePermanentTransitionVariance));
 | 
				
			||||||
 | 
					                breastcomp.AdjustNippleSize(Rand.Range(0.0f, 0.0001f * Configurations.NipplePermanentTransitionVariance));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static HumanCompHasGatherableBodyResource GetMilkComp(Pawn pawn)
 | 
					        public static HumanCompHasGatherableBodyResource GetMilkComp(Pawn pawn)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            HumanCompHasGatherableBodyResource result;
 | 
					            HumanCompHasGatherableBodyResource result;
 | 
				
			||||||
            if (pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Heavy_Lactating_Permanent))
 | 
					            if (pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Heavy_Lactating_Permanent))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                result = pawn.TryGetComp<CompHyperMilkableHuman>();
 | 
					                result = pawn.TryGetComp<CompHyperMilkableHuman>();
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
| 
						 | 
					@ -70,7 +61,70 @@ namespace MilkModule
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //public class JobDriver_HumanMilkSelf : JobDriver
 | 
				
			||||||
 | 
					    //{
 | 
				
			||||||
 | 
					    //    const float milkingTime = 250f;//ticks - 120 = 2 real seconds, 3 in-game minutes
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    //    public override bool TryMakePreToilReservations(bool errorOnFailed)
 | 
				
			||||||
 | 
					    //    {
 | 
				
			||||||
 | 
					    //        return pawn.Reserve(pawn, job, 1, -1, null, errorOnFailed);
 | 
				
			||||||
 | 
					    //    }
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    //    protected override IEnumerable<Toil> MakeNewToils()
 | 
				
			||||||
 | 
					    //    {
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    //        HumanCompHasGatherableBodyResource Comp = GetMilkComp(pawn);
 | 
				
			||||||
 | 
					    //        HediffComp_Breast breastcomp = pawn.GetBreastComp();
 | 
				
			||||||
 | 
					    //        this.FailOn(delegate
 | 
				
			||||||
 | 
					    //        {
 | 
				
			||||||
 | 
					    //            return !(Comp.Fullness > 0.01f);
 | 
				
			||||||
 | 
					    //        });
 | 
				
			||||||
 | 
					    //        Toil milking = Toils_General.Wait((int)(50 + milkingTime * Comp.Fullness), TargetIndex.None);//duration of 
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    //        milking.WithProgressBarToilDelay(TargetIndex.A);
 | 
				
			||||||
 | 
					    //        milking.tickAction = delegate ()
 | 
				
			||||||
 | 
					    //        {
 | 
				
			||||||
 | 
					    //            if (breastcomp != null)
 | 
				
			||||||
 | 
					    //            {
 | 
				
			||||||
 | 
					    //                breastcomp.AdjustAreolaSize(Rand.Range(0.0f,0.0001f * Configurations.NipplePermanentTransitionVariance));
 | 
				
			||||||
 | 
					    //                breastcomp.AdjustNippleSize(Rand.Range(0.0f,0.0001f * Configurations.NipplePermanentTransitionVariance));
 | 
				
			||||||
 | 
					    //            }
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    //        };
 | 
				
			||||||
 | 
					    //        yield return milking;
 | 
				
			||||||
 | 
					    //        yield return new Toil()
 | 
				
			||||||
 | 
					    //        {
 | 
				
			||||||
 | 
					    //            initAction = delegate ()
 | 
				
			||||||
 | 
					    //            {
 | 
				
			||||||
 | 
					    //                Comp.Gathered(pawn);
 | 
				
			||||||
 | 
					    //            }
 | 
				
			||||||
 | 
					    //        };
 | 
				
			||||||
 | 
					    //        //yield return excreting;
 | 
				
			||||||
 | 
					    //        yield break;
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    //    }
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    //    
 | 
				
			||||||
 | 
					    //    public static HumanCompHasGatherableBodyResource GetMilkComp(Pawn pawn)
 | 
				
			||||||
 | 
					    //    {
 | 
				
			||||||
 | 
					    //        HumanCompHasGatherableBodyResource result;
 | 
				
			||||||
 | 
					    //        if (pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Heavy_Lactating_Permanent))
 | 
				
			||||||
 | 
					    //        {
 | 
				
			||||||
 | 
					    //            result = pawn.TryGetComp<CompHyperMilkableHuman>();
 | 
				
			||||||
 | 
					    //        }
 | 
				
			||||||
 | 
					    //        else
 | 
				
			||||||
 | 
					    //        {
 | 
				
			||||||
 | 
					    //            result = pawn.TryGetComp<CompMilkableHuman>();
 | 
				
			||||||
 | 
					    //        }
 | 
				
			||||||
 | 
					    //        return result;
 | 
				
			||||||
 | 
					    //    }
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    //}
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,7 @@
 | 
				
			||||||
using RimWorld;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
using Verse;
 | 
					using Verse;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace RJW_Menstruation
 | 
					namespace RJW_Menstruation
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -53,6 +55,31 @@ namespace RJW_Menstruation
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public class ContraptiveOutcomDoer : IngestionOutcomeDoer
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        protected override void DoIngestionOutcomeSpecial(Pawn pawn, Thing ingested)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            List<Thought_Memory> memories = pawn.needs?.mood?.thoughts?.memories?.Memories.FindAll(
 | 
				
			||||||
 | 
					                x => 
 | 
				
			||||||
 | 
					                x.def == VariousDefOf.CameInsideF
 | 
				
			||||||
 | 
					             || x.def == VariousDefOf.CameInsideFFetish
 | 
				
			||||||
 | 
					             || x.def == VariousDefOf.HaterCameInsideF);
 | 
				
			||||||
 | 
					            if (!memories.NullOrEmpty())
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                foreach (Thought_Memory m in memories)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (m.def == VariousDefOf.HaterCameInsideF) m.moodPowerFactor = 0.5f;
 | 
				
			||||||
 | 
					                    else m.moodPowerFactor = 0.3f;
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (pawn.Has(Quirk.Breeder)) pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.HateTookContraptivePill);
 | 
				
			||||||
 | 
					                else pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.TookContraptivePill);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					         
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -56,6 +56,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
        protected float originareola = -1f;
 | 
					        protected float originareola = -1f;
 | 
				
			||||||
        protected float originnipple = -1f;
 | 
					        protected float originnipple = -1f;
 | 
				
			||||||
        protected Color cachedcolor;
 | 
					        protected Color cachedcolor;
 | 
				
			||||||
 | 
					        protected bool loaded = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public Action action;
 | 
					        public Action action;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -134,6 +135,18 @@ namespace RJW_Menstruation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override void CompPostTick(ref float severityAdjustment) { }
 | 
					        public override void CompPostTick(ref float severityAdjustment) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override void CompPostPostAdd(DamageInfo? dinfo)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (!loaded) Initialize();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override void CompPostPostRemoved()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            HugsLibController.Instance.TickDelayScheduler.TryUnscheduleCallback(action);
 | 
				
			||||||
 | 
					            ModLog.Message(parent.pawn.Label + "breast tick scheduler removed");
 | 
				
			||||||
 | 
					            base.CompPostPostRemoved();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Initialize()
 | 
					        public void Initialize()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            Props = (CompProperties_Breast)props;
 | 
					            Props = (CompProperties_Breast)props;
 | 
				
			||||||
| 
						 | 
					@ -160,9 +173,12 @@ namespace RJW_Menstruation
 | 
				
			||||||
                nippleSizeCurrent = nippleSizePermanent;
 | 
					                nippleSizeCurrent = nippleSizePermanent;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            UpdateColor();
 | 
					            UpdateColor();
 | 
				
			||||||
 | 
					            loaded = true;
 | 
				
			||||||
            HugsLibController.Instance.TickDelayScheduler.ScheduleCallback(action, tickinterval, parent.pawn);
 | 
					            HugsLibController.Instance.TickDelayScheduler.ScheduleCallback(action, tickinterval, parent.pawn);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Transition()
 | 
					        public void Transition()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            alphaCurrent = Mathf.Lerp(alphaCurrent, alpha, Configurations.NippleTransitionRatio);
 | 
					            alphaCurrent = Mathf.Lerp(alphaCurrent, alpha, Configurations.NippleTransitionRatio);
 | 
				
			||||||
| 
						 | 
					@ -223,6 +239,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
            float variance = breastSizeIncreased * Math.Min(ratio, 1.0f);
 | 
					            float variance = breastSizeIncreased * Math.Min(ratio, 1.0f);
 | 
				
			||||||
            breastSizeIncreased -= variance;
 | 
					            breastSizeIncreased -= variance;
 | 
				
			||||||
            parent.Severity -= variance;
 | 
					            parent.Severity -= variance;
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        public void UpdateColor()
 | 
					        public void UpdateColor()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -596,48 +596,8 @@ namespace RJW_Menstruation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public virtual void AfterCumIn(Pawn cummer)
 | 
					        public virtual void AfterCumIn(Pawn cummer)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (xxx.is_human(parent.pawn) && xxx.is_human(cummer))
 | 
					            ThoughtCumInside(cummer);
 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                if (parent.pawn.GetStatValue(StatDefOf.PawnBeauty) >= 0 || cummer.Has(Quirk.ImpregnationFetish) || cummer.Has(Quirk.Breeder))
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    if (cummer.relations.OpinionOf(parent.pawn) <= -25)
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideM, parent.pawn);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    else
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideM, parent.pawn);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (IsDangerDay)
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    if (parent.pawn.Has(Quirk.Breeder) || parent.pawn.Has(Quirk.ImpregnationFetish))
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetish, cummer);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    else if (!parent.pawn.relations.DirectRelationExists(PawnRelationDefOf.Spouse, cummer) && !parent.pawn.relations.DirectRelationExists(PawnRelationDefOf.Fiance, cummer))
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        if (parent.pawn.health.capacities.GetLevel(xxx.reproduction) < 0.50f) parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFLowFert, cummer);
 | 
					 | 
				
			||||||
                        else parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideF, cummer);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    else if (parent.pawn.relations.OpinionOf(cummer) <= -5)
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideF, cummer);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                else
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    if (parent.pawn.Has(Quirk.Breeder) || parent.pawn.Has(Quirk.ImpregnationFetish))
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetishSafe, cummer);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    else if (parent.pawn.relations.OpinionOf(cummer) <= -5)
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideFSafe, cummer);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public virtual void AfterNotCumIn()
 | 
					        public virtual void AfterNotCumIn()
 | 
				
			||||||
| 
						 | 
					@ -671,7 +631,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        public virtual void AfterCumOut()
 | 
					        public virtual void AfterCumOut()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.LeakingFluids);
 | 
					            parent.pawn.needs?.mood?.thoughts?.memories?.TryGainMemory(VariousDefOf.LeakingFluids);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
| 
						 | 
					@ -1321,6 +1281,57 @@ namespace RJW_Menstruation
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        protected virtual void ThoughtCumInside(Pawn cummer)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (xxx.is_human(parent.pawn) && xxx.is_human(cummer))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (parent.pawn.GetStatValue(StatDefOf.PawnBeauty) >= 0 || cummer.Has(Quirk.ImpregnationFetish) || cummer.Has(Quirk.Breeder))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (cummer.relations.OpinionOf(parent.pawn) <= -25)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideM, parent.pawn);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideM, parent.pawn);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (IsDangerDay)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (parent.pawn.Has(Quirk.Breeder) || parent.pawn.Has(Quirk.ImpregnationFetish))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetish, cummer);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else if (!parent.pawn.relations.DirectRelationExists(PawnRelationDefOf.Spouse, cummer) && !parent.pawn.relations.DirectRelationExists(PawnRelationDefOf.Fiance, cummer))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        if (parent.pawn.health.capacities.GetLevel(xxx.reproduction) < 0.50f) parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFLowFert, cummer);
 | 
				
			||||||
 | 
					                        else parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideF, cummer);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else if (parent.pawn.relations.OpinionOf(cummer) <= -5)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideF, cummer);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (parent.pawn.Has(Quirk.Breeder) || parent.pawn.Has(Quirk.ImpregnationFetish))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetishSafe, cummer);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else if (parent.pawn.relations.OpinionOf(cummer) <= -5)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideFSafe, cummer);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        protected virtual void ThoughtCummer()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private Action PeriodSimulator(Stage targetstage)
 | 
					        private Action PeriodSimulator(Stage targetstage)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,13 +11,28 @@ namespace RJW_Menstruation
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public override void DiscoverPregnancy()
 | 
					        public override void DiscoverPregnancy()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (!is_discovered && xxx.is_human(pawn) && !pawn.Has(Quirk.Breeder) && pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Spouse) || x.def.Equals(PawnRelationDefOf.Fiance)) == null)
 | 
					            PregnancyThought();
 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.UnwantedPregnancy);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            base.DiscoverPregnancy();
 | 
					            base.DiscoverPregnancy();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        protected void PregnancyThought()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (!is_discovered && xxx.is_human(pawn))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (!pawn.Has(Quirk.Breeder) && pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Spouse) || x.def.Equals(PawnRelationDefOf.Fiance)) == null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (pawn.Has(Quirk.ImpregnationFetish) || pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Lover)) != null)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.UnwantedPregnancyMild);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.UnwantedPregnancy);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override void GiveBirth()
 | 
					        public override void GiveBirth()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,7 +39,84 @@ namespace RJW_Menstruation
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    
 | 
					    public class JobDriver_MilkSelf : JobDriver
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        protected float progress = 0;
 | 
				
			||||||
 | 
					        protected float MilkingTime
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return 250f * Fullness + 50f;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        protected virtual float Fullness
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return comp?.Fullness ?? 0;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private CompMilkable comp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override bool TryMakePreToilReservations(bool errorOnFailed)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return pawn.Reserve(pawn, job, 1, -1, null, errorOnFailed);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        protected virtual void PreMakeNewToils()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            comp = pawn.GetComp<CompMilkable>();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        protected override IEnumerable<Toil> MakeNewToils()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            PreMakeNewToils();
 | 
				
			||||||
 | 
					            this.FailOnDespawnedNullOrForbidden(TargetIndex.A);
 | 
				
			||||||
 | 
					            this.FailOnNotCasualInterruptible(TargetIndex.A);
 | 
				
			||||||
 | 
					            Toil milking = new Toil();
 | 
				
			||||||
 | 
					            milking.initAction = delegate ()
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                pawn.pather.StopDead();
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					            milking.tickAction = MilkingTick;
 | 
				
			||||||
 | 
					            milking.AddFinishAction(Finish);
 | 
				
			||||||
 | 
					            milking.defaultCompleteMode = ToilCompleteMode.Never;
 | 
				
			||||||
 | 
					            milking.WithProgressBar(TargetIndex.A, () => progress / MilkingTime);
 | 
				
			||||||
 | 
					            yield return milking;
 | 
				
			||||||
 | 
					            yield break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        protected void MilkingTick()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            progress += pawn.GetStatValue(StatDefOf.AnimalGatherSpeed);
 | 
				
			||||||
 | 
					            if (progress > MilkingTime)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Gathered();
 | 
				
			||||||
 | 
					                pawn.jobs.EndCurrentJob(JobCondition.Succeeded);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            PostTickAction();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        protected virtual void Gathered()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            pawn.GetComp<CompMilkable>().Gathered(pawn);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        protected virtual void Finish()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if(pawn.CurJobDef == JobDefOf.Wait_MaintainPosture)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                pawn.jobs.EndCurrentJob(JobCondition.InterruptForced);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        protected virtual void PostTickAction()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -111,16 +111,18 @@ namespace RJW_Menstruation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //Merged to RJW
 | 
				
			||||||
    [HarmonyPatch(typeof(PawnColumnWorker_Pregnant), "GetIconFor")]
 | 
					    [HarmonyPatch(typeof(PawnColumnWorker_Pregnant), "GetIconFor")]
 | 
				
			||||||
    public class PawnColumnWorker_Patch_Icon
 | 
					    public class PawnColumnWorker_Patch_Icon
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public static void Postfix(Pawn pawn, ref Texture2D __result)
 | 
					        public static void Postfix(Pawn pawn, ref Texture2D __result)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (pawn.IsPregnant()) __result = ContentFinder<Texture2D>.Get("UI/Icons/Animal/Pregnant", true);
 | 
					            if (pawn.IsVisiblyPregnant()) __result = ContentFinder<Texture2D>.Get("UI/Icons/Animal/Pregnant", true);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    [HarmonyPatch(typeof(PawnColumnWorker_Pregnant), "GetTooltipText")]
 | 
					    [HarmonyPatch(typeof(PawnColumnWorker_Pregnant), "GetTooltipText")]
 | 
				
			||||||
    public class PawnColumnWorker_Patch_Tooltip
 | 
					    public class PawnColumnWorker_Patch_Tooltip
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
| 
						 | 
					@ -132,9 +134,28 @@ namespace RJW_Menstruation
 | 
				
			||||||
            __result = "PregnantIconDesc".Translate(numTicks.ToStringTicksToDays("F0"), num.ToStringTicksToDays("F0"));
 | 
					            __result = "PregnantIconDesc".Translate(numTicks.ToStringTicksToDays("F0"), num.ToStringTicksToDays("F0"));
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    [HarmonyPatch(typeof(TransferableUIUtility), "DoExtraAnimalIcons")]
 | 
				
			||||||
 | 
					    public class TransferableUIUtility_Patch_Icon
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        private static readonly Texture2D PregnantIcon = ContentFinder<Texture2D>.Get("UI/Icons/Animal/Pregnant", true);
 | 
				
			||||||
 | 
					        public static void Postfix(Transferable trad, Rect rect, ref float curX)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Pawn pawn = trad.AnyThing as Pawn;
 | 
				
			||||||
 | 
					            if (pawn.IsVisiblyPregnant())
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Rect rect3 = new Rect(curX - 24f, (rect.height - 24f) / 2f, 24f, 24f);
 | 
				
			||||||
 | 
					                curX -= 24f;
 | 
				
			||||||
 | 
					                if (Mouse.IsOver(rect3))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    TooltipHandler.TipRegion(rect3, PawnColumnWorker_Pregnant.GetTooltipText(pawn));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                GUI.DrawTexture(rect3, PregnantIcon);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //[HarmonyPatch(typeof(JobGiver_OptimizeApparel), "ApparelScoreGain_NewTmp")]
 | 
					    //[HarmonyPatch(typeof(JobGiver_OptimizeApparel), "ApparelScoreGain_NewTmp")]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,6 +19,20 @@ namespace RJW_Menstruation
 | 
				
			||||||
            return fieldInfo?.GetValue(obj);
 | 
					            return fieldInfo?.GetValue(obj);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static object GetPropertyValue(this Type type, string name)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            BindingFlags flags = BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
 | 
				
			||||||
 | 
					            PropertyInfo propertyInfo = type?.GetProperty(name,flags);
 | 
				
			||||||
 | 
					            return propertyInfo?.GetValue(null);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static object GetPropertyValue(this object obj, string name)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            BindingFlags flags = BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
 | 
				
			||||||
 | 
					            PropertyInfo propertyInfo = obj?.GetType().GetProperty(name,flags);
 | 
				
			||||||
 | 
					            return propertyInfo?.GetValue(obj);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static void SetMemberValue(this Type type, string name, object value)
 | 
					        public static void SetMemberValue(this Type type, string name, object value)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
 | 
					            BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -414,18 +414,25 @@ namespace RJW_Menstruation
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (milkcomp is CompMilkable)
 | 
					                if (milkcomp is CompMilkable)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    CompMilkable m = (CompMilkable)milkcomp;
 | 
					                    bool active = (bool)milkcomp.GetPropertyValue("Active");
 | 
				
			||||||
                    res = Math.Max(m.Fullness, res);
 | 
					                    if (active)
 | 
				
			||||||
                    Widgets.FillableBar(rect, Math.Min(res, 1.0f), TextureCache.milkTexture, Texture2D.blackTexture, true);
 | 
					                    {
 | 
				
			||||||
                    DrawMilkBottle(rect, pawn, JobDefOf.Milk, m.Fullness);
 | 
					                        CompMilkable m = (CompMilkable)milkcomp;
 | 
				
			||||||
 | 
					                        res = Math.Max(m.Fullness, res);
 | 
				
			||||||
 | 
					                        Widgets.FillableBar(rect, Math.Min(res, 1.0f), TextureCache.milkTexture, Texture2D.blackTexture, true);
 | 
				
			||||||
 | 
					                        DrawMilkBottle(rect, pawn, VariousDefOf.Job_LactateSelf, m.Fullness);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    float fullness = (float)milkcomp.GetMemberValue("fullness");
 | 
					                    bool active = (bool)milkcomp.GetPropertyValue("Active");
 | 
				
			||||||
                    res = Math.Max(fullness, res);
 | 
					                    if (active)
 | 
				
			||||||
                    Widgets.FillableBar(rect, Math.Min(res, 1.0f), TextureCache.milkTexture, Texture2D.blackTexture, true);
 | 
					                    {
 | 
				
			||||||
                    DrawMilkBottle(rect, pawn, VariousDefOf.Job_LactateSelf,fullness);
 | 
					                        float fullness = (float)milkcomp.GetMemberValue("fullness");
 | 
				
			||||||
 | 
					                        res = Math.Max(fullness, res);
 | 
				
			||||||
 | 
					                        Widgets.FillableBar(rect, Math.Min(res, 1.0f), TextureCache.milkTexture, Texture2D.blackTexture, true);
 | 
				
			||||||
 | 
					                        DrawMilkBottle(rect, pawn, VariousDefOf.Job_LactateSelf_MC, fullness);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
        public static readonly PawnRelationDef Relation_spawn = DefDatabase<PawnRelationDef>.AllDefs.FirstOrDefault(d => d.defName == "RJW_Pup");
 | 
					        public static readonly PawnRelationDef Relation_spawn = DefDatabase<PawnRelationDef>.AllDefs.FirstOrDefault(d => d.defName == "RJW_Pup");
 | 
				
			||||||
        public static readonly NeedDef SexNeed = DefDatabase<NeedDef>.GetNamed("Sex");
 | 
					        public static readonly NeedDef SexNeed = DefDatabase<NeedDef>.GetNamed("Sex");
 | 
				
			||||||
        public static readonly JobDef VaginaWashing = DefDatabase<JobDef>.GetNamed("VaginaWashing");
 | 
					        public static readonly JobDef VaginaWashing = DefDatabase<JobDef>.GetNamed("VaginaWashing");
 | 
				
			||||||
 | 
					        public static readonly JobDef Job_LactateSelf = DefDatabase<JobDef>.GetNamed("LactateSelf");
 | 
				
			||||||
        public static readonly ThoughtDef LeakingFluids = DefDatabase<ThoughtDef>.GetNamed("LeakingFluids");
 | 
					        public static readonly ThoughtDef LeakingFluids = DefDatabase<ThoughtDef>.GetNamed("LeakingFluids");
 | 
				
			||||||
        public static readonly ThoughtDef CameInsideF = DefDatabase<ThoughtDef>.GetNamed("CameInsideF");
 | 
					        public static readonly ThoughtDef CameInsideF = DefDatabase<ThoughtDef>.GetNamed("CameInsideF");
 | 
				
			||||||
        public static readonly ThoughtDef CameInsideFLowFert = DefDatabase<ThoughtDef>.GetNamed("CameInsideFLowFert");
 | 
					        public static readonly ThoughtDef CameInsideFLowFert = DefDatabase<ThoughtDef>.GetNamed("CameInsideFLowFert");
 | 
				
			||||||
| 
						 | 
					@ -33,6 +34,9 @@ namespace RJW_Menstruation
 | 
				
			||||||
        public static readonly ThoughtDef CameInsideM = DefDatabase<ThoughtDef>.GetNamed("CameInsideM");
 | 
					        public static readonly ThoughtDef CameInsideM = DefDatabase<ThoughtDef>.GetNamed("CameInsideM");
 | 
				
			||||||
        public static readonly ThoughtDef HaterCameInsideM = DefDatabase<ThoughtDef>.GetNamed("HaterCameInsideM");
 | 
					        public static readonly ThoughtDef HaterCameInsideM = DefDatabase<ThoughtDef>.GetNamed("HaterCameInsideM");
 | 
				
			||||||
        public static readonly ThoughtDef UnwantedPregnancy = DefDatabase<ThoughtDef>.GetNamed("UnwantedPregnancy");
 | 
					        public static readonly ThoughtDef UnwantedPregnancy = DefDatabase<ThoughtDef>.GetNamed("UnwantedPregnancy");
 | 
				
			||||||
 | 
					        public static readonly ThoughtDef UnwantedPregnancyMild = DefDatabase<ThoughtDef>.GetNamed("UnwantedPregnancyMild");
 | 
				
			||||||
 | 
					        public static readonly ThoughtDef TookContraptivePill = DefDatabase<ThoughtDef>.GetNamed("TookContraptivePill");
 | 
				
			||||||
 | 
					        public static readonly ThoughtDef HateTookContraptivePill = DefDatabase<ThoughtDef>.GetNamed("HateTookContraptivePill");
 | 
				
			||||||
        public static readonly HediffDef_PartBase Vagina = DefDatabase<HediffDef_PartBase>.GetNamed("Vagina");
 | 
					        public static readonly HediffDef_PartBase Vagina = DefDatabase<HediffDef_PartBase>.GetNamed("Vagina");
 | 
				
			||||||
        public static readonly CompProperties_Menstruation VaginaCompProperties = (CompProperties_Menstruation)Vagina.comps.FirstOrDefault(x => x is CompProperties_Menstruation);
 | 
					        public static readonly CompProperties_Menstruation VaginaCompProperties = (CompProperties_Menstruation)Vagina.comps.FirstOrDefault(x => x is CompProperties_Menstruation);
 | 
				
			||||||
        public static readonly KeyBindingDef OpenStatusWindowKey = DefDatabase<KeyBindingDef>.GetNamed("OpenStatusWindow");
 | 
					        public static readonly KeyBindingDef OpenStatusWindowKey = DefDatabase<KeyBindingDef>.GetNamed("OpenStatusWindow");
 | 
				
			||||||
| 
						 | 
					@ -43,7 +47,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
        public static readonly HediffDef Hediff_Lactating_Natural = DefDatabase<HediffDef>.GetNamedSilentFail("Lactating_Natural");
 | 
					        public static readonly HediffDef Hediff_Lactating_Natural = DefDatabase<HediffDef>.GetNamedSilentFail("Lactating_Natural");
 | 
				
			||||||
        public static readonly HediffDef Hediff_Lactating_Permanent = DefDatabase<HediffDef>.GetNamedSilentFail("Lactating_Permanent");
 | 
					        public static readonly HediffDef Hediff_Lactating_Permanent = DefDatabase<HediffDef>.GetNamedSilentFail("Lactating_Permanent");
 | 
				
			||||||
        public static readonly HediffDef Hediff_Heavy_Lactating_Permanent = DefDatabase<HediffDef>.GetNamedSilentFail("Heavy_Lactating_Permanent");
 | 
					        public static readonly HediffDef Hediff_Heavy_Lactating_Permanent = DefDatabase<HediffDef>.GetNamedSilentFail("Heavy_Lactating_Permanent");
 | 
				
			||||||
        public static readonly JobDef Job_LactateSelf = DefDatabase<JobDef>.GetNamed("LactateSelf");
 | 
					        public static readonly JobDef Job_LactateSelf_MC = DefDatabase<JobDef>.GetNamed("LactateSelf_MC");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue