mirror of
				https://github.com/vegapnk/RJW-Genes.git
				synced 2024-08-15 00:23:31 +00:00 
			
		
		
		
	t push origin devMerge branch 'Shabakur-dev' into dev
This commit is contained in:
		
						commit
						2bf18a9a07
					
				
					 36 changed files with 641 additions and 124 deletions
				
			
		
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -3,7 +3,7 @@
 | 
				
			||||||
  <AbilityDef>
 | 
					  <AbilityDef>
 | 
				
			||||||
    <defName>rjw_genes_flight</defName>
 | 
					    <defName>rjw_genes_flight</defName>
 | 
				
			||||||
    <label>fly</label>
 | 
					    <label>fly</label>
 | 
				
			||||||
    <description>Fly to a distant location using wings.</description>
 | 
					    <description>Fly to a short location using your wings.</description>
 | 
				
			||||||
    <iconPath>Genes/Icons/Succubus_Wings</iconPath>
 | 
					    <iconPath>Genes/Icons/Succubus_Wings</iconPath>
 | 
				
			||||||
    <cooldownTicksRange>1250</cooldownTicksRange>
 | 
					    <cooldownTicksRange>1250</cooldownTicksRange>
 | 
				
			||||||
    <hostile>false</hostile>
 | 
					    <hostile>false</hostile>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										47
									
								
								Common/Defs/AbilityDefs/Ability_NakedProwess.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								Common/Defs/AbilityDefs/Ability_NakedProwess.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,47 @@
 | 
				
			||||||
 | 
					<?xml version="1.0" encoding="utf-8" ?>
 | 
				
			||||||
 | 
					<Defs>
 | 
				
			||||||
 | 
					  <AbilityDef>
 | 
				
			||||||
 | 
					    <defName>rjw_genes_naked_prowess</defName>
 | 
				
			||||||
 | 
					    <label>naked prowess</label>
 | 
				
			||||||
 | 
					    <description>Enhance the strenght and resilience of your naked body with fertilin.</description>
 | 
				
			||||||
 | 
					    <iconPath>Things/Mote/Heart</iconPath>
 | 
				
			||||||
 | 
					    <warmupMoteSocialSymbol>Things/Mote/Heart</warmupMoteSocialSymbol>
 | 
				
			||||||
 | 
						<jobDef>CastAbilityOnThing</jobDef>
 | 
				
			||||||
 | 
					    <targetRequired>False</targetRequired>
 | 
				
			||||||
 | 
					    <canUseAoeToGetTargets>False</canUseAoeToGetTargets>
 | 
				
			||||||
 | 
					    <stunTargetWhileCasting>True</stunTargetWhileCasting>
 | 
				
			||||||
 | 
					    <statBases>
 | 
				
			||||||
 | 
					      <Ability_Duration>126</Ability_Duration>
 | 
				
			||||||
 | 
					      <Ability_EffectRadius>0</Ability_EffectRadius>
 | 
				
			||||||
 | 
					    </statBases>
 | 
				
			||||||
 | 
					    <verbProperties>
 | 
				
			||||||
 | 
					      <verbClass>Verb_CastAbility</verbClass>
 | 
				
			||||||
 | 
					      <warmupTime>2</warmupTime>
 | 
				
			||||||
 | 
					      <range>0</range>
 | 
				
			||||||
 | 
					      <drawAimPie>False</drawAimPie>
 | 
				
			||||||
 | 
					      <requireLineOfSight>False</requireLineOfSight>
 | 
				
			||||||
 | 
					      <targetParams>
 | 
				
			||||||
 | 
					        <canTargetSelf>true</canTargetSelf>
 | 
				
			||||||
 | 
					        <canTargetPawns>false</canTargetPawns>
 | 
				
			||||||
 | 
					        <canTargetBuildings>false</canTargetBuildings>
 | 
				
			||||||
 | 
					        <canTargetAnimals>false</canTargetAnimals>
 | 
				
			||||||
 | 
					        <canTargetHumans>false</canTargetHumans>
 | 
				
			||||||
 | 
					        <canTargetMechs>false</canTargetMechs>
 | 
				
			||||||
 | 
					      </targetParams>
 | 
				
			||||||
 | 
					    </verbProperties>
 | 
				
			||||||
 | 
					    <comps>
 | 
				
			||||||
 | 
					      <li Class="CompProperties_AbilityGiveHediff">
 | 
				
			||||||
 | 
					        <compClass>CompAbilityEffect_GiveHediff</compClass>
 | 
				
			||||||
 | 
					        <hediffDef>rjw_genes_naked_prowess</hediffDef>
 | 
				
			||||||
 | 
					        <onlyApplyToSelf>True</onlyApplyToSelf>
 | 
				
			||||||
 | 
					        <replaceExisting>true</replaceExisting>
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
						  <li Class="RJW_Genes.CompProperties_CasterIsNaked"/>
 | 
				
			||||||
 | 
						  <li Class="RJW_Genes.CompProperties_AbilityLifeForceCost">
 | 
				
			||||||
 | 
					        <fertilinCost>0.1</fertilinCost>
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
					    </comps>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					  </AbilityDef>
 | 
				
			||||||
 | 
					</Defs>
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,7 @@
 | 
				
			||||||
    <defName>rjw_genes_paralysingkiss</defName>
 | 
					    <defName>rjw_genes_paralysingkiss</defName>
 | 
				
			||||||
    <label>paralysing kiss</label>
 | 
					    <label>paralysing kiss</label>
 | 
				
			||||||
    <description>Paralyse someone briefly with a kiss.</description>
 | 
					    <description>Paralyse someone briefly with a kiss.</description>
 | 
				
			||||||
    <iconPath>Things/Mote/Heart</iconPath>
 | 
					    <iconPath>Genes/Icons/rjw_genes_lips</iconPath>
 | 
				
			||||||
    <stunTargetWhileCasting>true</stunTargetWhileCasting>
 | 
					    <stunTargetWhileCasting>true</stunTargetWhileCasting>
 | 
				
			||||||
    <displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
 | 
					    <displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
 | 
				
			||||||
    <disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
 | 
					    <disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
 | 
				
			||||||
| 
						 | 
					@ -34,7 +34,7 @@
 | 
				
			||||||
        <goodwillImpact>-15</goodwillImpact>
 | 
					        <goodwillImpact>-15</goodwillImpact>
 | 
				
			||||||
      </li>
 | 
					      </li>
 | 
				
			||||||
      <li Class="CompProperties_AbilityFleckOnTarget">
 | 
					      <li Class="CompProperties_AbilityFleckOnTarget">
 | 
				
			||||||
        <fleckDef>Heart</fleckDef> <!--Will change to kiss when I have a good icon/fleck for it-->
 | 
					        <fleckDef>rjw_genes_lips</fleckDef> <!--Will change to kiss when I have a good icon/fleck for it-->
 | 
				
			||||||
      </li>
 | 
					      </li>
 | 
				
			||||||
	  <li Class="RJW_Genes.CompProperties_AbilityLifeForceCost">
 | 
						  <li Class="RJW_Genes.CompProperties_AbilityLifeForceCost">
 | 
				
			||||||
        <fertilinCost>0.05</fertilinCost>
 | 
					        <fertilinCost>0.05</fertilinCost>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,10 +40,9 @@
 | 
				
			||||||
			<subNodes>
 | 
								<subNodes>
 | 
				
			||||||
				<!--If sexneed is low do rape or masturbate (like a nymph)-->
 | 
									<!--If sexneed is low do rape or masturbate (like a nymph)-->
 | 
				
			||||||
				<li Class="rjw.ThinkNode_ConditionalFrustrated">
 | 
									<li Class="rjw.ThinkNode_ConditionalFrustrated">
 | 
				
			||||||
					<subNodes>
 | 
										<subNodes>		
 | 
				
			||||||
						<li Class="rjw.JobGiver_ViolateCorpse" />
 | 
					 | 
				
			||||||
						<li Class="rjw.JobGiver_RandomRape" />
 | 
											<li Class="rjw.JobGiver_RandomRape" />
 | 
				
			||||||
						<li Class="rjw.JobGiver_Masturbate"/>
 | 
											<li Class="rjw.JobGiver_Masturbate"/> <!--Won't work if fap everywhere is disabled-->
 | 
				
			||||||
					</subNodes>
 | 
										</subNodes>
 | 
				
			||||||
				</li>
 | 
									</li>
 | 
				
			||||||
				<!--Will sometimes try and hookup with target pawn-->
 | 
									<!--Will sometimes try and hookup with target pawn-->
 | 
				
			||||||
| 
						 | 
					@ -56,12 +55,11 @@
 | 
				
			||||||
			</subNodes>
 | 
								</subNodes>
 | 
				
			||||||
		</li>
 | 
							</li>
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		<!--Flirt with target pawn and try hookup with them, increases sexneed in target pawn, maybe flirt has custom text-->
 | 
							<!--Flirt with target pawn, decreasing their sexneed. Flirt has no custom text yet-->
 | 
				
			||||||
		<li Class="RJW_Genes.JobGiver_Flirt" />
 | 
							<li Class="RJW_Genes.JobGiver_Flirt" />
 | 
				
			||||||
				
 | 
									
 | 
				
			||||||
        <li Class="JobGiver_WanderNearDutyLocation">
 | 
							<!--Just wander around if you can't flirt with anyone-->
 | 
				
			||||||
          <wanderRadius>5</wanderRadius>
 | 
					        <li Class="JobGiver_WanderAnywhere"/>
 | 
				
			||||||
        </li>
 | 
					 | 
				
			||||||
      </subNodes>
 | 
					      </subNodes>
 | 
				
			||||||
    </thinkNode>
 | 
					    </thinkNode>
 | 
				
			||||||
  </DutyDef>
 | 
					  </DutyDef>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										14
									
								
								Common/Defs/Effects/Fleck_Lifeforce.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								Common/Defs/Effects/Fleck_Lifeforce.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,14 @@
 | 
				
			||||||
 | 
					<?xml version="1.0" encoding="utf-8" ?>
 | 
				
			||||||
 | 
					<Defs>
 | 
				
			||||||
 | 
					  <FleckDef ParentName="FleckBase_Thrown">
 | 
				
			||||||
 | 
					    <defName>rjw_genes_lips</defName>
 | 
				
			||||||
 | 
					    <graphicData>
 | 
				
			||||||
 | 
					      <texPath>Genes/Icons/rjw_genes_lips</texPath>
 | 
				
			||||||
 | 
					    </graphicData>
 | 
				
			||||||
 | 
					    <altitudeLayer>MetaOverlays</altitudeLayer>
 | 
				
			||||||
 | 
					    <fadeInTime>0.08</fadeInTime>
 | 
				
			||||||
 | 
					    <solidTime>1.4</solidTime>
 | 
				
			||||||
 | 
					    <fadeOutTime>1.5</fadeOutTime>
 | 
				
			||||||
 | 
					  </FleckDef>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</Defs>
 | 
				
			||||||
| 
						 | 
					@ -25,6 +25,7 @@
 | 
				
			||||||
		<AbilityDef>rjw_genes_flight</AbilityDef>
 | 
							<AbilityDef>rjw_genes_flight</AbilityDef>
 | 
				
			||||||
	</descriptionHyperlinks>
 | 
						</descriptionHyperlinks>
 | 
				
			||||||
    <biostatCpx>1</biostatCpx>
 | 
					    <biostatCpx>1</biostatCpx>
 | 
				
			||||||
 | 
						<biostatMet>-1</biostatMet>
 | 
				
			||||||
    <graphicData>
 | 
					    <graphicData>
 | 
				
			||||||
      <graphicPath>Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Wings/Succubus_Wings</graphicPath>
 | 
					      <graphicPath>Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Wings/Succubus_Wings</graphicPath>
 | 
				
			||||||
      <colorType>Skin</colorType>
 | 
					      <colorType>Skin</colorType>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -105,7 +105,7 @@
 | 
				
			||||||
		<label>paralysing kiss</label>
 | 
							<label>paralysing kiss</label>
 | 
				
			||||||
		<labelShortAdj>paralysing kiss</labelShortAdj>
 | 
							<labelShortAdj>paralysing kiss</labelShortAdj>
 | 
				
			||||||
		<description>Carriers of this gene are able to briefly stun an enemy with a kiss.</description>
 | 
							<description>Carriers of this gene are able to briefly stun an enemy with a kiss.</description>
 | 
				
			||||||
		<iconPath>Things/Mote/Heart</iconPath>
 | 
							<iconPath>Genes/Icons/rjw_genes_lips</iconPath>
 | 
				
			||||||
		<prerequisite>rjw_genes_lifeforce</prerequisite>
 | 
							<prerequisite>rjw_genes_lifeforce</prerequisite>
 | 
				
			||||||
		<displayOrderInCategory>12</displayOrderInCategory>
 | 
							<displayOrderInCategory>12</displayOrderInCategory>
 | 
				
			||||||
		<displayCategory>rjw_genes_fertilin</displayCategory>
 | 
							<displayCategory>rjw_genes_fertilin</displayCategory>
 | 
				
			||||||
| 
						 | 
					@ -151,6 +151,24 @@
 | 
				
			||||||
		</symbolPack>
 | 
							</symbolPack>
 | 
				
			||||||
	</GeneDef>
 | 
						</GeneDef>
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						<GeneDef>
 | 
				
			||||||
 | 
							<defName>rjw_genes_naked_prowess</defName>
 | 
				
			||||||
 | 
							<label>naked prowess</label>
 | 
				
			||||||
 | 
							<description>Carriers of this gene are able to temporarily increase their strenght and resilience, while they are naked.</description>
 | 
				
			||||||
 | 
							<iconPath>Things/Mote/Heart</iconPath>
 | 
				
			||||||
 | 
							<prerequisite>rjw_genes_lifeforce</prerequisite>
 | 
				
			||||||
 | 
							<displayOrderInCategory>13</displayOrderInCategory>
 | 
				
			||||||
 | 
							<displayCategory>rjw_genes_fertilin</displayCategory>
 | 
				
			||||||
 | 
							<abilities>
 | 
				
			||||||
 | 
								<li>rjw_genes_naked_prowess</li>
 | 
				
			||||||
 | 
							</abilities>
 | 
				
			||||||
 | 
							<descriptionHyperlinks>
 | 
				
			||||||
 | 
								<AbilityDef>rjw_genes_naked_prowess</AbilityDef>
 | 
				
			||||||
 | 
							</descriptionHyperlinks>
 | 
				
			||||||
 | 
							<biostatCpx>1</biostatCpx>
 | 
				
			||||||
 | 
							<biostatMet>-1</biostatMet>
 | 
				
			||||||
 | 
						</GeneDef>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	<GeneDef>
 | 
						<GeneDef>
 | 
				
			||||||
		<defName>rjw_genes_cum_eater</defName>
 | 
							<defName>rjw_genes_cum_eater</defName>
 | 
				
			||||||
		<label>Cum eater</label>
 | 
							<label>Cum eater</label>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -151,4 +151,37 @@
 | 
				
			||||||
		  </li>
 | 
							  </li>
 | 
				
			||||||
		</comps>
 | 
							</comps>
 | 
				
			||||||
	</HediffDef>
 | 
						</HediffDef>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <HediffDef ParentName="RoleStatBuff">
 | 
				
			||||||
 | 
					    <defName>rjw_genes_naked_prowess</defName>
 | 
				
			||||||
 | 
					    <label>naked prowss</label>
 | 
				
			||||||
 | 
					    <description>Driven by fertilin, this person has greatly increased strength and resilience.</description>
 | 
				
			||||||
 | 
					    <hediffClass>HediffWithComps</hediffClass>
 | 
				
			||||||
 | 
					    <stages>
 | 
				
			||||||
 | 
					      <li>
 | 
				
			||||||
 | 
							<!--Maybe a bit to much, but they are supposed to be strong-->
 | 
				
			||||||
 | 
					        <statOffsets>
 | 
				
			||||||
 | 
					          <ArmorRating_Sharp>0.5</ArmorRating_Sharp>
 | 
				
			||||||
 | 
					          <ArmorRating_Blunt>0.5</ArmorRating_Blunt>
 | 
				
			||||||
 | 
					          <ArmorRating_Heat>0.5</ArmorRating_Heat>
 | 
				
			||||||
 | 
					<!--		  <Insulation_Cold>10</Insulation_Cold>
 | 
				
			||||||
 | 
							  <Insulation_Heat>10</Insulation_Heat> -->
 | 
				
			||||||
 | 
					        </statOffsets>
 | 
				
			||||||
 | 
							<statFactors>
 | 
				
			||||||
 | 
							  <IncomingDamageFactor>0.5</IncomingDamageFactor>
 | 
				
			||||||
 | 
							  <MeleeDamageFactor>1.5</MeleeDamageFactor>
 | 
				
			||||||
 | 
							</statFactors>
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
					    </stages>
 | 
				
			||||||
 | 
					    <comps>
 | 
				
			||||||
 | 
					      <li Class="HediffCompProperties_Disappears">
 | 
				
			||||||
 | 
					        <showRemainingTime>True</showRemainingTime>
 | 
				
			||||||
 | 
					        <disappearsAfterTicks>5000</disappearsAfterTicks> <!-- 2 hours -->
 | 
				
			||||||
 | 
					      </li>
 | 
				
			||||||
 | 
					      <li Class="HediffCompProperties_DisappearsOnDeath"/>
 | 
				
			||||||
 | 
						  <!--TODO: Make hediff disappear if pawn is nolonger naked-->
 | 
				
			||||||
 | 
					    </comps>
 | 
				
			||||||
 | 
					    <isBad>false</isBad>
 | 
				
			||||||
 | 
					  </HediffDef>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</Defs>
 | 
					</Defs>
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
<?xml version="1.0" encoding="utf-8" ?>
 | 
					<?xml version="1.0" encoding="utf-8" ?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<Defs>
 | 
					<Defs>
 | 
				
			||||||
	<InteractionDef ParentName="RJW_InteractionDefBaseSex">
 | 
						<InteractionDef ParentName="RJW_InteractionDefBaseRape">
 | 
				
			||||||
		<defName>Rape_SuccubusTail_Tailjob</defName>
 | 
							<defName>Rape_SuccubusTail_Tailjob</defName>
 | 
				
			||||||
		<label>succubustail tailjob</label>
 | 
							<label>succubustail tailjob</label>
 | 
				
			||||||
		<logRulesInitiator>
 | 
							<logRulesInitiator>
 | 
				
			||||||
| 
						 | 
					@ -39,7 +39,7 @@
 | 
				
			||||||
		</modExtensions>
 | 
							</modExtensions>
 | 
				
			||||||
	</InteractionDef>
 | 
						</InteractionDef>
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	<InteractionDef ParentName="RJW_InteractionDefBaseSex">
 | 
						<InteractionDef ParentName="RJW_InteractionDefBaseRape">
 | 
				
			||||||
		<defName>Rape_SuccubusTail_Vaginal</defName>
 | 
							<defName>Rape_SuccubusTail_Vaginal</defName>
 | 
				
			||||||
		<label>succubustail vaginal</label>
 | 
							<label>succubustail vaginal</label>
 | 
				
			||||||
		<logRulesInitiator>
 | 
							<logRulesInitiator>
 | 
				
			||||||
| 
						 | 
					@ -76,7 +76,7 @@
 | 
				
			||||||
		</modExtensions>
 | 
							</modExtensions>
 | 
				
			||||||
	</InteractionDef>
 | 
						</InteractionDef>
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	<InteractionDef ParentName="RJW_InteractionDefBaseSex">
 | 
						<InteractionDef ParentName="RJW_InteractionDefBaseRape">
 | 
				
			||||||
		<defName>Rape_SuccubusTail_Anal</defName>
 | 
							<defName>Rape_SuccubusTail_Anal</defName>
 | 
				
			||||||
		<label>succubustail anal</label>
 | 
							<label>succubustail anal</label>
 | 
				
			||||||
		<logRulesInitiator>
 | 
							<logRulesInitiator>
 | 
				
			||||||
| 
						 | 
					@ -114,7 +114,7 @@
 | 
				
			||||||
	</InteractionDef>
 | 
						</InteractionDef>
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	<!--Top of tail opens up and evelops the penis-->
 | 
						<!--Top of tail opens up and evelops the penis-->
 | 
				
			||||||
	<InteractionDef ParentName="RJW_InteractionDefBaseSex">
 | 
						<InteractionDef ParentName="RJW_InteractionDefBaseRape">
 | 
				
			||||||
		<defName>Rape_SuccubusTail_Envelop</defName>
 | 
							<defName>Rape_SuccubusTail_Envelop</defName>
 | 
				
			||||||
		<label>succubustail envelop</label>
 | 
							<label>succubustail envelop</label>
 | 
				
			||||||
		<logRulesInitiator>
 | 
							<logRulesInitiator>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
<?xml version="1.0" encoding="utf-8" ?>
 | 
					<?xml version="1.0" encoding="utf-8" ?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<Defs>
 | 
					<Defs>
 | 
				
			||||||
	<InteractionDef ParentName="RJW_InteractionDefBaseSex">
 | 
						<InteractionDef ParentName="RJW_InteractionDefBaseRape">
 | 
				
			||||||
		<defName>Rape_SuccubusTail_Reverse_Tailjob</defName>
 | 
							<defName>Rape_SuccubusTail_Reverse_Tailjob</defName>
 | 
				
			||||||
		<label>succubustail tailjob</label>
 | 
							<label>succubustail tailjob</label>
 | 
				
			||||||
		<logRulesInitiator>
 | 
							<logRulesInitiator>
 | 
				
			||||||
| 
						 | 
					@ -40,7 +40,7 @@
 | 
				
			||||||
		</modExtensions>
 | 
							</modExtensions>
 | 
				
			||||||
	</InteractionDef>
 | 
						</InteractionDef>
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	<InteractionDef ParentName="RJW_InteractionDefBaseSex">
 | 
						<InteractionDef ParentName="RJW_InteractionDefBaseRape">
 | 
				
			||||||
		<defName>Rape_SuccubusTail_Reverse_Vaginal</defName>
 | 
							<defName>Rape_SuccubusTail_Reverse_Vaginal</defName>
 | 
				
			||||||
		<label>succubustail vaginal</label>
 | 
							<label>succubustail vaginal</label>
 | 
				
			||||||
		<logRulesInitiator>
 | 
							<logRulesInitiator>
 | 
				
			||||||
| 
						 | 
					@ -79,7 +79,7 @@
 | 
				
			||||||
		</modExtensions>
 | 
							</modExtensions>
 | 
				
			||||||
	</InteractionDef>
 | 
						</InteractionDef>
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	<InteractionDef ParentName="RJW_InteractionDefBaseSex">
 | 
						<InteractionDef ParentName="RJW_InteractionDefBaseRape">
 | 
				
			||||||
		<defName>Rape_SuccubusTail_Reverse_Anal</defName>
 | 
							<defName>Rape_SuccubusTail_Reverse_Anal</defName>
 | 
				
			||||||
		<label>succubustail anal</label>
 | 
							<label>succubustail anal</label>
 | 
				
			||||||
		<logRulesInitiator>
 | 
							<logRulesInitiator>
 | 
				
			||||||
| 
						 | 
					@ -119,7 +119,7 @@
 | 
				
			||||||
	</InteractionDef>
 | 
						</InteractionDef>
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	<!--Top of tail opens up and evelops the penis-->
 | 
						<!--Top of tail opens up and evelops the penis-->
 | 
				
			||||||
	<InteractionDef ParentName="RJW_InteractionDefBaseSex">
 | 
						<InteractionDef ParentName="RJW_InteractionDefBaseRape">
 | 
				
			||||||
		<defName>Rape_SuccubusTail_Reverse_Envelop</defName>
 | 
							<defName>Rape_SuccubusTail_Reverse_Envelop</defName>
 | 
				
			||||||
		<label>succubustail envelop</label>
 | 
							<label>succubustail envelop</label>
 | 
				
			||||||
		<logRulesInitiator>
 | 
							<logRulesInitiator>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,7 @@
 | 
				
			||||||
		<mentalState>rjw_genes_lifeforce_randomrape</mentalState>
 | 
							<mentalState>rjw_genes_lifeforce_randomrape</mentalState>
 | 
				
			||||||
		<baseCommonality>1.5</baseCommonality>
 | 
							<baseCommonality>1.5</baseCommonality>
 | 
				
			||||||
		<intensity>Extreme</intensity>
 | 
							<intensity>Extreme</intensity>
 | 
				
			||||||
 | 
							<workerClass>RJW_Genes.LifeForceMentalBreakWorker</workerClass>
 | 
				
			||||||
	</MentalBreakDef>
 | 
						</MentalBreakDef>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<MentalStateDef ParentName="BaseMentalState">
 | 
						<MentalStateDef ParentName="BaseMentalState">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,4 +42,46 @@
 | 
				
			||||||
		<initialWillRange>2~4</initialWillRange>
 | 
							<initialWillRange>2~4</initialWillRange>
 | 
				
			||||||
		<initialResistanceRange>28~44</initialResistanceRange>
 | 
							<initialResistanceRange>28~44</initialResistanceRange>
 | 
				
			||||||
	</PawnKindDef>
 | 
						</PawnKindDef>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<PawnKindDef>
 | 
				
			||||||
 | 
							<defName>rjw_genes_incubus</defName>
 | 
				
			||||||
 | 
							<label>succubus</label>
 | 
				
			||||||
 | 
							<combatPower>50</combatPower>
 | 
				
			||||||
 | 
							<race>Human</race>
 | 
				
			||||||
 | 
							<xenotypeSet>
 | 
				
			||||||
 | 
								<xenotypeChances>
 | 
				
			||||||
 | 
									<rjw_genes_incubus>999</rjw_genes_incubus>
 | 
				
			||||||
 | 
								</xenotypeChances>
 | 
				
			||||||
 | 
							</xenotypeSet>
 | 
				
			||||||
 | 
							<acceptArrestChanceFactor>0.5</acceptArrestChanceFactor>
 | 
				
			||||||
 | 
							<useFactionXenotypes>false</useFactionXenotypes>
 | 
				
			||||||
 | 
							<minGenerationAge>18</minGenerationAge>
 | 
				
			||||||
 | 
							<maxGenerationAge>27</maxGenerationAge>
 | 
				
			||||||
 | 
							<itemQuality>Poor</itemQuality>
 | 
				
			||||||
 | 
							<backstoryCryptosleepCommonality>0.0</backstoryCryptosleepCommonality>
 | 
				
			||||||
 | 
							<isFighter>false</isFighter>
 | 
				
			||||||
 | 
							<gearHealthRange>
 | 
				
			||||||
 | 
								<min>0.3</min>
 | 
				
			||||||
 | 
								<max>0.9</max>
 | 
				
			||||||
 | 
							</gearHealthRange>
 | 
				
			||||||
 | 
							<apparelIgnoreSeasons>true</apparelIgnoreSeasons>
 | 
				
			||||||
 | 
							<apparelTags>
 | 
				
			||||||
 | 
								<li>Tribal</li>
 | 
				
			||||||
 | 
							</apparelTags>
 | 
				
			||||||
 | 
							<apparelMoney>
 | 
				
			||||||
 | 
								<min>0</min>
 | 
				
			||||||
 | 
								<max>0</max>
 | 
				
			||||||
 | 
							</apparelMoney>
 | 
				
			||||||
 | 
							<apparelAllowHeadgearChance>0</apparelAllowHeadgearChance>
 | 
				
			||||||
 | 
							<techHediffsMoney>
 | 
				
			||||||
 | 
								<min>0</min>
 | 
				
			||||||
 | 
								<max>0</max>
 | 
				
			||||||
 | 
							</techHediffsMoney>
 | 
				
			||||||
 | 
							<techHediffsTags>
 | 
				
			||||||
 | 
								<li>Poor</li>
 | 
				
			||||||
 | 
							</techHediffsTags>
 | 
				
			||||||
 | 
							<techHediffsChance>0.0</techHediffsChance>
 | 
				
			||||||
 | 
							<initialWillRange>2~4</initialWillRange>
 | 
				
			||||||
 | 
							<initialResistanceRange>28~44</initialResistanceRange>
 | 
				
			||||||
 | 
						</PawnKindDef>
 | 
				
			||||||
</Defs>
 | 
					</Defs>
 | 
				
			||||||
| 
						 | 
					@ -1,52 +0,0 @@
 | 
				
			||||||
<?xml version="1.0" encoding="utf-8" ?>
 | 
					 | 
				
			||||||
<Defs>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <XenotypeDef>
 | 
					 | 
				
			||||||
    <defName>rjw_genes_succubus</defName>
 | 
					 | 
				
			||||||
    <label>Succubus</label>
 | 
					 | 
				
			||||||
    <description>Succubi are strongly enhanced xenohumans. Powered by archites, their abilities go far beyond normal genetic enhancements. These overnaturally beautiful creatures strive parasitically on the Fertilin found in semen.</description>
 | 
					 | 
				
			||||||
    <descriptionShort>Succubi are beautiful and extremely hungry Xenohumans. They strive on having sex and extracting their victims life-force through this. </descriptionShort>
 | 
					 | 
				
			||||||
    <iconPath>UI/Icons/Xenotypes/Sanguophage</iconPath>
 | 
					 | 
				
			||||||
    <soundDefOnImplant>PawnBecameSanguophage</soundDefOnImplant>
 | 
					 | 
				
			||||||
    <generateWithXenogermReplicatingHediffChance>0.5</generateWithXenogermReplicatingHediffChance>
 | 
					 | 
				
			||||||
    <xenogermReplicatingDurationLeftDaysRange>0.1~140</xenogermReplicatingDurationLeftDaysRange>
 | 
					 | 
				
			||||||
    <combatPowerFactor>1</combatPowerFactor>
 | 
					 | 
				
			||||||
    <displayPriority>-1000</displayPriority>
 | 
					 | 
				
			||||||
    <factionlessGenerationWeight>0.005</factionlessGenerationWeight>
 | 
					 | 
				
			||||||
	<inheritable>true</inheritable>
 | 
					 | 
				
			||||||
    <doubleXenotypeChances>
 | 
					 | 
				
			||||||
      <Pigskin>0.02</Pigskin>
 | 
					 | 
				
			||||||
      <Impid>0.02</Impid>
 | 
					 | 
				
			||||||
      <Yttakin>0.02</Yttakin>
 | 
					 | 
				
			||||||
      <Neanderthal>0.02</Neanderthal>
 | 
					 | 
				
			||||||
      <Waster>0.02</Waster>
 | 
					 | 
				
			||||||
      <Dirtmole>0.02</Dirtmole>
 | 
					 | 
				
			||||||
    </doubleXenotypeChances>
 | 
					 | 
				
			||||||
    <genes>			
 | 
					 | 
				
			||||||
        <li>rjw_genes_bisexual</li>
 | 
					 | 
				
			||||||
        <li>rjw_genes_hypersexual</li>
 | 
					 | 
				
			||||||
        <li>rjw_genes_female_only</li>
 | 
					 | 
				
			||||||
        <li>rjw_genes_lifeforce</li>
 | 
					 | 
				
			||||||
        <li>rjw_genes_lifeforce_drain</li>
 | 
					 | 
				
			||||||
        <li>rjw_genes_vaginal_absorber</li>
 | 
					 | 
				
			||||||
        <li>rjw_genes_anal_absorber</li>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        <li>rjw_genes_paralysingkiss</li>
 | 
					 | 
				
			||||||
        <li>rjw_genes_seduce</li>
 | 
					 | 
				
			||||||
        <li>rjw_genes_elasticity</li>
 | 
					 | 
				
			||||||
		<li>rjw_genes_succubus_wings</li>
 | 
					 | 
				
			||||||
        <li>rjw_genes_succubus_tail</li>
 | 
					 | 
				
			||||||
        <li>rjw_genes_aphrodisiac_pheromones</li>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        <li>Beauty_Pretty</li>
 | 
					 | 
				
			||||||
        <li>MoveSpeed_Quick</li>
 | 
					 | 
				
			||||||
        <li>Robust</li>
 | 
					 | 
				
			||||||
        <li>UVSensitivity_Intense</li>
 | 
					 | 
				
			||||||
        <li>AptitudeStrong_Social</li>
 | 
					 | 
				
			||||||
        <li>Ears_Pointed</li>
 | 
					 | 
				
			||||||
        <li>Headbone_MiniHorns</li>
 | 
					 | 
				
			||||||
        <li>Skin_Purple</li>
 | 
					 | 
				
			||||||
    </genes>
 | 
					 | 
				
			||||||
  </XenotypeDef>
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
</Defs>
 | 
					 | 
				
			||||||
							
								
								
									
										97
									
								
								Common/Defs/Xenotypes/Xenotype_Lifeforce.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								Common/Defs/Xenotypes/Xenotype_Lifeforce.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,97 @@
 | 
				
			||||||
 | 
					<?xml version="1.0" encoding="utf-8" ?>
 | 
				
			||||||
 | 
					<Defs>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <XenotypeDef>
 | 
				
			||||||
 | 
					    <defName>rjw_genes_succubus</defName>
 | 
				
			||||||
 | 
					    <label>Succubus</label>
 | 
				
			||||||
 | 
					    <description>Succubi are strongly enhanced xenohumans. These overnaturally beautiful creatures strive parasitically on the Fertilin found in semen.</description>
 | 
				
			||||||
 | 
					    <descriptionShort>Succubi are beautiful and extremely hungry Xenohumans. They strive on having sex and extracting their victims life-force through this. </descriptionShort>
 | 
				
			||||||
 | 
					    <iconPath>UI/Icons/Xenotypes/Sanguophage</iconPath>
 | 
				
			||||||
 | 
					    <soundDefOnImplant>PawnBecameSanguophage</soundDefOnImplant>
 | 
				
			||||||
 | 
					    <generateWithXenogermReplicatingHediffChance>0.5</generateWithXenogermReplicatingHediffChance>
 | 
				
			||||||
 | 
					    <xenogermReplicatingDurationLeftDaysRange>0.1~140</xenogermReplicatingDurationLeftDaysRange>
 | 
				
			||||||
 | 
					    <combatPowerFactor>1</combatPowerFactor>
 | 
				
			||||||
 | 
					    <displayPriority>-1000</displayPriority>
 | 
				
			||||||
 | 
					    <factionlessGenerationWeight>0.005</factionlessGenerationWeight>
 | 
				
			||||||
 | 
						<inheritable>true</inheritable>
 | 
				
			||||||
 | 
					    <doubleXenotypeChances>
 | 
				
			||||||
 | 
					      <Pigskin>0.02</Pigskin>
 | 
				
			||||||
 | 
					      <Impid>0.02</Impid>
 | 
				
			||||||
 | 
					      <Yttakin>0.02</Yttakin>
 | 
				
			||||||
 | 
					      <Neanderthal>0.02</Neanderthal>
 | 
				
			||||||
 | 
					      <Waster>0.02</Waster>
 | 
				
			||||||
 | 
					      <Dirtmole>0.02</Dirtmole>
 | 
				
			||||||
 | 
					    </doubleXenotypeChances>
 | 
				
			||||||
 | 
					    <genes>			
 | 
				
			||||||
 | 
					        <li>rjw_genes_bisexual</li>
 | 
				
			||||||
 | 
					        <li>rjw_genes_hypersexual</li>
 | 
				
			||||||
 | 
					        <li>rjw_genes_female_only</li>
 | 
				
			||||||
 | 
					        <li>rjw_genes_lifeforce</li>
 | 
				
			||||||
 | 
					        <li>rjw_genes_lifeforce_drain</li>
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							<li>rjw_genes_cum_eater</li>
 | 
				
			||||||
 | 
					        <li>rjw_genes_vaginal_absorber</li>
 | 
				
			||||||
 | 
					        <li>rjw_genes_anal_absorber</li>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <li>rjw_genes_paralysingkiss</li>
 | 
				
			||||||
 | 
					        <li>rjw_genes_seduce</li>
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							<li>rjw_genes_succubus_wings</li>
 | 
				
			||||||
 | 
					        <li>rjw_genes_succubus_tail</li>
 | 
				
			||||||
 | 
					        <li>rjw_genes_aphrodisiac_pheromones</li>
 | 
				
			||||||
 | 
					        <li>Beauty_Pretty</li>
 | 
				
			||||||
 | 
					        <li>MoveSpeed_Quick</li>
 | 
				
			||||||
 | 
					        <li>Robust</li>
 | 
				
			||||||
 | 
					        <li>UVSensitivity_Intense</li>
 | 
				
			||||||
 | 
					        <li>AptitudeStrong_Social</li>
 | 
				
			||||||
 | 
					        <li>Ears_Pointed</li>
 | 
				
			||||||
 | 
					        <li>Headbone_MiniHorns</li>
 | 
				
			||||||
 | 
					        <li>Skin_Purple</li>
 | 
				
			||||||
 | 
					    </genes>
 | 
				
			||||||
 | 
					  </XenotypeDef>
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  <XenotypeDef>
 | 
				
			||||||
 | 
					    <defName>rjw_genes_incubus</defName>
 | 
				
			||||||
 | 
					    <label>Incubus</label>
 | 
				
			||||||
 | 
					    <description>Incubi are strongly enhanced xenohumans. These overnaturally beautiful creatures strive parasitically on the Fertilin found in semen.</description>
 | 
				
			||||||
 | 
					    <descriptionShort>Incubi are beautiful and extremely hungry Xenohumans. They strive on having sex and extracting their victims life-force through this. </descriptionShort>
 | 
				
			||||||
 | 
					    <iconPath>UI/Icons/Xenotypes/Sanguophage</iconPath>
 | 
				
			||||||
 | 
					    <soundDefOnImplant>PawnBecameSanguophage</soundDefOnImplant>
 | 
				
			||||||
 | 
					    <generateWithXenogermReplicatingHediffChance>0.5</generateWithXenogermReplicatingHediffChance>
 | 
				
			||||||
 | 
					    <xenogermReplicatingDurationLeftDaysRange>0.1~140</xenogermReplicatingDurationLeftDaysRange>
 | 
				
			||||||
 | 
					    <combatPowerFactor>1</combatPowerFactor>
 | 
				
			||||||
 | 
					    <displayPriority>-1000</displayPriority>
 | 
				
			||||||
 | 
					    <factionlessGenerationWeight>0.005</factionlessGenerationWeight>
 | 
				
			||||||
 | 
						<inheritable>true</inheritable>
 | 
				
			||||||
 | 
					    <doubleXenotypeChances>
 | 
				
			||||||
 | 
					      <Pigskin>0.02</Pigskin>
 | 
				
			||||||
 | 
					      <Impid>0.02</Impid>
 | 
				
			||||||
 | 
					      <Yttakin>0.02</Yttakin>
 | 
				
			||||||
 | 
					      <Neanderthal>0.02</Neanderthal>
 | 
				
			||||||
 | 
					      <Waster>0.02</Waster>
 | 
				
			||||||
 | 
					      <Dirtmole>0.02</Dirtmole>
 | 
				
			||||||
 | 
					    </doubleXenotypeChances>
 | 
				
			||||||
 | 
					    <genes>			
 | 
				
			||||||
 | 
					        <li>rjw_genes_hypersexual</li>
 | 
				
			||||||
 | 
					        <li>rjw_genes_male_only</li>
 | 
				
			||||||
 | 
					        <li>rjw_genes_lifeforce</li>
 | 
				
			||||||
 | 
					        <li>rjw_genes_lifeforce_drain</li>
 | 
				
			||||||
 | 
							<li>rjw_genes_drainer</li>
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					        <li>rjw_genes_seduce</li>
 | 
				
			||||||
 | 
							<li>rjw_genes_succubus_wings</li>
 | 
				
			||||||
 | 
					        <li>rjw_genes_succubus_tail</li>
 | 
				
			||||||
 | 
					        <li>rjw_genes_aphrodisiac_pheromones</li>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <li>Beauty_Pretty</li>
 | 
				
			||||||
 | 
					        <li>MoveSpeed_Quick</li>
 | 
				
			||||||
 | 
					        <li>Robust</li>
 | 
				
			||||||
 | 
					        <li>UVSensitivity_Intense</li>
 | 
				
			||||||
 | 
					        <li>AptitudeStrong_Intellectual</li>
 | 
				
			||||||
 | 
					        <li>Ears_Pointed</li>
 | 
				
			||||||
 | 
					        <li>Headbone_MiniHorns</li>
 | 
				
			||||||
 | 
					        <li>Skin_Purple</li>
 | 
				
			||||||
 | 
					    </genes>
 | 
				
			||||||
 | 
					  </XenotypeDef>
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					</Defs>
 | 
				
			||||||
| 
						 | 
					@ -10,6 +10,8 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<!--Succubus Events-->
 | 
						<!--Succubus Events-->
 | 
				
			||||||
	<SuccubusLeaving>The succubus has fed enough on your colonists and will now leave.</SuccubusLeaving>
 | 
						<SuccubusLeaving>{0} has fed enough on your colonists and will now leave.</SuccubusLeaving>
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						<rjw_genes_sexdemon_visit_incident_label>Dirty dreams</rjw_genes_sexdemon_visit_incident_label>
 | 
				
			||||||
 | 
						<rjw_genes_sexdemon_visit_incident_description>The dirty dreams of your colonists have attracted succubi.\n\nThey will hang around for a couple of days trying to seduce your colonists. They may decide to join your colony, if they are impressed by your colonists's sexual prowess.</rjw_genes_sexdemon_visit_incident_description>
 | 
				
			||||||
</LanguageData>
 | 
					</LanguageData>
 | 
				
			||||||
							
								
								
									
										14
									
								
								Common/Patches/Xenotypes/PatchLicentiaLabs.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								Common/Patches/Xenotypes/PatchLicentiaLabs.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,14 @@
 | 
				
			||||||
 | 
					<?xml version="1.0" encoding="utf-8" ?>
 | 
				
			||||||
 | 
					<Patch>
 | 
				
			||||||
 | 
					<Operation Class="PatchOperationFindMod">
 | 
				
			||||||
 | 
					    <mods>
 | 
				
			||||||
 | 
					        <li>LustLicentia.RJWLabs</li>
 | 
				
			||||||
 | 
					    </mods>
 | 
				
			||||||
 | 
					    <match Class="PatchOperationAdd">
 | 
				
			||||||
 | 
							<xpath>Defs/XenotypeDef[defName="rjw_genes_succubus"]/genes</xpath>
 | 
				
			||||||
 | 
							<value>
 | 
				
			||||||
 | 
								<li>rjw_genes_elasticity</li>
 | 
				
			||||||
 | 
							</value>
 | 
				
			||||||
 | 
						</match>
 | 
				
			||||||
 | 
					</Operation>
 | 
				
			||||||
 | 
					</Patch>
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
		<xpath>Defs/XenotypeDef[defName="papago"]/genes</xpath>
 | 
							<xpath>Defs/XenotypeDef[defName="papago"]/genes</xpath>
 | 
				
			||||||
		<value>
 | 
							<value>
 | 
				
			||||||
			<li>rjw_genes_orgasm_rush</li>
 | 
								<li>rjw_genes_orgasm_rush</li>
 | 
				
			||||||
			<li>rjw_genes_damage</li>
 | 
					 | 
				
			||||||
			<li>rjw_genes_tight_female_genitalia</li>
 | 
								<li>rjw_genes_tight_female_genitalia</li>
 | 
				
			||||||
			<li>rjw_genes_tight_anus</li>
 | 
								<li>rjw_genes_tight_anus</li>
 | 
				
			||||||
		</value>
 | 
							</value>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								Common/Textures/Genes/Icons/rjw_genes_lips.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Common/Textures/Genes/Icons/rjw_genes_lips.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 16 KiB  | 
| 
						 | 
					@ -16,6 +16,6 @@ namespace RJW_BGS
 | 
				
			||||||
        public List<string> raceNames;
 | 
					        public List<string> raceNames;
 | 
				
			||||||
        public List<string> pawnKindNames;
 | 
					        public List<string> pawnKindNames;
 | 
				
			||||||
        public List<BestialityGeneInheritanceDef> genes;
 | 
					        public List<BestialityGeneInheritanceDef> genes;
 | 
				
			||||||
        public String hybridName;
 | 
					        public string hybridName;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,13 +28,16 @@ namespace RJW_BGS
 | 
				
			||||||
				ModLog.Warning($"Error looking up PawnKindDef for {pawn.Name} - Could not lookup Animal Inheritance Genes");
 | 
									ModLog.Warning($"Error looking up PawnKindDef for {pawn.Name} - Could not lookup Animal Inheritance Genes");
 | 
				
			||||||
				return null;
 | 
									return null;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								
 | 
				
			||||||
			string raceName = kindDef.race.defName;
 | 
								string raceName = kindDef.race.defName;
 | 
				
			||||||
			string pawnKindName = kindDef.defName;
 | 
								string pawnKindName = kindDef.defName;
 | 
				
			||||||
 | 
								//Wild animals have no name, so we will use pawnkindname instead
 | 
				
			||||||
 | 
								string pawnName = pawn.Name != null ? pawn.Name.ToStringFull : pawnKindName; 
 | 
				
			||||||
			PawnData pawnData = SaveStorage.DataStore.GetPawnData(pawn);
 | 
								PawnData pawnData = SaveStorage.DataStore.GetPawnData(pawn);
 | 
				
			||||||
			RaceGroupDef raceGroupDef = pawnData.RaceSupportDef;
 | 
								RaceGroupDef raceGroupDef = pawnData.RaceSupportDef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (RJW_BGSSettings.rjw_bgs_detailed_debug)
 | 
								if (RJW_BGSSettings.rjw_bgs_detailed_debug)
 | 
				
			||||||
				ModLog.Message($"Looking up Animal-Inheritable Genes for {pawn.Name} with KindDef {kindDef.defName},RaceName {raceName}, PawnKind {pawnKindName} and RaceGroup {raceGroupDef.defName}");
 | 
									ModLog.Message($"Looking up Animal-Inheritable Genes for {pawnName} with KindDef {kindDef.defName},RaceName {raceName}, PawnKind {pawnKindName} and RaceGroup {raceGroupDef.defName}");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			IEnumerable<RaceGeneDef> allDefs = DefDatabase<RaceGeneDef>.AllDefs;
 | 
								IEnumerable<RaceGeneDef> allDefs = DefDatabase<RaceGeneDef>.AllDefs;
 | 
				
			||||||
			List<RaceGeneDef> pawnKindDefs = allDefs.Where(delegate (RaceGeneDef group)
 | 
								List<RaceGeneDef> pawnKindDefs = allDefs.Where(delegate (RaceGeneDef group)
 | 
				
			||||||
| 
						 | 
					@ -44,11 +47,11 @@ namespace RJW_BGS
 | 
				
			||||||
			}).ToList<RaceGeneDef>();
 | 
								}).ToList<RaceGeneDef>();
 | 
				
			||||||
			if (pawnKindDefs.Count() > 0)
 | 
								if (pawnKindDefs.Count() > 0)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
				DebugPrintRaceGeneDefs("PawnKindDefs",pawn.Name.ToStringFull,pawnKindDefs);
 | 
									DebugPrintRaceGeneDefs("PawnKindDefs", pawnName,pawnKindDefs);
 | 
				
			||||||
				return pawnKindDefs;
 | 
									return pawnKindDefs;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else if (RJW_BGSSettings.rjw_bgs_detailed_debug)
 | 
								else if (RJW_BGSSettings.rjw_bgs_detailed_debug)
 | 
				
			||||||
				ModLog.Message($"Did not find PawnKindDefs for {pawn.Name.ToStringFull}");
 | 
									ModLog.Message($"Did not find PawnKindDefs for {pawnName}");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			List<RaceGeneDef> raceKindDefs = allDefs.Where(delegate (RaceGeneDef group)
 | 
								List<RaceGeneDef> raceKindDefs = allDefs.Where(delegate (RaceGeneDef group)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
| 
						 | 
					@ -57,11 +60,11 @@ namespace RJW_BGS
 | 
				
			||||||
			}).ToList<RaceGeneDef>();
 | 
								}).ToList<RaceGeneDef>();
 | 
				
			||||||
			if (raceKindDefs.Count() > 0)
 | 
								if (raceKindDefs.Count() > 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				DebugPrintRaceGeneDefs("PawnKindDefs", pawn.Name.ToStringFull, raceKindDefs);
 | 
									DebugPrintRaceGeneDefs("PawnKindDefs", pawnName, raceKindDefs);
 | 
				
			||||||
				return raceKindDefs;
 | 
									return raceKindDefs;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else if (RJW_BGSSettings.rjw_bgs_detailed_debug)
 | 
								else if (RJW_BGSSettings.rjw_bgs_detailed_debug)
 | 
				
			||||||
				ModLog.Message($"Did not find RaceKindDefs for {pawn.Name.ToStringFull}");
 | 
									ModLog.Message($"Did not find RaceKindDefs for {pawnName}");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			List<RaceGeneDef> raceGroupDefs = new List<RaceGeneDef>();
 | 
								List<RaceGeneDef> raceGroupDefs = new List<RaceGeneDef>();
 | 
				
			||||||
			if (raceGroupDef != null)
 | 
								if (raceGroupDef != null)
 | 
				
			||||||
| 
						 | 
					@ -77,13 +80,13 @@ namespace RJW_BGS
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			if (raceGroupDefs.Count() > 0)
 | 
								if (raceGroupDefs.Count() > 0)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
				DebugPrintRaceGeneDefs("RaceKindDefs", pawn.Name.ToStringFull, raceGroupDefs);
 | 
									DebugPrintRaceGeneDefs("RaceKindDefs", pawnName, raceGroupDefs);
 | 
				
			||||||
				return raceGroupDefs;
 | 
									return raceGroupDefs;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else if (RJW_BGSSettings.rjw_bgs_detailed_debug)
 | 
								else if (RJW_BGSSettings.rjw_bgs_detailed_debug)
 | 
				
			||||||
				ModLog.Message($"Did not find RaceGroupDefs for {pawn.Name.ToStringFull}");
 | 
									ModLog.Message($"Did not find RaceGroupDefs for {pawnName}");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			ModLog.Message($"Did not find any Genes inheritable for {pawn.Name.ToStringFull}");
 | 
								ModLog.Message($"Did not find any Genes inheritable for {pawnName}");
 | 
				
			||||||
			return new List<RaceGeneDef>();
 | 
								return new List<RaceGeneDef>();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@ namespace RJW_Genes
 | 
				
			||||||
        //Summary//
 | 
					        //Summary//
 | 
				
			||||||
        //Adds our own partpreferences to rjw's list. Our partpreferences are under Interactions.GenesPartKindUsageRule
 | 
					        //Adds our own partpreferences to rjw's list. Our partpreferences are under Interactions.GenesPartKindUsageRule
 | 
				
			||||||
        //
 | 
					        //
 | 
				
			||||||
        private static void AddtoIPartPreferenceRule()
 | 
					        private static void InjectIntoRjwInteractionServices()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            List<IPartPreferenceRule> partPreferenceRules = Unprivater.GetProtectedValue<List<IPartPreferenceRule>>("_partKindUsageRules", typeof(PartPreferenceDetectorService));
 | 
					            List<IPartPreferenceRule> partPreferenceRules = Unprivater.GetProtectedValue<List<IPartPreferenceRule>>("_partKindUsageRules", typeof(PartPreferenceDetectorService));
 | 
				
			||||||
            partPreferenceRules.Add(new Interactions.GenesPartKindUsageRule());
 | 
					            partPreferenceRules.Add(new Interactions.GenesPartKindUsageRule());
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,59 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using Verse.AI;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace RJW_Genes
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						//Summary//
 | 
				
			||||||
 | 
						//Returns invalid if a pawn is not naked
 | 
				
			||||||
 | 
						//Summary//
 | 
				
			||||||
 | 
						public class CompAbilityEffect_CasterIsNaked : CompAbilityEffect_WithDest
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							private new CompProperties_CasterIsNaked Props
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								get
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									return (CompProperties_CasterIsNaked)this.props;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public override bool GizmoDisabled(out string reason)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								Pawn pawn = this.CasterPawn;
 | 
				
			||||||
 | 
								if (pawn != null)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									//Copied from ThoughtWorker_NudistNude.CurrentStateInternal
 | 
				
			||||||
 | 
									List<Apparel> wornApparel = pawn.apparel.WornApparel;
 | 
				
			||||||
 | 
									for (int i = 0; i < wornApparel.Count; i++)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										Apparel apparel = wornApparel[i];
 | 
				
			||||||
 | 
										if (apparel.def.apparel.countsAsClothingForNudity)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											for (int j = 0; j < apparel.def.apparel.bodyPartGroups.Count; j++)
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												if (apparel.def.apparel.bodyPartGroups[j] == BodyPartGroupDefOf.Torso)
 | 
				
			||||||
 | 
												{
 | 
				
			||||||
 | 
													reason = pawn.Name + " is not naked";
 | 
				
			||||||
 | 
													return true;
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
												if (apparel.def.apparel.bodyPartGroups[j] == BodyPartGroupDefOf.Legs)
 | 
				
			||||||
 | 
												{
 | 
				
			||||||
 | 
													reason = pawn.Name + " is not naked";
 | 
				
			||||||
 | 
													return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								reason = null;
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,19 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace RJW_Genes
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						public class CompProperties_CasterIsNaked : CompProperties_EffectWithDest
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							public CompProperties_CasterIsNaked()
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								this.compClass = typeof(CompAbilityEffect_CasterIsNaked);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,6 +24,11 @@ namespace RJW_Genes
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                return false;
 | 
					                return false;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            if (!RJW_GenesSettings.rjw_genes_sexdemon_visit_incubi && !RJW_GenesSettings.rjw_genes_sexdemon_visit_succubi)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            foreach (Pawn pawn in map.mapPawns.FreeColonistsAndPrisonersSpawned)
 | 
					            foreach (Pawn pawn in map.mapPawns.FreeColonistsAndPrisonersSpawned)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (pawn.jobs.curDriver.asleep && xxx.need_some_sex(pawn) > 1f)
 | 
					                if (pawn.jobs.curDriver.asleep && xxx.need_some_sex(pawn) > 1f)
 | 
				
			||||||
| 
						 | 
					@ -38,46 +43,68 @@ namespace RJW_Genes
 | 
				
			||||||
        protected override bool TryExecuteWorker(IncidentParms parms)
 | 
					        protected override bool TryExecuteWorker(IncidentParms parms)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            Map map = (Map)parms.target;
 | 
					            Map map = (Map)parms.target;
 | 
				
			||||||
            Pawn victim = ValidVictims(map).RandomElement();
 | 
					            List < Pawn > victims = ValidVictims(map).ToList();
 | 
				
			||||||
            if (victim == null)
 | 
					            if(victims.NullOrEmpty())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                return false;
 | 
					                return false;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            IntVec3 loc = victim.Position;
 | 
					 | 
				
			||||||
            Faction faction;
 | 
					            Faction faction;
 | 
				
			||||||
            if (!this.TryFindFormerFaction(out faction))
 | 
					            if (!this.TryFindFormerFaction(out faction))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                return false;
 | 
					                return false;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            int pawn_amount = RJW_GenesSettings.rjw_genes_sexdemon_visit_groups ? Rand.Range(1, victims.Count) : 1;
 | 
				
			||||||
            //Spawn succubus at pawn
 | 
					            List<Pawn> new_sexdemons = new List<Pawn>();
 | 
				
			||||||
            Pawn succubus = PawnGenerator.GeneratePawn(new PawnGenerationRequest(PawnKindDef.Named("rjw_genes_succubus"), faction, PawnGenerationContext.NonPlayer, -1, 
 | 
					            for (int i = 0; i < pawn_amount; i++)
 | 
				
			||||||
                false, false, false, true, false, 1f, false, true, false, true, true, false, false, false, false, 0f, 0f, null, 1f, null, null, 
 | 
					 | 
				
			||||||
                null, null, null, null, null, null, null, null, null, null, false, false, false, false, null, null, null, null, null, 0f,
 | 
					 | 
				
			||||||
                DevelopmentalStage.Adult, null, null, null, false));
 | 
					 | 
				
			||||||
            succubus.SetFaction(null, null);
 | 
					 | 
				
			||||||
            GenSpawn.Spawn(succubus, loc, map, WipeMode.Vanish);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //Set succubus behaviour
 | 
					 | 
				
			||||||
            List<Pawn> list = new List<Pawn> {succubus};
 | 
					 | 
				
			||||||
            LordMaker.MakeNewLord(parms.faction, this.CreateLordJob(parms, succubus, victim), map, list);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            //Make succubus rape victim.
 | 
					 | 
				
			||||||
            if (RJWSettings.rape_enabled)
 | 
					 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                succubus.pather.StopDead(); 
 | 
					                Pawn victim = victims.RandomElement();
 | 
				
			||||||
                succubus.jobs.StopAll();
 | 
					                IntVec3 loc = victim.Position;
 | 
				
			||||||
                Job newJob = JobMaker.MakeJob(xxx.RapeRandom, victim);
 | 
					 | 
				
			||||||
                succubus.jobs.StartJob(newJob, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //Broken for now
 | 
					                PawnKindDef pawnKindDef;
 | 
				
			||||||
            //Sends letter
 | 
					                Gender gender;
 | 
				
			||||||
            //string value = succubus.DevelopmentalStage.Child() ? "FeralChild".Translate().ToString() : succubus.KindLabel;
 | 
					                if (victim.gender == Gender.Male || !RJW_GenesSettings.rjw_genes_sexdemon_visit_incubi)
 | 
				
			||||||
            //TaggedString value2 = succubus.DevelopmentalStage.Child() ? "Child".Translate() : "Person".Translate();
 | 
					                {
 | 
				
			||||||
            //TaggedString baseLetterLabel = this.def.letterLabel.Formatted(value).CapitalizeFirst();
 | 
					
 | 
				
			||||||
            //TaggedString baseLetterText = this.def.letterText.Formatted(succubus.NameShortColored, value2, succubus.Named("PAWN")).AdjustedFor(succubus, "PAWN", true).CapitalizeFirst();
 | 
					                }
 | 
				
			||||||
            //PawnRelationUtility.TryAppendRelationsWithColonistsInfo(ref baseLetterText, ref baseLetterLabel, succubus);
 | 
					                if ((Rand.Bool && RJW_GenesSettings.rjw_genes_sexdemon_visit_succubi) || !RJW_GenesSettings.rjw_genes_sexdemon_visit_incubi)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    pawnKindDef = PawnKindDef.Named("rjw_genes_succubus");
 | 
				
			||||||
 | 
					                    gender = Gender.Female;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    pawnKindDef = PawnKindDef.Named("rjw_genes_incubus");
 | 
				
			||||||
 | 
					                    gender = Gender.Male;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //Spawn succubus at pawn
 | 
				
			||||||
 | 
					                Pawn sexdemon = PawnGenerator.GeneratePawn(new PawnGenerationRequest(pawnKindDef, faction, PawnGenerationContext.NonPlayer, -1,
 | 
				
			||||||
 | 
					                    false, false, false, true, false, 1f, false, true, false, true, true, false, false, false, false, 0f, 0f, null, 1f, null, null,
 | 
				
			||||||
 | 
					                    null, null, null, null, null, gender, null, null, null, null, false, false, false, false, null, null, null, null, null, 0f,
 | 
				
			||||||
 | 
					                    DevelopmentalStage.Adult, null, null, null, false));
 | 
				
			||||||
 | 
					                sexdemon.SetFaction(null, null);
 | 
				
			||||||
 | 
					                GenSpawn.Spawn(sexdemon, loc, map, WipeMode.Vanish);
 | 
				
			||||||
 | 
					                List<Pawn> sexdemons = new List<Pawn> { sexdemon };
 | 
				
			||||||
 | 
					                new_sexdemons.Add(sexdemon);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                LordMaker.MakeNewLord(Faction.OfPlayer, this.CreateLordJob(parms, sexdemon, victim), map, sexdemons);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //Make succubus rape victim.
 | 
				
			||||||
 | 
					                if (RJWSettings.rape_enabled)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    //follow rjw rules
 | 
				
			||||||
 | 
					                    if (SexAppraiser.would_fuck(sexdemon,victim) > 0f)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        sexdemon.pather.StopDead();
 | 
				
			||||||
 | 
					                        sexdemon.jobs.StopAll();
 | 
				
			||||||
 | 
					                        Job newJob = JobMaker.MakeJob(xxx.RapeRandom, victim);
 | 
				
			||||||
 | 
					                        sexdemon.jobs.StartJob(newJob, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            Find.LetterStack.ReceiveLetter("rjw_genes_sexdemon_visit_incident_label".Translate(), "rjw_genes_sexdemon_visit_incident_description".Translate(), LetterDefOf.PositiveEvent, new_sexdemons, null, null, null, null);
 | 
				
			||||||
            //base.SendStandardLetter(baseLetterLabel, baseLetterText, this.def.letterDef, parms, succubus, Array.Empty<NamedArgument>());
 | 
					            //base.SendStandardLetter(baseLetterLabel, baseLetterText, this.def.letterDef, parms, succubus, Array.Empty<NamedArgument>());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,7 @@ using Verse;
 | 
				
			||||||
using Verse.AI;
 | 
					using Verse.AI;
 | 
				
			||||||
using Verse.AI.Group;
 | 
					using Verse.AI.Group;
 | 
				
			||||||
using RimWorld;
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
namespace RJW_Genes
 | 
					namespace RJW_Genes
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    //Based on LordJob_VisitColony
 | 
					    //Based on LordJob_VisitColony
 | 
				
			||||||
| 
						 | 
					@ -52,8 +53,7 @@ namespace RJW_Genes
 | 
				
			||||||
                tickLimit = Rand.Range(60000, 180000); //~1-3 days
 | 
					                tickLimit = Rand.Range(60000, 180000); //~1-3 days
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            transition1.AddTrigger(new Trigger_TicksPassed(tickLimit));
 | 
					            transition1.AddTrigger(new Trigger_TicksPassed(tickLimit));
 | 
				
			||||||
 | 
					            transition1.AddPreAction(new TransitionAction_Custom(new Action(this.SuccubiLeave))); //Join or leave colony
 | 
				
			||||||
            transition1.AddPreAction(new TransitionAction_Message("SuccubusLeaving".Translate(), null, 1f));
 | 
					 | 
				
			||||||
            stateGraph.AddTransition(transition1);
 | 
					            stateGraph.AddTransition(transition1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //If they become hostile
 | 
					            //If they become hostile
 | 
				
			||||||
| 
						 | 
					@ -84,7 +84,26 @@ namespace RJW_Genes
 | 
				
			||||||
            Scribe_Values.Look<int?>(ref this.durationTicks, "durationTicks", null, false);
 | 
					            Scribe_Values.Look<int?>(ref this.durationTicks, "durationTicks", null, false);
 | 
				
			||||||
            Scribe_References.Look<Pawn>(ref this.target, "target", false);
 | 
					            Scribe_References.Look<Pawn>(ref this.target, "target", false);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void SuccubiLeave()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            foreach (Pawn pawn in this.lord.ownedPawns)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if(colonyJoiners.Contains(pawn))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    RecruitUtility.Recruit(pawn, Faction.OfPlayer);
 | 
				
			||||||
 | 
					                    Find.LetterStack.ReceiveLetter("Guest Joins", string.Format("{0} enjoys it here and has decided to stay", xxx.get_pawnname(pawn)), LetterDefOf.PositiveEvent, pawn, null, null, null, null);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Messages.Message("SuccubusLeaving".Translate(xxx.get_pawnname(pawn)), pawn, MessageTypeDefOf.NeutralEvent, true);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public Pawn target;
 | 
					        public Pawn target;
 | 
				
			||||||
        private int? durationTicks;
 | 
					        private int? durationTicks;
 | 
				
			||||||
 | 
					        public List<Pawn> colonyJoiners = new List<Pawn>();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,6 +49,7 @@ namespace RJW_Genes
 | 
				
			||||||
				if (this.Pawn.genes.HasGene(GeneDefOf.rjw_genes_cum_eater)
 | 
									if (this.Pawn.genes.HasGene(GeneDefOf.rjw_genes_cum_eater)
 | 
				
			||||||
				|| this.Pawn.genes.HasGene(GeneDefOf.rjw_genes_vaginal_absorber) || this.Pawn.genes.HasGene(GeneDefOf.rjw_genes_anal_absorber) || this.Pawn.genes.HasGene(GeneDefOf.rjw_genes_drainer))
 | 
									|| this.Pawn.genes.HasGene(GeneDefOf.rjw_genes_vaginal_absorber) || this.Pawn.genes.HasGene(GeneDefOf.rjw_genes_anal_absorber) || this.Pawn.genes.HasGene(GeneDefOf.rjw_genes_drainer))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
 | 
										//TODO: use mentalstatedef instead of mentalbreakdef
 | 
				
			||||||
					MentalBreakDef randomrape = GeneDefOf.rjw_genes_lifeforce_randomrape;
 | 
										MentalBreakDef randomrape = GeneDefOf.rjw_genes_lifeforce_randomrape;
 | 
				
			||||||
					if (ModsConfig.BiotechActive &&
 | 
										if (ModsConfig.BiotechActive &&
 | 
				
			||||||
						this.Pawn.Spawned && !this.Pawn.InMentalState && !this.Pawn.Downed &&
 | 
											this.Pawn.Spawned && !this.Pawn.InMentalState && !this.Pawn.Downed &&
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,8 +34,9 @@ namespace RJW_Genes
 | 
				
			||||||
			toil.socialMode = RandomSocialMode.Off;
 | 
								toil.socialMode = RandomSocialMode.Off;
 | 
				
			||||||
			yield return toil;
 | 
								yield return toil;
 | 
				
			||||||
			yield return this.InteractToil();
 | 
								yield return this.InteractToil();
 | 
				
			||||||
			Toil toil1 = Toils_General.Wait(600, TargetIndex.A);
 | 
								Toil toil1 = Toils_General.Wait(300, TargetIndex.A);
 | 
				
			||||||
			toil1.socialMode = RandomSocialMode.Off;
 | 
								toil1.socialMode = RandomSocialMode.Off;
 | 
				
			||||||
 | 
								yield return toil1;
 | 
				
			||||||
			yield break;
 | 
								yield break;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		private Toil InteractToil()
 | 
							private Toil InteractToil()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,7 +41,6 @@ namespace RJW_Genes
 | 
				
			||||||
			yield break;
 | 
								yield break;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Token: 0x06000420 RID: 1056 RVA: 0x00024190 File Offset: 0x00022390
 | 
					 | 
				
			||||||
		private Toil MakeSexToil()
 | 
							private Toil MakeSexToil()
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			Toil toil = new Toil();
 | 
								Toil toil = new Toil();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,7 +14,7 @@ namespace RJW_Genes
 | 
				
			||||||
		protected override Job TryGiveJob(Pawn pawn)
 | 
							protected override Job TryGiveJob(Pawn pawn)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			Pawn target = pawn.mindState.duty.focus.Pawn;
 | 
								Pawn target = pawn.mindState.duty.focus.Pawn;
 | 
				
			||||||
			if (pawn.CanReach(target, PathEndMode.InteractionCell, Danger.Deadly))
 | 
								if (pawn.CanReach(target, PathEndMode.InteractionCell, Danger.Deadly) && !target.jobs.curDriver.asleep)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
				return JobMaker.MakeJob(JobDefOf.rjw_genes_flirt, target);
 | 
									return JobMaker.MakeJob(JobDefOf.rjw_genes_flirt, target);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,9 +4,12 @@ using System.Linq;
 | 
				
			||||||
using System.Text;
 | 
					using System.Text;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using rjw;
 | 
					using rjw;
 | 
				
			||||||
 | 
					using RJWSexperience;
 | 
				
			||||||
using RimWorld;
 | 
					using RimWorld;
 | 
				
			||||||
using Verse;
 | 
					using Verse;
 | 
				
			||||||
using Verse.AI;
 | 
					using Verse.AI;
 | 
				
			||||||
 | 
					using Verse.AI.Group;
 | 
				
			||||||
 | 
					using UnityEngine;
 | 
				
			||||||
namespace RJW_Genes
 | 
					namespace RJW_Genes
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class JobGiver_TryQuickieWith : ThinkNode_JobGiver
 | 
					    public class JobGiver_TryQuickieWith : ThinkNode_JobGiver
 | 
				
			||||||
| 
						 | 
					@ -20,13 +23,29 @@ namespace RJW_Genes
 | 
				
			||||||
			//can reserve eachother
 | 
								//can reserve eachother
 | 
				
			||||||
			if (pawn.CanReserveAndReach(target, PathEndMode.InteractionCell, Danger.Some) && target.CanReserve(pawn, 1, 0, null, false))				
 | 
								if (pawn.CanReserveAndReach(target, PathEndMode.InteractionCell, Danger.Some) && target.CanReserve(pawn, 1, 0, null, false))				
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				//target is not busy
 | 
									//Dont interrupt player
 | 
				
			||||||
				if (!(((jobs != null) ? jobs.curJob : null) != null && jobs.curJob.playerForced))
 | 
									if (!(((jobs != null) ? jobs.curJob : null) != null && jobs.curJob.playerForced))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					float willingness = TargetWillingness(pawn, target);
 | 
										float willingness = TargetWillingness(pawn, target);
 | 
				
			||||||
					if (Rand.Chance(willingness))
 | 
										if (Rand.Chance(willingness))
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
						return JobMaker.MakeJob(xxx.quick_sex, target);
 | 
											Job newJob =JobMaker.MakeJob(xxx.quick_sex, target);
 | 
				
			||||||
 | 
											
 | 
				
			||||||
 | 
											//Pawn joins faction when lordJob ends instead of leaving
 | 
				
			||||||
 | 
											//in the future determine the chance of this another way
 | 
				
			||||||
 | 
											if (Rand.Chance(JoinChance(pawn, target)))
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
												Lord lord = pawn.GetLord();
 | 
				
			||||||
 | 
												LordJob_SuccubusVisit lordJob = lord == null? null : lord.LordJob as LordJob_SuccubusVisit;
 | 
				
			||||||
 | 
												if (lordJob != null)
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
													if (!lordJob.colonyJoiners.Contains(pawn))
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
														lordJob.colonyJoiners.Add(pawn);
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											return newJob;
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					else
 | 
										else
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
| 
						 | 
					@ -40,7 +59,7 @@ namespace RJW_Genes
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					if (RJWSettings.DebugLogJoinInBed) //change this when we have our own settigns
 | 
										if (RJWSettings.DebugLogJoinInBed) //change this when we have our own settigns
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						ModLog.Message(string.Format(" find_pawn_to_fuck({0}): lover has important job ({1}), skipping", pawn_name, target.jobs.curJob.def));
 | 
											//ModLog.Message(string.Format(" find_pawn_to_fuck({0}): lover has important job ({1}), skipping", pawn_name, target.jobs.curJob.def));
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -80,7 +99,7 @@ namespace RJW_Genes
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							ModLog.Message(" find_partner(" + pawn_name + "): I interested in banging but that's cheating");
 | 
												ModLog.Message(" find_partner(" + pawn_name + "): I interested in banging but that's cheating");
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						//Succubus has a small chance to seduce even if target is in relationship, maybe setting like succubus can homewreck
 | 
											//Succubus has a small chance to seduce even if target is in relationship
 | 
				
			||||||
						willingness *= 0.1f;
 | 
											willingness *= 0.1f;
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
                    else
 | 
					                    else
 | 
				
			||||||
| 
						 | 
					@ -95,5 +114,75 @@ namespace RJW_Genes
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			return willingness;
 | 
								return willingness;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public static float JoinChance(Pawn pawn ,Pawn target)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								float chance = 0.1f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								//Sex satisfaction, how good the target is at sex
 | 
				
			||||||
 | 
								chance *= xxx.get_sex_satisfaction(target); 
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								//Succubus mood
 | 
				
			||||||
 | 
								if (pawn.needs != null && pawn.needs.mood != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
									chance *= pawn.needs.mood.CurLevelPercentage + 0.5f; 
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								//Size of genitals
 | 
				
			||||||
 | 
								bool size_matters = true; //To be placed in modsettings
 | 
				
			||||||
 | 
								if (size_matters)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
									//The larger the penis to greater the chance
 | 
				
			||||||
 | 
									if (RelationsUtility.AttractedToGender(pawn, Gender.Male))
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										chance *= GetGenitalSize(target, true) + 0.5f;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									//The tighter the vagine the greater the chance, a size above 1 is considered as 1
 | 
				
			||||||
 | 
									if (RelationsUtility.AttractedToGender(pawn, Gender.Female))
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										chance *= 1f - Mathf.Min(GetGenitalSize(target, false),1f) + 0.5f;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								//Sex ability from sexperience
 | 
				
			||||||
 | 
								if (ModsConfig.IsActive("rjw.sexperience"))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
									chance *= RJWSexperience.PawnExtensions.GetSexStat(pawn);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
								return Mathf.Max(chance,0f);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//Gets the size of the largest penis or the tightest vagina
 | 
				
			||||||
 | 
							public static float GetGenitalSize(Pawn pawn, bool penis_else_vagina)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
								List<Hediff> genitals = rjw.PawnExtensions.GetGenitalsList(pawn);
 | 
				
			||||||
 | 
								if(!genitals.NullOrEmpty())
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
									if (penis_else_vagina)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										List<Hediff> penises = genitals.Where(genital => Genital_Helper.is_penis(genital)).ToList();
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											if (!penises.NullOrEmpty())
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												return penises.Max(genital => genital.Severity);
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
										List<Hediff> vaginas = genitals.Where(genital => Genital_Helper.is_vagina(genital)).ToList();
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											if (!vaginas.NullOrEmpty())
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												return vaginas.Min(genital => genital.Severity);
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return 0f;
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -61,10 +61,8 @@ namespace RJW_Genes
 | 
				
			||||||
			return AlertReport.CulpritsAre(this.Targets);
 | 
								return AlertReport.CulpritsAre(this.Targets);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Token: 0x04004B5C RID: 19292
 | 
					 | 
				
			||||||
		private List<GlobalTargetInfo> targets = new List<GlobalTargetInfo>();
 | 
							private List<GlobalTargetInfo> targets = new List<GlobalTargetInfo>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Token: 0x04004B5D RID: 19293
 | 
					 | 
				
			||||||
		private List<string> targetLabels = new List<string>();
 | 
							private List<string> targetLabels = new List<string>();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										56
									
								
								Source/RJW_GenesSettings.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								Source/RJW_GenesSettings.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,56 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using UnityEngine;
 | 
				
			||||||
 | 
					namespace RJW_Genes
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class RJW_GenesSettings : ModSettings
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public static void DoWindowContents(Rect inRect)
 | 
				
			||||||
 | 
					        {   
 | 
				
			||||||
 | 
					            Rect outRect = new Rect(0f, 30f, inRect.width, inRect.height - 30f);
 | 
				
			||||||
 | 
					            Rect rect = new Rect(0f, 0f, inRect.width - 16f, inRect.height + 300f);
 | 
				
			||||||
 | 
					            //Widgets.BeginScrollView(outRect, ref RJWSettings.scrollPosition, rect, true);
 | 
				
			||||||
 | 
					            Listing_Standard listing_Standard = new Listing_Standard();
 | 
				
			||||||
 | 
					            listing_Standard.maxOneColumn = true;
 | 
				
			||||||
 | 
					            listing_Standard.ColumnWidth = rect.width / 2.05f;
 | 
				
			||||||
 | 
					            listing_Standard.Begin(rect);
 | 
				
			||||||
 | 
					            listing_Standard.Gap(30);
 | 
				
			||||||
 | 
					            listing_Standard.CheckboxLabeled("Sexdemon Visits", ref rjw_genes_sexdemon_visit, "If enabled, incubi and succubi can spawn in through an event.", 0f, 1f);
 | 
				
			||||||
 | 
					            if (rjw_genes_sexdemon_visit)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                listing_Standard.Gap(3f);
 | 
				
			||||||
 | 
					                listing_Standard.CheckboxLabeled("  Size matters", ref rjw_genes_sexdemon_join_size_matters, "Incubi and succubi will consider size/tightness of partners genital for deciding if they want to join", 0f, 1f);
 | 
				
			||||||
 | 
					                listing_Standard.Gap(3f);
 | 
				
			||||||
 | 
					                listing_Standard.CheckboxLabeled("  Sexdemon groups", ref rjw_genes_sexdemon_visit_groups, "Multiple sexdemons can spawn during a event", 0f, 1f);
 | 
				
			||||||
 | 
					                listing_Standard.Gap(3f);
 | 
				
			||||||
 | 
					                listing_Standard.CheckboxLabeled("  Succubi", ref rjw_genes_sexdemon_visit_succubi, "Allow incubi to spawn through this even", 0f, 1f);
 | 
				
			||||||
 | 
					                listing_Standard.Gap(3f);
 | 
				
			||||||
 | 
					                listing_Standard.CheckboxLabeled("  Incubi", ref rjw_genes_sexdemon_visit_incubi, "Allow incubi to spawn through this even", 0f, 1f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            //listing_Standard.CheckboxLabeled("sexfrenzy", ref sexfrenzy, "disable the effects", 0f, 1f);
 | 
				
			||||||
 | 
					            listing_Standard.Gap(10f);
 | 
				
			||||||
 | 
					            listing_Standard.End();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public override void ExposeData()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            base.ExposeData();
 | 
				
			||||||
 | 
					            Scribe_Values.Look<bool>(ref RJW_GenesSettings.rjw_genes_sexdemon_visit, "rjw_genes_sexdemon_visit", RJW_GenesSettings.rjw_genes_sexdemon_visit, true);
 | 
				
			||||||
 | 
					            Scribe_Values.Look<bool>(ref RJW_GenesSettings.rjw_genes_sexdemon_join_size_matters, "rjw_genes_sexdemon_join_size_matters", RJW_GenesSettings.rjw_genes_sexdemon_join_size_matters, true);
 | 
				
			||||||
 | 
					            Scribe_Values.Look<bool>(ref RJW_GenesSettings.rjw_genes_sexdemon_visit_groups, "rjw_genes_sexdemon_groups", RJW_GenesSettings.rjw_genes_sexdemon_visit_groups, true);
 | 
				
			||||||
 | 
					            Scribe_Values.Look<bool>(ref RJW_GenesSettings.rjw_genes_sexdemon_visit_succubi, "rjw_genes_sexdemon_succubi", RJW_GenesSettings.rjw_genes_sexdemon_visit_succubi, true);
 | 
				
			||||||
 | 
					            Scribe_Values.Look<bool>(ref RJW_GenesSettings.rjw_genes_sexdemon_visit_incubi, "rjw_genes_sexdemon_incubi", RJW_GenesSettings.rjw_genes_sexdemon_visit_incubi, true);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static bool rjw_genes_sexdemon_visit = true;
 | 
				
			||||||
 | 
					        public static bool rjw_genes_sexdemon_join_size_matters = true;
 | 
				
			||||||
 | 
					        public static bool rjw_genes_sexdemon_visit_groups = true;
 | 
				
			||||||
 | 
					        public static bool rjw_genes_sexdemon_visit_succubi = true;
 | 
				
			||||||
 | 
					        public static bool rjw_genes_sexdemon_visit_incubi = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										26
									
								
								Source/RJW_GenesSettingsControllercs.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								Source/RJW_GenesSettingsControllercs.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,26 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					using UnityEngine;
 | 
				
			||||||
 | 
					namespace RJW_Genes
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class RJW_GenesSettingsControllercs : Mod
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public RJW_GenesSettingsControllercs(ModContentPack content) : base(content)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            base.GetSettings<RJW_GenesSettings>();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override string SettingsCategory()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return "RJW Genes";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public override void DoSettingsWindowContents(Rect inRect)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            RJW_GenesSettings.DoWindowContents(inRect);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -38,6 +38,10 @@
 | 
				
			||||||
      <HintPath>..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\rjw-master\1.4\Assemblies\RJW.dll</HintPath>
 | 
					      <HintPath>..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\rjw-master\1.4\Assemblies\RJW.dll</HintPath>
 | 
				
			||||||
      <Private>False</Private>
 | 
					      <Private>False</Private>
 | 
				
			||||||
    </Reference>
 | 
					    </Reference>
 | 
				
			||||||
 | 
					    <Reference Include="RJWSexperience">
 | 
				
			||||||
 | 
					      <HintPath>..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\RJW-Sexperience-master\1.4\Assemblies\RJWSexperience.dll</HintPath>
 | 
				
			||||||
 | 
					      <Private>False</Private>
 | 
				
			||||||
 | 
					    </Reference>
 | 
				
			||||||
    <Reference Include="System" />
 | 
					    <Reference Include="System" />
 | 
				
			||||||
    <Reference Include="System.Core" />
 | 
					    <Reference Include="System.Core" />
 | 
				
			||||||
    <Reference Include="System.Xml.Linq" />
 | 
					    <Reference Include="System.Xml.Linq" />
 | 
				
			||||||
| 
						 | 
					@ -122,6 +126,8 @@
 | 
				
			||||||
    <Compile Include="Genes\Genitalia\GenitaliaChanger.cs" />
 | 
					    <Compile Include="Genes\Genitalia\GenitaliaChanger.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Life_Force\Abilities\AbilityUtility.cs" />
 | 
					    <Compile Include="Genes\Life_Force\Abilities\AbilityUtility.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Life_Force\UI\Alert_LowFertilin.cs" />
 | 
					    <Compile Include="Genes\Life_Force\UI\Alert_LowFertilin.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Genes\Life_Force\Abilities\CompAbilityEffect_CasterIsNaked.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Genes\Life_Force\Abilities\CompProperties_CasterIsNaked.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Life_Force\Abilities\CompAbilityEffect_Seduce.cs" />
 | 
					    <Compile Include="Genes\Life_Force\Abilities\CompAbilityEffect_Seduce.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Life_Force\Abilities\CompAbilityEffect_LifeForceCost.cs" />
 | 
					    <Compile Include="Genes\Life_Force\Abilities\CompAbilityEffect_LifeForceCost.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Life_Force\Abilities\CompAbilityEffect_CockEater.cs" />
 | 
					    <Compile Include="Genes\Life_Force\Abilities\CompAbilityEffect_CockEater.cs" />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue